====== Maze Shadow Mob - Code References ======
{{ rpd:images:maze_shadow_mob.png|Maze Shadow }}
**Maze Shadow** is a mob entity implemented primarily through Lua scripting with JSON configuration.
===== Entity Kind =====
The entity kind for this mob is: maze_shadow
===== JSON Configuration =====
Configuration file: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/mobsDesc/MazeShadow.json|MazeShadow.json]]
Key configuration properties:
* **defenseSkill**: 15
* **attackSkill**: 10
* **experience**: 5
* **maxLevel**: 10
* **damageMin**: 5
* **damageMax**: 10
* **baseSpeed**: 2
* **attackDelay**: 0.5
* **hitPoints**: 20
* **name**: Shadow_Name (string resource key)
* **description**: Shadow_Desc (string resource key)
* **spriteDesc**: spritesDesc/Shadow.json
* **canBePet**: true
* **walkingType**: WALL
* **scriptFile**: scripts/mobs/MazeShadow
* **aiState**: Wandering
===== Lua Script Implementation =====
Script file: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/scripts/mobs/MazeShadow.lua|MazeShadow.lua]]
The mob uses a custom interact function that swaps positions with the player:
local RPD = require "scripts/lib/commonClasses"
local mob = require"scripts/lib/mob"
return mob.init({
interact = function(self, chr)
local ownPos = self:getPos()
local newPos = chr:getPos()
self:move(newPos)
self:getSprite():move(ownPos, newPos)
chr:move(ownPos)
chr:getSprite():move(newPos, ownPos)
end
})
===== String Resources =====
String resource keys used:
* Shadow_Name - Mob name
* Shadow_Name_Objective - Objective form of name
* Shadow_Desc - Mob description
* Shadow_Gender - Gender reference
Example English strings (from values/strings_all.xml):
Shadow
Shadow
Shadows silently wander the ruins of the old prison. They only occasionally show themselves to adventurers, usually on their last adventure.
===== Sprite Configuration =====
Sprite description: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/spritesDesc/Shadow.json|Shadow.json]]
Wiki image: maze_shadow_mob.png
===== Related Entities =====
* Similar mob: [[mr:shadow_mob|Shadow]] - Regular shadow mob
* Similar mob: [[mr:shadow_lord_mob|Shadow Lord]] - Boss variant
{{tag> mr mob lua_script json_config}}