Files
gogobee/gogobee_housing_babysitter.md
prosolis 9e1a1f606c Adv 2.0 D&D layer: Phases 1-8 + Phase 9 SP1+SP2
Combines all uncommitted D&D work into one checkpoint:

Phases 1-8 (per gogobee_dnd_session_summary.md):
- Race/class/stats system, !setup flow, !sheet, !respec
- d20-vs-AC combat with race/class passives, auto-migration
- XP/level-up, skill checks, NPC refund hooks
- Equipment slot mapping, rarity, !rest short/long
- Pre-arm active abilities, resource pools
- Bestiary, !roll/!stats/!level, onboarding DM
- Audit fixes A-I, flavor wiring under internal/flavor/
- Phase 8 weapon dice + armor AC tables (gogobee_equipment_appendix)

Phase 9 SP1 — spell system foundations:
- 79 SpellDefinitions (76 in-scope + 3 reaction-deferred)
- dnd_known_spells, dnd_spell_slots tables
- pending_cast / concentration_* columns on dnd_character
- Slot tables for Mage/Cleric/Ranger, DC + attack-bonus math
- Long-rest refreshes slots; respec wipes spell state
- Auto-grant default known list on !setup confirm and auto-migration

Phase 9 SP2 — !cast / !spells / !prepare commands:
- Out-of-combat HEAL and UTILITY resolve immediately
- Damage/control/buff queue as pending_cast for next combat
- Audit-style save-then-debit, slot refund on save failure
- !cast --drop, concentration supersession, prep-cap enforcement
- Reaction spells refused with Phase 11 note

SP3 (combat-time resolution of pending_cast) and SP4 (full prep/learn
tests) are next. Build clean, full test suite green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 14:25:21 -07:00

19 KiB
Raw Blame History

GogoBee — Housing & Babysitter Systems

Companion to: gogobee_dnd_design_doc.md, gogobee_expedition_system.md Version: 1.0 Status: Housing — complete spec. Babysitter — design options (decision pending).


⚠️ Protected Files — DO NOT MODIFY

All existing *_flavor.go / *_flavor.txt files are off-limits. Housing and babysitter flavor goes in twinbee_housing_flavor.go — new file only.


Part One: Housing System


1. Overview

Housing gives players a persistent home base — a physical address in the GogoBee world that persists between expeditions, provides mechanical benefits, and represents long-term investment. It is the anchor of the non-expedition economy.

