feat(bridge): clan.disbanded carries the roster it ended
The website tells a disbanded clan's members, but the clan board that follows the event (and, after an outage, precedes the backlog) has already removed that roster from its store. The game walks Members to drop each membership and never empties the list, so it is still whole when OnClanDisbanded fires. Part of protocol 7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -1975,6 +1975,23 @@ namespace Oxide.Plugins
|
||||
|
||||
Dictionary<string, object> frame = ClanFrame("clan.disbanded", clan);
|
||||
PutPlayer(frame, "steamId", "name", steamId);
|
||||
|
||||
// Protocol 7: who was in it. The website tells a disbanded clan's members, and by the
|
||||
// time it reads this frame the next board may already have removed the roster it would
|
||||
// otherwise ask — the board is re-sent seconds after this, and after an outage it is
|
||||
// applied before the backlog. The game has deleted the clan from its database by now,
|
||||
// and walked `Members` to drop each one's membership, but it never empties the list
|
||||
// itself — so it is still whole here, bounded by the clan's own member limit.
|
||||
if (clan.Members != null)
|
||||
{
|
||||
List<object> members = new List<object>();
|
||||
|
||||
foreach (ClanMember member in clan.Members)
|
||||
members.Add(member.SteamId.ToString());
|
||||
|
||||
frame["members"] = members;
|
||||
}
|
||||
|
||||
EmitFrame(frame);
|
||||
|
||||
ScheduleClansBoard();
|
||||
|
||||
Reference in New Issue
Block a user