summaryrefslogtreecommitdiff
path: root/src/map/pc.c
diff options
context:
space:
mode:
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){