Table of Contents

Mob System - Code References

Mob System is the base entity system for all monsters, enemies, and NPCs in Remixed Dungeon. All mobs inherit from the base `Mob` class.

Entity Type

Base class for all mobile entities (enemies, NPCs, pets)

Java Classes

Base Class: Mob.java

Key Methods:

Factory: MobFactory.java

AI System: MobAi.java

Common Mob Subclasses (in `com.watabou.pixeldungeon.actors.mobs`):

NPC Classes (in `com.watabou.pixeldungeon.actors.mobs.npcs`):

Special: `CustomMob` - For JSON-configured mobs without Java class

JSON Configuration

Individual mob configurations in `assets/mobsDesc/`:

Spawn Configuration: Bestiary.json

String Resources

Common mob-related strings (values/strings_all.xml):

<string name="Mob_Attacking">attacking</string>
<string name="Mob_StaFleeingStatus">fleeing</string>
<string name="Mob_StaTerrorStatus">terrified</string>
<string name="Mob_StaControlledStatus">controlled</string>
<string name="MobAi_status">AI Status</string>
<string name="Mob_CantDoIt">can't do it</string>
<string name="Mob_StaSleepingStatus">sleeping</string>
<string name="Mob_StaHuntingStatus">hunting</string>
<string name="Mob_StaPassiveStatus">passive</string>
<string name="Mob_Died">died</string>
<string name="Mob_Desc">A generic mob description</string>
<string name="Mob_GoingTo">going to</string>
<string name="Mob_StaAmokStatus">amok</string>
<string name="Mob_ReadyForOrder">ready for order</string>
<string name="Mob_StaWanderingStatus">wandering</string>

Lua Scripts

Game Mechanics

Code Fragments

Mob creation from JSON:

// MobFactory.java
public static Mob mobByName(String name) {
    if (mobClasses.containsKey(name)) {
        return mobClasses.get(name).newInstance();
    }
    // Fallback to CustomMob with JSON config
    return new CustomMob(name);
}

Pet taming:

// Mob.java
public void makePet(Hero hero) {
    this.petMaster = hero.id();
    hero.pets.add(this);
}
 
// Possess spell (Lua)
RPD.Mob:makePet(target, caster)

AI state transition:

// MobAi.java
public AiState getState() { return state; }
public void setState(AiState state) { this.state = state; }
 
// States: Wandering → Hunting → Fleeing/Amok/Sleeping