More optimzation

This commit is contained in:
bm01 2012-02-26 17:36:11 +01:00
parent aff6b0925f
commit ed8e2ab8b9
6 changed files with 418 additions and 469 deletions

View File

@ -22,7 +22,6 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
@ -62,17 +61,17 @@ public class Combat
ItemStack itemInHand = attacker.getItemInHand(); ItemStack itemInHand = attacker.getItemInHand();
PlayerProfile PPa = Users.getProfile(attacker); PlayerProfile PPa = Users.getProfile(attacker);
//If there are any abilities to activate
combatAbilityChecks(attacker, PPa, pluginx);
//Damage modifiers and proc checks //Damage modifiers and proc checks
if(m.isSwords(itemInHand) && mcPermissions.getInstance().swords(attacker)) if(m.isSwords(itemInHand) && mcPermissions.getInstance().swords(attacker))
{ {
if(PPa.getSwordsPreparationMode())
Swords.serratedStrikesActivationCheck(attacker, PPa);
if(!pluginx.misc.bleedTracker.contains(target)) //Bleed if(!pluginx.misc.bleedTracker.contains(target)) //Bleed
Swords.bleedCheck(attacker, target, pluginx); Swords.bleedCheck(attacker, PPa.getSkillLevel(SkillType.SWORDS), target, pluginx);
if (!(event instanceof FakeEntityDamageByEntityEvent) && PPa.getSerratedStrikesMode()) if (!(event instanceof FakeEntityDamageByEntityEvent) && PPa.getSerratedStrikesMode())
Swords.applySerratedStrikes(attacker, eEvent, pluginx); Swords.applySerratedStrikes(attacker, target, damage, pluginx);
if(target instanceof Player) if(target instanceof Player)
PvPExperienceGain(attacker, PPa, (Player) target, damage, SkillType.SWORDS); PvPExperienceGain(attacker, PPa, (Player) target, damage, SkillType.SWORDS);
@ -81,31 +80,39 @@ public class Combat
} }
else if(m.isAxes(itemInHand) && mcPermissions.getInstance().axes(attacker)) else if(m.isAxes(itemInHand) && mcPermissions.getInstance().axes(attacker))
{ {
if(Users.getProfile(attacker).getSkillLevel(SkillType.AXES) >= 500) if(PPa.getAxePreparationMode())
event.setDamage(damage + 4); Axes.skullSplitterActivationCheck(attacker, PPa);
Axes.axeCriticalCheck(attacker, eEvent, pluginx); //Critical hit if(PPa.getSkillLevel(SkillType.AXES) >= 500)
damage += 4;
damage = Axes.axeCriticalCheck(attacker, PPa.getSkillLevel(SkillType.AXES), target, damage, pluginx); //Critical hit
if (!(event instanceof FakeEntityDamageByEntityEvent) && PPa.getSkullSplitterMode()) if (!(event instanceof FakeEntityDamageByEntityEvent) && PPa.getSkullSplitterMode())
Axes.applyAoeDamage(attacker, eEvent, pluginx); Axes.applyAoeDamage(attacker, target, damage, pluginx);
if(target instanceof Player) if(target instanceof Player)
PvPExperienceGain(attacker, PPa, (Player) target, eEvent.getDamage(), SkillType.AXES); PvPExperienceGain(attacker, PPa, (Player) target, damage, SkillType.AXES);
else if(!pluginx.misc.mobSpawnerList.contains(target.getEntityId())) else if(!pluginx.misc.mobSpawnerList.contains(target.getEntityId()))
PvEExperienceGain(attacker, PPa, target, eEvent.getDamage(), SkillType.AXES); PvEExperienceGain(attacker, PPa, target, damage, SkillType.AXES);
} }
else if(itemInHand.getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker)) //Unarmed else if(itemInHand.getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker)) //Unarmed
{ {
Unarmed.unarmedBonus(attacker, eEvent); if(PPa.getFistsPreparationMode())
Unarmed.berserkActivationCheck(attacker, PPa);
damage += Unarmed.unarmedBonus(PPa);
if(PPa.getBerserkMode()) if(PPa.getBerserkMode())
event.setDamage(eEvent.getDamage() + (eEvent.getDamage() / 2)); damage *= 1.5;
if(target instanceof Player)
Unarmed.disarmProcCheck(attacker, (Player) target); //Disarm
if(target instanceof Player) if(target instanceof Player)
PvPExperienceGain(attacker, PPa, (Player) target, eEvent.getDamage(), SkillType.UNARMED); Unarmed.disarmProcCheck(attacker, PPa.getSkillLevel(SkillType.UNARMED), (Player) target); //Disarm
if(target instanceof Player)
PvPExperienceGain(attacker, PPa, (Player) target, damage, SkillType.UNARMED);
else if(!pluginx.misc.mobSpawnerList.contains(target.getEntityId())) else if(!pluginx.misc.mobSpawnerList.contains(target.getEntityId()))
PvEExperienceGain(attacker, PPa, target, eEvent.getDamage(), SkillType.UNARMED); PvEExperienceGain(attacker, PPa, target, damage, SkillType.UNARMED);
} }
//Player use bone on wolf. //Player use bone on wolf.
@ -125,6 +132,8 @@ public class Combat
mcLocale.getString("Combat.BeastLoreHealthWolf", new Object[] {wolf.getHealth()})); mcLocale.getString("Combat.BeastLoreHealthWolf", new Object[] {wolf.getHealth()}));
} }
} }
eEvent.setDamage(damage);
} }
/* /*
@ -183,17 +192,6 @@ public class Combat
} }
} }
public static void combatAbilityChecks(Player attacker, PlayerProfile PPa, Plugin pluginx)
{
//Check to see if any abilities need to be activated
if(PPa.getAxePreparationMode())
Axes.skullSplitterCheck(attacker);
if(PPa.getSwordsPreparationMode())
Swords.serratedStrikesActivationCheck(attacker);
if(PPa.getFistsPreparationMode())
Unarmed.berserkActivationCheck(attacker);
}
public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx) public static void archeryCheck(EntityDamageByEntityEvent event, mcMMO pluginx)
{ {
Arrow arrow = (Arrow)event.getDamager(); Arrow arrow = (Arrow)event.getDamager();

View File

@ -233,7 +233,7 @@ public class mcBlockListener implements Listener
Excavation.gigaDrillBreakerActivationCheck(player); Excavation.gigaDrillBreakerActivationCheck(player);
} }
if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || id == 78)) if(PP.getFistsPreparationMode() && (Excavation.canBeGigaDrillBroken(block) || id == 78))
Unarmed.berserkActivationCheck(player); Unarmed.berserkActivationCheck(player, PP);
/* /*
* TREE FELLER STUFF * TREE FELLER STUFF

View File

@ -21,125 +21,108 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf; import org.bukkit.entity.Wolf;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.Plugin;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.Combat; import com.gmail.nossr50.Combat;
import com.gmail.nossr50.Users; import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.mcPermissions; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.AbilityType; import com.gmail.nossr50.datatypes.AbilityType;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.party.Party; import com.gmail.nossr50.party.Party;
public class Axes { public class Axes
public static void skullSplitterCheck(Player player){ {
PlayerProfile PP = Users.getProfile(player); public static void skullSplitterActivationCheck(Player player, PlayerProfile PPa)
if(m.isAxes(player.getItemInHand()) && mcPermissions.getInstance().axesAbility(player)){
/*
* CHECK FOR AXE PREP MODE
*/
if(PP.getAxePreparationMode())
{ {
PP.setAxePreparationMode(false); PPa.setAxePreparationMode(false);
}
int ticks = 2; int ticks = 2;
int x = PP.getSkillLevel(SkillType.AXES); int x = PPa.getSkillLevel(SkillType.AXES);
while(x >= 50){ while(x >= 50){
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getSkullSplitterMode() && Skills.cooldownOver(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)) if (!PPa.getSkullSplitterMode())
{
if (Skills.cooldownOver(player, (PPa.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown))
{ {
player.sendMessage(mcLocale.getString("Skills.SkullSplitterOn")); player.sendMessage(mcLocale.getString("Skills.SkullSplitterOn"));
for(Player y : player.getWorld().getPlayers()){ for(Player y : player.getWorld().getPlayers()){
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()})); y.sendMessage(mcLocale.getString("Skills.SkullSplitterPlayer", new Object[] {player.getName()}));
} }
PP.setSkillDATS(AbilityType.SKULL_SPLIITER, System.currentTimeMillis()+(ticks*1000)); PPa.setSkillDATS(AbilityType.SKULL_SPLIITER, System.currentTimeMillis()+(ticks*1000));
PP.setSkullSplitterMode(true); PPa.setSkullSplitterMode(true);
} }
if(!PP.getSkullSplitterMode() && !Skills.cooldownOver(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)){
else
player.sendMessage(mcLocale.getString("Skills.TooTired") player.sendMessage(mcLocale.getString("Skills.TooTired")
+ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, (PP.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)+"s)"); +ChatColor.YELLOW+" ("+Skills.calculateTimeLeft(player, (PPa.getSkillDATS(AbilityType.SKULL_SPLIITER)*1000), LoadProperties.skullSplitterCooldown)+"s)");
}
} }
} }
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx) public static int axeCriticalCheck(Player attacker, int skillLevel, LivingEntity target, int damage, mcMMO pluginx)
{ {
Entity x = event.getEntity(); if(target instanceof Wolf)
{
if (Taming.isFriendlyWolf(attacker, (Wolf) target, pluginx))
return damage;
}
if(x instanceof Wolf){ double random = Math.random() * 1000;
Wolf wolf = (Wolf)x; int newDamage = damage;
if(Taming.getOwner(wolf, pluginx) != null)
if(skillLevel >= 750)
{ {
if(Taming.getOwner(wolf, pluginx) == attacker) if(random <= 750)
return; {
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx))) if(target instanceof Player)
return; {
} newDamage *= 1.5;
} ((Player) target).sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
PlayerProfile PPa = Users.getProfile(attacker);
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
if(PPa.getSkillLevel(SkillType.AXES) >= 750){
if(Math.random() * 1000 <= 750 && !x.isDead()){
if(x instanceof Player){
int damage = (event.getDamage() * 2) - (event.getDamage() / 2);
event.setDamage(damage);
Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
else {
int damage = event.getDamage() * 2;
event.setDamage(damage);
}
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
}
} else if(Math.random() * 1000 <= PPa.getSkillLevel(SkillType.AXES) && !x.isDead()){
if(x instanceof Player){
int damage = (event.getDamage() * 2) - (event.getDamage() / 2);
event.setDamage(damage);
Player player = (Player)x;
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
else {
int damage = event.getDamage() * 2;
event.setDamage(damage);
} }
else
newDamage *= 2;
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!"); attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
} }
} }
else if(random <= skillLevel)
{
if(target instanceof Player)
{
newDamage *= 1.5;
((Player) target).sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
}
else
newDamage *= 2;
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
} }
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Plugin pluginx) return newDamage;
}
public static void applyAoeDamage(Player attacker, LivingEntity target, int damage, mcMMO pluginx)
{ {
int targets = 0; int targets = 0;
int dmgAmount = (event.getDamage()/2); int dmgAmount = damage / 2;
//Setup minimum damage //Setup minimum damage
if(dmgAmount < 1) if(dmgAmount < 1)
dmgAmount = 1; dmgAmount = 1;
if(event.getEntity() instanceof LivingEntity)
{
LivingEntity x = (LivingEntity) event.getEntity();
targets = m.getTier(attacker); targets = m.getTier(attacker);
for(Entity derp : x.getNearbyEntities(2.5, 2.5, 2.5)) for(Entity derp : target.getNearbyEntities(2.5, 2.5, 2.5))
{ {
//Make sure the Wolf is not friendly //Make sure the Wolf is not friendly
if(derp instanceof Wolf) if(derp instanceof Wolf)
{ {
Wolf hurrDurr = (Wolf)derp; if (Taming.isFriendlyWolf(attacker, (Wolf) derp, pluginx))
if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue; continue;
} }
@ -148,36 +131,34 @@ public class Axes {
{ {
if(derp instanceof Player) if(derp instanceof Player)
{ {
Player target = (Player)derp; Player nearbyPlayer = (Player) derp;
if(Users.getProfile(target).getGodMode()) if(Users.getProfile(nearbyPlayer).getGodMode())
continue; continue;
if(target.getName().equals(attacker.getName())) if(nearbyPlayer.getName().equals(attacker.getName()))
continue; continue;
if(Party.getInstance().inSameParty(attacker, target)) if(Party.getInstance().inSameParty(attacker, nearbyPlayer))
continue; continue;
if(target.isDead()) if(target.isDead())
continue; continue;
if(targets >= 1 && derp.getWorld().getPVP()) if(targets >= 1 && nearbyPlayer.getWorld().getPVP())
{ {
Combat.dealDamage(target, dmgAmount, attacker); Combat.dealDamage(nearbyPlayer, dmgAmount, attacker);
target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!"); nearbyPlayer.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
targets--; targets--;
continue;
} }
} }
else else
{ {
LivingEntity target = (LivingEntity)derp; LivingEntity nearbyLivingEntity = (LivingEntity) derp;
Combat.dealDamage(target, dmgAmount, attacker); Combat.dealDamage(nearbyLivingEntity, dmgAmount, attacker);
targets--; targets--;
} }
} }
} }
} }
}
} }

