fertig-classic-games/assets/gamedata/peggle/powers.md

3.8 KiB
Raw Blame History

Peggle Powers

Every power lives in the POWERS map in src/games/peggle/PeggleLogic.js (id, display name, trigger type, player-facing description, and tuning params). A level grants a power by setting powerId on its entry in levels.json; hitting a green peg charges/fires it. Any friend can be paired with any power — the mapping below is the intended one.

Trigger types:

  • instant — fires the moment the green peg is hit
  • next ball — banks a charge; applied to your next launched ball
  • current ball — applied to the ball in flight when the green peg is hit
  • charge — banks a lasting effect (multiple shots, or "next time X happens")

Live powers (levels 125)

Friend Power (powerId) Trigger What it does
Ethel Super Guide (superguide) next 3 balls The aim guide extends through extra bounces, showing where the ball goes after it hits pegs
Kona Multiball (multiball) instant Kona fetches three more balls — they spawn at the current ball's position, fanned out (mirrored + ±18°)
Zanthor Space Blast (spaceblast) instant The green peg explodes, instantly lighting and scoring every peg within 150px
Fireball Fireball (fireball) next ball The ball is tripled in size and blazes straight through pegs without bouncing, lighting everything it touches
Victor Zen Ball (zenball) next 3 balls per hit, stacking Each shot is silently nudged to the best-scoring angle within ±6° of your aim

Powers awaiting their friends

Friend Power (powerId) Trigger What it does
The Smasher Body Slam (bodyslam) next ball The ball becomes a massive slam ball (×1.6 size) that barely slows down when it hits pegs
DV-8-2303 Laser Sweep (lasergrid) instant The green peg fires a horizontal laser across the board, lighting every peg in its row
Steve Beam Up (beamup) current ball If the ball falls off the bottom, a beam catches it and drops it back in from the top at the same spot (once per charge)
Terry Meteor Strike (meteor) instant A meteor crashes down through the green peg, lighting every peg in its column
Nicole Overclock (overclock) instant The system is hacked — every peg scores DOUBLE for the rest of the shot
Gerome Extreme Ball (extremeball) next ball Launches at ×1.45 speed, and walls never absorb any of its speed
Blackwind Cannonball (cannonball) current ball The ball turns to iron and plows straight through the next 3 pegs it strikes
Maurice Beaver Dam (beaverdam) 3 shots The free-ball bucket is dammed up to nearly double width (×1.9) for the next 3 shots
Kage Shadow Slash (shadowslash) instant A blade of shadow slashes an X through the green peg, lighting pegs along both diagonals
Schooner Tailwind (tailwind) next ball The ball rides the sea breeze at ~half gravity — long, floaty, controllable arcs
Aiko Cosmic Bloom (cosmicbloom) instant Alien spores drift out — 2 random blue pegs bloom into new GREEN power pegs (hitting those charges the power again)
Nadia Rewind (rewind) charge The next ball that drains without being caught is rewound back into your reserve

Adding a new power

  1. Add an entry to POWERS in src/games/peggle/PeggleLogic.js (put tuning values in params) and implement its behavior in applyPower (and, if it changes ball physics, via per-ball flags set in launchBall/substep).
  2. Add its banner/FX/sound to onPowerFired (and an event case if it has a custom effect) in src/games/peggle/PeggleGame.js, plus a status line in updatePowerHud if it banks charges.
  3. Add a check-cluster to tools/verifyPeggle.js.
  4. Reference it from a level's powerId — the editor's power dropdown picks it up automatically.