Publishes the gig interface the whole round hangs off (A runs first). Everything is
behind ?gigs=1 as a POST-HOC augmentation (gigs.js withGigs, applied by the selector),
so generatePlan is untouched and all v2 goldens stay frozen (synthetic 0x3fa36874, osm
melbourne 0x34cfdec0, katoomba 0x0f652510). Source-agnostic (synthetic + osm).
- Venue: one 'pub' per town — a spine-end plain shop converted in place (keeps lot
id/geometry, enterable), shop.venue=true, never the openLate landmark. Registry gains
a weight-0 'pub' type (interior:'band_room' for Lane C) → never auto-placed → base
plan byte-identical.
- plan.gigs: 7 nightly {gigId,venueShopId,bandName,genreKey:'pubrock',night,startSeg:5,
endSeg:5,cover}; cover ~half free / half $2-$10 (F charges at the door).
- Band names: bandName(seed) generator (90s pub-rock) + OPTIONAL web/assets/custom_bands.json
drop-in (priority into the pool; absent → pure generator, no fetch under ?noassets).
- plan.posters: ~6 seeded {id,gigId,x,z,ry} for Lane B.
- Closing-time debt paid: isOpen(shopOrHours,hour) exported (half-open law as code, D consumes).
- map.html?gigs=1: venue ring + poster pins + gig panel line. Flags-off unchanged.
Self-check ALL GREEN 3074/3074 (gigSuite ×2 sources, flags-off≡base, gig golden
0xa6ae5a5e). qa.sh --strict GREEN 6/6. Verified in-browser both modes. CITY_SPEC v3
section + LANE_A_NOTES handshake for C/D/B/F. Atomic pathspec commit (shared-tree race).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
112 lines
6.0 KiB
JavaScript
112 lines
6.0 KiB
JavaScript
// PROCITY name wordlists — the flavour bank for names.js. Hand-authored 90s-Australian.
|
||
// Pure data, no logic. names.js fills pattern tokens ({Word}, {Suburb}, {Family}, …) from here.
|
||
// Optionally regenerated/expanded by a human via an Ollama pass (see A-progress.md); the game
|
||
// only ever reads this checked-in file — no network at runtime (CITY_SPEC law).
|
||
|
||
// Generic evocative single words (records, sound, exchange, rotation…)
|
||
export const WORDS = [
|
||
'Rotation', 'Groove', 'Vinyl', 'Static', 'Echo', 'Reverb', 'Feedback', 'Needle', 'Tempo',
|
||
'Fable', 'Relic', 'Trinket', 'Bower', 'Nook', 'Attic', 'Cellar', 'Emporium', 'Bazaar',
|
||
'Hodgepodge', 'Oddment', 'Sundry', 'Curio', 'Salvage', 'Remnant', 'Vestige', 'Memento',
|
||
'Wombat', 'Galah', 'Cockatoo', 'Magpie', 'Kookaburra', 'Brumby', 'Dingo', 'Bilby',
|
||
'Southern', 'Federal', 'Colonial', 'Paramount', 'Regal', 'Crown', 'Empire', 'Ambassador',
|
||
'Sunburnt', 'Redgum', 'Wattle', 'Banksia', 'Bottlebrush', 'Saltbush', 'Coolabah', 'Jacaranda',
|
||
];
|
||
|
||
// Adjectives (worn, faded, second-hand register)
|
||
export const ADJ = [
|
||
'Golden', 'Lucky', 'Little', 'Grand', 'Olde', 'Corner', 'Central', 'Wonky', 'Dusty', 'Trusty',
|
||
'Thrifty', 'Cut-Price', 'Bargain', 'Bonza', 'Fair Dinkum', 'True Blue', 'Reliable', 'Honest',
|
||
'Faded', 'Worn', 'Vintage', 'Retro', 'Rare', 'Groovy', 'Funky', 'Mellow', 'Cosmic', 'Electric',
|
||
];
|
||
|
||
// Nouns for shop bodies
|
||
export const NOUN = [
|
||
'Records', 'Sounds', 'Wax', 'Grooves', 'Discs', 'Tapes', 'Tunes', 'Beat', 'Rhythm', 'Vibe',
|
||
'Treasures', 'Treasure Trove', 'Finds', 'Bits', 'Bobs', 'Wares', 'Goods', 'Bygones', 'Antiques',
|
||
'Toys', 'Games', 'Playthings', 'Fun', 'Kids', 'Nippers', 'Marbles', 'Kites',
|
||
'Books', 'Reads', 'Pages', 'Volumes', 'Paperbacks', 'Stories', 'Print', 'Chapters',
|
||
'Video', 'Movies', 'Flicks', 'Rentals', 'Screen', 'Cinema', 'Picture Show',
|
||
'Cash', 'Loans', 'Exchange', 'Trading', 'Pawn', 'Deals', 'Swap', 'Barter',
|
||
];
|
||
|
||
// AU suburb / place flavour (fake-but-plausible)
|
||
export const SUBURB = [
|
||
'Thornbury', 'Coburg', 'Preston', 'Footscray', 'Marrickville', 'Newtown', 'Enmore', 'Brunswick',
|
||
'Fitzroy', 'Collingwood', 'Redfern', 'Balmain', 'Bexley', 'Ashfield', 'Petersham', 'Croydon',
|
||
'Woop Woop', 'Bullamakanka', 'Dubbo', 'Wagga', 'Bendigo', 'Ballarat', 'Geelong', 'Toowoomba',
|
||
'Moe', 'Sale', 'Yass', 'Cootamundra', 'Gundagai', 'Wangaratta', 'Warrnambool', 'Numurkah',
|
||
];
|
||
|
||
// Family / surname flavour (milkbars, family businesses)
|
||
export const FAMILY = [
|
||
'Papadopoulos', 'Nguyen', 'Kowalski', 'Ferrante', 'De Luca', 'Kotsiopoulos', 'Tran', 'Petrakis',
|
||
'Wong', 'Singh', 'Karam', 'Vella', 'Borg', 'Camilleri', 'Muscat', 'Zammit', 'Grech',
|
||
'Kelly', 'Ryan', 'Murphy', 'O’Brien', 'Doyle', 'Callaghan', 'Sullivan', 'Flanagan',
|
||
'Cracknell', 'Trundle', 'Bagshaw', 'Higgins', 'Prentice', 'Weatherall', 'Nabbs', 'Dorrigo',
|
||
];
|
||
|
||
// Saint / charity flavour (op shops parody Vinnies/Salvos/Anglicare)
|
||
export const SAINT = [
|
||
'Bevan', 'Cletus', 'Doreen', 'Enid', 'Fabian', 'Gladys', 'Hildegard', 'Ignatius', 'Merle',
|
||
'Norbert', 'Prudence', 'Quenby', 'Reginald', 'Sheila', 'Trevor', 'Ulrika', 'Verity', 'Wilfred',
|
||
];
|
||
|
||
export const CHARITY = [
|
||
'Vinnies-alike', 'Sallies', 'Op-Portunity', 'Second Chance', 'Anglibarn', 'Lifeboat',
|
||
'Good Sammy', 'The Smith Family Room', 'Diggers’ Aid', 'Bush Mission', 'Endeavour',
|
||
];
|
||
|
||
// First names for personalised shops ("Kev's", "Shazza's")
|
||
export const FIRSTNAME = [
|
||
'Kev', 'Shazza', 'Bazza', 'Dazza', 'Gazza', 'Robbo', 'Macca', 'Johnno', 'Stevo', 'Bluey',
|
||
'Dot', 'Merv', 'Val', 'Col', 'Nev', 'Beryl', 'Gaz', 'Snez', 'Franga', 'Tex',
|
||
];
|
||
|
||
// Animals (mascot names: The Laughing Magpie, etc.)
|
||
export const ANIMAL = [
|
||
'Magpie', 'Galah', 'Kookaburra', 'Wombat', 'Echidna', 'Possum', 'Rosella', 'Currawong',
|
||
'Cockatoo', 'Bilby', 'Quokka', 'Numbat', 'Bandicoot', 'Lorikeet', 'Kelpie', 'Blue Heeler',
|
||
];
|
||
|
||
// Town-name pieces (generatePlan names the town)
|
||
export const TOWN_PREFIX = [
|
||
'Mount', 'Port', 'Lake', 'Upper', 'Lower', 'North', 'South', 'Little', 'Old', 'New', 'Cape',
|
||
];
|
||
export const TOWN_ROOT = [
|
||
'Wilga', 'Barmah', 'Yackandandah', 'Wonthaggi', 'Corryong', 'Nhill', 'Woomelang', 'Beeac',
|
||
'Tarwin', 'Koonwarra', 'Meeniyan', 'Boolarra', 'Yinnar', 'Mirboo', 'Toora', 'Fish Creek',
|
||
'Dunkeld', 'Penshurst', 'Skipton', 'Rokewood', 'Cressy', 'Inverleigh', 'Bannockburn',
|
||
];
|
||
export const TOWN_SUFFIX = [
|
||
'Flat', 'Creek', 'Springs', 'Gully', 'Junction', 'Crossing', 'Downs', 'Vale', 'Heads',
|
||
'Plains', 'Ridge', 'Hollow', 'Bend', 'Reach', 'Wells', '', '', '', // blanks: bare root sometimes
|
||
];
|
||
|
||
// ── v3 gigs (?gigs=1): band names (90s Aussie pub-rock) + pub/venue names ────────────
|
||
// Band adjectives (feral, sunburnt, sweaty-front-bar register)
|
||
export const BAND_ADJ = [
|
||
'Feral', 'Screaming', 'Dead', 'Rusty', 'Filthy', 'Mangy', 'Sunburnt', 'Flannel', 'Amyl',
|
||
'Cosmic', 'Chunder', 'Drunken', 'Wild', 'Electric', 'Grinning', 'Roaring', 'Deadset',
|
||
'Salty', 'Dusty', 'Bitter', 'Feral', 'Howling', 'Molten', 'Ratbag', 'Bogan',
|
||
];
|
||
// Band nouns (plural — "The {Adj} {Noun}")
|
||
export const BAND_NOUN = [
|
||
'Galahs', 'Utes', 'Cheezels', 'Dropbears', 'Rissoles', 'Chisels', 'Larrikins', 'Dropkicks',
|
||
'Woodducks', 'Cockies', 'Servos', 'Sherbets', 'Ferals', 'Yobbos', 'Ratbags', 'Cane Toads',
|
||
'Redbacks', 'Blowflies', 'Mullets', 'Eskies', 'Goannas', 'Numbats', 'Longnecks', 'Bull Bars',
|
||
];
|
||
// Single-word band names (Regurgitator / Grinspoon / Spiderbait parody tier)
|
||
export const BAND_ONEWORD = [
|
||
'Chunderbolt', 'Boganvillea', 'Roadkill', 'Grommet', 'Feralcat', 'Backburn', 'Sunstroke',
|
||
'Bindii', 'Deadwood', 'Longneck', 'Dropkick', 'Bullbar', 'Stinger', 'Slabhead', 'Gutful',
|
||
'Chundermuffin', 'Wombatt', 'Screwtop', 'Goonsack', 'Ferntongue',
|
||
];
|
||
|
||
// Pub / hotel names — every AU country town has a Royal, a Commercial, a Terminus.
|
||
export const PUB_NAME = [
|
||
'The Royal', 'The Royal Hotel', 'The Commercial', 'The Terminus', 'The Railway Hotel',
|
||
'The Criterion', 'The Grand', 'The Exchange Hotel', 'The Federal', 'The Bridge Hotel',
|
||
'The Victoria', 'The Star Hotel', 'The Imperial', 'The Great Southern',
|
||
];
|