From a52bd69558d0e87a76a089a761a3c0790a64cc12 Mon Sep 17 00:00:00 2001 From: Chiss Date: Sat, 26 Oct 2013 11:34:05 +1100 Subject: [PATCH 1/4] Witch SSM --- .../core/common/util/UtilParticle.java | 7 + .../arcade/game/games/smash/SuperSmash.java | 2 + .../game/games/smash/kits/KitBlaze.java | 2 +- .../game/games/smash/kits/KitWitch.java | 93 ++++++++ .../arcade/game/games/smash/kits/KitWolf.java | 2 +- .../game/arcade/kit/perks/PerkBatWave.java | 204 ++++++++++++++++++ .../game/arcade/kit/perks/PerkWitchBroom.java | 61 ++++++ .../arcade/kit/perks/PerkWitchPotion.java | 61 ++++++ 8 files changed, 430 insertions(+), 2 deletions(-) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchBroom.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java index 7bbcc0014..51d7186b0 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java @@ -2,6 +2,7 @@ package mineplex.core.common.util; import java.lang.reflect.Field; +import mineplex.core.common.util.UtilParticle.ParticleType; import net.minecraft.server.v1_6_R3.Packet63WorldParticles; import org.bukkit.Location; @@ -104,4 +105,10 @@ public class UtilParticle ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); } + + public static void PlayParticle(ParticleType type, Location location, float offsetX, float offsetY, float offsetZ, float speed, int count) + { + for (Player player : UtilServer.getPlayers()) + PlayParticle(player, type, location, offsetX, offsetY, offsetZ, speed, count); + } } \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java index 42b47fdf4..116cd9f67 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java @@ -47,6 +47,7 @@ public class SuperSmash extends SoloGame new Kit[] { + new KitWitch(manager), new KitSkeleton(manager), new KitGolem(manager), new KitSpider(manager), @@ -64,6 +65,7 @@ public class SuperSmash extends SoloGame //new KitWither(manager), new KitWolf(manager), + }, new String[] diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitBlaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitBlaze.java index 1638674a1..83f3924da 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitBlaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitBlaze.java @@ -27,7 +27,7 @@ public class KitBlaze extends SmashKit { public KitBlaze(ArcadeManager manager) { - super(manager, "Blaze", KitAvailability.Green, + super(manager, "Blaze", KitAvailability.Blue, new String[] { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java new file mode 100644 index 000000000..c0018f541 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java @@ -0,0 +1,93 @@ +package nautilus.game.arcade.game.games.smash.kits; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.disguise.disguises.DisguiseSkeleton; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.Perk; +import nautilus.game.arcade.kit.SmashKit; +import nautilus.game.arcade.kit.perks.*; + +public class KitWitch extends SmashKit +{ + public KitWitch(ArcadeManager manager) + { + super(manager, "Witch", KitAvailability.Blue, + + new String[] + { + }, + + new Perk[] + { + new PerkSmashStats(6, 1.5, 0.15, 5), + new PerkDoubleJump("Double Jump", 0.9, 0.9, false), + new PerkBatWave(), + new PerkWitchPotion() + + }, + EntityType.WITCH, + new ItemStack(Material.POTION)); + } + + @Override + public void GiveItems(Player player) + { + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, + C.cYellow + C.Bold + "Hold Block" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "", + new String[] + { + ChatColor.RESET + "", + })); + + + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, + C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bat Wave", + new String[] + { + ChatColor.RESET + "", + })); + + + player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE)); + player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS)); + player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS)); + + //Disguise + DisguiseSkeleton disguise = new DisguiseSkeleton(player); + disguise.SetName(C.cYellow + player.getName()); + disguise.SetCustomNameVisible(true); + Manager.GetDisguise().disguise(disguise); + } + + @EventHandler + public void Visuals(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTER) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (!HasKit(player)) + continue; + + for (Player other : UtilServer.getPlayers()) + { + UtilParticle.PlayParticle(other, ParticleType.WITCH_MAGIC, player.getLocation().add(0, 1, 0), 0.25f, 0.5f, 0.25f, 0, 2); + } + } + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWolf.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWolf.java index d93329ff7..f9bda5323 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWolf.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWolf.java @@ -22,7 +22,7 @@ public class KitWolf extends SmashKit { public KitWolf(ArcadeManager manager) { - super(manager, "Wolf", KitAvailability.Blue, + super(manager, "Wolf", KitAvailability.Green, new String[] { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java new file mode 100644 index 000000000..f5016f708 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java @@ -0,0 +1,204 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Bat; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.kit.Perk; + +public class PerkBatWave extends Perk +{ + private HashMap _active = new HashMap(); + private HashMap _velocity = new HashMap(); + private HashMap> _bats = new HashMap>(); + + public PerkBatWave() + { + super("Bat Wave", new String[] + { + C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Bat Wave" + }); + } + + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 8000, true)) + return; + + //Start + _velocity.put(player, player.getEyeLocation()); + _active.put(player, System.currentTimeMillis()); + + _bats.put(player, new ArrayList()); + + for (int i=0 ; i<16 ; i++) + { + Manager.GetGame().CreatureAllowOverride = true; + Bat bat = player.getWorld().spawn(player.getEyeLocation(), Bat.class); + _bats.get(player).add(bat); + //bat.setLeashHolder(player); + Manager.GetGame().CreatureAllowOverride = false; + } + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + } + + @EventHandler + public void Update(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player cur : UtilServer.getPlayers()) + { + if (!_active.containsKey(cur)) + continue; + + if (UtilTime.elapsed(_active.get(cur), 2000)) + { + Clear(cur); + continue; + } + + Location loc = _velocity.get(cur); + + //Vector batVec = new Vector(0,0,0); + //double batCount = 0; + + //Bat Movement + for (Bat bat : _bats.get(cur)) + { + if (!bat.isValid()) + continue; + + //batVec.add(bat.getLocation().toVector()); + //batCount++; + + Vector rand = new Vector((Math.random() - 0.5)/3, (Math.random() - 0.5)/3, (Math.random() - 0.5)/3); + bat.setVelocity(loc.getDirection().clone().multiply(0.5).add(rand)); + + for (Player other : Manager.GetGame().GetPlayers(true)) + { + if (other.equals(cur)) + continue; + + if (!Recharge.Instance.usable(other, "Hit by Bat")) + continue; + + if (UtilEnt.hitBox(bat.getLocation(), other, 2, null)) + { + //Damage Event + Manager.GetDamage().NewDamageEvent(other, cur, null, + DamageCause.CUSTOM, 2, true, true, false, + cur.getName(), GetName()); + + //Effect + bat.getWorld().playSound(bat.getLocation(), Sound.BAT_HURT, 1f, 1f); + UtilParticle.PlayParticle(ParticleType.LARGE_SMOKE, bat.getLocation(), 0, 0, 0, 0, 3); + + bat.remove(); + + //Recharge on hit + Recharge.Instance.useForce(other, "Hit by Bat", 200); + } + } + } + + //Player Pull + /* + batVec.multiply(1/batCount); + + Location batLoc = batVec.toLocation(cur.getWorld()); + + UtilAction.velocity(cur, UtilAlg.getTrajectory(cur.getLocation(), batLoc), 0.3, false, 0, 0, 10, false); + */ + } + } + + @EventHandler + public void PlayerQuit(PlayerQuitEvent event) + { + Clear(event.getPlayer()); + } + + @EventHandler + public void PlayerDeath(PlayerDeathEvent event) + { + Clear(event.getEntity()); + } + + public void Clear(Player player) + { + _active.remove(player); + _velocity.remove(player); + if (_bats.containsKey(player)) + { + for (Bat bat : _bats.get(player)) + { + if (bat.isValid()) + UtilParticle.PlayParticle(ParticleType.LARGE_SMOKE, bat.getLocation(), 0, 0, 0, 0, 3); + + bat.remove(); + } + + + _bats.remove(player); + } + } + + @EventHandler + public void Knockback(CustomDamageEvent event) + { + if (event.GetReason() == null || !event.GetReason().contains(GetName())) + return; + + event.AddKnockback(GetName(), 1); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchBroom.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchBroom.java new file mode 100644 index 000000000..0c890606b --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchBroom.java @@ -0,0 +1,61 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.HashMap; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.recharge.Recharge; + +import nautilus.game.arcade.kit.Perk; + +public class PerkWitchBroom extends Perk +{ + private HashMap _active = new HashMap(); + + public PerkWitchBroom() + { + super("Broomstick", new String[] + { + C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Broomstick" + }); + } + + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 8000, true)) + return; + + //Start + _active.put(player, System.currentTimeMillis()); + + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java new file mode 100644 index 000000000..088e2f377 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java @@ -0,0 +1,61 @@ +package nautilus.game.arcade.kit.perks; + +import java.util.HashMap; + +import org.bukkit.entity.Player; +import org.bukkit.entity.ThrownPotion; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.recharge.Recharge; + +import nautilus.game.arcade.kit.Perk; + +public class PerkWitchPotion extends Perk +{ + public PerkWitchPotion() + { + super("Throw Potion", new String[] + { + C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Throw Potion" + }); + } + + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.isCancelled()) + return; + + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE")) + return; + + Player player = event.getPlayer(); + + if (!Kit.HasKit(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 2000, true)) + return; + + //Start + ThrownPotion potion = player.launchProjectile(ThrownPotion.class); + UtilAction.velocity(potion, player.getLocation().getDirection(), 1.2, false, 0, 0.2, 10, false); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + } +} From 723b57cd46b7a2d537df28007f20196734e6ec5e Mon Sep 17 00:00:00 2001 From: Chiss Date: Sat, 26 Oct 2013 19:01:26 +1100 Subject: [PATCH 2/4] Added paintball gun Gadget Added bat blaster Gadget Halloween Game near-completed Added SSM Witch --- .../src/mineplex/hub/HubManager.java | 77 +++------- .../mineplex/hub/gadget/GadgetManager.java | 5 + .../gadget/gadgets/Halloween2013_BatGun.java | 140 ++++++++++++++++-- .../gadget/gadgets/Halloween2013_Helmet.java | 29 ++-- .../hub/gadget/gadgets/PaintballGun.java | 113 ++++++++++++++ .../hub/gadget/types/ArmorGadget.java | 4 +- .../src/mineplex/hub/gadget/types/Gadget.java | 9 +- .../mineplex/hub/gadget/types/ItemGadget.java | 8 +- .../src/mineplex/hub/modules/NewsManager.java | 8 +- .../mineplex/hub/modules/StackerManager.java | 36 +---- .../src/mineplex/hub/mount/Mount.java | 9 +- .../src/mineplex/hub/mount/types/Mule.java | 6 +- .../src/mineplex/hub/mount/types/Undead.java | 16 +- .../mineplex/hub/server/ServerManager.java | 2 +- .../game/games/bridge/kits/KitArcher.java | 2 +- .../castlesiege/kits/KitHumanMarksman.java | 2 +- .../games/evolution/mobs/KitSkeleton.java | 2 +- .../game/games/halloween/Halloween.java | 50 ++++++- .../games/halloween/creatures/MobCreeper.java | 4 +- .../games/halloween/creatures/MobGhast.java | 41 ++++- .../games/halloween/creatures/MobGiant.java | 8 +- .../halloween/creatures/MobPigZombie.java | 8 +- .../creatures/MobSkeletonArcher.java | 3 +- .../creatures/MobSkeletonWarrior.java | 16 +- .../halloween/creatures/MobSpiderLeaper.java | 2 +- .../halloween/creatures/MobSpiderWebber.java | 1 + .../games/halloween/creatures/MobZombie.java | 4 +- .../halloween/creatures/PumpkinKing.java | 104 ++++++++++--- .../game/games/halloween/kits/KitFinn.java | 2 +- .../games/halloween/kits/KitRobinHood.java | 4 +- .../game/games/halloween/kits/KitThor.java | 17 ++- .../game/games/halloween/waves/Wave1.java | 3 + .../game/games/halloween/waves/Wave2.java | 3 + .../game/games/halloween/waves/Wave3.java | 3 + .../game/games/halloween/waves/Wave4.java | 17 ++- .../game/games/halloween/waves/Wave5.java | 30 +++- .../game/games/halloween/waves/Wave6.java | 35 ----- .../game/games/halloween/waves/Wave7.java | 35 ----- .../game/games/halloween/waves/WaveBoss.java | 16 +- .../game/games/hungergames/kit/KitArcher.java | 2 +- .../game/games/smash/kits/KitSkeleton.java | 2 +- .../game/games/smash/kits/KitWitch.java | 33 +++-- .../games/turfforts/kits/KitShredder.java | 2 +- .../kits/KitSurvivorArcher.java | 2 +- .../game/arcade/kit/perks/PerkBarrage.java | 37 ++++- .../game/arcade/kit/perks/PerkBatWave.java | 122 ++++++++++----- .../arcade/kit/perks/PerkBlizzardFinn.java | 2 +- .../arcade/kit/perks/PerkInfernoFinn.java | 2 +- .../kit/perks/PerkQuickshotRobinHood.java | 3 + .../arcade/kit/perks/PerkWitchPotion.java | 70 ++++++++- .../game/arcade/kit/perks/PerkWolf.java | 2 +- .../game/arcade/managers/GameManager.java | 35 +++++ 52 files changed, 848 insertions(+), 340 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave6.java delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave7.java diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index ee3098e82..c85738ffd 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -1,12 +1,5 @@ package mineplex.hub; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.InputStreamReader; import java.util.HashMap; import org.bukkit.Bukkit; @@ -46,6 +39,7 @@ import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilWorld; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.disguise.DisguiseManager; @@ -86,12 +80,10 @@ public class HubManager extends MiniClientPlugin private HashMap _scoreboards = new HashMap(); private String _pigStacker = "0 - Nobody"; - - public String DragonTextA = "Mineplex"; - public String DragonTextB = ""; private boolean _shuttingDown; + private HashMap _portalTime = new HashMap(); public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager) { @@ -121,50 +113,6 @@ public class HubManager extends MiniClientPlugin _partyManager = partyManager; _tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator); _visibilityManager = new VisibilityManager(this); - - DragonTextB = GetDragonText(); - } - - public String GetDragonText() - { - File file = new File("DragonText.dat"); - - //Write If Blank - if (!file.exists()) - { - try - { - FileWriter fstream = new FileWriter(file); - BufferedWriter out = new BufferedWriter(fstream); - - out.write("Home of Premium Game Modes"); - - out.close(); - } - catch (Exception e) - { - System.out.println("Error: Game World GetId Write Exception"); - } - } - - String line = "Home of Premium Game Modes"; - - //Read - try - { - FileInputStream fstream = new FileInputStream(file); - DataInputStream in = new DataInputStream(fstream); - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - line = br.readLine(); - - in.close(); - } - catch (Exception e) - { - System.out.println("Error: Game World GetId Read Exception"); - } - - return line; } @EventHandler(priority = EventPriority.HIGHEST) @@ -322,6 +270,8 @@ public class HubManager extends MiniClientPlugin player.getScoreboard().resetScores(event.getPlayer()); _scoreboards.remove(event.getPlayer()); + + _portalTime.remove(event.getPlayer().getName()); } @EventHandler @@ -631,4 +581,23 @@ public class HubManager extends MiniClientPlugin } } } + + public void SetPortalDelay(Entity ent) + { + if (ent instanceof Player) + _portalTime.put(((Player)ent).getName(), System.currentTimeMillis()); + } + + public boolean CanPortal(Player player) + { + //Riding + if (player.getVehicle() != null || player.getPassenger() != null) + return false; + + //Portal Delay + if (!_portalTime.containsKey(player.getName())) + return true; + + return UtilTime.elapsed(_portalTime.get(player.getName()), 5000); + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java index 7ae6ccaaf..6e14ecfac 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/GadgetManager.java @@ -8,6 +8,7 @@ import mineplex.core.MiniPlugin; import mineplex.hub.HubManager; import mineplex.hub.gadget.gadgets.Halloween2013_BatGun; import mineplex.hub.gadget.gadgets.Halloween2013_Helmet; +import mineplex.hub.gadget.gadgets.PaintballGun; import mineplex.hub.gadget.types.ArmorGadget; import mineplex.hub.gadget.types.ArmorGadget.ArmorSlot; import mineplex.hub.gadget.types.Gadget; @@ -32,6 +33,10 @@ public class GadgetManager extends MiniPlugin { _gadgets = new HashSet(); + //Items + _gadgets.add(new PaintballGun(this)); + + //Halloween 2013 _gadgets.add(new Halloween2013_BatGun(this)); _gadgets.add(new Halloween2013_Helmet(this)); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_BatGun.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_BatGun.java index 280181d1c..8f28efbae 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_BatGun.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_BatGun.java @@ -1,5 +1,9 @@ package mineplex.hub.gadget.gadgets; +import java.util.ArrayList; +import java.util.HashMap; + +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Bat; @@ -7,16 +11,40 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.util.Vector; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.gadget.GadgetManager; import mineplex.hub.gadget.types.ItemGadget; public class Halloween2013_BatGun extends ItemGadget { + private HashMap _active = new HashMap(); + private HashMap _velocity = new HashMap(); + private HashMap> _bats = new HashMap>(); + public Halloween2013_BatGun(GadgetManager manager) { - super(manager, "Halloween2013_BatGun", "Bat Gun", Material.COAL_BLOCK, (byte)0); + super(manager, "Gadget_Halloween2013_BatGun", "Bat Blaster", new String[] + { + C.cWhite + "Launch waves of annoying bats", + C.cWhite + "at people you don't like!", + }, + Material.IRON_BARDING, (byte)0); } @Override @@ -29,29 +57,115 @@ public class Halloween2013_BatGun extends ItemGadget public void Disable(Player player) { this.RemoveItem(player); + + Clear(player); } @EventHandler - public void ItemUse(PlayerInteractEvent event) + public void Activate(PlayerInteractEvent event) { - if (event.getAction() == Action.PHYSICAL) + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) return; + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.IRON_BARDING)) + return; + Player player = event.getPlayer(); - + if (!IsActive(player)) return; - if (!Recharge.Instance.use(player, GetName(), 10000, true)) + if (!Recharge.Instance.use(player, GetName(), 8000, true)) return; - - for (int i=0 ; i<10 ; i++) - { - Bat bat = player.getWorld().spawn(player.getEyeLocation(), Bat.class); - bat.setVelocity(player.getLocation().getDirection().multiply(2)); - } - player.getWorld().playSound(player.getLocation(), Sound.BAT_TAKEOFF, 2f, 1f); - player.getWorld().playSound(player.getLocation(), Sound.BAT_HURT, 2f, 1f); + //Start + _velocity.put(player, player.getEyeLocation()); + _active.put(player, System.currentTimeMillis()); + + _bats.put(player, new ArrayList()); + + for (int i=0 ; i<16 ; i++) + _bats.get(player).add(player.getWorld().spawn(player.getEyeLocation(), Bat.class)); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + } + + @EventHandler + public void Update(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player cur : UtilServer.getPlayers()) + { + if (!_active.containsKey(cur)) + continue; + + if (UtilTime.elapsed(_active.get(cur), 3000)) + { + Clear(cur); + continue; + } + + Location loc = _velocity.get(cur); + + //Bat Movement + for (Bat bat : _bats.get(cur)) + { + if (!bat.isValid()) + continue; + Vector rand = new Vector((Math.random() - 0.5)/3, (Math.random() - 0.5)/3, (Math.random() - 0.5)/3); + bat.setVelocity(loc.getDirection().clone().multiply(0.5).add(rand)); + + for (Player other : UtilServer.getPlayers()) + { + if (other.equals(cur)) + continue; + + if (!Recharge.Instance.usable(other, "Hit by Bat")) + continue; + + if (UtilEnt.hitBox(bat.getLocation(), other, 2, null)) + { + //Damage Event + UtilAction.velocity(other, UtilAlg.getTrajectory(cur, other), 0.4, false, 0, 0.2, 10, true); + + //Effect + bat.getWorld().playSound(bat.getLocation(), Sound.BAT_HURT, 1f, 1f); + UtilParticle.PlayParticle(ParticleType.LARGE_SMOKE, bat.getLocation(), 0, 0, 0, 0, 3); + + bat.remove(); + + //Recharge on hit + Recharge.Instance.useForce(other, "Hit by Bat", 200); + + //No Portal + Manager.Manager.SetPortalDelay(other); + } + } + } + } + } + + public void Clear(Player player) + { + _active.remove(player); + _velocity.remove(player); + if (_bats.containsKey(player)) + { + for (Bat bat : _bats.get(player)) + { + if (bat.isValid()) + UtilParticle.PlayParticle(ParticleType.LARGE_SMOKE, bat.getLocation(), 0, 0, 0, 0, 3); + + bat.remove(); + } + + _bats.remove(player); + } } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_Helmet.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_Helmet.java index b28470779..b565f9fd0 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_Helmet.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/Halloween2013_Helmet.java @@ -3,9 +3,8 @@ package mineplex.hub.gadget.gadgets; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.entity.Skeleton.SkeletonType; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerDropItemEvent; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguiseSkeleton; import mineplex.hub.gadget.GadgetManager; @@ -15,21 +14,30 @@ public class Halloween2013_Helmet extends ArmorGadget { public Halloween2013_Helmet(GadgetManager manager) { - super(manager, "Halloween2013_Helmet", "Pumpkin Kings Head", ArmorSlot.Helmet, Material.PUMPKIN, (byte)0); + super(manager, "Gadget_Halloween2013_Helmet", "Pumpkin Kings Head", new String[] + { + C.cWhite + "Transforms the wearer into", + C.cWhite + "the dreaded Pumpkin King!", + "", + C.cYellow + "Earned by defeating the Pumpkin King", + C.cYellow + "in the 2013 Halloween Horror Event.", + }, + ArmorSlot.Helmet, Material.PUMPKIN, (byte)0); + } @Override public void Enable(final Player player) { this.ApplyArmor(player); - + DisguiseSkeleton disguise = new DisguiseSkeleton(player); disguise.showArmor(); disguise.SetName(player.getName()); disguise.SetCustomNameVisible(true); disguise.SetSkeletonType(SkeletonType.WITHER); Manager.Manager.GetDisguise().disguise(disguise); - + Manager.Manager.GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(Manager.Manager.GetPlugin(), new Runnable() { public void run() @@ -49,13 +57,6 @@ public class Halloween2013_Helmet extends ArmorGadget this.RemoveArmor(player); Manager.Manager.GetDisguise().undisguise(player); } - - @EventHandler - public void TOGGLE(PlayerDropItemEvent event) - { - if (!this.IsActive(event.getPlayer())) - Enable(event.getPlayer()); - else - Disable(event.getPlayer()); - } + + } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java new file mode 100644 index 000000000..34aa6dd5e --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/gadgets/PaintballGun.java @@ -0,0 +1,113 @@ +package mineplex.hub.gadget.gadgets; + +import java.util.HashSet; + +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.EnderPearl; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.recharge.Recharge; +import mineplex.hub.gadget.GadgetManager; +import mineplex.hub.gadget.types.ItemGadget; + +public class PaintballGun extends ItemGadget +{ + private HashSet _balls = new HashSet(); + + public PaintballGun(GadgetManager manager) + { + super(manager, "Gadget_PaintballGun", "Paintball Gun", new String[] + { + C.cWhite + "PEW PEW PEW PEW!", + }, + Material.GOLD_BARDING, (byte)0); + } + + @Override + public void Enable(Player player) + { + this.ApplyItem(player); + } + + @Override + public void Disable(Player player) + { + this.RemoveItem(player); + } + + @EventHandler + public void Shoot(PlayerInteractEvent event) + { + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (event.getPlayer().getItemInHand() == null) + return; + + if (event.getPlayer().getItemInHand().getType() != Material.GOLD_BARDING) + return; + + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + if (!Recharge.Instance.use(player, GetName(), 400, false)) + return; + + event.setCancelled(true); + + Projectile proj = player.launchProjectile(EnderPearl.class); + proj.setVelocity(proj.getVelocity().multiply(2)); + _balls.add(proj); + + //Sound + player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.2f); + } + + @EventHandler + public void Paint(ProjectileHitEvent event) + { + Location loc = event.getEntity().getLocation().add(event.getEntity().getVelocity()); + + byte color = 2; + double r = Math.random(); + if (r > 0.8) color = 4; + else if (r > 0.6) color = 5; + else if (r > 0.4) color = 9; + else if (r > 0.2) color = 14; + + for (Block block : UtilBlock.getInRadius(loc, 1.5d).keySet()) + { + if (!UtilBlock.solid(block)) + continue; + + Manager.Manager.GetBlockRestore().Add(block, 35, color, 4000); + } + + loc.getWorld().playEffect(loc, Effect.STEP_SOUND, 49); + } + + @EventHandler + public void Teleport(PlayerTeleportEvent event) + { + if (event.getCause() == TeleportCause.ENDER_PEARL) + event.setCancelled(true); + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ArmorGadget.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ArmorGadget.java index 4027d217a..706117fae 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ArmorGadget.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ArmorGadget.java @@ -22,9 +22,9 @@ public abstract class ArmorGadget extends Gadget private Material _material; private byte _data; - public ArmorGadget(GadgetManager manager, String code, String name, ArmorSlot slot, Material mat, byte data) + public ArmorGadget(GadgetManager manager, String code, String name, String[] desc, ArmorSlot slot, Material mat, byte data) { - super(manager, code, name); + super(manager, code, name, desc); _slot = slot; _material = mat; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/Gadget.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/Gadget.java index fda6fbcfc..a32b271a3 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/Gadget.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/Gadget.java @@ -19,13 +19,15 @@ public abstract class Gadget implements Listener private String _code; private String _name; + private String[] _desc; - public Gadget(GadgetManager manager, String code, String name) + public Gadget(GadgetManager manager, String code, String name, String[] desc) { Manager = manager; _code = code; _name = name; + _desc = desc; Manager.GetPlugin().getServer().getPluginManager().registerEvents(this, Manager.GetPlugin()); } @@ -35,6 +37,11 @@ public abstract class Gadget implements Listener return _name; } + public String[] GetDesc() + { + return _desc; + } + public String GetCode() { return _code; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java index 85d16b9b6..6180a1a45 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/gadget/types/ItemGadget.java @@ -16,9 +16,9 @@ public abstract class ItemGadget extends Gadget private Material _material; private byte _data; - public ItemGadget(GadgetManager manager, String code, String name, Material mat, byte data) + public ItemGadget(GadgetManager manager, String code, String name, String[] desc, Material mat, byte data) { - super(manager, code, name); + super(manager, code, name, desc); _material = mat; _data = data; @@ -38,7 +38,7 @@ public abstract class ItemGadget extends Gadget { Manager.RemoveItem(player); - player.getInventory().setItem(3, ItemStackFactory.Instance.CreateStack(_material, _data, 1, F.item(GetName()))); + player.getInventory().setItem(2, ItemStackFactory.Instance.CreateStack(_material, _data, 1, F.item(GetName()))); _active.add(player); @@ -47,7 +47,7 @@ public abstract class ItemGadget extends Gadget public void RemoveItem(Player player) { - player.getInventory().setItem(3, null); + player.getInventory().setItem(2, null); _active.remove(player); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java index b0194a71d..7de462809 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java @@ -33,10 +33,12 @@ public class NewsManager extends MiniPlugin { "New Game: " + C.cGold + C.Bold + "Halloween Horror" + ChatColor.RESET + "! Limited time!", "New Super Smash Mobs Kit: " + C.cYellow + C.Bold + "Witch" + ChatColor.RESET + "!", - "New Halloween Hub Items! Limited time to unlock!", - "New Hub Mount: " + C.cYellow + C.Bold + "Horse of Horror" + ChatColor.RESET + "!", + "Halloween Hub Items! Limited time to unlock!", + "Halloween Sale! " + C.cGreen + C.Bold + "50% OFF" + ChatColor.RESET + " everything!", + "New Hub Mount: " + C.cYellow + C.Bold + "Infernal Horror" + ChatColor.RESET + "!", "New Hub Gadget: " + C.cYellow + C.Bold + "Pumpkin Kings Head" + ChatColor.RESET + "!", - "New Hub Gadget: " + C.cYellow + C.Bold + "Bat Cannon" + ChatColor.RESET + "!", + "New Hub Gadget: " + C.cYellow + C.Bold + "Bat Blaster" + ChatColor.RESET + "!", + "Halloween Sale! " + C.cGreen + C.Bold + "50% OFF" + ChatColor.RESET + " everything!", }; } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java index 4e1259a8a..deeaa51a3 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java @@ -1,6 +1,5 @@ package mineplex.hub.modules; -import java.util.HashMap; import java.util.HashSet; import org.bukkit.GameMode; @@ -26,7 +25,6 @@ import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; @@ -44,7 +42,7 @@ public class StackerManager extends MiniPlugin implements IThrown private HashSet _disabled = new HashSet(); private HashSet _tempStackShift = new HashSet(); - private HashMap _portalTime = new HashMap(); + private int _slot = 7; @@ -97,7 +95,6 @@ public class StackerManager extends MiniPlugin implements IThrown { _disabled.remove(event.getPlayer()); _tempStackShift.remove(event.getPlayer()); - _portalTime.remove(event.getPlayer().getName()); } public boolean CanStack(LivingEntity ent) @@ -192,8 +189,8 @@ public class StackerManager extends MiniPlugin implements IThrown UtilPlayer.message(stackee, F.main("Stacker", "Push " + F.skill("Crouch") + " to escape!")); //Portal Delay - SetPortalDelay(stacker); - SetPortalDelay(stackee); + Manager.SetPortalDelay(stacker); + Manager.SetPortalDelay(stackee); event.setCancelled(true); } @@ -252,8 +249,8 @@ public class StackerManager extends MiniPlugin implements IThrown _projectileManager.AddThrow(throwee, thrower, this, -1, true, false, true, false, 2.4d); //Portal Delay - SetPortalDelay(thrower); - SetPortalDelay(throwee); + Manager.SetPortalDelay(thrower); + Manager.SetPortalDelay(throwee); } @Override @@ -272,7 +269,7 @@ public class StackerManager extends MiniPlugin implements IThrown while (rider != null) { //Portal Delay - SetPortalDelay(rider); + Manager.SetPortalDelay(rider); rider.leaveVehicle(); rider.setVelocity(new Vector(0.25 - Math.random()/2, Math.random()/2, 0.25 - Math.random()/2)); @@ -285,7 +282,7 @@ public class StackerManager extends MiniPlugin implements IThrown data.GetThrown().getWorld().playSound(data.GetThrown().getLocation(), Sound.HURT, 1f, 1f); //Portal Delay - SetPortalDelay(target); + Manager.SetPortalDelay(target); } @Override @@ -299,23 +296,4 @@ public class StackerManager extends MiniPlugin implements IThrown { } - - public void SetPortalDelay(Entity ent) - { - if (ent instanceof Player) - _portalTime.put(((Player)ent).getName(), System.currentTimeMillis()); - } - - public boolean CanPortal(Player player) - { - //Riding - if (player.getVehicle() != null || player.getPassenger() != null) - return false; - - //Portal Delay - if (!_portalTime.containsKey(player.getName())) - return true; - - return UtilTime.elapsed(_portalTime.get(player.getName()), 5000); - } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/Mount.java b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/Mount.java index addfbe181..d1b3d2b1f 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/Mount.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/Mount.java @@ -38,6 +38,7 @@ public class Mount implements Listener private String _code; private String _name; + private String[] _desc; private Color _color; private Style _style; @@ -45,12 +46,13 @@ public class Mount implements Listener private double _jump; private Material _armor; - public Mount(MountManager manager, String code, String name, Color color, Style style, Variant variant, double jump, Material armor) + public Mount(MountManager manager, String code, String name, String[] desc, Color color, Style style, Variant variant, double jump, Material armor) { Manager = manager; _code = code; _name = name; + _desc = desc; _color = color; _style = style; _variant = variant; @@ -65,6 +67,11 @@ public class Mount implements Listener return _name; } + public String[] GetDesc() + { + return _desc; + } + public String GetCode() { return _code; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Mule.java b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Mule.java index 292552369..baae64a44 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Mule.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Mule.java @@ -11,6 +11,10 @@ public class Mule extends Mount { public Mule(MountManager manager) { - super(manager, "MountMule", "Horse of Horror", Color.BLACK, Style.BLACK_DOTS, Variant.MULE, 1.0, null); + super(manager, "Mount_Mule", "Horse of Horror", new String[] + { + "Muley muley!" + }, + Color.BLACK, Style.BLACK_DOTS, Variant.MULE, 1.0, null); } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java index ec3e4b857..0d9542b9c 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerToggleSneakEvent; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -20,14 +21,13 @@ public class Undead extends Mount { public Undead(MountManager manager) { - super(manager, "MountHalloween2013", "Horse of Horror", Color.BLACK, Style.BLACK_DOTS, Variant.SKELETON_HORSE, 0.8, null); - } - - @EventHandler - public void Test(PlayerToggleSneakEvent event) - { - if (event.getPlayer().isSneaking()) - this.Enable(event.getPlayer()); + super(manager, "Mount_Halloween2013", "Infernal Horror", new String[] + { + C.cWhite + "The most ghastly horse in", + C.cWhite + "existance, from the pits of", + C.cWhite + "the Nether." + }, + Color.BLACK, Style.BLACK_DOTS, Variant.SKELETON_HORSE, 0.8, null); } @EventHandler diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java index 80d4bd9fe..89fa1e5ca 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java @@ -120,7 +120,7 @@ public class ServerManager extends MiniPlugin Player player = (Player)event.getEntity(); - if (!_stackerManager.CanPortal(player)) + if (!_hubManager.CanPortal(player)) { UtilAction.velocity(player, UtilAlg.getTrajectory(player.getLocation(), _hubManager.GetSpawn()), 1, true, 0.8, 0, 1, true); return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/kits/KitArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/kits/KitArcher.java index 25fbc3bcd..a07917d14 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/kits/KitArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/kits/KitArcher.java @@ -26,7 +26,7 @@ public class KitArcher extends Kit new Perk[] { new PerkFletcher(20, 3, true), - new PerkBarrage(5, 250, true), + new PerkBarrage(5, 250, true, false), }, EntityType.ZOMBIE, new ItemStack(Material.BOW)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/kits/KitHumanMarksman.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/kits/KitHumanMarksman.java index 5e6c8749a..ec22934d3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/kits/KitHumanMarksman.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/kits/KitHumanMarksman.java @@ -28,7 +28,7 @@ public class KitHumanMarksman extends Kit }, new Perk[] { - new PerkBarrage(5, 250, true), + new PerkBarrage(5, 250, true, false), new PerkFletcher(2, 4, false), }, EntityType.ZOMBIE, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitSkeleton.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitSkeleton.java index 55a9f24fa..6f9190f72 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitSkeleton.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/mobs/KitSkeleton.java @@ -31,7 +31,7 @@ public class KitSkeleton extends Kit new Perk[] { new PerkFletcher(3, 2, false), - new PerkBarrage(5, 250, true) + new PerkBarrage(5, 250, true, false) }, EntityType.SLIME, null); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java index b01aa1315..1f5979c56 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java @@ -1,19 +1,26 @@ package nautilus.game.arcade.game.games.halloween; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.Sound; +import org.bukkit.block.Block; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityBreakDoorEvent; import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.entity.ItemSpawnEvent; +import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilServer; import mineplex.core.updater.UpdateType; @@ -80,12 +87,11 @@ public class Halloween extends SoloGame _spawns.add(WorldData.GetDataLocs("BLUE")); _waves = new ArrayList(); - //_waves.add(new Wave1(this)); - //_waves.add(new Wave2(this)); - //_waves.add(new Wave3(this)); - //_waves.add(new Wave4(this)); + _waves.add(new Wave1(this)); + _waves.add(new Wave2(this)); + _waves.add(new Wave3(this)); + _waves.add(new Wave4(this)); _waves.add(new Wave5(this)); - //_waves.add(new Wave6(this)); _waves.add(new WaveBoss(this)); _waves.add(new WaveVictory(this)); } @@ -214,9 +220,37 @@ public class Halloween extends SoloGame } } - @EventHandler - public void Door(EntityBreakDoorEvent event) + @EventHandler(priority = EventPriority.LOWEST) + public void Explosion(EntityExplodeEvent event) { - System.out.println("Door Break"); + if (event.getEntity() instanceof Fireball) + { + event.blockList().clear(); + + Collection blocks = UtilBlock.getInRadius(event.getLocation(), 3.5d).keySet(); + + Iterator blockIterator = blocks.iterator(); + + while (blockIterator.hasNext()) + { + Block block = blockIterator.next(); + + if (block.getY() < 4) + blockIterator.remove(); + } + + Manager.GetExplosion().BlockExplosion(blocks, event.getLocation(), false); + } + } + + @EventHandler + public void ItemSpawn(ItemSpawnEvent event) + { + Material type = event.getEntity().getItemStack().getType(); + + if (type == Material.DIAMOND_AXE || type == Material.FIRE || type == Material.SNOW_BALL) + return; + + event.setCancelled(true); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobCreeper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobCreeper.java index cdd92b613..563e044c5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobCreeper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobCreeper.java @@ -25,7 +25,7 @@ public class MobCreeper extends CreatureBase @Override public void SpawnCustom(Creeper ent) { - + ent.setCustomName("Creeper"); } @Override @@ -43,7 +43,7 @@ public class MobCreeper extends CreatureBase @Override public void Update(UpdateEvent event) { - if (event.getType() != UpdateType.SEC) + if (event.getType() != UpdateType.SLOW) return; //New Target via Distance diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGhast.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGhast.java index fc5545a35..e89850e4f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGhast.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGhast.java @@ -1,7 +1,9 @@ package nautilus.game.arcade.game.games.halloween.creatures; +import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -11,9 +13,12 @@ import org.bukkit.Location; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftGhast; import org.bukkit.entity.Ghast; import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.util.Vector; public class MobGhast extends CreatureBase { + private Location _loc; + public MobGhast(Game game, Location loc) { super(game, null, Ghast.class, loc); @@ -22,7 +27,13 @@ public class MobGhast extends CreatureBase @Override public void SpawnCustom(Ghast ent) { - UtilEnt.Vegetate(ent); + //UtilEnt.Vegetate(ent); + _loc = ent.getLocation(); + + ent.setMaxHealth(80); + ent.setHealth(80); + + ent.setCustomName("Ghast"); } @Override @@ -40,16 +51,34 @@ public class MobGhast extends CreatureBase @Override public void Update(UpdateEvent event) { + /* + if (event.getType() == UpdateType.TICK) + Move(); + if (event.getType() == UpdateType.FAST) + Destroy(); + */ } + private void Destroy() + { + Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 0, 0), 8d).keySet(), GetEntity().getLocation(), true); + } + private void Move() { - if (GetTarget() == null) - SetTarget(GetPlayerTarget()); + SetTarget(GetPlayerTarget().add(0, 20, 0)); + + if (UtilMath.offset(GetEntity().getLocation(), GetTarget()) < 30) + return; + + Vector dir = UtilAlg.getTrajectory(GetEntity().getLocation(), GetTarget()); + + ((CraftGhast)GetEntity()).getHandle().setPositionRotation( + _loc.getX(), _loc.getY(), _loc.getZ(), + UtilAlg.GetYaw(dir), UtilAlg.GetPitch(dir)); + + _loc.add(dir.multiply(0.25)); - ((CraftGhast)GetEntity()).getHandle().i = GetTarget().getX(); - ((CraftGhast)GetEntity()).getHandle().j = GetTarget().getY(); - ((CraftGhast)GetEntity()).getHandle().bn = GetTarget().getZ(); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java index f174a82c5..ed7fb2ba5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java @@ -29,8 +29,10 @@ public class MobGiant extends CreatureBase { _tpLoc = ent.getLocation(); - ent.setMaxHealth(120); - ent.setHealth(120); + ent.setMaxHealth(300); + ent.setHealth(300); + + ent.setCustomName("Giant"); } @Override @@ -55,7 +57,7 @@ public class MobGiant extends CreatureBase if (event.getType() == UpdateType.TICK) Move(); - if (event.getType() == UpdateType.FASTER) + if (event.getType() == UpdateType.FAST) Destroy(); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobPigZombie.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobPigZombie.java index 7eb06f5e5..1e84d118e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobPigZombie.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobPigZombie.java @@ -30,6 +30,8 @@ public class MobPigZombie extends CreatureBase Host.Manager.GetDisguise().disguise(disguise); Host.Manager.GetCondition().Factory().Speed("Speed", ent, ent, 99999, 1, false, false, false); + + ent.setCustomName("Nether Zombie"); } @Override @@ -47,7 +49,7 @@ public class MobPigZombie extends CreatureBase @Override public void Update(UpdateEvent event) { - if (event.getType() == UpdateType.FAST) + if (event.getType() == UpdateType.SLOW) Move(); } @@ -83,11 +85,11 @@ public class MobPigZombie extends CreatureBase target.add(UtilAlg.getTrajectory(GetEntity().getLocation(), GetTarget()).multiply(12)); - nav.a(target.getX(), target.getY(), target.getZ(), 1.6f); + nav.a(target.getX(), target.getY(), target.getZ(), 1f); } else { - nav.a(GetTarget().getX(), GetTarget().getY(), GetTarget().getZ(), 1.2f); + nav.a(GetTarget().getX(), GetTarget().getY(), GetTarget().getZ(), 1f); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java index 160efa77d..095dbef2b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java @@ -28,6 +28,7 @@ public class MobSkeletonArcher extends CreatureBase public void SpawnCustom(Skeleton ent) { ent.getEquipment().setItemInHand(new ItemStack(Material.BOW)); + ent.setCustomName("Skeleton Archer"); } @Override @@ -45,7 +46,7 @@ public class MobSkeletonArcher extends CreatureBase @Override public void Update(UpdateEvent event) { - if (event.getType() != UpdateType.SEC) + if (event.getType() != UpdateType.SLOW) return; //New Target via Distance diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java index 30a5f36df..f9fb84308 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java @@ -3,6 +3,7 @@ package nautilus.game.arcade.game.games.halloween.creatures; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.disguises.DisguiseSpider; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -13,21 +14,24 @@ import net.minecraft.server.v1_6_R3.Navigation; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_6_R3.entity.CraftCreature; -import org.bukkit.entity.Skeleton; +import org.bukkit.entity.Zombie; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.inventory.ItemStack; -public class MobSkeletonWarrior extends CreatureBase +public class MobSkeletonWarrior extends CreatureBase { public MobSkeletonWarrior(Game game, Location loc) { - super(game, null, Skeleton.class, loc); + super(game, null, Zombie.class, loc); } @Override - public void SpawnCustom(Skeleton ent) + public void SpawnCustom(Zombie ent) { - ent.getEquipment().setItemInHand(new ItemStack(Material.WOOD_SWORD)); + DisguiseSpider spider = new DisguiseSpider(ent); + Host.Manager.GetDisguise().disguise(spider); + ent.setCustomName("Skeleton Warrior"); + ent.getEquipment().setItemInHand(new ItemStack(Material.WOOD_HOE)); } @Override @@ -45,7 +49,7 @@ public class MobSkeletonWarrior extends CreatureBase @Override public void Update(UpdateEvent event) { - if (event.getType() != UpdateType.FAST) + if (event.getType() != UpdateType.SLOW) return; //New Target via Distance diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java index dccbdac8e..ccf414444 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java @@ -27,7 +27,7 @@ public class MobSpiderLeaper extends CreatureBase @Override public void SpawnCustom(CaveSpider ent) { - + ent.setCustomName("Leaping Spider"); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java index f0a2fb579..03adaf9ae 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java @@ -30,6 +30,7 @@ public class MobSpiderWebber extends CreatureBase { DisguiseSpider spider = new DisguiseSpider(ent); Host.Manager.GetDisguise().disguise(spider); + ent.setCustomName("Smashing Spider"); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java index 11370ff77..aa5caef0d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java @@ -26,7 +26,7 @@ public class MobZombie extends CreatureBase public void SpawnCustom(Zombie ent) { Move(); - Host.Manager.GetCondition().Factory().Speed("Zombie", ent, ent, 99999, 0, false, false, false); + ent.setCustomName("Zombie"); } @Override @@ -38,7 +38,7 @@ public class MobZombie extends CreatureBase @Override public void Update(UpdateEvent event) { - if (event.getType() == UpdateType.SEC) + if (event.getType() == UpdateType.SLOW) Move(); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java index 9ea2ec6f8..93ff109da 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java @@ -14,9 +14,11 @@ import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilDisplay; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -25,7 +27,6 @@ import net.minecraft.server.v1_6_R3.EntityArrow; import net.minecraft.server.v1_6_R3.EntityCreature; import net.minecraft.server.v1_6_R3.Navigation; -import org.bukkit.ChatColor; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; @@ -94,6 +95,9 @@ public class PumpkinKing extends CreatureBase //Attacked King if (event.GetDamageeEntity().equals(GetEntity())) { + if (event.GetProjectile() != null) + event.GetProjectile().remove(); + if (_shields.size() > 0) { event.SetCancelled("Shielded"); @@ -113,6 +117,9 @@ public class PumpkinKing extends CreatureBase //Attacked Minion else if (_minions.contains(event.GetDamageeEntity())) { + if (event.GetProjectile() != null) + event.GetProjectile().remove(); + if (_shields.size() > 0) { event.SetCancelled("Shielded"); @@ -131,8 +138,11 @@ public class PumpkinKing extends CreatureBase if (event.GetCause() != DamageCause.PROJECTILE && event.GetCause() != DamageCause.LIGHTNING) return; - + event.GetProjectile().remove(); + + if (event.GetDamagerPlayer(true) == null) + return; //Effect Host.Manager.GetBlood().Effects(event.GetDamageeEntity().getLocation(), 10, 0.2, null, 0f, 0f, Material.FIRE, (byte)0, 10, false); @@ -345,7 +355,11 @@ public class PumpkinKing extends CreatureBase Location loc = GetEntity().getLocation().add(oX, oY, oZ); if (UtilMath.offset(loc, minion.getLocation()) > 16) - loc = minion.getLocation().add(UtilAlg.getTrajectory(minion.getLocation(), GetEntity().getLocation().add(oX, oY, oZ)).multiply(16)); + { + Host.Manager.GetBlood().Effects(minion.getLocation(), 10, 0.2, Sound.SKELETON_HURT, 1f, 1f, Material.BONE, (byte)0, 20, false); + minion.teleport(loc); + continue; + } //Move EntityCreature ec = ((CraftCreature)minion).getHandle(); @@ -381,9 +395,17 @@ public class PumpkinKing extends CreatureBase { Arrow arrow = arrowIterator.next(); + if (arrow.getLocation().getY() > 30 && arrow.getVelocity().getY() > 0) + { + Player target = Host.GetPlayers(true).get(UtilMath.r(Host.GetPlayers(true).size())); + arrow.teleport(target.getLocation().add(Math.random() * 8 - 4, Math.random() * 10 + 30, Math.random() * 8 - 4)); + arrow.setVelocity(arrow.getVelocity().setY(-0.1)); + continue; + } + if (arrow.getTicksLived() > 200 || arrow.isOnGround()) { - if (arrow.isValid() && Math.random() > 0.90) + if (arrow.isValid() && Math.random() > 0.50) { try { @@ -417,27 +439,46 @@ public class PumpkinKing extends CreatureBase } } - if (GetState() != 1) - return; - - for (int i=0 ; i<_minions.size() ; i++) + //Circle + if (GetState() == 1) { - Skeleton minion = _minions.get(i); + for (int i=0 ; i<_minions.size() ; i++) + { + Skeleton minion = _minions.get(i); - if (!minion.isValid()) - continue; + if (!minion.isValid()) + continue; - Vector traj = UtilAlg.getTrajectory2d(GetEntity(), minion); - traj.add(new Vector(0,Math.random()*0.2,0)); + Vector traj = UtilAlg.getTrajectory2d(GetEntity(), minion); + traj.add(new Vector(0,Math.random()*0.25,0)); - Arrow arrow = GetEntity().getWorld().spawnArrow(minion.getEyeLocation().add(traj), traj, 2f, 16f); - arrow.setShooter(minion); - - _arrows.add(arrow); + Arrow arrow = GetEntity().getWorld().spawnArrow(minion.getEyeLocation().add(traj), traj, 2f, 16f); + arrow.setShooter(minion); + + _arrows.add(arrow); + } + } + + //Up + else if (GetState() == 2) + { + for (int i=0 ; i<_minions.size() ; i++) + { + Skeleton minion = _minions.get(i); + + if (!minion.isValid()) + continue; + + Vector traj = new Vector(0,1,0); + + Arrow arrow = GetEntity().getWorld().spawnArrow(minion.getEyeLocation().add(traj), traj, 2f, 16f); + arrow.setShooter(minion); + + _arrows.add(arrow); + } } } - @EventHandler public void ShieldSpawn() { @@ -464,7 +505,18 @@ public class PumpkinKing extends CreatureBase int toSpawn = 1; if (_shields.size() == 0) + { toSpawn = _shieldsMax; + + //Sound + GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.WITHER_HURT, 10f, 1.5f); + } + else + { + //Sound + GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.WITHER_HURT, 1f, 2f); + } + for (int i=0 ; i for (int i=0 ; i<_shields.size() ; i++) { Slime shield = _shields.get(i); - shield.setFireTicks(10); + + UtilParticle.PlayParticle(ParticleType.FLAME, shield.getLocation(), 0.1f, 0.1f, 0.1f, 0, 1); double lead = i * ((2d * Math.PI)/_shields.size()); @@ -556,9 +609,10 @@ public class PumpkinKing extends CreatureBase { if (UtilTime.elapsed(_stateTime, 10000)) { - double r = Math.random(); - - SetState(1); + if (Math.random() > 0.5) + SetState(1); + else + SetState(2); } } //Outward Arrows @@ -616,7 +670,6 @@ public class PumpkinKing extends CreatureBase //Sound GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.WITHER_SPAWN, 10f, 1.5f); - GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.ZOMBIE_PIG_ANGRY, 10f, 0.5f); //Speed Host.Manager.GetCondition().Factory().Speed("King Speed", GetEntity(), GetEntity(), 9999, 1, false, false, false); @@ -670,4 +723,9 @@ public class PumpkinKing extends CreatureBase return Host.GetPlayers(true).get(UtilMath.r(Host.GetPlayers(true).size())); } + + public boolean IsFinal() + { + return _minions.size() == 0; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java index 1f9c5c482..e98dfd769 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java @@ -32,7 +32,7 @@ public class KitFinn extends SmashKit { new PerkInfernoFinn(), new PerkBlizzardFinn(), - new PerkFletcher(4, 4, false), + new PerkFletcher(3, 4, true), }, EntityType.ZOMBIE, new ItemStack(Material.GOLD_SWORD)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java index 42fc8b142..93baa130a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java @@ -32,8 +32,8 @@ public class KitRobinHood extends SmashKit { new PerkSpeed(1), new PerkRegeneration(0), - new PerkFletcher(1, 4, false), - new PerkBarrage(4, 250, false), + new PerkFletcher(1, 4, true), + new PerkBarrage(4, 250, true, true), new PerkQuickshotRobinHood() }, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java index 7f80731a9..4ba474973 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java @@ -10,6 +10,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; @@ -20,18 +21,18 @@ public class KitThor extends SmashKit { public KitThor(ArcadeManager manager) { - super(manager, "Thor Costume", KitAvailability.Free, + super(manager, "Thor", KitAvailability.Free, new String[] { - "Dress up as Thor, and smash those monsters!", + "Smash and kill with your Thor Hammer!", "", }, new Perk[] { new PerkKnockbackAttack(2), - new PerkFletcher(4, 4, false), + new PerkFletcher(3, 4, true), new PerkSeismicHammer(), new PerkHammerThrow(), }, @@ -85,4 +86,14 @@ public class KitThor extends SmashKit Manager.GetCondition().Factory().FireItemImmunity(GetName(), player, player, 1.9, false); } } + + @EventHandler + public void DamageBoost(CustomDamageEvent event) + { + Player damagee = event.GetDamageePlayer(); + if (damagee == null) return; + + if (HasKit(damagee)) + event.AddMod("Thor Boost", "Thor Boost", 4, false); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java index 72b89680d..91ecb67ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java @@ -19,6 +19,9 @@ public class Wave1 extends WaveBase if (UtilTime.elapsed(_start, 20000)) return; + if (Host.GetCreatures().size() > 60) + return; + if (tick % 10 == 0) Host.AddCreature(new MobZombie(Host, GetSpawn())); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java index 85af16c09..7866f3449 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java @@ -23,6 +23,9 @@ public class Wave2 extends WaveBase if (tick == 0) Host.AddCreature(new MobGiant(Host, GetSpawn())); + if (Host.GetCreatures().size() > 60) + return; + if (tick % 10 == 0) Host.AddCreature(new MobZombie(Host, GetSpawn())); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java index 36d002c0f..87c4fad7b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java @@ -18,6 +18,9 @@ public class Wave3 extends WaveBase if (UtilTime.elapsed(_start, 20000)) return; + if (Host.GetCreatures().size() > 60) + return; + if (tick % 10 == 0) Host.AddCreature(new MobSpiderWebber(Host, GetSpawn())); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java index db73a5126..a6d31191a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java @@ -1,5 +1,7 @@ package nautilus.game.arcade.game.games.halloween.waves; +import org.bukkit.Location; + import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.games.halloween.Halloween; import nautilus.game.arcade.game.games.halloween.creatures.MobGhast; @@ -9,7 +11,7 @@ public class Wave4 extends WaveBase { public Wave4(Halloween host) { - super(host, "Ghasts (and friends)", 60000, host.GetSpawnSet(3)); + super(host, "Ghasts (and friends!)", 60000, host.GetSpawnSet(3)); } @Override @@ -18,8 +20,17 @@ public class Wave4 extends WaveBase if (UtilTime.elapsed(_start, 20000)) return; - if (tick % 100 == 0) - Host.AddCreature(new MobGhast(Host, GetSpawn().clone().add(0, 30, 0))); + if (tick > 0 && tick % 100 == 0) + { + Location loc = GetSpawn(); + loc.setY(30 + 20 * Math.random()); + loc.setX(80 * Math.random() - 40); + loc.setZ(80 * Math.random() - 40); + Host.AddCreature(new MobGhast(Host, loc)); + } + + if (Host.GetCreatures().size() > 60) + return; if (tick % 20 == 0) Host.AddCreature(new MobPigZombie(Host, GetSpawn())); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java index 60cba1bb3..d93c2a0bb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java @@ -1,19 +1,15 @@ package nautilus.game.arcade.game.games.halloween.waves; +import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.games.halloween.Halloween; -import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; -import nautilus.game.arcade.game.games.halloween.creatures.MobGhast; import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; -import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonArcher; -import nautilus.game.arcade.game.games.halloween.creatures.MobWitch; -import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; public class Wave5 extends WaveBase { public Wave5(Halloween host) { - super(host, "Witches and Wolves", 60000, host.GetSpawnSet(3)); + super(host, "Double the Giants! Double the fun!", 60000, host.GetSpawnSet(1)); } @Override @@ -22,7 +18,27 @@ public class Wave5 extends WaveBase if (UtilTime.elapsed(_start, 20000)) return; + this.SpawnBeacons(Host.GetSpawnSet(2)); + if (tick == 0) - Host.AddCreature(new MobGhast(Host, GetSpawn().clone().add(0, 40, 0))); + { + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); + } + + if (Host.GetCreatures().size() > 60) + return; + + if (tick % 20 == 0) + { + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); + } + + if (tick % 40 == 0) + { + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); + Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); + } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave6.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave6.java deleted file mode 100644 index 5b22b8e82..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave6.java +++ /dev/null @@ -1,35 +0,0 @@ -package nautilus.game.arcade.game.games.halloween.waves; - -import mineplex.core.common.util.UtilTime; -import nautilus.game.arcade.game.games.halloween.Halloween; -import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; -import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; -import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonArcher; -import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; - -public class Wave6 extends WaveBase -{ - public Wave6(Halloween host) - { - super(host, "Fiery Night", 60000, host.GetSpawnSet(3)); - } - - @Override - public void Spawn(int tick) - { - if (UtilTime.elapsed(_start, 20000)) - return; - - if (tick == 0) - Host.AddCreature(new MobGiant(Host, GetSpawn())); - - if (tick % 10 == 0) - Host.AddCreature(new MobZombie(Host, GetSpawn())); - - if (tick % 20 == 0) - Host.AddCreature(new MobSkeletonArcher(Host, GetSpawn())); - - if (tick % 30 == 0) - Host.AddCreature(new MobCreeper(Host, GetSpawn())); - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave7.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave7.java deleted file mode 100644 index 04eaf6aae..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave7.java +++ /dev/null @@ -1,35 +0,0 @@ -package nautilus.game.arcade.game.games.halloween.waves; - -import mineplex.core.common.util.UtilTime; -import nautilus.game.arcade.game.games.halloween.Halloween; -import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; -import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; -import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonArcher; -import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; - -public class Wave7 extends WaveBase -{ - public Wave7(Halloween host) - { - super(host, "Giants, Zombies, Witches and Ghasts...", 60000, host.GetSpawnSet(0)); - } - - @Override - public void Spawn(int tick) - { - if (UtilTime.elapsed(_start, 20000)) - return; - - if (tick == 0) - Host.AddCreature(new MobGiant(Host, GetSpawn())); - - if (tick % 10 == 0) - Host.AddCreature(new MobZombie(Host, GetSpawn())); - - if (tick % 20 == 0) - Host.AddCreature(new MobSkeletonArcher(Host, GetSpawn())); - - if (tick % 30 == 0) - Host.AddCreature(new MobCreeper(Host, GetSpawn())); - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/WaveBoss.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/WaveBoss.java index 83915b4f9..ef4a14811 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/WaveBoss.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/WaveBoss.java @@ -2,6 +2,7 @@ package nautilus.game.arcade.game.games.halloween.waves; import nautilus.game.arcade.game.games.halloween.Halloween; import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; +import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; import nautilus.game.arcade.game.games.halloween.creatures.PumpkinKing; @@ -11,7 +12,7 @@ public class WaveBoss extends WaveBase public WaveBoss(Halloween host) { - super(host, "The Pumpkin King", 0, host.GetSpawnSet(3)); + super(host, "The Pumpkin King", 0, host.GetSpawnSet(0)); } @Override @@ -22,15 +23,22 @@ public class WaveBoss extends WaveBase _king = new PumpkinKing(Host, Host.WorldData.GetDataLocs("BLACK").get(0)); Host.AddCreature(_king); } - - if (Host.GetCreatures().size() < 30) + + //Increasing difficulty of mobs + if (Host.GetCreatures().size() < 20 + (tick/300) && !_king.IsFinal()) { - if (tick % 30 == 0) + if (tick % Math.max(5, 20 - tick/600) == 0) if (Math.random() > 0.10) Host.AddCreature(new MobZombie(Host, Host.GetRandomSpawn())); else Host.AddCreature(new MobCreeper(Host, Host.GetRandomSpawn())); } + + //Giant every 2 minutes + if (tick % 2400 == 0 && !_king.IsFinal()) + { + Host.AddCreature(new MobGiant(Host, GetSpawn())); + } } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hungergames/kit/KitArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hungergames/kit/KitArcher.java index a1f1382c6..ff7c368b6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hungergames/kit/KitArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hungergames/kit/KitArcher.java @@ -25,7 +25,7 @@ public class KitArcher extends Kit new Perk[] { new PerkFletcher(20, 3, true), - new PerkBarrage(5, 250, true), + new PerkBarrage(5, 250, true, false), }, EntityType.ZOMBIE, new ItemStack(Material.BOW)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitSkeleton.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitSkeleton.java index 1dc608df1..6080f0e88 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitSkeleton.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitSkeleton.java @@ -40,7 +40,7 @@ public class KitSkeleton extends SmashKit new PerkKnockbackArrow(2), new PerkBoneExplosion(), new PerkRopedArrow("Roped Arrow", 1, 5000), - new PerkBarrage(5, 250, true), + new PerkBarrage(5, 250, true, false), }, EntityType.SKELETON, new ItemStack(Material.BOW)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java index c0018f541..fe2112384 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitch.java @@ -11,11 +11,12 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.disguise.disguises.DisguiseSkeleton; +import mineplex.core.disguise.disguises.DisguiseWitch; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.SmashKit; @@ -35,8 +36,9 @@ public class KitWitch extends SmashKit { new PerkSmashStats(6, 1.5, 0.15, 5), new PerkDoubleJump("Double Jump", 0.9, 0.9, false), + new PerkWitchPotion(), new PerkBatWave(), - new PerkWitchPotion() + }, EntityType.WITCH, @@ -46,28 +48,39 @@ public class KitWitch extends SmashKit @Override public void GiveItems(Player player) { - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SWORD, (byte)0, 1, - C.cYellow + C.Bold + "Hold Block" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "", + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, + C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Stun Potion", new String[] { - ChatColor.RESET + "", + ChatColor.RESET + "Throw a potion that damages and slows", + ChatColor.RESET + "anything it splashes onto!", })); - - - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1, + + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_SPADE, (byte)0, 1, C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bat Wave", new String[] { - ChatColor.RESET + "", + ChatColor.RESET + "Release a wave of bats which give", + ChatColor.RESET + "damage and knockback to anything they", + ChatColor.RESET + "collide with.", })); + if (Manager.GetGame().GetState() == GameState.Recruit) + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.LEASH, (byte)0, 1, + C.cYellow + C.Bold + "Double Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bat Leash", + new String[] + { + ChatColor.RESET + "Attach a rope to your wave of bats,", + ChatColor.RESET + "causing you to be pulled behind them!", + })); + player.getInventory().setChestplate(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE)); player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS)); player.getInventory().setBoots(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS)); //Disguise - DisguiseSkeleton disguise = new DisguiseSkeleton(player); + DisguiseWitch disguise = new DisguiseWitch(player); disguise.SetName(C.cYellow + player.getName()); disguise.SetCustomNameVisible(true); Manager.GetDisguise().disguise(disguise); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/turfforts/kits/KitShredder.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/turfforts/kits/KitShredder.java index bb18b66cf..6ae0077fb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/turfforts/kits/KitShredder.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/turfforts/kits/KitShredder.java @@ -27,7 +27,7 @@ public class KitShredder extends Kit { new PerkConstructor("Constructor", 4, 6, Material.WOOL, "Wool", false), new PerkFletcher(4, 2, false), - new PerkBarrage(5, 250, false), + new PerkBarrage(5, 250, false, false), }, EntityType.ZOMBIE, new ItemStack(Material.BOW)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/zombiesurvival/kits/KitSurvivorArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/zombiesurvival/kits/KitSurvivorArcher.java index 26026824a..9cd6f0afb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/zombiesurvival/kits/KitSurvivorArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/zombiesurvival/kits/KitSurvivorArcher.java @@ -27,7 +27,7 @@ public class KitSurvivorArcher extends Kit new Perk[] { new PerkFletcher(2, 8, true), - new PerkBarrage(5, 250, true) + new PerkBarrage(5, 250, true, false) }, EntityType.SKELETON, new ItemStack(Material.BOW)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java index d8685dd87..d3848560a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBarrage.java @@ -10,9 +10,11 @@ import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.util.Vector; @@ -23,6 +25,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.UpdateType; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.kit.Perk; public class PerkBarrage extends Perk @@ -36,8 +39,9 @@ public class PerkBarrage extends Perk private int _max; private long _tick; private boolean _remove; + private boolean _noDelay; - public PerkBarrage(int max, long tick, boolean remove) + public PerkBarrage(int max, long tick, boolean remove, boolean noDelay) { super("Barrage", new String[] { @@ -47,6 +51,7 @@ public class PerkBarrage extends Perk _max = max; _tick = tick; _remove = remove; + _noDelay = noDelay; } @EventHandler @@ -189,6 +194,36 @@ public class PerkBarrage extends Perk _firing.remove(cur); } } + + @EventHandler(priority = EventPriority.HIGH) + public void BarrageDamageTime(CustomDamageEvent event) + { + if (!_noDelay) + return; + + if (event.GetProjectile() == null) + return; + + if (event.GetDamagerPlayer(true) == null) + return; + + if (!(event.GetProjectile() instanceof Arrow)) + return; + + Player damager = event.GetDamagerPlayer(true); + + if (!Kit.HasKit(damager)) + return; + + event.SetCancelled("Barrage Cancel"); + + event.GetProjectile().remove(); + + //Damage Event + Manager.GetDamage().NewDamageEvent(event.GetDamageeEntity(), damager, null, + DamageCause.THORNS, event.GetDamage(), true, true, false, + damager.getName(), GetName()); + } @EventHandler public void BarrageProjectileHit(ProjectileHitEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java index f5016f708..cb54e389b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBatWave.java @@ -2,6 +2,7 @@ package nautilus.game.arcade.kit.perks; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import org.bukkit.Location; import org.bukkit.Sound; @@ -21,7 +22,6 @@ import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilPlayer; @@ -36,17 +36,32 @@ import nautilus.game.arcade.kit.Perk; public class PerkBatWave extends Perk { private HashMap _active = new HashMap(); - private HashMap _velocity = new HashMap(); + private HashMap _direction = new HashMap(); private HashMap> _bats = new HashMap>(); + private HashSet _pulling = new HashSet(); + private HashSet _allowLeash = new HashSet(); public PerkBatWave() { super("Bat Wave", new String[] { - C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Bat Wave" + C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Bat Wave", + C.cYellow + "Double Right-Click" + C.cGray + " to use " + C.cGreen + "Bat Leash" }); } + @EventHandler + public void Deactivate(CustomDamageEvent event) + { + Player player = event.GetDamageePlayer(); + if (player == null) return; + + if (_pulling.remove(player)) + { + for (Bat bat : _bats.get(player)) + bat.setLeashHolder(null); + } + } @EventHandler public void Activate(PlayerInteractEvent event) @@ -60,7 +75,7 @@ public class PerkBatWave extends Perk if (UtilBlock.usable(event.getClickedBlock())) return; - if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) + if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE")) return; Player player = event.getPlayer(); @@ -68,26 +83,55 @@ public class PerkBatWave extends Perk if (!Kit.HasKit(player)) return; - if (!Recharge.Instance.use(player, GetName(), 8000, true)) - return; - - //Start - _velocity.put(player, player.getEyeLocation()); - _active.put(player, System.currentTimeMillis()); - - _bats.put(player, new ArrayList()); - - for (int i=0 ; i<16 ; i++) + if (!Recharge.Instance.use(player, GetName(), 8000, false)) { - Manager.GetGame().CreatureAllowOverride = true; - Bat bat = player.getWorld().spawn(player.getEyeLocation(), Bat.class); - _bats.get(player).add(bat); - //bat.setLeashHolder(player); - Manager.GetGame().CreatureAllowOverride = false; + if (_active.containsKey(player)) + { + if (!Recharge.Instance.use(player, "Leash Bats", 500, false)) + return; + + if (!_pulling.remove(player)) + { + if (_allowLeash.remove(player)) + { + _pulling.add(player); + + for (Bat bat : _bats.get(player)) + bat.setLeashHolder(player); + } + } + else + { + for (Bat bat : _bats.get(player)) + bat.setLeashHolder(null); + } + } + else + { + //Inform + Recharge.Instance.use(player, GetName(), 8000, true); + } + } + else + { + //Start + _direction.put(player, player.getEyeLocation()); + _active.put(player, System.currentTimeMillis()); + _allowLeash.add(player); + + _bats.put(player, new ArrayList()); + + for (int i=0 ; i<16 ; i++) + { + Manager.GetGame().CreatureAllowOverride = true; + Bat bat = player.getWorld().spawn(player.getEyeLocation(), Bat.class); + _bats.get(player).add(bat); + Manager.GetGame().CreatureAllowOverride = false; + } + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); } - - //Inform - UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); } @EventHandler @@ -107,10 +151,10 @@ public class PerkBatWave extends Perk continue; } - Location loc = _velocity.get(cur); + Location loc = _direction.get(cur); - //Vector batVec = new Vector(0,0,0); - //double batCount = 0; + Vector batVec = new Vector(0,0,0); + double batCount = 0; //Bat Movement for (Bat bat : _bats.get(cur)) @@ -118,11 +162,11 @@ public class PerkBatWave extends Perk if (!bat.isValid()) continue; - //batVec.add(bat.getLocation().toVector()); - //batCount++; + batVec.add(bat.getLocation().toVector()); + batCount++; Vector rand = new Vector((Math.random() - 0.5)/3, (Math.random() - 0.5)/3, (Math.random() - 0.5)/3); - bat.setVelocity(loc.getDirection().clone().multiply(0.5).add(rand)); + bat.setVelocity(loc.getDirection().clone().multiply(0.75).add(rand)); for (Player other : Manager.GetGame().GetPlayers(true)) { @@ -136,7 +180,7 @@ public class PerkBatWave extends Perk { //Damage Event Manager.GetDamage().NewDamageEvent(other, cur, null, - DamageCause.CUSTOM, 2, true, true, false, + DamageCause.CUSTOM, 2.5, true, true, false, cur.getName(), GetName()); //Effect @@ -152,13 +196,14 @@ public class PerkBatWave extends Perk } //Player Pull - /* - batVec.multiply(1/batCount); - - Location batLoc = batVec.toLocation(cur.getWorld()); - - UtilAction.velocity(cur, UtilAlg.getTrajectory(cur.getLocation(), batLoc), 0.3, false, 0, 0, 10, false); - */ + if (_pulling.contains(cur)) + { + batVec.multiply(1/batCount); + + Location batLoc = batVec.toLocation(cur.getWorld()); + + UtilAction.velocity(cur, UtilAlg.getTrajectory(cur.getLocation(), batLoc), 0.5, false, 0, 0, 10, false); + } } } @@ -177,7 +222,8 @@ public class PerkBatWave extends Perk public void Clear(Player player) { _active.remove(player); - _velocity.remove(player); + _direction.remove(player); + _pulling.remove(player); if (_bats.containsKey(player)) { for (Bat bat : _bats.get(player)) @@ -199,6 +245,6 @@ public class PerkBatWave extends Perk if (event.GetReason() == null || !event.GetReason().contains(GetName())) return; - event.AddKnockback(GetName(), 1); + event.AddKnockback(GetName(), 1.75); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzardFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzardFinn.java index cb37040e8..2398a1f4d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzardFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkBlizzardFinn.java @@ -85,7 +85,7 @@ public class PerkBlizzardFinn extends Perk continue; } - if (UtilTime.elapsed(_active.get(player), 1500)) + if (UtilTime.elapsed(_active.get(player), 2000)) { _active.remove(player); continue; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java index 75c3ab149..9deab75d0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java @@ -85,7 +85,7 @@ public class PerkInfernoFinn extends Perk //Fire Item fire = cur.getWorld().dropItem(cur.getEyeLocation(), ItemStackFactory.Instance.CreateStack(Material.FIRE)); - Manager.GetFire().Add(fire, cur, 0.7, 0, 0.5, 2, "Inferno"); + Manager.GetFire().Add(fire, cur, 0.7, 0, 2, 2, "Inferno"); fire.teleport(cur.getEyeLocation()); double x = 0.07 - (UtilMath.r(14)/100d); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkQuickshotRobinHood.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkQuickshotRobinHood.java index 62635e06d..5390d2105 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkQuickshotRobinHood.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkQuickshotRobinHood.java @@ -1,6 +1,7 @@ package nautilus.game.arcade.kit.perks; import org.bukkit.Material; +import org.bukkit.Sound; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -52,5 +53,7 @@ public class PerkQuickshotRobinHood extends Perk Arrow arrow = player.launchProjectile(Arrow.class); arrow.setVelocity(player.getLocation().getDirection().multiply(2)); + + player.getWorld().playSound(player.getLocation(), Sound.SHOOT_ARROW, 1f, 1f); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java index 088e2f377..b3d7f3b30 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWitchPotion.java @@ -1,29 +1,41 @@ package nautilus.game.arcade.kit.perks; -import java.util.HashMap; +import java.util.ArrayList; +import java.util.Iterator; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.entity.ThrownPotion; import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilPlayer; import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.kit.Perk; public class PerkWitchPotion extends Perk { + private ArrayList _proj = new ArrayList(); + public PerkWitchPotion() { - super("Throw Potion", new String[] + super("Stun Potion", new String[] { - C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Throw Potion" + C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Paralyze Potion" }); } @@ -40,7 +52,7 @@ public class PerkWitchPotion extends Perk if (UtilBlock.usable(event.getClickedBlock())) return; - if (!event.getPlayer().getItemInHand().getType().toString().contains("_SPADE")) + if (!event.getPlayer().getItemInHand().getType().toString().contains("_AXE")) return; Player player = event.getPlayer(); @@ -53,9 +65,57 @@ public class PerkWitchPotion extends Perk //Start ThrownPotion potion = player.launchProjectile(ThrownPotion.class); - UtilAction.velocity(potion, player.getLocation().getDirection(), 1.2, false, 0, 0.2, 10, false); + UtilAction.velocity(potion, player.getLocation().getDirection(), 1, false, 0, 0.2, 10, false); + + _proj.add(potion); //Inform UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); } + + @EventHandler + public void Hit(ProjectileHitEvent event) + { + if (!_proj.remove(event.getEntity())) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (player.equals(event.getEntity().getShooter())) + continue; + + if (UtilMath.offset(player.getLocation().add(0,1,0), event.getEntity().getLocation()) > 3) + continue; + + //Damage Event + Manager.GetDamage().NewDamageEvent(player, event.getEntity().getShooter(), null, + DamageCause.CUSTOM, 4, false, true, false, + UtilEnt.getName(event.getEntity().getShooter()), GetName()); + + //Slow + Manager.GetCondition().Factory().Slow(GetName(), player, event.getEntity().getShooter(), 2, 2, false, false, true, false); + } + } + + @EventHandler + public void Update(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + Iterator potionIterator = _proj.iterator(); + + while (potionIterator.hasNext()) + { + Projectile proj = potionIterator.next(); + + if (!proj.isValid()) + { + potionIterator.remove(); + continue; + } + + UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, proj.getLocation(), 0, 0, 0, 0, 1); + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWolf.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWolf.java index 3bc25293f..938fe0510 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWolf.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkWolf.java @@ -287,7 +287,7 @@ public class PerkWolf extends Perk for (Player other : Manager.GetGame().GetPlayers(true)) if (!player.equals(other)) if (other.getGameMode() == GameMode.SURVIVAL) - if (UtilEnt.hitBox(player.getLocation(), other, 2, null)) + if (UtilEnt.hitBox(player.getLocation().add(0, 1, 0), other, 2, null)) { StrikeHit(player, other); playerIterator.remove(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java index d328488d0..4a2cdc0b2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java @@ -4,6 +4,7 @@ import java.util.Iterator; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilDisplay; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -34,6 +35,8 @@ import org.bukkit.event.Listener; public class GameManager implements Listener { ArcadeManager Manager; + + private int _colorId = 0; public GameManager(ArcadeManager manager) { @@ -41,6 +44,38 @@ public class GameManager implements Listener Manager.GetPluginManager().registerEvents(this, Manager.GetPlugin()); } + + @EventHandler + public void DisplayIP(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTER) + return; + + if (Manager.GetGame() != null && Manager.GetGame().GetState() != GameState.Live) + { + ChatColor col = ChatColor.RED; + if (_colorId == 1) col = ChatColor.YELLOW; + else if (_colorId == 2) col = ChatColor.GREEN; + else if (_colorId == 3) col = ChatColor.AQUA; + _colorId = (_colorId+1)%4; + + String text = col + C.Bold + "US.MINEPLEX.COM EU.MINEPLEX.COM"; + + double health = 1; + if (Manager.GetGame().GetState() == GameState.Prepare) + { + health = (9 - (System.currentTimeMillis() - Manager.GetGame().GetStateTime())/1000d) / 9d; + } + else if (Manager.GetGame().GetState() == GameState.Recruit) + { + if (Manager.GetGame().GetCountdown() >= 0) + health = Manager.GetGame().GetCountdown() / 60d; + } + + for (Player player : UtilServer.getPlayers()) + UtilDisplay.displayTextBar(Manager.GetPlugin(), player, health, text); + } + } @EventHandler public void StateUpdate(UpdateEvent event) From 7eb1cc65196dbcd319d326d1ef861d12b38883af Mon Sep 17 00:00:00 2001 From: Chiss Date: Sun, 27 Oct 2013 00:06:44 +1100 Subject: [PATCH 3/4] Halloween game additions --- .../mineplex/core/explosion/Explosion.java | 3 +- .../src/mineplex/hub/mount/types/Undead.java | 16 +++++ .../game/games/halloween/Halloween.java | 67 +++++++++++++++++-- .../halloween/creatures/CreatureBase.java | 3 + .../games/halloween/creatures/MobGiant.java | 9 ++- .../creatures/MobSkeletonArcher.java | 2 + .../creatures/MobSkeletonWarrior.java | 5 +- .../halloween/creatures/MobSpiderLeaper.java | 2 + .../halloween/creatures/MobSpiderWebber.java | 27 ++++---- .../games/halloween/creatures/MobZombie.java | 13 ++++ .../halloween/creatures/PumpkinKing.java | 2 +- .../game/games/halloween/kits/KitFinn.java | 27 ++++++++ .../games/halloween/kits/KitRobinHood.java | 31 ++++++++- .../game/games/halloween/kits/KitThor.java | 27 ++++++++ .../game/games/halloween/waves/Wave1.java | 14 ++-- .../game/games/halloween/waves/Wave2.java | 10 +-- .../game/games/halloween/waves/Wave3.java | 9 +-- .../game/games/halloween/waves/Wave4.java | 6 +- .../game/games/halloween/waves/Wave5.java | 17 ++--- .../arcade/kit/perks/PerkHammerThrow.java | 2 +- .../arcade/kit/perks/PerkInfernoFinn.java | 12 +++- 21 files changed, 237 insertions(+), 67 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java b/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java index 7ef4f5eaa..35145e737 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java @@ -291,8 +291,7 @@ public class Explosion extends MiniPlugin blocks.put(cur, new AbstractMap.SimpleEntry(cur.getTypeId(), cur.getData())); - if (cur.getTypeId() != 98 || cur.getData() != 0) - cur.setType(Material.AIR); + cur.setType(Material.AIR); } //DELAY diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java index 0d9542b9c..9783e2703 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/mount/types/Undead.java @@ -65,4 +65,20 @@ public class Undead extends Mount } } } + + @EventHandler + public void Toggle(PlayerToggleSneakEvent event) + { + if (event.getPlayer().isSneaking()) + return; + + if (IsActive(event.getPlayer())) + { + this.Disable(event.getPlayer()); + } + else + { + this.Enable(event.getPlayer()); + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java index 1f5979c56..a797376e9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/Halloween.java @@ -20,9 +20,11 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.ItemSpawnEvent; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -44,6 +46,7 @@ public class Halloween extends SoloGame private ArrayList _waves; private int _wave = 0; + private int _maxMobs = 100; private HashSet _mobs = new HashSet(); private PumpkinKing _king; @@ -60,9 +63,10 @@ public class Halloween extends SoloGame new String[] { + "Do not die.", "Work as a team!", - "Revive fallen allies!", - "Defeat the hordes of monsters" + "Defeat the waves of monsters", + "Kill the Pumpkin King" }); this.DamagePvP = false; @@ -96,13 +100,13 @@ public class Halloween extends SoloGame _waves.add(new WaveVictory(this)); } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) public void TeamGen(GameStateChangeEvent event) { if (event.GetState() != GameState.Live) return; - GetTeamList().add(new GameTeam("Halloween Monsters", ChatColor.RED, WorldData.GetDataLocs("RED"))); + GetTeamList().add(new GameTeam("Pumpkin King", ChatColor.RED, WorldData.GetDataLocs("RED"))); } @EventHandler @@ -189,7 +193,7 @@ public class Halloween extends SoloGame for (CreatureBase base : _mobs) base.Target(event); } - + @EventHandler(priority = EventPriority.HIGHEST) public void EntityDeath(EntityDeathEvent event) { @@ -204,6 +208,9 @@ public class Halloween extends SoloGame if (_wave >= _waves.size()) { + for (Player player : GetPlayers(false)) + Manager.GetGame().AddGems(player, 30, "Killing the Pumpkin King", false); + SetState(GameState.End); SetCustomWinLine("You defeated the Pumpkin King!!!"); AnnounceEnd(this.GetTeamList().get(0)); @@ -253,4 +260,54 @@ public class Halloween extends SoloGame event.setCancelled(true); } + + + @EventHandler(priority = EventPriority.MONITOR) + public void GemAward(CustomDamageEvent event) + { + if (event.IsCancelled()) + return; + + Player player = event.GetDamagerPlayer(true); + if (player == null) return; + + for (int i=0 ; i public Location GetRoamTarget() { + if (Math.random() > 0.75) + return GetPlayerTarget(); + Vector vec = new Vector(UtilMath.r(80) - 40, 0, UtilMath.r(80) - 40); return vec.toLocation(Host.GetSpectatorLocation().getWorld()); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java index ed7fb2ba5..70662011f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobGiant.java @@ -64,8 +64,8 @@ public class MobGiant extends CreatureBase private void Destroy() { Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 8, 0), 6d).keySet(), GetEntity().getLocation().add(0, 8, 0), false); - Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 2, 0), 3.5d).keySet(), GetEntity().getLocation(), true); - Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 0, 0), 3.5d).keySet(), GetEntity().getLocation(), true); + Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 2, 0), 5d).keySet(), GetEntity().getLocation(), true); + Host.Manager.GetExplosion().BlockExplosion(UtilBlock.getInRadius(GetEntity().getLocation().add(0, 0, 0), 5d).keySet(), GetEntity().getLocation(), true); } private void Move() @@ -87,7 +87,10 @@ public class MobGiant extends CreatureBase _tpLoc.setPitch(UtilAlg.GetPitch(dir)); _tpLoc.setYaw(UtilAlg.GetYaw(dir)); - _tpLoc.add(dir.multiply(0.1)); + double speed = Math.min(0.30, 0.15 + (GetEntity().getTicksLived() / 12000d)); + + + _tpLoc.add(dir.multiply(speed)); //Move GetEntity().teleport(_tpLoc); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java index 095dbef2b..638f3581d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonArcher.java @@ -29,6 +29,8 @@ public class MobSkeletonArcher extends CreatureBase { ent.getEquipment().setItemInHand(new ItemStack(Material.BOW)); ent.setCustomName("Skeleton Archer"); + + Host.Manager.GetCondition().Factory().Speed("Speed", ent, ent, 99999, 0, false, false, false); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java index f9fb84308..355c63873 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSkeletonWarrior.java @@ -3,6 +3,7 @@ package nautilus.game.arcade.game.games.halloween.creatures; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.disguises.DisguiseSkeleton; import mineplex.core.disguise.disguises.DisguiseSpider; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -28,10 +29,12 @@ public class MobSkeletonWarrior extends CreatureBase @Override public void SpawnCustom(Zombie ent) { - DisguiseSpider spider = new DisguiseSpider(ent); + DisguiseSkeleton spider = new DisguiseSkeleton(ent); Host.Manager.GetDisguise().disguise(spider); ent.setCustomName("Skeleton Warrior"); ent.getEquipment().setItemInHand(new ItemStack(Material.WOOD_HOE)); + + Host.Manager.GetCondition().Factory().Speed("Speed", ent, ent, 99999, 0, false, false, false); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java index ccf414444..18196ab9f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderLeaper.java @@ -28,6 +28,8 @@ public class MobSpiderLeaper extends CreatureBase public void SpawnCustom(CaveSpider ent) { ent.setCustomName("Leaping Spider"); + + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 99999, 1, false, false, false); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java index 03adaf9ae..5224a18ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobSpiderWebber.java @@ -1,8 +1,6 @@ package nautilus.game.arcade.game.games.halloween.creatures; -import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.disguises.DisguiseSpider; @@ -51,19 +49,8 @@ public class MobSpiderWebber extends CreatureBase if (event.getType() == UpdateType.FAST) Move(); - if (event.getType() == UpdateType.SEC) - Web(); - } - - private void Web() - { - if (GetTarget() == null) - return; - - if (Math.random() > 0.5) - return; - - + if (event.getType() == UpdateType.SLOW) + Speed(); } private void Move() @@ -106,4 +93,14 @@ public class MobSpiderWebber extends CreatureBase } } } + + public void Speed() + { + if (GetEntity().getTicksLived() > 3600) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 2, false, false, false); + else if (GetEntity().getTicksLived() > 2400) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 1, false, false, false); + else if (GetEntity().getTicksLived() > 1200) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 0, false, false, false); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java index aa5caef0d..4d47c1d84 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/MobZombie.java @@ -40,6 +40,9 @@ public class MobZombie extends CreatureBase { if (event.getType() == UpdateType.SLOW) Move(); + + if (event.getType() == UpdateType.SLOW) + Speed(); } private void Move() @@ -88,4 +91,14 @@ public class MobZombie extends CreatureBase { } + + public void Speed() + { + if (GetEntity().getTicksLived() > 3600) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 2, false, false, false); + else if (GetEntity().getTicksLived() > 2400) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 1, false, false, false); + else if (GetEntity().getTicksLived() > 1200) + Host.Manager.GetCondition().Factory().Speed("Speed", GetEntity(), GetEntity(), 10, 0, false, false, false); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java index 93ff109da..734a4dc31 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java @@ -494,7 +494,7 @@ public class PumpkinKing extends CreatureBase shieldIterator.remove(); } - if (!UtilTime.elapsed(_shieldSpawn, 3000)) + if (!UtilTime.elapsed(_shieldSpawn, 8000)) return; if (_shields.size() >= _shieldsMax) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java index e98dfd769..26d5b9d50 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitFinn.java @@ -7,6 +7,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilMath; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -26,6 +28,7 @@ public class KitFinn extends SmashKit { "Jake is hiding in his pocket.", "", + "Nearby allies receive " + C.cGreen + "Speed 1" }, new Perk[] @@ -85,4 +88,28 @@ public class KitFinn extends SmashKit Manager.GetCondition().Factory().FireItemImmunity(GetName(), player, player, 1.9, false); } } + + @EventHandler + public void Aura(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!HasKit(player)) + continue; + + for (Player other : Manager.GetGame().GetPlayers(true)) + { + if (other.equals(player)) + continue; + + if (UtilMath.offset(player, other) > 8) + continue; + + Manager.GetCondition().Factory().Speed("Aura", other, player, 1.9, 0, false, false, false); + } + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java index 93baa130a..f70fcc0bb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitRobinHood.java @@ -7,6 +7,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilMath; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -26,12 +28,11 @@ public class KitRobinHood extends SmashKit { "Trick or treating from the rich...", "", + "Nearby allies receive " + C.cGreen + "Regeneration 1" }, new Perk[] - { - new PerkSpeed(1), - new PerkRegeneration(0), + { new PerkFletcher(1, 4, true), new PerkBarrage(4, 250, true, true), new PerkQuickshotRobinHood() @@ -86,4 +87,28 @@ public class KitRobinHood extends SmashKit Manager.GetCondition().Factory().FireItemImmunity(GetName(), player, player, 1.9, false); } } + + @EventHandler + public void Aura(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!HasKit(player)) + continue; + + for (Player other : Manager.GetGame().GetPlayers(true)) + { + if (other.equals(player)) + continue; + + if (UtilMath.offset(player, other) > 8) + continue; + + Manager.GetCondition().Factory().Regen("Aura", other, player, 1.9, 0, false, false, false); + } + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java index 4ba474973..d914fa882 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/kits/KitThor.java @@ -7,6 +7,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilMath; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -27,6 +29,7 @@ public class KitThor extends SmashKit { "Smash and kill with your Thor Hammer!", "", + "Nearby allies receive " + C.cGreen + "Strength 1" }, new Perk[] @@ -96,4 +99,28 @@ public class KitThor extends SmashKit if (HasKit(damagee)) event.AddMod("Thor Boost", "Thor Boost", 4, false); } + + @EventHandler + public void Aura(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + for (Player player : Manager.GetGame().GetPlayers(true)) + { + if (!HasKit(player)) + continue; + + for (Player other : Manager.GetGame().GetPlayers(true)) + { + if (other.equals(player)) + continue; + + if (UtilMath.offset(player, other) > 8) + continue; + + Manager.GetCondition().Factory().Strength("Aura", other, player, 1.9, 0, false, false, false); + } + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java index 91ecb67ac..c652e1a01 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave1.java @@ -2,33 +2,29 @@ package nautilus.game.arcade.game.games.halloween.waves; import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.games.halloween.Halloween; -import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonArcher; -import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; +import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonWarrior; public class Wave1 extends WaveBase { public Wave1(Halloween host) { - super(host, "Zombies and Skeletons and Creepers! OH MY!", 60000, host.GetSpawnSet(1)); + super(host, "Skeletons? Farmers? FARMER SKELETONS!!!", 60000, host.GetSpawnSet(1)); } @Override public void Spawn(int tick) { - if (UtilTime.elapsed(_start, 20000)) + if (UtilTime.elapsed(_start, 15000)) return; - if (Host.GetCreatures().size() > 60) + if (Host.GetCreatures().size() > Host.GetMaxMobs()) return; if (tick % 10 == 0) - Host.AddCreature(new MobZombie(Host, GetSpawn())); + Host.AddCreature(new MobSkeletonWarrior(Host, GetSpawn())); if (tick % 20 == 0) Host.AddCreature(new MobSkeletonArcher(Host, GetSpawn())); - - if (tick % 30 == 0) - Host.AddCreature(new MobCreeper(Host, GetSpawn())); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java index 7866f3449..9779c99a3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave2.java @@ -4,7 +4,6 @@ import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.games.halloween.Halloween; import nautilus.game.arcade.game.games.halloween.creatures.MobCreeper; import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; -import nautilus.game.arcade.game.games.halloween.creatures.MobSkeletonArcher; import nautilus.game.arcade.game.games.halloween.creatures.MobZombie; public class Wave2 extends WaveBase @@ -17,22 +16,19 @@ public class Wave2 extends WaveBase @Override public void Spawn(int tick) { - if (UtilTime.elapsed(_start, 20000)) + if (UtilTime.elapsed(_start, 15000)) return; if (tick == 0) Host.AddCreature(new MobGiant(Host, GetSpawn())); - if (Host.GetCreatures().size() > 60) + if (Host.GetCreatures().size() > Host.GetMaxMobs()) return; if (tick % 10 == 0) Host.AddCreature(new MobZombie(Host, GetSpawn())); - if (tick % 20 == 0) - Host.AddCreature(new MobSkeletonArcher(Host, GetSpawn())); - - if (tick % 30 == 0) + if (tick % 25 == 0) Host.AddCreature(new MobCreeper(Host, GetSpawn())); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java index 87c4fad7b..f772f906d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave3.java @@ -15,16 +15,13 @@ public class Wave3 extends WaveBase @Override public void Spawn(int tick) { - if (UtilTime.elapsed(_start, 20000)) + if (Host.GetCreatures().size() > Host.GetMaxMobs()) return; - if (Host.GetCreatures().size() > 60) - return; - - if (tick % 10 == 0) + if (tick > 200 && tick % 10 == 0 && !UtilTime.elapsed(_start, 25000)) Host.AddCreature(new MobSpiderWebber(Host, GetSpawn())); - if (tick % 10 == 0) + if (tick % 10 == 0 && !UtilTime.elapsed(_start, 15000)) Host.AddCreature(new MobSpiderLeaper(Host, GetSpawn())); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java index a6d31191a..c45a91529 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave4.java @@ -11,13 +11,13 @@ public class Wave4 extends WaveBase { public Wave4(Halloween host) { - super(host, "Ghasts (and friends!)", 60000, host.GetSpawnSet(3)); + super(host, "Ghasts and friends!", 60000, host.GetSpawnSet(3)); } @Override public void Spawn(int tick) { - if (UtilTime.elapsed(_start, 20000)) + if (UtilTime.elapsed(_start, 25000)) return; if (tick > 0 && tick % 100 == 0) @@ -29,7 +29,7 @@ public class Wave4 extends WaveBase Host.AddCreature(new MobGhast(Host, loc)); } - if (Host.GetCreatures().size() > 60) + if (Host.GetCreatures().size() > Host.GetMaxMobs()) return; if (tick % 20 == 0) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java index d93c2a0bb..a03a1c90f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/waves/Wave5.java @@ -3,7 +3,7 @@ package nautilus.game.arcade.game.games.halloween.waves; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.games.halloween.Halloween; -import nautilus.game.arcade.game.games.halloween.creatures.MobGiant; +import nautilus.game.arcade.game.games.halloween.creatures.*; public class Wave5 extends WaveBase { @@ -18,7 +18,8 @@ public class Wave5 extends WaveBase if (UtilTime.elapsed(_start, 20000)) return; - this.SpawnBeacons(Host.GetSpawnSet(2)); + if (tick == 0) + SpawnBeacons(Host.GetSpawnSet(2)); if (tick == 0) { @@ -26,19 +27,19 @@ public class Wave5 extends WaveBase Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); } - if (Host.GetCreatures().size() > 60) + if (Host.GetCreatures().size() > Host.GetMaxMobs()) return; if (tick % 20 == 0) { - Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); - Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); + Host.AddCreature(new MobZombie(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); + Host.AddCreature(new MobZombie(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); } - if (tick % 40 == 0) + if (tick % 60 == 0) { - Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); - Host.AddCreature(new MobGiant(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); + Host.AddCreature(new MobCreeper(Host, Host.GetSpawnSet(1).get(UtilMath.r(Host.GetSpawnSet(1).size())))); + Host.AddCreature(new MobCreeper(Host, Host.GetSpawnSet(2).get(UtilMath.r(Host.GetSpawnSet(2).size())))); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHammerThrow.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHammerThrow.java index 3a8b3ede4..0d1c6932c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHammerThrow.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkHammerThrow.java @@ -129,7 +129,7 @@ public class PerkHammerThrow extends Perk implements IThrown //Damage Event Manager.GetDamage().NewDamageEvent(target, data.GetThrower(), null, - DamageCause.LIGHTNING, 12, true, true, false, + DamageCause.LIGHTNING, 16, true, true, false, UtilEnt.getName(data.GetThrower()), GetName()); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java index 9deab75d0..d1801a17b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkInfernoFinn.java @@ -13,6 +13,7 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; @@ -101,7 +102,7 @@ public class PerkInfernoFinn extends Perk @EventHandler public void Refresh(UpdateEvent event) { - if (event.getType() != UpdateType.SLOWER) + if (event.getType() != UpdateType.SLOW) return; for (Player player : UtilServer.getPlayers()) @@ -112,8 +113,13 @@ public class PerkInfernoFinn extends Perk if (!Kit.HasKit(player)) continue; - player.getInventory().remove(Material.GOLD_SWORD); - player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD, (byte)0, 1, "Flaming Sword")); + if (!UtilGear.isMat(player.getItemInHand(), Material.GOLD_SWORD)) + continue; + + if (player.getItemInHand().getDurability() == player.getItemInHand().getType().getMaxDurability()) + player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability()+1)); + else + player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability()-1)); } } } From c672e68713eab7d80615f1f58adc65dda5a212e4 Mon Sep 17 00:00:00 2001 From: Chiss Date: Sun, 27 Oct 2013 00:14:38 +1100 Subject: [PATCH 4/4] some help during boss fight. --- .../game/games/halloween/creatures/PumpkinKing.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java index 734a4dc31..9ad86f6d4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/halloween/creatures/PumpkinKing.java @@ -510,6 +510,9 @@ public class PumpkinKing extends CreatureBase //Sound GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.WITHER_HURT, 10f, 1.5f); + + if (GetEntity().getTicksLived() > 100) + Host.Announce(C.cAqua + C.Bold + "Flame Shield has regenerated!"); } else { @@ -596,6 +599,9 @@ public class PumpkinKing extends CreatureBase //Target _minionTargets.put(minion, GetRandomPlayer()); + + //Announce + Host.Announce(C.cAqua + C.Bold + "Kill the Pumpkin Minions!"); } } } @@ -668,6 +674,9 @@ public class PumpkinKing extends CreatureBase { SetState(4); + //Announce + Host.Announce(C.cAqua + C.Bold + "Kill the Pumpkin King!!!"); + //Sound GetEntity().getWorld().playSound(GetEntity().getLocation(), Sound.WITHER_SPAWN, 10f, 1.5f);