package nl.sugcube.crystalquest.items; import nl.sugcube.crystalquest.Broadcast; import nl.sugcube.crystalquest.CrystalQuest; import nl.sugcube.crystalquest.game.CrystalQuestTeam; import nl.sugcube.crystalquest.game.Teams; import nl.sugcube.crystalquest.economy.Multipliers; import nl.sugcube.crystalquest.game.Arena; import org.bukkit.EntityEffect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import java.util.Random; /** * @author SugarCaney */ public class Curse extends ItemExecutor { private static final Random random = new Random(); public Curse() { super(Material.SKULL_ITEM, (short)0); } @Override boolean execute(CrystalQuest plugin, Player player, ItemStack itemStack) { // Determine target Arena arena = plugin.getArenaManager().getArena(player.getUniqueId()); CrystalQuestTeam targetTeam = Teams.getRandomTeamToHit(player); if (arena.getPlayers().size() <= 1) { return true; } // Determine duration. double multiplier = Multipliers.getMultiplier( "debuff", plugin.economy.getLevel(player, "debuff", "upgrade"), false ); int duration = (int)(20 * 8 + random.nextInt(5) * multiplier); // Curse a team. for (Player target : Teams.getPlayersFromTeam(arena, targetTeam)) { plugin.itemHandler.cursed.put(target, duration); target.playEffect(EntityEffect.WOLF_SMOKE); target.playEffect(EntityEffect.WITCH_MAGIC); target.playSound(target.getLocation(), Sound.BLOCK_PORTAL_TRAVEL, 10L, 10L); target.sendMessage(Broadcast.get("messages.cursed")); } // Send confirmation message player.sendMessage(Broadcast.get("item-use.cursed") .replace("%team%", targetTeam.toString())); return true; } }