062026 10
Opus 4.8
Summary
Tenth 062026 session — cleared the entire "finish the last details" list for the Archer, redesigned the Archer ultimate and the Swordsman passive, made cooldowns persist across swaps, ported a swap effect and SNKRX's RefreshEffect from old projects, and recovered an old SNKRX-like design-doc archive for a deferred design re-imagining (next session).
Recovered the old SNKRX-like project + design docs (for the deferred re-imagining):
- Hunted down the user's old "4 units you swap between" project at
D:/E/Old Works/SNKRX-like/(devlog Aug 2023). Three iterations:001-No-title(the two big design docs),112020(MoonScript→Lua prototype that holds the swap effect),BUILDRX2. - The two docs (
todo.md47KB,detailed_todo_dont_use.md60KB) hold the party mechanic (4 characters per run, freely switching, 5 abilities each, pre-run ability draft, Minesweeper-ish map, SNKRX/Brotato wave arenas, per-character HP with permadeath) plus the systems: ~50 Tags (PoE-support-gem / Noita-wand-part modifier vocabulary), a Colors→gameplay-tags table (Green = chain/homing/pierce/ricochet/projectile, independently validating the Archer being "green"), and the shield rationale ("no in-combat healing → permadeath → no forced healer"). - Copied both into
062026/reference/; ran a D:/-wide fingerprint search and recaptured distinct other versions into062026/reference/old_versions/(the 11062024/Orblike-era 21KB design, two Orblike devlogs, SpinSweeper, An Endless Vagrant), deduped exact copies. Flagged shared-HP vs per-unit-permadeath as the re-imagining's first decision.
Swap effect (faithful port of SNKRX-like switch_character, 112020/main.lua:293):
- New
fx.luatypes:fx_rotating_particle(parent-relative spiraling streaks) +fx_rotating_animation_particle(orbiting arc-swoosh, playsarc_particle_140). Copiedarc_particle_140.png(840×140, 6 frames); sourcedWind Bolt 20.wav+Switch.wavfromE:/sound packs/Ultimate SFX Bundle/Magic Sounds Proas q10 oggs. - Iterated hard: first built a white→mix version, user asked "did you copy it exactly?" → rebuilt EXACT (flat off-white
fg1=#dadada≈ 062026text; volume 0.25 = 0.5×0.5 SoundTag). Then removed the ring, addedSWAP_SCALEmaster size (2.2, F1 'swap size'), then white→target-color flash on all particles + bigger body pop (SWAP_SPRING_PULL=0.8) + the unit flashes white too. Target color = incoming character's color. - Added swap keys TAB + mouse4/5 (besides
c).
Surge text recolors on swap: player:surge stores surge_text_id; player:swap_burst recolors the live Surge word to the incoming unit's palette via new fx_status_text:recolor. (Surge buff persists across swap — a flagged swap-combo.)
Cooldown persistence (was a bug) + retune for a 3-unit rotation:
- Root cause:
set_characterwiped ALL ability state. Fix: cooldowns are absolute timestamps, so just stop resetting them — only in-progress actions (leap/blade-dance/charge/tumble) cancel on swap. Split the one shared ult fieldnext_ult_time→next_blade_dance_time+next_barrage_time; updated the two HUD ult-slot reads. - Retuned for a ~3-unit rotation (away ~8s → secondaries/mobility back, ults longer): Leap 6→8, Surge 10→12, Blade Dance 10→18, Cone 2.5→12, Tumble 2.5→6, Barrage 10→18. Primaries unchanged.
- Cone Shot → 2-charge (mirrors Leap Slam):
cone_charges/cone_recharge_at, refill before the character branch, Echo re-fires don't spend a charge; HUD charge pips; cardCHARGES 2+chargestag. - Removed life regen (
hp_regen2→0).
Archer ultimate redesign (charge-up Barrage → 3-charge instant): user said charging "slows things down too much / goes against the kit." Deleted all hold-to-charge machinery (start/update/release_barrage, barrage_charge, the Asal ring + converging particles + charge bar, charge state + sound). New player:barrage(): instant on tap, fires BARRAGE_COUNT=12 arrows (half the old 24), 3 charges (BARRAGE_MAX_CHARGES) then full refill — the Leap/Cone model; HUD/card → charge display. Then re-added Echo: each cast echo_tick()s; on the Nth the volley DOUBLES (24).
Auto-spawner (debug): auto_spawn_update() fires B-equivalent 20-seeker waves in bursts of 3 (0.3s apart), 5s between bursts, skipping while #seekers ≥ AUTO_CAP (125). Toggle n; spawn cap + burst gap on F1.
Swordsman shield/passive redesign:
- Shield made uniform across units (shared, like HP) — removed the character branch in
push_shield_params+ theSWORDSMAN_SHIELD_*_MULTglobals. - New passive: on shield break (Swordsman active), refresh cooldowns — hooked
on_shield_break; newplayer:refresh_cooldowns()resets the active unit's cds (character-branched, reusable). - Ported SNKRX
RefreshEffect(Invoker-old/reference/SNKRX/shared.lua:682, identical across many old projects): newfx_refresh— a white box over the player whose height collapses to 0 (up-wipe), follows by id, axis-aligned (non-rotating). Tuned:REFRESH_FX_SIZE(F1 'refresh size', 36), height = 1.33× width, duration 0.15→0.225.
Archer icons (SNKRX, not emoji): the Swordsman icons came from SNKRX/assets/images/. First placeholdered with Twemoji, then swapped to SNKRX icons per the user: arrow/flying_daggers/baneling_burst/echo_barrage → assets/ic_{shoot,cone,tumble,barrage}.png. The slot/card recolor icons to a unit-green silhouette, so source color is irrelevant.
Misc: Tumble distance 90→180→150 (1.66× original). Every edit syntax-checked with lua54.exe; orphan-swept BARRAGE_* / next_ult_time / SWORDSMAN_SHIELD_* after each refactor. Files touched: snkrx/player.lua, snkrx/fx.lua, main.lua, hud.lua, card.lua, plus new reference/ docs + assets/ (icons, arc sheet, two sounds).
🔒 Only the summary of this log is public. Private because this is 062026.