Neon Maze: a catch on the tick the last dot is eaten clears the level without losing a life
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- game-dev
Research direction
Start in games/maze/scenes/GameScene.ts, in tick() around lines 419-427, where checkCatches() runs before clearLevel(). Then read die() and clearLevel() near lines 460-482 to see how the phase is overwritten, and update() near line 196 to see where afterDeath() runs. Done means a catch on the frame the last dot is eaten costs a life and does not advance the level; run npm test and add a check for that case if the suite has a harness for it.
Written by the indexing model from the issue text.
Description
Summary
In Neon Maze, if a chaser catches the runner on the same tick that the last dot is eaten, the level clears and the life is never lost.
Where
games/maze/scenes/GameScene.ts:419-427(tick:checkCatches()thenif (this.dots.size === 0) this.clearLevel())games/maze/scenes/GameScene.ts:460-462,:480-482(die()sets phase'dying',clearLevel()overwrites it with'clearing')games/maze/scenes/GameScene.ts:196-204(updateonly callsafterDeath(), which takes the life, from'dying')
Details
tick() moves the runner (eating the dot), moves the chasers, then calls checkCatches(), which can call die(). It then goes on to clearLevel() with no phase check, so the 'dying' phase is replaced by 'clearing' and afterDeath() never runs.
Impact
Rare and in the player's favour: the death effects play over a level clear, no life is lost, and the run can be credited with a clear (and the maze.clear trophy) it should not have.
Steps to reproduce
- Leave one dot next to a chaser's path.
- Eat it just as an unscared chaser reaches the runner.
- The death burst plays, then the next level starts with the same lives.
Suggested fix
In tick(), return after checkCatches() if the phase is no longer 'play', or check this.phase === 'play' before calling clearLevel().
Acceptance criteria
- A catch on the frame of the last dot costs a life and does not advance the level.
Getting started
- Relevant files:
games/maze/scenes/GameScene.ts - How to run tests:
npm test
Filed by repo-audit/full-audit at de2b25b. Severity: low. Effort: S. audit-key: bug|games/maze/scenes/GameScene.ts|tick
- Dominant language
- TypeScript
- Stars
- 3
- Forks
- 3
- Avg merge
- 8h 13m
- Merged PRs (30d)
- 2
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TMHSDigital/GH-Arcade
-
ci good first issue severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
TMHSDigital/GH-Arcade#111 ·
-
bug good first issue severity: low
Difficulty 1/5 Under an hour Newbie friendliness 88/100
TMHSDigital/GH-Arcade#105 ·
-
bug good first issue severity: medium
Difficulty 2/5 Under an hour Newbie friendliness 84/100
TMHSDigital/GH-Arcade#88 ·
-
accessibility enhancement severity: low
Difficulty 4/5 3-5 days Newbie friendliness 40/100
TMHSDigital/GH-Arcade#114 ·
-
enhancement severity: low
Difficulty 4/5 3-5 days Newbie friendliness 35/100
TMHSDigital/GH-Arcade#113 ·
All issues in TMHSDigital/GH-Arcade
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
steelbrain/node-ssh#487 ·
-
cli: `execCargoMetadata` decodes stdout per chunk, corrupting non-ASCII paths across pipe boundariesOpen
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 62/100
lingdojo/kana-dojo#34127 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 68/100
osmlab/name-suggestion-index#13104 ·
Maintainers usually reply within 1 day