Skip to content

feat(rogue): shadow rogue stealth, backstab flanking, and smoke bomb concealment engine - #213

Open
angelTomo9 wants to merge 2 commits into
Bitcoindefi:mainfrom
angelTomo9:feat-rogue-stealth-1787904040404
Open

feat(rogue): shadow rogue stealth, backstab flanking, and smoke bomb concealment engine#213
angelTomo9 wants to merge 2 commits into
Bitcoindefi:mainfrom
angelTomo9:feat-rogue-stealth-1787904040404

Conversation

@angelTomo9

Copy link
Copy Markdown

Summary

Implements a shadow rogue stealth cloaking, sentry detection radius, positional backstab flanking (2.5x critical damage), and smoke bomb tactical concealment engine for OpenAO MMORPG.

Features

  • Rogue stealth state machine (Unstealthed, In Stealth, Smoke Concealed, Shadow Step)
  • True-sight sentry detection radius checking
  • Mathematical rear-arc backstab angle verification
  • Critical backstab multipliers with armor damage mitigation
  • Smoke bomb absolute concealment clouds
  • Full unit test coverage under Vitest

Comment thread api/src/lib/shadowRogueStealthAssassination.ts Outdated
Comment thread api/src/lib/shadowRogueStealthAssassination.ts Outdated
Comment thread api/src/lib/shadowRogueStealthAssassination.ts Outdated
@gitar-bot

gitar-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Code Review ✅ Approved 3 resolved / 3 findings

Implements shadow rogue stealth state machine, backstab flanking with positional damage multipliers, and smoke bomb concealment engine for the MMORPG. Smoke concealment expiration, sentry frontal FOV cone detection, and unused import have been addressed.

✅ 3 resolved
Bug: Smoke concealment never expires in detection check

📄 api/src/lib/shadowRogueStealthAssassination.ts:65 📄 api/src/lib/shadowRogueStealthAssassination.ts:151-165
checkSentryDetection returns { isDetected: false } for SMOKE_CONCEALED before ever evaluating elapsed time, and deploySmokeBomb sets stealthDurationSeconds=8 but nothing transitions the rogue out of SMOKE_CONCEALED. The result is a rogue that stays permanently undetectable once a smoke bomb is thrown, since no code path resets the state after 8 seconds. Add an expiry check for SMOKE_CONCEALED (mirroring the IN_STEALTH elapsed logic) that reverts the rogue to UNSTEALTHED once concealmentSeconds have passed.

Quality: Sentry facing angle ignored despite doc claim

📄 api/src/lib/shadowRogueStealthAssassination.ts:57 📄 api/src/lib/shadowRogueStealthAssassination.ts:74-83
The doc comment states detection is 'based on distance and facing angle,' and both SentryTarget.facingDegrees and RogueCombatant.facingDegrees exist, but checkSentryDetection only compares distance to detectionRadiusTiles and never uses any facing angle. Either implement a facing/field-of-view check or update the comment so the omnidirectional true-sight radius behavior is not misleading.

Quality: Unused crypto import

📄 api/src/lib/shadowRogueStealthAssassination.ts:1
import crypto from "node:crypto" is never referenced anywhere in the module. Remove it to avoid dead imports and potential lint failures.

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Important

Your trial ends in 4 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

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