Quests: escorts stay on the follower list, quest givers come back
Escorts lost their place on the hero's follower list after a load, so quest checks like the one in "Furchtbares Verbrechen" failed; they are added back once after loading (town NPCs that tag along briefly are left out). Restarted quests stay available (flag 1), which their giver's dialog and accepting them need. Quest givers are read from the quest scripts: when a running quest's giver dies, the quest restarts and the giver is spawned again at her start; an accepted quest without its giver is repaired on load. Notes on the script format and opcodes in docs/quests.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
2cab6c216d
commit
7d8089c299
11 files changed
+872
-18
No files matched your search
@@ -42,6 +42,15 @@ Known so far: the periodic-hit aura (effect kind 0x12) uses
|
||||
mapped yet. Other arts' ranges are not mapped. Fits the data-driven arts
|
||||
item above (range as a property of an art, one place to compute it).
|
||||
|
||||
Mörsergranate impact indicator (asked 2026-10-25, while reworking the dwarf's
|
||||
Kanonenschuss / Mörsergranate): show exactly where the grenade will land and
|
||||
its explosion radius, a red circle with low alpha on the ground. The landing
|
||||
point seems to be decided at launch (cCreature combat move code `0x5145d0`,
|
||||
case 0x43e: the target point, changed by a random offset when closer than
|
||||
200; passed as the position of the grenade's cEventFX 0x96), so the circle
|
||||
could be drawn from the launch until the explosion; to be confirmed with the
|
||||
diagnostic log. To be built after the radius-per-level change.
|
||||
|
||||
## Rename life leech to "omnivamp"
|
||||
|
||||
Asked 2026-10-15: life leech (property 0x349, "Lebensentzug") becomes
|
||||
@@ -231,6 +240,30 @@ turn towards the player; once their quest is finished they should stop
|
||||
turning and be drawn blue (like other NPCs). Done 2026-10-25
|
||||
(docs/quests.md, "Quest NPCs after the quest").
|
||||
|
||||
## Audit how every quest can fail (2026-10-26)
|
||||
|
||||
Request: "at some point we need to check ALL the quests and how they possibly
|
||||
can fail". Context: "Jagd auf die Wilderer" (1501) - the giver's death label
|
||||
`ex1501` sets the quest variable and runs `tot1501`, which ends the quest as
|
||||
solved without the reward once the poachers are dead; her survival is not
|
||||
needed for the quest itself. `src/mods/questgiver.cpp` currently skips a dead
|
||||
giver's label, restarts the quest and respawns the giver. Plan: from
|
||||
FunkCode.bin (label table in Vectoren.bin, 0x54-byte records: name, +0x40
|
||||
code offset, +0x44 size, +0x48 quest; instructions {u16 op, u16 size, args})
|
||||
list per quest: death labels given to NPCs (spawn / follow instructions with
|
||||
a 0x05 label), the labels that end it (opcode 0x0f) or lose it, and which
|
||||
NPCs must survive (escorts). Then decide per kind: respawn the giver only,
|
||||
or restart the quest.
|
||||
|
||||
## Quest giver death rule untested (2026-10-26)
|
||||
|
||||
`src/mods/questgiver.cpp` restarts a running quest whose giver died and
|
||||
spawns the giver again at her start (docs/quests.md, "Quest givers come
|
||||
back"). Built and checked against the scripts, not yet seen in the game: test
|
||||
with an escort whose giver dies (e.g. "Jagd auf die Wilderer" on the
|
||||
Gladiator, or "Hetzjagd"). Borf's case (the quest ended without the reward)
|
||||
was repaired once by hand.
|
||||
|
||||
## Inventory drawn without its dark backgrounds (2026-10-25, intermittent)
|
||||
|
||||
Reported twice: on opening the inventory the item list had no dark
|
||||
|
||||
Reference in new issue
Block a user