diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 27eea6590..3e59248ad 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -291,7 +291,7 @@ actors.buffs.roots.heromsg=You can't move! actors.buffs.roots.desc=Roots (magical or natural) grab at the feet, forcing them down to the ground.\n\nRoots lock a target in place, making it impossible for them to move, but other actions are not affected.\n\nTurns of root remaining: %s. actors.buffs.scrollempower.name=Scroll Empower -actors.buffs.scrollempower.desc=The energy from the Mage's recently read scroll is empowering his wands! His next wand zap will gain +%1$d levels. +actors.buffs.scrollempower.desc=The energy from the Mage's recently read scroll is empowering his wands!\n\nLevel Boost: +%1$d.\nZaps remaining: %2$d. actors.buffs.shadows.name=Shadowmelded actors.buffs.shadows.desc=You are blended into the shadows around you, granting you invisibility and slowing your metabolism.\n\nWhile you are invisible enemies are unable to attack or follow you. Most physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility. Additionally, while shadowmelded, your rate of hunger is slowed.\n\nYou will remain shadowmelded until you leave the shadows or an enemy comes into contact with you. @@ -412,7 +412,7 @@ actors.hero.abilities.huntress.naturespower$naturespowertracker.desc=The Huntres actors.hero.abilities.huntress.spirithawk.name=spirit hawk actors.hero.abilities.huntress.spirithawk.no_space=There is no free space near you. actors.hero.abilities.huntress.spirithawk.short_desc=The Huntress summons a _Spirit Hawk_ familiar, which can help her scout locations and distract enemies. -actors.hero.abilities.huntress.spirithawk.desc=The Huntress summons a spirit hawk familiar, which can be directed by using the ability again while it is summoned. The hawk lasts for 60 turns, directing the hawk does not cost any charge.\n\nThe hawk has minimal health and attacking power, but is fast, evasive, and accurate. It shares its entire field of vision with the huntress at all times. It is immune to all area-bound effects, such as fire and poison gas. It will not attack unless specifically directed to. +actors.hero.abilities.huntress.spirithawk.desc=The Huntress summons a spirit hawk familiar, which can be directed by using the ability again while it is summoned. The hawk lasts for 100 turns, directing the hawk does not cost any charge.\n\nThe hawk has minimal health and attacking power, but is fast, evasive, and accurate. It shares its entire field of vision with the huntress at all times. It is immune to all area-bound effects, such as fire and poison gas. It will not attack unless specifically directed to. actors.hero.abilities.huntress.spirithawk$hawkally.name=spirit hawk actors.hero.abilities.huntress.spirithawk$hawkally.direct_follow=Your hawk moves to follow you. actors.hero.abilities.huntress.spirithawk$hawkally.direct_attack=Your hawk moves to attack! @@ -553,7 +553,7 @@ actors.hero.talent.shock_force.desc=_+1:_ Shockwave deals _20% more damage_ and actors.hero.talent.sustained_retribution.title=sustained retribution actors.hero.talent.sustained_retribution.desc=_+1:_ The Warrior deals _115% bonus damage_ spread over _2 hits_, instead of 100% bonus damage in 1 hit.\n\n_+2:_ The Warrior deals _130% bonus damage_ spread over _3 hits_, instead of 100% bonus damage in 1 hit.\n\n_+3:_ The Warrior deals _145% bonus damage_ spread over _4 hits_, instead of 100% bonus damage in 1 hit.\n\n_+4:_ The Warrior deals _160% bonus damage_ spread over _5 hits_, instead of 100% bonus damage in 1 hit. actors.hero.talent.shrug_it_off.title=shrug it off -actors.hero.talent.shrug_it_off.desc=_+1:_ The Warrior cannot take more than _71% of his max HP_ in damage while enduring.\n\n_+2:_ The Warrior cannot take more than _50% of his max HP_ in damage while enduring.\n\n_+3:_ The Warrior cannot take more than _35% of his max HP_ in damage while enduring.\n\n_+4:_ The Warrior cannot take more than _25% of his max HP_ in damage while enduring. +actors.hero.talent.shrug_it_off.desc=_+1:_ The Warrior cannot take more than _67% of his max HP_ in damage while enduring.\n\n_+2:_ The Warrior cannot take more than _45% of his max HP_ in damage while enduring.\n\n_+3:_ The Warrior cannot take more than _30% of his max HP_ in damage while enduring.\n\n_+4:_ The Warrior cannot take more than _20% of his max HP_ in damage while enduring. actors.hero.talent.even_the_odds.title=even the odds actors.hero.talent.even_the_odds.desc=_+1:_ The Warrior deals an additional _5% bonus damage_ for every enemy within 2 tiles when enduring ends.\n\n_+2:_ The Warrior deals an additional _10% bonus damage_ for every enemy within 2 tiles when enduring ends.\n\n_+3:_ The Warrior deals an additional _15% bonus damage_ for every enemy within 2 tiles when enduring ends.\n\n_+4:_ The Warrior deals an additional _20% bonus damage_ for every enemy within 2 tiles when enduring ends. @@ -579,7 +579,7 @@ actors.hero.talent.shield_battery.title=shield battery actors.hero.talent.shield_battery.desc=_+1:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _5% max HP per charge_.\n\n_+2:_ The Mage can self-target with a wand to convert all of its charges into shielding at a rate of _7.5% max HP per charge_. actors.hero.talent.empowering_scrolls.title=empowering scrolls -actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next wand zap will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next wand zap will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next wand zap will get _+3 levels_. +actors.hero.talent.empowering_scrolls.desc=_+1:_ When the Mage reads a scroll, his next two wand zaps will get _+1 level_.\n\n_+2:_ When the Mage reads a scroll, his next two wand zaps will get _+2 levels_.\n\n_+3:_ When the Mage reads a scroll, his next two wand zaps will get _+3 levels_. actors.hero.talent.ally_warp.title=ally warp actors.hero.talent.ally_warp.desc=_+1:_ The Mage can tap an ally to instantly swap places with them, with a _2 tile range_.\n\n_+2:_ The Mage can tap an ally to instantly swap places with them, with a _4 tile range_.\n\n_+3:_ The Mage can tap an ally to instantly swap places with them, with a _6 tile range_.\n\nThe Mage cannot swap places with immobile allies. @@ -640,7 +640,7 @@ actors.hero.talent.rogues_foresight.title=rogue's foresight actors.hero.talent.rogues_foresight.desc=_+1:_ When the Rogue is on a level with a secret room, he has a _50% chance to notice_ that the level contains a secret.\n\n_+2:_ When the Rogue is on a level with a secret room, he has a _75% chance to notice_ that the level contains a secret. actors.hero.talent.light_cloak.title=light cloak -actors.hero.talent.light_cloak.desc=_+1:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _13% speed_.\n\n_+2:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _27% speed_.\n\n_+3:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _40% speed_. +actors.hero.talent.light_cloak.desc=_+1:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _17% speed_.\n\n_+2:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _33% speed_.\n\n_+3:_ The Rogue can use his cloak of shadows when it is not equipped, but it recharges at _50% speed_. actors.hero.talent.enhanced_rings.title=enhanced rings actors.hero.talent.enhanced_rings.desc=_+1:_ When the Rogue uses an artifact, his rings gain +1 upgrade for _3 turns_.\n\n_+2:_ When the Rogue uses an artifact, his rings gain +1 upgrade for _6 turns_.\n\n_+3:_When the Rogue uses an artifact, his rings gain +1 upgrade for _9 turns_. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ScrollEmpower.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ScrollEmpower.java index 9205127f6..232b5e1e8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ScrollEmpower.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ScrollEmpower.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; +import com.watabou.utils.Bundle; public class ScrollEmpower extends Buff { @@ -34,6 +35,20 @@ public class ScrollEmpower extends Buff { type = buffType.POSITIVE; } + private int left; + + public void reset(){ + left = 2; + Item.updateQuickslot(); + } + + public void use(){ + left--; + if (left <= 0){ + detach(); + } + } + @Override public void detach() { super.detach(); @@ -57,7 +72,25 @@ public class ScrollEmpower extends Buff { @Override public String desc() { - return Messages.get(this, "desc", Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS)); + return Messages.get(this, "desc", Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS), left); } + private static final String LEFT = "left"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEFT, left); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + //pre-1.1.0 saves + if (bundle.contains(LEFT)){ + left = bundle.getInt(LEFT); + } else { + left = 2; + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/huntress/SpiritHawk.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/huntress/SpiritHawk.java index 636e1c16f..cbd5e2ec1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/huntress/SpiritHawk.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/huntress/SpiritHawk.java @@ -168,7 +168,7 @@ public class SpiritHawk extends ArmorAbility { } private int dodgesUsed = 0; - private float timeRemaining = 60f; + private float timeRemaining = 100f; @Override public int defenseSkill(Char enemy) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WildMagic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WildMagic.java index 4dc1b880a..b5344bcdd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WildMagic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/WildMagic.java @@ -45,7 +45,7 @@ import java.util.ArrayList; public class WildMagic extends ArmorAbility { { - baseChargeUse = 35f; + baseChargeUse = 25f; } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Endure.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Endure.java index 87ad1dc0d..0a803a026 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Endure.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/warrior/Endure.java @@ -94,7 +94,7 @@ public class Endure extends ArmorAbility { public void setup(Hero hero){ enduring = true; - maxDmgTaken = (int) (hero.HT * Math.pow(0.707f, hero.pointsInTalent(Talent.SHRUG_IT_OFF))); + maxDmgTaken = (int) (hero.HT * Math.pow(0.67f, hero.pointsInTalent(Talent.SHRUG_IT_OFF))); damageBonus = 0; hitsLeft = 0; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java index 0b1dd0360..5d2dc4bbc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java @@ -171,7 +171,7 @@ public class CloakOfShadows extends Artifact { @Override public void charge(Hero target, float amount) { if (charge < chargeCap) { - if (!isEquipped(target)) amount *= 0.4f*target.pointsInTalent(Talent.LIGHT_CLOAK)/3f; + if (!isEquipped(target)) amount *= 0.5f*target.pointsInTalent(Talent.LIGHT_CLOAK)/3f; partialCharge += 0.25f*amount; if (partialCharge >= 1){ partialCharge--; @@ -227,7 +227,7 @@ public class CloakOfShadows extends Artifact { turnsToCharge /= RingOfEnergy.artifactChargeMultiplier(target); float chargeToGain = (1f / turnsToCharge); if (!isEquipped(Dungeon.hero)){ - chargeToGain *= 0.4f*Dungeon.hero.pointsInTalent(Talent.LIGHT_CLOAK)/3f; + chargeToGain *= 0.5f*Dungeon.hero.pointsInTalent(Talent.LIGHT_CLOAK)/3f; } partialCharge += chargeToGain; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index c158ec994..28e89dd53 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -187,7 +187,7 @@ public abstract class Scroll extends Item { ((HeroSprite)curUser.sprite).read(); if (curUser.hasTalent(Talent.EMPOWERING_SCROLLS)){ - Buff.affect(curUser, ScrollEmpower.class); + Buff.affect(curUser, ScrollEmpower.class).reset(); updateQuickslot(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java index 0ee6b0222..5f9ba41df 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java @@ -398,7 +398,7 @@ public abstract class Wand extends Item { } else { ScrollEmpower empower = curUser.buff(ScrollEmpower.class); if (empower != null){ - empower.detach(); + empower.use(); } }