From c886be29ee7383b18e3a2406c05e85df4d6960a6 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Sat, 14 Jan 2012 06:41:09 +0000 Subject: Fixed bug with attack timer being chained unnecessarily when attacker is not able to issue atk -- this also caused client messages to be spammed e.g. "please equip arrow first". bugreport:5189 git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15443 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 6 +++--- src/map/unit.c | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 46e930ebf..025339fe1 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -400,7 +400,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag if( sc->data[SC_WEAPONBLOCKING] && flag&(BF_SHORT|BF_WEAPON) && rand()%100 < sc->data[SC_WEAPONBLOCKING]->val2 ) { clif_skill_nodamage(bl,src,GC_WEAPONBLOCKING,1,1); - d->dmg_lv = ATK_NONE; + d->dmg_lv = ATK_BLOCK; sc_start2(bl,SC_COMBO,100,GC_WEAPONBLOCKING,src->id,2000); return 0; } @@ -3794,7 +3794,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS. status_change_end(target, SC_AUTOCOUNTER, INVALID_TIMER); skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skilllv,tick,0); - return ATK_NONE; + return ATK_BLOCK; } } @@ -3808,7 +3808,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS. clif_bladestop(target, src->id, 1); sc_start4(target, SC_BLADESTOP, 100, skilllv, 0, 0, src->id, duration); - return ATK_NONE; + return ATK_BLOCK; } } diff --git a/src/map/unit.c b/src/map/unit.c index 5e0d5527f..e4376b01d 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1759,7 +1759,13 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t if(sd && sd->status.pet_id > 0 && sd->pd && battle_config.pet_attack_support) pet_target_check(sd,target,0); map_freeblock_unlock(); - + /** + * Applied when you're unable to attack (e.g. out of ammo) + * We should stop here otherwise timer keeps on and this happens endlessly + **/ + if( ud->attacktarget_lv == ATK_NONE ) + return 1; + ud->attackabletime = tick + sstatus->adelay; // You can't move if you can't attack neither. if (src->type&battle_config.attack_walk_delay) -- cgit v1.2.3-70-g09d2