From 2ac6762f2fd23296da327a5077788e6bd2d708ca Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Thu, 8 Nov 2012 20:15:32 +0100 Subject: [PATCH] Actor traits refactoring - Remove ActorTraits & CombatTraits. --- .../activity/SkillInfoActivity.java | 24 ++--- .../controller/SkillController.java | 1 - .../rpg/AndorsTrail/model/CombatTraits.java | 101 ------------------ .../model/ability/SkillCollection.java | 9 +- .../AndorsTrail/model/actor/ActorTraits.java | 92 ---------------- .../rpg/AndorsTrail/model/actor/Player.java | 35 +++--- .../resource/parsers/ResourceParserUtils.java | 30 ------ 7 files changed, 38 insertions(+), 254 deletions(-) delete mode 100644 AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java delete mode 100644 AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/ActorTraits.java diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java index c474b257a..a4861bbb1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java @@ -4,11 +4,9 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.R; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.controller.SkillController; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection; import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo; import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement; -import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits; import com.gpl.rpg.AndorsTrail.model.actor.Player; import android.app.Activity; @@ -194,9 +192,9 @@ public final class SkillInfoActivity extends Activity { private static int getRequirementActorStatsResourceID(int statID) { switch (statID) { - case ActorTraits.STAT_ACTOR_MAX_HP: return R.string.actorinfo_health; - case ActorTraits.STAT_ACTOR_MAX_AP: return R.string.heroinfo_actionpoints; - case ActorTraits.STAT_ACTOR_MOVECOST: return R.string.actorinfo_movecost; + case Player.STAT_ACTOR_MAX_HP: return R.string.actorinfo_health; + case Player.STAT_ACTOR_MAX_AP: return R.string.heroinfo_actionpoints; + case Player.STAT_ACTOR_MOVECOST: return R.string.actorinfo_movecost; default: return -1; } @@ -204,14 +202,14 @@ public final class SkillInfoActivity extends Activity { private static int getRequirementCombatStatsResourceID(int statID) { switch (statID) { - case CombatTraits.STAT_COMBAT_ATTACK_COST: return R.string.traitsinfo_attack_cost; - case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return R.string.traitsinfo_attack_chance; - case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return R.string.traitsinfo_criticalhit_skill; - case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return R.string.traitsinfo_criticalhit_multiplier; - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return R.string.traitsinfo_attack_damage; - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return R.string.traitsinfo_attack_damage; - case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return R.string.traitsinfo_defense_chance; - case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return R.string.traitsinfo_defense_damageresist; + case Player.STAT_COMBAT_ATTACK_COST: return R.string.traitsinfo_attack_cost; + case Player.STAT_COMBAT_ATTACK_CHANCE: return R.string.traitsinfo_attack_chance; + case Player.STAT_COMBAT_CRITICAL_SKILL: return R.string.traitsinfo_criticalhit_skill; + case Player.STAT_COMBAT_CRITICAL_MULTIPLIER: return R.string.traitsinfo_criticalhit_multiplier; + case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return R.string.traitsinfo_attack_damage; + case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return R.string.traitsinfo_attack_damage; + case Player.STAT_COMBAT_BLOCK_CHANCE: return R.string.traitsinfo_defense_chance; + case Player.STAT_COMBAT_DAMAGE_RESISTANCE: return R.string.traitsinfo_defense_damageresist; default: return -1; } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java index 604827eff..b2d938aef 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java @@ -2,7 +2,6 @@ package com.gpl.rpg.AndorsTrail.controller; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.AttackResult; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType; import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java deleted file mode 100644 index 510caeed5..000000000 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/CombatTraits.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.gpl.rpg.AndorsTrail.model; - -import android.util.FloatMath; - -import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits; -import com.gpl.rpg.AndorsTrail.util.Range; - -public class CombatTraits { - public static final int STAT_COMBAT_ATTACK_COST = 0; - public static final int STAT_COMBAT_ATTACK_CHANCE = 1; - public static final int STAT_COMBAT_CRITICAL_SKILL = 2; - public static final int STAT_COMBAT_CRITICAL_MULTIPLIER = 3; - public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MIN = 4; - public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MAX = 5; - public static final int STAT_COMBAT_BLOCK_CHANCE = 6; - public static final int STAT_COMBAT_DAMAGE_RESISTANCE = 7; - - public int attackCost; - - public int attackChance; - public int criticalSkill; - public float criticalMultiplier; - public final Range damagePotential; - - public int blockChance; - public int damageResistance; - - public CombatTraits() { - this.damagePotential = new Range(); - } - public CombatTraits(ActorTraits copy) { - this(); - set(copy); - } - public void set(ActorTraits copy) { - if (copy == null) return; - this.attackCost = copy.attackCost; - this.attackChance = copy.attackChance; - this.criticalSkill = copy.criticalSkill; - this.criticalMultiplier = copy.criticalMultiplier; - this.damagePotential.set(copy.damagePotential); - this.blockChance = copy.blockChance; - this.damageResistance = copy.damageResistance; - } - - public boolean isSameValuesAs(ActorTraits other) { - if (other == null) return isZero(); - return - this.attackCost == other.attackCost - && this.attackChance == other.attackChance - && this.criticalSkill == other.criticalSkill - && this.criticalMultiplier == other.criticalMultiplier - && this.damagePotential.equals(other.damagePotential) - && this.blockChance == other.blockChance - && this.damageResistance == other.damageResistance; - } - - private boolean isZero() { - return - this.attackCost == 0 - && this.attackChance == 0 - && this.criticalSkill == 0 - && this.criticalMultiplier == 0 - && this.damagePotential.current == 0 - && this.damagePotential.max == 0 - && this.blockChance == 0 - && this.damageResistance == 0; - } - - public boolean hasAttackChanceEffect() { return attackChance != 0; } - public boolean hasAttackDamageEffect() { return damagePotential.max != 0; } - public boolean hasBlockEffect() { return blockChance != 0; } - public boolean hasCriticalSkillEffect() { return criticalSkill != 0; } - public boolean hasCriticalMultiplierEffect() { return criticalMultiplier != 0 && criticalMultiplier != 1; } - public boolean hasCriticalAttacks() { return hasCriticalSkillEffect() && hasCriticalMultiplierEffect(); } - - public int getEffectiveCriticalChance() { - if (criticalSkill <= 0) return 0; - int v = (int) (-5 + 2 * FloatMath.sqrt(5*criticalSkill)); - if (v < 0) return 0; - return v; - } - - public int getAttacksPerTurn(final int maxAP) { - return (int) Math.floor(maxAP / attackCost); - } - - public int getCombatStats(int statID) { - switch (statID) { - case STAT_COMBAT_ATTACK_COST: return attackCost; - case STAT_COMBAT_ATTACK_CHANCE: return attackChance; - case STAT_COMBAT_CRITICAL_SKILL: return criticalSkill; - case STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(criticalMultiplier); - case STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return damagePotential.current; - case STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return damagePotential.max; - case STAT_COMBAT_BLOCK_CHANCE: return blockChance; - case STAT_COMBAT_DAMAGE_RESISTANCE: return damageResistance; - } - return 0; - } -} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java index 62ff29ec6..3450802de 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java @@ -6,9 +6,8 @@ import java.util.Collection; import android.util.SparseArray; import com.gpl.rpg.AndorsTrail.controller.Constants; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo.SkillLevelRequirement; -import com.gpl.rpg.AndorsTrail.model.actor.ActorTraits; +import com.gpl.rpg.AndorsTrail.model.actor.Player; public final class SkillCollection { public static final int SKILL_WEAPON_CHANCE = 0; @@ -91,7 +90,7 @@ public final class SkillCollection { initializeSkill(new SkillInfo(SKILL_DODGE, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null)); initializeSkill(new SkillInfo(SKILL_BARKSKIN, MAX_LEVEL_BARKSKIN, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] { SkillLevelRequirement.requireExperienceLevels(10, 0) - ,SkillLevelRequirement.requireCombatStats(CombatTraits.STAT_COMBAT_BLOCK_CHANCE, 15, 0) + ,SkillLevelRequirement.requireCombatStats(Player.STAT_COMBAT_BLOCK_CHANCE, 15, 0) })); initializeSkill(new SkillInfo(SKILL_MORE_CRITICALS, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null)); initializeSkill(new SkillInfo(SKILL_BETTER_CRITICALS, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] { @@ -107,14 +106,14 @@ public final class SkillCollection { ,SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_DMG, 1) })); initializeSkill(new SkillInfo(SKILL_EATER, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] { - SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 20, 20) + SkillLevelRequirement.requireActorStats(Player.STAT_ACTOR_MAX_HP, 20, 20) })); initializeSkill(new SkillInfo(SKILL_FORTITUDE, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] { SkillLevelRequirement.requireExperienceLevels(15, -10) })); initializeSkill(new SkillInfo(SKILL_EVASION, MAX_LEVEL_EVASION, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null)); initializeSkill(new SkillInfo(SKILL_REGENERATION, SkillInfo.MAXLEVEL_NONE, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, new SkillLevelRequirement[] { - SkillLevelRequirement.requireActorStats(ActorTraits.STAT_ACTOR_MAX_HP, 30, 0) + SkillLevelRequirement.requireActorStats(Player.STAT_ACTOR_MAX_HP, 30, 0) ,SkillLevelRequirement.requireOtherSkill(SKILL_FORTITUDE, 1) })); initializeSkill(new SkillInfo(SKILL_LOWER_EXPLOSS, MAX_LEVEL_LOWER_EXPLOSS, SkillInfo.LEVELUP_TYPE_ALWAYS_SHOWN, null)); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/ActorTraits.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/ActorTraits.java deleted file mode 100644 index e5bd85e94..000000000 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/ActorTraits.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.gpl.rpg.AndorsTrail.model.actor; - -import android.util.FloatMath; - -import com.gpl.rpg.AndorsTrail.model.CombatTraits; -import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse; -import com.gpl.rpg.AndorsTrail.util.Range; - -public class ActorTraits { - public static final int STAT_ACTOR_MAX_HP = 0; - public static final int STAT_ACTOR_MAX_AP = 1; - public static final int STAT_ACTOR_MOVECOST = 2; - - public final int iconID; - - public int maxAP; - public int maxHP; - - public int moveCost; - public final int baseMoveCost; - - public int attackCost; - public int attackChance; - public int criticalSkill; - public float criticalMultiplier; - public final Range damagePotential; - public int blockChance; - public int damageResistance; - - public ItemTraits_OnUse[] onHitEffects; - - public ActorTraits( - int iconID - , int attackCost - , int attackChance - , int criticalSkill - , float criticalMultiplier - , Range damagePotential - , int blockChance - , int damageResistance - , int standardMoveCost - , ItemTraits_OnUse[] onHitEffects - ) { - this.iconID = iconID; - this.attackCost = attackCost; - this.attackChance = attackChance; - this.criticalSkill = criticalSkill; - this.criticalMultiplier = criticalMultiplier; - this.damagePotential = damagePotential; - this.blockChance = blockChance; - this.damageResistance = damageResistance; - this.baseMoveCost = standardMoveCost; - this.onHitEffects = onHitEffects; - } - - public int getMovesPerTurn() { return (int) Math.floor(maxAP / moveCost); } - public boolean hasAttackChanceEffect() { return attackChance != 0; } - public boolean hasAttackDamageEffect() { return damagePotential.max != 0; } - public boolean hasBlockEffect() { return blockChance != 0; } - public boolean hasCriticalSkillEffect() { return criticalSkill != 0; } - public boolean hasCriticalMultiplierEffect() { return criticalMultiplier != 0 && criticalMultiplier != 1; } - public boolean hasCriticalAttacks() { return hasCriticalSkillEffect() && hasCriticalMultiplierEffect(); } - public int getEffectiveCriticalChance() { - if (criticalSkill <= 0) return 0; - int v = (int) (-5 + 2 * FloatMath.sqrt(5*criticalSkill)); - if (v < 0) return 0; - return v; - } - - public int getActorStats(int statID) { - switch (statID) { - case STAT_ACTOR_MAX_HP: return maxHP; - case STAT_ACTOR_MAX_AP: return maxAP; - case STAT_ACTOR_MOVECOST: return moveCost; - } - return 0; - } - - public int getCombatStats(int statID) { - switch (statID) { - case CombatTraits.STAT_COMBAT_ATTACK_COST: return attackCost; - case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return attackChance; - case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return criticalSkill; - case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(criticalMultiplier); - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return damagePotential.current; - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return damagePotential.max; - case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return blockChance; - case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return damageResistance; - } - return 0; - } -} diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java index 598867087..24733f0a1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java @@ -14,7 +14,6 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.controller.ActorStatsController; import com.gpl.rpg.AndorsTrail.controller.Constants; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; import com.gpl.rpg.AndorsTrail.model.item.DropListCollection; import com.gpl.rpg.AndorsTrail.model.item.Inventory; @@ -28,6 +27,18 @@ import com.gpl.rpg.AndorsTrail.util.Range; import com.gpl.rpg.AndorsTrail.util.Size; public final class Player extends Actor { + public static final int STAT_ACTOR_MAX_HP = 0; + public static final int STAT_ACTOR_MAX_AP = 1; + public static final int STAT_ACTOR_MOVECOST = 2; + public static final int STAT_COMBAT_ATTACK_COST = 0; + public static final int STAT_COMBAT_ATTACK_CHANCE = 1; + public static final int STAT_COMBAT_CRITICAL_SKILL = 2; + public static final int STAT_COMBAT_CRITICAL_MULTIPLIER = 3; + public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MIN = 4; + public static final int STAT_COMBAT_DAMAGE_POTENTIAL_MAX = 5; + public static final int STAT_COMBAT_BLOCK_CHANCE = 6; + public static final int STAT_COMBAT_DAMAGE_RESISTANCE = 7; + public static final int DEFAULT_PLAYER_ATTACKCOST = 4; public final Coord lastPosition; public final Coord nextPosition; @@ -225,23 +236,23 @@ public final class Player extends Actor { public int getActorStats(int statID) { switch (statID) { - case ActorTraits.STAT_ACTOR_MAX_HP: return baseTraits.maxHP; - case ActorTraits.STAT_ACTOR_MAX_AP: return baseTraits.maxAP; - case ActorTraits.STAT_ACTOR_MOVECOST: return baseTraits.moveCost; + case Player.STAT_ACTOR_MAX_HP: return baseTraits.maxHP; + case Player.STAT_ACTOR_MAX_AP: return baseTraits.maxAP; + case Player.STAT_ACTOR_MOVECOST: return baseTraits.moveCost; } return 0; } public int getCombatStats(int statID) { switch (statID) { - case CombatTraits.STAT_COMBAT_ATTACK_COST: return baseTraits.attackCost; - case CombatTraits.STAT_COMBAT_ATTACK_CHANCE: return baseTraits.attackChance; - case CombatTraits.STAT_COMBAT_CRITICAL_SKILL: return baseTraits.criticalSkill; - case CombatTraits.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(baseTraits.criticalMultiplier); - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return baseTraits.damagePotential.current; - case CombatTraits.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return baseTraits.damagePotential.max; - case CombatTraits.STAT_COMBAT_BLOCK_CHANCE: return baseTraits.blockChance; - case CombatTraits.STAT_COMBAT_DAMAGE_RESISTANCE: return baseTraits.damageResistance; + case Player.STAT_COMBAT_ATTACK_COST: return baseTraits.attackCost; + case Player.STAT_COMBAT_ATTACK_CHANCE: return baseTraits.attackChance; + case Player.STAT_COMBAT_CRITICAL_SKILL: return baseTraits.criticalSkill; + case Player.STAT_COMBAT_CRITICAL_MULTIPLIER: return (int) FloatMath.floor(baseTraits.criticalMultiplier); + case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MIN: return baseTraits.damagePotential.current; + case Player.STAT_COMBAT_DAMAGE_POTENTIAL_MAX: return baseTraits.damagePotential.max; + case Player.STAT_COMBAT_BLOCK_CHANCE: return baseTraits.blockChance; + case Player.STAT_COMBAT_DAMAGE_RESISTANCE: return baseTraits.damageResistance; } return 0; } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java index fd44d357d..a81526b08 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java @@ -1,7 +1,6 @@ package com.gpl.rpg.AndorsTrail.resource.parsers; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; -import com.gpl.rpg.AndorsTrail.model.CombatTraits; import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits; import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits; import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader; @@ -66,35 +65,6 @@ public final class ResourceParserUtils { return new Size(Integer.parseInt(parts[0]), Integer.parseInt(parts[1])); } - public static CombatTraits parseCombatTraits(String[] parts, int startIndex) { - String attackCost = parts[startIndex]; - String attackChance = parts[startIndex + 1]; - String criticalSkill = parts[startIndex + 2]; - String criticalMultiplier = parts[startIndex + 3]; - ConstRange attackDamage = parseConstRange(parts[startIndex + 4], parts[startIndex + 5]); - String blockChance = parts[startIndex + 6]; - String damageResistance = parts[startIndex + 7]; - if ( attackCost.length() <= 0 - && attackChance.length() <= 0 - && criticalSkill.length() <= 0 - && criticalMultiplier.length() <= 0 - && attackDamage == null - && blockChance.length() <= 0 - && damageResistance.length() <= 0 - ) { - return null; - } else { - CombatTraits result = new CombatTraits(); - result.attackCost = parseInt(attackCost, 0); - result.attackChance = parseInt(attackChance, 0); - result.criticalSkill = parseInt(criticalSkill, 0); - result.criticalMultiplier = parseFloat(criticalMultiplier, 0); - if (attackDamage != null) result.damagePotential.set(attackDamage); - result.blockChance = parseInt(blockChance, 0); - result.damageResistance = parseInt(damageResistance, 0); - return result; - } - } public static String parseNullableString(String s) { if (s == null || s.length() <= 0) return null; return s;