# Quick Start: Adding Combat to Your Maze ## TL;DR Setup (5 min) ### 1. Create a Weapon - Right-click in Assets > Create > Weapon - Set: Name = "Iron Sword", Attack Bonus = 5 - Save as `Assets/Resources/Items/IronSword.asset` ### 2. Create an Armor - Right-click > Create > Armor - Set: Name = "Leather Armor", Defense Bonus = 3, Speed Penalty = 0 - Save as `Assets/Resources/Items/LeatherArmor.asset` ### 3. Create a Monster - Right-click > Create > Monster - Set: - Name = "Goblin" - Color = Green - Max Health = 15 - Speed = 8 - Attack = 4 - Defense = 1 - Magic = 0 - Starting Weapon = (drag in the Iron Sword) - Save as `Assets/Resources/Monsters/Goblin.asset` ### 4. Wire Up Agents with Character Sheets In `MazeSceneBuilder` (or wherever you spawn agents): ```csharp // Create agent with starting equipment var agentStats = new CharacterStats(); var agentSheet = new CharacterSheet(agentStats); agentSheet.EquipWeapon(iw); // Load from resources agentSheet.EquipArmor(la); var agent = new MazeAgent("Agent_0", startRoom, agentSheet); ``` ### 5. Spawn Monsters in Rooms In `MazeGenerator.GenerateConnectedRoom()` or room creation code: ```csharp var goblin = Resources.Load("Monsters/Goblin"); var encounter = new MonsterEncounter(); encounter.SpawnMonsters(new[] { goblin }, 1, 2); room.Encounter = encounter; ``` ### 6. Agents Now Auto-Peek & Retreat - Call `Initialize()` on AutonomousAgentBrain with a retreat threshold - Agents will avoid high-threat rooms when safer exits exist - If cornered, they'll fight (you'll need to implement combat) ## Next: Implement Combat When an agent enters a room with monsters, add combat logic: ```csharp if (room.Encounter != null && room.Encounter.HasLivingMonsters) { // TODO: Trigger combat // - Resolve turns based on Speed stat // - Apply damage (attack vs defense) // - Award loot on victory // - Mark agent as dead on defeat } ``` See `Combat/README.md` for the full architecture.