Skip to content

fix: ASCII spell effects + DOUBLE strike label#344

Merged
mokn merged 6 commits intodevfrom
feat/creature-studio
Apr 9, 2026
Merged

fix: ASCII spell effects + DOUBLE strike label#344
mokn merged 6 commits intodevfrom
feat/creature-studio

Conversation

@mokn
Copy link
Copy Markdown
Collaborator

@mokn mokn commented Apr 9, 2026

Summary

  • Replace purple blob spell effect with crisp ASCII rune (◆ with 5px shadow instead of 14px)
  • Replace player spell radial gradient with matching ASCII fire rune in amber/gold
  • Add "DOUBLE" label to double strike floating damage text

Test plan

  • Fight a spell-using monster — verify attack effect is a crisp purple ◆ rune, not a blobby image
  • Trigger a double strike (AGI weapon) — verify "DOUBLE 24" label shows in blue
  • Player spell fallback renders as amber ASCII rune (only visible if 3D model hasn't loaded yet)

🤖 Generated with Claude Code

mokn and others added 6 commits April 9, 2026 08:08
Deploy UniRig+Blender animated spider GLB (7 clips: idle, walk, attack,
hit, death, block, dodge) to client. Replaces static canvas draw with
makeGLBDrawFn wrapper — canvas art remains as loading fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
GLB lighting boosted (key 2.2, fill 0.6, ambient 0.4), toon gradient
shadows lifted, ASCII renderer gamma/ambient/brightness cranked up.
Cave background doubled: 8-13 stalactites, 6-10 stalagmites, thicker
walls/ceiling/floor, boulder clusters, more interior scatter.
Creature lab: fix animation seek order, update dire rat GLB.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…e ASCII effect

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Both useBattleSceneSignals and useFloatingDamageSignals had a reset bug:
their processedCountRef was reset to 0 every time visibleOutcomes changed,
including when useCombatPacing revealed the counterattack after 600ms.
This caused the player attack to be replayed alongside the counterattack,
making it look like both sides attack simultaneously.

Fix: track signaled outcomes by unique key (encounterId + turn +
attackNumber + attackerId) instead of by array index. When the
counterattack is revealed and visibleOutcomes grows, already-signaled
outcomes are skipped.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Player damage renders in red, enemy damage in white/gray, blocks in
teal, crits in orange, dodges in gray. Floating damage numbers now
clearly distinguish who is hitting whom at a glance.

New DamageTypes: enemyDamage, enemyCrit, blocked, dodged.
Existing player damage types (damage, crit, double, critDouble) unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- drawMonsterSpell: reduce shadowBlur 14→5, tighten glow radius so the
  ◆ rune reads as a character not a purple blob. Add trail variety (◇·.)
- drawSpell (player fallback): replace radial gradient blob with ASCII
  fire rune matching the same ◆ pattern in amber/gold
- BattleFloatingDamage: double strike now shows "DOUBLE 24" label instead
  of an unlabeled blue number

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
blog Building Building Preview, Comment Apr 9, 2026 8:20pm
ud Building Building Preview, Comment Apr 9, 2026 8:20pm
ud-api Building Building Preview, Comment Apr 9, 2026 8:20pm
ud-api-beta Building Building Preview, Comment Apr 9, 2026 8:20pm

Request Review

@mokn mokn merged commit 6a20a1a into dev Apr 9, 2026
4 of 11 checks passed
@mokn mokn deleted the feat/creature-studio branch April 9, 2026 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant