using System.Linq; using Decimation.Content; using Decimation.Lib.Items; using Terraria; using Terraria.ModLoader; namespace Decimation.Lib.Util { public static class PlayerUtils { public static DecimationPlayer GetModPlayer(this Player player) { return player.GetModPlayer(); } public static void EquipAccessory(this Player player, DecimationAccessory accessory) { player.EquipAccessory(accessory.item); } public static void EquipAccessory(this Player player, Item accessory) { player.EquipAccessory(accessory.type); } public static void EquipAccessory(this Player player, int item) { player.GetModPlayer().EquippedAccessories.Add(item); } public static bool HasEquippedAccessory(this Player player, int accessoryType) { return player.GetModPlayer().EquippedAccessories.Contains(accessoryType); } public static bool HasEquippedAccessory(this ModPlayer modPlayer, int accessoryType) { return modPlayer.player.HasEquippedAccessory(accessoryType); } public static bool HasEquippedAmulet(this Player player, int amuletType) { return player.GetModPlayer().AmuletSlotItem.type == amuletType; } public static bool HasEquippedShield(this Player player) { return ShieldID.Shields.Count(player.HasEquippedAccessory) != 0; } public static bool HasEquippedShield(this ModPlayer modPlayer) { return modPlayer.player.HasEquippedShield(); } public static bool TeamHasEquippedAccessory(this Player player, int accessoryType) { for (int i = 0; i < Main.player.Length; i++) { Player p = Main.player[i]; if (p.active && !p.dead && p.team == player.team && p.HasEquippedAccessory(accessoryType)) { return true; } } return false; } public static bool TeamHasEquippedAccessory(this ModPlayer modPlayer, int accessoryType) { return modPlayer.player.TeamHasEquippedAccessory(accessoryType); } public static void LeechMana(this Player player, Entity target, int minMana = 5, int maxMana = 15) { int manaAmount = Main.rand.Next(minMana, maxMana + 1); player.ManaEffect(manaAmount); if (target.GetType() == typeof(Player)) { ((Player) target).ManaEffect(-manaAmount); } } } }