# V2 NPC Schedule Interruption

`NPCScheduleInterruption.V2` evaluates temporary overrides that pause or replace
the active daily routine. Combat, player interaction, weather, and custom
interruptions produce data-only commands so AI systems can interrupt behavior
without losing the schedule block needed for resume.

## Runtime Surface

- `FV2NPCScheduleInterruptionEvent` describes a combat, player interaction,
  weather, or custom interruption with priority, active/resolved state, optional
  target location, activity tag, behavior tag, and return-to-schedule policy.
- `FV2NPCScheduleInterruptionRequest` carries the schedule, location registry,
  current time, current location, last interrupted block, issue flag, and
  interruption events.
- `FV2NPCScheduleInterruptionCommand` carries the selected interruption or
  resume command, target location, activity, behavior, pause/resume flags,
  indoor routing flag, priority, and tags.
- `FV2NPCScheduleInterruptionResult` reports the active schedule block, selected
  interruption, schedule resume state, weather shelter routing, command payload,
  and validation issues.

## Interruption Rules

1. Combat interruptions pause the active schedule and emit
   `Behavior.Schedule.CombatInterrupt`.
2. Player interaction interruptions pause the schedule and can suppress command
   issue while dialogue or interaction owns the NPC.
3. Weather interruptions select an available shelter or home location, emit
   `Schedule.Activity.WeatherShelter` / `Behavior.Schedule.SeekShelter`, and
   drive the NPC indoors.
4. When no event is active but a resolved event and last interrupted block are
   present, the system emits a resume command for the current active schedule
   block when that event requires returning to schedule.
5. When multiple events are active, the highest priority event wins.
6. Active or resolved interruptions require stable interruption ids.
7. The interruption command preserves the interrupted block id so save/load and
   later persistence can resume safely.

## Validation Commands

Run these targeted checks when touching schedule interruption:

```bash
python3 V2/ue/Tools/check-v2-npc-schedule-interruption.py
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/NPCScheduleInterruption_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-npc-schedule-interruption.py
```