Housing integrates with:

  • Long rests (home = free long rest, always available)
  • Storage (inventory overflow, rare item safekeeping)
  • Crafting (certain recipes require a home workshop)
  • Passive income (upgraded properties generate coins over time)
  • Expedition prep (supply storage, base camp fast-travel anchor)
  • Pet housing (pets need somewhere to live when you're away)
  • Babysitter system (see Part Two)
  • Thom Krooke (mortgage holder, property broker)

2. Property Tiers

Players begin homeless and progress through tiers by purchasing or renting. Each tier unlocks new capabilities.

Tier Property Type Acquisition Base Cost Long Rest Storage Passive Income
0 Homeless Default Inn only (costs coins) None None
1 Rented Room !rent room 15 coins/week 10 slots None
2 Rented Apartment !rent apartment 40 coins/week 25 slots None
3 Purchased Cottage !buy cottage 800 coins (mortgage available) 50 slots 5 coins/day
4 Purchased House !buy house 2,500 coins (mortgage available) 100 slots 15 coins/day
5 Manor !buy manor 8,000 coins (mortgage available) 250 slots 40 coins/day
6 Estate !buy estate 25,000 coins (mortgage available) Unlimited 100 coins/day

2.1 Rent vs. Buy

Renting:

  • Weekly payment auto-deducted (Thom Krooke collects)
  • No equity, no passive income, no upgrade path
  • Miss two consecutive payments → eviction (Tier 0, possessions move to storage for 7 days)
  • No mortgage complexity; simple and accessible early game

Buying:

  • One-time purchase OR mortgage financing through Thom Krooke (see Section 4)
  • Owned property generates passive income
  • Upgradeable with rooms, amenities, workshop
  • Cannot be repossessed unless mortgage defaults (3 consecutive missed payments)

3. Property Upgrades

Owned properties (Tier 3+) can be upgraded with rooms and amenities. Upgrades are permanent and increase property value.

3.1 Upgrade Catalog

Upgrade Cost Prerequisite Benefit
Storage Expansion 200 coins Any owned +50 storage slots
Workshop 500 coins Cottage+ Unlocks home crafting (no Thom Krooke visit required)
Herb Garden 300 coins Cottage+ Passive: 1d4 common materials/day (zone-agnostic)
Forge 750 coins House+ Unlocks metal crafting at home; +1 to crafted weapon/armor quality
Library 600 coins House+ Passive: +1 INT for all INT skill checks while at home
Training Grounds 800 coins House+ Short rest restores +1d6 additional HP
Guest Room 400 coins House+ Future: NPC visitors; Babysitter eligible housing (see Part Two)
Vault 1,000 coins Manor+ Secure storage: items here cannot be lost on death
Trophy Room 500 coins Manor+ Display legendary items; passive +5% XP gain
Expedition Outpost 1,200 coins Manor+ Base Camp fast-travel cost reduced; supply storage for active expeditions
Greenhouse 900 coins Estate Passive: 1d6 uncommon materials/day (zone-agnostic)
Scriptorium 1,500 coins Estate Passive: crafting recipe discovery without !lore checks

3.2 Property Value

Each upgrade adds to the property's assessed value, which affects:

  • Passive income calculation (higher value = more income)
  • Mortgage refinancing options
  • Future resale (sell at 70% of current assessed value)

4. Mortgage System

The mortgage system is GogoBee's primary long-term financial mechanic, pegged to real-world ARM rates via the FRED API.

4.1 Mortgage Structure

When a player takes a mortgage via !buy <property> --mortgage:

  1. Down payment: 20% of property cost paid upfront
  2. Principal: Remaining 80% financed by Thom Krooke
  3. Interest rate: Current FRED ARM rate + 2% (Thom Krooke's margin)
  4. Term: 30 in-game weeks (real-time weeks)
  5. Payment frequency: Weekly, auto-deducted Sunday at reset

Example at current ARM rate (~6.5% + 2% = 8.5%):

Cottage: 800 coins
Down payment: 160 coins
Principal: 640 coins
Weekly payment: ~25 coins/week for 30 weeks
Total paid: ~750 coins (principal + interest)

4.2 ARM Rate Integration

The FRED API is queried weekly (Sunday reset) to fetch the current 5/1 ARM rate.
Rate updates are announced by Thom Krooke via Matrix message to the TwinBee room.

// FREDRateConfig holds the FRED API configuration for ARM rate fetching.
type FREDRateConfig struct {
    SeriesID    string  `json:"series_id"`    // "MORTGAGE5US"
    MarginPct   float32 `json:"margin_pct"`   // Thom Krooke's margin (2.0)
    LastFetched time.Time `json:"last_fetched"`
    CurrentRate float32 `json:"current_rate"` // base rate from FRED
    EffectiveRate float32 `json:"effective_rate"` // base + margin
}

4.3 Mortgage Events

Event Trigger Consequence
Rate increase >0.5% FRED weekly update Thom Krooke announces; payment adjusts next week
Rate decrease >0.5% FRED weekly update Thom Krooke announces; payment adjusts next week
Missed payment Insufficient coins on Sunday Warning from Thom Krooke; 10% penalty added
Two missed payments Second consecutive miss Thom Krooke visits in person (flavor event); 20% penalty cumulative
Three missed payments Third consecutive miss Default: property seized; equity returned at 50%
Early payoff !mortgage payoff No penalty; Thom Krooke is genuinely pleased
Refinance !mortgage refi Reset term at current rate; available once per 10 weeks

4.4 Thom Krooke Rate Announcements

Thom Krooke posts to the TwinBee Matrix room weekly with the rate update. These are in Thom's voice (Tom Nook parody) and contain the actual FRED rate:

"Good news, friends! The ARM rate this week sits at 7.2% — and with my modest service margin, your mortgage rate is 9.2%. As always, I am here to help. Payments process Sunday. Thank you!"

"The rate has moved up a bit this week — 8.1%, so 10.1% with my fee. Nothing to worry about! Think of it as an investment in your future. Thom Krooke is always here. Always."

4.5 Go Data Model — Mortgage

type Mortgage struct {
    ID              string    `json:"id"`
    PlayerID        string    `json:"player_id"`
    PropertyID      string    `json:"property_id"`
    Principal       int       `json:"principal"`
    Remaining       int       `json:"remaining"`
    DownPayment     int       `json:"down_payment"`
    WeeklyPayment   int       `json:"weekly_payment"`
    InterestRate    float32   `json:"interest_rate"`
    TermWeeks       int       `json:"term_weeks"`
    WeeksRemaining  int       `json:"weeks_remaining"`
    MissedPayments  int       `json:"missed_payments"`
    TotalPaid       int       `json:"total_paid"`
    StartedAt       time.Time `json:"started_at"`
    PaidOffAt       *time.Time `json:"paid_off_at"`
    Defaulted       bool      `json:"defaulted"`
}

5. Property State & Commands

5.1 Player Property Record

type PlayerProperty struct {
    PlayerID        string    `json:"player_id"`
    PropertyID      string    `json:"property_id"`
    Tier            int       `json:"tier"`
    Type            string    `json:"type"`        // rented, owned
    Name            string    `json:"name"`        // player-named
    Upgrades        []string  `json:"upgrades"`    // upgrade IDs
    AssessedValue   int       `json:"assessed_value"`
    PassiveIncome   int       `json:"passive_income"` // coins/day
    StorageCapacity int       `json:"storage_capacity"`
    StorageUsed     int       `json:"storage_used"`
    MortgageID      *string   `json:"mortgage_id"`
    AcquiredAt      time.Time `json:"acquired_at"`
    LastRentPaid    *time.Time `json:"last_rent_paid"`
}

5.2 Housing Commands

Command Description
!home Summary of current property, upgrades, and status
!home name <name> Name your property
!rent room / !rent apartment Rent at current tier
!buy <cottage/house/manor/estate> Purchase outright
!buy <property> --mortgage Purchase with Thom Krooke financing
!upgrade <type> Purchase a property upgrade
!mortgage status Current mortgage balance, rate, payments remaining
!mortgage payoff Pay off remaining mortgage balance
!mortgage refi Refinance at current FRED rate
!storage View storage inventory
!storage deposit <item> Store item at home
!storage withdraw <item> Retrieve item from home storage
!sell property Sell at 70% assessed value (must own outright)
!passive income Check daily passive income and last payout

6. Housing × Expedition Integration

6.1 Long Rest at Home

Owning or renting any property provides free long rests via !rest long with no inn cost and no cooldown — home is always available.

The Expedition Outpost upgrade extends this: the outpost links to your active Base Camp in a Tier 45 zone, allowing one fast-travel per expedition back to base camp from home (and return) without consuming a full travel day.

6.2 Supply Storage

Players with owned properties (Tier 3+) can pre-stage expedition supplies at home:

  • !storage deposit supplies <N> — store SU at home
  • Supplies stored at home are available for !expedition start without visiting Thom Krooke
  • Maximum staged supply = 2× the property's base storage tier
  • Herb Garden and Greenhouse upgrades contribute passive SU daily

6.3 Passive Income Collection

Passive income accrues daily at reset. Collected automatically into the player's coin balance. Thom Krooke sends a brief weekly summary:

"Good morning! Your property generated 105 coins this week. Minus your mortgage payment of 25 coins — a net gain of 80. Wonderful, yes?"



Part Two: Babysitter System — Design Options


7. What Is Known

The Babysitter system exists in the GogoBee design. Its purpose is not yet fully defined. The following is known:

  • It is a named system — "Babysitter" is intentional, not a placeholder
  • It relates to what happens while the player is away (on expedition, offline, or otherwise occupied)
  • It likely connects to housing (something to watch over)
  • It possibly connects to pets (something to care for)
  • It is separate enough from the housing system to warrant its own name

The following are design options — mutually exclusive directions. One should be chosen before implementation begins.


8. Design Option A — The Offline Caretaker

Concept: The Babysitter is an NPC hired to manage the player's property and pets while they are on expedition or offline. A literal babysitter for your home.

Mechanics:

  • Hired via !hire babysitter at a daily coin cost
  • While active, the Babysitter:
    • Feeds and cares for pets (prevents pet happiness decay, if that mechanic exists)
    • Collects passive income from property upgrades (without the Babysitter, income queues but doesn't process)
    • Waters the Herb Garden / Greenhouse (without care, passive material yield halves after 3 days)
    • Accepts deliveries from Thom Krooke (supply orders placed before expedition are ready on return)
  • Babysitter has a competence level (15) that affects reliability:
    • Level 1: Occasionally forgets things (20% chance of missed task per day)
    • Level 3: Reliable (5% miss chance)
    • Level 5: Perfect (0% miss chance; also occasionally leaves a small gift)
  • Babysitter levels up with continued employment (XP from days worked)
  • A level 5 Babysitter is a relationship worth maintaining

Cost:

Babysitter Level Daily Cost
1 3 coins/day
2 6 coins/day
3 10 coins/day
4 15 coins/day
5 22 coins/day

Flavor: The Babysitter is a named NPC (name TBD) with a personality. They leave notes. TwinBee reads the notes aloud on expedition return. The notes are the flavor text.


9. Design Option B — The Passive Expedition Support

Concept: The Babysitter is an active support role during expeditions — a companion back at Base Camp or home who provides passive benefits to the expedition in progress.

Mechanics:

  • Activated via !babysitter deploy at expedition start (costs coins per day of expedition)
  • While deployed, the Babysitter:
    • Reduces supply burn by 10% (they're handling logistics from the rear)
    • Once per expedition, can deliver a supply drop to the player's Base Camp (costs coins + 1 expedition day)
    • Manages the Threat Clock passively (-1 per day via "covering your tracks" at home base)
    • Sends morning intel: +1 to first Perception/Investigation check of each expedition day
  • Babysitter cannot enter combat zones — support only
  • Deactivates if player is forced to extract (they come to get you)

Cost: 8 coins/day of expedition, prepaid at start.

Flavor: The Babysitter communicates via Matrix messages — brief field reports in the morning, encouraging notes in the evening, occasional observations that are either useful or cryptic depending on TwinBee's mood.


10. Design Option C — The Passive Skill Trainer

Concept: The Babysitter is a trainer the player hires to develop skills while they are doing other things — offline training.

Mechanics:

  • Hired to train a specific skill or stat for a real-time duration
  • While training:
    • The targeted skill/stat gains slow XP passively (cannot exceed 50% of the next threshold via training alone)
    • Training costs coins per hour of real time
    • Player does not need to be online
  • Training is interrupted if the player uses the relevant skill in an expedition (expedition XP takes over)
  • Maximum one trainer active at a time
  • Training has a cap: cannot use training to level up — only to approach the threshold faster

Cost: 210 coins/hour depending on stat trained (CHA most expensive; STR cheapest).

Flavor: The trainer has opinions. If you ignore their training by going on expedition, they note it. If you complete a session they trained you for and perform well, they take appropriate credit.


11. Design Option D — The Community Role

Concept: The Babysitter is a community-facing role — a player (or designated bot persona) who watches over the TwinBee Matrix room while a player is on expedition, acting as a liaison.

Mechanics:

  • One Babysitter role active per expedition (could be another player or an NPC fill-in)
  • Babysitter player can:
    • Check on the expedition player's status via !babysit status <player>
    • Send one item or supply cache to an active expedition (costs the Babysitter coins)
    • Vote to activate a community Boost (community milestone modifier to TwinBee mood)
  • In return, the Babysitter earns a commission from the expedition's loot (5% of coin value on completion)
  • If no player accepts the Babysitter role, an NPC fills it at reduced effectiveness

Flavor: This makes expeditions a community event rather than solo. The Matrix room has a stake in the expedition's outcome. TwinBee acknowledges the Babysitter in morning briefings.


12. Design Decision: Option A — The Offline Caretaker

Selected. The Babysitter is an NPC hired to manage the player's property and pets while they are on expedition or offline.


13. Babysitter NPC — Pastel

Name: Pastel Source: Recurring support character from the TwinBee series (Konami). In the games, Pastel is the capable, warm-hearted civilian presence while the TwinBee ships are out fighting. In GogoBee, she's the person keeping everything together while you're in the dungeon.

Personality: Warm, slightly tired, completely reliable. Pastel has seen players return from bad expeditions and good ones and treats both the same — with a note on the table and everything in order. She is not impressed by legendary loot. She is genuinely pleased when the pets are happy. She does not complain. She notices everything.

Voice: Domestic, understated, occasionally dry. Contrasts directly with Thom Krooke's relentless salesmanship and TwinBee's dramatic narration. Pastel's register is: this is what I did today, everything is fine, the cat knocked something over.

Level progression:

  • Level 1: Enthusiastic but scattered. Means well. 20% chance of missed task per day.
  • Level 2: Getting the hang of it. 12% miss chance. Notes are more organized.
  • Level 3: Found her rhythm. 5% miss chance. Reliable, efficient, minimal fuss.
  • Level 4: Anticipatory. 1% miss chance. Occasionally handles things before they become problems.
  • Level 5: Perfect. 0% miss chance. Sometimes leaves a small gift. The right gift.
type BabysitterNPC struct {
    ID          string    `json:"id"`
    Name        string    `json:"name"`       // "Pastel"
    Level       int       `json:"level"`      // 15
    FlavorRef   string    `json:"flavor_ref"` // "pastel"
    HiredByID   string    `json:"hired_by_id"`
    HiredAt     time.Time `json:"hired_at"`
    DailyRate   int       `json:"daily_rate"`
    DaysWorked  int       `json:"days_worked"`
    XP          int       `json:"xp"`         // levels up with days worked
    MissChance  float32   `json:"miss_chance"` // 0.20→0.12→0.05→0.01→0.00
}

14. Implementation Phases — Housing

Phase H1 — Core Housing

  • PlayerProperty struct and DB schema
  • Tier 02 (homeless, rented room, rented apartment)
  • Rent payment auto-deduction (weekly)
  • Eviction system
  • !home, !rent commands
  • Free long rest at rented/owned property

Phase H2 — Ownership & Mortgage

  • Tier 36 (cottage through estate)
  • Mortgage struct and DB schema
  • FRED API ARM rate integration (weekly fetch)
  • !buy, !mortgage status, !mortgage payoff, !mortgage refi commands
  • Thom Krooke rate announcement posts
  • Missed payment and default handling

Phase H3 — Upgrades & Passive Systems

  • Upgrade catalog implementation
  • Passive income daily accrual
  • Storage system (!storage commands)
  • Herb Garden / Greenhouse passive material yield
  • Workshop and Forge crafting unlock

Phase H4 — Expedition Integration

  • Supply staging at home
  • Expedition Outpost fast-travel link
  • Vault (death-proof storage)
  • Trophy Room XP bonus

Phase H5 — Babysitter (post-design decision)

  • Implement chosen option
  • Babysitter NPC creation (name, personality, flavor text)
  • twinbee_housing_flavor.go population

End of Housing & Babysitter Document. Babysitter direction requires human decision before Phase H5 implementation. Reference alongside all companion docs in Claude Code sessions.