mcMMO/src/main/java/com/gmail/nossr50/skills/Acrobatics.java

90 lines
2.9 KiB
Java
Raw Normal View History

2012-01-09 20:00:13 +01:00
package com.gmail.nossr50.skills;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import com.gmail.nossr50.Users;
import com.gmail.nossr50.mcPermissions;
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.datatypes.SkillType;
2012-03-03 20:48:40 +01:00
import com.gmail.nossr50.locale.mcLocale;
2012-01-09 20:00:13 +01:00
public class Acrobatics {
public static void acrobaticsCheck(Player player, EntityDamageEvent event)
{
2012-02-24 03:44:44 +01:00
PlayerProfile PP = Users.getProfile(player);
int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
if(player.isSneaking())
acrovar = acrovar * 2;
if(Math.random() * 1000 <= acrovar)
2012-02-24 03:44:44 +01:00
{
int threshold = 7;
2012-02-24 03:44:44 +01:00
if(player.isSneaking())
threshold = 14;
int newDamage = event.getDamage() - threshold;
2012-02-24 03:44:44 +01:00
if(newDamage < 0)
newDamage = 0;
2012-02-24 03:44:44 +01:00
/*
* Check for death
*/
if(player.getHealth() - newDamage >= 1)
{
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8)*10, player);
2012-02-24 03:44:44 +01:00
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
event.setDamage(newDamage);
if(event.getDamage() <= 0)
event.setCancelled(true);
if(player.isSneaking()){
2012-03-03 20:48:40 +01:00
player.sendMessage(mcLocale.getString("Acrobatics.GracefulRoll"));
2012-02-24 03:44:44 +01:00
} else {
2012-03-03 20:48:40 +01:00
player.sendMessage(mcLocale.getString("Acrobatics.Roll"));
2012-01-09 20:00:13 +01:00
}
}
}
else if(player.getHealth() - event.getDamage() >= 1)
{
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, player);
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
2012-02-24 03:44:44 +01:00
}
2012-01-09 20:00:13 +01:00
}
public static void dodgeChecks(EntityDamageByEntityEvent event){
Player defender = (Player) event.getEntity();
PlayerProfile PPd = Users.getProfile(defender);
if(mcPermissions.getInstance().acrobatics(defender)){
if(PPd.getSkillLevel(SkillType.ACROBATICS) <= 800){
if(Math.random() * 4000 <= PPd.getSkillLevel(SkillType.ACROBATICS)){
2012-03-03 20:48:40 +01:00
defender.sendMessage(mcLocale.getString("Acrobatics.Dodge"));
2012-01-09 20:00:13 +01:00
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*1, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
//Needs to do minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
} else if(Math.random() * 4000 <= 800) {
2012-03-03 20:48:40 +01:00
defender.sendMessage(mcLocale.getString("Acrobatics.Dodge"));
2012-01-09 20:00:13 +01:00
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10, defender);
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
}
event.setDamage(event.getDamage() / 2);
//Needs to deal minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
}
}
}