]> git.deb.at Git - rhonda/impostor.git/commitdiff
fix player exile (#112)
authortuxinal <ebrahim.amiri.k@gmail.com>
Sun, 8 Nov 2020 00:40:24 +0000 (04:10 +0330)
committerGitHub <noreply@github.com>
Sun, 8 Nov 2020 00:40:24 +0000 (01:40 +0100)
src/Impostor.Api/Events/Game/Player/IPlayerExileEvent.cs
src/Impostor.Server/Net/Inner/Objects/InnerMeetingHud.cs
src/Impostor.Server/Net/Inner/Objects/InnerPlayerControl.cs

index 2f6fa1f3d6b1f9a3a186bc18261d1e824976bb52..65ade4e86725feb4af368f01407d2306b13d6719 100644 (file)
@@ -1,8 +1,7 @@
 namespace Impostor.Api.Events.Player
 {
     /// <summary>
-    /// Called whenever a player gets exiled (voted out)
-    /// Never actually gets called, for future use.
+    ///     Called whenever a player gets exiled (voted out).
     /// </summary>
     public interface IPlayerExileEvent : IPlayerEvent
     {
index 941a4b3b52ad110286436772d0457f521a8db10f..c2bcb9d9d98d6125cd1ceda69c1e8cd33c0a24ad 100644 (file)
@@ -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
+}
index 21e446eed31fe8347d61bb725b33af9a22103b4c..3270064506d4dc646291f78227c5ffbea1eb71c9 100644 (file)
@@ -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;