From 837c7a92230db8c06ec16f63c35a60074184b5c6 Mon Sep 17 00:00:00 2001 From: yogurt Date: Sun, 10 Dec 2017 09:20:42 -0600 Subject: [PATCH] Health updating fix, temp r0 fix --- FFXIVClassic Map Server/actors/area/Area.cs | 4 +-- FFXIVClassic Map Server/actors/area/Zone.cs | 4 ++- .../actors/chara/Character.cs | 3 +- .../ai/controllers/BattleNpcController.cs | 29 ++++++++++--------- .../actors/chara/ai/state/AttackState.cs | 1 - .../actors/chara/ai/state/DeathState.cs | 2 +- .../actors/chara/ai/state/WeaponSkillState.cs | 2 ++ .../actors/chara/npc/BattleNpc.cs | 4 --- .../dataobjects/ZoneConnection.cs | 4 +++ data/scripts/effects/regen.lua | 27 ----------------- .../scripts/unique/fst0Town01/Monster/ass.lua | 3 ++ 11 files changed, 33 insertions(+), 50 deletions(-) delete mode 100644 data/scripts/effects/regen.lua create mode 100644 data/scripts/unique/fst0Town01/Monster/ass.lua diff --git a/FFXIVClassic Map Server/actors/area/Area.cs b/FFXIVClassic Map Server/actors/area/Area.cs index c44b71d4..68db3467 100644 --- a/FFXIVClassic Map Server/actors/area/Area.cs +++ b/FFXIVClassic Map Server/actors/area/Area.cs @@ -500,8 +500,8 @@ namespace FFXIVClassic_Map_Server.Actors npc = new Npc(mActorList.Count + 1, actorClass, uniqueId, this, x, y, z, rot, state, animId, null); npc.LoadEventConditions(actorClass.eventConditions); - //npc.SetMaxHP(30000); - //npc.SetHP(30000); + //npc.SetMaxHP(3000); + //npc.SetHP(3000); AddActorToZone(npc); diff --git a/FFXIVClassic Map Server/actors/area/Zone.cs b/FFXIVClassic Map Server/actors/area/Zone.cs index 07c2937f..d198fff5 100644 --- a/FFXIVClassic Map Server/actors/area/Zone.cs +++ b/FFXIVClassic Map Server/actors/area/Zone.cs @@ -26,6 +26,7 @@ namespace FFXIVClassic_Map_Server.actors.area public SharpNav.NavMeshQuery navMeshQuery; public Int64 pathCalls; + public Int64 prevPathCalls = 0; public Int64 pathCallTime; public Zone(uint id, string zoneName, ushort regionId, string classPath, ushort bgmDay, ushort bgmNight, ushort bgmBattle, bool isIsolated, bool isInn, bool canRideChocobo, bool canStealth, bool isInstanceRaid, bool loadNavMesh = false) @@ -196,7 +197,8 @@ namespace FFXIVClassic_Map_Server.actors.area { if (this.pathCalls > 0) { - Program.Log.Debug("Number of pathfinding calls {0} average time {1}ms", pathCalls, (float)(pathCallTime / pathCalls)); + Program.Log.Debug("Number of pathfinding calls {0} average time {1}ms. {2} this tick", pathCalls, (float)(pathCallTime / pathCalls), pathCalls - prevPathCalls); + prevPathCalls = pathCalls; } lastUpdate = tick; } diff --git a/FFXIVClassic Map Server/actors/chara/Character.cs b/FFXIVClassic Map Server/actors/chara/Character.cs index 491792b0..098392c2 100644 --- a/FFXIVClassic Map Server/actors/chara/Character.cs +++ b/FFXIVClassic Map Server/actors/chara/Character.cs @@ -335,7 +335,8 @@ namespace FFXIVClassic_Map_Server.Actors if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0) { var propPacketUtil = new ActorPropertyPacketUtil("charaWork/stateAtQuicklyForAll", this); - + propPacketUtil.AddProperty("charaWork.parameterSave.hp[0]"); + propPacketUtil.AddProperty("charaWork.parameterSave.hpMax[0]"); propPacketUtil.AddProperty("charaWork.parameterSave.mp"); propPacketUtil.AddProperty("charaWork.parameterSave.mpMax"); propPacketUtil.AddProperty("charaWork.parameterTemp.tp"); diff --git a/FFXIVClassic Map Server/actors/chara/ai/controllers/BattleNpcController.cs b/FFXIVClassic Map Server/actors/chara/ai/controllers/BattleNpcController.cs index 6711ccad..6533680e 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/controllers/BattleNpcController.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/controllers/BattleNpcController.cs @@ -39,22 +39,24 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers public override void Update(DateTime tick) { lastUpdate = tick; - - // todo: handle aggro/deaggro and other shit here - if (!owner.aiContainer.IsEngaged()) + if (!owner.IsDead()) { - TryAggro(tick); - } + // todo: handle aggro/deaggro and other shit here + if (!owner.aiContainer.IsEngaged()) + { + TryAggro(tick); + } - if(owner.aiContainer.IsEngaged()) - { - //DoCombatTick(tick); - } + if (owner.aiContainer.IsEngaged()) + { + DoCombatTick(tick); + } - //Only move if owner isn't dead and is either too far away from their spawn point or is meant to roam - if (!owner.IsDead() && (owner.isMovingToSpawn || owner.GetMobMod((uint) MobModifier.Roams) > 0)) - { - DoRoamTick(tick); + //Only move if owner isn't dead and is either too far away from their spawn point or is meant to roam + else if (!owner.IsDead() && (owner.isMovingToSpawn || owner.GetMobMod((uint)MobModifier.Roams) > 0)) + { + DoRoamTick(tick); + } } } @@ -103,6 +105,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.controllers Engage(owner.hateContainer.GetMostHatedTarget()); } } + public override bool Engage(Character target) { var canEngage = this.owner.aiContainer.InternalEngage(target); diff --git a/FFXIVClassic Map Server/actors/chara/ai/state/AttackState.cs b/FFXIVClassic Map Server/actors/chara/ai/state/AttackState.cs index 56087d39..79f63178 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/state/AttackState.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/state/AttackState.cs @@ -129,7 +129,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state private bool CanAttack() { - return false; if (!owner.isAutoAttackEnabled) { return false; diff --git a/FFXIVClassic Map Server/actors/chara/ai/state/DeathState.cs b/FFXIVClassic Map Server/actors/chara/ai/state/DeathState.cs index 61d76a62..673b42a4 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/state/DeathState.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/state/DeathState.cs @@ -15,7 +15,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state : base(owner, null) { owner.Disengage(); - //owner.ChangeState(SetActorStatePacket.MAIN_STATE_DEAD2); + //owner.ChangeState(SetActorStatePacket.MAIN_STATE_DEAD); var deathStatePacket = SetActorStatePacket.BuildPacket(owner.actorId, SetActorStatePacket.MAIN_STATE_DEAD, owner.currentSubState); owner.zone.BroadcastPacketAroundActor(owner, deathStatePacket); canInterrupt = false; diff --git a/FFXIVClassic Map Server/actors/chara/ai/state/WeaponSkillState.cs b/FFXIVClassic Map Server/actors/chara/ai/state/WeaponSkillState.cs index f9bbefad..65ce04c6 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/state/WeaponSkillState.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/state/WeaponSkillState.cs @@ -106,6 +106,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state var errors = (BattleAction[])actions.Clone(); owner.OnWeaponSkill(this, actions, ref errors); owner.DoBattleAction(skill.id, skill.battleAnimation, actions); + + } public override void TryInterrupt() diff --git a/FFXIVClassic Map Server/actors/chara/npc/BattleNpc.cs b/FFXIVClassic Map Server/actors/chara/npc/BattleNpc.cs index 4b94313a..928aedd3 100644 --- a/FFXIVClassic Map Server/actors/chara/npc/BattleNpc.cs +++ b/FFXIVClassic Map Server/actors/chara/npc/BattleNpc.cs @@ -173,9 +173,6 @@ namespace FFXIVClassic_Map_Server.Actors if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0) { var propPacketUtil = new ActorPropertyPacketUtil("charaWork/stateAtQuicklyForAll", this); - - propPacketUtil.AddProperty("charaWork.parameterSave.hp[0]"); - propPacketUtil.AddProperty("charaWork.parameterSave.hpMax[0]"); propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[0]"); propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkillLevel"); @@ -283,7 +280,6 @@ namespace FFXIVClassic_Map_Server.Actors var partyMember = zone.FindActorInArea(memberId); // onDeath(monster, player, killer) lua.LuaEngine.CallLuaBattleFunction(this, "onDeath", this, partyMember, lastAttacker); - if (partyMember is Player) ((Player)partyMember).AddExp(1500, (byte)partyMember.GetClass(), 5); } diff --git a/FFXIVClassic Map Server/dataobjects/ZoneConnection.cs b/FFXIVClassic Map Server/dataobjects/ZoneConnection.cs index 786a604d..68c8952a 100644 --- a/FFXIVClassic Map Server/dataobjects/ZoneConnection.cs +++ b/FFXIVClassic Map Server/dataobjects/ZoneConnection.cs @@ -19,6 +19,10 @@ namespace FFXIVClassic_Map_Server.dataobjects public void QueuePacket(SubPacket subpacket) { + //Temporary fix for r0 + if(SendPacketQueue.Count == 1000) + FlushQueuedSendPackets(); + SendPacketQueue.Add(subpacket); } diff --git a/data/scripts/effects/regen.lua b/data/scripts/effects/regen.lua deleted file mode 100644 index 2b13811d..00000000 --- a/data/scripts/effects/regen.lua +++ /dev/null @@ -1,27 +0,0 @@ -require("global") -messageId = MESSAGE_TYPE_SYSTEM_ERROR; -sender = "regen"; - -function onGain(target, effect) - messageId = MESSAGE_TYPE_SYSTEM_ERROR; - sender = "regen"; - -end; - -function onTick(target, effect) - messageId = MESSAGE_TYPE_SYSTEM_ERROR; - sender = "regen"; - - -- todo: actual regen effect thing - local ability = GetWorldManager().GetBattleCommand(27346); - local anim = bit32.bxor(bit32.lshift(ability.animationType, 24), bit32.lshift(tonumber(1), 12) , 101); - local addHp = effect.GetMagnitude(); - - target.AddHP(addHp); - -- target.SendBattleActionX01Packet(anim, 101, 0, 0, addHp); -end; - -function onLose(target, effect) - messageId = MESSAGE_TYPE_SYSTEM_ERROR; - sender = "regen"; -end; \ No newline at end of file diff --git a/data/scripts/unique/fst0Town01/Monster/ass.lua b/data/scripts/unique/fst0Town01/Monster/ass.lua new file mode 100644 index 00000000..3ab4e56a --- /dev/null +++ b/data/scripts/unique/fst0Town01/Monster/ass.lua @@ -0,0 +1,3 @@ +function onDeath(monster, player, lastAttacker) + +end \ No newline at end of file