@ -3838,6 +3838,227 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -3838,6 +3838,227 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    public  void  calculateATR ( ) {   
			
		
	
		
			
				
					        if ( this . charItemManager  = =  null ) {   
			
		
	
		
			
				
					            this . atrHandOne  =  1 ;   
			
		
	
		
			
				
					            this . atrHandTwo  =  1 ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        Item  equippedRight  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . RHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					        int  weaponSkill1  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery1  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        float  atr1  =  0 ;   
			
		
	
		
			
				
					        int  primaryStat1 ;   
			
		
	
		
			
				
					        if ( equippedRight  ! =  null  & &  equippedRight . getItemBase ( ) . isStrBased ( ) ) {   
			
		
	
		
			
				
					            primaryStat1  =  this . statStrCurrent ;   
			
		
	
		
			
				
					        } else {   
			
		
	
		
			
				
					            primaryStat1  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        atr1  =  ( primaryStat1  *  0 . 5f )  +  ( weaponSkill1  *  4 )  +  ( weaponMastery1  *  3 ) ;   
			
		
	
		
			
				
					        if  ( this . bonuses  ! =  null )  {   
			
		
	
		
			
				
					            atr1  + =  this . bonuses . getFloat ( ModType . OCV ,  SourceType . None ) ;   
			
		
	
		
			
				
					            float  pos_Bonus  =  ( 1  +  this . bonuses . getFloatPercentPositive ( ModType . OCV ,  SourceType . None ) ) ;   
			
		
	
		
			
				
					            atr1  * =  pos_Bonus ;   
			
		
	
		
			
				
					            float  neg_Bonus  =  this . bonuses . getFloatPercentNegative ( ModType . OCV ,  SourceType . None ) ;   
			
		
	
		
			
				
					            atr1  * =  ( 1  +  neg_Bonus ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        atr1  =  ( atr1  <  1 )  ?  1  :  atr1 ;   
			
		
	
		
			
				
					        this . atrHandOne  =  ( short )  ( atr1  +  0 . 5f ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        Item  equippedLeft  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . LHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					        int  weaponSkill2  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery2  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        float  atr2  =  0 ;   
			
		
	
		
			
				
					        int  primaryStat2 ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( equippedLeft  ! =  null  & &  equippedLeft . getItemBase ( ) . isStrBased ( ) )  {   
			
		
	
		
			
				
					            primaryStat2  =  this . statStrCurrent ;   
			
		
	
		
			
				
					        }  else  {   
			
		
	
		
			
				
					            primaryStat2  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        atr2  =  ( primaryStat2  *  0 . 5f )  +  ( weaponSkill2  *  4 )  +  ( weaponMastery2  *  3 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( this . bonuses  ! =  null )  {   
			
		
	
		
			
				
					            atr2  + =  this . bonuses . getFloat ( ModType . OCV ,  SourceType . None ) ;   
			
		
	
		
			
				
					            float  pos_Bonus  =  ( 1  +  this . bonuses . getFloatPercentPositive ( ModType . OCV ,  SourceType . None ) ) ;   
			
		
	
		
			
				
					            atr2  * =  pos_Bonus ;   
			
		
	
		
			
				
					            float  neg_Bonus  =  this . bonuses . getFloatPercentNegative ( ModType . OCV ,  SourceType . None ) ;   
			
		
	
		
			
				
					            atr2  * =  ( 1  +  neg_Bonus ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        atr2  =  ( atr2  <  1 )  ?  1  :  atr2 ;   
			
		
	
		
			
				
					        this . atrHandTwo  =  ( short )  ( atr2  +  0 . 5f ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    public  void  calculateDamage ( ) {   
			
		
	
		
			
				
					        if ( this . charItemManager  = =  null ) {   
			
		
	
		
			
				
					            this . minDamageHandOne  =  1 ;   
			
		
	
		
			
				
					            this . maxDamageHandOne  =  5 ;   
			
		
	
		
			
				
					            this . minDamageHandTwo  =  1 ;   
			
		
	
		
			
				
					            this . maxDamageHandTwo  =  5 ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        this . calculateMinDamage ( ) ;   
			
		
	
		
			
				
					        this . calculateMaxDamage ( ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    public  void  calculateMinDamage ( ) {   
			
		
	
		
			
				
					        int  baseDMG1  =  1 ;   
			
		
	
		
			
				
					        int  baseDMG2  =  1 ;   
			
		
	
		
			
				
					        int  weaponSkill1  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponSkill2  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery1  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery2  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        Item  equippedRight  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . RHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					        Item  equippedLeft  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . LHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  primary1  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        int  secondary1  =  this . statStrCurrent ;   
			
		
	
		
			
				
					        int  primary2  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        int  secondary2  =  this . statStrCurrent ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( equippedRight  ! =  null ) {   
			
		
	
		
			
				
					            baseDMG1  =  equippedRight . getItemBase ( ) . getMinDamage ( ) ;   
			
		
	
		
			
				
					            weaponSkill1  =  this . skills . get ( equippedRight . getItemBase ( ) . getSkillRequired ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            weaponMastery1  =  this . skills . get ( equippedRight . getItemBase ( ) . getMastery ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            if ( equippedRight . getItemBase ( ) . isStrBased ( ) )  {   
			
		
	
		
			
				
					                primary1  =  this . statStrCurrent ;   
			
		
	
		
			
				
					                secondary1  =  this . statDexCurrent ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        if ( equippedLeft  ! =  null ) {   
			
		
	
		
			
				
					            baseDMG2  =  equippedLeft . getItemBase ( ) . getMinDamage ( ) ;   
			
		
	
		
			
				
					            weaponSkill2  =  this . skills . get ( equippedLeft . getItemBase ( ) . getSkillRequired ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            weaponMastery2  =  this . skills . get ( equippedLeft . getItemBase ( ) . getMastery ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            if ( equippedLeft . getItemBase ( ) . isStrBased ( ) )  {   
			
		
	
		
			
				
					                primary2  =  this . statStrCurrent ;   
			
		
	
		
			
				
					                secondary2  =  this . statDexCurrent ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        double  primaryComponent1  =  0 . 0048  *  primary1  +  0 . 049  *  Math . sqrt ( primary1  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  secondaryComponent1  =  0 . 0066  *  secondary1  +  0 . 064  *  Math . sqrt ( secondary1  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  skillComponent1  =  0 . 01  *  ( weaponSkill1  +  weaponMastery1 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  min1  =   ( int ) ( baseDMG1  *  ( primaryComponent1  +  secondaryComponent1  +  skillComponent1 ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        double  primaryComponent2  =  0 . 0048  *  primary2  +  0 . 049  *  Math . sqrt ( primary2  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  secondaryComponent2  =  0 . 0066  *  secondary2  +  0 . 064  *  Math . sqrt ( secondary2  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  skillComponent2  =  0 . 01  *  ( weaponSkill2  +  weaponMastery2 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  min2  =   ( int ) ( baseDMG2  *  ( primaryComponent2  +  secondaryComponent2  +  skillComponent2 ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        this . minDamageHandOne  =  min1 ;   
			
		
	
		
			
				
					        this . minDamageHandTwo  =  min2 ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    public  void  calculateMaxDamage ( )  {   
			
		
	
		
			
				
					        int  baseDMG1  =  1 ;   
			
		
	
		
			
				
					        int  baseDMG2  =  1 ;   
			
		
	
		
			
				
					        int  weaponSkill1  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponSkill2  =  this . skills . get ( "Unarmed Combat" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery1  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					        int  weaponMastery2  =  this . skills . get ( "Unarmed Combat Mastery" ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        Item  equippedRight  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . RHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					        Item  equippedLeft  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . LHELD . ordinal ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  primary1  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        int  secondary1  =  this . statStrCurrent ;   
			
		
	
		
			
				
					        int  primary2  =  this . statDexCurrent ;   
			
		
	
		
			
				
					        int  secondary2  =  this . statStrCurrent ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( equippedRight  ! =  null )  {   
			
		
	
		
			
				
					            baseDMG1  =  equippedRight . getItemBase ( ) . getMaxDamage ( ) ;   
			
		
	
		
			
				
					            weaponSkill1  =  this . skills . get ( equippedRight . getItemBase ( ) . getSkillRequired ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            weaponMastery1  =  this . skills . get ( equippedRight . getItemBase ( ) . getMastery ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            if  ( equippedRight . getItemBase ( ) . isStrBased ( ) )  {   
			
		
	
		
			
				
					                primary1  =  this . statStrCurrent ;   
			
		
	
		
			
				
					                secondary1  =  this . statDexCurrent ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( equippedLeft  ! =  null )  {   
			
		
	
		
			
				
					            baseDMG2  =  equippedLeft . getItemBase ( ) . getMaxDamage ( ) ;   
			
		
	
		
			
				
					            weaponSkill2  =  this . skills . get ( equippedLeft . getItemBase ( ) . getSkillRequired ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            weaponMastery2  =  this . skills . get ( equippedLeft . getItemBase ( ) . getMastery ( ) ) . getTotalSkillPercet ( ) ;   
			
		
	
		
			
				
					            if  ( equippedLeft . getItemBase ( ) . isStrBased ( ) )  {   
			
		
	
		
			
				
					                primary2  =  this . statStrCurrent ;   
			
		
	
		
			
				
					                secondary2  =  this . statDexCurrent ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Calculate max damage for right hand weapon
   
			
		
	
		
			
				
					        double  primaryComponent1  =  0 . 0124  *  primary1  +  0 . 118  *  Math . sqrt ( primary1  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  secondaryComponent1  =  0 . 0022  *  secondary1  +  0 . 028  *  Math . sqrt ( secondary1  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  skillComponent1  =  0 . 0075  *  ( weaponSkill1  +  weaponMastery1 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  max1  =  ( int )  ( baseDMG1  *  ( primaryComponent1  +  secondaryComponent1  +  skillComponent1 ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Calculate max damage for left hand weapon
   
			
		
	
		
			
				
					        double  primaryComponent2  =  0 . 0124  *  primary2  +  0 . 118  *  Math . sqrt ( primary2  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  secondaryComponent2  =  0 . 0022  *  secondary2  +  0 . 028  *  Math . sqrt ( secondary2  -  0 . 75 ) ;   
			
		
	
		
			
				
					        double  skillComponent2  =  0 . 0075  *  ( weaponSkill2  +  weaponMastery2 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        int  max2  =  ( int )  ( baseDMG2  *  ( primaryComponent2  +  secondaryComponent2  +  skillComponent2 ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        this . maxDamageHandOne  =  max1 ;   
			
		
	
		
			
				
					        this . maxDamageHandTwo  =  max2 ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    public  void  calculateSpeed ( ) {   
			
		
	
		
			
				
					        if ( this . charItemManager  = =  null ) {   
			
		
	
		
			
				
					            this . speedHandOne  =  20 . 0f ;   
			
		
	
		
			
				
					            this . speedHandTwo  =  20 . 0f ;   
			
		
	
		
			
				
					            return ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        ItemBase  weaponBase1  =  null ;   
			
		
	
		
			
				
					        ItemBase  weaponBase2  =  null ;   
			
		
	
		
			
				
					        if ( this . charItemManager . getItemFromEquipped ( ItemSlotType . RHELD . ordinal ( ) )  ! =  null ) {   
			
		
	
		
			
				
					            weaponBase1  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . RHELD . ordinal ( ) ) . getItemBase ( ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        if ( this . charItemManager . getItemFromEquipped ( ItemSlotType . LHELD . ordinal ( ) )  ! =  null ) {   
			
		
	
		
			
				
					            weaponBase2  =  this . charItemManager . getItemFromEquipped ( ItemSlotType . LHELD . ordinal ( ) ) . getItemBase ( ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        float  speed1 ;   
			
		
	
		
			
				
					        float  speed2 ;   
			
		
	
		
			
				
					        if  ( weaponBase1  ! =  null )   
			
		
	
		
			
				
					            speed1  =  weaponBase1 . getSpeed ( ) ;   
			
		
	
		
			
				
					        else   
			
		
	
		
			
				
					            speed1  =  20f ;   
			
		
	
		
			
				
					        if  ( weaponBase2  ! =  null )   
			
		
	
		
			
				
					            speed2  =  weaponBase2 . getSpeed ( ) ;   
			
		
	
		
			
				
					        else   
			
		
	
		
			
				
					            speed2  =  20f ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( this . bonuses ! =  null ) {   
			
		
	
		
			
				
					            for  ( AbstractEffectModifier  mod  :  this . bonuses . bonusFloats . keySet ( ) )  {   
			
		
	
		
			
				
					                if  ( mod . modType . equals ( ModType . AttackDelay )  | |  mod . modType . equals ( ModType . WeaponSpeed ) )  {   
			
		
	
		
			
				
					                    float  modValue  =  1  +  mod . getPercentMod ( )  *  0 . 01f ;   
			
		
	
		
			
				
					                    speed1  * =  modValue ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( this . bonuses ! =  null ) {   
			
		
	
		
			
				
					            for  ( AbstractEffectModifier  mod  :  this . bonuses . bonusFloats . keySet ( ) )  {   
			
		
	
		
			
				
					                if  ( mod . modType . equals ( ModType . AttackDelay )  | |  mod . modType . equals ( ModType . WeaponSpeed ) )  {   
			
		
	
		
			
				
					                    float  modValue  =  1  +  mod . getPercentMod ( )  *  0 . 01f ;   
			
		
	
		
			
				
					                    speed2  * =  modValue ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( speed1  <  10 )   
			
		
	
		
			
				
					            speed1  =  10 ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( speed2  <  10 )   
			
		
	
		
			
				
					            speed2  =  10 ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        this . speedHandOne  =  speed1 ;   
			
		
	
		
			
				
					        this . speedHandTwo =  speed2 ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    / * *   
			
		
	
		
			
				
					     *  @  Calculates  Atr ,  and  Damage  for  each  weapon   
			
		
	
		
			
				
					     * /   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -3864,9 +4085,6 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -3864,9 +4085,6 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					        float  speed  =  20f ;   
			
		
	
		
			
				
					        boolean  strBased  =  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        ItemBase  wbMain  =  ( weapon  ! =  null )  ?  weapon . getItemBase ( )  :  null ;   
			
		
	
		
			
				
					        ItemBase  wbOff  =  ( otherHand  ! =  null )  ?  otherHand . getItemBase ( )  :  null ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // get skill percentages and min and max damage for weapons
   
			
		
	
		
			
				
					        if  ( noWeapon )  {   
			
		
	
		
			
				
					            if  ( mainHand )  {   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -3930,8 +4148,6 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -3930,8 +4148,6 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					            //(Primary Stat / 2) + (Weapon Skill * 4) + (Weapon Mastery * 3) + (ATR Enchantments) * 1.stance modifier
   
			
		
	
		
			
				
					            float  atr  =  0 ;   
			
		
	
		
			
				
					            int  primaryStat ;   
			
		
	
		
			
				
					            int  dexMod  =  this . getDexMod ( ) ;   
			
		
	
		
			
				
					            int  strMod  =  this . getStrMod ( ) ;   
			
		
	
		
			
				
					            if ( weaponBase  ! =  null  & &  weaponBase . isStrBased ( ) ) {   
			
		
	
		
			
				
					                primaryStat  =  this . statStrCurrent ;   
			
		
	
		
			
				
					            } else {   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -3953,6 +4169,7 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -3953,6 +4169,7 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					                float  neg_Bonus  =  this . bonuses . getFloatPercentNegative ( ModType . OCV ,  SourceType . None ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                atr  * =  ( 1  +  neg_Bonus ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            atr  =  ( atr  <  1 )  ?  1  :  atr ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -4086,6 +4303,10 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -4086,6 +4303,10 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					            this . maxDamageHandTwo  =  ( int )  maxDamage ;   
			
		
	
		
			
				
					            this . speedHandTwo  =  speed ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        this . calculateATR ( ) ;   
			
		
	
		
			
				
					        this . calculateDamage ( ) ;   
			
		
	
		
			
				
					        this . calculateSpeed ( ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    / * *   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -4107,9 +4328,15 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -4107,9 +4328,15 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					        float  def  =  ab . getDefense ( ) ;   
			
		
	
		
			
				
					        //apply item defense bonuses
   
			
		
	
		
			
				
					        if  ( shield  ! =  null )  {   
			
		
	
		
			
				
					            def  + =  shield . getBonus ( ModType . DR ,  SourceType . None ) ;   
			
		
	
		
			
				
					            def  * =  ( 1  +  shield . getBonusPercent ( ModType . DR ,  SourceType . None ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            //def += shield.getBonus(ModType.DR, SourceType.None);
   
			
		
	
		
			
				
					            //def *= (1 + shield.getBonusPercent(ModType.DR, SourceType.None));
   
			
		
	
		
			
				
					            for ( Effect  eff  :  shield . effects . values ( ) )  {   
			
		
	
		
			
				
					                for  ( AbstractEffectModifier  mod  :  eff . getEffectModifiers ( ) )  {   
			
		
	
		
			
				
					                    if  ( mod . modType . equals ( ModType . DR ) )  {   
			
		
	
		
			
				
					                        def  + =  mod . minMod  *  ( 1  +  ( eff . getTrains ( )  *  mod . getRamp ( ) ) ) ;   
			
		
	
		
			
				
					                    }   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // float val = ((float)ab.getDefense()) * (1 + (skillMod / 100));
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -4167,8 +4394,10 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -4167,8 +4394,10 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( ! ib . getType ( ) . equals ( ItemType . ARMOR ) )   
			
		
	
		
			
				
					            return  0 ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( ib . getSkillRequired ( ) . isEmpty ( ) )   
			
		
	
		
			
				
					            return  ib . getDefense ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        CharacterSkill  armorSkill  =  this . skills . get ( ib . getSkillRequired ( ) ) ;   
			
		
	
		
			
				
					        if  ( armorSkill  = =  null )  {   
			
		
	
		
			
				
					            Logger . error ( "Player "  +  this . getObjectUUID ( )   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -4179,8 +4408,18 @@ public class PlayerCharacter extends AbstractCharacter {
				@@ -4179,8 +4408,18 @@ public class PlayerCharacter extends AbstractCharacter {
					 
			
		
	
		
			
				
					        float  def  =  ib . getDefense ( ) ;   
			
		
	
		
			
				
					        //apply item defense bonuses
   
			
		
	
		
			
				
					        if  ( armor  ! =  null )  {   
			
		
	
		
			
				
					            def  + =  armor . getBonus ( ModType . DR ,  SourceType . None ) ;   
			
		
	
		
			
				
					            def  * =  ( 1  +  armor . getBonusPercent ( ModType . DR ,  SourceType . None ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            for ( Effect  eff  :  armor . effects . values ( ) ) {   
			
		
	
		
			
				
					                for ( AbstractEffectModifier  mod  :  eff . getEffectModifiers ( ) ) {   
			
		
	
		
			
				
					                    if ( mod . modType . equals ( 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));
   
			
		
	
		
			
				
					        }