From f278a609290ff5f71d0061b2bfa2ab1552f65db6 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 7 May 2024 15:59:51 -0400 Subject: [PATCH] v2.4.0: mostly implemented the wondrous resin trinket --- .../assets/messages/items/items.properties | 3 + core/src/main/assets/sprites/items.png | Bin 23498 -> 23537 bytes .../items/Generator.java | 6 +- .../items/trinkets/WondrousResin.java | 73 ++++++++++++++++++ .../items/wands/CursedWand.java | 30 ++++--- .../items/wands/Wand.java | 15 +++- .../sprites/ItemSpriteSheet.java | 2 + 7 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/WondrousResin.java diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index de3e2fe20..3eaea3ef4 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -1324,6 +1324,9 @@ items.trinkets.thirteenleafclover.desc=Somehow stewing in the alchemy pot has ca items.trinkets.trapmechanism.name=trap mechanism items.trinkets.trapmechanism.desc=The core mechanism of one of the dungeon's pitfall traps, carefully carved out of the floor so it can be carried. It seems to be magically tied to the dungeon itself, making terrain more hazardous for you and the dungeon's inhabitants.\n\nAt its current level this trinket will make _%d%%_ of regular floors become filled with either traps or chasms instead. +items.trinkets.wondrousresin.name=wondrous resin +items.trinkets.wondrousresin.desc=This shimmering blue resin appears to have the distilled essence of a cursed wand's magic. The magic from the alchemy post has seemed to stabilize it somewhat, and its now affecting your wands.\n\nAt its current level this trinket will cause cursed wand effects to be forced positive _%1$s%%_ of the time, and will cause uncursed wands to fire an additional cursed zap _%2$s%%_ of the time.\n\nThis trinket costs a relatively large amount of energy to upgrade. + items.trinkets.trinketcatalyst.name=magical catalyst items.trinkets.trinketcatalyst.window_text=The water begins to glow as you add the catalyst. There are a few nearby items you could imbue with energy to turn into a magical trinket. items.trinkets.trinketcatalyst.desc=This ball of magical golden dust glimmers in the darkness of the dungeon. This catalyst can be used at an alchemy pot with a little alchemical energy to produce a unique trinket item.\n\nTrinkets provide various different effects that slightly alter the dungeon or its inhabitants. Trinkets can be upgraded with more energy to make their effect more powerful, or dropped to forego the effect entirely. diff --git a/core/src/main/assets/sprites/items.png b/core/src/main/assets/sprites/items.png index 3f1a41f26ed5b61ba69d858c41b67679ad1d5aae..7cab0ebe175b2f615c8a29e6f7f5c82370ca2e01 100644 GIT binary patch literal 23537 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 B2ju_& literal 23498 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.trinkets; + +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class WondrousResin extends Trinket { + + { + image = ItemSpriteSheet.WONDROUS_RESIN; + } + + @Override + protected int upgradeEnergyCost() { + //5 -> 10(15) -> 15(30) -> 20(50) + return 10+5*level(); + } + + @Override + public String desc() { + return Messages.get(this, "desc", + Messages.decimalFormat("#.##", 100*positiveCurseEffectChance(buffedLvl())), + Messages.decimalFormat("#.##", 100*extraCurseEffectChance(buffedLvl()))); + } + + //TODO currently this trims most rare/v.rare wand effects entirely. Need to improve variety there + // certain effects might also be extremely good with no negatives + + public static float positiveCurseEffectChance(){ + return positiveCurseEffectChance( trinketLevel(WondrousResin.class) ); + } + + public static float positiveCurseEffectChance(int level ){ + if (level >= 0){ + return 0.25f + 0.25f * level; + } else { + return 0; + } + } + + public static float extraCurseEffectChance(){ + return extraCurseEffectChance( trinketLevel(WondrousResin.class) ); + } + + public static float extraCurseEffectChance( int level ){ + if (level >= 0){ + return 0.125f + 0.125f * level; + } else { + return 0; + } + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java index 844ce000e..109d1ce0e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java @@ -54,6 +54,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.WondrousResin; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CursingTrap; @@ -123,6 +124,7 @@ public class CursedWand { } private static boolean commonEffect(final Item origin, final Char user, final int targetPos){ + boolean positiveOnly = Random.Float() < WondrousResin.positiveCurseEffectChance(); switch(Random.Int(4)){ //anti-entropy @@ -130,9 +132,9 @@ public class CursedWand { Char target = Actor.findChar(targetPos); if (Random.Int(2) == 0) { if (target != null) Buff.affect(target, Burning.class).reignite(target); - Buff.affect(user, Frost.class, Frost.DURATION); + if (!positiveOnly) Buff.affect(user, Frost.class, Frost.DURATION); } else { - Buff.affect(user, Burning.class).reignite(user); + if (!positiveOnly)Buff.affect(user, Burning.class).reignite(user); if (target != null) Buff.affect(target, Frost.class, Frost.DURATION); } tryForWandProc(target, origin); @@ -146,7 +148,7 @@ public class CursedWand { //random teleportation case 2: - if(Random.Int(2) == 0) { + if(!positiveOnly && Random.Int(2) == 0) { if (user != null && !user.properties().contains(Char.Property.IMMOVABLE)) { ScrollOfTeleportation.teleportChar(user); } else { @@ -183,6 +185,7 @@ public class CursedWand { } private static boolean uncommonEffect(final Item origin, final Char user, final int targetPos){ + boolean positiveOnly = Random.Float() < WondrousResin.positiveCurseEffectChance(); switch(Random.Int(4)){ //Random plant @@ -208,7 +211,7 @@ public class CursedWand { int damage = Dungeon.scalingDepth() * 2; Char toHeal, toDamage; - if (Random.Int(2) == 0){ + if (positiveOnly || Random.Int(2) == 0){ toHeal = user; toDamage = target; } else { @@ -251,7 +254,7 @@ public class CursedWand { //shock and recharge case 3: - new ShockingTrap().set( user.pos ).activate(); + if (!positiveOnly) new ShockingTrap().set( user.pos ).activate(); Buff.prolong(user, Recharging.class, Recharging.DURATION); ScrollOfRecharging.charge(user); SpellSprite.show(user, SpellSprite.CHARGE); @@ -261,7 +264,8 @@ public class CursedWand { } private static boolean rareEffect(final Item origin, final Char user, final int targetPos){ - switch(Random.Int(4)){ + boolean positiveOnly = Random.Float() < WondrousResin.positiveCurseEffectChance(); + switch(positiveOnly ? 0 : Random.Int(4)){ //sheep transformation case 0: default: @@ -325,20 +329,24 @@ public class CursedWand { } private static boolean veryRareEffect(final Item origin, final Char user, final int targetPos){ - switch(Random.Int(4)){ + boolean positiveOnly = Random.Float() < WondrousResin.positiveCurseEffectChance(); + switch( positiveOnly ? 0 : Random.Int(4) ){ //great forest fire! case 0: default: for (int i = 0; i < Dungeon.level.length(); i++){ GameScene.add( Blob.seed(i, 15, Regrowth.class)); } - do { - GameScene.add(Blob.seed(Dungeon.level.randomDestination(null), 10, Fire.class)); - } while (Random.Int(5) != 0); + new Flare(8, 32).color(0xFFFF66, true).show(user.sprite, 2f); Sample.INSTANCE.play(Assets.Sounds.TELEPORT); GLog.p(Messages.get(CursedWand.class, "grass")); - GLog.w(Messages.get(CursedWand.class, "fire")); + if (!positiveOnly) { + GLog.w(Messages.get(CursedWand.class, "fire")); + do { + GameScene.add(Blob.seed(Dungeon.level.randomDestination(null), 10, Fire.class)); + } while (Random.Int(5) != 0); + } return true; //golden mimic 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 7f41e3426..801686693 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 @@ -48,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.WondrousResin; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -683,9 +684,21 @@ public abstract class Wand extends Item { curWand.fx(shot, new Callback() { public void call() { curWand.onZap(shot); - curWand.wandUsed(); + if (Random.Float() < WondrousResin.extraCurseEffectChance()){ + CursedWand.cursedZap(curWand, + curUser, + new Ballistica(curUser.pos, target, Ballistica.MAGIC_BOLT), new Callback() { + @Override + public void call() { + curWand.wandUsed(); + } + }); + } else { + curWand.wandUsed(); + } } }); + } curWand.cursedKnown = true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index ad10a4e24..c9ddc23c0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -481,6 +481,7 @@ public class ItemSpriteSheet { public static final int CLOVER = TRINKETS+6; public static final int TRAP_MECHANISM = TRINKETS+7; public static final int MIMIC_TOOTH = TRINKETS+8; + public static final int WONDROUS_RESIN = TRINKETS+9; static{ assignItemRect(RAT_SKULL, 16, 11); assignItemRect(PARCHMENT_SCRAP, 10, 14); @@ -491,6 +492,7 @@ public class ItemSpriteSheet { assignItemRect(CLOVER, 11, 15); assignItemRect(TRAP_MECHANISM, 13, 15); assignItemRect(MIMIC_TOOTH, 8, 15); + assignItemRect(WONDROUS_RESIN, 12, 11); } private static final int SCROLLS = xy(1, 19); //16 slots