SOURCE / PINNED RELEASE
Made of little things.
Big Rig Rush
- Release
- ec9b6549f752…
- Author-recorded commit
- 74b729258b1a…
- License
- LICENSE
- Author’s source reference
- nostr://npub1sj2vketepqw9v6fmge5fdzuj7atj9sv6qv2jss05n2z6rl64lcfqumdsnt/wss%3A%2F%2Fgit.napplet.soy%2F/n-0a99f0cae40
Archive hash verified: 900e22810340ccb1…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
import type { District } from './city.js';
export type LineKind = 'taunt' | 'cutoff' | 'brakecheck' | 'waiting' | 'wreck' | 'polite';
const GENERAL: Record<LineKind, string[]> = {
taunt: [
'NICE TRUCK. COMPENSATING?',
'MY GRANDMA DRIVES FASTER!',
'IS THAT A TRUCK OR A BUILDING?',
'HONK IF YOU LOVE BEING SLOW',
'BEEP BEEP, BIG BOY!',
'I SAW THAT WIDE TURN!',
'MIRRORS ARE NOT DECORATION!',
'CONVOY SONG IS NOT A PERSONALITY',
],
cutoff: [
'ZOOM ZOOM, LOSER!',
'SORRY NOT SORRY!',
'BLINKERS ARE FOR COWARDS',
'SHOULDA BEEN FASTER!',
"MY LANE NOW!",
'YOINK!',
'I HAVE A DENTIST APPOINTMENT!',
],
brakecheck: [
'BRAKE CHECK!',
'WHOOPS, SQUIRREL!',
'THOUGHT I SAW A PENNY',
'ENJOY MY BUMPER STICKER',
'NOT SO TOUGH NOW?',
'SAFETY FIRST! (MINE)',
],
waiting: [
"I'VE GOT PLACES TO BE!",
'MOVE YOUR BIG BOX!',
'ARE YOU PARKING OR MOVING IN?',
'SOMETIME TODAY, PLEASE!',
'MY ICE CREAM IS MELTING!',
],
wreck: [
'MY CAR!!',
'I JUST WASHED IT!',
'MY COFFEE!!',
"I'M CALLING MY MOM!",
'NOT THE LEASE!',
'I FEEL WHIPLASH! I THINK!',
'MY AIRBAG SMELLS LIKE NACHOS',
'THAT WAS MY FAVORITE DENT!',
],
polite: ['YIKES!', 'WHOA THERE, BIG FELLA', 'HONK?', 'UM, HELLO?', 'EXCUSE ME, SIR TRUCK'],
};
const FLAVOR: Partial<Record<District, Partial<Record<LineKind, string[]>>>> = {
downtown: {
taunt: ["I'M ON A CONFERENCE CALL!", 'TIME IS MONEY, TRUCK!', 'MY SURGE PRICING!', 'I HAVE A 9AM!'],
waiting: ['MY MEETING STARTED 5 MIN AGO!', 'CIRCLE BACK, MOVE THAT TRUCK!', 'MY RIDE RATING!'],
wreck: ["I'M EXPENSING THIS", 'MY STOCK PORTFOLIO!', 'TAXI! WAIT... I AM THE TAXI'],
},
uptown: {
taunt: ['DO YOU KNOW WHO I AM?', 'EW, A COMMERCIAL VEHICLE', 'THIS IS A GATED VIBE', 'PEASANT ON WHEELS!'],
cutoff: ['OLD MONEY GOES FIRST', 'MY HORSE IS FASTER', "DADDY'S CAR, DADDY'S RULES"],
brakecheck: ['MY LAWYER IS IN THE CAR', 'OOPS, MY CAVIAR SPILLED'],
wreck: ['MY LAWYER WILL HEAR OF THIS!', 'THAT WAS A LIMITED EDITION!', 'CALL MY BUTLER!', 'I HAVE SIX MORE. STILL RUDE.'],
waiting: ['I PAY TAXES FOR THIS ROAD!', 'THE COUNTRY CLUB AWAITS!'],
},
hood: {
taunt: ['THIS CAR IS 90% DUCT TAPE!', 'YO, WATCH THE PAINT! WHAT PAINT?', 'TRUCK GOT MORE WHEELS THAN SENSE'],
cutoff: ['NO INSURANCE, NO FEAR!', 'MY BRAKES ARE A SUGGESTION!'],
wreck: ['I JUST GOT THAT FIXED!', "THAT'S A DOOR I DIDN'T NEED", 'ANOTHER DENT, WHO EVEN COUNTS', 'MY CAR WAS ALREADY LIKE THAT'],
waiting: ['MY CHECK ENGINE LIGHT IS ON!', 'GAS IS EXPENSIVE, BRO!'],
},
highway: {
taunt: ['LEFT LANE IS FOR PASSING!', '95 IN A 65, BABY!', 'MERGE LIKE A ZIPPER!', 'I DRIVE FAST TO SAVE TIME'],
cutoff: ['EXIT? WHAT EXIT? THIS EXIT!', 'THREE LANES AT ONCE, WATCH!', 'SIGNALS ARE OPTIONAL!'],
wreck: ['MY ROAD TRIP!', 'THE KIDS ARE ASLEEP! WERE.', 'SNACKS EVERYWHERE!'],
},
};
export function pickLine(kind: LineKind, district: District): string {
const flavor = FLAVOR[district]?.[kind] ?? [];
const pool = flavor.length && Math.random() < 0.55 ? flavor : GENERAL[kind];
return pool[Math.floor(Math.random() * pool.length)];
}
