From 0d00952eb52ebd3f15ad507a6ac73dc1560268bb Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 24 Jan 2021 22:46:26 -0500 Subject: [PATCH] v0.9.2: implement the strongman talent and cleaned up strength req code --- .../main/assets/messages/actors/actors.properties | 2 ++ .../shatteredpixeldungeon/actors/hero/Talent.java | 4 ++-- .../shatteredpixeldungeon/items/armor/Armor.java | 12 +++++++++++- .../items/armor/ClassArmor.java | 5 +---- .../shatteredpixeldungeon/items/quest/Pickaxe.java | 2 +- .../items/weapon/SpiritBow.java | 4 +--- .../shatteredpixeldungeon/items/weapon/Weapon.java | 13 ++++++++++++- .../items/weapon/melee/Greataxe.java | 4 +--- .../items/weapon/melee/MeleeWeapon.java | 4 +--- .../items/weapon/missiles/MissileWeapon.java | 4 +--- 10 files changed, 33 insertions(+), 21 deletions(-) diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 84debdf26..8a6eadfb6 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -334,6 +334,8 @@ actors.hero.talent.lethal_momentum.title=lethal momentum actors.hero.talent.lethal_momentum.desc=_+1:_ When the Warrior kills an enemy, the killing blow has a _67% chance_ to be instantaneous.\n\n_+2:_ When the Warrior kills an enemy, the killing blow has a _100% chance_ to be instantaneous. actors.hero.talent.improvised_projectiles.title=improvised projectiles actors.hero.talent.improvised_projectiles.desc=_+1:_ The Warrior can blind an enemy for _2 turns_ by throwing any item that isn’t a thrown weapon at them. This has a 30 turn cooldown.\n\n_+2:_ The Warrior can blind an enemy for _3 turns_ by throwing any item that isn’t a thrown weapon at them. This has a 30 turn cooldown. +actors.hero.talent.strongman.title=strongman +actors.hero.talent.strongman.desc=_+1:_ The Warrior needs _1 less strength_ to use armor.\n\n_+2:_ The Warrior needs _1 less strength_ to use armor and _1 less strength_ to use weapons.\n\n_+3:_ The Warrior needs _2 less strength_ to use armor and _1 less strength_ to use weapons. actors.hero.talent.empowering_meal.title=empowering meal actors.hero.talent.empowering_meal.desc=_+1:_ Eating food grants the Mage _2 bonus damage_ on his next 3 wand zaps.\n\n_+2:_ Eating food grants the Mage _3 bonus damage_ on his next 3 wand zaps. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java index 6ad4d94d0..81f8d162b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java @@ -71,7 +71,7 @@ public enum Talent { //Warrior T2 IRON_STOMACH(4), RESTORED_WILLPOWER(5), RUNIC_TRANSFERENCE(6), LETHAL_MOMENTUM(7), IMPROVISED_PROJECTILES(8), //Warrior T3 - WARRIOR_T3_1(9, 3), WARRIOR_T3_2(10, 3), + STRONGMAN(9, 3), WARRIOR_T3_2(10, 3), //Berserker T3 BERSERKER_T3_1(11, 3), BERSERKER_T3_2(12, 3), BERSERKER_T3_3(13, 3), //Gladiator T3 @@ -415,7 +415,7 @@ public enum Talent { //tier 3 switch (cls){ case WARRIOR: default: - Collections.addAll(tierTalents, WARRIOR_T3_1, WARRIOR_T3_2); + Collections.addAll(tierTalents, STRONGMAN, WARRIOR_T3_2); break; case MAGE: Collections.addAll(tierTalents, MAGE_T3_1, MAGE_T3_2); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java index 62d1e8c8a..c4db45eab 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/Armor.java @@ -528,10 +528,20 @@ public class Armor extends EquipableItem { } public int STRReq(int lvl){ + return STRReq(tier, lvl); + } + + protected static int STRReq(int tier, int lvl){ lvl = Math.max(0, lvl); //strength req decreases at +1,+3,+6,+10,etc. - return (8 + Math.round(tier * 2)) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + int req = (8 + Math.round(tier * 2)) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + + if (Dungeon.hero.hasTalent(Talent.STRONGMAN)){ + req -= (Dungeon.hero.pointsInTalent(Talent.STRONGMAN)+1)/2; + } + + return req; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java index b4b353700..f77c7b599 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/ClassArmor.java @@ -153,10 +153,7 @@ abstract public class ClassArmor extends Armor { @Override public int STRReq(int lvl) { - lvl = Math.max(0, lvl); - - //strength req decreases at +1,+3,+6,+10,etc. - return (8 + Math.round(armorTier * 2)) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + return STRReq(armorTier, lvl); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java index fe8818a86..bd2abf14e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/Pickaxe.java @@ -78,7 +78,7 @@ public class Pickaxe extends Weapon { @Override public int STRReq(int lvl) { - return 14; //tier 3 + return STRReq(3, lvl); //tier 3 } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java index dc4032cca..65a05131f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java @@ -125,9 +125,7 @@ public class SpiritBow extends Weapon { @Override public int STRReq(int lvl) { - lvl = Math.max(0, lvl); - //strength req decreases at +1,+3,+6,+10,etc. - return 10 - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + return STRReq(1, lvl); //tier 1 } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java index 1fb434740..9703c3caa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java @@ -204,7 +204,18 @@ abstract public class Weapon extends KindOfWeapon { } public abstract int STRReq(int lvl); - + + protected static int STRReq(int tier, int lvl){ + lvl = Math.max(0, lvl); + + //strength req decreases at +1,+3,+6,+10,etc. + int req = (8 + tier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + + if (Dungeon.hero.pointsInTalent(Talent.STRONGMAN) >= 2) req--; + + return req; + } + @Override public int level() { return super.level() + (curseInfusionBonus ? 1 : 0); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java index 654e37772..dfe0911e7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Greataxe.java @@ -42,9 +42,7 @@ public class Greataxe extends MeleeWeapon { @Override public int STRReq(int lvl) { - lvl = Math.max(0, lvl); - //20 base strength req, up from 18 - return (10 + tier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + return STRReq(tier+1, lvl); //20 base strength req, up from 18 } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java index 874d3c6c2..097fbf10e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MeleeWeapon.java @@ -45,9 +45,7 @@ public class MeleeWeapon extends Weapon { } public int STRReq(int lvl){ - lvl = Math.max(0, lvl); - //strength req decreases at +1,+3,+6,+10,etc. - return (8 + tier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + return STRReq(tier, lvl); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index 70904481d..7e1215479 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -90,9 +90,7 @@ abstract public class MissileWeapon extends Weapon { } public int STRReq(int lvl){ - lvl = Math.max(0, lvl); - //strength req decreases at +1,+3,+6,+10,etc. - return (7 + tier * 2) - (int)(Math.sqrt(8 * lvl + 1) - 1)/2; + return STRReq(tier, lvl) - 1; //1 less str than normal for their tier } @Override