Files
kq4-decompile/rooms/kq4-005-forest-grove.md
2026-02-20 10:16:03 -08:00

82 lines
5.9 KiB
Markdown

# Room 5: Forest Grove
This is the exterior of the Dwarf Cottage, a creepy forest grove with ominous trees surrounding a large thatched-roof house. The room features multiple animated trees (views 690, 691) that act as a hazard - walking into certain areas triggers a "grabbed" sequence where the trees catch the player. There are also firefly/sparkle effects (view 689) adding atmosphere. The room connects to the cottage interior (room 11) and leads to other forest areas.
## Look Description
"This is a creepy place! You have found a grove of very odd, (and scary-looking), trees. A thick forest surrounds the grove."
## Interactions
| Status | Behavior Type | Command | Response |
|--------|--------------|---------|----------|
| TODO | Look | `look/room` / `look/around` / `look[<around]` | "This is a creepy place! You have found a grove of very odd, (and scary-looking), trees. A thick forest surrounds the grove." (Print 5 0) |
| TODO | Look | `look/cottage` | "You see the back of a large, thatched-roof house." (Print 5 1) |
| TODO | Look | `look/door` | "The door is at the front of the house." (Print 5 2) |
| TODO | Look | `look/window` (when in rect 0 130 32 138) | "You look through the window, but can make out no details." (Print 5 3) |
| TODO | Look | `look/window` (not close enough) | "You're not close enough." (Print 5 4) |
| TODO | Action | `break/window` | "That's vandalism!" (Print 5 5) |
| TODO | Action | `open/window` | "The windows do not open." (Print 5 6) |
| TODO | Look | `look/boulder` (region 509) | "The rocks are insignificant here." (Print 509 0) |
| TODO | Look | `look/dirt` (region 509) | "You see nothing of importance on the ground." (Print 509 1) |
| TODO | Look | `look/bush` (region 509) | "You don't see many shrubs here." (Print 509 2) |
| TODO | Look | `look/sky` / `look/up` (region 509, daytime) | "Despite this awful forest, the sky is quite nice and blue." (Print 509 3) |
| TODO | Look | `look/sky` / `look/up` (region 509, night) | "It's easy to see by the light of a full moon." (Print 509 4) |
| TODO | Look | `look/grass` (region 509) | "There is little grass here." (Print 509 5) |
| TODO | Look | `look/flora` (region 509) | "All you see are these awful trees!" (Print 509 6) |
| TODO | Look | `look/blossom` (region 509) | "There are not many flowers here." (Print 509 7) |
| TODO | Look | `look/forest` (region 509) | "These are vicious looking trees, aren't they? Best to stay clear of them!" (Print 509 8) |
| TODO | Look | `look/eye` (region 509) | "You'd swear that these trees were LOOKING at you...! But that's impossible." (Print 509 9) |
| TODO | Get | `get/blossom` (region 509) | "There are no flowers here!" (Print 509 10) |
| TODO | Action | `climb/boulder` (region 509) | "You don't like to climb rocks." (Print 509 11) |
| TODO | Action | `climb/forest` (region 509) | "You've GOT to be KIDDING!!" (Print 509 12) |
| TODO | Action | `kill/forest` (region 509) | "That would be impossible for you to do." (Print 509 13) |
| TODO | Action | `break/hit/chop/branch` (region 509, no axe) | "How would you go about doing that?" (Print 509 15) |
| TODO | Action | `break/hit/chop/branch` (region 509, has axe) | Triggers chop script - trees tremble, score +4, trees won't bother further |
| TODO | Action | `conceal/forest` (region 509) | "Go ahead, try it." (Print 509 16) |
| TODO | Talk | `converse` (region 509) | "These trees do not have the capability to talk." (Print 509 17) |
## Scripts
| Status | Behavior Type | Name | Trigger | Behavior |
|--------|--------------|------|---------|----------|
| TODO | Interaction | grabbed | Walking into control areas ($0040, $0020, $0010, $0004, $0400, $0200, $0002) when no room script running and global112 is false | Stops walking music, plays grab music, plays tree animation (one of 7 trees based on location), disposes ego, continues tree animation, displays random tree pun death message (1 of 6), waits 5 seconds, sets global127 to 1 |
| TODO | Background | tree1-tree7 | Continuous | Static tree props at various positions with stopUpd (not animated by default) |
| TODO | Background | sparkle1-sparkle2 | Continuous | Firefly/sparkle animations using view 689 with Fwd cycle |
## Technical Notes
- **Room Number**: 5
- **Picture**: 5
- **Region**: 509 (Forest Region)
- **Exits**: North→29, South→11, East→6, West→4
- **Music**: Walking music (sound 64), Grabbed music (sound 65)
### State Variables
| Variable | Values | Description |
|----------|--------|-------------|
| `global101` | `0` | Set to 0 on init (unknown purpose) |
| `global112` | `0`, `1` | Whether player has chopped down trees with axe |
| `global100` | `0`, `1` | Night time flag - if true, overlay 105 is shown |
| `global127` | `0`, `1` | Set to 1 when grabbed by trees (death/respawn trigger) |
| `local9` | `1-7` | Which tree prop to animate when grabbed |
| `local11` | `1-3` | Cel value for tree animation when grabbed |
### Additional Technical Details
- Synonyms: `branch` = `arm` (region 509)
- Trees use control area bitmasks to detect player position:
- $0040, $0020, $0010 - trigger tree animation cel 3 (local9 = 1-3)
- $0004, $0400, $0200 - trigger tree animation cel 1 (local9 = 4, 5, 7)
- $0002 - trigger tree animation cel 2 (local9 = 6)
- Entry from Room 4 (west): Position at x=1, y=120 or y unchanged if y > 135
- Entry from Room 6 (east): Position at x=318, y=133 or y unchanged if y >= 133
- Entry from Room 11 (south): Position at x=207, y=187 or x unchanged if x <= 207
- Entry from Room 29 (north): Position at x=x, y=horizon+yStep, clamp x to 258 if x > 272
- Entry from new game (0): Start at x=290, y=161
- Trees are static Props with ignoreActors, some at different priorities
- Firefly props use isExtra flag with cycling animations
- The grabbed script ends with global127=1 (likely triggers death/respawn)
- Tree pun death messages: "Wooden you know it!", "out on a limb", "torn limb from limb", "leaf this mortal world", "real sap", "discover your roots"