3 KiB
3 KiB
Exile Hunter's Bestiary - changelog & audit response
Final stable state
This build is the final working configuration for the current ModernUO project state:
- No BaseCreature patch required.
- Death handling is done through generated death events.
- Drop result is resolved from combat tracker + killer resolution.
- Treatise is dropped into the corpse when available; otherwise, it is retried for a short window.
- Legacy partial-file patching is not used.
Critical fixes applied
- Treatise drop now lands in the corpse when the corpse exists.
- Death processing no longer fails because the mob is already deleted by the time the event fires.
- Auto-retry is used when corpse is not yet available immediately after death.
- Duplicate processing of the same death is blocked by Serial-based guard.
- Kill credit is resolved from LastKiller or combat tracker, not from dead/invalid objects.
- Dead code and noisy debug logging were removed.
- Registry validation is preserved.
- Profile persistence remains compatible with XML save/load.
Architecture
- Death hook is registered via generated event:
BaseCreature.CreatureDeathEvent. - Combat tracker records the last player damage event and the creature location/map.
- Bestiary drop logic is separated into:
- Registry
- Profile
- Store
- Engine
- Combat tracker
- Death hook
- UI gump
- Treatise item
Balance
- Per-creature mastery bonus: +10%
- Category milestone bonus: up to +20%
- Total hard cap: +25%
- Pity timer: guaranteed treatise every 40 kills per creature
- Damage mode: Mark is default and patch-free
Important note
The system does NOT require modifying BaseCreature.cs in the final version.
The working approach is:
- use combat tracker from
AggressiveAction - use generated death event
- resolve actual killer
- drop treatise into corpse or retry for a short time
v3.2 - final stable build
- Removed old patch-based death handling and fallback partial overrides.
- Removed excessive debug logging from runtime combat flow.
- Death event is now the only actual drop trigger.
- Combat tracker stores last player hit and location before the mob is deleted.
- Treatise drop request waits a little if corpse is not immediately available.
- Final implementation is leaner and safer than patch-based variations.
v3.3 - docs cleanup
- Removed outdated instructions about BaseCreature edits.
- Removed legacy mentions of "Variant A/B/C/D" patch hooks.
- Clarified that
HunterCreatureDeathEvent.csis the correct active death hook. - Corrected troubleshooting around corpse timing in ModernUO.
Current supported behavior
- Treatise drops only for registered creature types.
- Only players can receive credit.
- Summoned and bonded creatures are ignored.
- Global chance override:
exileBestiary.drop.chance - Default chance values are still taken from the registry if the global key is unset or set to -1.
exileBestiary.debugis available for optional diagnostics, but production logs should stay clean.