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 6c7d44d67..42b47fdf4 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 @@ -62,7 +62,7 @@ public class SuperSmash extends SoloGame new KitSkySquid(manager), new KitWitherSkeleton(manager), //new KitWither(manager), - //new KitWolf(manager), + new KitWolf(manager), }, 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 008f20ba5..6f5e71c15 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 @@ -7,7 +7,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; -import mineplex.core.disguise.disguises.DisguisePig; +import mineplex.core.disguise.disguises.DisguiseWolf; import mineplex.core.itemstack.ItemStackFactory; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.game.Game.GameState; @@ -30,7 +30,7 @@ public class KitWolf extends SmashKit new Perk[] { - new PerkSmashStats(5, 1.6, 0.3, 4.5), + new PerkSmashStats(4, 1.6, 0.3, 4.5), new PerkDoubleJump("Wolf Jump", 1.0, 1.0, true), new PerkWolf(), }, @@ -75,7 +75,7 @@ public class KitWolf extends SmashKit player.getInventory().setLeggings(ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS)); //Disguise - DisguisePig disguise = new DisguisePig(player); + DisguiseWolf disguise = new DisguiseWolf(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/snake/Snake.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/Snake.java index 2e587329b..5808f8ec5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/Snake.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/Snake.java @@ -49,6 +49,8 @@ import net.minecraft.server.v1_6_R3.Navigation; public class Snake extends SoloGame { + private double _maxSpeed = 60; + private HashMap> _tail = new HashMap>(); private HashSet _food = new HashSet(); @@ -64,21 +66,23 @@ public class Snake extends SoloGame new Kit[] { new KitSpeed(manager), - new KitOther(manager), + //new KitOther(manager), new KitInvulnerable(manager), }, new String[] { - "Eat slimes to grow longer", - "Red slimes are worth twice as much", - "You die if you hit someones tail", + "Avoid hitting snake tails", + "You get faster as you grow longer", + "Eat slimes to grow faster", "Last one alive wins!" }); this.DamageTeamSelf = true; this.HungerSet = 2; + + this.GemMultiplier = 0.5; } @EventHandler @@ -112,12 +116,12 @@ public class Snake extends SoloGame if (!IsLive()) return; - if (event.getType() != UpdateType.FAST) + if (event.getType() != UpdateType.SEC) return; for (Player player : GetPlayers(true)) { - Grow(player, 1); + Grow(player, 1, false); } } @@ -132,19 +136,13 @@ public class Snake extends SoloGame for (Player player : GetPlayers(true)) { - double mult = 0.5 + Math.min(0.5, (System.currentTimeMillis() - this.GetStateTime())/250000d); + double mult = 0.5; - if (GetKit(player) instanceof KitSpeed) - mult = mult * 0.9; - - if (GetKit(player) instanceof KitOther) - mult = mult * 1.0; - - if (GetKit(player) instanceof KitInvulnerable) - mult = mult * 0.8; + if (_tail.containsKey(player)) + mult += Math.min(0.8, (double)_tail.get(player).size() / _maxSpeed); if (_speed.containsKey(player)) - mult = mult * 1.6; + mult = mult * 1.7; Vector vel = player.getLocation().getDirection().setY(0).normalize(); if (!UtilEnt.isGrounded(player)) vel.setY(-0.2); @@ -283,11 +281,9 @@ public class Snake extends SoloGame { if (UtilMath.offset(food, player) < 2) { - int amount = 1; - if (food instanceof MagmaCube) - amount = 2; + int amount = 2; - Grow(player, amount); + Grow(player, amount, true); foodIterator.remove(); food.remove(); break; @@ -296,7 +292,7 @@ public class Snake extends SoloGame } } - public void Grow(Player player, int amount) + public void Grow(Player player, int amount, boolean sound) { while (amount > 0) { @@ -308,10 +304,12 @@ public class Snake extends SoloGame if (!_tail.get(player).isEmpty()) loc = _tail.get(player).get(_tail.get(player).size() - 1).getLocation(); - loc.subtract(loc.getDirection().setY(0)); + if (_tail.get(player).size() > 1) + loc.add(UtilAlg.getTrajectory2d(_tail.get(player).get(_tail.get(player).size() - 2), _tail.get(player).get(_tail.get(player).size() - 1))); + else + loc.subtract(player.getLocation().getDirection().setY(0)); //Spawn - this.CreatureAllowOverride = true; Sheep tail = loc.getWorld().spawn(loc, Sheep.class); this.CreatureAllowOverride = false; @@ -324,10 +322,13 @@ public class Snake extends SoloGame _tail.get(player).add(tail); //Audio - //player.getWorld().playSound(player.getLocation(), Sound.EAT, 2f, 1f); + if (sound) + player.getWorld().playSound(player.getLocation(), Sound.EAT, 2f, 1f); amount--; } + + player.setExp((float) Math.min(0.9999f, (double)_tail.get(player).size() / _maxSpeed)); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/kits/KitInvulnerable.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/kits/KitInvulnerable.java index 4e94d38a9..7935ba879 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/kits/KitInvulnerable.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/snake/kits/KitInvulnerable.java @@ -17,7 +17,7 @@ public class KitInvulnerable extends Kit { public KitInvulnerable(ArcadeManager manager) { - super(manager, "Super Snake", KitAvailability.Blue, + super(manager, "Super Snake", KitAvailability.Free, new String[] { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java index c42a2f574..ce6add2c0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java @@ -353,7 +353,7 @@ public class UHC extends TeamGame event.setCancelled(true); } - @EventHandler + @EventHandler(priority = EventPriority.LOW) public void GenerateTeamNames(GameStateChangeEvent event) { if (event.GetState() != GameState.Recruit) 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 ada44b845..9006e559b 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 @@ -13,6 +13,7 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Wolf; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -44,6 +45,8 @@ public class PerkWolf extends Perk private HashMap _strike = new HashMap(); private HashMap> _repeat = new HashMap>(); + + private HashMap _tackleStrike = new HashMap(); public PerkWolf() { @@ -293,7 +296,7 @@ public class PerkWolf extends Perk if (!UtilEnt.isGrounded(player)) continue; - if (!UtilTime.elapsed(_strike.get(player), 1000)) + if (!UtilTime.elapsed(_strike.get(player), 1500)) continue; playerIterator.remove(); @@ -314,6 +317,8 @@ public class PerkWolf extends Perk { wolf.remove(); wolfIterator.remove(); + + _tackleStrike.put(damagee, System.currentTimeMillis()); } } @@ -321,9 +326,7 @@ public class PerkWolf extends Perk DamageCause.CUSTOM, 7, true, true, false, damager.getName(), "Wolf Strike"); - //Blood - damagee.getWorld().playEffect(damagee.getLocation(), Effect.STEP_SOUND, 55); - + //Sound damagee.getWorld().playSound(damagee.getLocation(), Sound.WOLF_BARK, 1.5f, 1f); @@ -337,16 +340,29 @@ public class PerkWolf extends Perk { if (event.GetReason() != null && event.GetReason().contains("Wolf Strike")) { - if (_tackle.containsValue(event.GetDamageeEntity())) + if (_tackleStrike.containsKey(event.GetDamageeEntity()) && !UtilTime.elapsed(_tackleStrike.get(event.GetDamageeEntity()), 100)) + { event.AddKnockback(GetName(), 3.0); + + //Blood + event.GetDamageeEntity().getWorld().playEffect(event.GetDamageeEntity().getLocation(), Effect.STEP_SOUND, 55); + + //Double Sound + event.GetDamageeEntity().getWorld().playSound(event.GetDamageeEntity().getLocation(), Sound.WOLF_BARK, 2f, 1.5f); + } else + { event.AddKnockback(GetName(), 1.5); + } } } - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST) public void RepeatDamage(CustomDamageEvent event) - { + { + if (event.IsCancelled()) + return; + if (event.GetCause() != DamageCause.ENTITY_ATTACK) return; @@ -360,11 +376,15 @@ public class PerkWolf extends Perk { _repeat.put(damager, new ArrayList()); _repeat.get(damager).add(System.currentTimeMillis()); + + //Exp + damager.setExp(Math.min(0.9999f, _repeat.get(damager).size()/9f)); + return; } int count = _repeat.get(damager).size(); - + Manager.GetGame().Announce("Repeat: " + count); if (count > 0) { event.AddMod(damager.getName(), "Ravage", count, false); @@ -374,6 +394,9 @@ public class PerkWolf extends Perk } _repeat.get(damager).add(System.currentTimeMillis()); + + //Exp + damager.setExp(Math.min(0.9999f, _repeat.get(damager).size()/9f)); } @EventHandler @@ -395,8 +418,11 @@ public class PerkWolf extends Perk long time = timeIterator.next(); if (UtilTime.elapsed(time, 3000)) - timeIterator.remove(); + timeIterator.remove(); } + + //Exp + player.setExp(Math.min(0.9999f, _repeat.get(player).size()/9f)); } } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameChatManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameChatManager.java index 07205aad8..8735b2b23 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameChatManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameChatManager.java @@ -67,7 +67,7 @@ public class GameChatManager implements Listener if (ownsUltra && !rank.Has(Rank.ULTRA)) rankStr = Rank.ULTRA.Color + C.Bold + Rank.ULTRA.Name.toUpperCase() + " "; - if (Manager.GetGame().GetType() == GameType.UHC) + if (Manager.GetGame() != null && Manager.GetGame().GetType() == GameType.UHC) { ChatColor col = ChatColor.GREEN; if (sender.getHealth() <= 12) col = ChatColor.YELLOW;