diff --git a/src/map/status.cpp b/src/map/status.cpp index a9c63ff05d..56235cde1b 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -5284,10 +5284,10 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag) #ifndef RENEWAL_ASPD status->aspd_rate = status_calc_aspd_rate(bl, sc, b_status->aspd_rate); #endif - // Absolute ASPD % modifier + // Absolute ASPD % modifiers amotion = amotion * status->aspd_rate / 1000; if (sd->ud.skilltimer != INVALID_TIMER && (skill_lv = pc_checkskill(sd, SA_FREECAST)) > 0) - amotion = amotion * 5 * (skill_lv + 10) / 100; + amotion += (2000 - amotion) * ( 55 - 5 * ( skill_lv + 1 ) ) / 100; //Increases amotion to reduce ASPD to the corresponding absolute percentage for each level (overriding other adjustments) #ifdef RENEWAL_ASPD // RE ASPD % modifier amotion += (max(0xc3 - amotion, 2) * (status->aspd_rate2 + status_calc_aspd(bl, sc, false))) / 100;