->Execute damage scaling is now fixed.
->Armor Penetration scaling has been reduced in the lower tiers. ->Lifesteal properly gets applied by Area of Effect again. ->Redesigned Debuff Resistance engine to handle debuffs better. ->Debuff Resistance now shows up in /stats. ->Elite Zombie algorithm has been tuned. ->Fixed a glitch where the healthbar of an Elite Monster would remain when the fight was lost or ended. ->Elite Monsters now properly get hit by abilities, even when done immediately after regular attacks.
This commit is contained in:
parent
0001c6e677
commit
dc566bdea5
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
name: TwosideKeeper
|
name: TwosideKeeper
|
||||||
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
||||||
version: 3.8.5dBUGSPLEASEGOAWAYWTFWHYAREYOUSTILLHEREOMGIHATETHISPLSFIXNOCOPYPASTERINO
|
version: 3.8.5e
|
||||||
commands:
|
commands:
|
||||||
money:
|
money:
|
||||||
description: Tells the player the amount of money they are holding.
|
description: Tells the player the amount of money they are holding.
|
||||||
|
@ -347,6 +347,12 @@ public class CustomDamage {
|
|||||||
reduceSwiftAegisBuff(p);
|
reduceSwiftAegisBuff(p);
|
||||||
if (damage<p.getHealth()) {increaseArtifactArmorXP(p,(int)damage);}
|
if (damage<p.getHealth()) {increaseArtifactArmorXP(p,(int)damage);}
|
||||||
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin,new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
GenericFunctions.RemoveNewDebuffs(p);
|
||||||
|
}
|
||||||
|
},1);
|
||||||
}
|
}
|
||||||
LivingEntity shooter = getDamagerEntity(damager);
|
LivingEntity shooter = getDamagerEntity(damager);
|
||||||
if ((shooter instanceof Player) && target!=null) {
|
if ((shooter instanceof Player) && target!=null) {
|
||||||
@ -399,7 +405,7 @@ public class CustomDamage {
|
|||||||
if (!hitlist.get(i).equals(target)) {
|
if (!hitlist.get(i).equals(target)) {
|
||||||
//hitlist.get(i).damage(dmg);
|
//hitlist.get(i).damage(dmg);
|
||||||
//GenericFunctions.DealDamageToMob(CalculateDamageReduction(dmg,target,damager), hitlist.get(i), shooter, weapon, "AoE Damage");
|
//GenericFunctions.DealDamageToMob(CalculateDamageReduction(dmg,target,damager), hitlist.get(i), shooter, weapon, "AoE Damage");
|
||||||
ApplyDamage(damage,damager,hitlist.get(i),null,"AoE Damage",flags);
|
ApplyDamage(0,damager,hitlist.get(i),weapon,"AoE Damage",flags);
|
||||||
};
|
};
|
||||||
if (applyDeathMark) {
|
if (applyDeathMark) {
|
||||||
GenericFunctions.ApplyDeathMark(hitlist.get(i));
|
GenericFunctions.ApplyDeathMark(hitlist.get(i));
|
||||||
@ -429,6 +435,12 @@ public class CustomDamage {
|
|||||||
triggerEliteHitEvent(p,target,damage);
|
triggerEliteHitEvent(p,target,damage);
|
||||||
subtractWeaponDurability(p,weapon);
|
subtractWeaponDurability(p,weapon);
|
||||||
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin,new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
GenericFunctions.RemoveNewDebuffs(p);
|
||||||
|
}
|
||||||
|
},1);
|
||||||
}
|
}
|
||||||
if (target instanceof Monster) {
|
if (target instanceof Monster) {
|
||||||
if (reason!=null && reason.equalsIgnoreCase("SUFFOCATION")) {
|
if (reason!=null && reason.equalsIgnoreCase("SUFFOCATION")) {
|
||||||
@ -776,6 +788,7 @@ public class CustomDamage {
|
|||||||
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) {
|
if (p.hasPotionEffect(PotionEffectType.WEAKNESS)) {
|
||||||
int weaknesslv = GenericFunctions.getPotionEffectLevel(PotionEffectType.WEAKNESS, p);
|
int weaknesslv = GenericFunctions.getPotionEffectLevel(PotionEffectType.WEAKNESS, p);
|
||||||
if (weaknesslv>=9) {
|
if (weaknesslv>=9) {
|
||||||
|
p.playSound(p.getLocation(), Sound.BLOCK_ANVIL_LAND, 1.0f, 3.6f);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1965,4 +1978,20 @@ public class CustomDamage {
|
|||||||
public static double calculateCooldownReduction(Player p) {
|
public static double calculateCooldownReduction(Player p) {
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//REturns 0-100.
|
||||||
|
public static double CalculateDebuffResistance(Player p) {
|
||||||
|
TwosideKeeper.log("Debuffcount went up...",5);
|
||||||
|
double removechance = 0.0;
|
||||||
|
ItemStack[] equips = p.getEquipment().getArmorContents();
|
||||||
|
for (ItemStack equip : equips) {
|
||||||
|
if (GenericFunctions.isArtifactEquip(equip)) {
|
||||||
|
double resistamt = GenericFunctions.getAbilityValue(ArtifactAbility.STATUS_EFFECT_RESISTANCE, equip);
|
||||||
|
TwosideKeeper.log("Resist amount is "+resistamt,5);
|
||||||
|
removechance+=resistamt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removechance+=ItemSet.TotalBaseAmountBasedOnSetBonusCount(p, ItemSet.DAWNTRACKER, 2, 2);
|
||||||
|
return removechance;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,11 +106,11 @@ public class EliteMonster {
|
|||||||
regenerateHealth();
|
regenerateHealth();
|
||||||
moveFasterToTarget();
|
moveFasterToTarget();
|
||||||
resetToSpawn();
|
resetToSpawn();
|
||||||
createBossHealthbar();
|
//createBossHealthbar();
|
||||||
ignoreAllOtherTargets();
|
ignoreAllOtherTargets();
|
||||||
if (m.isValid() && targetlist.size()>0) {
|
if (m.isValid() && targetlist.size()>0) {
|
||||||
adjustWillpower();
|
adjustWillpower();
|
||||||
//weakenTeam();
|
weakenTeam();
|
||||||
retargetInAir();
|
retargetInAir();
|
||||||
destroyLiquids(2);
|
destroyLiquids(2);
|
||||||
reapplyGlow();
|
reapplyGlow();
|
||||||
@ -274,6 +274,8 @@ public class EliteMonster {
|
|||||||
willpower=0;
|
willpower=0;
|
||||||
bar.removeAll();
|
bar.removeAll();
|
||||||
willpower_bar.removeAll();
|
willpower_bar.removeAll();
|
||||||
|
} else {
|
||||||
|
createBossHealthbar();
|
||||||
}
|
}
|
||||||
if (!m.getLocation().getWorld().equals(myspawn.getWorld())) {
|
if (!m.getLocation().getWorld().equals(myspawn.getWorld())) {
|
||||||
myspawn = m.getLocation(); //Then this is my new spawn...
|
myspawn = m.getLocation(); //Then this is my new spawn...
|
||||||
@ -752,4 +754,9 @@ public class EliteMonster {
|
|||||||
}
|
}
|
||||||
return finalstr.toString();
|
return finalstr.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Cleanup() {
|
||||||
|
// Remove all healthbars before destroying.
|
||||||
|
removeAllHealthbars();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,10 +28,10 @@ public enum ArtifactAbility {
|
|||||||
//Weapon Abilities
|
//Weapon Abilities
|
||||||
DAMAGE("Strike","Improves Base Damage by [VAL]",new double[]{1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0},
|
DAMAGE("Strike","Improves Base Damage by [VAL]",new double[]{1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0},
|
||||||
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.8,0.75,0.7,0.65,0.6,0.55,0.5,0.4},100,1,UpgradePath.BASIC),
|
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.8,0.75,0.7,0.65,0.6,0.55,0.5,0.4},100,1,UpgradePath.BASIC),
|
||||||
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",new double[]{1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,8.0,9.0,10.0},
|
ARMOR_PEN("Piercing","[VAL]% of your damage is ignored by resistances. ([PENDMG] damage)",new double[]{0.4,0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.2,5.7,6.4,7.5},
|
||||||
|
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.8,0.75,0.7,0.65,0.6,0.55,0.5,0.4},100,1,UpgradePath.BASIC),
|
||||||
|
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",new double[]{0.3,0.45,0.6,0.75,0.9,1.05,1.2,1.35,1.50,1.65,1.80,1.95,2.10,2.40,2.70},
|
||||||
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.8,0.75,0.7,0.65,0.6,0.55,0.5,0.4},100,1,UpgradePath.BASIC),
|
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.8,0.75,0.7,0.65,0.6,0.55,0.5,0.4},100,1,UpgradePath.BASIC),
|
||||||
EXECUTION("Execute","Deals [VAL] extra damage for every 20% of target's missing health.",new double[]{0.1,0.125,0.15,0.175,0.2,0.225,0.25,0.275,0.3,0.35,0.4,0.5,0.7,0.9,1.25},
|
|
||||||
new double[]{1.0,0.975,0.95,0.925,0.9,0.875,0.85,0.825,0.8,0.75,0.7,0.65,0.6,0.55,0.5},100,1,UpgradePath.BASIC),
|
|
||||||
LIFESTEAL("Lifesteal","Heals [VAL]% of the damage dealt to targets back to your health pool.",new double[]{0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.6,6.4,7.2,8.0,8.8},
|
LIFESTEAL("Lifesteal","Heals [VAL]% of the damage dealt to targets back to your health pool.",new double[]{0.8,1.2,1.6,2.0,2.4,2.8,3.2,3.6,4.0,4.4,4.8,5.6,6.4,7.2,8.0,8.8},
|
||||||
new double[]{1.0,1.0,0.9,0.9,0.8,0.8,0.75,0.75,0.7,0.7,0.6,0.6,0.5,0.5,0.4},100,1,UpgradePath.WEAPON),
|
new double[]{1.0,1.0,0.9,0.9,0.8,0.8,0.75,0.75,0.7,0.7,0.6,0.6,0.5,0.5,0.4},100,1,UpgradePath.WEAPON),
|
||||||
CRITICAL("Critical","[VAL]% chance to deal critical strikes.",new double[]{1.0,1.25,1.5,1.75,2.0,2.25,2.50,2.75,3.0,3.25,3.50,3.75,4.00,4.25,4.50},
|
CRITICAL("Critical","[VAL]% chance to deal critical strikes.",new double[]{1.0,1.25,1.5,1.75,2.0,2.25,2.50,2.75,3.0,3.25,3.50,3.75,4.00,4.25,4.50},
|
||||||
|
@ -536,7 +536,8 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 2);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 2);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 3:{
|
case 3:
|
||||||
|
case 4:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -568,7 +569,8 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 3);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 3);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 4:{
|
case 5:
|
||||||
|
case 6:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -600,7 +602,8 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 4);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 4);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 5:{
|
case 7:
|
||||||
|
case 8:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -633,7 +636,8 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 6:{
|
case 9:
|
||||||
|
case 10:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -667,7 +671,7 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 6);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 6);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 7:{
|
case 11:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -704,7 +708,8 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 1);
|
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 1);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 8:{
|
case 12:
|
||||||
|
case 13:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -741,7 +746,7 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 1);
|
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 1);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
case 9:{
|
case 14:{
|
||||||
if (upgrade==UpgradePath.WEAPON ||
|
if (upgrade==UpgradePath.WEAPON ||
|
||||||
upgrade==UpgradePath.SWORD ||
|
upgrade==UpgradePath.SWORD ||
|
||||||
upgrade==UpgradePath.AXE ||
|
upgrade==UpgradePath.AXE ||
|
||||||
@ -814,7 +819,7 @@ public enum ArtifactItemType {
|
|||||||
ouritem.addUnsafeEnchantment(Enchantment.ARROW_DAMAGE, 10);
|
ouritem.addUnsafeEnchantment(Enchantment.ARROW_DAMAGE, 10);
|
||||||
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
ouritem.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
|
||||||
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 2);
|
ouritem.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 2);
|
||||||
ouritem.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 1);
|
ouritem.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package sig.plugin.TwosideKeeper.HelperStructures.Common;
|
package sig.plugin.TwosideKeeper.HelperStructures.Common;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -2737,7 +2738,11 @@ public class GenericFunctions {
|
|||||||
TwosideKeeper.log(ChatColor.RED+" This should not be overwritten due to no FORCE!", TwosideKeeper.POTION_DEBUG_LEVEL);
|
TwosideKeeper.log(ChatColor.RED+" This should not be overwritten due to no FORCE!", TwosideKeeper.POTION_DEBUG_LEVEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(TwosideKeeper.plugin, new Runnable() {
|
||||||
|
public void run() {
|
||||||
p.addPotionEffect(new PotionEffect(type,ticks,amplifier),force);
|
p.addPotionEffect(new PotionEffect(type,ticks,amplifier),force);
|
||||||
|
}
|
||||||
|
},1);
|
||||||
TwosideKeeper.log(ChatColor.GRAY+" Effect on Player "+p.getName()+" is now "+type.getName()+" "+WorldShop.toRomanNumeral((amplifier+1))+"("+amplifier+"), Duration: "+ticks+" ticks", TwosideKeeper.POTION_DEBUG_LEVEL);
|
TwosideKeeper.log(ChatColor.GRAY+" Effect on Player "+p.getName()+" is now "+type.getName()+" "+WorldShop.toRomanNumeral((amplifier+1))+"("+amplifier+"), Duration: "+ticks+" ticks", TwosideKeeper.POTION_DEBUG_LEVEL);
|
||||||
if (amplifier==-1 || ticks==0) {
|
if (amplifier==-1 || ticks==0) {
|
||||||
//Something really bad happened!!!
|
//Something really bad happened!!!
|
||||||
@ -2752,8 +2757,9 @@ public class GenericFunctions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void logAndRemovePotionEffectFromPlayer(PotionEffectType type, Player p) {
|
public static void logAndRemovePotionEffectFromPlayer(PotionEffectType type, Player p) {
|
||||||
TwosideKeeper.log(ChatColor.WHITE+"Removing Potion Effect "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+") on Player "+p.getName()+" Duration: "+getPotionEffectDuration(type,p)+" ticks", TwosideKeeper.POTION_DEBUG_LEVEL);
|
TwosideKeeper.log(ChatColor.WHITE+"Removing Potion Effect "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+") on Player "+p.getName()+" Duration: "+getPotionEffectDuration(type,p)+" ticks by adding a 0 duration version of this effect.", TwosideKeeper.POTION_DEBUG_LEVEL);
|
||||||
p.removePotionEffect(type);
|
//p.removePotionEffect(type);
|
||||||
|
logAndApplyPotionEffectToPlayer(type,0,0,p,true);
|
||||||
if (p.hasPotionEffect(type)) {
|
if (p.hasPotionEffect(type)) {
|
||||||
TwosideKeeper.log(ChatColor.DARK_RED+" Effect on Player "+p.getName()+" is now "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+"), Duration: "+getPotionEffectDuration(type,p)+" ticks", TwosideKeeper.POTION_DEBUG_LEVEL);
|
TwosideKeeper.log(ChatColor.DARK_RED+" Effect on Player "+p.getName()+" is now "+type+" "+WorldShop.toRomanNumeral((getPotionEffectLevel(type,p)+1))+"("+getPotionEffectLevel(type,p)+"), Duration: "+getPotionEffectDuration(type,p)+" ticks", TwosideKeeper.POTION_DEBUG_LEVEL);
|
||||||
TwosideKeeper.log(ChatColor.RED+"THIS SHOULD NOT BE HAPPENING! Reporting", TwosideKeeper.POTION_DEBUG_LEVEL);
|
TwosideKeeper.log(ChatColor.RED+"THIS SHOULD NOT BE HAPPENING! Reporting", TwosideKeeper.POTION_DEBUG_LEVEL);
|
||||||
@ -2894,6 +2900,12 @@ public class GenericFunctions {
|
|||||||
Monster m = (Monster)entity;
|
Monster m = (Monster)entity;
|
||||||
MonsterStructure md = MonsterStructure.getMonsterStructure(m);
|
MonsterStructure md = MonsterStructure.getMonsterStructure(m);
|
||||||
if (damager!=null) {
|
if (damager!=null) {
|
||||||
|
if (damager instanceof Player) {
|
||||||
|
Player p = (Player)damager;
|
||||||
|
if (GenericFunctions.getPotionEffectLevel(PotionEffectType.WEAKNESS, p)>=9) {
|
||||||
|
p.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
md.hitlist.remove(damager.getUniqueId());
|
md.hitlist.remove(damager.getUniqueId());
|
||||||
} else {
|
} else {
|
||||||
md.hitlist.remove(m.getUniqueId());
|
md.hitlist.remove(m.getUniqueId());
|
||||||
@ -3491,8 +3503,8 @@ public class GenericFunctions {
|
|||||||
b.getType()==Material.CLAY ||
|
b.getType()==Material.CLAY ||
|
||||||
b.getType()==Material.GRASS ||
|
b.getType()==Material.GRASS ||
|
||||||
b.getType()==Material.STONE ||
|
b.getType()==Material.STONE ||
|
||||||
b.getType()==Material.WATER ||
|
/*b.getType()==Material.WATER ||
|
||||||
b.getType()==Material.LAVA ||
|
b.getType()==Material.LAVA ||*/
|
||||||
b.getType()==Material.NETHERRACK ||
|
b.getType()==Material.NETHERRACK ||
|
||||||
b.getType()==Material.ENDER_STONE ||
|
b.getType()==Material.ENDER_STONE ||
|
||||||
b.getType()==Material.COBBLESTONE ||
|
b.getType()==Material.COBBLESTONE ||
|
||||||
@ -3501,8 +3513,8 @@ public class GenericFunctions {
|
|||||||
b.getType()==Material.LOG_2 ||
|
b.getType()==Material.LOG_2 ||
|
||||||
b.getType()==Material.LEAVES ||
|
b.getType()==Material.LEAVES ||
|
||||||
b.getType()==Material.LEAVES_2 ||
|
b.getType()==Material.LEAVES_2 ||
|
||||||
b.getType()==Material.STATIONARY_LAVA ||
|
/*b.getType()==Material.STATIONARY_LAVA ||
|
||||||
b.getType()==Material.STATIONARY_WATER ||
|
b.getType()==Material.STATIONARY_WATER ||*/
|
||||||
b.getType()==Material.SNOW ||
|
b.getType()==Material.SNOW ||
|
||||||
b.getType()==Material.ICE ||
|
b.getType()==Material.ICE ||
|
||||||
b.getType()==Material.PACKED_ICE) {
|
b.getType()==Material.PACKED_ICE) {
|
||||||
@ -3724,4 +3736,29 @@ public class GenericFunctions {
|
|||||||
}
|
}
|
||||||
return hasArmor;
|
return hasArmor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void RemoveNewDebuffs(Player p) {
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
double removechance = CustomDamage.CalculateDebuffResistance(p);
|
||||||
|
if (removechance>0) {
|
||||||
|
if (!pd.lasteffectlist.containsAll(p.getActivePotionEffects())) {
|
||||||
|
int level=0;
|
||||||
|
PotionEffectType type=null;
|
||||||
|
for (PotionEffect pe : p.getActivePotionEffects()) {
|
||||||
|
if (GenericFunctions.isBadEffect(pe.getType())) {
|
||||||
|
type=pe.getType();
|
||||||
|
level=pe.getAmplifier();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Math.random()<=removechance/100) {
|
||||||
|
if (type!=null && (!type.equals(PotionEffectType.WEAKNESS) || level<9)) {
|
||||||
|
GenericFunctions.logAndRemovePotionEffectFromPlayer(type,p);
|
||||||
|
p.sendMessage(ChatColor.DARK_GRAY+"You successfully resisted the application of "+ChatColor.WHITE+GenericFunctions.CapitalizeFirstLetters(type.getName().replace("_", " ")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pd.lasteffectlist.clear();
|
||||||
|
pd.lasteffectlist.addAll(p.getActivePotionEffects());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import sig.plugin.TwosideKeeper.HelperStructures.Common.GenericFunctions;
|
|||||||
|
|
||||||
public enum ItemSet {
|
public enum ItemSet {
|
||||||
PANROS(1,1, 3,2, 10,10, 20,10),
|
PANROS(1,1, 3,2, 10,10, 20,10),
|
||||||
SONGSTEEL(4,2, 6,2, 8,4, 20,10),
|
SONGSTEEL(4,2, 6,2, 8,8, 20,10),
|
||||||
DAWNTRACKER(4,4, 20,10, 20,10, 6,4),
|
DAWNTRACKER(4,4, 20,10, 20,10, 6,4),
|
||||||
LORASYS(2,2, 0,0, 0,0, 0,0),
|
LORASYS(2,2, 0,0, 0,0, 0,0),
|
||||||
JAMDAK(1,1, 5,1, 10,1, 10,2), //Graceful Dodge is in ticks.
|
JAMDAK(1,1, 5,1, 10,1, 10,2), //Graceful Dodge is in ticks.
|
||||||
@ -285,7 +285,7 @@ public enum ItemSet {
|
|||||||
case SONGSTEEL:{
|
case SONGSTEEL:{
|
||||||
lore.add(ChatColor.GOLD+""+ChatColor.ITALIC+"Set Bonus:");
|
lore.add(ChatColor.GOLD+""+ChatColor.ITALIC+"Set Bonus:");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 2 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 2)+" Max Health");
|
lore.add(ChatColor.DARK_AQUA+" 2 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 2)+" Max Health");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 3 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 3)+" Absorption (30 seconds)");
|
lore.add(ChatColor.DARK_AQUA+" 3 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 3)+" Absorption Health (30 seconds)");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 4 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 4)+"% Damage Reduction");
|
lore.add(ChatColor.DARK_AQUA+" 4 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 4)+"% Damage Reduction");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 5 - "+ChatColor.WHITE+" Vendetta");
|
lore.add(ChatColor.DARK_AQUA+" 5 - "+ChatColor.WHITE+" Vendetta");
|
||||||
lore.add(ChatColor.GRAY+" Blocking stores 30% of mitigation damage.");
|
lore.add(ChatColor.GRAY+" Blocking stores 30% of mitigation damage.");
|
||||||
|
@ -567,10 +567,10 @@ public class Loot {
|
|||||||
return (int)((Math.random()*4)+3);
|
return (int)((Math.random()*4)+3);
|
||||||
} else
|
} else
|
||||||
if (type.toString().contains("DIAMOND")) {
|
if (type.toString().contains("DIAMOND")) {
|
||||||
return (int)((Math.random()*5)+4);
|
return (int)((Math.random()*6)+5);
|
||||||
} else
|
} else
|
||||||
if (type.toString().contains("GOLD")) {
|
if (type.toString().contains("GOLD")) {
|
||||||
return (int)((Math.random()*6)+5);
|
return (int)((Math.random()*12)+3);
|
||||||
} else
|
} else
|
||||||
if (type.toString().contains("LEATHER")) {
|
if (type.toString().contains("LEATHER")) {
|
||||||
return (int)((Math.random()*7)+6);
|
return (int)((Math.random()*7)+6);
|
||||||
@ -598,7 +598,7 @@ public class Loot {
|
|||||||
enchantment_level = (int)(((Math.random()*5)+6)*((hardened)?HARDENED_ENCHANT_MULT:1));
|
enchantment_level = (int)(((Math.random()*5)+6)*((hardened)?HARDENED_ENCHANT_MULT:1));
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
enchantment_level = (int)(((Math.random()*6)+3)*((hardened)?HARDENED_ENCHANT_MULT:1));
|
enchantment_level = (int)(((Math.random()*7)+2)*((hardened)?HARDENED_ENCHANT_MULT:1));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enchantment_level>MAX_ENCHANT_LEVEL) {
|
if (enchantment_level>MAX_ENCHANT_LEVEL) {
|
||||||
@ -610,10 +610,10 @@ public class Loot {
|
|||||||
|
|
||||||
public static ItemStack addEnchantments(ItemStack item, boolean hardened) {
|
public static ItemStack addEnchantments(ItemStack item, boolean hardened) {
|
||||||
if (GenericFunctions.isHarvestingTool(item)) {
|
if (GenericFunctions.isHarvestingTool(item)) {
|
||||||
item.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.DIG_SPEED, GetEnchantmentLevels(item.getType(),hardened));
|
item.addUnsafeEnchantment(Enchantment.DIG_SPEED, GetEnchantmentLevels(item.getType(),hardened));
|
||||||
item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));
|
item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));
|
||||||
item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 2);
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 2);}
|
||||||
if (item.getType().toString().contains("HOE")) {item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 10);}
|
if (item.getType().toString().contains("HOE")) {item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 10);}
|
||||||
if (Math.random()<0.2*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.SILK_TOUCH, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.2*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.SILK_TOUCH, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
@ -622,18 +622,18 @@ public class Loot {
|
|||||||
if (item.getType()==Material.BOW) {
|
if (item.getType()==Material.BOW) {
|
||||||
item.addUnsafeEnchantment(Enchantment.ARROW_DAMAGE, GetEnchantmentLevels(item.getType(),hardened));
|
item.addUnsafeEnchantment(Enchantment.ARROW_DAMAGE, GetEnchantmentLevels(item.getType(),hardened));
|
||||||
item.addUnsafeEnchantment(Enchantment.ARROW_FIRE, GetEnchantmentLevels(item.getType(),hardened));
|
item.addUnsafeEnchantment(Enchantment.ARROW_FIRE, GetEnchantmentLevels(item.getType(),hardened));
|
||||||
item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 2);
|
item.addUnsafeEnchantment(Enchantment.ARROW_KNOCKBACK, 2);
|
||||||
if (Math.random()<0.2*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.2*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.ARROW_INFINITE, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
} else
|
} else
|
||||||
if (GenericFunctions.isWeapon(item)) {
|
if (GenericFunctions.isWeapon(item)) {
|
||||||
item.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, GetEnchantmentLevels(item.getType(),hardened));
|
item.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, GetEnchantmentLevels(item.getType(),hardened));
|
||||||
item.addUnsafeEnchantment(Enchantment.DAMAGE_ARTHROPODS, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DAMAGE_ARTHROPODS, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.DAMAGE_UNDEAD, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DAMAGE_UNDEAD, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, GetEnchantmentLevels(item.getType(),hardened));
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);
|
if (Math.random()<0.5*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);}
|
||||||
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
} else
|
} else
|
||||||
@ -663,6 +663,7 @@ public class Loot {
|
|||||||
if (Math.random()<0.2*HARDENED_ENCHANT_MULT && item.getType().toString().contains("BOOTS")) {item.addUnsafeEnchantment(Enchantment.FROST_WALKER, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.2*HARDENED_ENCHANT_MULT && item.getType().toString().contains("BOOTS")) {item.addUnsafeEnchantment(Enchantment.FROST_WALKER, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
if (Math.random()<0.08*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.THORNS, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.08*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.THORNS, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
//item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);
|
//item.addUnsafeEnchantment(Enchantment.KNOCKBACK, 1);
|
||||||
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.DURABILITY, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
if (Math.random()<0.001*HARDENED_ENCHANT_MULT) {item.addUnsafeEnchantment(Enchantment.MENDING, GetEnchantmentLevels(item.getType(),hardened));}
|
||||||
} else {
|
} else {
|
||||||
//Generic Random Enchantments.
|
//Generic Random Enchantments.
|
||||||
|
@ -147,7 +147,7 @@ public class MonsterController {
|
|||||||
TwosideKeeper.log("Trying for an elite monster.", 4);
|
TwosideKeeper.log("Trying for an elite monster.", 4);
|
||||||
if (GenericFunctions.PercentBlocksAroundArea(ent.getLocation().getBlock(),Material.AIR,16,8,16)>=75 &&
|
if (GenericFunctions.PercentBlocksAroundArea(ent.getLocation().getBlock(),Material.AIR,16,8,16)>=75 &&
|
||||||
GenericFunctions.AllNaturalBlocks(ent.getLocation().getBlock(),16,8,16) &&
|
GenericFunctions.AllNaturalBlocks(ent.getLocation().getBlock(),16,8,16) &&
|
||||||
ent.getNearbyEntities(128, 32, 128).size()<=2) {
|
ent.getNearbyEntities(64, 32, 64).size()<=3) {
|
||||||
TwosideKeeper.LAST_ELITE_SPAWN=TwosideKeeper.getServerTickTime();
|
TwosideKeeper.LAST_ELITE_SPAWN=TwosideKeeper.getServerTickTime();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
|||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.DeathStructure;
|
import sig.plugin.TwosideKeeper.HelperStructures.DeathStructure;
|
||||||
import sig.plugin.TwosideKeeper.HelperStructures.PlayerMode;
|
import sig.plugin.TwosideKeeper.HelperStructures.PlayerMode;
|
||||||
@ -99,6 +100,7 @@ public class PlayerStructure {
|
|||||||
public long lastsprintcheck=0;
|
public long lastsprintcheck=0;
|
||||||
public int swiftaegisamt=0;
|
public int swiftaegisamt=0;
|
||||||
public PlayerMode lastmode=PlayerMode.NORMAL;
|
public PlayerMode lastmode=PlayerMode.NORMAL;
|
||||||
|
public List<PotionEffect> lasteffectlist=null;
|
||||||
|
|
||||||
public long iframetime = 0;
|
public long iframetime = 0;
|
||||||
|
|
||||||
@ -148,6 +150,8 @@ public class PlayerStructure {
|
|||||||
this.title_task=-1;
|
this.title_task=-1;
|
||||||
this.sounds_enabled=true;
|
this.sounds_enabled=true;
|
||||||
this.debuffcount=0;
|
this.debuffcount=0;
|
||||||
|
this.lasteffectlist = new ArrayList<PotionEffect>();
|
||||||
|
this.lasteffectlist.addAll(p.getActivePotionEffects());
|
||||||
this.last_deathmark=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0;
|
this.last_deathmark=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime():0;
|
||||||
this.last_shovelspell=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime()+300:0;
|
this.last_shovelspell=(TwosideKeeper.getServerType()==ServerType.MAIN)?TwosideKeeper.getServerTickTime()+300:0;
|
||||||
this.swordcombo=0;
|
this.swordcombo=0;
|
||||||
|
@ -116,6 +116,7 @@ import org.bukkit.event.player.PlayerPickupItemEvent;
|
|||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||||
import org.bukkit.event.player.PlayerToggleSprintEvent;
|
import org.bukkit.event.player.PlayerToggleSprintEvent;
|
||||||
import org.bukkit.event.server.ServerCommandEvent;
|
import org.bukkit.event.server.ServerCommandEvent;
|
||||||
import org.bukkit.event.server.ServerListPingEvent;
|
import org.bukkit.event.server.ServerListPingEvent;
|
||||||
@ -393,36 +394,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
if (!p.isDead()) {
|
if (!p.isDead()) {
|
||||||
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
|
PlayerStructure pd = (PlayerStructure)playerdata.get(p.getUniqueId());
|
||||||
log(pd.velocity+"",5);
|
GenericFunctions.RemoveNewDebuffs(p);
|
||||||
if (GenericFunctions.CountDebuffs(p)>pd.debuffcount) {
|
|
||||||
ItemStack[] equips = p.getEquipment().getArmorContents();
|
|
||||||
double removechance = 0.0;
|
|
||||||
log("Debuffcount went up...",5);
|
|
||||||
for (ItemStack equip : equips) {
|
|
||||||
if (GenericFunctions.isArtifactEquip(equip)) {
|
|
||||||
double resistamt = GenericFunctions.getAbilityValue(ArtifactAbility.STATUS_EFFECT_RESISTANCE, equip);
|
|
||||||
log("Resist amount is "+resistamt,5);
|
|
||||||
removechance+=resistamt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removechance+=ItemSet.TotalBaseAmountBasedOnSetBonusCount(p, ItemSet.DAWNTRACKER, 2, 2);
|
|
||||||
log("Remove chance is "+removechance,5);
|
|
||||||
int level=0;
|
|
||||||
PotionEffectType type=null;
|
|
||||||
for (PotionEffect pe : p.getActivePotionEffects()) {
|
|
||||||
if (GenericFunctions.isBadEffect(pe.getType()) && Math.random()<=0.5) {
|
|
||||||
type=pe.getType();
|
|
||||||
level=pe.getAmplifier();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Math.random()<=removechance/100) {
|
|
||||||
if (type!=null && (!type.equals(PotionEffectType.WEAKNESS) || level<9)) {
|
|
||||||
GenericFunctions.logAndRemovePotionEffectFromPlayer(type,p);
|
|
||||||
p.sendMessage(ChatColor.DARK_GRAY+"You successfully resisted the application of "+ChatColor.WHITE+GenericFunctions.CapitalizeFirstLetters(type.getName().replace("_", " ")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pd.debuffcount=GenericFunctions.CountDebuffs(p);
|
|
||||||
|
|
||||||
if (p.isSprinting() && pd.lastsprintcheck+(20*5)<getServerTickTime()) {
|
if (p.isSprinting() && pd.lastsprintcheck+(20*5)<getServerTickTime()) {
|
||||||
pd.lastsprintcheck=getServerTickTime();
|
pd.lastsprintcheck=getServerTickTime();
|
||||||
@ -636,10 +608,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
private final class ReapplyAbsorptionHeartsFromSet implements Runnable {
|
private final class ReapplyAbsorptionHeartsFromSet implements Runnable {
|
||||||
public void run(){
|
public void run(){
|
||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
double absorption_amt = ItemSet.TotalBaseAmountBasedOnSetBonusCount(p, ItemSet.SONGSTEEL, 3, 3);
|
double absorption_amt = ItemSet.TotalBaseAmountBasedOnSetBonusCount(p, ItemSet.SONGSTEEL, 3, 3)-4;
|
||||||
if (absorption_amt>0) {
|
if (absorption_amt>0) {
|
||||||
if (p.hasPotionEffect(PotionEffectType.ABSORPTION)) {
|
if (p.hasPotionEffect(PotionEffectType.ABSORPTION)) {
|
||||||
int oldlv = GenericFunctions.getPotionEffectLevel(PotionEffectType.ABSORPTION, p)+1;
|
int oldlv = GenericFunctions.getPotionEffectLevel(PotionEffectType.ABSORPTION, p);
|
||||||
GenericFunctions.logAndRemovePotionEffectFromPlayer(PotionEffectType.ABSORPTION,p);
|
GenericFunctions.logAndRemovePotionEffectFromPlayer(PotionEffectType.ABSORPTION,p);
|
||||||
GenericFunctions.logAndApplyPotionEffectToPlayer(PotionEffectType.ABSORPTION,599,(int)(absorption_amt/4)+oldlv,p);
|
GenericFunctions.logAndApplyPotionEffectToPlayer(PotionEffectType.ABSORPTION,599,(int)(absorption_amt/4)+oldlv,p);
|
||||||
} else {
|
} else {
|
||||||
@ -858,7 +830,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
public static CustomPotion LIFE_VIAL;
|
public static CustomPotion LIFE_VIAL;
|
||||||
public static CustomPotion HARDENING_VIAL;
|
public static CustomPotion HARDENING_VIAL;
|
||||||
|
|
||||||
public static final int POTION_DEBUG_LEVEL=1;
|
public static final int POTION_DEBUG_LEVEL=5;
|
||||||
|
|
||||||
public static final int DODGE_COOLDOWN=100;
|
public static final int DODGE_COOLDOWN=100;
|
||||||
public static final int DEATHMARK_COOLDOWN=240;
|
public static final int DEATHMARK_COOLDOWN=240;
|
||||||
@ -2076,6 +2048,21 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
///if (ev.getHand()==EquipmentSlot.OFF_HAND) {aPlugin.API.swingOffHand(ev.getPlayer());};
|
///if (ev.getHand()==EquipmentSlot.OFF_HAND) {aPlugin.API.swingOffHand(ev.getPlayer());};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@EventHandler(priority=EventPriority.LOW,ignoreCancelled=true)
|
||||||
|
public void onPlayerSneak(PlayerToggleSneakEvent ev) {
|
||||||
|
Player p = ev.getPlayer();
|
||||||
|
if (PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
||||||
|
if (ev.isSneaking()) {
|
||||||
|
GenericFunctions.logAndApplyPotionEffectToPlayer(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 111, p, true);
|
||||||
|
GenericFunctions.logAndApplyPotionEffectToPlayer(PotionEffectType.BLINDNESS, 20*4, 111, p);
|
||||||
|
p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXTINGUISH_FIRE, 1.0f, 0.8f);
|
||||||
|
} else {
|
||||||
|
GenericFunctions.logAndRemovePotionEffectFromPlayer(PotionEffectType.INVISIBILITY, p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.LOW)
|
@EventHandler(priority=EventPriority.LOW)
|
||||||
public void onPlayerInteract(PlayerInteractEvent ev) {
|
public void onPlayerInteract(PlayerInteractEvent ev) {
|
||||||
if (ev.isCancelled() && ev.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (ev.isCancelled() && ev.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
@ -2151,7 +2138,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
player.sendMessage(ChatColor.ITALIC+" Good luck on your adventure!");
|
player.sendMessage(ChatColor.ITALIC+" Good luck on your adventure!");
|
||||||
}
|
}
|
||||||
},45);
|
},45);
|
||||||
if (Math.random()<=0.2) {
|
boolean pointToExistingElite=false;
|
||||||
|
for (int i=0;i<elitemonsters.size();i++) {
|
||||||
|
if (Math.random()<=0.5) {
|
||||||
|
TwosideKeeper.ELITE_LOCATION = elitemonsters.get(i).m.getLocation();
|
||||||
|
pointToExistingElite=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!pointToExistingElite) {
|
||||||
GenericFunctions.generateNewElite();
|
GenericFunctions.generateNewElite();
|
||||||
}
|
}
|
||||||
player.setCompassTarget(TwosideKeeper.ELITE_LOCATION);
|
player.setCompassTarget(TwosideKeeper.ELITE_LOCATION);
|
||||||
@ -4485,6 +4480,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
Monster m = (Monster)ev.getEntity();
|
Monster m = (Monster)ev.getEntity();
|
||||||
GlowAPI.setGlowing(m, GlowAPI.Color.DARK_RED, Bukkit.getOnlinePlayers());
|
GlowAPI.setGlowing(m, GlowAPI.Color.DARK_RED, Bukkit.getOnlinePlayers());
|
||||||
}
|
}
|
||||||
|
if (ev.getTarget() instanceof Player &&
|
||||||
|
ev.getEntity() instanceof Monster) {
|
||||||
|
Player p = (Player)ev.getTarget();
|
||||||
|
Monster m = (Monster)ev.getEntity();
|
||||||
|
if (p.hasPotionEffect(PotionEffectType.INVISIBILITY) &&
|
||||||
|
PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
||||||
|
ev.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
@EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)
|
||||||
@ -4668,6 +4672,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
public void run() {
|
public void run() {
|
||||||
Bukkit.getServer().broadcastMessage(em.generateDPSReport());
|
Bukkit.getServer().broadcastMessage(em.generateDPSReport());
|
||||||
aPlugin.API.discordSendRaw(ChatColor.YELLOW+"DPS Breakdown:"+"\n```\n"+em.generateDPSReport()+"\n```");
|
aPlugin.API.discordSendRaw(ChatColor.YELLOW+"DPS Breakdown:"+"\n```\n"+em.generateDPSReport()+"\n```");
|
||||||
|
em.Cleanup();
|
||||||
elitemonsters.remove(em);
|
elitemonsters.remove(em);
|
||||||
}},1);
|
}},1);
|
||||||
GenericFunctions.generateNewElite();
|
GenericFunctions.generateNewElite();
|
||||||
@ -6773,6 +6778,8 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
double dodgechance = (CustomDamage.CalculateDodgeChance(p))*100;
|
double dodgechance = (CustomDamage.CalculateDodgeChance(p))*100;
|
||||||
if (all || dodgechance>0) {receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Dodge Chance: "+ChatColor.RESET+""+ChatColor.DARK_AQUA+df.format(dodgechance)+"%");}
|
if (all || dodgechance>0) {receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Dodge Chance: "+ChatColor.RESET+""+ChatColor.DARK_AQUA+df.format(dodgechance)+"%");}
|
||||||
}
|
}
|
||||||
|
double debuffresistchance = CustomDamage.CalculateDebuffResistance(p);
|
||||||
|
if (all || debuffresistchance>0) {receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Debuff Resistance: "+ChatColor.RESET+""+ChatColor.DARK_AQUA+df.format(debuffresistchance)+"%");}
|
||||||
TextComponent f = new TextComponent(ChatColor.GRAY+""+ChatColor.ITALIC+"Current Mode: ");
|
TextComponent f = new TextComponent(ChatColor.GRAY+""+ChatColor.ITALIC+"Current Mode: ");
|
||||||
f.addExtra(GenericFunctions.PlayerModeName(p));
|
f.addExtra(GenericFunctions.PlayerModeName(p));
|
||||||
if (receiver instanceof Player) {
|
if (receiver instanceof Player) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user