From 00fc5b93d2c7c0210b4a992d66a8dd935e87b086 Mon Sep 17 00:00:00 2001 From: GJ Date: Mon, 19 Mar 2012 01:39:37 -0400 Subject: [PATCH] Started work on new Staves skill. --- .../gmail/nossr50/datatypes/StaffType.java | 7 +++ .../nossr50/listeners/mcPlayerListener.java | 7 +++ .../com/gmail/nossr50/skills/BlastMining.java | 6 +-- .../java/com/gmail/nossr50/skills/Staves.java | 52 +++++++++++++++++++ 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/datatypes/StaffType.java create mode 100644 src/main/java/com/gmail/nossr50/skills/Staves.java diff --git a/src/main/java/com/gmail/nossr50/datatypes/StaffType.java b/src/main/java/com/gmail/nossr50/datatypes/StaffType.java new file mode 100644 index 000000000..862f2cb91 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/StaffType.java @@ -0,0 +1,7 @@ +package com.gmail.nossr50.datatypes; + +public enum StaffType { + BLAZE_ROD, + STICK, + BONE; +} diff --git a/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java index b1363e2ad..fe093e497 100644 --- a/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/mcPlayerListener.java @@ -48,6 +48,7 @@ import com.gmail.nossr50.skills.Fishing; import com.gmail.nossr50.skills.Herbalism; import com.gmail.nossr50.skills.Repair; import com.gmail.nossr50.skills.Skills; +import com.gmail.nossr50.skills.Staves; import com.gmail.nossr50.skills.Taming; public class mcPlayerListener implements Listener { @@ -240,6 +241,9 @@ public class mcPlayerListener implements Listener { BlastMining.remoteDetonation(player, plugin); } + /* STAFF CHECKS */ + Staves.altFire(is.getType(), player); + break; case RIGHT_CLICK_AIR: @@ -263,6 +267,9 @@ public class mcPlayerListener implements Listener { BlastMining.remoteDetonation(player, plugin); } + /* STAFF CHECKS */ + Staves.altFire(is.getType(), player); + break; case LEFT_CLICK_AIR: diff --git a/src/main/java/com/gmail/nossr50/skills/BlastMining.java b/src/main/java/com/gmail/nossr50/skills/BlastMining.java index 01964c272..712f24d20 100644 --- a/src/main/java/com/gmail/nossr50/skills/BlastMining.java +++ b/src/main/java/com/gmail/nossr50/skills/BlastMining.java @@ -261,14 +261,14 @@ public class BlastMining { AbilityType ability = AbilityType.BLAST_MINING; /* Check Cooldown */ - if(!Skills.cooldownOver(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown())) { + if (!Skills.cooldownOver(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown())) { player.sendMessage(mcLocale.getString("Skills.TooTired") + ChatColor.YELLOW + " (" + Skills.calculateTimeLeft(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown()) + "s)"); return; } /* Send message to nearby players */ - for(Player y : player.getWorld().getPlayers()) { - if(y != player && m.isNear(player.getLocation(), y.getLocation(), MAX_DISTANCE_AWAY)) { + for (Player y : player.getWorld().getPlayers()) { + if (y != player && m.isNear(player.getLocation(), y.getLocation(), MAX_DISTANCE_AWAY)) { y.sendMessage(ability.getAbilityPlayer(player)); } } diff --git a/src/main/java/com/gmail/nossr50/skills/Staves.java b/src/main/java/com/gmail/nossr50/skills/Staves.java new file mode 100644 index 000000000..1f3e74891 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/skills/Staves.java @@ -0,0 +1,52 @@ +package com.gmail.nossr50.skills; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.ExperienceOrb; +import org.bukkit.entity.Fireball; +import org.bukkit.entity.Player; + +import com.gmail.nossr50.m; + +public class Staves { + + public static void altFire(Material type, Player attacker) { + switch (type) { + case BLAZE_ROD: + attacker.launchProjectile(Fireball.class); + break; + + case BONE: + for (Player y : attacker.getWorld().getPlayers()) { + if (y != attacker && m.isNear(attacker.getLocation(), y.getLocation(), 10) && y.getLevel() > 0) { + y.setLevel((int) (y.getLevel() * .75)); + attacker.sendMessage("You drained your opponent of XP!"); + y.sendMessage("You feel some of your power leave you..."); + + for (int i = 0; i <= 100; i++) { + Location dropLocation = y.getLocation(); + dropLocation.setX(dropLocation.getX() + (Math.random() * 2)); + dropLocation.setZ(dropLocation.getZ() + (Math.random() * 2)); + ExperienceOrb orb = y.getWorld().spawn(dropLocation, ExperienceOrb.class); + orb.setExperience((int) (Math.random() * 5)); + } + } + } + break; + + case STICK: + for (Player y : attacker.getWorld().getPlayers()) { + if (y != attacker && m.isNear(attacker.getLocation(), y.getLocation(), 10)) { + attacker.sendMessage("You slowed your opponent!"); + y.sendMessage("You were suddenly slowed..."); + + y.setVelocity(y.getVelocity().multiply(0.5)); + } + } + break; + + default: + break; + } + } +}