From f0c1e95cef7c5e73686fa385838abc76cb585da3 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Wed, 11 Apr 2012 11:57:38 +0000 Subject: yet another minor performance improvement. walking mobs no longer waste bandwidth by sending clif_move to nearby players if they haven't been damaged recently. (bandwidth&process time saver <3) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15857 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 7 +++++-- src/map/mob.h | 2 +- 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. -- cgit v1.2.3-70-g09d2