From bb1c85ea4aadc72ec4b0f7f5f9f929a8016003a4 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Wed, 23 Mar 2011 10:53:54 -0700 Subject: [PATCH] All changes up to 0.9.7 --- mcMMO/Changelog.txt | 8 ++++ mcMMO/com/gmail/nossr50/mcBlockListener.java | 1 + mcMMO/com/gmail/nossr50/mcCombat.java | 46 +++++++++++-------- mcMMO/com/gmail/nossr50/mcEntityListener.java | 7 +++ mcMMO/com/gmail/nossr50/mcLoadProperties.java | 14 +++++- mcMMO/com/gmail/nossr50/mcSkills.java | 12 ++--- mcMMO/com/gmail/nossr50/mcm.java | 7 +++ mcMMO/plugin.yml | 2 +- 8 files changed, 69 insertions(+), 28 deletions(-) diff --git a/mcMMO/Changelog.txt b/mcMMO/Changelog.txt index 6ee182498..679f49c3b 100644 --- a/mcMMO/Changelog.txt +++ b/mcMMO/Changelog.txt @@ -1,5 +1,13 @@ Changelog: #Versions without changelogs probably had very small misc fixes, like tweaks to the source code# +Version 0.9.7 +Procs/XP Gain will no longer happen when the Entity is immune to damage (Thanks EdwardHand!) +Axes critical damage versus players reduced to 150% damage from 200% damage +Fixed bug where Daze might not proc +Changed archery Daze to follow smooth transition +Added archery Daze chance info to /archery +Cooldown lengths are now customizable, they are in seconds and multiplied by 2 by mcMMO + Version 0.9.6 Timer checks for player being null before adding them to the mcUsers system Cooldowns will now show how much time is remaining when trying to use their respective abilities diff --git a/mcMMO/com/gmail/nossr50/mcBlockListener.java b/mcMMO/com/gmail/nossr50/mcBlockListener.java index f48b6f041..033a2a617 100644 --- a/mcMMO/com/gmail/nossr50/mcBlockListener.java +++ b/mcMMO/com/gmail/nossr50/mcBlockListener.java @@ -5,6 +5,7 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.entity.Player; import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.block.BlockFromToEvent; diff --git a/mcMMO/com/gmail/nossr50/mcCombat.java b/mcMMO/com/gmail/nossr50/mcCombat.java index 8df713663..e7a08772f 100644 --- a/mcMMO/com/gmail/nossr50/mcCombat.java +++ b/mcMMO/com/gmail/nossr50/mcCombat.java @@ -424,29 +424,27 @@ public class mcCombat { if(mcLoadProperties.pvpxp && !mcParty.getInstance().inSameParty(attacker, defender)){ mcUsers.getProfile(attacker).addArcheryGather((event.getDamage() * 3) * mcLoadProperties.pvpxprewardmodifier); } - Location loc = defender.getLocation(); + /* + * DAZE PROC + */ + Location loc = defender.getLocation(); if(Math.random() * 10 > 5){ loc.setPitch(90); } else { loc.setPitch(-90); } - /* - * Check the proc - */ - if(mcUsers.getProfile(attacker).getArcheryInt() >= 300 && mcUsers.getProfile(attacker).getArcheryInt() < 400){ - if(Math.random() * 10 > 7){ - defender.teleportTo(loc); - defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); - attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); - } - } - if(mcUsers.getProfile(attacker).getArcheryInt() >= 600){ - if(Math.random() * 10 > 4){ - defender.teleportTo(loc); - defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); - attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); - } - } + if(mcUsers.getProfile(attacker).getArcheryInt() >= 1000){ + if(Math.random() * 1000 <= 500){ + defender.teleportTo(loc); + defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); + attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); + } + } else if(Math.random() * 2000 <= mcUsers.getProfile(attacker).getArcheryInt()){ + defender.teleportTo(loc); + defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy."); + attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed"); + } + if(mcUsers.getProfile(attacker).getArcheryInt() >= 50 && mcUsers.getProfile(attacker).getArcheryInt() < 250) event.setDamage(calculateDamage(event, 1)); if(mcUsers.getProfile(attacker).getArcheryInt() >= 250 && mcUsers.getProfile(attacker).getArcheryInt() < 575) @@ -570,7 +568,11 @@ public class mcCombat { Player player = (Player)x; player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!"); } - event.setDamage(event.getDamage() * 2); + if(x instanceof Player){ + event.setDamage(event.getDamage() * 2 - event.getDamage() / 2); + } else { + event.setDamage(event.getDamage() * 2); + } attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!"); } } else if(Math.random() * 1000 <= mcUsers.getProfile(attacker).getAxesInt()){ @@ -578,7 +580,11 @@ public class mcCombat { Player player = (Player)x; player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!"); } - event.setDamage(event.getDamage() * 2); + if(x instanceof Player){ + event.setDamage(event.getDamage() * 2 - event.getDamage() / 2); + } else { + event.setDamage(event.getDamage() * 2); + } attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!"); } } diff --git a/mcMMO/com/gmail/nossr50/mcEntityListener.java b/mcMMO/com/gmail/nossr50/mcEntityListener.java index 3fc9fcb79..f2caf38f5 100644 --- a/mcMMO/com/gmail/nossr50/mcEntityListener.java +++ b/mcMMO/com/gmail/nossr50/mcEntityListener.java @@ -1,6 +1,9 @@ package com.gmail.nossr50; +import net.minecraft.server.EntityLiving; + import org.bukkit.Location; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.entity.Animals; import org.bukkit.entity.Entity; import org.bukkit.entity.Monster; @@ -36,6 +39,9 @@ public class mcEntityListener extends EntityListener { } } public void onEntityDamage(EntityDamageEvent event) { + CraftEntity cEntity = (CraftEntity)event.getEntity(); + EntityLiving entity = (EntityLiving)cEntity.getHandle(); + if(entity.noDamageTicks < entity.maxNoDamageTicks/2.0F){ Entity x = event.getEntity(); DamageCause type = event.getCause(); /* @@ -154,6 +160,7 @@ public class mcEntityListener extends EntityListener { Player herpderp = (Player)x; mcUsers.getProfile(herpderp).setRecentlyHurt(30); } + } } public void onEntityDeath(EntityDeathEvent event) { Entity x = event.getEntity(); diff --git a/mcMMO/com/gmail/nossr50/mcLoadProperties.java b/mcMMO/com/gmail/nossr50/mcLoadProperties.java index 89e3800a6..3bf8669d8 100644 --- a/mcMMO/com/gmail/nossr50/mcLoadProperties.java +++ b/mcMMO/com/gmail/nossr50/mcLoadProperties.java @@ -3,13 +3,25 @@ package com.gmail.nossr50; public class mcLoadProperties { public static Boolean toolsLoseDurabilityFromAbilities, pvpxp, miningrequirespickaxe, woodcuttingrequiresaxe, pvp, eggs, apples, myspawnclearsinventory, cake, music, diamond, glowstone, slowsand, sulphur, netherrack, bones, coal, clay, anvilmessages; public static String mcability, mcmmo, mcc, mcrefresh, mcitem, mcgod, stats, mmoedit, ptp, party, myspawn, setmyspawn, whois, invite, accept, clearmyspawn; - public static int abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier; + public static int superBreakerCooldown, gigaDrillBreakerCooldown, treeFellerCooldown, berserkCooldown, serratedStrikeCooldown, skullSplitterCooldown, abilityDurabilityLoss, feathersConsumedByChimaeraWing, pvpxprewardmodifier, repairdiamondlevel, globalxpmodifier, miningxpmodifier, repairxpmodifier, woodcuttingxpmodifier, unarmedxpmodifier, herbalismxpmodifier, excavationxpmodifier, archeryxpmodifier, swordsxpmodifier, axesxpmodifier, acrobaticsxpmodifier; public static void loadMain(){ String propertiesFile = mcMMO.maindirectory + "mcmmo.properties"; mcProperties properties = new mcProperties(propertiesFile); properties.load(); + /* + * COOLDOWN CONTROL + */ + superBreakerCooldown = properties.getInteger("superBreakerCooldown", 120); + gigaDrillBreakerCooldown = properties.getInteger("gigaDrillBreakerCooldown", 120); + treeFellerCooldown = properties.getInteger("treeFellerCooldown", 120); + berserkCooldown = properties.getInteger("berserkCooldown", 120); + serratedStrikeCooldown = properties.getInteger("serratedStrikeCooldown", 120); + skullSplitterCooldown = properties.getInteger("skullSplitterCooldown", 120); + /* + * OTHER + */ toolsLoseDurabilityFromAbilities = properties.getBoolean("toolsLoseDurabilityFromAbilities", true); abilityDurabilityLoss = properties.getInteger("abilityDurabilityLoss", 2); feathersConsumedByChimaeraWing = properties.getInteger("feathersConsumedByChimaeraWing", 10); diff --git a/mcMMO/com/gmail/nossr50/mcSkills.java b/mcMMO/com/gmail/nossr50/mcSkills.java index 39ba6887a..6bfcacafe 100644 --- a/mcMMO/com/gmail/nossr50/mcSkills.java +++ b/mcMMO/com/gmail/nossr50/mcSkills.java @@ -275,7 +275,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseSkullSplitterTicks(); if(mcUsers.getProfile(player).getSkullSplitterTicks() <= 0){ mcUsers.getProfile(player).setSkullSplitterMode(false); - mcUsers.getProfile(player).setSkullSplitterCooldown(120); + mcUsers.getProfile(player).setSkullSplitterCooldown(mcLoadProperties.skullSplitterCooldown); player.sendMessage(ChatColor.RED+"**Skull Splitter has worn off**"); } } @@ -288,7 +288,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseTreeFellerTicks(); if(mcUsers.getProfile(player).getTreeFellerTicks() <= 0){ mcUsers.getProfile(player).setTreeFellerMode(false); - mcUsers.getProfile(player).setTreeFellerCooldown(120); + mcUsers.getProfile(player).setTreeFellerCooldown(mcLoadProperties.treeFellerCooldown); player.sendMessage(ChatColor.RED+"**Tree Feller has worn off**"); } } @@ -301,7 +301,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseSuperBreakerTicks(); if(mcUsers.getProfile(player).getSuperBreakerTicks() <= 0){ mcUsers.getProfile(player).setSuperBreakerMode(false); - mcUsers.getProfile(player).setSuperBreakerCooldown(120); + mcUsers.getProfile(player).setSuperBreakerCooldown(mcLoadProperties.superBreakerCooldown); player.sendMessage(ChatColor.RED+"**Super Breaker has worn off**"); } } @@ -314,7 +314,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseGigaDrillBreakerTicks(); if(mcUsers.getProfile(player).getGigaDrillBreakerTicks() <= 0){ mcUsers.getProfile(player).setGigaDrillBreakerMode(false); - mcUsers.getProfile(player).setGigaDrillBreakerCooldown(120); + mcUsers.getProfile(player).setGigaDrillBreakerCooldown(mcLoadProperties.gigaDrillBreakerCooldown); player.sendMessage(ChatColor.RED+"**You feel spiral energy leaving you**"); } } @@ -327,7 +327,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseSerratedStrikesTicks(); if(mcUsers.getProfile(player).getSerratedStrikesTicks() <= 0){ mcUsers.getProfile(player).setSerratedStrikesMode(false); - mcUsers.getProfile(player).setSerratedStrikesCooldown(120); + mcUsers.getProfile(player).setSerratedStrikesCooldown(mcLoadProperties.serratedStrikeCooldown); player.sendMessage(ChatColor.RED+"**Serrated Strikes has worn off**"); } } @@ -340,7 +340,7 @@ public class mcSkills { mcUsers.getProfile(player).decreaseBerserkTicks(); if(mcUsers.getProfile(player).getBerserkTicks() <= 0){ mcUsers.getProfile(player).setBerserkMode(false); - mcUsers.getProfile(player).setBerserkCooldown(120); + mcUsers.getProfile(player).setBerserkCooldown(mcLoadProperties.berserkCooldown); player.sendMessage(ChatColor.RED+"**Berserk has worn off**"); } } diff --git a/mcMMO/com/gmail/nossr50/mcm.java b/mcMMO/com/gmail/nossr50/mcm.java index a07dfef87..490a1c7f5 100644 --- a/mcMMO/com/gmail/nossr50/mcm.java +++ b/mcMMO/com/gmail/nossr50/mcm.java @@ -271,6 +271,12 @@ public class mcm { float skillvalue = (float)mcUsers.getProfile(player).getArcheryInt(); String percentage = String.valueOf((skillvalue / 1000) * 100); String percentagefire = String.valueOf((skillvalue / 1500) * 100); + String percentagedaze; + if(mcUsers.getProfile(player).getArcheryInt() < 1000){ + percentagedaze = String.valueOf((skillvalue / 2000) * 100); + } else { + percentagedaze = "50"; + } player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"ARCHERY"+ChatColor.RED+"[]-----"); player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---"); @@ -279,6 +285,7 @@ public class mcm { player.sendMessage(ChatColor.DARK_AQUA+"Damage+: "+ChatColor.GREEN+"Modifies Damage"); player.sendMessage(ChatColor.DARK_AQUA+"Arrow Retrieval: "+ChatColor.GREEN+"Chance to retrieve arrows from corpses"); player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---"); + player.sendMessage(ChatColor.RED+"Chance to Daze: "+ChatColor.YELLOW+percentagedaze+"%"); player.sendMessage(ChatColor.RED+"Chance to Retrieve Arrows: "+ChatColor.YELLOW+percentage+"%"); player.sendMessage(ChatColor.RED+"Chance for Ignition: "+ChatColor.YELLOW+percentagefire+"%"); player.sendMessage(ChatColor.RED+"Damage+ (Rank"+rank+"): Bonus "+rank+" damage"); diff --git a/mcMMO/plugin.yml b/mcMMO/plugin.yml index 251031da5..7580de1ab 100644 --- a/mcMMO/plugin.yml +++ b/mcMMO/plugin.yml @@ -1,3 +1,3 @@ name: mcMMO main: com.gmail.nossr50.mcMMO -version: 0.9.6 \ No newline at end of file +version: 0.9.7 \ No newline at end of file