Proper target checks for balance configurations.
This commit is contained in:
		| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
| @@ -1527,7 +1527,8 @@ public final class Formulas | ||||
| 	 | ||||
| 	public static double calculatePvpPveBonus(Creature attacker, Creature target, Skill skill, boolean crit) | ||||
| 	{ | ||||
| 		final PlayerInstance player = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance attackerPlayer = attacker.getActingPlayer(); | ||||
| 		final PlayerInstance targetPlayer = attacker.getActingPlayer(); | ||||
| 		 | ||||
| 		// PvP bonus | ||||
| 		if (attacker.isPlayable() && target.isPlayable()) | ||||
| @@ -1539,21 +1540,21 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DAMAGE, 1) * Config.PVP_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_MAGICAL_SKILL_DEFENCE, 1) * Config.PVP_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvP | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 					pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DAMAGE, 1) * Config.PVP_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 					pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_SKILL_DEFENCE, 1) * Config.PVP_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvP | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f); | ||||
| 				pvpAttack = attacker.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DAMAGE, 1) * Config.PVP_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f); | ||||
| 				pvpDefense = target.getStat().getValue(Stats.PVP_PHYSICAL_ATTACK_DEFENCE, 1) * Config.PVP_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f); | ||||
| 			} | ||||
| 			 | ||||
| 			return 1 + (pvpAttack - pvpDefense); | ||||
| @@ -1567,9 +1568,9 @@ public final class Formulas | ||||
| 			final double pveRaidDefense; | ||||
| 			 | ||||
| 			double pvePenalty = 1; | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (player != null) && ((target.getLevel() - player.getLevel()) >= 2)) | ||||
| 			if (!target.isRaid() && !target.isRaidMinion() && (target.getLevel() >= Config.MIN_NPC_LVL_DMG_PENALTY) && (attackerPlayer != null) && ((target.getLevel() - attackerPlayer.getLevel()) >= 2)) | ||||
| 			{ | ||||
| 				final int lvlDiff = target.getLevel() - player.getLevel() - 1; | ||||
| 				final int lvlDiff = target.getLevel() - attackerPlayer.getLevel() - 1; | ||||
| 				if (lvlDiff >= Config.NPC_SKILL_DMG_PENALTY.size()) | ||||
| 				{ | ||||
| 					pvePenalty = Config.NPC_SKILL_DMG_PENALTY.get(Config.NPC_SKILL_DMG_PENALTY.size() - 1); | ||||
| @@ -1585,23 +1586,23 @@ public final class Formulas | ||||
| 				if (skill.isMagic()) | ||||
| 				{ | ||||
| 					// Magical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_MAGICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_MAGICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_MAGICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					// Physical Skill PvE | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 					pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 					pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_SKILL_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 					pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_SKILL_DEFENCE, 1) : 1; | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				// Autoattack PvE | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (player == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(player.getClassId().getId(), 1f)); | ||||
| 				pveAttack = attacker.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DAMAGE, 1) * (attackerPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DAMAGE_MULTIPLIERS.getOrDefault(attackerPlayer.getClassId().getId(), 1f)); | ||||
| 				pveDefense = target.getStat().getValue(Stats.PVE_PHYSICAL_ATTACK_DEFENCE, 1) * (targetPlayer == null ? 1 : Config.PVE_PHYSICAL_ATTACK_DEFENCE_MULTIPLIERS.getOrDefault(targetPlayer.getClassId().getId(), 1f)); | ||||
| 				pveRaidDefense = attacker.isRaid() ? attacker.getStat().getValue(Stats.PVE_RAID_PHYSICAL_ATTACK_DEFENCE, 1) : 1; | ||||
| 			} | ||||
| 			 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment