diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index e103aa37c..ff2867062 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -371,6 +371,8 @@ actors.hero.talent.soul_siphon.title=soul siphon actors.hero.talent.soul_siphon.desc=_+1:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _15% effectiveness_.\n\n_+2:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _30% effectiveness_.\n\n_+3:_ Melee damage dealt by other characters triggers the Warlock's soul mark at _45% effectiveness_. actors.hero.talent.soul_eater.title=soul eater actors.hero.talent.soul_eater.desc=_+1:_ Soul mark grants _0.33 turns_ of satiety for each damage dealt. Soul marked enemies have a _10% chance_ to trigger on-eat effects when they die.\n\n_+1:_ Soul mark grants _0.67 turns_ of satiety for each damage dealt. Soul marked enemies have a _20% chance_ to trigger on-eat effects when they die.\n\n_+3:_ Soul mark grants _1 turn_ of satiety for each damage dealt. Soul marked enemies have a _30% chance_ to trigger on-eat effects when they die. +actors.hero.talent.necromancers_minions.title=necromancer's minions +actors.hero.talent.necromancers_minions.desc=_+1:_ When a soul marked enemy dies, the Warlock has a _10% chance_ to raise them as a corrupted wraith.\n\n_+1:_ When a soul marked enemy dies, the Warlock has a _20% chance_ to raise them as a corrupted wraith.\n\n_+1:_ When a soul marked enemy dies, the Warlock has a _30% chance_ to raise them as a corrupted wraith. actors.hero.talent.cached_rations.title=cached rations actors.hero.talent.cached_rations.desc=_+1:_ The Rogue can find _4 small rations_ placed in chests while he explores the earlier stages of the dungeon.\n\n_+2:_ The Rogue can find _6 small rations_ placed in chests while he explores the earlier stages of the the dungeon. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java index 2b4e2eda1..4624ad835 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java @@ -86,7 +86,7 @@ public enum Talent { //Battlemage T3 EMPOWERED_STRIKE(43, 3), MYSTICAL_CHARGE(44, 3), BATTLEMAGE_T3_3(45, 3), //Warlock T3 - SOUL_SIPHON(46, 3), SOUL_EATER(47, 3), WARLOCK_T3_3(48, 3), + SOUL_SIPHON(46, 3), SOUL_EATER(47, 3), NECROMANCERS_MINIONS(48, 3), //Rogue T1 CACHED_RATIONS(64), THIEFS_INTUITION(65), SUCKER_PUNCH(66), PROTECTIVE_SHADOWS(67), @@ -467,7 +467,7 @@ public enum Talent { Collections.addAll(tierTalents, EMPOWERED_STRIKE, MYSTICAL_CHARGE, BATTLEMAGE_T3_3); break; case WARLOCK: - Collections.addAll(tierTalents, SOUL_SIPHON, SOUL_EATER, WARLOCK_T3_3); + Collections.addAll(tierTalents, SOUL_SIPHON, SOUL_EATER, NECROMANCERS_MINIONS); break; case ASSASSIN: Collections.addAll(tierTalents, ENHANCED_LETHALITY, ASSASSIN_T3_2, BOUNTY_HUNTER); 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 ddadb7784..38aea90c1 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 @@ -41,9 +41,11 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; +import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.Surprise; import com.shatteredpixel.shatteredpixeldungeon.effects.Wound; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Item; @@ -679,12 +681,25 @@ public abstract class Mob extends Char { Buff.affect(Dungeon.hero, Talent.LethalMomentumTracker.class, 1f); } } - + if (Dungeon.hero.isAlive() && !Dungeon.level.heroFOV[pos]) { GLog.i( Messages.get(this, "died") ); } - + + boolean soulMarked = buff(SoulMark.class) != null; + super.die( cause ); + + if (!(this instanceof Wraith) + && soulMarked + && Random.Int(10) < Dungeon.hero.pointsInTalent(Talent.NECROMANCERS_MINIONS)){ + Wraith w = Wraith.spawnAt(pos); + Buff.affect(w, Corruption.class); + if (Dungeon.level.heroFOV[pos]){ + CellEmitter.get(pos).burst( ShadowParticle.CURSE, 6 ); + Sample.INSTANCE.play( Assets.Sounds.CURSED ); + } + } } public void rollToDropLoot(){