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.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
/**
* @author SugarCaney
*/
public class LightningBolt extends ItemExecutor {
private static final int NAUSEA_DURATION = 200;
public LightningBolt() {
super(Material.FEATHER);
}
@Override
boolean execute(CrystalQuest plugin, Player player, ItemStack itemStack) {
// Fetch upgrade levels.
double explosion = Multipliers.getMultiplier(
"lightning",
plugin.economy.getLevel(player, "explosive", "upgrade"),
false
);
double multiplier = Multipliers.getMultiplier(
"debuff",
plugin.economy.getLevel(player, "debuff", "upgrade"),
false
);
int duration = (int)(NAUSEA_DURATION * multiplier);
PotionEffect effect = new PotionEffect(PotionEffectType.CONFUSION, duration, 1);
Arena arena = plugin.getArenaManager().getArena(player.getUniqueId());
CrystalQuestTeam targetTeam = Teams.getRandomTeamToHit(player);
if (arena.getPlayers().size() <= 1) {
return true;
}
// Bloop a team.
for (Player target : Teams.getPlayersFromTeam(arena, targetTeam)) {
World world = target.getWorld();
Location location = target.getLocation();
// Explosion when upgrade is enabled.
if (explosion > 0) {
world.createExplosion(
location.getX(), location.getY(), location.getZ(),
(float)explosion, false, false
);
}
// Strike
world.strikeLightning(location);
target.addPotionEffect(effect);
}
// Send confirmation message
player.sendMessage(Broadcast.get("item-use.lightning")
.replace("%team%", targetTeam.toString()));
return true;
}
}