Scale each cascade round's base points by combo_multiplier(round) = the 1-based round index (round 1 x1, round 2 x2, ...), so deeper chains pay out more. resolve now reads score_round before each clear, accumulates score_round * combo_multiplier(round) into Board.score, and reports the settle's payout as the new Cascade.awarded field. A depth-1 settle scores exactly its base (x1, no bonus); any multi-round chain strictly exceeds the same clears scored flat. resolve_step keeps its signature (no scoring), so cascade.sx and its golden are unchanged; score_round/add_round_score are untouched, so score.sx is unchanged. New tests/combo.sx golden locks exact cumulative scores for a single-round clear (30), the P2.4 cascade board (flat 60 -> mult 90), and a controlled 3-round chain (flat 90 -> mult 180), printing per-round base/multiplier/points so the golden self-explains.
42 lines
659 B
Plaintext
42 lines
659 B
Plaintext
== combo (cascade multiplier) ==
|
|
== single-depth1 ==
|
|
RRRGOGOG
|
|
GOGOGOGO
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
round 1: cleared 3 base 30 x1 = 30
|
|
flat sum 30
|
|
multiplied total 30
|
|
== cascade-depth2 ==
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
RGOGOGOG
|
|
BBBOGOGO
|
|
RGOGOGOG
|
|
ROGOGOGO
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
round 1: cleared 3 base 30 x1 = 30
|
|
round 2: cleared 3 base 30 x2 = 60
|
|
flat sum 60
|
|
multiplied total 90
|
|
== chain-depth3 ==
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
RGOGOGOG
|
|
BBBOGOGO
|
|
RGOGOGOG
|
|
ROGOGOGO
|
|
OGOGOGOG
|
|
GOGOGOGO
|
|
round 1: cleared 3 base 30 x1 = 30
|
|
round 2: cleared 3 base 30 x2 = 60
|
|
round 3: cleared 3 base 30 x3 = 90
|
|
flat sum 90
|
|
multiplied total 180
|
|
ok: combo multiplier scales cascade rounds
|