View File

@ -35,23 +35,19 @@ import com.gmail.nossr50.party.Party;
public class Swords public class Swords
{ {
public static void serratedStrikesActivationCheck(Player player){ public static void serratedStrikesActivationCheck(Player player, PlayerProfile PPa)
PlayerProfile PP = Users.getProfile(player);
if(m.isSwords(player.getItemInHand()))
{ {
if(PP.getSwordsPreparationMode()) PPa.setSwordsPreparationMode(false);
{
PP.setSwordsPreparationMode(false);
}
int ticks = 2; int ticks = 2;
int x = PP.getSkillLevel(SkillType.SWORDS); int x = PPa.getSkillLevel(SkillType.SWORDS);
while(x >= 50) while(x >= 50)
{ {
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getSerratedStrikesMode() && PP.getSkillDATS(AbilityType.SERRATED_STRIKES) < System.currentTimeMillis()) if(!PPa.getSerratedStrikesMode() && PPa.getSkillDATS(AbilityType.SERRATED_STRIKES) < System.currentTimeMillis())
{ {
player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOn")); player.sendMessage(mcLocale.getString("Skills.SerratedStrikesOn"));
for(Player y : player.getWorld().getPlayers()) for(Player y : player.getWorld().getPlayers())
@ -59,119 +55,100 @@ public class Swords
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()})); y.sendMessage(mcLocale.getString("Skills.SerratedStrikesPlayer", new Object[] {player.getName()}));
} }
PP.setSkillDATS(AbilityType.SERRATED_STRIKES, System.currentTimeMillis()+(ticks*1000)); PPa.setSkillDATS(AbilityType.SERRATED_STRIKES, System.currentTimeMillis()+(ticks*1000));
PP.setSerratedStrikesMode(true); PPa.setSerratedStrikesMode(true);
}
} }
} }
public static void bleedCheck(Player attacker, LivingEntity x, mcMMO pluginx) public static void bleedCheck(Player attacker, int skillLevel, LivingEntity target, mcMMO pluginx)
{ {
PlayerProfile PPa = Users.getProfile(attacker); if(target instanceof Wolf)
if(x instanceof Wolf)
{ {
Wolf wolf = (Wolf)x; if(Taming.isFriendlyWolf(attacker, (Wolf) target, pluginx))
if(Taming.getOwner(wolf, pluginx) != null)
{
if(Taming.getOwner(wolf, pluginx) == attacker)
return;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(wolf, pluginx)))
return; return;
} }
}
if(mcPermissions.getInstance().swords(attacker) && m.isSwords(attacker.getItemInHand())){ double random = Math.random() * 1000;
if(PPa.getSkillLevel(SkillType.SWORDS) >= 750)
if(skillLevel >= 750)
{ {
if(Math.random() * 1000 <= 750) if(random <= 750)
{ {
if(!(x instanceof Player)) if(!(target instanceof Player))
pluginx.misc.addToBleedQue(x); pluginx.misc.addToBleedQue(target);
if(x instanceof Player) else if(target instanceof Player)
{ Users.getProfile((Player) target).addBleedTicks(3);
Player target = (Player)x;
Users.getProfile(target).addBleedTicks(3);
}
attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**"); attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**");
} }
} }
else if (Math.random() * 1000 <= PPa.getSkillLevel(SkillType.SWORDS)) else if(random <= skillLevel)
{ {
if(!(x instanceof Player)) if(!(target instanceof Player))
pluginx.misc.addToBleedQue(x); pluginx.misc.addToBleedQue(target);
if(x instanceof Player) if(target instanceof Player)
{ Users.getProfile((Player) target).addBleedTicks(2);
Player target = (Player)x;
Users.getProfile(target).addBleedTicks(2);
}
attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**"); attacker.sendMessage(ChatColor.GREEN+"**ENEMY BLEEDING**");
} }
} }
}
public static void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, mcMMO pluginx) public static void applySerratedStrikes(Player attacker, LivingEntity target, int damage, mcMMO pluginx)
{ {
int targets = 0; int targets = 0;
int dmgAmount = (event.getDamage()/4); int dmgAmount = damage / 4;
//Setup minimum damage //Setup minimum damage
if(dmgAmount < 1) if(dmgAmount < 1)
dmgAmount = 1; dmgAmount = 1;
if(event.getEntity() instanceof LivingEntity)
{
LivingEntity x = (LivingEntity) event.getEntity();
targets = m.getTier(attacker); targets = m.getTier(attacker);
for(Entity derp : x.getNearbyEntities(2.5, 2.5, 2.5)) for(Entity derp : target.getNearbyEntities(2.5, 2.5, 2.5))
{ {
//Make sure the Wolf is not friendly //Make sure the Wolf is not friendly
if(derp instanceof Wolf) if(derp instanceof Wolf)
{ {
Wolf hurrDurr = (Wolf)derp; if (Taming.isFriendlyWolf(attacker, (Wolf) target, pluginx))
if(Taming.getOwner(hurrDurr, pluginx) == attacker)
continue;
if(Party.getInstance().inSameParty(attacker, Taming.getOwner(hurrDurr, pluginx)))
continue; continue;
} }
//Damage nearby LivingEntities //Damage nearby LivingEntities
if(derp instanceof LivingEntity && targets >= 1) if(derp instanceof LivingEntity && targets >= 1)
{ {
if(derp instanceof Player) if(derp instanceof Player)
{ {
Player target = (Player)derp; Player nearbyPlayer = (Player) derp;
if(target.getName().equals(attacker.getName())) if(nearbyPlayer.getName().equals(attacker.getName()))
continue; continue;
if(Users.getProfile(target).getGodMode()) if(Users.getProfile(nearbyPlayer).getGodMode())
continue; continue;
if(Party.getInstance().inSameParty(attacker, target)) if(Party.getInstance().inSameParty(attacker, nearbyPlayer))
continue; continue;
if(targets >= 1 && derp.getWorld().getPVP())
if(targets >= 1 && nearbyPlayer.getWorld().getPVP())
{ {
Combat.dealDamage(target, dmgAmount, attacker); Combat.dealDamage(nearbyPlayer, dmgAmount, attacker);
target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!"); nearbyPlayer.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strikes!");
Users.getProfile(target).addBleedTicks(5); Users.getProfile(nearbyPlayer).addBleedTicks(5);
targets--; targets--;
continue;
} }
} }
else else
{ {
if(!pluginx.misc.bleedTracker.contains(derp)) LivingEntity neabyLivingEntity = (LivingEntity) derp;
pluginx.misc.addToBleedQue((LivingEntity)derp);
LivingEntity target = (LivingEntity)derp; if(!pluginx.misc.bleedTracker.contains(neabyLivingEntity))
Combat.dealDamage(target, dmgAmount, attacker); pluginx.misc.addToBleedQue(neabyLivingEntity);
Combat.dealDamage(neabyLivingEntity, dmgAmount, attacker);
targets--; targets--;
} }
} }
} }
} }
}
public static void counterAttackChecks(EntityDamageByEntityEvent event) public static void counterAttackChecks(EntityDamageByEntityEvent event)
{ {

View File

@ -31,6 +31,7 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
import com.gmail.nossr50.party.Party;
public class Taming public class Taming
{ {
@ -169,4 +170,11 @@ public class Taming
if(cause == DamageCause.FIRE_TICK) if(cause == DamageCause.FIRE_TICK)
event.getEntity().setFireTicks(0); event.getEntity().setFireTicks(0);
} }
public static boolean isFriendlyWolf(Player player, Wolf wolf, mcMMO pluginx)
{
if(getOwner(wolf, pluginx) == player || Party.getInstance().inSameParty(player, getOwner(wolf, pluginx)))
return true;
return false;
}
} }

