From c55ccb26d7f530a1d716f82d9d0852ef12cfa095 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 13 Apr 2025 15:27:41 -0400 Subject: [PATCH] v3.1.0: Loosened ID and uncurse reqs for Mage's Staff and Dried Rose --- .../assets/messages/items/items.properties | 12 ++++----- .../items/artifacts/DriedRose.java | 16 +++++------ .../items/weapon/melee/MagesStaff.java | 27 ++++++++++++------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index af2122b2a..91c403dac 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -231,8 +231,8 @@ items.artifacts.driedrose$wndghosthero.desc=The ghost is weak on their own, but items.artifacts.driedrose$wndghosthero.weapon_prompt=Select a weapon items.artifacts.driedrose$wndghosthero.armor_prompt=Select an armor items.artifacts.driedrose$wndghosthero.cant_unique=The ghost can't use unique items. -items.artifacts.driedrose$wndghosthero.cant_unidentified=You don't know enough about that item. -items.artifacts.driedrose$wndghosthero.cant_cursed=You can't give the ghost cursed equipment. +items.artifacts.driedrose$wndghosthero.cant_cursed=Those ghost can only use equipment that you're sure isn't cursed. +items.artifacts.driedrose$wndghosthero.cant_strength_unknown=The ghost may not be strong enough to use that. items.artifacts.driedrose$wndghosthero.cant_strength=The ghost is not strong enough to use that. ##ghost hero @@ -1927,10 +1927,10 @@ items.weapon.melee.magesstaff.ac_zap=ZAP items.weapon.melee.magesstaff.prompt=Select a wand items.weapon.melee.magesstaff.imbue=You imbue your staff with the %s. items.weapon.melee.magesstaff.preserved=The previous wand was preserved! -items.weapon.melee.magesstaff.conflict=The conflicting magics erase the enchantment on your staff. -items.weapon.melee.magesstaff.id_first=You'll need to identify this wand first. -items.weapon.melee.magesstaff.cursed=You can't use a cursed wand. -items.weapon.melee.magesstaff.imbue_desc=Are you sure you want to imbue your staff with this wand?\n\nIf the wand being imbued is the same or higher level than the staff, the staff will inherit the level of that wand plus a single one of its own upgrades.\n\nThis imbue will result in a _level %d_ staff. +items.weapon.melee.magesstaff.imbue_desc=Are you sure you want to imbue your staff with this wand?\n\nIf the wand being imbued is the same or higher level than the staff, the staff will inherit the level of that wand plus a single one of its own upgrades. +items.weapon.melee.magesstaff.imbue_level=This imbue will result in a _+%d staff._ +items.weapon.melee.magesstaff.imbue_unknown=You don't know this wand's level, but this imbue will result in at least a _+%d staff._ +items.weapon.melee.magesstaff.imbue_cursed=_If you imbue a cursed wand, then your staff will become cursed as well!_ items.weapon.melee.magesstaff.imbue_lost=The wand currently imbued in your staff _will be lost_. items.weapon.melee.magesstaff.imbue_talent=The wand currently imbued in your staff _will be returned at +0_. items.weapon.melee.magesstaff.yes=Yes, I'm sure diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 1045bf409..180322c3c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -904,11 +904,11 @@ public class DriedRose extends Artifact { } else if (item.unique) { GLog.w( Messages.get(WndGhostHero.class, "cant_unique")); hide(); - } else if (!item.isIdentified()) { - GLog.w( Messages.get(WndGhostHero.class, "cant_unidentified")); + } else if (item.cursed || !item.cursedKnown) { + GLog.w(Messages.get(WndGhostHero.class, "cant_cursed")); hide(); - } else if (item.cursed) { - GLog.w( Messages.get(WndGhostHero.class, "cant_cursed")); + } else if (!item.levelKnown && ((MeleeWeapon)item).STRReq(0) > rose.ghostStrength()){ + GLog.w( Messages.get(WndGhostHero.class, "cant_strength_unknown")); hide(); } else if (((MeleeWeapon)item).STRReq() > rose.ghostStrength()) { GLog.w( Messages.get(WndGhostHero.class, "cant_strength")); @@ -979,11 +979,11 @@ public class DriedRose extends Artifact { } else if (item.unique || ((Armor) item).checkSeal() != null) { GLog.w( Messages.get(WndGhostHero.class, "cant_unique")); hide(); - } else if (!item.isIdentified()) { - GLog.w( Messages.get(WndGhostHero.class, "cant_unidentified")); + } else if (item.cursed || !item.cursedKnown) { + GLog.w(Messages.get(WndGhostHero.class, "cant_cursed")); hide(); - } else if (item.cursed) { - GLog.w( Messages.get(WndGhostHero.class, "cant_cursed")); + } else if (!item.levelKnown && ((Armor)item).STRReq(0) > rose.ghostStrength()){ + GLog.w( Messages.get(WndGhostHero.class, "cant_strength_unknown")); hide(); } else if (((Armor)item).STRReq() > rose.ghostStrength()) { GLog.w( Messages.get(WndGhostHero.class, "cant_strength")); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java index e66033098..f3fa93cde 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java @@ -249,6 +249,7 @@ public class MagesStaff extends MeleeWeapon { level(targetLevel); this.wand = wand; + wand.levelKnown = wand.curChargeKnown = true; updateWand(false); wand.curCharges = Math.min(wand.maxCharges, wand.curCharges+oldStaffcharges); if (owner != null){ @@ -257,6 +258,12 @@ public class MagesStaff extends MeleeWeapon { applyWandChargeBuff(Dungeon.hero); } + if (wand.cursed && (!this.cursed || !this.hasCurseEnchant())){ + equipCursed(Dungeon.hero); + this.cursed = this.cursedKnown = true; + enchant(Enchantment.randomCurse()); + } + //This is necessary to reset any particles. //FIXME this is gross, should implement a better way to fully reset quickslot visuals int slot = Dungeon.quickslot.getSlot(this); @@ -416,14 +423,6 @@ public class MagesStaff extends MeleeWeapon { public void onSelect( final Item item ) { if (item != null) { - if (!item.isIdentified()) { - GLog.w(Messages.get(MagesStaff.class, "id_first")); - return; - } else if (item.cursed){ - GLog.w(Messages.get(MagesStaff.class, "cursed")); - return; - } - if (wand == null){ applyWand((Wand)item); } else { @@ -436,7 +435,17 @@ public class MagesStaff extends MeleeWeapon { newLevel = trueLevel(); } - String bodyText = Messages.get(MagesStaff.class, "imbue_desc", newLevel); + String bodyText = Messages.get(MagesStaff.class, "imbue_desc"); + if (item.isIdentified()){ + bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_level", newLevel); + } else { + bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_unknown", trueLevel()); + } + + if (!item.cursedKnown || item.cursed){ + bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_cursed"); + } + if (Dungeon.hero.hasTalent(Talent.WAND_PRESERVATION) && Dungeon.hero.buff(Talent.WandPreservationCounter.class) == null){ bodyText += "\n\n" + Messages.get(MagesStaff.class, "imbue_talent");