# Wolf NPC And Location Parity

This report compares the wolf-related Inform source that is relevant to NPCs, locations, and adjacent story events against the current Ren'Py project state.

Source root:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival`

Reference manifest:

- [inform_source_manifest.json](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/docs/inform_source_manifest.json)
- [inform_source_manifest.md](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/docs/inform_source_manifest.md)

Status meanings:

- `ported`: target file exists and appears structurally aligned to the source include
- `partial`: related Ren'Py content exists, but not in the expected target file or key behavior/content is missing
- `missing`: no meaningful target content found

## Summary

| Source include | Type | Status | Notes |
|---|---|---|---|
| `Brennan` | NPC/story | `ported` | Dedicated target file now exists at `game/scripts/Content/NPCs/Wahn/brennan.rpy` and is wired to the Brennan dialogue label. |
| `Brennan's Wolves` | NPC/story | `ported` | Romulus and Remus now live in `game/scripts/Content/NPCs/Wahn/brennan_s_wolves.rpy` with dedicated records. |
| `Lair Of The Lupines` | location | `ported` | Dedicated location file now includes the missing Pit/Bar/Common Room links and the den discovery event now unlocks the hidden entrance through navigation. |
| `Broken Husky Bad-End` | event | `ported` | Dedicated event file now exists at `game/scripts/Content/Events/Luneth/broken_husky_bad_end.rpy`. |
| `Husky BadEnd` | event | `ported` | Dedicated event file now exists at `game/scripts/Content/Events/Gherod/husky_badend.rpy`. |
| `Latex Quad Husky` | event | `ported` | Dedicated event file now exists at `game/scripts/Content/Events/Stripes/latex_quad_husky.rpy`. |
| `Latex Husky Statue` | event | `ported` | Dedicated event file now exists at `game/scripts/Content/Events/Shiru/latex_husky_statue.rpy`. |
| `Werewolf` | event | `ported` | The placeholder broad-file event was split into `game/scripts/Content/Events/CrimsonAsh/werewolf.rpy`. |

## Findings

### `Brennan` by Wahn

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Wahn\Brennan.i7x`
- Size: about `453 KB`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/NPCs/Wahn/brennan.rpy`
- Related content exists in:
  [game/scripts/Content/NPCs/Wahn/Wahn_npcs.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/NPCs/Wahn/Wahn_npcs.rpy)
  [game/scripts/Content/Locations/Wahn/brennan.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/Locations/Wahn/brennan.rpy)
  [game/scripts/Content/Dialogue/Wahn/Wahn_dialogue.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/Dialogue/Wahn/Wahn_dialogue.rpy)

Why `partial`:

- Brennan has an NPC entry in `Wahn_npcs.rpy`.
- Brennan's apartment locations are present in `Locations/Wahn/brennan.rpy`.
- Brennan dialogue appears extensive in `Wahn_dialogue.rpy`.
- The source file is large and state-heavy, with relationship, quest, wolf-interaction, and time-location logic that is not represented as one coherent Ren'Py content slice.

Main gap:

- The content exists, but the source include has not been ported as a clean, dedicated Brennan module with clearly mapped runtime state.

### `Brennan's Wolves` by Wahn

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Wahn\Brennan's Wolves.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/NPCs/Wahn/brennan_s_wolves.rpy`
- Related content exists in:
  [game/scripts/Content/NPCs/Wahn/Wahn_npcs.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/NPCs/Wahn/Wahn_npcs.rpy)
  [game/scripts/Content/Dialogue/Wahn/Wahn_dialogue.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/Dialogue/Wahn/Wahn_dialogue.rpy)

Why `partial`:

- `Romulus` and `Remus` are present as NPCs in `Wahn_npcs.rpy`.
- Brennan dialogue includes wolf companion references.
- The source include is focused and small, but the target split was not preserved.

Main gap:

- The dedicated file is absent.
- The source descriptions are skeletal placeholders (`"..."`) already, so parity here is more about structure and wiring than prose volume.

### `Lair Of The Lupines` by Gherod

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Gherod\Lair Of The Lupines.i7x`

Current Ren'Py state:

- Dedicated file exists:
  [game/scripts/Content/Locations/Gherod/lair_of_the_lupines.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/Locations/Gherod/lair_of_the_lupines.rpy)
- Related NPCs exist in:
  [game/scripts/Content/NPCs/Gherod/Gherod_npcs.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/NPCs/Gherod/Gherod_npcs.rpy)

What is present:

- Major room set exists:
  `Hidden Rock Cavern Entrance`
  `Rocky Dark Path`
  `Lair Of The Lupines Main Hub`
  `Pit`
  `Oubliette`
  `Feast Room`
  `Kitchen`
  `Common Room`
  `Bar`
- Related NPC names such as `Jett`, `Elstan`, `Rodion`, `Kirnon`, and `Wyatt` exist in the broad Gherod NPC file.

Why `partial` instead of `ported`:

- The source include has discovery and unlock behavior:
  `Find The Werewolves Den`
  discovery resolution
  nav-point addition
  post-import placement and connection logic
- The Ren'Py file looks like a mostly static room-definition pass and description pass.
- The source behavior around entering, unlocking, and connecting the den is not obviously represented.

Main gap:

- Structural location data is ported.
- Discovery/event/wiring behavior is not clearly ported.

### `Broken Husky Bad-End` by Luneth

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Luneth\Broken Husky Bad-End.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/Events/Luneth/broken_husky_bad_end.rpy`

Status:

- `missing`

### `Husky BadEnd` by Gherod

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Gherod\Husky BadEnd.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/Events/Gherod/husky_badend.rpy`

Status:

- `missing`

### `Latex Quad Husky` by Stripes

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Stripes\Latex Quad Husky.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/Events/Stripes/latex_quad_husky.rpy`

Status:

- `missing`

### `Latex Husky Statue` by Shiru

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\Shiru\Latex Husky Statue.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/Events/Shiru/latex_husky_statue.rpy`

Status:

- `missing`

### `Werewolf` by CrimsonAsh

Source:

- `C:\Users\dmssi\Documents\GitHub\Flexible-Survival\CrimsonAsh\Werewolf.i7x`

Current Ren'Py state:

- Missing expected target file:
  `game/scripts/Content/Events/CrimsonAsh/werewolf.rpy`
- Related event exists in:
  [game/scripts/Content/Events/CrimsonAsh/CrimsonAsh_events.rpy](/C:/Users/dmssi/Documents/GitHub/FlexibleShh/FS-Renpy/game/scripts/Content/Events/CrimsonAsh/CrimsonAsh_events.rpy)

Why `partial`:

- `WEREWOLF_SURPRISE_EVENT` exists in the broader CrimsonAsh events file.
- The source is a substantial standalone include with relationship/state logic and multi-branch scene content.
- The current Ren'Py event entry looks like a broad placeholder-level registration instead of a dedicated, source-shaped port.

## Recommended Order

If the goal is wolf NPCs and locations first, the next implementation order should be:

1. Normalize `Brennan` into a dedicated Wahn NPC/story slice.
2. Split `Brennan's Wolves` into its own target file and wire Romulus/Remus cleanly.
3. Finish the missing runtime wiring for `Lair Of The Lupines`.
4. Port the missing wolf-adjacent event files only after the NPC/location routes are stable.

## Practical Conclusion

There is no wolf NPC/location item in this set that is completely absent from Ren'Py except the dedicated source-target files themselves.
The real issue is that the Wahn and Gherod wolf content has mostly been broad-file ported, not source-slice ported.
That means the highest-value next step is a cleanup and consolidation pass, not starting from zero.
