From 4c7928da78769468c46399e5380121704d9531ca Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 29 Aug 2017 22:27:32 -0400 Subject: [PATCH] Fixed screwed up cast animation. --- FFXIVClassic Map Server/actors/Actor.cs | 4 +++- FFXIVClassic Map Server/actors/chara/Character.cs | 6 ++++++ .../actors/chara/ai/state/MagicState.cs | 7 +++++-- FFXIVClassic Map Server/actors/chara/player/Player.cs | 8 ++------ .../packets/send/Actor/SetActorSubStatPacket.cs | 4 ++-- .../packets/send/Actor/battle/BattleAction.cs | 2 +- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/FFXIVClassic Map Server/actors/Actor.cs b/FFXIVClassic Map Server/actors/Actor.cs index 27d67344..78e8d1cc 100644 --- a/FFXIVClassic Map Server/actors/Actor.cs +++ b/FFXIVClassic Map Server/actors/Actor.cs @@ -433,7 +433,9 @@ namespace FFXIVClassic_Map_Server.Actors if ((updateFlags & ActorUpdateFlags.State) != 0) { - packets.Add(SetActorStatePacket.BuildPacket(actorId, currentMainState, currentSubState)); + packets.Add(SetActorStatePacket.BuildPacket(actorId, currentMainState, currentSubState)); + if (this is Character) + ((Character)this).DoBattleAction(21001, 0x7C000062, new BattleAction(this.actorId, 0, 1, 0, 0, 1)); //Attack Mode } updateFlags = ActorUpdateFlags.None; diff --git a/FFXIVClassic Map Server/actors/chara/Character.cs b/FFXIVClassic Map Server/actors/chara/Character.cs index 0132b711..28b3db64 100644 --- a/FFXIVClassic Map Server/actors/chara/Character.cs +++ b/FFXIVClassic Map Server/actors/chara/Character.cs @@ -179,6 +179,12 @@ namespace FFXIVClassic_Map_Server.Actors zone.BroadcastPacketAroundActor(this, PlayAnimationOnActorPacket.BuildPacket(actorId, animId)); } + public void SendChant(int left, int right) + { + SetActorSubStatPacket.BuildPacket(actorId, 0, left, right, 0, 0, 0, 0).DebugPrintSubPacket(); + zone.BroadcastPacketAroundActor(this, SetActorSubStatPacket.BuildPacket(actorId, 0, left, right, 0, 0, 0, 0)); + } + public void DoBattleAction(ushort commandId, uint animationId) { zone.BroadcastPacketAroundActor(this, BattleActionX00Packet.BuildPacket(actorId, animationId, commandId)); diff --git a/FFXIVClassic Map Server/actors/chara/ai/state/MagicState.cs b/FFXIVClassic Map Server/actors/chara/ai/state/MagicState.cs index e6acacd6..120cc52b 100644 --- a/FFXIVClassic Map Server/actors/chara/ai/state/MagicState.cs +++ b/FFXIVClassic Map Server/actors/chara/ai/state/MagicState.cs @@ -61,7 +61,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state { // todo: modify spellSpeed based on modifiers and stuff ((Player)owner).SendStartCastbar(spell.id, Utils.UnixTimeStampUTC(DateTime.Now.AddSeconds(spellSpeed))); - owner.DoBattleAction(spell.id, 0x6F000002, new BattleAction(target.actorId, 30128, 1, 0, 1)); //You begin casting (6F000002: BLM, 6F000003: WHM) + owner.SendChant(0xF, 0x0); + owner.DoBattleAction(spell.id, 0x6F000002, new BattleAction(target.actorId, 30128, 1, 0, 1)); //You begin casting (6F000002: BLM, 6F000003: WHM) } } @@ -97,6 +98,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state // todo: send paralyzed/sleep message etc. if (errorResult != null) { + owner.SendChant(0, 0); owner.DoBattleAction(spell.id, errorResult.animation, errorResult); errorResult = null; } @@ -117,6 +119,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state actions[i++] = action; } + owner.SendChant(0, 0); owner.DoBattleAction(spell.id, spell.battleAnimation, actions); } @@ -167,7 +170,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.ai.state public override void Cleanup() { if (owner.currentSubState == SetActorStatePacket.SUB_STATE_PLAYER) - { + { ((Player)owner).SendEndCastbar(); } // command casting duration diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index b3b0d169..05ed9079 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -1732,12 +1732,7 @@ namespace FFXIVClassic_Map_Server.Actors Server.GetWorldManager().NoMembersInParty((Party)currentParty); currentParty = null; } - - public void Update(double delta) - { - LuaEngine.GetInstance().CallLuaFunction(this, this, "OnUpdate", true, delta); - } - + public void IssueChocobo(byte appearanceId, string nameResponse) { Database.IssuePlayerChocobo(this, appearanceId, nameResponse); @@ -1751,6 +1746,7 @@ namespace FFXIVClassic_Map_Server.Actors Database.ChangePlayerChocoboAppearance(this, appearanceId); chocoboAppearance = appearanceId; } + public override void Update(DateTime tick) { aiContainer.Update(tick); diff --git a/FFXIVClassic Map Server/packets/send/Actor/SetActorSubStatPacket.cs b/FFXIVClassic Map Server/packets/send/Actor/SetActorSubStatPacket.cs index e132a976..575aa7fd 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/SetActorSubStatPacket.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/SetActorSubStatPacket.cs @@ -30,9 +30,9 @@ namespace FFXIVClassic_Map_Server.packets.send.actor using (BinaryWriter binWriter = new BinaryWriter(mem)) { binWriter.Write((byte)breakage); - binWriter.Write((byte)(((leftChant & 0xF) << 8) | (rightChant & 0xF))); + binWriter.Write((byte)(((leftChant & 0xF) << 4) | (rightChant & 0xF))); binWriter.Write((byte)(guard & 0xF)); - binWriter.Write((byte)((wasteStat & 0xF) << 8)); + binWriter.Write((byte)((wasteStat & 0xF) << 4)); binWriter.Write((byte)(statMode & 0xF)); binWriter.Write((byte)0); binWriter.Write((UInt16)(idleAnimationId&0xFFFF)); diff --git a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleAction.cs b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleAction.cs index fda53e8c..620f3c34 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleAction.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleAction.cs @@ -114,7 +114,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle /// public uint animation; - public BattleAction(uint targetId, ushort worldMasterTextId, uint effectId, ushort amount = 0, byte param = 0, byte unknown = 0) + public BattleAction(uint targetId, ushort worldMasterTextId, uint effectId, ushort amount = 0, byte param = 0, byte unknown = 1) { this.targetId = targetId; this.worldMasterTextId = worldMasterTextId;