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

90 lines
2.9 KiB
Java
Raw Normal View History

2011-04-20 22:56:25 +02:00
package com.gmail.nossr50.skills;
import org.bukkit.ChatColor;
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;
2011-07-19 16:17:14 +02:00
import com.gmail.nossr50.datatypes.SkillType;
2011-04-20 22:56:25 +02:00
public class Acrobatics {
2011-07-19 16:17:14 +02:00
public static void acrobaticsCheck(Player player, EntityDamageEvent event)
{
if(player != null && mcPermissions.getInstance().acrobatics(player))
{
2011-04-20 22:56:25 +02:00
PlayerProfile PP = Users.getProfile(player);
2011-07-19 16:17:14 +02:00
int acrovar = PP.getSkillLevel(SkillType.ACROBATICS);
2011-04-20 22:56:25 +02:00
if(player.isSneaking())
acrovar = acrovar * 2;
2011-07-19 16:17:14 +02:00
if(Math.random() * 1000 <= acrovar && !event.isCancelled())
{
2011-04-20 22:56:25 +02:00
int threshold = 7;
if(player.isSneaking())
threshold = 14;
2011-07-19 16:17:14 +02:00
2011-04-20 22:56:25 +02:00
int newDamage = event.getDamage() - threshold;
if(newDamage < 0)
newDamage = 0;
/*
* Check for death
*/
if(player.getHealth() - newDamage >= 1){
if(!event.isCancelled())
2011-08-20 00:15:53 +02:00
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 8)*10);
2011-07-19 16:17:14 +02:00
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
2011-04-20 22:56:25 +02:00
event.setDamage(newDamage);
if(event.getDamage() <= 0)
event.setCancelled(true);
if(player.isSneaking()){
player.sendMessage(ChatColor.GREEN+"**GRACEFUL ROLL**");
} else {
player.sendMessage("**ROLL**");
}
}
} else if (!event.isCancelled()){
if(player.getHealth() - event.getDamage() >= 1){
2011-08-20 00:15:53 +02:00
PP.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10);
2011-07-19 16:17:14 +02:00
Skills.XpCheckSkill(SkillType.ACROBATICS, player);
2011-04-20 22:56:25 +02:00
}
}
}
}
public static void dodgeChecks(EntityDamageByEntityEvent event){
Player defender = (Player) event.getEntity();
PlayerProfile PPd = Users.getProfile(defender);
if(mcPermissions.getInstance().acrobatics(defender)){
2011-07-19 16:17:14 +02:00
if(PPd.getSkillLevel(SkillType.ACROBATICS) <= 800){
if(Math.random() * 4000 <= PPd.getSkillLevel(SkillType.ACROBATICS)){
2011-04-20 22:56:25 +02:00
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
2011-08-20 00:15:53 +02:00
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*1);
2011-07-19 16:17:14 +02:00
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
2011-04-20 22:56:25 +02:00
}
event.setDamage(event.getDamage() / 2);
//Needs to do minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
} else if(Math.random() * 4000 <= 800) {
defender.sendMessage(ChatColor.GREEN+"**DODGE**");
if(System.currentTimeMillis() >= 5000 + PPd.getRespawnATS() && defender.getHealth() >= 1){
2011-08-20 00:15:53 +02:00
PPd.addXP(SkillType.ACROBATICS, (event.getDamage() * 12)*10);
2011-07-19 16:17:14 +02:00
Skills.XpCheckSkill(SkillType.ACROBATICS, defender);
2011-04-20 22:56:25 +02:00
}
event.setDamage(event.getDamage() / 2);
//Needs to deal minimal damage
if(event.getDamage() <= 0)
event.setDamage(1);
}
}
}
}