|
@@ -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;
|
|
temp_aspd = (float)(sqrt(temp_aspd) * 0.25f) + 0xc4;
|
|
if ((skill_lv = pc_checkskill(sd,SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK)
|
|
if ((skill_lv = pc_checkskill(sd,SA_ADVANCEDBOOK)) > 0 && sd->status.weapon == W_BOOK)
|
|
val += (skill_lv - 1) / 2 + 1;
|
|
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))
|
|
if ((skill_lv = pc_checkskill(sd,GS_SINGLEACTION)) > 0 && (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE))
|
|
val += ((skill_lv + 1) / 2);
|
|
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));
|
|
amotion = ((int)(temp_aspd + ((float)(status_calc_aspd(&sd->bl, &sd->sc, true) + val) * status->agi / 200)) - min(amotion, 200));
|
|
#else
|
|
#else
|
|
// Angra Manyu disregards aspd_base and similar
|
|
// 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);
|
|
base_status->amotion = cap_value(i,pc_maxaspd(sd),2000);
|
|
|
|
|
|
// Relative modifiers from passive skills
|
|
// Relative modifiers from passive skills
|
|
|
|
+ // Renewal modifiers are handled in status_base_amotion_pc
|
|
#ifndef RENEWAL_ASPD
|
|
#ifndef RENEWAL_ASPD
|
|
if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
|
|
if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
|
|
base_status->aspd_rate -= 5*skill;
|
|
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);
|
|
base_status->aspd_rate += 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY);
|
|
else if(pc_isridingdragon(sd))
|
|
else if(pc_isridingdragon(sd))
|
|
base_status->aspd_rate += 250-50*pc_checkskill(sd,RK_DRAGONTRAINING);
|
|
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
|
|
#endif
|
|
base_status->adelay = 2*base_status->amotion;
|
|
base_status->adelay = 2*base_status->amotion;
|
|
|
|
|