Loading…
a327ex.com

SNKRX Swordsman and Archer Lv.3 Redesign

Opus 4.8

Summary

Redesigned and actually BUILT the Swordsman and Archer Lv.3 abilities in SNKRX-update to match their finished 062026 counterparts (the prior 5 units' Lv.3s were display-only). Established the cross-project "design the full kit in 062026, distill the unit here" principle, added a per-ability card-chips architecture, a new blade_dance.lua dancer entity, and the subtle_whoosh asset.

Re-orientation (where we left off):

  • Roster unchanged at 5/28 ported (archer, swordsman, magician, outlaw, cannoneer); merge system + live inventory overlay already built. Working tree was clean; last commit "SNKRX Merging and Inventory".
  • Listed the 5 ported units and their (then display-only) Lv.3s: archer/Bouncing Shot, swordsman/Sharpen, magician/Quick Cast, outlaw/Flying Daggers, cannoneer/Cannon Barrage.

Cross-project principle (owner ruling this session):

  • Design the full 5-ability active-aim kit in 062026 FIRST, then DISTILL the individual unit (Lv.1 + Lv.3, shared names/vibe) in SNKRX-update.
  • Lv.3 = whatever ability best captures the unit's identity AND fits the auto-attack nature (passive OR active), NOT necessarily the 062026 ultimate (owner corrected an early "Lv.3 = the ult" rule I proposed).
  • Do this for an initial 20-30-unit roster, then SNKRX-update adds units freely without 062026 and the two diverge (SNKRX scales to hundreds; 062026 can't design hundreds of full kits that feel good).
  • Cross-unit ideas (e.g. party-wide Echo) belong to the CLASS set-bonus layer (deferred), NOT a unit Lv.3 — the ranger set bonus is literally "release a barrage to allied rangers".
  • My appraisal of the plan: core principle is sound (distillation = subtraction from a proven-fun kit, higher-confidence than cold invention); the real prize of the shared period is the reusable TOOLKIT it forces into existence, not the 20-30 units; the weak joint is gating systems behind a roster COUNT when the loop itself isn't built yet (snake-vs-seekers, no run/enemies/economy) — gate on "is the loop fun" instead; the relationship is bidirectional (a unit that won't distill signals a weak 062026 core) and some units will diverge early because their 062026 fun is purely manual (Cross Guard/Leap/charge have no auto analog).

Swordsman Lv.3 → Blade Dance:

  • Read 062026's IMPLEMENTED swordsman kit (diverged from design.md): Cleave / Leap Slam / Blade Dance (ult) / Surge; Cross Guard parked.
  • Auto-attack filter: Leap Slam ✗ (unit can't leave the snake), Surge ✗-ish (duplicates magician Quick Cast + needs buff subsystem), Blade Dance ✓✓. Picked Blade Dance.
  • Formation question resolved: the snake is trail-follow (each unit's slot is a derived moving point; only death has gap-handling), so the unit does NOT leave — a detached dancer leaps while the swordsman stays in the snake rendered PHASED (oscillating low alpha ~0.15-0.55, snake_unit:draw). Owner picked Option A + the phasing tell.
  • First pass used the flicker carrier as a stand-in; owner rejected it as not faithful (no AoE per hit, wrong targeting). Replaced with a faithful port.
  • blade_dance.lua (new dancer entity, mirrors 062026 snkrx/player.lua bd_): pick_target dense far-edge jump-band (score = pack density [already-hit 0.3] + 1.5edge, weighted top-3, fallback farthest), bezier hop (062026 control points + per-leap hit_circle + subtle_whoosh), land = a Cleave-style square spawn_area (FLAT damage, no crowd) + the flicker final-burst juice (hit_stop 0.06, slash_final + sword_slash, shake_shake/shake_push, fx_energy_122, hit_circle, 6 particles; NO knockback), 062026's wake trail (cubic_bezier/trail_update/trail_draw copied verbatim — jag is leap/tumble-only so Blade Dance's wake is the smooth dashed trail).
  • Knobs (owner): 3 landings, NO crowd bonus, HIGH flat base damage 25 → 100/landing at the Lv.3 ×4 merge, 6s periodic, radius 40, jump band 70-160. Decisions: AoE spawned with no caster (final-burst is the landing juice); landing square aligns to travel direction (no mouse on an auto unit); copied RPG3_Generic_SubtleWhoosh02.ogg from 062026 (vol 0.43).
  • Driver: unit_level3_update(u, dt) (units.lua) — only at level 3, every 6s spawn the dancer + set blade_dancing/attack_suppressed; end-poll on entities[dance_id] drops the phase when the dancer self-destructs (after its trail fades).
  • Files: blade_dance.lua (new), snake.lua (unit_level3_update call + phasing draw), units.lua (def fields, ability, unit_level3_update), main.lua (require + update/draw loops + subtle_whoosh sound).

Per-ability card chips (architecture change, inventory.lua unit_card_v2):

  • Owner ruling: each ability (Lv.1 and Lv.3) owns its OWN chips as an independent card portion (the chips were hard-wired to the def's headline DMG/CD/RANGE and would show Cleave's numbers under Blade Dance).
  • Each ability block now sources ab.chips(sdef) (returns {label,value} rows); an active with no chips fn falls back to the headline DMG/CD/RANGE (so the other 4 units are unchanged). The merge sdef proxy gained blade_dance_damage + barrage_damage scaling. Glossary gained the chain keyword.

Archer Lv.3 → Echo→Barrage:

  • Read 062026's finished archer kit: Echo (passive — every 5th ability re-fires) / Piercing Arrow / Cone Shot / Nova Tumble / Barrage (charge-up wall of piercing arrows).
  • Recommended Echo (the signature passive) but owner found plain "fire twice every 5th" underwhelming; noted cross-unit Echo would be interesting but architecturally muddy. Resolved: cross-unit Echo IS the ranger class bonus (deferred), keep the Lv.3 self-contained; keep Echo's rhythm but make the payoff a Barrage. Owner picked Echo→Barrage.
  • Implementation: ECHO_N (5) counter in the archer attack fn — at level 3, every 5th shot also archer_barrage(u). Barrage = a staggered stream of 8 piercing arrows fired FROM the unit (owner: not 062026's perpendicular launch-strip), pierce=true, speed 300, barrage_damage 6 → 24 at L3.
  • Three follow-up refinements: (1) each arrow targets a DIFFERENT enemy across a ±34° cone of the primary direction (barrage_cone_targets, round-robin, live-tracked + jittered) so the volley fans instead of converging; (2) copied 062026's barrage sound exactly — arrow_shoot per arrow at 0.9-1.1 random pitch, played manually (the projectile fire_sounds is pitchless); (3) doubled the inter-arrow stagger from 062026's 0.03 to 0.06. Verdict: "works wonderfully."
  • Card: Lv.3 block "Barrage" (active · multiple · pierce), chips DMG/ARROWS, desc "Every 5th Piercing Arrow looses a barrage of 8 arrows." Reused existing glossary terms (no new keyword).

Testing instructions given (both units): hover the unit's cell in the live inventory and press 3 to set merge level 3; spawn enemies with E/B; watch the Lv.3 fire (swordsman every 6s, archer every 5th shot). Below level 3 neither triggers.

Pending bookkeeping (deferred to next session): porting.md §7/§9 (swordsman/archer Lv.3 rulings), CLAUDE.md (the dancer entity + per-ability chips), and a card wording-variant pick (first-draft lines shipped and accepted as "works wonderfully").

Next session: redesign the Magician Lv.3 — GATED on the owner finishing the Magician's kit in 062026; paused until then.

🔒 Only the summary of this log is public. Private because this is SNKRX update.