summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-27 18:38:11 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-03-27 18:38:11 +0000
commitc19b8831b8134d9e8f000d8d5ee18ebaa2164fea (patch)
tree6c882ff6ee1fd988ec1f8fd28abf4fee7a0bcd95 /src/map/pc.c
parent6b7b26291cbcabf23f5a28a684fdfcb317d7b53a (diff)
downloadhercules-c19b8831b8134d9e8f000d8d5ee18ebaa2164fea.tar.gz
hercules-c19b8831b8134d9e8f000d8d5ee18ebaa2164fea.tar.bz2
hercules-c19b8831b8134d9e8f000d8d5ee18ebaa2164fea.tar.xz
hercules-c19b8831b8134d9e8f000d8d5ee18ebaa2164fea.zip
- Moved coma to skill_additional_effect, added special_state.bonus_coma to prevent doing comma calculations for every player attack.
- Added config "vending_tax" to apply a tax to all vending requests, as it was in kRO Sakray some time ago (requested by Playtester) (items.conf). - Some cleaning of skill_additional_effect - Moved the starting of SC_DANCING from skill_initunitgroup to skill_unitsetting - Moved the checks for player_skill_partner_check and (gm_skilluncond for it) to skill_check_pc_partner - Negative aspd rate bonuses will be handled as aspd add rate since the default non-stackable bonus is useless on penalty bonuses. - Added check to prevent the client from using passive skills. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10082 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/pc.c')
-rw-r--r--src/map/pc.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 4c057d849..41be58b42 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1534,9 +1534,11 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
ShowError("pc_bonus: bonus bAspd is no longer supported!\n");
break;
case SP_ASPD_RATE: //Non stackable increase
- if(sd->state.lr_flag != 2 && status->aspd_rate > 1000-val*10)
- status->aspd_rate = 1000-val*10;
- break;
+ if(val >= 0) { //Let negative ASPD bonuses become AddRate ones.
+ if(sd->state.lr_flag != 2 && status->aspd_rate > 1000-val*10)
+ status->aspd_rate = 1000-val*10;
+ break;
+ }
case SP_ASPD_ADDRATE: //Stackable increase - Made it linear as per rodatazone
if(sd->state.lr_flag != 2)
sd->aspd_add_rate -= val;
@@ -2130,12 +2132,16 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
ShowError("pc_bonus2: SP_WEAPON_COMA_ELE: Invalid element %d\n", type2);
break;
}
- if(sd->state.lr_flag != 2)
- sd->weapon_coma_ele[type2] += val;
+ if(sd->state.lr_flag == 2)
+ break;
+ sd->weapon_coma_ele[type2] += val;
+ sd->special_state.bonus_coma = 1;
break;
case SP_WEAPON_COMA_RACE:
- if(sd->state.lr_flag != 2)
- sd->weapon_coma_race[type2] += val;
+ if(sd->state.lr_flag == 2)
+ break;
+ sd->weapon_coma_race[type2] += val;
+ sd->special_state.bonus_coma = 1;
break;
case SP_RANDOM_ATTACK_INCREASE: // [Valaris]
if(sd->state.lr_flag !=2){