View File

@ -18,9 +18,7 @@ package com.gmail.nossr50.skills;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.m; import com.gmail.nossr50.m;
import com.gmail.nossr50.config.LoadProperties; import com.gmail.nossr50.config.LoadProperties;
import com.gmail.nossr50.datatypes.AbilityType; import com.gmail.nossr50.datatypes.AbilityType;
@ -28,27 +26,21 @@ import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.locale.mcLocale; import com.gmail.nossr50.locale.mcLocale;
public class Unarmed { public class Unarmed
public static void berserkActivationCheck(Player player) {
public static void berserkActivationCheck(Player player, PlayerProfile PPa)
{ {
PlayerProfile PP = Users.getProfile(player); PPa.setFistsPreparationMode(false);
if(player.getItemInHand().getTypeId() == 0)
{
if(PP.getFistsPreparationMode())
{
PP.setFistsPreparationMode(false);
}
int ticks = 2; int ticks = 2;
int x = PP.getSkillLevel(SkillType.UNARMED); int x = PPa.getSkillLevel(SkillType.UNARMED);
while(x >= 50) while(x >= 50)
{ {
x-=50; x-=50;
ticks++; ticks++;
} }
if(!PP.getBerserkMode() && Skills.cooldownOver(player, PP.getSkillDATS(AbilityType.BERSERK), LoadProperties.berserkCooldown)) if(!PPa.getBerserkMode() && Skills.cooldownOver(player, PPa.getSkillDATS(AbilityType.BERSERK), LoadProperties.berserkCooldown))
{ {
player.sendMessage(mcLocale.getString("Skills.BerserkOn")); player.sendMessage(mcLocale.getString("Skills.BerserkOn"));
for(Player y : player.getWorld().getPlayers()) for(Player y : player.getWorld().getPlayers())
@ -56,16 +48,14 @@ public class Unarmed {
if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10) if(y != null && y != player && m.getDistance(player.getLocation(), y.getLocation()) < 10)
y.sendMessage(mcLocale.getString("Skills.BerserkPlayer", new Object[] {player.getName()})); y.sendMessage(mcLocale.getString("Skills.BerserkPlayer", new Object[] {player.getName()}));
} }
PP.setSkillDATS(AbilityType.BERSERK, System.currentTimeMillis()+(ticks*1000)); PPa.setSkillDATS(AbilityType.BERSERK, System.currentTimeMillis()+(ticks*1000));
System.out.println("getSkillDATS(): "+PP.getSkillDATS(AbilityType.BERSERK)); //System.out.println("getSkillDATS(): "+PPa.getSkillDATS(AbilityType.BERSERK));
PP.setBerserkMode(true); PPa.setBerserkMode(true);
}
} }
} }
public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event) public static int unarmedBonus(PlayerProfile PPa)
{ {
PlayerProfile PPa = Users.getProfile(attacker);
int bonus = 3; int bonus = 3;
//Add 1 DMG for every 50 skill levels //Add 1 DMG for every 50 skill levels
@ -74,45 +64,40 @@ public class Unarmed {
if(bonus > 8) if(bonus > 8)
bonus = 8; bonus = 8;
event.setDamage(event.getDamage()+bonus); return bonus;
} }
public static void disarmProcCheck(Player attacker, Player defender) public static void disarmProcCheck(Player attacker, int skillLevel, Player defender)
{ {
PlayerProfile PP = Users.getProfile(attacker); double random = Math.random() * 4000;
if(attacker.getItemInHand().getTypeId() == 0)
if(skillLevel >= 1000)
{ {
if(PP.getSkillLevel(SkillType.UNARMED) >= 1000) if(random <= 1000)
{
if(Math.random() * 4000 <= 1000)
{ {
Location loc = defender.getLocation(); Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0) ItemStack itemInHand = defender.getItemInHand();
if(itemInHand != null && itemInHand.getTypeId() != 0)
{ {
defender.sendMessage(mcLocale.getString("Skills.Disarmed")); defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
ItemStack item = defender.getItemInHand(); m.mcDropItem(loc, itemInHand);
if(item != null) defender.setItemInHand(null);
}
}
}
else
{
if(random <= skillLevel)
{ {
m.mcDropItem(loc, item);
ItemStack itemx = null;
defender.setItemInHand(itemx);
}
}
}
} else {
if(Math.random() * 4000 <= PP.getSkillLevel(SkillType.UNARMED)){
Location loc = defender.getLocation(); Location loc = defender.getLocation();
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0) ItemStack itemInHand = defender.getItemInHand();
if(itemInHand != null && itemInHand.getTypeId() != 0)
{ {
defender.sendMessage(mcLocale.getString("Skills.Disarmed")); defender.sendMessage(mcLocale.getString("Skills.Disarmed"));
ItemStack item = defender.getItemInHand(); m.mcDropItem(loc, itemInHand);
if(item != null) defender.setItemInHand(null);
{
m.mcDropItem(loc, item);
ItemStack itemx = null;
defender.setItemInHand(itemx);
}
}
} }
} }
} }