diff --git a/core/src/main/assets/interfaces/talent_icons.png b/core/src/main/assets/interfaces/talent_icons.png index 7ef23269b..fb7ed0018 100644 Binary files a/core/src/main/assets/interfaces/talent_icons.png and b/core/src/main/assets/interfaces/talent_icons.png differ diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 9067cf347..3600c097b 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -882,7 +882,12 @@ actors.hero.talent.twin_upgrades.desc=_+1:_ If one of the Champion's two equippe actors.hero.talent.combined_lethality.title=combined lethality actors.hero.talent.combined_lethality.desc=_+1:_ If the Champion uses two different weapon abilities successively, the second ability will execute any non-boss enemy left at _below 10% HP_.\n\n_+2:_ If the Champion uses two different weapon abilities successively, the second ability will execute any non-boss enemy left at _below 20% HP_.\n\n_+3:_ If the Champion uses two different weapon abilities successively, the second ability will execute any non-boss enemy left at _below 30% HP_.\n\nIf the second ability does not contain an attack, this talent will instead trigger on the Champion's next attack within 5 turns. -#second subclass +actors.hero.talent.lightly_armed.title=Unencumbered Spirit +actors.hero.talent.lightly_armed.desc=_+1:_ The Monk gains _25% more energy_ for each piece of _T3 or lower_ equipment she is wearing.\n\n_+2:_ The Monk gains _50% more energy_ for each piece of _T2 or lower_ equipment she is wearing.\n\n_+3:_ The Monk gains _100% more energy_ for each piece of _T1 or lower_ equipment she is wearing. She also gains _150% more energy_ if she has no weapon (or ring of force), and gains a free cloth armor and studded gloves. +actors.hero.talent.monastic_vigor.title=monastic vigor +actors.hero.talent.monastic_vigor.desc=_+1:_ If the Monk has _100% energy_, her monk abilities are empowered.\n\n_+2:_ If the Monk has _85% or more energy_, her monk abilities are empowered.\n\n_+3:_ If the Monk has _70% or more energy_, her monk abilities are empowered.\n\nWhen empowered:\n- Flurry applies enchantments at 75% power\n- Focus is instantaneous\n- Dash gains +2 range\n- Dragon Kick deals +33% damage and applies its knock back and stun effect to all adjacent enemies\n- Meditate slowly heals 20% of missing HP and grants 80% damage resistance. +actors.hero.talent.combined_energy.title=combined energy +actors.hero.talent.combined_energy.desc=_+1:_ If the Monk uses a weapon ability and a _4+ energy_ monk ability successively, she regains 33% of her spent energy and resets her ability cooldown.\n\n_+2:_ If the Monk uses a weapon ability and a _3+ energy_ monk ability successively, she regains 33% of her spent energy and resets her ability cooldown.\n\n_+3:_ If the Monk uses a weapon ability and a _2+ energy_ monk ability successively, she regains 33% of her spent energy and resets her ability cooldown. actors.hero.talent.close_the_gap.title=close the gap actors.hero.talent.close_the_gap.desc=_+1:_ The Duelist blinks _up to two tiles_ toward her target when starting a duel.\n\n_+2:_ The Duelist blinks _up to three tiles_ toward her target when starting a duel.\n\n_+3:_ The Duelist blinks _up to four tiles_ toward her target when starting a duel.\n\n_+4:_ The Duelist blinks _up to five tiles_ toward her target when starting a duel.\n\nThis blink can go through enemies and hazards, and is taken into account when determining if an enemy is in range to be challenged. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java index efe829b49..e5e87ff11 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MonkEnergy.java @@ -27,12 +27,14 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Ghoul; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.RipperDemon; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.YogDzewa; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -134,16 +136,56 @@ public class MonkEnergy extends Buff implements ActionIndicator.Action { return; //to prevent farming boss minions } - //bosses and minibosses give extra energy, certain enemies give half, otherwise give 1 - if (Char.hasProp(enemy, Char.Property.BOSS)) energy += 5; - else if (Char.hasProp(enemy, Char.Property.MINIBOSS)) energy += 3; - else if (enemy instanceof Ghoul) energy += 0.5f; - else if (enemy instanceof RipperDemon) energy += 0.5f; - else if (enemy instanceof YogDzewa.Larva) energy += 0.5f; - else if (enemy instanceof Wraith) energy += 0.5f; - else energy += 1; + float energyGain; - energy = Math.min(energy, energyCap()); + //bosses and minibosses give extra energy, certain enemies give half, otherwise give 1 + if (Char.hasProp(enemy, Char.Property.BOSS)) energyGain = 5; + else if (Char.hasProp(enemy, Char.Property.MINIBOSS)) energyGain = 3; + else if (enemy instanceof Ghoul) energyGain = 0.5f; + else if (enemy instanceof RipperDemon) energyGain = 0.5f; + else if (enemy instanceof YogDzewa.Larva) energyGain = 0.5f; + else if (enemy instanceof Wraith) energyGain = 0.5f; + else energyGain = 1; + + float enGainMulti = 1f; + if (target instanceof Hero) { + Hero hero = (Hero) target; + if (hero.hasTalent(Talent.LIGHTLY_ARMED)) { + int points = hero.pointsInTalent(Talent.LIGHTLY_ARMED); + + if (hero.belongings.armor() != null){ + if (hero.belongings.armor().tier == 3 && points >= 1){ + enGainMulti += 0.25f; + } + if (hero.belongings.armor().tier == 2 && points >= 2){ + enGainMulti += 0.50f; + } + if (hero.belongings.armor().tier == 1 && points >= 3){ + enGainMulti += 1.00f; + } + } + + if (hero.belongings.weapon() instanceof MeleeWeapon){ + if (((MeleeWeapon) hero.belongings.weapon()).tier == 3 && points >= 1){ + enGainMulti += 0.25f; + } + if (((MeleeWeapon) hero.belongings.weapon()).tier == 2 && points >= 2){ + enGainMulti += 0.50f; + } + if (((MeleeWeapon) hero.belongings.weapon()).tier == 1 && points >= 3){ + enGainMulti += 1.00f; + } + } else if (hero.belongings.weapon == null) { + if (hero.buff(RingOfForce.Force.class) == null && points == 3){ + enGainMulti += 1.50f; + } + } + + } + } + energyGain *= enGainMulti; + + energy = Math.min(energy+energyGain, energyCap()); if (energy > 0 && cooldown == 0){ ActionIndicator.setAction(this); 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 afbbfdbe3..28cfdbb05 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 @@ -50,6 +50,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle; import com.shatteredpixel.shatteredpixeldungeon.items.BrokenSeal; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; +import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty; import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring; @@ -57,6 +58,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gloves; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; @@ -154,13 +156,13 @@ public enum Talent { FOCUSED_MEAL(132), RESTORED_AGILITY(133), WEAPON_RECHARGING(134), LETHAL_HASTE(135), SWIFT_EQUIP(136), //Duelist T3 LIGHTWEIGHT_CHARGE(137, 3), DEADLY_FOLLOWUP(138, 3), - //Duelist S1 T3 + //Champion T3 SECONDARY_CHARGE(139, 3), TWIN_UPGRADES(140, 3), COMBINED_LETHALITY(141, 3), - //Duelist S2 T3 - DUELIST_S2_1(142, 3), DUELIST_S2_2(143, 3), DUELIST_S2_3(144, 3), - //Duelist A1 T4 + //Monk T3 + LIGHTLY_ARMED(142, 3), MONASTIC_VIGOR(143, 3), COMBINED_ENERGY(144, 3), + //Challenge T4 CLOSE_THE_GAP(145, 4), INVIGORATING_VICTORY(146, 4), ELIMINATION_MATCH(147, 4), - //Duelist A2 T4 + //Elemental Strike T4 ELEMENTAL_REACH(148, 4), STRIKING_FORCE(149, 4), DIRECTED_POWER(150, 4), //Duelist A3 T4 DUELIST_A3_1(151, 4), DUELIST_A3_2(152, 4), DUELIST_A3_3(153, 4), @@ -382,6 +384,11 @@ public enum Talent { if (talent == SECONDARY_CHARGE || talent == TWIN_UPGRADES){ Item.updateQuickslot(); } + + if (talent == LIGHTLY_ARMED && hero.pointsInTalent(talent) == 3){ + new ClothArmor().identify().collect(); + new Gloves().identify().collect(); + } } public static class CachedRationsDropped extends CounterBuff{{revivePersists = true;}}; @@ -796,7 +803,7 @@ public enum Talent { Collections.addAll(tierTalents, SECONDARY_CHARGE, TWIN_UPGRADES, COMBINED_LETHALITY); break; case MONK: - Collections.addAll(tierTalents, DUELIST_S2_1, DUELIST_S2_2, DUELIST_S2_3); + Collections.addAll(tierTalents, LIGHTLY_ARMED, MONASTIC_VIGOR, COMBINED_ENERGY); break; } for (Talent talent : tierTalents){