Mortality: remembering where one died
Half of all deaths happened less than 90 seconds after a resurrection: the player went straight back where it had just died. Autonomous players now remember where each death happened and avoid it for a while, no longer farm repeatable quests, ignore NPCs of a festival that is not running, give up on quests they cannot turn in, and keep all of this across restarts. They also flee a lost fight, like a player.
- Commit
- 5791a49
- Build
- Build success (2 min) · Target worldserver
Findings (3 h of logs, 788 deaths)
- 392 deaths (50 %) less than 90 s after resurrection; Crashtroller kept walking to the vendor past Warlord Kolkanis.
- 20 minutes after the “buy rather than hunt” fix: 99 deaths (vs 110) and 152 quests turned in (vs 78). 58 of 99 killers were 1 to 4 levels above their victim.
- Calric bouncing between an absent festival NPC (“Winter gifts”) and Gerard's water: 884 times.
- Repeatable quest “Give Gerard a Drink” turned in 100 times, five cycles in 26 s.
- 537 hunter spells refused as “too close”.
- Blacklists wiped at every restart.
Fixes
- Death zones: the killer's position becomes an area to avoid (40 m for 30 min; 60 m for 1 h for a rare or elite) when choosing targets, spawn points, quest givers and service NPCs (spirit healers excepted).
- Flee a lost fight: below 30 % health, against several attackers or a stronger foe, and if the target is not almost dead, run 45 m the other way; after about 11 s without being hit and more than 30 m from its home, the monster gives up (core leash).
- Rest: single threshold of 85 % health (and 50 % mana); no more character frozen between 80 and 85 %.
- Quests: no repeatable quests; no inactive event NPCs (
game_event_creature); three failed turn-ins → quest set aside for two hours. - Hunter: a spell refused as “too close” by the server is set aside for 5 s.
- Hearthstone: not during a trip to an NPC, at most once per hour, danger measured over 80 m instead of 150.
- Durable memory: blacklists, death zones, set-aside quests and turn-in failures saved every 5 minutes and at shutdown, reloaded at startup.
- Measurement: every death is logged with its killer and attacker count; the status also publishes the server's idle CPU cost (
idle_cpu_ns_per_s).