MobArena/abilities/LivingBomb.java
2012-03-01 00:19:17 +01:00

60 lines
1.8 KiB
Java

import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import com.garbagemule.MobArena.framework.Arena;
import com.garbagemule.MobArena.waves.MABoss;
import com.garbagemule.MobArena.waves.ability.*;
@AbilityInfo(
name = "Living Bomb",
aliases = {"livingbomb"}
)
public class LivingBomb implements Ability
{
/**
* How many ticks before the bomb goes off.
*/
private final int FUSE = 60;
/**
* How close players must be to be affected by the bomb.
*/
private final int RADIUS = 3;
/**
* How many ticks players affected by the bomb should burn.
*/
private final int AFTERBURN = 40;
@Override
public void execute(final Arena arena, MABoss boss) {
// Grab the target, or a random player.
LivingEntity target = AbilityUtils.getTarget(arena, boss.getEntity(), true);
// We only want players.
if (target == null || !(target instanceof Player))
return;
final Player p = (Player) target;
p.setFireTicks(FUSE + 5);
// Create an explosion after 4 seconds
arena.scheduleTask(new Runnable() {
public void run() {
// If the player died, or if they put out the fire.
if (!arena.isRunning() || !arena.inArena(p) || p.getFireTicks() <= 0) {
return;
}
// Explode!
arena.getWorld().createExplosion(p.getLocation(), 1F);
// And set every nearby player on fire!
for (Player nearby : AbilityUtils.getNearbyPlayers(arena, p, RADIUS)) {
nearby.setFireTicks(AFTERBURN);
}
}
}, FUSE);
}
}