What have you done in this MR?
- Rewrote graves from scratch using new systems and abundant unit testing
- Fixed a race condition bug that would prevent classes implementing PersistWorld from properly... persisting
- Fixed a bug where graves were (still) too generous
- Fixed a bug where graves would not persist across server reboots
- Fixed a bug where graves would not recognize a relogged player
- Fixed numerous other bugs with graves, see the unit tests for complete coverage and what all now works.
- Grave system now supports quest requirements
Testers:
- Make sure you can change your grave at Father Aereck
- Make sure you can't change your grave to one that requires a quest
- Make sure you can't change your grave while you have a grave active (use ::forcegravedeath to force a death that spawns a grave)
- Make sure all graves take their allotted amount of time to respawn
- Make sure blessing graves requires 70 prayer and adds your available prayer points (as minutes) to the timer in an amount that does not exceed 60.
- Make sure repairing graves requires 2 prayer and adds your available prayer points (as minutes) to the timer in an amount that does not exceed 5.
- Make sure graves persist and continue to function normally across relogs
Everything else should be covered by the unit tests.
Implementation Source (and additional info for testing, if you wish): https://runescape.wiki/w/Gravestone?oldid=854455
Are there any tricky things testers should keep an eye out for?
-
No -
Yes, as follows: -
I have tested these changes thoroughly. -
This requires extra testing due to changes to architecture or other similarly risky changes. -
I used the Thanos Tool for any JSON edits, I did not edit any JSON files by hand (MR will be rejected if there are manual JSON edits). -
I acknowledge that this contribution will be released under the AGPL license.