Changes to Sneaky Assassin power-ups, including addition of compass power-up.
This commit is contained in:
parent
9e047847c2
commit
16353c4bc9
@ -185,11 +185,11 @@ public class SneakyAssassins extends SoloGame
|
|||||||
{
|
{
|
||||||
if (team.IsAlive(player))
|
if (team.IsAlive(player))
|
||||||
{
|
{
|
||||||
Scoreboard.WriteOrdered("Powerups", C.cGreen + player.getName(), 0, true);
|
Scoreboard.WriteOrdered("Powerups", C.cGreen + player.getName(), getPowerUpManager().getPowerUpCount(player), true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Scoreboard.WriteOrdered("Powerups", C.cGray + player.getName(), 0, true);
|
Scoreboard.WriteOrdered("Powerups", C.cGray + player.getName(), getPowerUpManager().getPowerUpCount(player), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -197,7 +197,7 @@ public class SneakyAssassins extends SoloGame
|
|||||||
{
|
{
|
||||||
for (Player player : team.GetPlayers(true))
|
for (Player player : team.GetPlayers(true))
|
||||||
{
|
{
|
||||||
Scoreboard.WriteOrdered("Powerups", C.cGreen + player.getName(), 0, true);
|
Scoreboard.WriteOrdered("Powerups", C.cGreen + player.getName(), getPowerUpManager().getPowerUpCount(player), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -43,12 +43,7 @@ public class ArmorPowerUp extends PowerUp
|
|||||||
boolean powerUp1 = powerUpArmor(player, random);
|
boolean powerUp1 = powerUpArmor(player, random);
|
||||||
boolean powerUp2 = powerUpArmor(player, random);
|
boolean powerUp2 = powerUpArmor(player, random);
|
||||||
|
|
||||||
if (powerUp1 || powerUp2)
|
return powerUp1 || powerUp2;
|
||||||
UtilPlayer.message(player, F.main("Power-Up", "Your " + F.item("Armor") + " was upgraded."));
|
|
||||||
else
|
|
||||||
UtilPlayer.message(player, F.main("Power-Up", "Your " + F.item("Armor") + " is already fully upgraded!"));
|
|
||||||
|
|
||||||
return super.powerUpPlayer(player, random);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean powerUpArmor(Player player, Random random)
|
public static boolean powerUpArmor(Player player, Random random)
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
||||||
|
|
||||||
|
import org.bukkit.*;
|
||||||
|
import org.bukkit.entity.*;
|
||||||
|
import org.bukkit.inventory.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class CompassPowerUp extends PowerUp
|
||||||
|
{
|
||||||
|
protected CompassPowerUp()
|
||||||
|
{
|
||||||
|
super(PowerUpType.COMPASS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean powerUpPlayer(Player player, Random random)
|
||||||
|
{
|
||||||
|
if (player.getInventory().contains(Material.COMPASS))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
player.getInventory().addItem(new ItemStack(Material.COMPASS));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -15,17 +15,10 @@ public abstract class PowerUp
|
|||||||
_powerUpType = powerUpType;
|
_powerUpType = powerUpType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean powerUpPlayer(Player player, Random random)
|
|
||||||
{
|
|
||||||
player.playSound(player.getEyeLocation(), Sound.LEVEL_UP, 2f, 0.8f);
|
|
||||||
|
|
||||||
player.getInventory().addItem(SneakyAssassinKit.SMOKE_BOMB.clone());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PowerUpType getPowerUpType()
|
public PowerUpType getPowerUpType()
|
||||||
{
|
{
|
||||||
return _powerUpType;
|
return _powerUpType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract boolean powerUpPlayer(Player player, Random random);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ public class PowerUpManager implements Listener
|
|||||||
private final List<PowerUpItem> _powerUps = new ArrayList<>();
|
private final List<PowerUpItem> _powerUps = new ArrayList<>();
|
||||||
private Location _lastLocation = null;
|
private Location _lastLocation = null;
|
||||||
private int _nextSpawnCountdown = -1;
|
private int _nextSpawnCountdown = -1;
|
||||||
private final Map<UUID, PowerUpType> _lastPowerUpType = new HashMap<>();
|
private final Map<UUID, Integer> _powerUpCount = new HashMap<>();
|
||||||
|
|
||||||
public PowerUpManager(Game game, Random random, List<Location> spawnLocations)
|
public PowerUpManager(Game game, Random random, List<Location> spawnLocations)
|
||||||
{
|
{
|
||||||
@ -148,30 +148,84 @@ public class PowerUpManager implements Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerPickUpPowerUp(final PlayerPickupItemEvent event)
|
public void onPlayerPickUpPowerUp(PlayerPickupItemEvent event)
|
||||||
{
|
{
|
||||||
if (getGame().IsPlaying(event.getPlayer()))
|
if (!getGame().IsPlaying(event.getPlayer()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
PowerUpItem powerUp = getPowerUpByItem(event.getItem());
|
||||||
|
if (powerUp == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
|
||||||
|
powerUp.remove();
|
||||||
|
|
||||||
|
int count = incrementPowerUpCount(event.getPlayer());
|
||||||
|
|
||||||
|
if (PowerUpType.SMOKE_BOMB.powerUpPlayer(event.getPlayer(), getRandom()))
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Power-Up", "+1 " + F.item("Smoke Bomb")));
|
||||||
|
|
||||||
|
if (count < 5)
|
||||||
{
|
{
|
||||||
final PowerUpItem powerUp = getPowerUpByItem(event.getItem());
|
PowerUpType.WEAPON.powerUpPlayer(event.getPlayer(), getRandom());
|
||||||
|
PowerUpType.ARMOR.powerUpPlayer(event.getPlayer(), getRandom());
|
||||||
|
|
||||||
if (powerUp != null)
|
UtilPlayer.message(event.getPlayer(), F.main("Power-Up", "Your " + F.item("Sword") + " and " + F.item("Armor") + " have been upgraded"));
|
||||||
|
}
|
||||||
|
else if (count == 5)
|
||||||
|
{
|
||||||
|
PowerUpType.COMPASS.powerUpPlayer(event.getPlayer(), getRandom());
|
||||||
|
|
||||||
|
UtilPlayer.message(event.getPlayer(), F.main("Power-Up", "You now have a " + F.item("Compass") + " for tracking players"));
|
||||||
|
|
||||||
|
getGame().Announce(F.name(event.getPlayer().getName()) + " has become a " + F.skill("Master Assassin"));
|
||||||
|
}
|
||||||
|
|
||||||
|
schedulePowerUpSpawn(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onUpdateCompass(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.SEC)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (getGame().GetState() != GameState.Live)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Player[] players = Bukkit.getOnlinePlayers();
|
||||||
|
|
||||||
|
for (Player player : players)
|
||||||
|
{
|
||||||
|
if (!getGame().IsPlaying(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (player.getInventory().contains(Material.COMPASS))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Player closest = null;
|
||||||
|
double minDistanceSquared = Double.NaN;
|
||||||
|
|
||||||
|
for (Player other : players)
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
if (other == player)
|
||||||
|
continue;
|
||||||
|
|
||||||
PowerUpType lastType = _lastPowerUpType.get(event.getPlayer().getUniqueId());
|
if (!getGame().IsPlaying(other))
|
||||||
if (lastType == null)
|
continue;
|
||||||
lastType = UtilAlg.Random(Arrays.asList(PowerUpType.values()));
|
|
||||||
|
|
||||||
int nextIndex = (Arrays.asList(PowerUpType.values()).indexOf(lastType) + 1) % PowerUpType.values().length;
|
double distanceSquared = player.getLocation().distanceSquared(other.getLocation());
|
||||||
|
|
||||||
PowerUp pu = PowerUpType.values()[nextIndex].getPowerUp();
|
if (closest == null || distanceSquared < minDistanceSquared)
|
||||||
pu.powerUpPlayer(event.getPlayer(), getRandom());
|
{
|
||||||
powerUp.remove();
|
closest = other;
|
||||||
|
minDistanceSquared = distanceSquared;
|
||||||
_lastPowerUpType.put(event.getPlayer().getUniqueId(), pu.getPowerUpType());
|
}
|
||||||
|
|
||||||
schedulePowerUpSpawn(10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (closest != null)
|
||||||
|
player.setCompassTarget(closest.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,4 +242,20 @@ public class PowerUpManager implements Listener
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPowerUpCount(Player player)
|
||||||
|
{
|
||||||
|
Integer count = _powerUpCount.get(player.getUniqueId());
|
||||||
|
|
||||||
|
return count == null ? 0 : count;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int incrementPowerUpCount(Player player)
|
||||||
|
{
|
||||||
|
int count = getPowerUpCount(player) + 1;
|
||||||
|
|
||||||
|
_powerUpCount.put(player.getUniqueId(), count);
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,48 +1,26 @@
|
|||||||
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
||||||
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
|
import org.bukkit.entity.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public enum PowerUpType
|
public enum PowerUpType
|
||||||
{
|
{
|
||||||
WEAPON(Material.DIAMOND_SWORD, DyeColor.RED),
|
WEAPON(new WeaponPowerUp()),
|
||||||
ARMOR(Material.IRON_CHESTPLATE, DyeColor.BLUE);
|
ARMOR(new ArmorPowerUp()),
|
||||||
|
SMOKE_BOMB(new SmokeBombPowerUp()),
|
||||||
|
COMPASS(new CompassPowerUp());
|
||||||
|
|
||||||
private final Material _itemType;
|
private final PowerUp _powerUp;
|
||||||
private final DyeColor _color;
|
|
||||||
|
|
||||||
PowerUpType(Material type, DyeColor color)
|
PowerUpType(PowerUp powerUp)
|
||||||
{
|
{
|
||||||
_itemType = type;
|
_powerUp = powerUp;
|
||||||
_color = color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material getItemType()
|
public boolean powerUpPlayer(Player player, Random random)
|
||||||
{
|
{
|
||||||
return _itemType;
|
return _powerUp.powerUpPlayer(player, random);
|
||||||
}
|
|
||||||
|
|
||||||
public Color getColor()
|
|
||||||
{
|
|
||||||
return getDyeColor().getColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public DyeColor getDyeColor()
|
|
||||||
{
|
|
||||||
return _color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PowerUp getPowerUp()
|
|
||||||
{
|
|
||||||
switch (this)
|
|
||||||
{
|
|
||||||
case WEAPON:
|
|
||||||
return new WeaponPowerUp();
|
|
||||||
|
|
||||||
case ARMOR:
|
|
||||||
return new ArmorPowerUp();
|
|
||||||
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
||||||
|
|
||||||
|
import nautilus.game.arcade.game.games.sneakyassassins.kits.*;
|
||||||
|
import org.bukkit.entity.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class SmokeBombPowerUp extends PowerUp
|
||||||
|
{
|
||||||
|
protected SmokeBombPowerUp()
|
||||||
|
{
|
||||||
|
super(PowerUpType.SMOKE_BOMB);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean powerUpPlayer(Player player, Random random)
|
||||||
|
{
|
||||||
|
return player.getInventory().addItem(SneakyAssassinKit.SMOKE_BOMB.clone()).isEmpty();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
package nautilus.game.arcade.game.games.sneakyassassins.powerups;
|
||||||
|
|
||||||
import mineplex.core.common.util.*;
|
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.inventory.*;
|
import org.bukkit.inventory.*;
|
||||||
@ -37,15 +36,11 @@ public class WeaponPowerUp extends PowerUp
|
|||||||
{
|
{
|
||||||
player.getInventory().setItem(swordSlot, new ItemStack(SWORD_PROGRESSION.get(newSwordType)));
|
player.getInventory().setItem(swordSlot, new ItemStack(SWORD_PROGRESSION.get(newSwordType)));
|
||||||
|
|
||||||
UtilPlayer.message(player, F.main("Power-Up", "Your " + F.item("Sword") + " was upgraded."));
|
return true;
|
||||||
|
|
||||||
return super.powerUpPlayer(player, random);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UtilPlayer.message(player, F.main("Power-Up", "Your " + F.item("Sword") + " is already fully upgraded!"));
|
return false;
|
||||||
|
|
||||||
return super.powerUpPlayer(player, random);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user