diff --git a/FFXIVClassic Map Server/WorldManager.cs b/FFXIVClassic Map Server/WorldManager.cs index 62a6b531..cd0560ba 100644 --- a/FFXIVClassic Map Server/WorldManager.cs +++ b/FFXIVClassic Map Server/WorldManager.cs @@ -613,7 +613,7 @@ namespace FFXIVClassic_Map_Server //Send packets player.playerSession.QueuePacket(DeleteAllActorsPacket.BuildPacket(player.actorId)); - player.playerSession.QueuePacket(_0xE2Packet.BuildPacket(player.actorId, 0x10)); + player.playerSession.QueuePacket(_0xE2Packet.BuildPacket(player.actorId, 0x2)); player.SendZoneInPackets(this, spawnType); player.playerSession.ClearInstance(); player.SendInstanceUpdate(); diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs index 11230686..fed88f12 100644 --- a/FFXIVClassic Map Server/actors/chara/player/Player.cs +++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs @@ -344,6 +344,11 @@ namespace FFXIVClassic_Map_Server.Actors subpackets.Add(Database.GetAchievementsPacket(this)); } + if (mountState == 1) + subpackets.Add(SetCurrentMountChocoboPacket.BuildPacket(actorId, chocoboAppearance)); + else if (mountState == 2) + subpackets.Add(SetCurrentMountGoobbuePacket.BuildPacket(actorId, 1)); + return subpackets; } @@ -621,13 +626,19 @@ namespace FFXIVClassic_Map_Server.Actors public void BroadcastPacket(SubPacket packet, bool sendToSelf) { + if (sendToSelf) + { + SubPacket clonedPacket = new SubPacket(packet, actorId); + QueuePacket(clonedPacket); + } + foreach (Actor a in playerSession.actorInstanceList) { if (a is Player) { Player p = (Player)a; - if (p.Equals(this) && !sendToSelf) + if (p.Equals(this)) continue; SubPacket clonedPacket = new SubPacket(packet, a.actorId); @@ -744,19 +755,18 @@ namespace FFXIVClassic_Map_Server.Actors QueuePacket(SetMusicPacket.BuildPacket(actorId, musicId, 1)); } - public void SendChocoboAppearance() + public void SendMountAppearance() { - BroadcastPacket(SetCurrentMountChocoboPacket.BuildPacket(actorId, chocoboAppearance), true); - } - - public void SendGoobbueAppearance() - { - BroadcastPacket(SetCurrentMountGoobbuePacket.BuildPacket(actorId, 1), true); + if (mountState == 1) + BroadcastPacket(SetCurrentMountChocoboPacket.BuildPacket(actorId, chocoboAppearance), true); + else if (mountState == 2) + BroadcastPacket(SetCurrentMountGoobbuePacket.BuildPacket(actorId, 1), true); } public void SetMountState(byte mountState) { this.mountState = mountState; + SendMountAppearance(); } public byte GetMountState() diff --git a/FFXIVClassic Map Server/dataobjects/Session.cs b/FFXIVClassic Map Server/dataobjects/Session.cs index e1b3ab49..e83fcce5 100644 --- a/FFXIVClassic Map Server/dataobjects/Session.cs +++ b/FFXIVClassic Map Server/dataobjects/Session.cs @@ -28,7 +28,6 @@ namespace FFXIVClassic_Map_Server.dataobjects { this.id = sessionId; playerActor = new Player(this, sessionId); - actorInstanceList.Add(playerActor); } public void QueuePacket(List packets) diff --git a/data/scripts/commands/ChocoboRideCommand.lua b/data/scripts/commands/ChocoboRideCommand.lua index 2fb5dcfe..8163f408 100644 --- a/data/scripts/commands/ChocoboRideCommand.lua +++ b/data/scripts/commands/ChocoboRideCommand.lua @@ -14,12 +14,10 @@ function onEventStarted(player, actor, triggerName, isGoobbue) if (isGoobbue ~= true) then player:ChangeMusic(83); - player:SendChocoboAppearance(); player:SendGameMessage(player, worldMaster, 26001, 0x20); player:SetMountState(1); else player:ChangeMusic(98); - player:SendGoobbueAppearance(); player:SendGameMessage(player, worldMaster, 26019, 0x20); player:SetMountState(2); end