From 0f8a418efdd2e73e1a92506152da207642ead887 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Wed, 29 Feb 2012 15:22:03 -0800 Subject: [PATCH] More work on Impact. Tweaked Unarmed's disarm chance to be 2x better. --- Changelog.txt | 1 + src/main/java/com/gmail/nossr50/Combat.java | 5 +++-- .../nossr50/commands/skills/UnarmedCommand.java | 2 +- src/main/java/com/gmail/nossr50/skills/Axes.java | 14 ++++++++------ .../java/com/gmail/nossr50/skills/Unarmed.java | 4 ++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index e67cfe347..34057e6a9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -45,6 +45,7 @@ Version 1.3.00-dev ! Changed Unarmed to start with a +3 DMG (1 Heart = 2 DMG) bonus from Iron Arm Style to make leveling it more viable ! Changed Unarmed to gain bonus damage every 50 skill levels ! Changed Unarmed to gain more bonus damage total than before + ! Changed Unarmed to disarm twice as often as before ! Changed Tree Feller to take down entire trees ! Changed mob spawn tracking to use Unique Entity ID instead of Entity Object ! Changed stats command name to mcstats for better plugin compatibility diff --git a/src/main/java/com/gmail/nossr50/Combat.java b/src/main/java/com/gmail/nossr50/Combat.java index 37eb5f924..bd4f0b7bf 100644 --- a/src/main/java/com/gmail/nossr50/Combat.java +++ b/src/main/java/com/gmail/nossr50/Combat.java @@ -83,8 +83,8 @@ public class Combat Axes.axeCriticalCheck(attacker, event, pluginx); //Critical hit //Impact - //if(event.getEntity() instanceof LivingEntity) - // Axes.impact(attacker, (LivingEntity)event.getEntity()); + if(event.getEntity() instanceof LivingEntity) + Axes.impact(attacker, (LivingEntity)event.getEntity()); if (!(event instanceof FakeEntityDamageByEntityEvent) && PPa.getSkullSplitterMode()) Axes.applyAoeDamage(attacker, event, pluginx); @@ -99,6 +99,7 @@ public class Combat Unarmed.unarmedBonus(attacker, event); if(PPa.getBerserkMode()) event.setDamage(event.getDamage() + (event.getDamage() / 2)); + if(target instanceof Player) Unarmed.disarmProcCheck(attacker, (Player) target); //Disarm diff --git a/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java index 54a7a84d9..80074cc25 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java @@ -26,7 +26,7 @@ public class UnarmedCommand implements CommandExecutor { float skillvalue = (float) PP.getSkillLevel(SkillType.UNARMED); if (PP.getSkillLevel(SkillType.UNARMED) < 1000) - percentage = String.valueOf((skillvalue / 4000) * 100); + percentage = String.valueOf((skillvalue / 2000) * 100); else percentage = "25"; diff --git a/src/main/java/com/gmail/nossr50/skills/Axes.java b/src/main/java/com/gmail/nossr50/skills/Axes.java index 7e69c0d73..d13849740 100644 --- a/src/main/java/com/gmail/nossr50/skills/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/Axes.java @@ -17,6 +17,7 @@ package com.gmail.nossr50.skills; import org.bukkit.ChatColor; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -25,6 +26,7 @@ import org.bukkit.entity.Wolf; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; +import org.bukkit.util.Vector; import com.gmail.nossr50.Combat; import com.gmail.nossr50.Users; @@ -94,7 +96,6 @@ public class Axes { for(ItemStack x : targetPlayer.getInventory().getArmorContents()) { - System.out.println("[mcMMO] DEBUG: "+x.getType().toString()); if(x.getType() == Material.AIR) { emptySlots++; @@ -105,12 +106,13 @@ public class Axes { if(emptySlots == 4) { - targetPlayer.sendMessage("**HIT BY IMPACT**"); - didImpact = applyImpact(target); + didImpact = applyImpact(attacker, target); + if(didImpact) + targetPlayer.sendMessage("**HIT BY IMPACT**"); } } else { //Since mobs are technically unarmored this will always trigger - didImpact = applyImpact(target); + didImpact = applyImpact(attacker, target); } if(didImpact) @@ -119,12 +121,12 @@ public class Axes { } } - public static boolean applyImpact(LivingEntity target) + public static boolean applyImpact(Player attacker, LivingEntity target) { if(Math.random() * 100 > 75) { - target.teleport(target.getLocation()); target.damage(2); + target.setVelocity(attacker.getLocation().getDirection().normalize().multiply(1.5D)); return true; } return false; diff --git a/src/main/java/com/gmail/nossr50/skills/Unarmed.java b/src/main/java/com/gmail/nossr50/skills/Unarmed.java index 6fc12a378..28139983b 100644 --- a/src/main/java/com/gmail/nossr50/skills/Unarmed.java +++ b/src/main/java/com/gmail/nossr50/skills/Unarmed.java @@ -46,7 +46,7 @@ public class Unarmed { { if(skillLevel >= 1000) { - if(Math.random() * 4000 <= 1000) + if(Math.random() * 2000 <= 1000) { ItemStack item = defender.getItemInHand(); if(item != null) @@ -59,7 +59,7 @@ public class Unarmed { } else { - if(Math.random() * 4000 <= skillLevel) + if(Math.random() * 2000 <= skillLevel) { ItemStack item = defender.getItemInHand(); if(item != null)