Repository navigation
Inactive members (four weeks offline) give no prestige and give up their offices - #238
Merged
Merged
Conversation
A member marked inactive (21 days offline) stays in their guild but now counts for nothing until they log in again: - Prestige: the Members line counts only active members. - Counts: new county claims, levy caps, a guild's member share in stability, and movement strength use active members only. Counties a realm already holds are still kept on its full membership. - Offices: inactive members lose council seats and candidacies, cannot vote, stand for leader, succeed the leader, or lead a movement or cause, and an appointed Spymaster gives up the post. The realm leader stays leader, and guild leaders keep their guilds. The inactivity check now reads the day count before the online lookup, so active members cost a map read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 18 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
The inactivity threshold moves from 21 to 28 offline days, as requested. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
XxFran10xX
added a commit
that referenced
this pull request
Nov 12, 2026
…ws (#244) Since 4.28.0 (#238) every law, trade and favour income estimate on Main showed "Income estimate unavailable". Member shares in stability and upkeep skip members 28+ days offline, and whether such a member is online asks TLibs, which refuses lookups off the main thread, so the preview worker threw on the first guild with an inactive member. FrozenReads now also captures the inactive members with each preview copy: one pass over the offline day counts, minus the characters being played now (one session lookup per online player, none when nobody is past the threshold). Inside a frozen read isMemberInactive is a set lookup, so the worker no longer calls TLibs or reads the day-count map the server thread writes. The live check outside previews is unchanged. Co-authored-by: XxFran10xX <318299142+XxFran10xX@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A member marked inactive stays in their guild but counts for nothing until they log in again. The inactivity threshold also moves from 21 to 28 offline days (four weeks), as requested.
No longer counted
Faction.updatePrestigeTitle.countyLimitReached). Counties already held are still kept on full membership (canBeHeld,countyCheckunchanged).Military,LevySnapshotCalculator)Guild.getMemberPercentage)Movement.getPower)Offices given up (enforced by the existing per-second government tick or on the next read)
Council.canBeMember/canRemainMember). An inactive member keeps a council refusal for when they return.Faction.canVote) and standing for leader (Election.canBeCandidate)Faction.canBecomeLeader)Cause.canBeLeader,Movement.tick)EspionageService.validHolder), which falls back to the leader as for any vacancyKept: the realm leader stays leader (and keeps a default Spymaster holding), and guild leaders keep their guilds.
On login, the faction's prestige is recalculated so the returning member counts again.
isMemberInactivenow reads the day count before the online lookup.Companion: TF-Minecraft/Dowsing#31 (nodes).
Tests
InactiveMembersTestandInactiveSpymasterTest.QuarantineCommandsTest.reportsAnUnreadableOrUnwritableQuarantinefails, which fails on this host (running as root) onmainas well. Coverage shows only the known environment-only misses.🤖 Generated with Claude Code