diff options
-rw-r--r-- | src/map/mob.c | 7 | ||||
-rw-r--r-- | src/map/mob.h | 2 | ||||
-rw-r--r-- | src/map/unit.c | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 4cf13e4cc..95b357e4f 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -899,6 +899,7 @@ int mob_spawn (struct mob_data *md) md->state.skillstate = MSS_IDLE; md->next_walktime = tick+rnd()%5000+1000; md->last_linktime = tick; + md->dmgtick = tick - 5000; md->last_pcneartime = 0; for (i = 0, c = tick-MOB_MAX_DELAY; i < MAX_MOBSKILL; i++) @@ -1950,12 +1951,14 @@ void mob_damage(struct mob_data *md, struct block_list *src, int damage) md->state.skillstate = MSS_RUSH; } //Log damage - if (src) mob_log_damage(md, src, damage); + if (src) + mob_log_damage(md, src, damage); + md->dmgtick = gettick(); } if (battle_config.show_mob_info&3) clif_charnameack (0, &md->bl); - + if (!src) return; diff --git a/src/map/mob.h b/src/map/mob.h index be1c0220e..a93cb04e3 100644 --- a/src/map/mob.h +++ b/src/map/mob.h @@ -151,7 +151,7 @@ struct mob_data { int areanpc_id; //Required in OnTouchNPC (to avoid multiple area touchs) unsigned int bg_id; // BattleGround System - unsigned int next_walktime,last_thinktime,last_linktime,last_pcneartime; + unsigned int next_walktime,last_thinktime,last_linktime,last_pcneartime,dmgtick; short move_fail_count; short lootitem_count; short min_chase; diff --git a/src/map/unit.c b/src/map/unit.c index 39480867d..6224af787 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -225,7 +225,7 @@ static int unit_walktoxy_timer(int tid, unsigned int tick, int id, intptr_t data if(i > 0) { ud->walktimer = add_timer(tick+i,unit_walktoxy_timer,id,i); - if( md ) + if( md && DIFF_TICK(tick,md->dmgtick) < 3000 )//not required not damaged recently clif_move(ud); } else if(ud->state.running) { //Keep trying to run. |