| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -252,12 +252,12 @@ public class CombatUtilities { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (agent.getEquip().get(1) != null && agent.getEquip().get(2) != null && agent.getEquip().get(2).getItemBase().isShield() == false) { | 
					 | 
					 | 
					 | 
					            if (agent.getEquip().get(1) != null && agent.getEquip().get(2) != null && agent.getEquip().get(2).getItemBase().isShield() == false) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                //mob is duel wielding and should conduct an attack for each hand
 | 
					 | 
					 | 
					 | 
					                //mob is duel wielding and should conduct an attack for each hand
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                ItemBase weapon1 = agent.getEquip().get(1).getItemBase(); | 
					 | 
					 | 
					 | 
					                ItemBase weapon1 = agent.getEquip().get(1).getItemBase(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                double range1 = getMaxDmg(weapon1.getMinDamage(), agent, weapon1) - getMinDmg(weapon1.getMinDamage(), agent, weapon1); | 
					 | 
					 | 
					 | 
					                double range1 = getMaxDmg(agent) - getMinDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                double damage1 = getMinDmg(weapon1.getMinDamage(), agent, weapon1) + ((ThreadLocalRandom.current().nextFloat() * range1) + (ThreadLocalRandom.current().nextFloat() * range1)) / 2; | 
					 | 
					 | 
					 | 
					                double damage1 = getMinDmg(agent) + ((ThreadLocalRandom.current().nextFloat() * range1) + (ThreadLocalRandom.current().nextFloat() * range1)) / 2; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, (float) damage1, CombatManager.getSwingAnimation(weapon1, null, true)); | 
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, (float) damage1, CombatManager.getSwingAnimation(weapon1, null, true)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                ItemBase weapon2 = agent.getEquip().get(2).getItemBase(); | 
					 | 
					 | 
					 | 
					                ItemBase weapon2 = agent.getEquip().get(2).getItemBase(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                double range2 = getMaxDmg(weapon2.getMinDamage(), agent, weapon2) - getMinDmg(weapon2.getMinDamage(), agent, weapon2); | 
					 | 
					 | 
					 | 
					                double range2 = getMaxDmg(agent) - getMinDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                double damage2 = getMinDmg(weapon2.getMinDamage(), agent, weapon2) + ((ThreadLocalRandom.current().nextFloat() * range2) + (ThreadLocalRandom.current().nextFloat() * range2)) / 2; | 
					 | 
					 | 
					 | 
					                double damage2 = getMinDmg(agent) + ((ThreadLocalRandom.current().nextFloat() * range2) + (ThreadLocalRandom.current().nextFloat() * range2)) / 2; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, (float) damage2, CombatManager.getSwingAnimation(weapon1, null, false)); | 
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, (float) damage2, CombatManager.getSwingAnimation(weapon1, null, false)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else { | 
					 | 
					 | 
					 | 
					            } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, determineDamage(agent), anim); | 
					 | 
					 | 
					 | 
					                swingIsDamage(agent, target, determineDamage(agent), anim); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -307,9 +307,9 @@ public class CombatUtilities { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float damage = 0; | 
					 | 
					 | 
					 | 
					        float damage = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        DamageType dt = getDamageType(agent); | 
					 | 
					 | 
					 | 
					        DamageType dt = getDamageType(agent); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if ((agent.agentType.equals(AIAgentType.PET)) == true || agent.isPet() == true || agent.isNecroPet() == true) { | 
					 | 
					 | 
					 | 
					        if (agent.BehaviourType.equals(MobBehaviourType.Pet1)) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            damage = calculatePetDamage(agent); | 
					 | 
					 | 
					 | 
					            damage = calculateMobDamage(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else if (agent.isPlayerGuard() == true) { | 
					 | 
					 | 
					 | 
					        } else if (agent.isPlayerGuard()) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //damage = calculateGuardDamage(agent);
 | 
					 | 
					 | 
					 | 
					            //damage = calculateGuardDamage(agent);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            damage = calculateMobDamage(agent); | 
					 | 
					 | 
					 | 
					            damage = calculateMobDamage(agent); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else if (agent.getLevel() > 80) { | 
					 | 
					 | 
					 | 
					        } else if (agent.getLevel() > 80) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -349,8 +349,8 @@ public class CombatUtilities { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float min = 40; | 
					 | 
					 | 
					 | 
					        float min = 40; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float max = 60; | 
					 | 
					 | 
					 | 
					        float max = 60; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None); | 
					 | 
					 | 
					 | 
					        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double minDmg = getMinDmg(min, agent, null); | 
					 | 
					 | 
					 | 
					        double minDmg = getMinDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double maxDmg = getMaxDmg(max, agent, null); | 
					 | 
					 | 
					 | 
					        double maxDmg = getMaxDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        dmgMultiplier += agent.getLevel() * 0.1f; | 
					 | 
					 | 
					 | 
					        dmgMultiplier += agent.getLevel() * 0.1f; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        range = (float) (maxDmg - minDmg); | 
					 | 
					 | 
					 | 
					        range = (float) (maxDmg - minDmg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        damage = min + ((ThreadLocalRandom.current().nextFloat() * range) + (ThreadLocalRandom.current().nextFloat() * range)) / 2; | 
					 | 
					 | 
					 | 
					        damage = min + ((ThreadLocalRandom.current().nextFloat() * range) + (ThreadLocalRandom.current().nextFloat() * range)) / 2; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -366,8 +366,8 @@ public class CombatUtilities { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double minDmg = weapon.getMinDamage(); | 
					 | 
					 | 
					 | 
					        double minDmg = weapon.getMinDamage(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double maxDmg = weapon.getMaxDamage(); | 
					 | 
					 | 
					 | 
					        double maxDmg = weapon.getMaxDamage(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double min = getMinDmg(minDmg, agent, weapon); | 
					 | 
					 | 
					 | 
					        double min = getMinDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double max = getMaxDmg(maxDmg, agent, weapon); | 
					 | 
					 | 
					 | 
					        double max = getMaxDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        DamageType dt = weapon.getDamageType(); | 
					 | 
					 | 
					 | 
					        DamageType dt = weapon.getDamageType(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -408,92 +408,48 @@ public class CombatUtilities { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public static int calculateMobDamage(Mob agent) { | 
					 | 
					 | 
					 | 
					    public static int calculateMobDamage(Mob agent) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ItemBase weapon = null; | 
					 | 
					 | 
					 | 
					        double minDmg = getMinDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double minDmg; | 
					 | 
					 | 
					 | 
					        double maxDmg = getMaxDmg(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double maxDmg; | 
					 | 
					 | 
					 | 
					        DamageType dt = getDamageType(agent); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        DamageType dt; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        //main hand or offhand damage
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (agent.getEquip().get(1) != null) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            weapon = agent.getEquip().get(1).getItemBase(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        else if (agent.getEquip().get(2) != null) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            weapon = agent.getEquip().get(2).getItemBase(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (weapon != null) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            minDmg = getMinDmg(weapon.getMinDamage(), agent, weapon); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            maxDmg = getMaxDmg(weapon.getMaxDamage(), agent, weapon); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            dt = weapon.getDamageType(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } else { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            minDmg = agent.getMobBase().getDamageMin(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            maxDmg = agent.getMobBase().getDamageMax(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            dt = DamageType.Crush; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        AbstractWorldObject target = agent.getCombatTarget(); | 
					 | 
					 | 
					 | 
					        AbstractWorldObject target = agent.getCombatTarget(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None); | 
					 | 
					 | 
					 | 
					        double damage = ThreadLocalRandom.current().nextInt((int)minDmg,(int)maxDmg + 1); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double range = maxDmg - minDmg; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        double damage = minDmg + ((ThreadLocalRandom.current().nextFloat() * range) + (ThreadLocalRandom.current().nextFloat() * range)) / 2; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (AbstractWorldObject.IsAbstractCharacter(target)) | 
					 | 
					 | 
					 | 
					        if (AbstractWorldObject.IsAbstractCharacter(target)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (((AbstractCharacter) target).isSit()) | 
					 | 
					 | 
					 | 
					            if (((AbstractCharacter) target).isSit()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                damage *= 2.5f; //increase damage if sitting
 | 
					 | 
					 | 
					 | 
					                damage *= 2.5f; //increase damage if sitting
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (AbstractWorldObject.IsAbstractCharacter(target)) | 
					 | 
					 | 
					 | 
					        if (AbstractWorldObject.IsAbstractCharacter(target)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return (int) (((AbstractCharacter) target).getResists().getResistedDamage(agent, (AbstractCharacter) target, dt, (float) damage, 0) * dmgMultiplier); | 
					 | 
					 | 
					 | 
					            return (int) (((AbstractCharacter) target).getResists().getResistedDamage(agent, (AbstractCharacter) target, dt, (float) damage, 0)); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return 0; | 
					 | 
					 | 
					 | 
					        return 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public static double getMinDmg(double min, Mob agent, ItemBase weapon) { | 
					 | 
					 | 
					 | 
					    public static double getMinDmg(Mob agent) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					            if(agent.getEquip() != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int primary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					                if(agent.getEquip().get(ItemSlotType.RHELD) != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int secondary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					                    return agent.minDamageHandOne; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int focusLevel = 0; | 
					 | 
					 | 
					 | 
					                }else if(agent.getEquip().get(ItemSlotType.LHELD) != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int masteryLevel = 0; | 
					 | 
					 | 
					 | 
					                    return agent.getMinDamageHandTwo(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					                }else{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (weapon != null) { | 
					 | 
					 | 
					 | 
					                    return agent.minDamageHandOne; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (weapon.isStrBased() == true) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                primary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                secondary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                primary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                secondary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (agent.getSkills().containsKey(weapon.getSkillRequired())) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    focusLevel = (int) agent.getSkills().get(weapon.getSkillRequired()).getModifiedAmount(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (agent.getSkills().containsKey(weapon.getMastery())) { | 
					 | 
					 | 
					 | 
					            }else{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    masteryLevel = (int) agent.getSkills().get(weapon.getMastery()).getModifiedAmount(); | 
					 | 
					 | 
					 | 
					                return agent.minDamageHandOne; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return min * (pow(0.0048 * primary + .049 * (primary - 0.75), 0.5) + pow(0.0066 * secondary + 0.064 * (secondary - 0.75), 0.5) + +0.01 * (focusLevel + masteryLevel)); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public static double getMaxDmg(double max, Mob agent, ItemBase weapon) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int primary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int secondary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int focusLevel = 0; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        int masteryLevel = 0; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (weapon != null) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (weapon.isStrBased() == true) { | 
					 | 
					 | 
					 | 
					    public static double getMaxDmg(Mob agent) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                primary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					            if(agent.getEquip() != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                secondary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					                if(agent.getEquip().get(ItemSlotType.RHELD) != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else { | 
					 | 
					 | 
					 | 
					                    return agent.maxDamageHandOne; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                primary = agent.getStatDexCurrent(); | 
					 | 
					 | 
					 | 
					                }else if(agent.getEquip().get(ItemSlotType.LHELD) != null){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                secondary = agent.getStatStrCurrent(); | 
					 | 
					 | 
					 | 
					                    return agent.getMaxDamageHandTwo(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    return agent.maxDamageHandOne; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					            }else{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (agent.getSkills().containsKey(weapon.getSkillRequired())) | 
					 | 
					 | 
					 | 
					                return agent.maxDamageHandOne; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                focusLevel = (int) agent.getSkills().get(weapon.getSkillRequired()).getModifiedAmount(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (agent.getSkills().containsKey(weapon.getSkillRequired())) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                masteryLevel = (int) agent.getSkills().get(weapon.getMastery()).getModifiedAmount(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return max * (pow(0.0124 * primary + 0.118 * (primary - 0.75), 0.5) + pow(0.0022 * secondary + 0.028 * (secondary - 0.75), 0.5) + 0.0075 * (focusLevel + masteryLevel)); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
  |