|  |  |  | @ -578,8 +578,14 @@ public class PlayerCombatStats {@@ -578,8 +578,14 @@ public class PlayerCombatStats { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //Defense = (1+Armor skill / 50) * Armor defense + (1 + Block skill / 100) * Shield defense
 | 
			
		
	
		
			
				
					|  |  |  |  |         // + (Primary weapon skill / 2) + (Weapon mastery skill/ 2) + ROUND((Dexterity-Dex penalty),0) * 2 + Flat bonuses from rings or cloth
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float defense = (1 + armorSkill / 50) * armorDefense; | 
			
		
	
		
			
				
					|  |  |  |  |         float defense = 0; | 
			
		
	
		
			
				
					|  |  |  |  |         for(Item equipped : this.owner.charItemManager.getEquippedList()){ | 
			
		
	
		
			
				
					|  |  |  |  |             ItemBase ib = equipped.getItemBase(); | 
			
		
	
		
			
				
					|  |  |  |  |             if(ib.isHeavyArmor() || ib.isClothArmor() || ib.isMediumArmor() || ib.isLightArmor()){ | 
			
		
	
		
			
				
					|  |  |  |  |                 defense += getArmorDefense(equipped,this.owner); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         //float defense = (1 + armorSkill / 50) * armorDefense;
 | 
			
		
	
		
			
				
					|  |  |  |  |         defense += (1 + blockSkill / 100) * shieldDefense; | 
			
		
	
		
			
				
					|  |  |  |  |         defense += (weaponSkill / 2); | 
			
		
	
		
			
				
					|  |  |  |  |         defense += (masterySkill / 2); | 
			
		
	
	
		
			
				
					|  |  |  | @ -697,4 +703,48 @@ public class PlayerCombatStats {@@ -697,4 +703,48 @@ public class PlayerCombatStats { | 
			
		
	
		
			
				
					|  |  |  |  |         return (int) returnedDex; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private static float getArmorDefense(Item armor, PlayerCharacter pc) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (armor == null) | 
			
		
	
		
			
				
					|  |  |  |  |             return 0; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         ItemBase ib = armor.getItemBase(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (ib == null) | 
			
		
	
		
			
				
					|  |  |  |  |             return 0; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (!ib.getType().equals(Enum.ItemType.ARMOR)) | 
			
		
	
		
			
				
					|  |  |  |  |             return 0; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (ib.getSkillRequired().isEmpty()) | 
			
		
	
		
			
				
					|  |  |  |  |             return ib.getDefense(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         CharacterSkill armorSkill = pc.skills.get(ib.getSkillRequired()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (armorSkill == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             Logger.error("Player " + pc.getObjectUUID() | 
			
		
	
		
			
				
					|  |  |  |  |                     + " has armor equipped without the nescessary skill to equip it"); | 
			
		
	
		
			
				
					|  |  |  |  |             return ib.getDefense(); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float def = ib.getDefense(); | 
			
		
	
		
			
				
					|  |  |  |  |         //apply item defense bonuses
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (armor != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             for(Effect eff : armor.effects.values()){ | 
			
		
	
		
			
				
					|  |  |  |  |                 for(AbstractEffectModifier mod : eff.getEffectModifiers()){ | 
			
		
	
		
			
				
					|  |  |  |  |                     if(mod.modType.equals(Enum.ModType.DR)){ | 
			
		
	
		
			
				
					|  |  |  |  |                         def += mod.minMod * (1+(eff.getTrains() * mod.getRamp())); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //def += armor.getBonus(ModType.DR, SourceType.None);
 | 
			
		
	
		
			
				
					|  |  |  |  |             //def *= (1 + armor.getBonusPercent(ModType.DR, SourceType.None));
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return (def * (1 + ((int) armorSkill.getModifiedAmount() / 50f))); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |