Master Formula
Every single hit evaluates this formula, in this exact order:
rawPoints = MIN_PAYOUT + (costMax โ MIN_PAYOUT) ร xMult ร zMult ร powerMult
basePoints = max(MIN_PAYOUT, round(rawPoints ร comboMult))
points = max(MIN_PAYOUT, round(basePoints ร backMult ร streakMult ร damageMult))
MIN_PAYOUT is $200 - any hit pays at least this, even a pure edge graze. The floor is applied twice: once after combo, once after all remaining multipliers. Multipliers stack multiplicatively in the order shown. Wall bounces are NOT in this formula - they apply retroactively to the throw subtotal, see "Wall Bounce" below.
Vehicle Repair-Cost Table (costMax)
| Vehicle | Class | Max $ |
| Porsche 911 | Sports | $5,000 |
| BMW M3 E30 | Sports | $4,500 |
| Mazda RX-7 | Sports | $4,000 |
| Chevy Corvette | Sports | $4,000 |
| Audi RS5 | Sports | $4,000 |
| Crown Vic | Sedan | $3,500 |
| Chevelle SS | Sedan | $3,500 |
| Hummer EV | Truck | $3,500 |
| Cybertruck | Truck | $3,500 |
| School Bus | Truck | $3,000 |
| Jeep Wrangler | SUV | $2,500 |
| Grand Marquis | Sedan | $2,000 |
| VW Golf GTI | Sedan | $2,000 |
| VW Bus | SUV | $2,000 |
| City Bus | Truck | $2,000 |
| RV | Truck | $2,000 |
| Saia Semi | Truck | $2,000 |
| Mercury | SUV | $1,500 |
| Ford F-150 | Truck | $1,500 |
| 70s Pickup | Truck | $1,500 |
| Bounder (RV) | Truck | $2,000 (fallback) |
Unknown vehicles fall back by class: sports $4,000 ยท sedan $2,500 ยท suv $2,000 ยท truck $2,000.
Hit Position - xMult, zMult
xRatio = |rock.x โ car.x| / (car.width / 2) โ 0 center, 1 edge
zRatio = (rock.z โ car.z) / (car.length / 2) โ -1 front, +1 rear
yRatio = (rock.y โ car.y) / car.height
xMult = 1 โ xRatio [1.0 center โ 0.0 edge]
zMult = 1.0 โ zRatio ร 0.3 [1.3 front โ 1.0 center โ 0.7 rear]
Dead-center hood hits score the full repair cost. Edge grazes collapse toward $0 (clamped by MIN_PAYOUT). Front bumpers pay 30% more than rears.
Panel Zones (yRatio + zRatio)
| Panel | Trigger |
| Bumper | zRatio < โ0.3 |
| Hood | zRatio < 0.15 AND yRatio < 0.6 |
| Windshield | zRatio < 0.45 AND yRatio > 0.4 |
| Roof | zRatio < 0.7 |
| Trunk | otherwise |
The panel label is only for the hit log readout - the dollar math uses xMult/zMult directly, not the named panel.
Power Multiplier
powerMult = 1 + power ร 2 where power โ [0, 1]
power 0.0
Feather drop โ 1.0ร
power 0.5
Mid-meter โ 2.0ร
power 1.0
Max-charge โ 3.0ร
Combo Multiplier (per-throw)
comboMult = carHits [1st car = 1ร, 2nd = 2ร, 3rd = 3ร, โฆ no cap]
One rock, multiple cars. Each successive car on the same projectile multiplies the hit's damage by its position in the chain. A single rock hitting 5 cars stacks 5ร, 4ร, 3ร, 2ร, 1ร on the respective hits.
Streak Multiplier (cross-throw)
| Tier | Consecutive hit-throws | Multiplier |
| None | 0โ1 | 1ร |
| ๐ฅ HOT STREAK | 2โ4 | 2ร |
| โก SUPER STREAK | 5โ9 | 5ร |
| ๐ฅ MEGA STREAK | 10+ | 10ร |
A "hit-throw" is any throw that scored at least one car hit. A miss (rock lands without connecting) resets the streak tier to 0. Reaching MEGA also grants a one-shot Triple Toss charge - your next throw fires three rocks in a tight 2.5ยฐ fan, all landing on-road for easy combo coverage.
Backwards Hit 5ร
backMult = 5 if (carHits โฅ 2 AND velocity.z > 2 AND !_backwardsUsed)
After hitting a car, the rock deflects. If it has positive Z velocity (moving back toward the camera) when it hits the next car, that hit scores 5ร. Only one backwards hit per rock. Counts toward the backwards-trio time bonus (see below).
Wall Bounce Multiplier (retroactive doubling)
label = wallBounceCount + 1 [1st = 2X, 2nd = 3X, 3rd = 4X, ...]
bonus = throwSubtotal [the entire current throw is doubled]
new throwSubtotal = throwSubtotal ร 2 [compounds across multiple walls]
Side barriers of the highway bounce a rock back into traffic. Every wall hit doubles the entire current throw subtotal, retroactively. If you'd already earned $1,000 on this throw, hitting the wall makes it $2,000. Hit the wall again later on the same throw and it doubles to $4,000. Three walls = ร8 from base, four walls = ร16, etc.
The popup label increments (2X, 3X, 4X...) so you can see which bounce you're on, but the underlying math is always "double the current subtotal." Cars hit between walls are NOT individually multiplied - they go in at face value and get caught up by the next wall hit's retroactive doubling.
A 200ms grace window between bounces filters out rapid double-counts when a single physical wall hit produces 2+ collision frames.
Per-Projectile Damage Multiplier
| Projectile | damageMult | bounceMult | throwSpeedMult | gravityMult | windMult |
| ๐ชจ Rock | 1.00 | 1.00 | 1.00 | 1.00 | 0.50 |
| โณ Golf Ball | 0.65 | 1.60 | 1.15 | 1.40 | 1.00 |
| ๐ณ Bowling Pin | 1.00 | 0.90 | 0.95 | 0.90 | 0.70 |
Golf balls do 65% of a rock's damage but bounce 60% harder, fly 15% faster, and fall 40% quicker (heavier effective gravity = snappier cadence). They're also blown around by wind twice as much. Rocks win on raw damage; golf balls win on combo depth and unpredictable ricochets.
Bowling pins match rocks for damage but fly a hair slower and float longer (0.9ร gravity) so you can watch them tumble end-over-end. They excel at mowing laterally through a row of cars: each pin hit becomes the next car's combo multiplier, and pins keep their momentum after impact - a well-placed throw can pick up 10+ cars in one go. Wall bounces are brutal with pins since the multiplier stacks (no cap).
Flyback Bonus - +$20,000
If a rock that's already hit at least one car bounces back over the bridge deck (crosses Z = โ5 going upward with Y above 6m, heading toward the camera), it's a Flyback. Flat +$20,000 bonus awarded once. Also counts as one tick toward the backwards-trio counter.
Rail Grind Bonus - +$5,000
Land your projectile on the flat top of either side barrier (not into the highway, not bouncing off the inside face). One flat +$5,000 per qualifying throw, awarded the moment the rock comes to rest on the rail surface. Uses a 200ms grace window with the wall-bounce system so a rock that nicked the wall doesn't double-count as a Rail Grind.
Bowling pins are the easiest projectile for this - they don't bounce off the rail as hard as rocks, so a feathery throw at the right angle can plant a pin upright on the barrier.
Time-Extension Bonuses
+10s ยท Backwards Trio
Accumulate 3 backwards hits (backwards-5ร hits and flybacks both count) and the round clock gets +10s. Counter resets after each trio, so you can earn it repeatedly.
+10s ยท Back in Time!
The DeLorean appears once per round at the 40s-elapsed mark. Any direct hit awards +10s and plays "Back in Time!"
Worked Examples
Example 1 - Perfect Porsche hood at max power, cold start:
costMax=$5,000, xMult=1.0, zMult=1.0, powerMult=3.0, combo=1, back=1, streak=1, dmg=1
rawPoints = 200 + (5000-200)ร1ร1ร3 = $14,600
basePoints = 14,600 ร 1 = $14,600
points = 14,600
Example 2 - Same shot but 3rd car of a combo on a SUPER streak:
costMax=$2,500 sedan, xMult=1.0, zMult=1.0, powerMult=3.0
combo=3, streak=5
rawPoints = 200 + (2500-200)ร3 = $7,100
basePoints = 7100 ร 3 = $21,300
per-hit = 21,300 ร 1 ร 5 ร 1 = $106,500
Example 3 - Throw with car hits then a wall bounce, then more cars:
Hit cars 1-3 on the throw โ throwSubtotal = $50,000
HIT WALL โ subtotal doubles to $100,000 (popup: WALL BOUNCE 2X)
Hit cars 4-5 normally, each adds face value (no wall mult on car hits)
Subtotal grows to $130,000
HIT WALL again โ doubles to $260,000 (popup: 2ND WALL BOUNCE 3X)
Final throw total = $260,000
Example 4 - Backwards + MEGA on a truck:
costMax=$2,000, xMult=0.8, zMult=1.0, powerMult=2.5
combo=2, backMult=5, streak=10, dmg=1
rawPoints = 200 + (2000-200)ร0.8ร1ร2.5 = $3,800
basePoints = 3800 ร 2 = $7,600
points = 7600 ร 5 ร 10 = $380,000