Back to Big Rig Rush
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.

src/game/lines.ts
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)];
}