mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-22 21:26:46 +01:00
Another WIP
This commit is contained in:
parent
b38dcbe785
commit
d1a7e5b661
@ -16,7 +16,9 @@ import org.bukkit.entity.Zombie;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.config.LoadProperties;
|
||||
@ -26,17 +28,19 @@ import com.gmail.nossr50.skills.Acrobatics;
|
||||
import com.gmail.nossr50.skills.Axes;
|
||||
import com.gmail.nossr50.skills.Skills;
|
||||
import com.gmail.nossr50.skills.Swords;
|
||||
import com.gmail.nossr50.skills.Taming;
|
||||
import com.gmail.nossr50.skills.Unarmed;
|
||||
|
||||
public class Combat {
|
||||
private static mcMMO plugin;
|
||||
public Combat(mcMMO instance) {
|
||||
plugin = instance;
|
||||
}
|
||||
public static void combatChecks(EntityDamageEvent event){
|
||||
public static void combatChecks(EntityDamageEvent event, Plugin pluginx){
|
||||
if(event.isCancelled() || event.getDamage() == 0)
|
||||
return;
|
||||
/*
|
||||
* OFFENSIVE CHECKS
|
||||
* OFFENSIVE CHECKS FOR PLAYERS VERSUS ENTITIES
|
||||
*/
|
||||
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
|
||||
{
|
||||
@ -45,27 +49,114 @@ public class Combat {
|
||||
Player attacker = (Player)((EntityDamageByEntityEvent) event).getDamager();
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
|
||||
//Damage modifiers
|
||||
if(mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0) //Unarmed
|
||||
Unarmed.unarmedBonus(attacker, eventb);
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker) && PPa.getAxesInt() >= 500)
|
||||
event.setDamage(event.getDamage()+4);
|
||||
|
||||
//If there are any abilities to activate
|
||||
combatAbilityChecks(attacker, PPa);
|
||||
|
||||
//Check for offensive procs
|
||||
Axes.axeCriticalCheck(attacker, eventb); //Axe Criticals
|
||||
if(!Config.getInstance().isBleedTracked(event.getEntity())) //Swords Bleed
|
||||
Swords.bleedCheck(attacker, event.getEntity());
|
||||
|
||||
//Modify the event damage if Attacker is Berserk
|
||||
if(PPa.getBerserkMode())
|
||||
event.setDamage(event.getDamage() + (event.getDamage() / 2));
|
||||
//Handle the combat interactions between the Player and the defending entity
|
||||
if(event.getEntity() instanceof Player)
|
||||
playerVersusPlayerChecks(eventb, attacker);
|
||||
if(event.getEntity() instanceof Animals)
|
||||
playerVersusAnimalsChecks(eventb, attacker);
|
||||
if(event.getEntity() instanceof Monster)
|
||||
playerVersusMonsterChecks(eventb, attacker);
|
||||
if(event.getEntity() instanceof Squid)
|
||||
playerVersusSquidChecks(eventb, attacker);
|
||||
|
||||
//Handle Ability Interactions
|
||||
if(PPa.getSkullSplitterMode() && m.isAxes(attacker.getItemInHand()))
|
||||
Axes.applyAoeDamage(attacker, eventb);
|
||||
if(PPa.getSerratedStrikesMode() && m.isSwords(attacker.getItemInHand()))
|
||||
Swords.applySerratedStrikes(attacker, eventb);
|
||||
|
||||
//Experience
|
||||
if(event.getEntity() instanceof Player)
|
||||
{
|
||||
Player defender = (Player)event.getEntity();
|
||||
PlayerProfile PPd = Users.getProfile(defender);
|
||||
if(attacker != null && defender != null && LoadProperties.pvpxp)
|
||||
{
|
||||
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000 && defender.getHealth() >= 1)
|
||||
{
|
||||
if(m.isAxes(attacker.getItemInHand()))
|
||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
if(m.isSwords(attacker.getItemInHand()))
|
||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
if(attacker.getItemInHand().getTypeId() == 0)
|
||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(event.getEntity() instanceof Monster)
|
||||
{
|
||||
int xp = 0;
|
||||
if(event.getEntity() instanceof Creeper)
|
||||
xp = (event.getDamage() * 4) * LoadProperties.xpGainMultiplier;
|
||||
if(event.getEntity() instanceof Spider)
|
||||
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
|
||||
if(event.getEntity() instanceof Skeleton)
|
||||
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
|
||||
if(event.getEntity() instanceof Zombie)
|
||||
xp = (event.getDamage() * 2) * LoadProperties.xpGainMultiplier;
|
||||
if(event.getEntity() instanceof PigZombie)
|
||||
xp = (event.getDamage() * 3) * LoadProperties.xpGainMultiplier;
|
||||
|
||||
if(m.isSwords(attacker.getItemInHand()) && mcPermissions.getInstance().swords(attacker))
|
||||
PPa.addSwordsXP(xp);
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker))
|
||||
PPa.addAxesXP(xp);
|
||||
if(attacker.getItemInHand().getTypeId() == 0 && mcPermissions.getInstance().unarmed(attacker))
|
||||
PPa.addUnarmedXP(xp);
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
|
||||
//Taming Debug Stuff
|
||||
if(event.getEntity() instanceof Wolf)
|
||||
{
|
||||
attacker.sendMessage("mcMMO Debug: Wolf Owner Name "+Taming.getOwnerName(event.getEntity()));
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* OFFENSIVE CHECKS FOR WOLVES VERSUS ENTITIES
|
||||
*/
|
||||
if(event instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) event).getDamager() instanceof Wolf){
|
||||
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent) event;
|
||||
if(Taming.hasOwner(eventb.getDamager(), pluginx)){
|
||||
Player master = Taming.getOwner(eventb.getDamager(), pluginx);
|
||||
PlayerProfile PPo = Users.getProfile(master);
|
||||
|
||||
//Sharpened Claws
|
||||
if(PPo.getTamingInt() >= 750)
|
||||
{
|
||||
event.setDamage(event.getDamage() + 2);
|
||||
}
|
||||
|
||||
//Gore
|
||||
if(Math.random() * 1000 <= PPo.getTamingInt())
|
||||
{
|
||||
event.setDamage(event.getDamage() * 2);
|
||||
|
||||
if(event.getEntity() instanceof Player)
|
||||
{
|
||||
Player target = (Player)event.getEntity();
|
||||
target.sendMessage(ChatColor.RED+"**STRUCK BY GORE**");
|
||||
Users.getProfile(target).setBleedTicks(2);
|
||||
}
|
||||
else
|
||||
Config.getInstance().addToBleedQue(event.getEntity());
|
||||
|
||||
master.sendMessage(ChatColor.GREEN+"**GORE**");
|
||||
}
|
||||
PPo.addTamingXP(event.getDamage() * 4);
|
||||
master.sendMessage("mcMMO Debug: Event Damage "+event.getDamage());
|
||||
Skills.XpCheck(master);
|
||||
}
|
||||
}
|
||||
//Another offensive check for Archery
|
||||
if(event instanceof EntityDamageByProjectileEvent)
|
||||
@ -81,6 +172,27 @@ public class Combat {
|
||||
Swords.counterAttackChecks(event);
|
||||
Acrobatics.dodgeChecks((EntityDamageByEntityEvent)event);
|
||||
}
|
||||
/*
|
||||
* DEFENSIVE CHECKS FOR WOLVES
|
||||
*/
|
||||
if(event.getEntity() instanceof Wolf){
|
||||
if(Taming.hasOwner(event.getEntity(), pluginx))
|
||||
{
|
||||
Player master = Taming.getOwner(event.getEntity(), pluginx);
|
||||
PlayerProfile PPo = Users.getProfile(master);
|
||||
|
||||
//Shock-Proof
|
||||
if((event.getCause() == DamageCause.ENTITY_EXPLOSION || event.getCause() == DamageCause.BLOCK_EXPLOSION) && PPo.getTamingInt() >= 500)
|
||||
{
|
||||
event.setDamage(event.getDamage() / 6);
|
||||
}
|
||||
|
||||
//Thick Fur
|
||||
if(PPo.getTamingInt() >= 250)
|
||||
event.setDamage(event.getDamage() / 2);
|
||||
master.sendMessage("mcMMO Debug: Wolf Damage Taken "+event.getDamage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void combatAbilityChecks(Player attacker, PlayerProfile PPa){
|
||||
@ -92,239 +204,6 @@ public class Combat {
|
||||
if(PPa.getFistsPreparationMode())
|
||||
Skills.berserkActivationCheck(attacker, plugin);
|
||||
}
|
||||
public static void playerVersusPlayerChecks(EntityDamageByEntityEvent event, Player attacker){
|
||||
Entity x = event.getEntity();
|
||||
if(x instanceof Player){
|
||||
if(LoadProperties.pvp == false){
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
Player defender = (Player)x;
|
||||
PlayerProfile PPd = Users.getProfile(defender);
|
||||
|
||||
/*
|
||||
* COMPATABILITY CHECKS (Stuff that wouldn't happen normally in basically...)
|
||||
*/
|
||||
if(Users.getProfile(defender) == null)
|
||||
Users.addUser(defender);
|
||||
if(attacker != null && defender != null && Users.getProfile(attacker).inParty() && Users.getProfile(defender).inParty()){
|
||||
if(Party.getInstance().inSameParty(defender, attacker)){
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* AXE CRITICAL CHECK
|
||||
*/
|
||||
axeCriticalCheck(attacker, event, x);
|
||||
if(!Config.getInstance().isBleedTracked(x)){
|
||||
Swords.bleedCheck(attacker, x);
|
||||
}
|
||||
if(defender != null && mcPermissions.getInstance().unarmed(attacker) && attacker.getItemInHand().getTypeId() == 0){
|
||||
|
||||
//Bonus just for having unarmed
|
||||
int bonus = 2;
|
||||
if (PPa.getUnarmedInt() >= 250)
|
||||
bonus++;
|
||||
if (PPa.getUnarmedInt() >= 500)
|
||||
bonus++;
|
||||
event.setDamage(calculateDamage(event, bonus));
|
||||
|
||||
//PROC
|
||||
if(simulateUnarmedProc(attacker)){
|
||||
Location loc = defender.getLocation();
|
||||
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0){
|
||||
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
||||
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
||||
ItemStack item = defender.getItemInHand();
|
||||
if(item != null){
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
ItemStack itemx = null;
|
||||
defender.setItemInHand(itemx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* PVP XP
|
||||
*/
|
||||
if(attacker != null && defender != null && LoadProperties.pvpxp){
|
||||
if(PPd.inParty() && PPa.inParty() && Party.getInstance().inSameParty(attacker, defender))
|
||||
return;
|
||||
if(System.currentTimeMillis() >= PPd.getRespawnATS() + 5000 && defender.getHealth() >= 1){
|
||||
if(m.isAxes(attacker.getItemInHand()))
|
||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
if(m.isSwords(attacker.getItemInHand()))
|
||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
if(attacker.getItemInHand().getTypeId() == 0)
|
||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.pvpxprewardmodifier);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* CHECK FOR LEVEL UPS
|
||||
*/
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
}
|
||||
public static void playerVersusSquidChecks(EntityDamageByEntityEvent event, Player attacker){
|
||||
Entity x = event.getEntity();
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
int type = attacker.getItemInHand().getTypeId();
|
||||
if(x instanceof Squid){
|
||||
if(!Config.getInstance().isBleedTracked(x)){
|
||||
Swords.bleedCheck(attacker, x);
|
||||
}
|
||||
Squid defender = (Squid)event.getEntity();
|
||||
if(m.isSwords(attacker.getItemInHand()) && defender.getHealth() > 0 && mcPermissions.getInstance().swords(attacker)){
|
||||
PPa.addSwordsXP(10 * LoadProperties.xpGainMultiplier);
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
if(m.isAxes(attacker.getItemInHand())
|
||||
&& defender.getHealth() > 0
|
||||
&& mcPermissions.getInstance().axes(attacker)){
|
||||
PPa.addAxesXP(10 * LoadProperties.xpGainMultiplier);
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||
if(PPa.getAxesInt() >= 500){
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
}
|
||||
}
|
||||
/*
|
||||
* UNARMED VS SQUID
|
||||
*/
|
||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
||||
if(defender.getHealth() <= 0)
|
||||
return;
|
||||
|
||||
//Bonus just for having unarmed
|
||||
int bonus = 2;
|
||||
if (PPa.getUnarmedInt() >= 250)
|
||||
bonus++;
|
||||
if (PPa.getUnarmedInt() >= 500)
|
||||
bonus++;
|
||||
event.setDamage(calculateDamage(event, bonus));
|
||||
|
||||
//XP
|
||||
if(defender.getHealth() != 0){
|
||||
PPa.addUnarmedXP(10 * LoadProperties.xpGainMultiplier);
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void playerVersusAnimalsChecks(EntityDamageByEntityEvent event, Player attacker){
|
||||
int type = attacker.getItemInHand().getTypeId();
|
||||
Entity x = event.getEntity();
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
if(x instanceof Animals){
|
||||
if(!Config.getInstance().isBleedTracked(x)){
|
||||
Swords.bleedCheck(attacker, x);
|
||||
}
|
||||
Animals defender = (Animals)event.getEntity();
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||
if(defender.getHealth() <= 0)
|
||||
return;
|
||||
if(PPa.getAxesInt() >= 500){
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
}
|
||||
}
|
||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
||||
//Bonus just for having unarmed
|
||||
int bonus = 2;
|
||||
if (PPa.getUnarmedInt() >= 250)
|
||||
bonus++;
|
||||
if (PPa.getUnarmedInt() >= 500)
|
||||
bonus++;
|
||||
event.setDamage(calculateDamage(event, bonus));
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void playerVersusMonsterChecks(EntityDamageByEntityEvent event, Player attacker){
|
||||
Entity x = event.getEntity();
|
||||
int type = attacker.getItemInHand().getTypeId();
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
if(x instanceof Monster){
|
||||
/*
|
||||
* AXE PROC CHECKS
|
||||
*/
|
||||
axeCriticalCheck(attacker, event, x);
|
||||
if(!Config.getInstance().isBleedTracked(x)){
|
||||
Swords.bleedCheck(attacker, x);
|
||||
}
|
||||
Monster defender = (Monster)event.getEntity();
|
||||
if(m.isSwords(attacker.getItemInHand())
|
||||
&& defender.getHealth() > 0
|
||||
&& mcPermissions.getInstance().swords(attacker)){
|
||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
||||
if(x instanceof Creeper)
|
||||
PPa.addSwordsXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Spider)
|
||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Skeleton)
|
||||
PPa.addSwordsXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Zombie)
|
||||
PPa.addSwordsXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof PigZombie)
|
||||
PPa.addSwordsXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
if(m.isAxes(attacker.getItemInHand())
|
||||
&& defender.getHealth() > 0
|
||||
&& mcPermissions.getInstance().axes(attacker)){
|
||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
||||
if(x instanceof Creeper)
|
||||
PPa.addAxesXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Spider)
|
||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Skeleton)
|
||||
PPa.addAxesXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Zombie)
|
||||
PPa.addAxesXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof PigZombie)
|
||||
PPa.addAxesXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
/*
|
||||
* AXE DAMAGE SCALING && LOOT CHECKS
|
||||
*/
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||
if(PPa.getAxesInt() >= 500){
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
}
|
||||
}
|
||||
if(type == 0 && mcPermissions.getInstance().unarmed(attacker)){
|
||||
if(defender.getHealth() <= 0)
|
||||
return;
|
||||
|
||||
//Bonus just for having unarmed
|
||||
int bonus = 2;
|
||||
if (PPa.getUnarmedInt() >= 250)
|
||||
bonus++;
|
||||
if (PPa.getUnarmedInt() >= 500)
|
||||
bonus++;
|
||||
event.setDamage(calculateDamage(event, bonus));
|
||||
|
||||
//XP
|
||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
||||
if(x instanceof Creeper)
|
||||
PPa.addUnarmedXP((event.getDamage() * 4) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Spider)
|
||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Skeleton)
|
||||
PPa.addUnarmedXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof Zombie)
|
||||
PPa.addUnarmedXP((event.getDamage() * 2) * LoadProperties.xpGainMultiplier);
|
||||
if(x instanceof PigZombie)
|
||||
PPa.addUnarmedXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void archeryCheck(EntityDamageByProjectileEvent event){
|
||||
Entity y = event.getDamager();
|
||||
Entity x = event.getEntity();
|
||||
@ -370,6 +249,20 @@ public class Combat {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* DAMAGE MODIFIER
|
||||
*/
|
||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||
event.setDamage(event.getDamage()+1);
|
||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||
event.setDamage(event.getDamage()+2);
|
||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||
event.setDamage(event.getDamage()+3);
|
||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||
event.setDamage(event.getDamage()+4);
|
||||
if(PPa.getArcheryInt() >= 1000)
|
||||
event.setDamage(event.getDamage()+5);
|
||||
|
||||
/*
|
||||
* IGNITION
|
||||
*/
|
||||
@ -403,19 +296,6 @@ public class Combat {
|
||||
* Defender is Monster
|
||||
*/
|
||||
if(x instanceof Monster){
|
||||
/*
|
||||
* TRACK ARROWS USED AGAINST THE ENTITY
|
||||
*/
|
||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||
event.setDamage(calculateDamage(event, 2));
|
||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||
event.setDamage(calculateDamage(event, 3));
|
||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
if(PPa.getArcheryInt() >= 1000)
|
||||
event.setDamage(calculateDamage(event, 5));
|
||||
//XP
|
||||
if(!Config.getInstance().isMobSpawnTracked(x)){
|
||||
if(x instanceof Creeper)
|
||||
@ -430,36 +310,6 @@ public class Combat {
|
||||
PPa.addArcheryXP((event.getDamage() * 3) * LoadProperties.xpGainMultiplier);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Defender is Animals
|
||||
*/
|
||||
if(x instanceof Animals){
|
||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||
event.setDamage(calculateDamage(event, 2));
|
||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||
event.setDamage(calculateDamage(event, 3));
|
||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
if(PPa.getArcheryInt() >= 1000)
|
||||
event.setDamage(calculateDamage(event, 5));
|
||||
}
|
||||
/*
|
||||
* Defender is Squid
|
||||
*/
|
||||
if(x instanceof Squid){
|
||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||
event.setDamage(calculateDamage(event, 2));
|
||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||
event.setDamage(calculateDamage(event, 3));
|
||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
if(PPa.getArcheryInt() >= 1000)
|
||||
event.setDamage(calculateDamage(event, 5));
|
||||
}
|
||||
/*
|
||||
* Attacker is Player
|
||||
*/
|
||||
@ -505,38 +355,10 @@ public class Combat {
|
||||
defender.sendMessage(ChatColor.DARK_RED+"Touched Fuzzy. Felt Dizzy.");
|
||||
attacker.sendMessage("Target was "+ChatColor.DARK_RED+"Dazed");
|
||||
}
|
||||
|
||||
if(PPa.getArcheryInt() >= 50 && PPa.getArcheryInt() < 250)
|
||||
event.setDamage(calculateDamage(event, 1));
|
||||
if(PPa.getArcheryInt() >= 250 && PPa.getArcheryInt() < 575)
|
||||
event.setDamage(calculateDamage(event, 2));
|
||||
if(PPa.getArcheryInt() >= 575 && PPa.getArcheryInt() < 725)
|
||||
event.setDamage(calculateDamage(event, 3));
|
||||
if(PPa.getArcheryInt() >= 725 && PPa.getArcheryInt() < 1000)
|
||||
event.setDamage(calculateDamage(event, 4));
|
||||
if(PPa.getArcheryInt() >= 1000)
|
||||
event.setDamage(calculateDamage(event, 5));
|
||||
}
|
||||
}
|
||||
Skills.XpCheck(attacker);
|
||||
}
|
||||
}
|
||||
public static boolean simulateUnarmedProc(Player player){
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(PP.getUnarmedInt() >= 1000){
|
||||
if(Math.random() * 4000 <= 1000){
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if(Math.random() * 4000 <= PP.getUnarmedInt()){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int calculateDamage(EntityDamageEvent event, int dmg){
|
||||
return event.getDamage() + dmg;
|
||||
}
|
||||
public static void dealDamage(Entity target, int dmg){
|
||||
if(target instanceof Player){
|
||||
@ -549,38 +371,4 @@ public class Combat {
|
||||
((Monster) target).damage(dmg);
|
||||
}
|
||||
}
|
||||
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||
if(PPa.getAxesInt() >= 750){
|
||||
if(Math.random() * 1000 <= 750){
|
||||
if(x instanceof Player){
|
||||
Player player = (Player)x;
|
||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||
}
|
||||
if(x instanceof Player){
|
||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||
} else {
|
||||
event.setDamage(event.getDamage() * 2);
|
||||
}
|
||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||
}
|
||||
} else if(Math.random() * 1000 <= PPa.getAxesInt()){
|
||||
if(x instanceof Player){
|
||||
Player player = (Player)x;
|
||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||
}
|
||||
if(x instanceof Player){
|
||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||
} else {
|
||||
event.setDamage(event.getDamage() * 2);
|
||||
}
|
||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -38,7 +38,47 @@ public class Database {
|
||||
System.out.println("VendorError: " + ex.getErrorCode());
|
||||
}
|
||||
}
|
||||
|
||||
//Create the DB structure
|
||||
public void createStructure(){
|
||||
Write("CREATE TABLE IF NOT EXISTS `users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT," +
|
||||
"`user` varchar(30) NOT NULL," +
|
||||
"`lastlogin` int(10) unsigned NOT NULL," +
|
||||
"`party` varchar(100) NOT NULL DEFAULT ''," +
|
||||
"PRIMARY KEY (`id`)," +
|
||||
"UNIQUE KEY `user` (`user`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
|
||||
Write("CREATE TABLE IF NOT EXISTS `skills` (`user_id` int(10) unsigned NOT NULL," +
|
||||
"`taming` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`mining` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`repair` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`unarmed` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`herbalism` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`excavation` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`archery` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`swords` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`axes` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||
Write("CREATE TABLE IF NOT EXISTS `experience` (`user_id` int(10) unsigned NOT NULL," +
|
||||
"`taming` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`mining` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`woodcutting` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`repair` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`unarmed` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`herbalism` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`excavation` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`archery` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`swords` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`axes` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"`acrobatics` int(10) unsigned NOT NULL DEFAULT '0'," +
|
||||
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||
Write("CREATE TABLE IF NOT EXISTS `spawn` (`user_id` int(10) NOT NULL," +
|
||||
"`x` int(11) NOT NULL DEFAULT '0'," +
|
||||
"`y` int(11) NOT NULL DEFAULT '0'," +
|
||||
"`z` int(11) NOT NULL DEFAULT '0'," +
|
||||
"`world` varchar(50) NOT NULL DEFAULT ''," +
|
||||
"PRIMARY KEY (`user_id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
|
||||
}
|
||||
// write query
|
||||
public boolean Write(String sql) {
|
||||
try {
|
||||
|
@ -700,12 +700,12 @@ public class PlayerProfile
|
||||
public void skillUpTaming(int newskill){
|
||||
int x = 0;
|
||||
if(taming != null){
|
||||
if(isInt(taming)){
|
||||
x = Integer.parseInt(taming);
|
||||
}else {
|
||||
taming = "0";
|
||||
x = Integer.parseInt(taming);
|
||||
}
|
||||
if(isInt(taming)){
|
||||
x = Integer.parseInt(taming);
|
||||
}else {
|
||||
taming = "0";
|
||||
x = Integer.parseInt(taming);
|
||||
}
|
||||
}
|
||||
x += newskill;
|
||||
taming = Integer.toString(x);
|
||||
@ -1053,7 +1053,7 @@ public class PlayerProfile
|
||||
x = Integer.parseInt(tamingXP);
|
||||
}
|
||||
x += newXP;
|
||||
acrobaticsXP = String.valueOf(x);
|
||||
tamingXP = String.valueOf(x);
|
||||
save();
|
||||
}
|
||||
public void addAcrobaticsXP(int newXP)
|
||||
|
@ -3,4 +3,4 @@ package com.gmail.nossr50.datatypes;
|
||||
public class PlayerStat {
|
||||
public String name;
|
||||
public int statVal = 0;
|
||||
}
|
||||
}
|
@ -26,7 +26,6 @@ public class m {
|
||||
* I'm storing my functions/methods in here in an unorganized manner. Spheal with it.
|
||||
*/
|
||||
private static mcMMO plugin;
|
||||
private static mcMMO pluginx;
|
||||
public m(mcMMO instance) {
|
||||
plugin = instance;
|
||||
}
|
||||
@ -172,7 +171,6 @@ public class m {
|
||||
for (int cy = -radius; cy <= radius; cy++) {
|
||||
for (int cz = -radius; cz <= radius; cz++) {
|
||||
Block block = loc.getWorld().getBlockAt(ox + cx, oy + cy, oz + cz);
|
||||
//If block is block
|
||||
if (block.getTypeId() == typeid) {
|
||||
return true;
|
||||
}
|
||||
@ -181,6 +179,7 @@ public class m {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isPvpEnabled(){
|
||||
String propertyName = "pvp";
|
||||
FileReader fr = null;
|
||||
@ -304,6 +303,35 @@ public class m {
|
||||
}
|
||||
public static void mmoHelpCheck(String[] split, Player player, PlayerChatEvent event){
|
||||
PlayerProfile PP = Users.getProfile(player);
|
||||
if(split[0].equalsIgnoreCase("/taming")){
|
||||
event.setCancelled(true);
|
||||
float skillvalue = (float)PP.getTamingInt();
|
||||
|
||||
String percentage = String.valueOf((skillvalue / 1000) * 100);
|
||||
player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"TAMING"+ChatColor.RED+"[]-----");
|
||||
player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Fighting with your wolves");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
|
||||
//player.sendMessage(ChatColor.DARK_AQUA+"Tree Feller (ABILITY): "+ChatColor.GREEN+"Make trees explode");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Gore: "+ChatColor.YELLOW+ChatColor.GREEN+"Critical Strike that applies Bleed");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Sharpened Claws: "+ChatColor.YELLOW+ChatColor.GREEN+"Damage Bonus");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Thick Fur: "+ChatColor.YELLOW+ChatColor.GREEN+"Damage Reduction");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Shock Proof: "+ChatColor.YELLOW+ChatColor.GREEN+"Explosive Damage Reduction");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
|
||||
if(PP.getTamingInt() < 250)
|
||||
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 250+ SKILL (THICK FUR)");
|
||||
else
|
||||
player.sendMessage(ChatColor.RED+"Thick Fur: "+ChatColor.YELLOW+"Halved Damage");
|
||||
if(PP.getTamingInt() < 500)
|
||||
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 500+ SKILL (SHOCK PROOF)");
|
||||
else
|
||||
player.sendMessage(ChatColor.RED+"Shock Proof: "+ChatColor.YELLOW+"Explosives do 1/6 normal damage");
|
||||
if(PP.getTamingInt() < 750)
|
||||
player.sendMessage(ChatColor.GRAY+"LOCKED UNTIL 750+ SKILL (SHARPENED CLAWS)");
|
||||
else
|
||||
player.sendMessage(ChatColor.RED+"Sharpened Claws: "+ChatColor.YELLOW+"+2 Damage");
|
||||
player.sendMessage(ChatColor.RED+"Gore Chance: "+ChatColor.YELLOW+percentage+"%");
|
||||
//player.sendMessage(ChatColor.RED+"Tree Feller Length: "+ChatColor.YELLOW+ticks+"s");
|
||||
}
|
||||
if(split[0].equalsIgnoreCase("/woodcutting")){
|
||||
event.setCancelled(true);
|
||||
float skillvalue = (float)PP.getWoodCuttingInt();
|
||||
|
@ -99,7 +99,7 @@ public class mcEntityListener extends EntityListener {
|
||||
if(Party.getInstance().inSameParty(defender, attacker))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
Combat.combatChecks(event);
|
||||
Combat.combatChecks(event, plugin);
|
||||
}
|
||||
/*
|
||||
* Check to see if the defender took damage so we can apply recently hurt
|
||||
|
@ -100,7 +100,8 @@ public class mcMMO extends JavaPlugin {
|
||||
|
||||
PluginDescriptionFile pdfFile = this.getDescription();
|
||||
mcPermissions.initialize(getServer());
|
||||
mcLoadMySQL();
|
||||
mcLoadMySQL();
|
||||
database.createStructure(); //Make Structure
|
||||
|
||||
Leaderboard.makeLeaderboards(); //Make the leaderboards
|
||||
System.out.println( pdfFile.getName() + " version " + pdfFile.getVersion() + " is enabled!" );
|
||||
|
@ -7,7 +7,9 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Wolf;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
@ -26,6 +28,7 @@ import com.gmail.nossr50.party.Party;
|
||||
import com.gmail.nossr50.skills.Herbalism;
|
||||
import com.gmail.nossr50.skills.Repair;
|
||||
import com.gmail.nossr50.skills.Skills;
|
||||
import com.gmail.nossr50.skills.Taming;
|
||||
|
||||
|
||||
public class mcPlayerListener extends PlayerListener {
|
||||
@ -82,7 +85,6 @@ public class mcPlayerListener extends PlayerListener {
|
||||
if(mcPermissions.getInstance().motd(player)){
|
||||
player.sendMessage(ChatColor.BLUE +"This server is running MMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+LoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
|
||||
player.sendMessage(ChatColor.GREEN+"http://mmo.wikia.com"+ChatColor.BLUE+" - MMO Wiki");
|
||||
player.sendMessage(ChatColor.DARK_RED+"ATTN: YOUR STATS WILL BE BACK TO NORMAL SHORTLY, WE ARE USING MySQL NOW AND I HAVE TO WRITE A MYSQL QUERY TO UPDATE YOUR STATS!");
|
||||
}
|
||||
}
|
||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||
@ -91,6 +93,14 @@ public class mcPlayerListener extends PlayerListener {
|
||||
Action action = event.getAction();
|
||||
Block block = event.getClickedBlock();
|
||||
//Archery Nerf
|
||||
if(action == Action.LEFT_CLICK_AIR)
|
||||
{
|
||||
if(player.getItemInHand().getTypeId() == 352)
|
||||
{
|
||||
Block targetBlock = player.getTargetBlock(null, 20);
|
||||
player.sendMessage("Target Block TypeID = "+targetBlock.getTypeId());
|
||||
}
|
||||
}
|
||||
if(player.getItemInHand().getTypeId() == 261 && LoadProperties.archeryFireRateLimit){
|
||||
if(System.currentTimeMillis() < PP.getArcheryShotATS() + 1000){
|
||||
/*
|
||||
|
@ -8,10 +8,46 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Wolf;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.m;
|
||||
import com.gmail.nossr50.mcPermissions;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.party.Party;
|
||||
|
||||
public class Axes {
|
||||
|
||||
public static void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event){
|
||||
Entity x = event.getEntity();
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
if(m.isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
|
||||
if(PPa.getAxesInt() >= 750){
|
||||
if(Math.random() * 1000 <= 750){
|
||||
if(x instanceof Player){
|
||||
Player player = (Player)x;
|
||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||
}
|
||||
if(x instanceof Player){
|
||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||
} else {
|
||||
event.setDamage(event.getDamage() * 2);
|
||||
}
|
||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||
}
|
||||
} else if(Math.random() * 1000 <= PPa.getAxesInt()){
|
||||
if(x instanceof Player){
|
||||
Player player = (Player)x;
|
||||
player.sendMessage(ChatColor.DARK_RED + "You were CRITICALLY hit!");
|
||||
}
|
||||
if(x instanceof Player){
|
||||
event.setDamage(event.getDamage() * 2 - event.getDamage() / 2);
|
||||
} else {
|
||||
event.setDamage(event.getDamage() * 2);
|
||||
}
|
||||
attacker.sendMessage(ChatColor.RED+"CRITICAL HIT!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event){
|
||||
int targets = 0;
|
||||
Entity x = event.getEntity();
|
||||
|
@ -121,6 +121,8 @@ public class Swords {
|
||||
{
|
||||
Player defender = (Player)event.getEntity();
|
||||
PlayerProfile PPd = Users.getProfile(defender);
|
||||
if(m.isSwords(defender.getItemInHand())&& mcPermissions.getInstance().swords(defender))
|
||||
{
|
||||
if(PPd.getSwordsInt() >= 600)
|
||||
{
|
||||
if(Math.random() * 2000 <= 600)
|
||||
@ -138,6 +140,7 @@ public class Swords {
|
||||
if(f instanceof Player)
|
||||
((Player) f).sendMessage(ChatColor.DARK_RED+"Hit with counterattack!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ public class Taming {
|
||||
public static String getOwnerName(Entity theWolf){
|
||||
CraftWolf cWolf = (CraftWolf)theWolf;
|
||||
EntityWolf eWolf = (EntityWolf)cWolf.getHandle();
|
||||
|
||||
String playerName = eWolf.v();
|
||||
|
||||
String playerName = eWolf.x();
|
||||
return playerName;
|
||||
}
|
||||
public static boolean hasOwner(Entity theWolf, Plugin pluginx){
|
||||
@ -23,7 +23,7 @@ public class Taming {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public Player getOwner(Entity theWolf, Plugin pluginx){
|
||||
public static Player getOwner(Entity theWolf, Plugin pluginx){
|
||||
for(Player x : pluginx.getServer().getOnlinePlayers()){
|
||||
if(x != null && x.getName().equals(getOwnerName(theWolf))){
|
||||
return x;
|
||||
@ -31,8 +31,4 @@ public class Taming {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static Taming getInstance() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,60 @@
|
||||
package com.gmail.nossr50.skills;
|
||||
|
||||
public class Unarmed {
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
|
||||
public class Unarmed {
|
||||
public static void unarmedBonus(Player attacker, EntityDamageByEntityEvent event)
|
||||
{
|
||||
PlayerProfile PPa = Users.getProfile(attacker);
|
||||
int bonus = 2;
|
||||
if (PPa.getUnarmedInt() >= 250)
|
||||
bonus++;
|
||||
if (PPa.getUnarmedInt() >= 500)
|
||||
bonus++;
|
||||
event.setDamage(event.getDamage()+bonus);
|
||||
}
|
||||
public static void disarmProcCheck(Player attacker, Player defender)
|
||||
{
|
||||
PlayerProfile PP = Users.getProfile(attacker);
|
||||
if(PP.getUnarmedInt() >= 1000){
|
||||
if(Math.random() * 4000 <= 1000){
|
||||
Location loc = defender.getLocation();
|
||||
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
|
||||
{
|
||||
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
||||
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
||||
ItemStack item = defender.getItemInHand();
|
||||
if(item != null)
|
||||
{
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
ItemStack itemx = null;
|
||||
defender.setItemInHand(itemx);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(Math.random() * 4000 <= PP.getUnarmedInt()){
|
||||
Location loc = defender.getLocation();
|
||||
if(defender.getItemInHand() != null && defender.getItemInHand().getTypeId() != 0)
|
||||
{
|
||||
attacker.sendMessage(ChatColor.DARK_RED+"You have hit with great force.");
|
||||
defender.sendMessage(ChatColor.DARK_RED+"You have been disarmed!");
|
||||
ItemStack item = defender.getItemInHand();
|
||||
if(item != null)
|
||||
{
|
||||
loc.getWorld().dropItemNaturally(loc, item);
|
||||
ItemStack itemx = null;
|
||||
defender.setItemInHand(itemx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user