*CLEANUP* - Acrobatics.java & Archery.java

This commit is contained in:
GJ 2012-03-12 12:45:03 -04:00
parent 0093f769f0
commit 787ee0220a
2 changed files with 126 additions and 97 deletions

View File

@ -22,17 +22,19 @@ public class Acrobatics {
public static void acrobaticsCheck(Player player, EntityDamageEvent event) {
final int ROLL_XP_MODIFIER = 80;
final int FALL_XP_MODIFIER = 120;
final int MAX_BONUS_LEVEL = 1000;
PlayerProfile PP = Users.getProfile(player);
int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
boolean gracefulRoll = player.isSneaking();
int damage = event.getDamage();
int health = player.getHealth();
if (gracefulRoll) {
acrovar = acrovar * 2;
}
if (acrovar > 1000 || Math.random() * 1000 <= acrovar) {
if (acrovar > MAX_BONUS_LEVEL || Math.random() * 1000 <= acrovar) {
int threshold = 7;
if (gracefulRoll) {
@ -46,7 +48,7 @@ public class Acrobatics {
}
/* Check for death */
if (player.getHealth() - damage >= 1) {
if (health - damage >= 1) {
PP.addXP(SkillType.ACROBATICS, damage * ROLL_XP_MODIFIER, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
@ -64,7 +66,7 @@ public class Acrobatics {
}
}
}
else if (player.getHealth() - damage >= 1) {
else if (health - damage >= 1) {
PP.addXP(SkillType.ACROBATICS, event.getDamage() * FALL_XP_MODIFIER, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
}
@ -77,9 +79,11 @@ public class Acrobatics {
*/
public static void dodgeChecks(EntityDamageByEntityEvent event) {
final int DODGE_MODIFIER = 120;
final int MAX_BONUS_LEVEL = 800;
Player defender = (Player) event.getEntity();
PlayerProfile PPd = Users.getProfile(defender);
int damage = event.getDamage();
/* PARTY CHECK */
if (event.getDamager() instanceof Player) {
@ -91,29 +95,29 @@ public class Acrobatics {
}
if (mcPermissions.getInstance().acrobatics(defender)) {
int skillCheck = 0;
int skillLevel = PPd.getSkillLevel(SkillType.ACROBATICS);
int skillCheck = skillLevel;
if (PPd.getSkillLevel(SkillType.ACROBATICS) <= 800) {
skillCheck = PPd.getSkillLevel(SkillType.ACROBATICS);
}
else {
skillCheck = 800;
if (skillLevel > MAX_BONUS_LEVEL) {
skillCheck = MAX_BONUS_LEVEL;
}
if (Math.random() * 4000 <= skillCheck) {
defender.sendMessage(mcLocale.getString("Acrobatics.Dodge"));
if (System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1) {
PPd.addXP(SkillType.ACROBATICS, event.getDamage() * DODGE_MODIFIER, defender);
if (System.currentTimeMillis() >= (5000 + PPd.getRespawnATS()) && defender.getHealth() >= 1) {
PPd.addXP(SkillType.ACROBATICS, damage * DODGE_MODIFIER, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
int newDamage = damage / 2;
//Needs to do minimal damage
if (event.getDamage() <= 0) {
if (newDamage <= 0) {
event.setDamage(1);
}
else {
event.setDamage(newDamage);
}
}
}
}

View File

@ -1,6 +1,7 @@
package com.gmail.nossr50.skills;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -13,88 +14,112 @@ import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party;
public class Archery
{
public static void trackArrows(mcMMO pluginx, Entity x, PlayerProfile PPa)
{
int skillLevel = PPa.getSkillLevel(SkillType.ARCHERY);
if(!pluginx.misc.arrowTracker.containsKey(x))
pluginx.misc.arrowTracker.put(x, 0);
if(skillLevel > 1000 || (Math.random() * 1000 <= skillLevel))
pluginx.misc.arrowTracker.put(x, 1);
}
public class Archery {
public static void ignitionCheck(Entity x, Player attacker)
{
//Check to see if PVP for this world is disabled before executing
if(!x.getWorld().getPVP())
return;
/**
* Track arrows fired for later retrieval.
*
* @param plugin mcMMO plugin instance
* @param entity Entity damaged by the arrow
* @param PPa PlayerProfile of the player firing the arrow
*/
public static void trackArrows(mcMMO plugin, Entity entity, PlayerProfile PPa) {
final int MAX_BONUS_LEVEL = 1000;
int skillLevel = PPa.getSkillLevel(SkillType.ARCHERY);
PlayerProfile PPa = Users.getProfile(attacker);
if(Math.random() * 100 >= 75)
{
int ignition = 20;
ignition += (PPa.getSkillLevel(SkillType.ARCHERY)/200)*20;
if (!plugin.misc.arrowTracker.containsKey(entity)) {
plugin.misc.arrowTracker.put(entity, 0);
}
if(ignition > 120)
ignition = 120;
if (skillLevel > MAX_BONUS_LEVEL || (Math.random() * 1000 <= skillLevel)) {
plugin.misc.arrowTracker.put(entity, 1);
}
}
if(x instanceof Player)
{
Player defender = (Player)x;
if(!Party.getInstance().inSameParty(attacker, defender))
{
defender.setFireTicks(defender.getFireTicks() + ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit")); //$NON-NLS-1$
}
}
else
{
x.setFireTicks(x.getFireTicks() + ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition")); //$NON-NLS-1$
}
}
}
/**
* Check for ignition on arrow hit.
*
* @param entity Entity damaged by the arrow
* @param attacker Player who fired the arrow
*/
public static void ignitionCheck(Entity entity, Player attacker) {
public static void dazeCheck(Player defender, Player attacker)
{
int skillLevel = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY);
//Check to see if PVP for this world is disabled before executing
if (!entity.getWorld().getPVP()) {
return;
}
Location loc = defender.getLocation();
if(Math.random() * 10 > 5)
loc.setPitch(90);
else
loc.setPitch(-90);
final int IGNITION_CHANCE = 25;
final int MAX_IGNITION_TICKS = 120;
if(skillLevel >= 1000)
{
if(Math.random() * 1000 <= 500)
{
defender.teleport(loc);
defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
else if(Math.random() * 2000 <= skillLevel)
{
defender.teleport(loc);
defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy")); //$NON-NLS-1$
attacker.sendMessage(mcLocale.getString("Combat.TargetDazed")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
PlayerProfile PPa = Users.getProfile(attacker);
public static void arrowRetrievalCheck(Entity entity, mcMMO plugin)
{
if(plugin.misc.arrowTracker.containsKey(entity))
{
Integer x = 0;
while(x < plugin.misc.arrowTracker.get(entity))
{
m.mcDropItem(entity.getLocation(), new ItemStack(262, 1));
x++;
}
}
plugin.misc.arrowTracker.remove(entity);
if (Math.random() * 100 <= IGNITION_CHANCE) {
int ignition = 20;
ignition += (PPa.getSkillLevel(SkillType.ARCHERY) / 200) * 20;
if (ignition > MAX_IGNITION_TICKS) {
ignition = MAX_IGNITION_TICKS;
}
if (entity instanceof Player) {
Player defender = (Player) entity;
if (!Party.getInstance().inSameParty(attacker, defender)) {
defender.setFireTicks(defender.getFireTicks() + ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition"));
defender.sendMessage(mcLocale.getString("Combat.BurningArrowHit"));
}
}
else {
entity.setFireTicks(entity.getFireTicks() + ignition);
attacker.sendMessage(mcLocale.getString("Combat.Ignition"));
}
}
}
/**
* Check for Daze.
*
* @param defender Defending player
* @param attacker Attacking player
*/
public static void dazeCheck(Player defender, Player attacker) {
final int MAX_BONUS_LEVEL = 1000;
int skillLevel = Users.getProfile(attacker).getSkillLevel(SkillType.ARCHERY);
Location loc = defender.getLocation();
int skillCheck = skillLevel;
if (Math.random() * 10 > 5) {
loc.setPitch(90);
}
else {
loc.setPitch(-90);
}
if (skillLevel > MAX_BONUS_LEVEL) {
skillCheck = MAX_BONUS_LEVEL;
}
if (Math.random() * 2000 <= skillCheck) {
defender.teleport(loc);
defender.sendMessage(mcLocale.getString("Combat.TouchedFuzzy"));
attacker.sendMessage(mcLocale.getString("Combat.TargetDazed"));
}
}
/**
* Check for arrow retrieval.
*
* @param entity The entity hit by the arrows
* @param plugin mcMMO plugin instance
*/
public static void arrowRetrievalCheck(Entity entity, mcMMO plugin) {
if (plugin.misc.arrowTracker.containsKey(entity)) {
m.mcDropItems(entity.getLocation(), new ItemStack(Material.ARROW), plugin.misc.arrowTracker.get(entity));
}
plugin.misc.arrowTracker.remove(entity);
}
}