QUICK_START.md 1.9 KB

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):

// 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:

var goblin = Resources.Load<Monster>("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:

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.