VinPropane
c1fd2053d0
NEO-108: Add GET encounter-progress API and integration tests.
...
Projects progress, completion, and event stores into versioned per-player
rows with inactive/active/completed state and commit-time grant summary.
2026-05-31 18:37:42 -04:00
VinPropane
f51617f8b5
NEO-107: Address code review findings for event store persistence.
...
Update E5.M3 module summary and NEO-105 snapshot, fix store test AAA
layout, add empty encounter id fail-closed test, strike through review items.
2026-05-31 18:27:28 -04:00
VinPropane
a02496c6bc
NEO-107: Persist EncounterCompleteEvent and wire E7.M2 hook stub.
...
Add IEncounterCompleteEventStore with in-memory implementation, record
events on successful TryCompleteAndGrant, and expand reward_delivery
hook comments for future QuestRewardBundle routing.
2026-05-31 18:26:11 -04:00
VinPropane
9c74933e6e
NEO-106: Address code review findings for combat encounter wiring.
2026-05-31 18:10:41 -04:00
VinPropane
8306f92554
NEO-106: Document combat encounter wiring and update E5.M3 docs.
2026-05-31 18:08:29 -04:00
VinPropane
f581cf412c
NEO-106: Wire encounter progress and completion from ability cast.
2026-05-31 18:08:28 -04:00
VinPropane
01bcd7334c
NEO-105: Consolidate inventory snapshot clone helper.
...
Add PlayerInventorySnapshot.Clone() and use it from craft and
encounter completion pre-flight paths (Bugbot PR #144 ).
2026-05-31 17:11:55 -04:00
VinPropane
cbb6f137fd
NEO-105: Address code review findings for encounter completion.
...
Add apply-phase rollback test, E9.M1 deny hook comment, inventory
reason passthrough, and tighten idempotent replay assertions.
2026-05-31 17:02:32 -04:00
VinPropane
009fedf65e
NEO-105: Document encounter completion grants and update E5.M3 docs.
2026-05-31 16:57:54 -04:00
VinPropane
0cf82b9c0a
NEO-105: Add encounter completion operations and inventory grants.
...
TryCompleteAndGrant applies reward-table fixed grants with pre-flight
simulate, compensating rollback, and idempotent completion marking.
Returns EncounterCompleteEvent payload for NEO-107 persistence.
2026-05-31 16:57:53 -04:00
VinPropane
0289930897
NEO-104: Use subset check for all-targets-defeated predicate.
...
Matches documented semantics; extra defeated ids via direct store
calls no longer block completion readiness (Bugbot PR #143 ).
2026-05-31 16:44:48 -04:00
VinPropane
91f74b7d6e
NEO-104: Address code review findings for encounter stores.
...
Normalize encounter ids in IsAllRequiredTargetsDefeated, document TryActivate
completion gating, lock IsCompleted reads, add operations tests, and update
plan and review doc.
2026-05-31 16:37:22 -04:00
VinPropane
aaccbbbcaf
NEO-104: Add encounter progress and completion stores.
...
In-memory IEncounterProgressStore and IEncounterCompletionStore with
EncounterProgressOperations for activation, defeat tracking, and
all-targets-defeated checks; unit tests and docs.
2026-05-31 16:18:56 -04:00
VinPropane
e4e75f5dc7
NEO-103: Address code review follow-ups.
...
Mark E5M3-04 landed in module Summary, assert fixedGrants order in
C# test, add Bruno ordinal comment, strike through review items.
2026-05-31 15:43:37 -04:00
VinPropane
935e8d5f16
NEO-103: Document encounter-definitions route and mark E5M3-04 landed.
...
Update server README, module snapshot, alignment register, backlog,
and implementation plan reconciliation.
2026-05-31 15:40:12 -04:00
VinPropane
9b48ec5f39
NEO-103: Add GET /game/world/encounter-definitions API.
...
Expose schema v1 encounter list with nested completionCriteria and
rewardTable summary via encounter and reward-table registries.
2026-05-31 15:40:12 -04:00
VinPropane
5229c17598
NEO-102: address code review — sync module register + README id lookup note
2026-05-31 00:40:37 -04:00
VinPropane
734876cde9
NEO-102: add encounter and reward-table definition registries + DI
...
Thin IEncounterDefinitionRegistry / IRewardTableDefinitionRegistry adapters
over NEO-101 catalogs with TryNormalizeKnown, DI registration, and 18 AAA tests.
2026-05-31 00:38:38 -04:00
VinPropane
21749e7977
NEO-101: Address code review — schema tests, module snapshot, host boot.
...
Adds row-level JsonSchema violation tests for both loaders, symmetric empty reward-tables host boot test, and E5.M3 implementation snapshot; review doc marked Done.
2026-05-31 00:08:41 -04:00
VinPropane
f921095fb0
NEO-101: Fail-fast encounter and reward-table catalog load at startup.
...
Adds Game/Encounters loaders mirroring validate_content.py E5M3 gates, DI registration with reward-tables-before-encounters load order, 19 AAA tests, and server README catalog sections.
2026-05-31 00:05:57 -04:00
VinPropane
d7c3ede5a7
chore: Epic 5 stable slice anchors and doc cluster alignment
...
Add explicit HTML slice anchors to epic_05, restore deep links across E5
backlogs and plans, fix E5M2 NEO-98 resolve vocabulary and E5.M3 Linear row,
and record review follow-up as Done.
2026-05-30 19:25:56 -04:00
VinPropane
04126693e1
NEO-98: Update Bruno for seven abilities and attackAbilityId.
2026-05-30 18:06:42 -04:00
VinPropane
44fb4adbe5
NEO-98: Set melee strike to 2 m and elite slam to 4 m.
2026-05-30 17:55:10 -04:00
VinPropane
b9e2d2f4c9
NEO-98: Shorten NPC melee strike maxRange to 1 m.
2026-05-30 17:53:14 -04:00
VinPropane
3169106f28
NEO-98: Resolve NPC telegraph hits via attack ability maxRange.
...
Telegraph damage now looks up behavior attackAbilityId for baseDamage and
maxRange instead of using aggroRadius. Adds three NPC attack abilities, maxRange
on AbilityDef, attackAbilityId on NpcBehaviorDef, and cross-ref validation.
2026-05-30 17:49:21 -04:00
VinPropane
332cd4445f
NEO-98: stop defeated NPC aggro and runtime attacks
...
Clear threat holder and reset runtime to idle when combat-target HP
is defeated — on cast accept and as an AdvanceOne guard so telegraph
cycles cannot continue after the killing blow.
2026-05-30 17:38:27 -04:00
VinPropane
8a774857c6
NEO-96: address code review — fixture wording, E5.M2 status
...
Narrow holder-clear hook comments to AdvanceAll scope; document
ResetAllPrototypeRows bypass with optional E9.M1 anchor; remove
redundant TryGet; update E5.M2 Summary status and review follow-up.
2026-05-29 20:50:47 -04:00
VinPropane
5e1e37423f
NEO-96: formalize NPC runtime telemetry hook sites
...
Replace NEO-93 placeholder comments with full telegraph_fired and
npc_state_transition E9.M1 anchors in NpcRuntimeOperations; document
in server README and E5.M2 module alignment.
2026-05-29 20:48:50 -04:00
VinPropane
5efa5a4ad8
NEO-95: address code review — alignment docs and API nits
...
Append NEO-95 landed to E5.M2 tracking; echo route playerId on
combat-health GET; AttackExecute comment; tighten elite test AAA.
2026-05-28 23:45:07 -04:00
VinPropane
b702d9fb6f
NEO-95: add tests, Bruno smoke, and docs for player combat HP
...
Cover elite telegraph damage, fixture reset, and combat-health GET
verification; update E5M2 backlog and server README.
2026-05-28 23:42:20 -04:00
VinPropane
cb1692ce85
NEO-95: add player combat HP store and NPC attack resolve
...
Wire telegraph-complete damage into AdvanceAll and expose GET
/game/players/{id}/combat-health for session player HP read model.
2026-05-28 23:42:18 -04:00
VinPropane
798c601bc5
NEO-94: Address code review — alignment doc and AAA test layout.
...
Append NEO-94 landed to E5.M2 tracking row; move ReadFromJsonAsync to Assert in snapshot integration tests.
2026-05-28 23:23:19 -04:00
VinPropane
a68d8aa782
NEO-94: Add GET /game/world/npc-runtime-snapshot with lazy AdvanceAll.
...
Expose versioned NPC runtime rows and nested activeTelegraph DTOs for client poll; wire route, AAA integration tests, Bruno smoke, and docs.
2026-05-28 23:17:57 -04:00
VinPropane
e4f08b2015
NEO-93: Preserve LastAdvancedUtc on clock regression and guard zero timings.
...
Do not move the lazy-tick marker backward when nowUtc regresses; reject
non-positive catalog durations and break the phase loop when cursor stalls.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 23:44:13 -04:00
VinPropane
83d1bb13e4
NEO-93: Reset LastAdvancedUtc on dev fixture runtime clear.
...
Fixture reset cleared NPC rows but left a stale lazy-tick marker, causing
catch-up bursts after re-acquire. Reset to MinValue with prototype rows.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 23:26:17 -04:00
VinPropane
056b0e77f0
NEO-93: Fix delta cap LastAdvancedUtc to preserve gradual catch-up.
...
When simulation is capped, advance LastAdvancedUtc to windowEnd instead
of nowUtc so subsequent polls do not burst through missed NPC cycles.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 23:16:35 -04:00
VinPropane
d3f178b5fb
NEO-93: Address code review — AAA tests, single-call advance, windup fix.
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 23:08:34 -04:00
VinPropane
ecffba9e4b
NEO-93: Reconcile plan, backlog, and docs for runtime state machine.
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 22:02:41 -04:00
VinPropane
48813998d7
NEO-93: Add NPC runtime state machine and lazy tick advance.
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 22:02:39 -04:00
VinPropane
843abf7126
NEO-92: Add threat store and aggro acquire/leash-clear wiring.
...
Introduce IThreatStateStore with first-hit acquire on damaging casts
and deterministic leash clears on player move and pre-acquire checks.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 21:45:57 -04:00
Don
047237e651
NEO-91: address code review follow-ups
...
Add legacy alpha targeting integration test, elite HP assertion, AAA fix,
Bruno docs refresh, and module/alignment doc updates. Strike through
resolved items in the NEO-91 review.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 23:46:39 -04:00
Don
fa9acc85ac
NEO-91: migrate combat targets to three NPC instances
...
Replace alpha/beta dummies with PrototypeNpcRegistry (melee/ranged/elite),
per-archetype max HP from INpcBehaviorDefinitionRegistry, and updated
server tests + Bruno smokes. Documents breaking client change for NEO-97.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 23:42:31 -04:00
VinPropane
d3e765fb8f
NEO-90: add GET /game/world/npc-behavior-definitions projection.
...
Expose read-only npcBehaviors envelope backed by INpcBehaviorDefinitionRegistry,
with integration tests, Bruno smoke, and doc reconciliation.
2026-05-25 17:49:01 -04:00
VinPropane
3134bb6ff6
NEO-89: Address code review — E5.M2 module doc and case-id test.
2026-05-25 17:28:46 -04:00
VinPropane
e25b1406c7
NEO-89: Reconcile plan, backlog, and module docs for NPC registry.
2026-05-25 17:27:17 -04:00
VinPropane
70dc293246
NEO-89: Add INpcBehaviorDefinitionRegistry and DI registration.
2026-05-25 17:27:14 -04:00
VinPropane
83282e76f0
NEO-88: Fail-fast NPC behavior catalog load at server startup.
...
Mirror NEO-77 ability loader: JsonSchema.Net validation, E5M2 three-id
gate, leash > aggro numeric gate, DI singleton, Bruno health smoke, and
16 AAA loader/host tests.
2026-05-25 17:08:40 -04:00
VinPropane
3cbbcb6c2f
NEO-84: Address code review — register sync and hook comment parity.
...
Append NEO-44/NEO-84 to E5.M1 dependency register note, fix E2.M2 NEO-44
status, and add playerId correlation hint on damage-path ability_used hook.
2026-05-25 13:06:04 -04:00
VinPropane
667a1a960a
NEO-84: Add combat telemetry hook sites in CombatOperations.
...
Comment-only ability_used, enemy_defeat, and reserved encounter_start/player_death
markers; README and module docs updated. All 407 server tests pass.
2026-05-25 13:04:11 -04:00
VinPropane
9d9b53332f
NEO-44: Address code review — docs, debug log, Bruno playerId.
...
Update E5.M1/E2.M2 module docs for gig XP path; LogDebug on failed
gig store write; Bruno defeat spine uses {{playerId}}; strike review items.
2026-05-25 12:08:21 -04:00