# V2 NPC Schedule Location Binding

`NPCScheduleLocationBinding.V2` validates that authored schedule blocks resolve
to registered locations for the scheduled NPC. It binds homes, workplaces,
tavern seats, and other authored anchors before pathfinding or activity behavior
attempts to use them.

## Runtime Surface

- `FV2NPCScheduleRegisteredLocation` defines a location id, binding type, owner
  NPC id, interaction tag, supported activities, availability, exclusivity, and
  priority.
- `FV2NPCScheduleLocationRegistry` groups registered locations for one NPC.
- `FV2NPCScheduleBoundLocation` records the resolved location for one schedule
  block, including binding type, interaction tag, ownership, and reservation
  requirement.
- `FV2NPCScheduleLocationBindingResult` reports all resolved blocks and
  validation issues.

## Binding Rules

1. The registry NPC id must match the schedule NPC id.
2. Schedules with eat or sleep blocks require an available home location.
3. Schedules with work blocks require an available workplace.
4. Schedules with tavern visit blocks require an available tavern seat.
5. Every schedule block location id must exist in the registry.
6. Exclusive locations must be owned by the scheduled NPC.
7. Registered locations must support the block's activity type.
8. Schedule block interaction tags must match the registered location
   interaction tag.
9. Duplicate location ids are blocking validation issues.

## Validation Commands

Run these targeted checks when touching schedule location binding:

```bash
python3 V2/ue/Tools/check-v2-npc-schedule-location-binding.py
python3 V2/ue/Tools/check-v2-npc-schedule-activity-behavior.py
python3 V2/ue/Tools/check-v2-npc-schedule-pathfinding.py
python3 V2/ue/Tools/check-v2-npc-schedule-execution-engine.py
python3 V2/ue/Tools/check-v2-npc-schedule-data-format.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Gameplay/NPC/NPCScheduleLocationBinding_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-npc-schedule-location-binding.py
```
