diff --git a/src/engine/gameManager/CombatManager.java b/src/engine/gameManager/CombatManager.java index d5b15d86..804dab88 100644 --- a/src/engine/gameManager/CombatManager.java +++ b/src/engine/gameManager/CombatManager.java @@ -483,16 +483,24 @@ public enum CombatManager { createTimer(abstractCharacter, slot, 20, true); //2 second for no weapon else { int wepSpeed = (int) (wb.getSpeed()); + if(abstractCharacter.getObjectType().equals(GameObjectType.PlayerCharacter)){ + PlayerCharacter pc = (PlayerCharacter)abstractCharacter; + if(slot == 1){ + wepSpeed = (int) pc.combatStats.attackSpeedHandOne; + }else{ + wepSpeed = (int) pc.combatStats.attackSpeedHandTwo; + } + }else { - if (weapon != null && weapon.getBonusPercent(ModType.WeaponSpeed, SourceType.None) != 0f) //add weapon speed bonus - wepSpeed *= (1 + weapon.getBonus(ModType.WeaponSpeed, SourceType.None)); - - if (abstractCharacter.getBonuses() != null && abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None) != 0f) //add effects speed bonus - wepSpeed *= (1 + abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None)); + if (weapon != null && weapon.getBonusPercent(ModType.WeaponSpeed, SourceType.None) != 0f) //add weapon speed bonus + wepSpeed *= (1 + weapon.getBonus(ModType.WeaponSpeed, SourceType.None)); - if (wepSpeed < 10) - wepSpeed = 10; //Old was 10, but it can be reached lower with legit buffs,effects. + if (abstractCharacter.getBonuses() != null && abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None) != 0f) //add effects speed bonus + wepSpeed *= (1 + abstractCharacter.getBonuses().getFloatPercentAll(ModType.AttackDelay, SourceType.None)); + if (wepSpeed < 10) + wepSpeed = 10; //Old was 10, but it can be reached lower with legit buffs,effects. + } createTimer(abstractCharacter, slot, wepSpeed, true); } @@ -536,15 +544,27 @@ public enum CombatManager { if (target == null) return; - - if (mainHand) { - atr = ac.getAtrHandOne(); - minDamage = ac.getMinDamageHandOne(); - maxDamage = ac.getMaxDamageHandOne(); - } else { - atr = ac.getAtrHandTwo(); - minDamage = ac.getMinDamageHandTwo(); - maxDamage = ac.getMaxDamageHandTwo(); + if(ac.getObjectType().equals(GameObjectType.PlayerCharacter)){ + PlayerCharacter pc = (PlayerCharacter) ac; + if (mainHand) { + atr = pc.combatStats.atrHandOne; + minDamage = pc.combatStats.minDamageHandOne; + maxDamage = pc.combatStats.maxDamageHandOne; + } else { + atr = pc.combatStats.atrHandTwo; + minDamage = pc.combatStats.minDamageHandTwo; + maxDamage = pc.combatStats.maxDamageHandTwo; + } + }else { + if (mainHand) { + atr = ac.getAtrHandOne(); + minDamage = ac.getMinDamageHandOne(); + maxDamage = ac.getMaxDamageHandOne(); + } else { + atr = ac.getAtrHandTwo(); + minDamage = ac.getMinDamageHandTwo(); + maxDamage = ac.getMaxDamageHandTwo(); + } } boolean tarIsRat = false; @@ -638,7 +658,11 @@ public enum CombatManager { } } else { AbstractCharacter tar = (AbstractCharacter) target; - defense = tar.getDefenseRating(); + if(tar.getObjectType().equals(GameObjectType.PlayerCharacter)){ + defense = ((PlayerCharacter)tar).combatStats.defense; + }else { + defense = tar.getDefenseRating(); + } handleRetaliate(tar, ac); //Handle target attacking back if in combat and has no other target }