Mob System is the base entity system for all monsters, enemies, and NPCs in Remixed Dungeon. All mobs inherit from the base `Mob` class.
Base class for all mobile entities (enemies, NPCs, pets)
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
Individual mob configurations in `assets/mobsDesc/`:
Spawn Configuration: Bestiary.json
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>
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