====== 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