v3.3.1: skeleton key now correctly procs and triggers on artifact fx

This commit is contained in:
Evan Debenham
2025-12-08 12:31:04 -05:00
parent 4258dc4317
commit 6c1c26f070

View File

@@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Regeneration; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Regeneration;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.effects.BlobEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.BlobEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
@@ -161,6 +162,7 @@ public class SkeletonKey extends Artifact {
GameScene.updateMap(target); GameScene.updateMap(target);
charge -= 1; charge -= 1;
gainExp(2 + 1); gainExp(2 + 1);
Talent.onArtifactUsed(Dungeon.hero);
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
} }
@@ -176,7 +178,7 @@ public class SkeletonKey extends Artifact {
public void call() { public void call() {
Level.set(target, Terrain.DOOR); Level.set(target, Terrain.DOOR);
GameScene.updateMap(target); GameScene.updateMap(target);
//no charge cost //no charge cost, no artifact on-use
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
} }
@@ -198,6 +200,7 @@ public class SkeletonKey extends Artifact {
GameScene.updateMap(target); GameScene.updateMap(target);
charge -= 5; charge -= 5;
gainExp(2 + 5); gainExp(2 + 5);
Talent.onArtifactUsed(Dungeon.hero);
Sample.INSTANCE.play(Assets.Sounds.TELEPORT); Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
CellEmitter.get( target ).start( Speck.factory( Speck.DISCOVER ), 0.025f, 20 ); CellEmitter.get( target ).start( Speck.factory( Speck.DISCOVER ), 0.025f, 20 );
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
@@ -233,6 +236,7 @@ public class SkeletonKey extends Artifact {
if (pushCell != -1 && !Char.hasProp(toMove, Char.Property.IMMOVABLE)){ if (pushCell != -1 && !Char.hasProp(toMove, Char.Property.IMMOVABLE)){
Ballistica push = new Ballistica(target, pushCell, Ballistica.PROJECTILE); Ballistica push = new Ballistica(target, pushCell, Ballistica.PROJECTILE);
WandOfBlastWave.throwChar(toMove, push, 1, false, false, this); WandOfBlastWave.throwChar(toMove, push, 1, false, false, this);
artifactProc(toMove, visiblyUpgraded(), 2);
} else { } else {
GLog.w(Messages.get(SkeletonKey.class, "lock_no_space")); GLog.w(Messages.get(SkeletonKey.class, "lock_no_space"));
return; return;
@@ -247,6 +251,7 @@ public class SkeletonKey extends Artifact {
GameScene.updateMap(target); GameScene.updateMap(target);
charge -= 2; charge -= 2;
gainExp(2); gainExp(2);
Talent.onArtifactUsed(Dungeon.hero);
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
@@ -283,6 +288,7 @@ public class SkeletonKey extends Artifact {
Dungeon.level.heaps.get(target).open(curUser); Dungeon.level.heaps.get(target).open(curUser);
charge -= 2; charge -= 2;
gainExp(2 + 2); gainExp(2 + 2);
Talent.onArtifactUsed(Dungeon.hero);
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
} }
@@ -303,6 +309,7 @@ public class SkeletonKey extends Artifact {
Dungeon.level.heaps.get(target).open(curUser); Dungeon.level.heaps.get(target).open(curUser);
charge -= 5; charge -= 5;
gainExp(2 + 5); gainExp(2 + 5);
Talent.onArtifactUsed(Dungeon.hero);
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
} }
@@ -358,6 +365,7 @@ public class SkeletonKey extends Artifact {
GameScene.updateFog(); GameScene.updateFog();
Sample.INSTANCE.play(Assets.Sounds.TELEPORT); Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
Talent.onArtifactUsed(Dungeon.hero);
curUser.spendAndNext(Actor.TICK); curUser.spendAndNext(Actor.TICK);
curUser.sprite.idle(); curUser.sprite.idle();
} }
@@ -453,6 +461,7 @@ public class SkeletonKey extends Artifact {
Char ch = Actor.findChar(pos); Char ch = Actor.findChar(pos);
if (ch != null && ch.alignment == Char.Alignment.ENEMY){ if (ch != null && ch.alignment == Char.Alignment.ENEMY){
WandOfBlastWave.throwChar(ch, new Ballistica(pos, pos+knockbackDIR, Ballistica.PROJECTILE), 1, false, false, this); WandOfBlastWave.throwChar(ch, new Ballistica(pos, pos+knockbackDIR, Ballistica.PROJECTILE), 1, false, false, this);
artifactProc(ch, visiblyUpgraded(), 2);
} }
} }
} }