summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-04-11 11:57:38 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-04-11 11:57:38 +0000
commitf0c1e95cef7c5e73686fa385838abc76cb585da3 (patch)
tree59e6f2f9efae651bf167c64278bdbaa80902dedf
parent39d366440ac8f14fb9573345395ba5517dbeb25c (diff)
downloadhercules-f0c1e95cef7c5e73686fa385838abc76cb585da3.tar.gz
hercules-f0c1e95cef7c5e73686fa385838abc76cb585da3.tar.bz2
hercules-f0c1e95cef7c5e73686fa385838abc76cb585da3.tar.xz
hercules-f0c1e95cef7c5e73686fa385838abc76cb585da3.zip
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
-rw-r--r--src/map/mob.c7
-rw-r--r--src/map/mob.h2
-rw-r--r--src/map/unit.c2
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.