From: tuxinal Date: Sun, 8 Nov 2020 00:40:24 +0000 (+0330) Subject: fix player exile (#112) X-Git-Tag: v1.2.2~37 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=c1c6311c87a1fddaf0d2d1987b551b8e090d2f5a;p=rhonda%2Fimpostor.git fix player exile (#112) --- diff --git a/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs b/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs index 2f6fa1f..65ade4e 100644 --- a/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs +++ b/src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs @@ -1,8 +1,7 @@ namespace Impostor.Api.Events.Player { /// - /// Called whenever a player gets exiled (voted out) - /// Never actually gets called, for future use. + /// Called whenever a player gets exiled (voted out). /// public interface IPlayerExileEvent : IPlayerEvent { diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs index 941a4b3..c2bcb9d 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs @@ -3,9 +3,11 @@ using System.Linq; using System.Threading.Tasks; using Impostor.Api; using Impostor.Api.Events.Managers; +using Impostor.Api.Innersloth; using Impostor.Api.Net; using Impostor.Api.Net.Messages; using Impostor.Server.Events.Meeting; +using Impostor.Server.Events.Player; using Impostor.Server.Net.State; using Microsoft.Extensions.Logging; @@ -79,6 +81,16 @@ namespace Impostor.Server.Net.Inner.Objects var playerId = reader.ReadByte(); var tie = reader.ReadBoolean(); + if (playerId != byte.MaxValue) + { + var player = _game.GameNet.GameData.GetPlayerById(playerId); + if (player != null) + { + player.Controller.Die(DeathReason.Exile); + await _eventManager.CallAsync(new PlayerExileEvent(_game, sender, player.Controller)); + } + } + await _eventManager.CallAsync(new MeetingEndedEvent(_game, this)); break; @@ -161,4 +173,4 @@ namespace Impostor.Server.Net.Inner.Objects } } } -} \ No newline at end of file +} diff --git a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs index 21e446e..3270064 100644 --- a/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs +++ b/src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs @@ -428,7 +428,7 @@ namespace Impostor.Server.Net.Inner.Objects PlayerId = reader.ReadByte(); } - private void Die(DeathReason reason) + internal void Die(DeathReason reason) { PlayerInfo.IsDead = true; PlayerInfo.LastDeathReason = reason;