====== Hedgehog NPC - Code References ====== {{ rpd:images:hedgehog_npc.png|Hedgehog NPC }} ===== 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 Ce hérisson a l'air nerveux. Igel Dieser Igel scheint nervös zu sein. erizo Ese erizo parece nervioso. ouriço O ouriço parece nervoso. riccio Il riccio sembra nervoso. ハリネズミ あのハリネズミは神経質そうだ。 고슴도치 저 고슴도치는 불안해 보인다. jeż Ten jeż wygląda na podenerwowanego. їжак Їжак стурбовано озирається по сторонах. kirpi Bu 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:undead_mob|Undead Mob]] - Example of mob entity kind * [[mr:shopkeeper_npc|Shopkeeper NPC]] - Another NPC entity