Move OnPlayerBuff logic to Bouncer

This commit is contained in:
Lucas Nicodemus 2017-12-15 17:51:16 -07:00
parent c9955a74ec
commit 5cdb38675c
3 changed files with 64 additions and 39 deletions

View file

@ -42,6 +42,7 @@ namespace TShockAPI
{
// Setup hooks
GetDataHandlers.PlayerBuff.Register(OnPlayerBuff);
GetDataHandlers.ChestItemChange.Register(OnChestItemChange);
GetDataHandlers.NPCHome.Register(OnUpdateNPCHome);
GetDataHandlers.ChestOpen.Register(OnChestOpen);
@ -57,6 +58,63 @@ namespace TShockAPI
GetDataHandlers.TileEdit.Register(OnTileEdit);
}
/// <summary>Handles Buff events.</summary>
/// <param name="sender">The object that triggered the event.</param>
/// <param name="args">The packet arguments that the event has.</param>
internal void OnPlayerBuff(object sender, GetDataHandlers.PlayerBuffEventArgs args)
{
byte id = args.ID;
byte type = args.Type;
int time = args.Time;
if (TShock.Players[id] == null)
{
args.Handled = true;
return;
}
if (TShock.CheckIgnores(args.Player))
{
args.Player.SendData(PacketTypes.PlayerAddBuff, "", id);
args.Handled = true;
return;
}
if (id >= Main.maxPlayers)
{
args.Player.SendData(PacketTypes.PlayerAddBuff, "", id);
args.Handled = true;
return;
}
if (!TShock.Players[id].TPlayer.hostile || !Main.pvpBuff[type])
{
args.Player.SendData(PacketTypes.PlayerAddBuff, "", id);
args.Handled = true;
return;
}
if (TShock.CheckRangePermission(args.Player, TShock.Players[id].TileX, TShock.Players[id].TileY, 50))
{
args.Player.SendData(PacketTypes.PlayerAddBuff, "", id);
args.Handled = true;
return;
}
if ((DateTime.UtcNow - args.Player.LastThreat).TotalMilliseconds < 5000)
{
args.Player.SendData(PacketTypes.PlayerAddBuff, "", id);
args.Handled = true;
return;
}
if (WhitelistBuffMaxTime[type] > 0 && time <= WhitelistBuffMaxTime[type])
{
args.Handled = false;
return;
}
}
/// <summary>Handles when a chest item is changed.</summary>
/// <param name="sender">The object that triggered the event.</param>
/// <param name="args">The packet arguments that the event has.</param>