diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 28f287bde..8cf5ba0ef 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -330,7 +330,7 @@ actors.hero.talent.test_huntress_4.title=test talent actors.hero.talent.test_huntress_4.desc=TODO actors.hero.hero.name=you -actors.hero.hero.leave=You can't leave yet! +actors.hero.hero.leave=You can't leave yet, the rest of the dungeon awaits below! actors.hero.hero.level_up=Level up! actors.hero.hero.new_level=Level up! +Accuracy, +Evasion, +5 HP! actors.hero.hero.new_talent=+1 Talent Point! @@ -354,21 +354,21 @@ actors.hero.heroclass.warrior_desc_misc=The Warrior regains a small amount of HP actors.hero.heroclass.warrior_desc_subclasses=A subclass can be chosen after defeating the second boss. The Warrior has two subclasses: actors.hero.heroclass.mage=mage -actors.hero.heroclass.mage_unlock=The Mage is an expert with wands, and carries a _unique magical staff._\n\nTo unlock him _use two scrolls of upgrade in one run._ +actors.hero.heroclass.mage_unlock=The Mage is an expert with wands, and carries a _unique magical staff._\n\nTo unlock him _use a scroll of upgrade to make an item stronger._ actors.hero.heroclass.mage_desc_item=The Mage starts with a _unique staff,_ which can be imbued with the properties of a wand.\n\nThe staff recharges significantly faster than a wand, and has 1 more maximum charge.\n\nThe staff starts out imbued with magic missile. actors.hero.heroclass.mage_desc_loadout=The Mage starts with his staff as his melee weapon. The staff deals less melee damage than other starter weapons.\n\nThe Mage can use the magic in his staff to attack at range.\n\nThe Mage starts with a _scroll holder,_ which can store various scrolls and protect them from fire. actors.hero.heroclass.mage_desc_misc=The Mage partially identifies wands the moment he uses them.\n\nThe Mage regains a small amount of wand and staff charge whenever he eats food.\n\nThe Mage automatically identifies:\n- Scrolls of Identify\n- Potions of Liquid Flame\n- Scrolls of Upgrade actors.hero.heroclass.mage_desc_subclasses=A subclass can be chosen after defeating the second boss. The Mage has two subclasses: actors.hero.heroclass.rogue=rogue -actors.hero.heroclass.rogue_unlock=The Rogue can control the flow of battle and strike from invisibility using his _unique cloak of shadows._\n\nTo unlock him _perform 20 surprise attacks in one run._ +actors.hero.heroclass.rogue_unlock=The Rogue can control the flow of battle and strike from invisibility using his _unique cloak of shadows._\n\nTo unlock him _perform 10 surprise attacks in one run._ actors.hero.heroclass.rogue_desc_item=The Rogue starts with a unique artifact: the _Cloak of Shadows,_ which he can use to become invisible at will.\n\nLike all artifacts, the cloak cannot be directly upgraded. Instead it becomes more powerful as it is used. actors.hero.heroclass.rogue_desc_loadout=The Rogue starts with a _dagger,_ which deals more damage when surprising enemies.\n\nThe Rogue starts with _three throwing knives,_ which offer some ranged damage and deal more damage to surprised enemies.\n\nThe Rogue starts with a _velvet pouch,_ which can store small items like seeds and runestones. actors.hero.heroclass.rogue_desc_misc=The Rogue detects secrets and traps from a greater distance.\n\nThe Rogue is able to find more secrets hidden in the dungeon.\n\nThe Rogue automatically identifies:\n- Scrolls of Identify\n- Potions of Invisibility\n- Scrolls of Magic Mapping actors.hero.heroclass.rogue_desc_subclasses=A subclass can be chosen after defeating the second boss. The Rogue has two subclasses: actors.hero.heroclass.huntress=huntress -actors.hero.heroclass.huntress_unlock=The Huntress is a master of thrown weapons, and has a _unique magical bow_ with infinite arrows.\n\nTo unlock her _defeat 20 enemies with the help of thrown weapons in one run._ +actors.hero.heroclass.huntress_unlock=The Huntress is a master of thrown weapons, and has a _unique magical bow_ with infinite arrows.\n\nTo unlock her _hit 15 enemies with thrown weapons in one run._ actors.hero.heroclass.huntress_desc_item=The Huntress starts with a _unique spirit bow,_ which can fire an infinite number of conjured arrows.\n\nThe bow steadily grows stronger as the huntress levels up, and can be augmented and enchanted. actors.hero.heroclass.huntress_desc_loadout=The Huntress starts with a pair of _studded gloves,_ which attack much faster than other starter weapons.\n\nThe Huntress starts with her bow as a ranged option.\n\nThe Huntress starts with a _velvet pouch,_ which can store small items like seeds and runestones. actors.hero.heroclass.huntress_desc_misc=The Huntress can travel through tall grass without trampling it.\n\nThe Huntress can use thrown weapons for longer before they break.\n\nThe Huntress senses nearby enemies even if they are hidden behind obstacles.\n\nThe Huntress automatically identifies:\n- Scrolls of Identify\n- Potions of Mind Vision\n- Scrolls of Lullaby diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java index f5691de49..5f27fcd42 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java @@ -683,19 +683,19 @@ public class Badges { } public static void validateMageUnlock(){ - if (Statistics.upgradesUsed >= 2 && !global.contains(Badge.UNLOCK_MAGE)){ + if (Statistics.upgradesUsed >= 1 && !global.contains(Badge.UNLOCK_MAGE)){ displayBadge( Badge.UNLOCK_MAGE ); } } public static void validateRogueUnlock(){ - if (Statistics.sneakAttacks >= 20 && !global.contains(Badge.UNLOCK_ROGUE)){ + if (Statistics.sneakAttacks >= 10 && !global.contains(Badge.UNLOCK_ROGUE)){ displayBadge( Badge.UNLOCK_ROGUE ); } } public static void validateHuntressUnlock(){ - if (Statistics.thrownAssists >= 20 && !global.contains(Badge.UNLOCK_HUNTRESS)){ + if (Statistics.thrownAssists >= 15 && !global.contains(Badge.UNLOCK_HUNTRESS)){ displayBadge( Badge.UNLOCK_HUNTRESS ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index 754d92ede..fb8c89f33 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -546,8 +546,12 @@ public abstract class Mob extends Char { @Override public int defenseProc( Char enemy, int damage ) { - if (enemy instanceof Hero && ((Hero) enemy).belongings.weapon instanceof MissileWeapon){ + if (enemy instanceof Hero + && ((Hero) enemy).belongings.weapon instanceof MissileWeapon + && !hitWithRanged){ hitWithRanged = true; + Statistics.thrownAssists++; + Badges.validateHuntressUnlock(); } if (surprisedBy(enemy)) { @@ -648,11 +652,6 @@ public abstract class Mob extends Char { @Override public void die( Object cause ) { - if (hitWithRanged){ - Statistics.thrownAssists++; - Badges.validateHuntressUnlock(); - } - if (cause == Chasm.class){ //50% chance to round up, 50% to round down if (EXP % 2 == 1) EXP += Random.Int(2);