diff options
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 53 |
1 files changed, 6 insertions, 47 deletions
diff --git a/src/map/status.c b/src/map/status.c index 9f7a05d52..cb04563f7 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1193,8 +1193,6 @@ int status_check_visibility(struct block_list *src, struct block_list *target) return 1; } -void status_calc_bl(struct block_list *bl, unsigned long flag); - // Basic ASPD value int status_base_amotion_pc(struct map_session_data* sd, struct status_data* status) { @@ -2741,17 +2739,8 @@ void status_calc_bl_sub_pc(struct map_session_data *sd, unsigned long flag) if(flag&SCB_SPEED) { if(status->speed < battle_config.max_walk_speed) status->speed = battle_config.max_walk_speed; - - if ((skill=pc_checkskill(sd,SA_FREECAST))>0) { - //Store casting walk speed for quick restoration. [Skotlex] - sd->prev_speed = status->speed * (175-5*skill)/100; - if(sd->ud.skilltimer != -1) { //Swap speed. - skill = status->speed; - status->speed = sd->prev_speed; - sd->prev_speed = skill; - } - } } + if(flag&(SCB_ASPD|SCB_AGI|SCB_DEX)) { flag|=SCB_ASPD; @@ -2763,18 +2752,7 @@ void status_calc_bl_sub_pc(struct map_session_data *sd, unsigned long flag) skill = skill *status->aspd_rate/1000; status->amotion = cap_value(skill,battle_config.max_aspd,2000); - status->adelay = 2*status->amotion; - if ((skill=pc_checkskill(sd,SA_FREECAST))>0) { - //Store casting adelay for quick restoration. [Skotlex] - sd->prev_adelay = status->adelay*(150-5*skill)/100; - if(sd->ud.skilltimer != -1) { //Swap adelay. - skill = status->adelay; - status->adelay = sd->prev_adelay; - sd->prev_adelay = skill; - } - } - } if(flag&(SCB_AGI|SCB_DSPD)) { @@ -3699,10 +3677,15 @@ static signed short status_calc_mdef2(struct block_list *bl, struct status_chang static unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc, int speed) { + TBL_PC* sd = BL_CAST(BL_PC, bl); + //Default speed coming in means there's no speed_rate adjustments. int new_speed = speed; bool default_speed = (speed == DEFAULT_WALK_SPEED); + if( sd && sd->ud.skilltimer != -1 && pc_checkskill(sd,SA_FREECAST) > 0 ) + speed = speed * (175 - 5 * pc_checkskill(sd,SA_FREECAST))/100; + if(!sc || !sc->count) return cap_value(speed,10,USHRT_MAX); @@ -4015,30 +3998,6 @@ static unsigned short status_calc_mode(struct block_list *bl, struct status_chan return cap_value(mode,0,USHRT_MAX); } -/*========================================== - * Quick swap of adelay/speed when starting ending SA_FREECAST - *------------------------------------------*/ -void status_freecast_switch(struct map_session_data *sd) -{ - struct status_data *status; - unsigned short b_speed,tmp; - - status = &sd->battle_status; - - b_speed = status->speed; - - tmp = status->speed; - status->speed = sd->prev_speed; - sd->prev_speed = tmp; - - tmp = status->adelay; - status->adelay = sd->prev_adelay; - sd->prev_adelay = tmp; - - if(b_speed != status->speed) - clif_updatestatus(sd,SP_SPEED); -} - const char* status_get_name(struct block_list *bl) { nullpo_retr(0, bl); |