From 1bd20564fd0d59a5468b4ebb48c2abc180996244 Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Sat, 23 Jun 2012 21:15:44 +0200 Subject: [PATCH] Added weapon proficiency & fighting style skills. --- AndorsTrail/res/values/strings.xml | 51 ++++ .../activity/SkillInfoActivity.java | 32 +++ .../controller/SkillController.java | 219 +++++++++++++++++- .../model/ability/SkillCollection.java | 49 +++- .../AndorsTrail/view/SkillListAdapter.java | 16 ++ 5 files changed, 365 insertions(+), 2 deletions(-) diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml index 40920c11c..ea29806fb 100644 --- a/AndorsTrail/res/values/strings.xml +++ b/AndorsTrail/res/values/strings.xml @@ -566,4 +566,55 @@ [Quest completed: \"%1$s\"] [Quest updated: \"%1$s\"] + Dagger proficiency + One-handed sword proficiency + Two-handed sword proficiency + Axe proficiency + Bludgeoning weapon proficiency + Unarmed fighting + Shield proficiency + Armour proficiency: unarmored + Light armor proficiency + Heavy armor proficiency + Fighting style: Dual wield + Fighting style: Two handed weapon + Fighting style: Weapon and shield + Specialization: Dual wield + Specialization: Two handed weapon + Specialization: Weapon and shield + + Dagger proficiency + One-handed sword proficiency + Two-handed sword proficiency + Axe proficiency + Bludgeoning weapon proficiency + Unarmed fighting + Shield proficiency + Armour proficiency: unarmored + Light armor proficiency + Heavy armor proficiency + Fighting style: Dual wield + Fighting style: Two handed weapon + Fighting style: Weapon and shield + Specialization: Dual wield + Specialization: Two handed weapon + Specialization: Weapon and shield + + Dagger proficiency + One-handed sword proficiency + Two-handed sword proficiency + Axe proficiency + Bludgeoning weapon proficiency + Unarmed fighting + Shield proficiency + Armour proficiency: unarmored + Light armor proficiency + Heavy armor proficiency + Fighting style: Dual wield + Fighting style: Two handed weapon + Fighting style: Weapon and shield + Specialization: Dual wield + Specialization: Two handed weapon + Specialization: Weapon and shield + diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java index 1811967de..d39d48d15 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/SkillInfoActivity.java @@ -133,6 +133,22 @@ public final class SkillInfoActivity extends Activity { case SkillCollection.SKILL_REJUVENATION: return R.string.skill_title_rejuvenation; case SkillCollection.SKILL_TAUNT: return R.string.skill_title_taunt; case SkillCollection.SKILL_CONCUSSION: return R.string.skill_title_concussion; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_DAGGER: return R.string.skill_title_weapon_prof_dagger; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_1HSWORD: return R.string.skill_title_weapon_prof_1hsword; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_2HSWORD: return R.string.skill_title_weapon_prof_2hsword; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_AXE: return R.string.skill_title_weapon_prof_axe; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_BLUNT: return R.string.skill_title_weapon_prof_blunt; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_UNARMED: return R.string.skill_title_weapon_prof_unarmed; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_SHIELD: return R.string.skill_title_armor_prof_shield; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_UNARMORED: return R.string.skill_title_armor_prof_unarmored; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT: return R.string.skill_title_armor_prof_light; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY: return R.string.skill_title_armor_prof_heavy; + case SkillCollection.SKILL_FIGHTSTYLE_DUAL_WIELD: return R.string.skill_title_fightstyle_dualwield; + case SkillCollection.SKILL_FIGHTSTYLE_2HAND: return R.string.skill_title_fightstyle_2hand; + case SkillCollection.SKILL_FIGHTSTYLE_WEAPON_SHIELD: return R.string.skill_title_fightstyle_weapon_shield; + case SkillCollection.SKILL_SPECIALIZATION_DUAL_WIELD: return R.string.skill_title_specialization_dualwield; + case SkillCollection.SKILL_SPECIALIZATION_2HAND: return R.string.skill_title_specialization_2hand; + case SkillCollection.SKILL_SPECIALIZATION_WEAPON_SHIELD: return R.string.skill_title_specialization_weapon_shield; default: return -1; } @@ -166,6 +182,22 @@ public final class SkillInfoActivity extends Activity { case SkillCollection.SKILL_REJUVENATION: return res.getString(R.string.skill_longdescription_rejuvenation, SkillCollection.PER_SKILLPOINT_INCREASE_REJUVENATION_CHANCE); case SkillCollection.SKILL_TAUNT: return res.getString(R.string.skill_longdescription_taunt, SkillCollection.PER_SKILLPOINT_INCREASE_TAUNT_CHANCE, SkillCollection.TAUNT_AP_LOSS); case SkillCollection.SKILL_CONCUSSION: return res.getString(R.string.skill_longdescription_concussion, SkillCollection.CONCUSSION_THRESHOLD, SkillCollection.PER_SKILLPOINT_INCREASE_CONCUSSION_CHANCE); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_DAGGER: return res.getString(R.string.skill_longdescription_weapon_prof_dagger); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_1HSWORD: return res.getString(R.string.skill_longdescription_weapon_prof_1hsword); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_2HSWORD: return res.getString(R.string.skill_longdescription_weapon_prof_2hsword); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_AXE: return res.getString(R.string.skill_longdescription_weapon_prof_axe); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_BLUNT: return res.getString(R.string.skill_longdescription_weapon_prof_blunt); + case SkillCollection.SKILL_WEAPON_PROFICIENCY_UNARMED: return res.getString(R.string.skill_longdescription_weapon_prof_unarmed); + case SkillCollection.SKILL_ARMOR_PROFICIENCY_SHIELD: return res.getString(R.string.skill_longdescription_armor_prof_shield); + case SkillCollection.SKILL_ARMOR_PROFICIENCY_UNARMORED: return res.getString(R.string.skill_longdescription_armor_prof_unarmored); + case SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT: return res.getString(R.string.skill_longdescription_armor_prof_light); + case SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY: return res.getString(R.string.skill_longdescription_armor_prof_heavy); + case SkillCollection.SKILL_FIGHTSTYLE_DUAL_WIELD: return res.getString(R.string.skill_longdescription_fightstyle_dualwield); + case SkillCollection.SKILL_FIGHTSTYLE_2HAND: return res.getString(R.string.skill_longdescription_fightstyle_2hand); + case SkillCollection.SKILL_FIGHTSTYLE_WEAPON_SHIELD: return res.getString(R.string.skill_longdescription_fightstyle_weapon_shield); + case SkillCollection.SKILL_SPECIALIZATION_DUAL_WIELD: return res.getString(R.string.skill_longdescription_specialization_dualwield); + case SkillCollection.SKILL_SPECIALIZATION_2HAND: return res.getString(R.string.skill_longdescription_specialization_2hand); + case SkillCollection.SKILL_SPECIALIZATION_WEAPON_SHIELD: return res.getString(R.string.skill_longdescription_specialization_weapon_shield); default: return ""; } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java index 5b8052752..184b2dbd1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/SkillController.java @@ -1,6 +1,8 @@ package com.gpl.rpg.AndorsTrail.controller; import com.gpl.rpg.AndorsTrail.context.ControllerContext; +import android.util.FloatMath; + import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.AttackResult; import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; @@ -10,6 +12,8 @@ import com.gpl.rpg.AndorsTrail.model.ability.SkillInfo; import com.gpl.rpg.AndorsTrail.model.actor.Actor; import com.gpl.rpg.AndorsTrail.model.actor.Monster; import com.gpl.rpg.AndorsTrail.model.actor.Player; +import com.gpl.rpg.AndorsTrail.model.item.Inventory; +import com.gpl.rpg.AndorsTrail.model.item.ItemCategory; import com.gpl.rpg.AndorsTrail.model.item.ItemType; import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection; import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem; @@ -187,12 +191,225 @@ public final class SkillController { } public static void applySkillEffectsFromItemProficiencies(Player player) { + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_DAGGER); + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_1HSWORD); + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_2HSWORD); + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_AXE); + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_BLUNT); + player.combatTraits.attackChance += 10 * getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_WEAPON_PROFICIENCY_UNARMED); + + final int unarmedLevel = player.getSkillLevel(SkillCollection.SKILL_WEAPON_PROFICIENCY_UNARMED); + if (unarmedLevel > 0) { + if (isUnarmed(player)) { + player.combatTraits.attackChance += 20 * unarmedLevel; + player.combatTraits.damagePotential.addToMax(2 * unarmedLevel); + player.combatTraits.damagePotential.add(2 * unarmedLevel, false); + player.combatTraits.blockChance += 5 * unarmedLevel; + } + } + + player.combatTraits.damageResistance += getItemProficiencySkillEffectFactor(player, SkillCollection.SKILL_ARMOR_PROFICIENCY_SHIELD); + + final int unarmoredLevel = player.getSkillLevel(SkillCollection.SKILL_ARMOR_PROFICIENCY_UNARMORED); + if (unarmoredLevel > 0) { + if (isUnarmored(player)) { + player.combatTraits.blockChance += 10 * unarmoredLevel; + } + } + + int skillLevelLightArmor = player.getSkillLevel(SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT); + int skillLevelHeavyArmor = player.getSkillLevel(SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY); + for (int slot = 0; slot < Inventory.NUM_WORN_SLOTS; ++slot) { + if (!Inventory.isArmorSlot(slot)) continue; + + ItemType itemType = player.inventory.wear[slot]; + if (itemType == null) continue; + if (itemType.effects_equip == null) continue; + if (skillLevelLightArmor > 0) { + if (isSkillForItemCategory(SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT, itemType.category)) { + player.combatTraits.blockChance += FloatMath.floor(itemType.effects_equip.combatProficiency.blockChance * 30 * skillLevelLightArmor / 100.0f); + } + } + if (skillLevelHeavyArmor > 0) { + if (isSkillForItemCategory(SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY, itemType.category)) { + player.combatTraits.blockChance += FloatMath.floor(itemType.effects_equip.combatProficiency.blockChance * 10 * skillLevelHeavyArmor / 100.0f); + player.actorTraits.moveCost -= FloatMath.floor(itemType.effects_equip.moveCostPenalty * 25 * skillLevelHeavyArmor / 100.0f); + player.combatTraits.attackCost -= FloatMath.floor(itemType.effects_equip.combatProficiency.attackCost * 25 * skillLevelHeavyArmor / 100.0f); + } + } + } + } + + private static boolean isUnarmed(Player player) { + if (hasItemWithWeight(player, Inventory.WEARSLOT_WEAPON)) return false; + if (hasItemWithWeight(player, Inventory.WEARSLOT_SHIELD)) return false; + return true; + } + private static boolean isUnarmored(Player player) { + for (int slot = 0; slot < Inventory.NUM_WORN_SLOTS; ++slot) { + if (!Inventory.isArmorSlot(slot)) continue; + if (hasItemWithWeight(player, slot)) return false; + } + return true; + } + private static boolean hasItemWithWeight(Player player, int slot) { + ItemType itemType = player.inventory.wear[slot]; + if (itemType == null) return false; + if (itemType.category.size == ItemCategory.SIZE_NONE) return false; + return true; + } + + private static int getItemProficiencySkillEffectFactor(final Player player, final int skill) { + int skillLevel = player.getSkillLevel(skill); + if (skillLevel <= 0) return 0; + + int numItems = 0; + for (int slot = 0; slot < Inventory.NUM_WORN_SLOTS; ++slot) { + ItemType itemType = player.inventory.wear[slot]; + if (itemType == null) continue; + if (isSkillForItemCategory(skill, itemType.category)) ++numItems; + } + return numItems * skillLevel; + } + + private static boolean isSkillForItemCategory(final int skill, ItemCategory category) { + final String itemCategoryID = category.id; + switch (skill) { + case SkillCollection.SKILL_WEAPON_PROFICIENCY_DAGGER: + if (itemCategoryID.equals("dagger")) return true; + if (itemCategoryID.equals("ssword")) return true; + return false; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_1HSWORD: + if (itemCategoryID.equals("lsword")) return true; + if (itemCategoryID.equals("bsword")) return true; + return false; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_2HSWORD: + if (itemCategoryID.equals("2hsword")) return true; + return false; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_AXE: + if (itemCategoryID.equals("axe")) return true; + if (itemCategoryID.equals("axe2h")) return true; + return false; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_BLUNT: + if (itemCategoryID.equals("club")) return true; + if (itemCategoryID.equals("staff")) return true; + if (itemCategoryID.equals("mace")) return true; + if (itemCategoryID.equals("scepter")) return true; + if (itemCategoryID.equals("hammer")) return true; + if (itemCategoryID.equals("hammer2h")) return true; + return false; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_SHIELD: + if (category.isShield()) return true; + return false; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT: + if (!category.isArmor()) return false; + if (category.size == ItemCategory.SIZE_LIGHT) return true; + if (category.size == ItemCategory.SIZE_STD) return true; + return false; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY: + if (!category.isArmor()) return false; + if (category.size == ItemCategory.SIZE_LARGE) return true; + return false; + } + return false; } public static void applySkillEffectsFromFightingStyles(Player player) { + ItemType mainHandItem = player.inventory.wear[Inventory.WEARSLOT_WEAPON]; + ItemType offHandItem = player.inventory.wear[Inventory.WEARSLOT_SHIELD]; + + if (isWielding2HandItem(mainHandItem, offHandItem)) { + int skillLevelFightStyle = player.getSkillLevel(SkillCollection.SKILL_FIGHTSTYLE_2HAND); + int skillLevelSpecialization = player.getSkillLevel(SkillCollection.SKILL_SPECIALIZATION_2HAND); + addPercentDamage(player, mainHandItem, skillLevelFightStyle * 50); + addPercentDamage(player, mainHandItem, skillLevelSpecialization * 50); + addPercentAttackChance(player, mainHandItem, skillLevelSpecialization * 20); + } + + if (isWieldingWeaponAndShield(mainHandItem, offHandItem)) { + int skillLevelFightStyle = player.getSkillLevel(SkillCollection.SKILL_FIGHTSTYLE_WEAPON_SHIELD); + int skillLevelSpecialization = player.getSkillLevel(SkillCollection.SKILL_SPECIALIZATION_WEAPON_SHIELD); + addPercentAttackChance(player, mainHandItem, skillLevelFightStyle * 50); + addPercentBlockChance(player, offHandItem, skillLevelFightStyle * 50); + addPercentAttackChance(player, mainHandItem, skillLevelSpecialization * 20); + addPercentBlockChance(player, mainHandItem, skillLevelSpecialization * 50); + } + + if (isDualWielding(mainHandItem, offHandItem)) { + int skillLevelFightStyle = player.getSkillLevel(SkillCollection.SKILL_FIGHTSTYLE_DUAL_WIELD); + if (offHandItem.effects_equip != null) { + int attackCostMainHand = mainHandItem.effects_equip.combatProficiency.attackCost; + int attackCostOffHand = offHandItem.effects_equip.combatProficiency.attackCost; + int percent; + if (skillLevelFightStyle == 2) { + percent = 100; + player.combatTraits.attackCost = Math.max(attackCostMainHand, attackCostOffHand); + } else if (skillLevelFightStyle == 1) { + percent = 50; + player.combatTraits.attackCost = attackCostMainHand + getPercentage(attackCostOffHand, 50); + } else { + percent = 25; + player.combatTraits.attackCost = attackCostMainHand + attackCostOffHand; + } + addPercentAttackChance(player, offHandItem, percent); + addPercentBlockChance(player, offHandItem, percent); + addPercentDamage(player, offHandItem, percent); + addPercentCriticalSkill(player, offHandItem, percent); + } + + int skillLevelSpecialization = player.getSkillLevel(SkillCollection.SKILL_SPECIALIZATION_DUAL_WIELD); + addPercentAttackChance(player, mainHandItem, skillLevelSpecialization * 50); + addPercentBlockChance(player, mainHandItem, skillLevelSpecialization * 50); + addPercentAttackChance(player, offHandItem, skillLevelSpecialization * 50); + addPercentBlockChance(player, offHandItem, skillLevelSpecialization * 50); + } + } + + private static void addPercentAttackChance(Player player, ItemType itemType, int percentToAdd) { + if (itemType.effects_equip == null) return; + if (percentToAdd == 0) return; + player.combatTraits.attackChance += getPercentage(itemType.effects_equip.combatProficiency.attackChance, percentToAdd); + } + + private static void addPercentBlockChance(Player player, ItemType itemType, int percentToAdd) { + if (itemType.effects_equip == null) return; + if (percentToAdd == 0) return; + player.combatTraits.blockChance += getPercentage(itemType.effects_equip.combatProficiency.blockChance, percentToAdd); + } + + private static void addPercentCriticalSkill(Player player, ItemType itemType, int percentToAdd) { + if (itemType.effects_equip == null) return; + if (percentToAdd == 0) return; + player.combatTraits.criticalSkill += getPercentage(itemType.effects_equip.combatProficiency.criticalSkill, percentToAdd); + } + + private static void addPercentDamage(Player player, ItemType itemType, int percentToAdd) { + if (itemType.effects_equip == null) return; + if (percentToAdd == 0) return; + player.combatTraits.damagePotential.addToMax(getPercentage(itemType.effects_equip.combatProficiency.damagePotential.max, percentToAdd)); + player.combatTraits.damagePotential.add(getPercentage(itemType.effects_equip.combatProficiency.damagePotential.current, percentToAdd), false); + } + + private static int getPercentage(int originalValue, int percentToAdd) { + if (originalValue <= 0) return 0; + return (int) FloatMath.floor(originalValue * percentToAdd / 100.0f); } public static boolean isDualWielding(ItemType mainHandItem, ItemType offHandItem) { - return false; + if (mainHandItem == null) return false; + if (offHandItem == null) return false; + return mainHandItem.isWeapon() && offHandItem.isWeapon(); + } + + private static boolean isWielding2HandItem(ItemType mainHandItem, ItemType offHandItem) { + if (mainHandItem == null) return false; + if (offHandItem != null) return false; + return mainHandItem.isTwohandWeapon(); + } + + private static boolean isWieldingWeaponAndShield(ItemType mainHandItem, ItemType offHandItem) { + if (mainHandItem == null) return false; + if (offHandItem == null) return false; + return mainHandItem.isWeapon() && offHandItem.isShield(); } } 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 9a93f55e5..f5e0d1aab 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/SkillCollection.java @@ -36,8 +36,24 @@ public final class SkillCollection { public static final int SKILL_REJUVENATION = 23; // Reduces magnitudes of conditions public static final int SKILL_TAUNT = 24; // Causes AP loss of attackers that miss public static final int SKILL_CONCUSSION = 25; // AC loss for monsters with (AC-BC)>N + public static final int SKILL_WEAPON_PROFICIENCY_DAGGER = 26; + public static final int SKILL_WEAPON_PROFICIENCY_1HSWORD = 27; + public static final int SKILL_WEAPON_PROFICIENCY_2HSWORD = 28; + public static final int SKILL_WEAPON_PROFICIENCY_AXE = 29; + public static final int SKILL_WEAPON_PROFICIENCY_BLUNT = 30; + public static final int SKILL_WEAPON_PROFICIENCY_UNARMED = 31; + public static final int SKILL_ARMOR_PROFICIENCY_SHIELD = 32; + public static final int SKILL_ARMOR_PROFICIENCY_UNARMORED = 33; + public static final int SKILL_ARMOR_PROFICIENCY_LIGHT = 34; + public static final int SKILL_ARMOR_PROFICIENCY_HEAVY = 35; + public static final int SKILL_FIGHTSTYLE_DUAL_WIELD = 36; + public static final int SKILL_FIGHTSTYLE_2HAND = 37; + public static final int SKILL_FIGHTSTYLE_WEAPON_SHIELD = 38; + public static final int SKILL_SPECIALIZATION_DUAL_WIELD = 39; + public static final int SKILL_SPECIALIZATION_2HAND = 40; + public static final int SKILL_SPECIALIZATION_WEAPON_SHIELD = 41; - public static final int NUM_SKILLS = SKILL_CONCUSSION + 1; + public static final int NUM_SKILLS = SKILL_SPECIALIZATION_WEAPON_SHIELD + 1; public static final int PER_SKILLPOINT_INCREASE_WEAPON_CHANCE = 12; public static final int PER_SKILLPOINT_INCREASE_WEAPON_DAMAGE_MAX = 1; @@ -145,6 +161,37 @@ public final class SkillCollection { ,SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_CHANCE, 3) ,SkillLevelRequirement.requireOtherSkill(SKILL_WEAPON_DMG, 5) })); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_DAGGER, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_1HSWORD, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_2HSWORD, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_AXE, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_BLUNT, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_WEAPON_PROFICIENCY_UNARMED, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_ARMOR_PROFICIENCY_SHIELD, 2, false, null)); + initializeSkill(new SkillInfo(SKILL_ARMOR_PROFICIENCY_UNARMORED, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_ARMOR_PROFICIENCY_LIGHT, 3, false, null)); + initializeSkill(new SkillInfo(SKILL_ARMOR_PROFICIENCY_HEAVY, 4, false, null)); + initializeSkill(new SkillInfo(SKILL_FIGHTSTYLE_DUAL_WIELD, 2, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(15, 0) + })); + initializeSkill(new SkillInfo(SKILL_FIGHTSTYLE_2HAND, 2, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(15, 0) + })); + initializeSkill(new SkillInfo(SKILL_FIGHTSTYLE_WEAPON_SHIELD, 2, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(15, 0) + })); + initializeSkill(new SkillInfo(SKILL_SPECIALIZATION_DUAL_WIELD, 1, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(45, 0) + ,SkillLevelRequirement.requireOtherSkill(SKILL_FIGHTSTYLE_DUAL_WIELD, 2) + })); + initializeSkill(new SkillInfo(SKILL_SPECIALIZATION_2HAND, 1, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(45, 0) + ,SkillLevelRequirement.requireOtherSkill(SKILL_FIGHTSTYLE_2HAND, 2) + })); + initializeSkill(new SkillInfo(SKILL_SPECIALIZATION_WEAPON_SHIELD, 1, false, new SkillLevelRequirement[] { + SkillLevelRequirement.requireExperienceLevels(45, 0) + ,SkillLevelRequirement.requireOtherSkill(SKILL_FIGHTSTYLE_WEAPON_SHIELD, 2) + })); } public SkillInfo getSkill(int skillID) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SkillListAdapter.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SkillListAdapter.java index 9d3810de3..21b1e4984 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SkillListAdapter.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SkillListAdapter.java @@ -119,6 +119,22 @@ public final class SkillListAdapter extends ArrayAdapter { case SkillCollection.SKILL_REJUVENATION: return R.string.skill_shortdescription_rejuvenation; case SkillCollection.SKILL_TAUNT: return R.string.skill_shortdescription_taunt; case SkillCollection.SKILL_CONCUSSION: return R.string.skill_shortdescription_concussion; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_DAGGER: return R.string.skill_shortdescription_weapon_prof_dagger; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_1HSWORD: return R.string.skill_shortdescription_weapon_prof_1hsword; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_2HSWORD: return R.string.skill_shortdescription_weapon_prof_2hsword; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_AXE: return R.string.skill_shortdescription_weapon_prof_axe; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_BLUNT: return R.string.skill_shortdescription_weapon_prof_blunt; + case SkillCollection.SKILL_WEAPON_PROFICIENCY_UNARMED: return R.string.skill_shortdescription_weapon_prof_unarmed; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_SHIELD: return R.string.skill_shortdescription_armor_prof_shield; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_UNARMORED: return R.string.skill_shortdescription_armor_prof_unarmored; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_LIGHT: return R.string.skill_shortdescription_armor_prof_light; + case SkillCollection.SKILL_ARMOR_PROFICIENCY_HEAVY: return R.string.skill_shortdescription_armor_prof_heavy; + case SkillCollection.SKILL_FIGHTSTYLE_DUAL_WIELD: return R.string.skill_shortdescription_fightstyle_dualwield; + case SkillCollection.SKILL_FIGHTSTYLE_2HAND: return R.string.skill_shortdescription_fightstyle_2hand; + case SkillCollection.SKILL_FIGHTSTYLE_WEAPON_SHIELD: return R.string.skill_shortdescription_fightstyle_weapon_shield; + case SkillCollection.SKILL_SPECIALIZATION_DUAL_WIELD: return R.string.skill_shortdescription_specialization_dualwield; + case SkillCollection.SKILL_SPECIALIZATION_2HAND: return R.string.skill_shortdescription_specialization_2hand; + case SkillCollection.SKILL_SPECIALIZATION_WEAPON_SHIELD: return R.string.skill_shortdescription_specialization_weapon_shield; default: return -1; }