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
{
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;
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;
}
}
}
-}
\ No newline at end of file
+}
PlayerId = reader.ReadByte();
}
- private void Die(DeathReason reason)
+ internal void Die(DeathReason reason)
{
PlayerInfo.IsDead = true;
PlayerInfo.LastDeathReason = reason;