diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java index 25b8b8fee..2bffb2d60 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/Quiver.java @@ -5,18 +5,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; - import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; @@ -32,12 +20,28 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.SoloGame; -import nautilus.game.arcade.game.games.quiver.kits.*; +import nautilus.game.arcade.game.games.quiver.kits.KitBrawler; +import nautilus.game.arcade.game.games.quiver.kits.KitEnchanter; +import nautilus.game.arcade.game.games.quiver.kits.KitLeaper; +import nautilus.game.arcade.game.games.quiver.kits.KitNinja; +import nautilus.game.arcade.game.games.quiver.kits.KitSlamShot; import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.stats.SharpShooterStatTracker; import nautilus.game.arcade.stats.WinWithoutBowStatTracker; import nautilus.game.arcade.stats.WinWithoutDyingStatTracker; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; + public class Quiver extends SoloGame { private ArrayList _ranks = new ArrayList(); @@ -56,7 +60,8 @@ public class Quiver extends SoloGame new KitLeaper(manager), new KitBrawler(manager), new KitEnchanter(manager), - new KitSlamShot(manager) + new KitSlamShot(manager), + new KitNinja(manager) }, new String[] @@ -75,6 +80,8 @@ public class Quiver extends SoloGame this.BlockBreakAllow.add(102); this.BlockBreakAllow.add(20); + this.DeathSpectateSecs = 2; + _scoreObj = Scoreboard.GetScoreboard().registerNewObjective("Kills", "dummy"); _scoreObj.setDisplaySlot(DisplaySlot.BELOW_NAME); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitNinja.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitNinja.java new file mode 100644 index 000000000..21636cee3 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitNinja.java @@ -0,0 +1,56 @@ +package nautilus.game.arcade.game.games.quiver.kits; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilServer; +import mineplex.core.itemstack.ItemBuilder; +import mineplex.core.itemstack.ItemStackFactory; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.game.Game.GameState; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.Perk; +import nautilus.game.arcade.kit.perks.PerkVanishing; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; + +public class KitNinja extends Kit +{ + public KitNinja(ArcadeManager manager) + { + super(manager, "Ninja", KitAvailability.Achievement, 0, new String[] + { + "You're a sneaky one, you!" + }, new Perk[] + { + new PerkVanishing() + }, EntityType.ZOMBIE, new ItemBuilder(Material.GOLD_SWORD).build()); + } + + @Override + public void GiveItems(Player player) + { + player.getInventory().addItem(new ItemBuilder(Material.GOLD_SWORD).setUnbreakable(true).build()); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW)); + + if (Manager.GetGame().GetState() == GameState.Live) + { + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)0, 1, F.item("Super Arrow"))); + + final Player fPlayer = player; + + UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + public void run() + { + UtilInv.Update(fPlayer); + } + }, 10); + } + } + + + +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitSlamShot.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitSlamShot.java index 6acd3aea3..543a7c58b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitSlamShot.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/quiver/kits/KitSlamShot.java @@ -21,9 +21,8 @@ public class KitSlamShot extends Kit { public KitSlamShot(ArcadeManager manager) { - super(manager, "Slam Shooter", KitAvailability.Achievement, - - new String[] + super(manager, "Slam Shooter", KitAvailability.Gem, + 5000, new String[] { "Gets 2 arrows for killing slammed players!" }, @@ -33,7 +32,7 @@ public class KitSlamShot extends Kit new PerkSeismicSlamOITQ() }, EntityType.ZOMBIE, - new ItemStack(Material.IRON_SPADE)); + new ItemStack(Material.DIAMOND_SPADE)); this.setAchievementRequirements(new Achievement[] { @@ -47,7 +46,7 @@ public class KitSlamShot extends Kit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE)); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SPADE)); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.BOW)); if (Manager.GetGame().GetState() == GameState.Live) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkVanishing.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkVanishing.java new file mode 100644 index 000000000..919f4ffdf --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkVanishing.java @@ -0,0 +1,107 @@ +package nautilus.game.arcade.kit.perks; + +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.kit.Perk; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +public class PerkVanishing extends Perk +{ + public PerkVanishing() + { + super("Vanishing Act", new String[] + { + "Become invisible for 2 seconds each kill.", + "Attacking with melee removes invisibility." + }); + } + + @EventHandler + public void kill(CombatDeathEvent event) + { + if (!Manager.GetGame().IsLive()) + return; + +// //If it's an arrow kill (OITQ) +// if (!event.GetLog().GetKiller().GetReason().toLowerCase().contains("instagib")) +// return; + + if (!event.GetLog().GetKiller().IsPlayer()) + return; + + Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); + + if (killer == null) + return; + + if (!Manager.IsAlive(killer)) + return; + + if (!Kit.HasKit(killer)) + return; + + Manager.GetCondition().Factory().Cloak("Vanishing Act", killer, null, 2, false, true); + + UtilParticle.PlayParticle(ParticleType.LARGE_EXPLODE, killer.getLocation().add(0, 1, 0), 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers()); + + killer.getWorld().playSound(killer.getLocation(), Sound.FIZZ, 1f, 2f); + } + + @EventHandler + public void remove(CustomDamageEvent event) + { + if (event.isCancelled()) + return; + + if (!Manager.GetGame().IsLive()) + return; + + //Arrow damage, ignore it! + if (event.GetDamage() > 10) + return; + + Player damager = event.GetDamagerPlayer(true); + + if (damager == null) + return; + + if (!Manager.IsAlive(damager)) + return; + + if (!Kit.HasKit(damager)) + return; + + Manager.GetCondition().EndCondition(damager, ConditionType.CLOAK, null); + } + +// @EventHandler +// public void remove(UpdateEvent event) +// { +// if (event.getType() != UpdateType.TICK) +// return; +// +// if (!Manager.GetGame().IsLive()) +// return; +// +// for (Player player : Manager.GetGame().GetPlayers(true)) +// { +// if (!Kit.HasKit(player)) +// continue; +// +// if (!UtilPlayer.isChargingBow(player)) +// continue; +// +// if (Manager.GetCondition().IsCloaked(player)) +// Manager.GetCondition().Clean(player); +// } +// } +}