diff --git a/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Notifications.cs b/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Notifications.cs index cfc713d7..757ea915 100644 --- a/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Notifications.cs +++ b/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Notifications.cs @@ -160,9 +160,22 @@ public async Task HandleAsync(IReceiveContext conte if (p3dPacket is BattleOfferFromClientPacket battleOfferFromClientPacket) { + if (battleOfferFromClientPacket.DestinationPlayerOrigin != Origin) return; await SendPacketAsync(new BattleOfferToClientPacket { Origin = battleOfferFromClientPacket.Origin, BattleData = battleOfferFromClientPacket.BattleData }, ct); return; } + if (p3dPacket is BattleHostDataFromClientPacket battleHostDataFromClientPacket) + { + if (battleHostDataFromClientPacket.DestinationPlayerOrigin != Origin) return; + await SendPacketAsync(new BattleHostDataToClientPacket { Origin = battleHostDataFromClientPacket.Origin, BattleData = battleHostDataFromClientPacket.BattleData }, ct); + return; + } + if (p3dPacket is BattleEndRoundDataFromClientPacket battleEndRoundDataFromClientPacket) + { + if (battleEndRoundDataFromClientPacket.DestinationPlayerOrigin != Origin) return; + await SendPacketAsync(new BattleEndRoundDataToClientPacket { Origin = battleEndRoundDataFromClientPacket.Origin, BattleData = battleEndRoundDataFromClientPacket.BattleData }, ct); + return; + } await SendPacketAsync(p3dPacket, ct); } diff --git a/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Packets.cs b/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Packets.cs index c4bbe4f4..9f69311d 100644 --- a/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Packets.cs +++ b/src/P3D.Legacy.Server.Client.P3D/P3DConnectionContextHandler.Packets.cs @@ -444,7 +444,7 @@ private async Task HandleBattleHostDataAsync(BattleHostDataFromClientPacket pack if (State != PlayerState.Initialized) return; - await _eventDispatcher.DispatchAsync(new PlayerSentRawP3DPacketEvent(this, new BattleHostDataToClientPacket { Origin = packet.Origin, BattleData = packet.BattleData }), ct); + await _eventDispatcher.DispatchAsync(new PlayerSentRawP3DPacketEvent(this, packet), ct); } private async Task HandleBattleJoinAsync(BattleJoinPacket packet, CancellationToken ct) { @@ -492,7 +492,7 @@ private async Task HandleBattlePokemonDataAsync(BattleEndRoundDataFromClientPack if (State != PlayerState.Initialized) return; - await _eventDispatcher.DispatchAsync(new PlayerSentRawP3DPacketEvent(this, new BattleEndRoundDataToClientPacket { Origin = packet.Origin, BattleData = packet.BattleData }), ct); + await _eventDispatcher.DispatchAsync(new PlayerSentRawP3DPacketEvent(this, packet), ct); } private async Task HandleBattleQuitAsync(BattleQuitPacket packet, CancellationToken ct) {