Fixed renewal ASPD passive modifiers (#4405)
* Fixes #3735. * Fixed Demon of the Sun Moon and Stars ASPD to now increase by a rate of 1 + skill_level. * Cavalier Mastery and Dragon Training to be properly calculated. Thanks to @poporing and @Balferian!
This commit is contained in:
parent
9da3ad141c
commit
2e3e8b83f5
@ -2402,8 +2402,14 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat
|
||||
temp_aspd = (float)(sqrt(temp_aspd) * 0.25f) + 0xc4;
|
||||
if ((skill_lv = pc_checkskill(sd,SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK)
|
||||
val += (skill_lv - 1) / 2 + 1;
|
||||
if ((skill_lv = pc_checkskill(sd, SG_DEVIL)) > 0 && pc_is_maxjoblv(sd))
|
||||
val += 1 + skill_lv;
|
||||
if ((skill_lv = pc_checkskill(sd,GS_SINGLEACTION)) > 0 && (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE))
|
||||
val += ((skill_lv + 1) / 2);
|
||||
if (pc_isriding(sd))
|
||||
val -= 50 - 10 * pc_checkskill(sd, KN_CAVALIERMASTERY);
|
||||
else if (pc_isridingdragon(sd))
|
||||
val -= 25 - 5 * pc_checkskill(sd, RK_DRAGONTRAINING);
|
||||
amotion = ((int)(temp_aspd + ((float)(status_calc_aspd(&sd->bl, &sd->sc, true) + val) * status->agi / 200)) - min(amotion, 200));
|
||||
#else
|
||||
// Angra Manyu disregards aspd_base and similar
|
||||
@ -4117,6 +4123,7 @@ int status_calc_pc_sub(struct map_session_data* sd, enum e_status_calc_opt opt)
|
||||
base_status->amotion = cap_value(i,pc_maxaspd(sd),2000);
|
||||
|
||||
// Relative modifiers from passive skills
|
||||
// Renewal modifiers are handled in status_base_amotion_pc
|
||||
#ifndef RENEWAL_ASPD
|
||||
if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
|
||||
base_status->aspd_rate -= 5*skill;
|
||||
@ -4129,13 +4136,6 @@ int status_calc_pc_sub(struct map_session_data* sd, enum e_status_calc_opt opt)
|
||||
base_status->aspd_rate += 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY);
|
||||
else if(pc_isridingdragon(sd))
|
||||
base_status->aspd_rate += 250-50*pc_checkskill(sd,RK_DRAGONTRAINING);
|
||||
#else // Needs more info
|
||||
if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && pc_is_maxjoblv(sd))
|
||||
base_status->aspd_rate += 30*skill;
|
||||
if(pc_isriding(sd))
|
||||
base_status->aspd_rate -= 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY);
|
||||
else if(pc_isridingdragon(sd))
|
||||
base_status->aspd_rate -= 250-50*pc_checkskill(sd,RK_DRAGONTRAINING);
|
||||
#endif
|
||||
base_status->adelay = 2*base_status->amotion;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user