diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java index 01f539868..8d1ed4dc4 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java @@ -328,12 +328,15 @@ public final class SkillController { if (skillLevelFightStyle == 2) { percent = SkillCollection.DUALWIELD_EFFICIENCY_LEVEL2; playerTraits.attackCost = Math.max(attackCostMainHand, attackCostOffHand); + playerTraits.criticalMultiplier = Math.max(mainHandItem.effects_equip.stats.setCriticalMultiplier, getPercentage(offHandItem.effects_equip.stats.setCriticalMultiplier, SkillCollection.DUALWIELD_EFFICIENCY_LEVEL2, 0)); } else if (skillLevelFightStyle == 1) { percent = SkillCollection.DUALWIELD_EFFICIENCY_LEVEL1; playerTraits.attackCost = attackCostMainHand + getPercentage(attackCostOffHand, SkillCollection.DUALWIELD_LEVEL1_OFFHAND_AP_COST_PERCENT, 0); + playerTraits.criticalMultiplier = Math.max(mainHandItem.effects_equip.stats.setCriticalMultiplier, getPercentage(offHandItem.effects_equip.stats.setCriticalMultiplier, SkillCollection.DUALWIELD_EFFICIENCY_LEVEL1, 0)); } else { percent = SkillCollection.DUALWIELD_EFFICIENCY_LEVEL0; playerTraits.attackCost = attackCostMainHand + attackCostOffHand; + playerTraits.criticalMultiplier = Math.max(mainHandItem.effects_equip.stats.setCriticalMultiplier, getPercentage(offHandItem.effects_equip.stats.setCriticalMultiplier, SkillCollection.DUALWIELD_EFFICIENCY_LEVEL0, 0)); } final int skillLevel = getSkillLevelForItemType(player, offHandItem); @@ -345,6 +348,7 @@ public final class SkillController { addPercentBlockChance(player, offHandItem, percent, 100); addPercentDamage(player, offHandItem, percent, 100); addPercentCriticalSkill(player, offHandItem, percent, 100); + addPercentMaxHPBoost(player, offHandItem, percent, 100); } int skillLevelSpecialization = player.getSkillLevel(SkillID.specializationDualWield); @@ -375,6 +379,11 @@ public final class SkillController { if (itemType.effects_equip == null) return; player.criticalSkill += getPercentage(itemType.effects_equip.stats.increaseCriticalSkill, percentForPositiveValues, percentForNegativeValues); } + + private static void addPercentMaxHPBoost(Player player, ItemType itemType, int percentForPositiveValues, int percentForNegativeValues) { + if (itemType.effects_equip == null) return; + player.health.addToMax(getPercentage(itemType.effects_equip.stats.increaseMaxHP, percentForPositiveValues, percentForNegativeValues)); + } private static int getPercentage(int originalValue, int percentForPositiveValues, int percentForNegativeValues) { if (originalValue == 0) { @@ -385,6 +394,16 @@ public final class SkillController { return (int) FloatMath.floor(originalValue * percentForNegativeValues / 100.0f); } } + + private static float getPercentage(float originalValue, int percentForPositiveValues, int percentForNegativeValues) { + if (originalValue == 0) { + return 0; + } else if (originalValue > 0) { + return originalValue * percentForPositiveValues / 100.0f; + } else { + return originalValue * percentForNegativeValues / 100.0f; + } + } public static boolean isDualWielding(ItemType mainHandItem, ItemType offHandItem) { if (mainHandItem == null) return false; @@ -403,4 +422,4 @@ public final class SkillController { if (offHandItem == null) return false; return mainHandItem.isWeapon() && offHandItem.isShield(); } -} +} \ No newline at end of file