# Room 7: Fisherman's Shack

This room is the fisherman's shack area on the coastline. It features a weather-beaten cottage with a pier extending out into the ocean. The player can interact with the fisherman NPC, enter the cottage through a door, and walk on various terrain types (shore, pier, water edge). The room includes several animated wave effects and a fisherman who arrives via the pier at specific times.

## Look Description

"A poor fisherman's shanty adorns this part of the coastline. A pier stretches, from the house, out into the ocean to the west. You see a pretty meadowland off to the east."

## Interactions

| Status | Behavior Type | Command | Response |
|--------|--------------|---------|----------|
| TODO | Look | `look/room` `look/around` `look[<around]` | "A poor fisherman's shanty adorns this part of the coastline. A pier stretches, from the house, out into the ocean to the west. You see a pretty meadowland off to the east." (Print 7 10) |
| TODO | Look | `look/anchor` | "An old, rusted anchor leans against the wall of the house." (Print 7 11) |
| TODO | Look | `look/cottage` `look/shack` | "The fisherman's shack looks badly in need of repair, as the sun, wind, and salt spray have taken their toll. From the house, an old pier leads out into the ocean." (Print 7 12) |
| TODO | Look | `look[<under]/dock` `look[<under]/pier` | "There is only ocean under the old pier." (Print 7 13) |
| TODO | Look | `look/door` | "This is a plain wooden door." (Print 7 14) |
| TODO | Look | `look/window` (when in position to see through) | "You peek through the window, but can make out no details." (Print 7 15) |
| TODO | Look | `look/window` (when not in position) | "(Print 800 1) - Default response |
| TODO | Look | `look/dock` `look/pier` | "The old, worn pier juts out into the ocean from the weather-beaten house." (Print 7 16) |
| TODO | Look | `look/fisherman` (when `global116 = 2`) | "You see a grizzled old fisherman on the pier. Apparently, he isn't having any luck today." (Print 7 17) |
| TODO | Look | `look/fisherman` (when not `global116 = 2`) | "You don't see one here." (Print 7 3) |
| TODO | Look | `look/grass` | "A pretty meadow leads eastward from here." (Print 7 18) |
| TODO | Get | `get/fisherman` (when `global116 = 2`) | "You couldn't get the fisherman." (Print 7 0) |
| TODO | Get | `get/fisherman` (when not `global116 = 2`) | "What fisherman?" (Print 7 1) |
| TODO | Get | `get/pole` (when fisherman present) | "It's his, Rosella!" (Print 7 2) |
| TODO | Get | `get/pole` (when fisherman not present) | "You don't see one here." (Print 7 3) |
| TODO | Get | `rob/pole` (when fisherman present) | "You're not a thief, Rosella!" (Print 7 4) |
| TODO | Get | `rob/pole` (when fisherman not present) | "You don't see one here." (Print 7 3) |
| TODO | Get | `get/anchor` | "It's too heavy for you to move." (Print 7 19) |
| TODO | Action | `kiss` (when `global116 = 2`) | "You think, for a moment, that it might help, but then change your mind." (Print 7 5) |
| TODO | Action | `kiss` (when not `global116 = 2`) | "Who?" (Print 7 6) |
| TODO | Action | `break/window` | "That's vandalism!" (Print 7 20) |
| TODO | Action | `break/door` | "You could never do that." (Print 7 21) |
| TODO | Action | `open/window` | "The windows do not open." (Print 7 22) |
| TODO | Action | `close/door` | "The door is already closed." (Print 7 23) |
| TODO | Action | `unlatch/door` (when `global100 = 0`) | "The door is already unlocked." (Print 7 25) |
| TODO | Action | `unlatch/door` (when `global100 = 1`) | "You can't. It's locked and you don't have the key." (Print 7 26) |
| TODO | Action | `bang/door` (when at door and `global100 = 0`) | "You knock loudly on the shanty door. A woman's voice answers, 'Jest come on in!'" (Print 7 27) |
| TODO | Action | `bang/door` (when at door and `global100 = 1`) | "You knock loudly on the shanty door. From inside, a man's voice calls out, 'D'ya know what TIME it is?! GO AWAY!!'" (Print 7 28) |
| TODO | Action | `bang/door` (when not at door) | "(Print 800 1) - Default response |
| TODO | Action | `open/door` (when door already open) | "Try waiting until it closes." (Print 7 29) |
| TODO | Action | `open/door` (when at door and `global100 = 0`) | Opens door, plays door sound, transitions to room 42 |
| TODO | Action | `open/door` (when at door and `global100 = 1`) | "You can't. It's locked and you don't have the key." (Print 7 26) |
| TODO | Action | `open/door` (when not at door) | "(Print 800 1) - Default response |
| TODO | Talk | `talk/fisherman` `converse/fisherman` (when `global116 = 2`) | "You say a few words to the old fisherman. However, he must have other things on his mind as he seems to ignore you." (Print 7 24) |
| TODO | Talk | `talk/fisherman` (when not `global116 = 2`) | "What fisherman?" (Print 7 1) |
| TODO | Inventory | `deliver` (when `global116 = 2`) | "The fisherman ignores you." (Print 7 7) |
| TODO | Inventory | `deliver` (when not `global116 = 2`) | "To whom?" (Print 7 8) |
| TODO | Action | `help/fisherman` | "How can you do that, Rosella?" (Print 7 9) |

## Scripts

| Status | Behavior Type | Name | Trigger | Behavior |
|--------|--------------|------|---------|----------|
| TODO | Background | water | Continuous | Detects terrain under player and switches view accordingly: control 1=shore (view 2), 2048=shallow (view 5), 512=more shallow (view 6), 8=more shallow (view 7), 2=water (view 8 - swimming). Sets global105 based on terrain type. |
| TODO | Interaction | fallSouth | Player heading south in waterfall area (control $0010) | Plays fall sound, switches to view 17, animates falling south, then returns to swimming view |
| TODO | Interaction | fallNorth | Player heading north in waterfall area (control $0004) | Plays fall sound, switches to view 17, animates falling north, then returns to swimming view |
| TODO | Interaction | fallRocks | Heading toward rocks in shore area (control $1000, global105=0) | Player trips on rocks, plays fall sound, shows dizzy animation (view 18) for 5 seconds |
| TODO | Interaction | fishWalkHouse | Fisherman NPC arrives (global116=2, time < 40 seconds since last) | Fisherman walks from pier position into cottage. Opens door, enters, closes door. Sets global116 to 3 after entering. |
| TODO | Background | waveActions | Room initialization | Animates three wave props (wave1, wave2, wave3) in sequence - cycles each wave cel then hides it |
| TODO | Background | Prop (view 625) | Room initialization | Animated cloud/sky prop at x:200 y:19 with forward cycling |

## Technical Notes

- **Room Number**: 7
- **Picture**: 7
- **Region**: 503, 504 (setRegions)
- **Exits**: north → 1, south → 13, east → 8, west → 95
- **Horizon**: 86
- **Music**: Sound 80 (dizzy), Sound 51 (fall), Sound 300 (door)

### State Variables

| Variable | Values | Description |
|----------|--------|-------------|
| `global100` | 0, 1 | Unknown - controls door lock state (0=unlocked, 1=locked) |
| `global101` | 0 | Unknown - set to 0 on room init |
| `global105` | 0, 1, 2, 3, 4 | Terrain type state (0=shore, 1=shallow, 2=more shallow, 3=shallowest, 4=swimming) |
| `global107` | 0, 9 | Water/underwater state - 9 when in waterfall area |
| `global116` | 0, 2, 3 | Fisherman state - 2=present on pier, 3=entered cottage, 0=not present |
| `global160` | varies | Hour from system time (used for fisherman arrival) |
| `global159` | varies | Minute from system time |
| `global158` | varies | Second from system time |
| `global199` | varies | Hour when fisherman last state change |
| `global197` | varies | Minute when fisherman last state change |
| `global198` | varies | Second when fisherman last state change |
| `local0` | varies | Previous onControl state for water script |
| `local1` | varies | Current onControl state for water script |
| `local12` | varies | Time elapsed since fisherman state change (in seconds) |
| `local13` | varies | Fisherman X position based on time elapsed |

### Special Mechanics

- **Terrain-Based View Switching**: The `water` viewer script monitors control areas under the player and switches the ego view to match terrain (shore, shallow water, swimming).
- **Waterfall Areas**: Control areas $0010 (south waterfall) and $0004 (north waterfall) trigger falling animations when global107=9.
- **Rock Tripping**: Control area $1000 (rocks) triggers the fallRocks script when player is in shore mode (global105=0).
- **Fisherman NPC**: Appears based on system time. If time since last appearance < 40 seconds, fisherman walks from pier into cottage. Arrival position depends on elapsed time (40s→x:40, 12-20s→x:120, >20s→x:166).
- **Door Interaction**: Can only open door when in position (rect 204-233, 129-148) and when global100=0 (unlocked). Opening door transitions to room 42.
- **Entry Positions**: Various positioning based on previous room and global105 (terrain state).
- **Window Peeking**: Can only look through window when in specific position rects near the cottage.
- **Synonyms**: fisherman = man (for NPC reference)

### Props

- **wave1, wave2, wave3**: Animated ocean waves at different positions
- **newProp, newProp_2, newProp_3**: Additional animated water effects
- **newProp_4**: Animated sky/cloud element
- **door**: Cottage door with open/close animation
- **fisherCage**: Collision detection area for fisherman NPC
