# Room 89: Castle Kitchen

## Look Description

"You have discovered the castle's kitchen. Not a very pleasant kitchen, but a kitchen nonetheless. Against the back wall, two cabinets flank a cold stone fireplace. You see a long table under the one small window."

## Interactions

| Status | Behavior Type | Command | Response |
|--------|--------------|---------|----------|
| TODO | Look | `look[<around>][/!*]` / `look/room,castle,kitchen` | "You have discovered the castle's kitchen. Not a very pleasant kitchen, but a kitchen nonetheless. Against the back wall, two cabinets flank a cold stone fireplace. You see a long table under the one small window." (Print 89 0) |
| TODO | Look | `look[<in]/cabinet` | "[If near right cabinet with items: 'Here are all of your possessions!']" / "[If near right cabinet empty: 'The cabinet is empty.']" / "[If near left cabinet: 'The cabinet is full of dishes.']" (Print 89 1/2/3) |
| TODO | Look | `look/cabinet` | "You see two cabinets; one on each side of the stone fireplace." (Print 89 4) |
| TODO | Look | `look[<under]/table` | "There's nothing under the table." (Print 89 5) |
| TODO | Look | `look/table` | "Nothing on the table interests you." (Print 89 6) |
| TODO | Look | `look/fireplace` | "The fireplace is unlit and cold." (Print 89 7) |
| TODO | Look | `look/caldron` | "An empty iron pot sits in it." (Print 89 8) / "The iron pot in the fireplace is empty." (Print 89 9) |
| TODO | Look | `look/barrel` | "There is nothing of interest in the barrel." (Print 89 10) |
| TODO | Look | `look/wall` | "There is nothing of importance on the walls." (Print 89 11) |
| TODO | Look | `look/dirt` / `look[<down]` | "There is nothing of importance on the floor." (Print 89 12) |
| TODO | Look | `look/window` | "[If in rect 220-282, 124-146: 'You see the mountain out the window.']" / "[If not in rect: 'You're not close enough.']" (Print 89 13 / 800 1) |
| TODO | Look | `look/door` | "You see an open doorway before you." (Print 89 14) |
| TODO | Action | `open/barrel` | "There is nothing in the barrel." (Print 89 15) |
| TODO | Action | `open/window` | "The windows do not open." (Print 89 16) |
| TODO | Action | `open/cabinet,door` | "[If near right cabinet closed: Opens cabinet, shows items if present or 'The cabinet is empty.']" / "[If near right cabinet open: 'It appears open already.']" / "[If near left cabinet closed: Opens cabinet, shows 'The cabinet is full of dishes.']" / "[If near left cabinet open: 'It appears open already.']" / "[If not near any: 'You're not close enough.']" (Print 89 17/18/3/18/800 1) |
| TODO | Action | `close/cabinet,door` | "[If near right cabinet open: Closes cabinet]" / "[If near right cabinet closed: 'It already is closed.']" / "[If near left cabinet open: Closes cabinet]" / "[If near left cabinet closed: 'It already is closed.']" / "[If not near any: 'You're not close enough.']" (Print 89 19/800 1) |
| TODO | Action | `break/window` | "That would not accomplish anything." (Print 89 20) |
| TODO | Get | `get/caldron` | "You don't need it." (Print 89 21) |
| TODO | Get | `get/dish` | "[If left cabinet open: 'You have no need of dishes.']" / "[If left cabinet closed: 'The cabinet is closed.']" (Print 89 22/23) |
| TODO | Get | `get/all,possessions,inventory` | "[If no items in cabinet: 'The cabinet is empty.']" / "[If items but not near right cabinet: 'You're not close enough.']" / "[If items and near right cabinet: Collects all items from cabinet, awards 4 points, sets global182=1]" (Print 89 2/24/800 1) |

## Scripts

| Status | Behavior Type | Name | Trigger | Behavior |
|--------|--------------|------|---------|----------|
| TODO | Interaction | `rightCabinet` | Opening right cabinet (cel=0) | Stops updating after cabinet animation completes (state -1) |
| TODO | Interaction | `leftCabinet` | Opening left cabinet (cel=0) | Stops updating after cabinet animation completes (state -1) |

## Technical Notes

- **Room Number**: 89
- **Picture**: 89
- **Region**: 604 (Castle area)
- **Exits**: Room 91 (south edge detected with control $0040)
- **Music**: Unknown

### Objects

| Object | View | Loop | Description |
|--------|------|------|-------------|
| newProp | 606 | 0 | Right cabinet (animated) |
| newProp_2 | 606 | 1 | Left cabinet (animated) |
| newView | 606 | 2 | Right cabinet items view |
| newView_2 | 606 | 2 | Left cabinet dishes view |
| Static feature | 634 | 1 | Stone fireplace/back wall element |
| (Conditional) | 512 | 0 | Lit element (when global100 is set) |
| (Conditional) | 649 | 2 | Additional element (when global100 is set) |

### State Variables

| Variable | Values | Description |
|----------|--------|-------------|
| `local7` | `0`, `1` | Whether cabinet contains items (checked via `localproc_000c` which scans inventory for items owned by room 89) |
| `global182` | `0`, `1` | Whether player has collected items from cabinet (score awarded flag) |
| `global175` | Any | Reset to 0 on room entry from room 91 or initial game |
| `global100` | `0`, `1` | Controls conditional objects (possibly night/candle state) |

### Entry Points

- **From Room 91**: Player enters at position (38, 151) with view 4, xStep 4, yStep 2
- **Initial game (room 0)**: Same entry as from Room 91

### Inventory Items

- Room 89 can contain inventory items (checked by `localproc_000c` which iterates through inventory to find items with `owner? == 89`)
- When player gets all items: awards 4 points, sets `global182 = 1`
