diff --git a/FFXIVClassic Map Server/WorldManager.cs b/FFXIVClassic Map Server/WorldManager.cs index 271a22c9..3d6cd62c 100644 --- a/FFXIVClassic Map Server/WorldManager.cs +++ b/FFXIVClassic Map Server/WorldManager.cs @@ -956,8 +956,9 @@ namespace FFXIVClassic_Map_Server { lock (zoneList) { + var tick = DateTime.Now; foreach (Zone zone in zoneList.Values) - zone.Update(MILIS_LOOPTIME); + zone.Update(tick); } } @@ -978,7 +979,7 @@ namespace FFXIVClassic_Map_Server } public Actor GetActorInWorld(uint charId) - { + { foreach (Zone zone in zoneList.Values) { Actor a = zone.FindActorInZone(charId); diff --git a/FFXIVClassic Map Server/actors/Actor.cs b/FFXIVClassic Map Server/actors/Actor.cs index 97e8b34e..1ae1023d 100644 --- a/FFXIVClassic Map Server/actors/Actor.cs +++ b/FFXIVClassic Map Server/actors/Actor.cs @@ -368,15 +368,15 @@ namespace FFXIVClassic_Map_Server.Actors zone.BroadcastPacketAroundActor(this, ChangeSpeedPacket); } - public void Update(double deltaTime) + public void Update(DateTime tick) { if (this is Character) { - ((Character)this).Update(deltaTime); + ((Character)this).Update(tick); } else if (this is Zone) { - ((Zone)this).Update(deltaTime); + ((Zone)this).Update(tick); } } diff --git a/FFXIVClassic Map Server/actors/area/Area.cs b/FFXIVClassic Map Server/actors/area/Area.cs index eb6b837b..7a991e7f 100644 --- a/FFXIVClassic Map Server/actors/area/Area.cs +++ b/FFXIVClassic Map Server/actors/area/Area.cs @@ -526,12 +526,12 @@ namespace FFXIVClassic_Map_Server.Actors return null; } - public void Update(double deltaTime) + public void Update(DateTime tick) { lock (mActorList) { foreach (Actor a in mActorList.Values) - a.Update(deltaTime); + a.Update(tick); } } diff --git a/FFXIVClassic Map Server/actors/area/Zone.cs b/FFXIVClassic Map Server/actors/area/Zone.cs index a45b5fd4..3c2a8168 100644 --- a/FFXIVClassic Map Server/actors/area/Zone.cs +++ b/FFXIVClassic Map Server/actors/area/Zone.cs @@ -163,11 +163,11 @@ namespace FFXIVClassic_Map_Server.actors.area } } - public void Update(double deltaTime) + public void Update(DateTime tick) { // todo: again, this is retarded but debug stuff - var diffTime = DateTime.Now - lastUpdate; - base.Update(deltaTime); + var diffTime = tick - lastUpdate; + base.Update(tick); // arbitrary cap if (diffTime.Milliseconds >= 33) diff --git a/FFXIVClassic Map Server/actors/chara/Character.cs b/FFXIVClassic Map Server/actors/chara/Character.cs index 755ab6f4..4924cbdd 100644 --- a/FFXIVClassic Map Server/actors/chara/Character.cs +++ b/FFXIVClassic Map Server/actors/chara/Character.cs @@ -221,7 +221,7 @@ namespace FFXIVClassic_Map_Server.Actors } } - public void Update(double deltaTime) + public void Update(DateTime tick) { // todo: actual ai controllers // todo: mods to control different params instead of hardcode @@ -231,11 +231,11 @@ namespace FFXIVClassic_Map_Server.Actors if (aiContainer != null) { - this.aiContainer.Update(DateTime.Now); + this.aiContainer.Update(tick); } /* - var diffTime = (DateTime.Now - lastAiUpdate); + var diffTime = (tick - lastAiUpdate); if (this is Player) { @@ -248,7 +248,7 @@ namespace FFXIVClassic_Map_Server.Actors // return; // todo: this too - if (diffTime.Milliseconds >= deltaTime) + if (diffTime.Milliseconds >= 10) { bool foundActor = false; @@ -344,7 +344,7 @@ namespace FFXIVClassic_Map_Server.Actors } // time elapsed since last move update - var diffMove = (DateTime.Now - lastMoveUpdate); + var diffMove = (tick - lastMoveUpdate); // todo: modifier for DelayBeforeRoamToSpawn // player disappeared diff --git a/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs b/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs index f5d0bcf3..3c29b443 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/AIContainer.cs @@ -46,6 +46,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai } + public DateTime GetLatestUpdate() + { + return latestUpdate; + } + public void Engage(Character target) { if (controller != null) diff --git a/FFXIVClassic Map Server/actors/chara/ai/state/State.cs b/FFXIVClassic Map Server/actors/chara/ai/state/State.cs index 8d12a508..c9f8cf68 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/state/State.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/state/State.cs @@ -18,7 +18,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state protected DateTime startTime; - protected BasePacket errorPacket; + protected SubPacket errorPacket; public State(Character owner, Character target) { diff --git a/FFXIVClassic Map Server/actors/chara/ai/utils/AttackUtils.cs b/FFXIVClassic Map Server/actors/chara/ai/utils/AttackUtils.cs index 48f819aa..77071406 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/utils/AttackUtils.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/utils/AttackUtils.cs @@ -8,13 +8,13 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.utils { static class AttackUtils { - public static int CalculateDamage(ref Character attacker, ref Character defender) + public static int CalculateDamage(Character attacker, Character defender) { - int dmg = CalculateBaseDamage(ref attacker, ref defender); + int dmg = CalculateBaseDamage(attacker, defender); return dmg; } - public static int CalculateBaseDamage(ref Character attacker, ref Character defender) + public static int CalculateBaseDamage(Character attacker, Character defender) { return 0; } diff --git a/FFXIVClassic Map Server/actors/chara/npc/Npc.cs b/FFXIVClassic Map Server/actors/chara/npc/Npc.cs index 94f37af2..90eb7916 100644 --- a/FFXIVClassic Map Server/actors/chara/npc/Npc.cs +++ b/FFXIVClassic Map Server/actors/chara/npc/Npc.cs @@ -396,8 +396,9 @@ namespace FFXIVClassic_Map_Server.Actors player.QueuePacket(PlayBGAnimation.BuildPacket(actorId, player.actorId, animationName)); } - public void Update(double deltaTime) + public void Update(DateTime tick) { + var deltaTime = (tick - aiContainer.GetLatestUpdate()).Milliseconds; LuaEngine.GetInstance().CallLuaFunction(null, this, "onUpdate", true, deltaTime); }