|  |  |  | @ -2,6 +2,7 @@ package engine.objects;@@ -2,6 +2,7 @@ package engine.objects; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import engine.Enum; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.powers.EffectsBase; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.powers.PowersBase; | 
			
		
	
		
			
				
					|  |  |  |  | import engine.powers.effectmodifiers.AbstractEffectModifier; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import java.math.BigDecimal; | 
			
		
	
	
		
			
				
					|  |  |  | @ -877,4 +878,82 @@ public class PlayerCombatStats {@@ -877,4 +878,82 @@ public class PlayerCombatStats { | 
			
		
	
		
			
				
					|  |  |  |  |         return HIT_VALUE_MAP.get(key); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public static float getSpellAtr(PlayerCharacter pc, CharacterPower power) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (pc == null) | 
			
		
	
		
			
				
					|  |  |  |  |             return 0f; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         PowersBase pb = power.getPower(); | 
			
		
	
		
			
				
					|  |  |  |  |         if(pb == null) | 
			
		
	
		
			
				
					|  |  |  |  |             return 0.0f; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float modifiedfocusline = 0.0f; | 
			
		
	
		
			
				
					|  |  |  |  |         if(pc.skills.containsKey(pb.skillName)){ | 
			
		
	
		
			
				
					|  |  |  |  |             modifiedfocusline = pc.skills.get(pb.skillName).getModifiedAmount(); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float modifieddex = pc.statDexCurrent; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float weaponatr1 = 0.0f; | 
			
		
	
		
			
				
					|  |  |  |  |         if(pc.charItemManager != null && pc.charItemManager.getEquipped(1) != null){ | 
			
		
	
		
			
				
					|  |  |  |  |             for(Effect eff : pc.charItemManager.getEquipped(1).effects.values()){ | 
			
		
	
		
			
				
					|  |  |  |  |                 for (AbstractEffectModifier mod : eff.getEffectModifiers()){ | 
			
		
	
		
			
				
					|  |  |  |  |                     if(mod.modType.equals(Enum.ModType.OCV)){ | 
			
		
	
		
			
				
					|  |  |  |  |                         weaponatr1 += mod.minMod + (mod.getRamp() * power.getTrains()); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float weaponatr2 = 0.0f; | 
			
		
	
		
			
				
					|  |  |  |  |         if(pc.charItemManager != null && pc.charItemManager.getEquipped(2) != null){ | 
			
		
	
		
			
				
					|  |  |  |  |             for(Effect eff : pc.charItemManager.getEquipped(2).effects.values()){ | 
			
		
	
		
			
				
					|  |  |  |  |                 for (AbstractEffectModifier mod : eff.getEffectModifiers()){ | 
			
		
	
		
			
				
					|  |  |  |  |                     if(mod.modType.equals(Enum.ModType.OCV)){ | 
			
		
	
		
			
				
					|  |  |  |  |                         weaponatr2 += mod.minMod + (mod.getRamp() * power.getTrains()); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float precise = 1.0f; | 
			
		
	
		
			
				
					|  |  |  |  |         for(CharacterRune rune : pc.runes){ | 
			
		
	
		
			
				
					|  |  |  |  |             if(rune.getRuneBase().getName().equals("Precise")) | 
			
		
	
		
			
				
					|  |  |  |  |                 precise += 0.05f; | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float stanceMod = 1.0f; | 
			
		
	
		
			
				
					|  |  |  |  |         float ATRbuffs = 0.0f; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         for(String effID : pc.effects.keySet()) { | 
			
		
	
		
			
				
					|  |  |  |  |             if (effID.contains("Stance")) { | 
			
		
	
		
			
				
					|  |  |  |  |                 Effect effect = pc.effects.get(effID); | 
			
		
	
		
			
				
					|  |  |  |  |                 EffectsBase eb = effect.getEffectsBase(); | 
			
		
	
		
			
				
					|  |  |  |  |                 if(eb.getIDString().equals("STC-H-DA")) | 
			
		
	
		
			
				
					|  |  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |  |                 for (AbstractEffectModifier mod : pc.effects.get(effID).getEffectModifiers()) { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (mod.modType.equals(Enum.ModType.OCV)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         float percent = mod.getPercentMod(); | 
			
		
	
		
			
				
					|  |  |  |  |                         int trains = pc.effects.get(effID).getTrains(); | 
			
		
	
		
			
				
					|  |  |  |  |                         float modValue = percent + (trains * mod.getRamp()); | 
			
		
	
		
			
				
					|  |  |  |  |                         stanceMod += modValue * 0.01f; | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 for (AbstractEffectModifier mod : pc.effects.get(effID).getEffectModifiers()) { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (mod.modType.equals(Enum.ModType.OCV)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         if(mod.getPercentMod() == 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                             float value = mod.getMinMod(); | 
			
		
	
		
			
				
					|  |  |  |  |                             int trains = pc.effects.get(effID).getTrains(); | 
			
		
	
		
			
				
					|  |  |  |  |                             float modValue = value + (trains * mod.getRamp()); | 
			
		
	
		
			
				
					|  |  |  |  |                             ATRbuffs += modValue; | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return (float) ((7 * modifiedfocusline +0.5 * (modifieddex)+weaponatr1+weaponatr2) * precise + (ATRbuffs - (weaponatr1+weaponatr2))) * stanceMod; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |