feat: contraband list with flagging and optional removal

Staff list contraband items on a new dashboard page (item search, reason, flag or flag and remove;
contraband_manage to edit, reports_view to see). World servers check every inventory when a
character loads and every item a player receives: each find is an economy flag of the new kind
Contraband, shown with the other flags and in the character's related data. Items marked for
removal are taken away, with a character snapshot kept first so they can be given back, an audit
entry and a mail or chat message telling the player why. Staff are skipped unless
contraband_ignore_staff is off. Worlds reload the list when it changes (RELOAD_CONTRABAND, added
at the end of ePlayerAction).

Fixes #1563

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-26 23:20:16 -05:00
parent 341ce89a6a
commit b2403b09ea
36 changed files with 766 additions and 22 deletions

View File

@@ -58,7 +58,10 @@ public:
DUPLICATE = 3, // an object id exists in more than one place (day 0, so each item is flagged once)
// different items share an object id and the login migration will not separate them: the characters holding
// them already migrated, or a copy is in mail (day 0)
ID_COLLISION = 4
ID_COLLISION = 4,
// a character has an item on the contraband list (value: how many, baseline: 1 when it was removed). Found when
// the character loaded (day 0, one flag per item) or when the item was added (that day, item id 0)
CONTRABAND = 5
};
enum class eFlagStatus : uint8_t { OPEN = 0, DISMISSED = 1, ACTIONED = 2 };