====== Heart Of Darkness Buff - Code References ======
===== Java Classes =====
Actual implementation found in:
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/items/guts/HeartOfDarkness.java|HeartOfDarkness.java]] - Contains the HeartOfDarkness artifact and HeartOfDarknessBuff class
===== Implementation Details =====
Full class implementation:
package com.nyrds.pixeldungeon.items.guts;
import com.nyrds.pixeldungeon.ml.R;
import com.nyrds.pixeldungeon.mobs.guts.SpiritOfPain;
import com.nyrds.platform.util.StringsManager;
import com.watabou.pixeldungeon.actors.Char;
import com.watabou.pixeldungeon.actors.mobs.Mob;
import com.watabou.pixeldungeon.items.rings.Artifact;
import com.watabou.pixeldungeon.items.rings.ArtifactBuff;
import com.watabou.pixeldungeon.ui.BuffIndicator;
public class HeartOfDarkness extends Artifact {
public HeartOfDarkness() {
imageFile = "items/artifacts.png";
image = 18;
}
@Override
public boolean isIdentified() {
return true;
}
@Override
public ArtifactBuff buff() {
return new HeartOfDarknessBuff();
}
public static class HeartOfDarknessBuff extends ArtifactBuff {
@Override
public int icon() {
return BuffIndicator.DARKVEIL;
}
@Override
public String name() {
return StringsManager.getVar(R.string.DarkVeilBuff_Name);
}
@Override
public String desc() {
return StringsManager.getVar(R.string.DarkVeilBuff_Info);
}
@Override
public int defenceProc(Char defender, Char enemy, int damage) {
int defenderPos = defender.getPos();
int spiritPos = defender.level().getEmptyCellNextTo(defenderPos);
if (defender.level().cellValid(spiritPos)) {
SpiritOfPain spirit = new SpiritOfPain();
spirit.setPos(spiritPos);
Mob.makePet(spirit, defender.getId());
defender.level().spawnMob(spirit, 0, defenderPos);
}
return damage;
}
}
}
===== Key Methods =====
* **icon()** - Returns BuffIndicator.DARKVEIL for the buff icon
* **name()** - Returns localized buff name from DarkVeilBuff_Name string resource
* **desc()** - Returns localized buff description from DarkVeilBuff_Info string resource
* **defenceProc()** - Called when the wearer takes damage; spawns a SpiritOfPain pet nearby
===== Behavior =====
The HeartOfDarknessBuff is automatically applied when the hero equips the Heart of Darkness artifact. Its primary function is:
* Triggers on damage taken (via defenceProc method)
* Spawns a SpiritOfPain mob as a pet adjacent to the defender
* The SpiritOfPain is allied with the hero (created via Mob.makePet())
* Requires a valid empty cell next to the hero for spawning
===== String Resources =====
Dark veil
A veil of darkness surrounds the owner, summoning a spirit every time damage is taken.
Тёмная вуаль
Вуаль тьмы окружает владельца, призывая духа каждый раз при получении урона.
===== Related Entities =====
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/items/guts/HeartOfDarkness.java|HeartOfDarkness]] - Parent artifact item
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/mobs/guts/SpiritOfPain.java|SpiritOfPain]] - Mob spawned by the buff
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/rings/Artifact.java|Artifact]] - Base class for artifact items
* [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/rings/ArtifactBuff.java|ArtifactBuff]] - Base class for artifact buffs
===== JSON Configuration =====
None - This buff is implemented purely in Java without JSON configuration.
===== Lua Scripts =====
None - This buff is implemented purely in Java without Lua scripting.