====== Hedgehog NPC - Code References ====== ===== Java Classes ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/npcs/Hedgehog.java|Hedgehog.java]] - Main implementation extending NPC ===== Java Class Content ===== package com.watabou.pixeldungeon.actors.mobs.npcs; import com.nyrds.Packable; import com.nyrds.pixeldungeon.ai.MobAi; import com.nyrds.pixeldungeon.ai.Wandering; import com.nyrds.pixeldungeon.mechanics.NamedEntityKind; import com.nyrds.pixeldungeon.ml.R; import com.nyrds.platform.util.StringsManager; import com.watabou.pixeldungeon.Dungeon; import com.watabou.pixeldungeon.actors.Actor; import com.watabou.pixeldungeon.actors.Char; import com.watabou.pixeldungeon.actors.buffs.Buff; import com.watabou.pixeldungeon.items.food.Pasty; import com.watabou.pixeldungeon.levels.RegularLevel; import org.jetbrains.annotations.NotNull; public class Hedgehog extends NPC { { setState(MobAi.getStateByClass(Wandering.class)); } @Override public float speed() { return speed; } @Override public void damage(int dmg, @NotNull NamedEntityKind src ) { } @Override public boolean add(Buff buff ) { return false; } private static boolean spawned; @Packable public int action = 0; @Packable public float speed = 0.5f; public static void spawn( RegularLevel level ) { if (!spawned && Dungeon.depth == 23) { int mobPos = level.randomRespawnCell(); if(level.cellValid(mobPos)) { Hedgehog hedgehog = new Hedgehog(); hedgehog.setPos(mobPos); level.mobs.add(hedgehog); Actor.occupyCell(hedgehog); spawned = true; } } } @Override public boolean interact(final Char hero) { getSprite().turnTo( getPos(), hero.getPos() ); switch (action) { case 0: say(StringsManager.getVar(R.string.Hedgehog_Info1)); break; case 1: say(StringsManager.getVar(R.string.Hedgehog_Info2)); break; case 2: say(StringsManager.getVar(R.string.Hedgehog_Info3)); break; case 3: say(StringsManager.getVar(R.string.Hedgehog_Info4)); new Pasty().doDrop(this); break; default: say(StringsManager.getVar(R.string.Hedgehog_ImLate)); action = 4; speed = 3; } speed += 0.5f; action++; return true; } } ===== JSON Configuration ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/spritesDesc/Hedgehog.json|Hedgehog.json]] - Sprite configuration ===== String Resources ===== hedgehog The hedgehog looks nervous. Are you looking for a Bear too? How is Horse, out there, in the mist? Do you like tea with raspberry jam? Take this pie I\'m late, I\'m so late... ===== Translated String Resources ===== ёжик Ёжик выглядит нервным. Вы тоже ищете Медведя? Как там Лошадь, в тумане? Вы любите чай с малиновым вареньем? Возьми этот пирог Я опаздываю, я так опаздываю... 刺猬 刺猬看起来很紧张。 hérisson Le hérisson semble nerveux. Igel Dieser Igel scheint nervös zu sein. erizo El erizo parece nervioso. ouriço O ouriço parece nervoso. riccio Il riccio sembra nervoso. ハリネズミ ハリネズミは緊張しているようだ。 고슴도치 고슴도치가 긴장한 것 같습니다. jeż Jeż wygląda na zestresowanego. їжак Їжак виглядає нервовим. kirpi Kirpi gergin görünüyor. landak Landak itu kelihatan malu. σκαντζόχοιρος Ο σκαντζόχοιρος φαίνεται νευρικός. ===== Lua Scripts ===== This entity is implemented in Java, no Lua script exists ===== Behavior ===== * Spawns on depth 23 (Halls level) * Only one hedgehog spawns per game session (static spawned flag) * Uses Wandering AI behavior * Immune to damage (damage method does nothing) * Immune to buffs (add method returns false) * Has 4 interaction states before leaving * Drops a [[mr:pasty_item|Pasty]] on 4th interaction * Speed increases with each interaction (starts at 0.5f, increases by 0.5f each time) * On 5th+ interaction, says "I'm late" and leaves with speed 3.0f ===== Related mr Entities ===== * [[mr:pasty_item|Pasty Item]] - Food item dropped by hedgehog * [[mr:npc|NPC]] - Base class for non-player characters * [[mr:wandering|Wandering AI]] - AI behavior used by hedgehog