Guild — UX Specification¶
Every screen, modal and popup of the Guild feature. Companion to gdd.md
(section references point there); grounded in
game_design_features/_ux-conventions/ — all component names below come
from that corpus' glossary (index.md) and must be reused, not reinvented.
Scope: the full single release — core (producer spec), Guild Boss, economy (currency / shop / tech / gifting), Guild Showdown, Guild War.
0. Entry point and navigation map¶
- The Guild is a top-level destination, chapter-gated like every other feature (initial gate: two stages after the Arena, provisional). The entry button appears with the standard feature-unlock reveal and carries the first-join incentive callout until the player joins a guild.
- Entry routes by membership: no guild → S1 No-Guild; in a guild → S3 Guild.
- All guild screens are leaf sub-screens: no bottom-nav, back =
top-left chevron (main-hud.md rule). Titles are
screen-title-banner.
HUD ─ Guild button
├─ S1 No-Guild ── tabs: Rating · Search · Invites
│ └─ S2 Create Guild (form)
└─ S3 Guild ───── tabs: Overview · Members · Donate · Leaderboard · Log
│ (+ Settings for deputy+, + Applications for guard+)
├─ S4 Guild Boss
├─ S5 Guild Showdown
├─ S6 Guild War ── battlefield · defenders (read-only) · vault · war shop
├─ S7 Guild Shop
├─ S8 Guild Gift
├─ S9 Guild Rankings (also from the seasonal leaderboards hub)
└─ Chat (existing surface, Clan channel tab)
S1 — No-Guild screen¶
Tabs via category-tab-strip: Rating · Search · Invites.
S1a Rating¶
screen-title-banner— "GUILDS".- Create guild action — prominent, price shown on the button
(
price-buttonin hard currency). Disabled with reason while the post-leave cooldown runs. - Scrolling list of guild-rows, sorted by season rating (clan points, descending; ties: guild level, then guild age).
guild-row anatomy (the player-row adapted to a guild), left → right:
guild emblem (in the avatar-badge position) · name + tag · guild
level · season rating · members current / max · required player
level · trailing action — Join (green, auto-join guilds) / Apply
/ disabled Applied / disabled with the reason ("Full", "Lv 20+")
where the guild is not joinable. Identity left, numbers right, action
terminates the row.
Rules: - Unavailable guilds stay visible in their rating position, action disabled with the reason — the list is the realm's guild landscape and a goal to aim at, not just a join menu. Only Dormant/Retired guilds are excluded (they cannot receive applications at all). - Realm with no guilds → the screen leads with Create guild. - Loading = skeleton rows, never a blank list.
S1b Search¶
Single field, exact name or tag; the empty state says the search is exact. Results reuse guild-row.
S1c Invites¶
Incoming invites as guild-rows plus the sender (avatar-badge + name), with Accept / Decline trailing actions. Tab carries a count badge. Accepting runs the standard checks; stale invites show the failure reason inline (guild full / already in a guild).
Components: category-tab-strip, guild-row(player-row variant), avatar-badge, price-button, action-button(green), skeleton-rows.
S2 — Create Guild (form)¶
popup-header + a single settings-form:
1. Name — live uniqueness validation + moderation result inline.
2. Description — free text.
3. Emblem — grid picker (skills-select.md pattern: fixed-column
cells, selected = highlighted; no locked cells at launch).
4. Confirm — green action-button carrying the hard-currency price.
Explicit confirmation: this spends hard currency.
Blocked states: under post-leave cooldown (button disabled + reason + timer); name rejected by moderation (M20).
S3 — Guild screen¶
Header (always visible above the tabs): emblem large · name + tag
(tag is copyable — LW precedent) · guild level · experience
labeled-progress-bar toward next level · members current / max.
Level milestones change the header's frame treatment (visual identity
section of the GDD).
Tabs via category-tab-strip. Tab visibility is role-derived: Settings
renders for deputy+; Applications for guard+ (hidden entirely otherwise —
no dead tabs).
S3a Overview (default landing tab)¶
- Donation widget (compact: today's
used / 5+ green Donate). - Season standing — the guild's clan-point rank + season timer.
- Pending claims block — every outstanding claimable with its source
and timer, each with its own
green-claim, plus a Claim All when more than one is ready. This is the tab's most important element after the donation: nothing in the feature auto-credits, so this block is what stops a player losing a chest they earned (GDD §19). - Content entry cards — Boss · Showdown · War · Shop · Gift as
destination-cards with a one-line live status each ("Boss Lv.12 — chest ready", "Showdown: day 3, medals 2:1", "War: Battle on Sunday"). A card whose surface owes something carries the claim badge. - Most recent event-log entries (3–4 lines).
Rule: this tab is what a once-a-day player sees — it must contain the free daily action, every claim they are owed, and every "something is ready" signal, and nothing that requires reading.
S3b Members (roster)¶
Rows sorted by rank, then last-online. member-row = player-row +
rank label + last-online-relative + inactive marker past the
threshold. Tapping a row opens the player's Profile Card (universal
avatar behaviour).
Context menu per row, derived from the §5 matrix and rank distance: Kick (strictly-below targets only), Mute in chat (deputy+), Change rank (leader). A member with no applicable powers sees no menu at all — never a menu of disabled items.
Leader extra: bulk-kick action over members past the inactive threshold (M5 confirm lists them).
Succession countdown: when the leader is past the warning threshold, a banner on this tab shows the visible countdown ("Leadership transfers in 2d") — succession announces itself before it fires.
S3c Donate¶
- Today's state
used / 5; five slots rendered as a ladder — slot 1 marked Free, slots 2–5 with their rising hard-currency price. - Per-donation payout: guild XP granted (flat — same number on every slot) + the donor's personal reward.
- Donate → M11 Obtained popup (
reward-grid). - Below: shared donation history (who donated, when — social proof), and a Donation Ranking entry (M12).
- Cap reached → the action shows the reset timer.
S3d Leaderboard¶
Two sub-tabs: by player level and by clan points; both descending,
both with sticky-self-row. Clan-point board carries the season timer
(arena-leaderboard.md conventions; no podium — podium is reserved for
top-of-ladder screens, this is an intra-guild list).
S3e Log¶
Chronological event log: joins, kicks, departures, rank changes, guild level-ups, settings changes, succession, showdown/war signups. Read-only rows: icon · text · relative time.
S3f Settings (deputy+)¶
settings-form popup pattern (auto-chest.md): label + control rows.
- Deputy sees: auto-join toggle · minimum level · description edit.
- Leader additionally: change emblem (grid picker M10) · rename (M9) ·
transfer leadership (M7) · disband (M8) — the last two behind
two-step confirmations.
S3g Applications (guard+)¶
Rich player-rows (party-select.md: avatar + level badge + name + power + loadout-preview + last-online) with Accept / Decline and bulk Accept all / Decline all. Checks re-run at accept: a stale row resolves with an inline reason instead of failing silently.
S4 — Guild Boss¶
Model: LoM Blazing Cave (GDD §15). The screen sells collective progress.
screen-title-banner— "GUILD BOSS".- Boss art (
featured-art-banner) + current boss level. - Pooled HP bar of the current level (
labeled-progress-bar) with a chest icon at the threshold end — the LoM read: fill the bar together, everyone gets the chest. - Attempts readout:
attempts n / 2+ regen timer (1 per 8 h, bank 2). Attempts are not purchasable — no price affordance exists here. - Begin (green CTA). Disabled at 0 attempts with the regen timer.
- Participation list — every member's attempts today (member-row
attempts ×N). This list shows attempts, never damage — a public damage board is explicitly ruled out (GDD §15); do not add a "Battle Records by damage" view. There is no cycle label anywhere on this screen: the ladder is permanent, so the only period that exists here is the day.- Chest ready →
green-claimon the chest; claim opensreward-grid(M13). Unclaimed chests are lost at the daily server reset — no mail fallback here, by decision (GDD §19), so the chest carries the reset countdown and says plainly that it expires. This is the one daily-cadence claim in the feature and the only one where the caption has to warn rather than reassure.
S5 — Guild Showdown¶
Model: LW Showdown (GDD §17). One screen, three zones.
The opponent here is the week's single rival — the same guild S6 fights on Sunday. Both screens show the same emblem and the same name all week; if they ever disagree, one of them is reading the wrong pairing record.
- Matchup header: our emblem + name vs opponent's, week medal score
between them, day label + weight ("Friday · medals ×2"), settlement
lockout countdown near midnight. A
warchip on the opponent links straight to S6 — one rival, two surfaces. - Today's race: both guilds' points today as two
labeled-progress- bars or paired readouts — who is ahead is legible at a glance. - Task list (
quest-rowanatomy: icon · points per unit · description · "Go ›" navigation). Tasks are repeatable — rows never show a completion fraction, only their point yield. Every row is a spend (arena ticket, dungeon attempt, boss attempt, war attack, donation, chest, pull, gold), so each row's "Go ›" lands on a screen where something is consumed; a row that costs nothing does not belong here (GDD §17). On Sunday the war-attack row sits at the top — it is the day's heaviest yield and the reason the two modes share a peak. - Personal milestones:
point-track-meterover the player's weekly points with milestone chests (LW's cumulative ladder). - Leaderboards: daily and weekly, ranked across the combined pool of both guilds (player-row + sticky-self-row; opponents' rows carry their guild emblem chip).
- Reward tiers note: victory / consolation tier requires the guild's own
weekly points to clear the activity threshold — the header shows
guild points / thresholdso the gate is visible all week. - Monday state: reward day — task zone replaced by results and the tier
claim (
reward-grid+green-claim); no tasks render. The tier stays claimable until next week's reward day, and says so. - Info
(i)opens the rules popup (M21).
Edge surfacing: a mid-week joiner sees a neutral banner "you can score from now"; a player who switched guilds sees the forfeit notice for the day. If the opponent forfeited (disband/retire), the header swaps to "Forfeit — win the week by playing" with the solo threshold.
Three unpaired states, and they must not look alike (GDD cold start):
- Below the realm quorum — the destination opens but the matchup zone is replaced by the open condition and the live count ("Opens at 4 guilds on this realm — 2 so far"). Never a hidden tab.
- Rest week (odd guild count) — an explicit "no rival this week" state with the date the next pairing lands. Rewards are not withheld silently; the screen says there is nothing to win.
- Guild not eligible — the reason names the failed condition with its
current value (
active members n / floor, or the guild-level floor), because both are things the guild can fix.
S6 — Guild War¶
Model: LW Guild War (GDD §18). Four surfaces.
S6a War hub¶
- Matchup banner: our guild vs opponent — the same rival S5 races all week — with the star score between (0 VS 0) and the phase label + countdown ("Preparation · 3d 8h"). The star score is the win condition made visible: more Stars taken wins, so this readout is never decorative and never a percentage.
- Enter Battlefield (green CTA).
- Bottom icon row: Rank · Log · Shop · Vault (LW's own layout).
- Info
(i)→ rules popup (M21), which states the win condition and both tiebreaks (fewer Stars lost, then seed) in plain words. - Mid-round joiner sees the spectate notice (M22) once.
- Result state (after Sunday settles): won/lost banner, final Stars
taken vs lost, the guild's updated season record (W–L), and the
payout as two separate claims — Honor Coins (
green-claim) and one Vault opening — both expiring at the end of the next Battle phase, both showing that timer. The season-record line is the only place a war result persists, so it must appear here and on the guild profile, not only in a log entry. - Unpaired states mirror S5 exactly — below quorum / rest week /
ineligible — plus one of its own: fewer than nine eligible members
renders a note with the count (
6 defenders + 3 AI), not a block.
S6b Battlefield¶
- Two territory views via tabs: Allied Territory / Enemy Territory.
- Defenders rendered in the open:
member-spine(or avatar) + name + remaining Stars of Victory above + power beneath. Fully public — both sides see everything; a war Log button sits on the field. - Attacker's own remaining attacks readout + own power (top corner).
- Tapping an enemy defender → M14 engagement-mode select: three
mode cards side-by-side (
comparepattern) — Duel (no modifier, 1 Star) · Siege (both sides' HP up, 1 Star) · Ambush (both sides' damage up and HP down, 2 Stars). Each card states the modifier as applying to both fighters — the modifier is symmetric, and a card that reads like an attacker buff misdescribes the fight. Confirm launches it. - Defeated defender retreats visually; his Stars move to the score.
S6c Our defenders (read-only, everyone)¶
There is no assignment screen and no picker — the nine defenders are
the guild's strongest nine by character_power, selected automatically
when Preparation ends (GDD §18). This screen only shows that, and its
whole job is making the rule legible so nobody hunts for a button that
does not exist.
- Nine slots: 3 Elite + 6 Core, Elite slots visually heavier and
labelled with what they hold — 3 Stars each against Core's 2,
21 on the field. Rows are
player-row+ power, ordered by power. - Two states, and they must read differently.
- During Preparation — a projection, captioned as one: "Who would defend if Preparation ended now", plus the lock countdown. A member's own row is highlighted, and a member just below the cut sees their rank ("#10 — 2,140 power to enter") — that turns the screen into a power-progression nudge instead of a chore.
- After the lock — the frozen lineup, captioned "Locked until the Battle ends". Later upgrades do not apply; say it here.
- Unfilled slots show the AI-reinforcement placeholder ("weak AI defends
this slot"), with the count visible in the header (
defenders 6 + 3 AI). - A defender who leaves the guild after the lock renders as an AI reinforcement holding the same Stars — never silently re-filled from the roster.
S6d Vault (popup)¶
popup-header + one open attempt (green), reward-grid result,
expiry timer ("opens until end of next Battle phase"). Non-participants
see the locked state with the reason. Changing guilds forfeits access —
the popup says so while a war is live.
S6e War shop¶
Guild War Shop in Honor Coins (separate currency readout top-right).
Item rows/cards with per-item weekly caps (Daily/Weekly Limit n/n —
LW's shop convention, see S7).
S7 — Guild Shop¶
- Header + Guild Coin readout (personal balance) top-right. Guild Coins and the War's Honor Coins never appear in the same readout — two currencies, two shops, no conversion (GDD §16).
- Item grid:
offer-card-like cells — item icon ×quantity · price in guild currency · per-item limit tag ("Daily 1/1", "Weekly 4/5") · Sold Out state when the limit is spent (LW convention). - Stock scales with guild level (locked rows show the guild-level
unlock condition —
locked = greyed + unlock condition, the grid picker rule).
S8 — Guild Gift¶
Two tabs (LW): Gift Chest (achievement-generated) · Guild Gift (pack-purchase-generated).
- Explainer line +
(i)Obtain popup listing the trigger conditions (daily quests, arena ranks, first-time floors; pack purchases). - Pending gifts as a
reward-gridlist; Claim All (green). - Daily Gift Box Claim Limit
n / capreadout (cap is generous — 200/day in the source; it does not reset on leaving a guild). - Anonymous Gift Giving checkbox for senders (form-row).
- Empty state: "No gifts available".
S9 — Guild Rankings (seasonal ladder)¶
The realm's guilds ranked by season clan points. Reachable from the seasonal leaderboards hub (alongside the player boards) and from the S3a season-standing block; visible to guildless players too — it is the recruitment shop window.
screen-title-banner— "GUILD RANKINGS" + season-timer subtitle.- Podium — top-3 guilds as elevated emblems/banners (the arena-leaderboard podium treatment, applied to guilds).
- Ranked list of guild-rows: emblem · name + tag · level · members
current / max· season war record (W–L, the visible tiebreak) · season points (right-aligned). Guilds holding last season's top-3 badge render it on the emblem frame — cosmetic, and it expires at the next rollover. sticky-self-row— the viewer's own guild pinned with rank and points; guildless viewers get no pinned row.- Tapping a row opens the guild's public view (S3 header + read-only Members) — from there a guildless player can Join/Apply.
Components: screen-title-banner(+season-timer), podium, guild-row(player-row variant), sticky-self-row.
Chat¶
The guild channel is a channel tab in the existing chat surface (chat.md) — no new chat UI. Auto-join on entering a guild, auto-remove on leaving. Muted member: input bar disabled with the reason; mute/unmute is a member-row context action (deputy+). Unread badge follows the existing notification rules.
Guild identity everywhere¶
The emblem + name chip mounts beside the player identity on every surface that renders a player: profile card, chat message, leaderboard row, arena opponent row, party, friends list. Subordinate to the player's own identity (sits beside the avatar, never competes with it). Tapping the chip opens the guild's public view (S3 header + read-only Members).
Claiming — the rule that touches every screen¶
Nothing in this feature is auto-credited (GDD §19). Every reward is a pending claim the player collects with an explicit tap, so every surface below that pays anything needs the same three pieces:
- A claim affordance —
green-claimon the item, or Claim All where the count can be large (S8 gifts). A bulk button is still a player action; there is no auto-collect setting. - A visible expiry, and it must say what expiry means here — countdown when it is short (boss chest → daily reset, Vault → end of next Battle phase), a date when it is long. Weekly-or-rarer claims fall back to mail and say so on the item ("goes to your mail if not claimed"); the boss chest, gifts and the Vault are lost, and their caption has to be blunt about it. A player must never have to guess which kind they are looking at.
- A refusal state that explains itself — expired, or membership lost since it was earned. The reason replaces the button; the row never just vanishes.
Where the badges live — three levels, so nothing is hunted for: the HUD guild entry point carries a dot when anything is claimable; the owning tab carries a count; S3a Overview carries a pending-claims block listing every outstanding item with its source and timer. A player who opens the game once a day should reach every claim from Overview without visiting six screens.
The claim surfaces: S4 boss chest · S5 Showdown tier and personal milestones · S6 war payout and Vault · S8 gifts · season rewards (mail) · the first-join incentive. The one non-claim payout is the donation's own reward — the Donate tap is the action and M11 is its receipt.
Mail fallback, surfaced honestly. Where a claim expired into mail, the surface that owed it says so once — "last week's tier is in your mail", with a route there — so the player is never comparing an empty screen against a memory. And a guild-sourced claim is mailed only if the player was still a member when it expired (GDD §19): leaving with one pending loses it outright, which is the same rule the boss chest already states.
Modal / popup inventory¶
| # | Popup | Pattern | Content / rules |
|---|---|---|---|
| M1 | Auto-join confirm | popup-header + caption | Guild summary + Join (green); failure reasons inline |
| M2 | Apply / Withdraw | trailing action state | Applied state offers Withdraw |
| M3 | Invite accept | guild-row + sender | Accept / Decline |
| M4 | Leave confirm | two-step caption | States the 60-minute global cooldown before commit; last member → warns the guild retires |
| M5 | Kick confirm | caption | Shows target; bulk variant lists all; rate-limit feedback if throttled |
| M6 | Change rank | grid of 4 ranks | Leader only; slot counts shown per rank ("Deputies 2/3") |
| M7 | Transfer leadership | two-step | Explains the outgoing leader's rank cascade |
| M8 | Disband | two-step, destructive | Consequence list: members released (no cooldown), war forfeit if in Preparation, name freed / tag retired |
| M9 | Rename | form + moderation | Rename cooldown shown; moderation result inline |
| M10 | Emblem picker | grid picker | Pre-authored set only |
| M11 | Donate result | reward-grid | "Obtained: Guild XP + personal reward" |
| M12 | Donation ranking | player-rows | Lifetime contributions + "Donated today"; self-row pinned |
| M13 | Boss chest claim | reward-grid | Claim requires membership; reset timer shown |
| M14 | Engagement mode | 3 compare cards | Duel / Siege / Ambush → symmetric modifier → Stars on win (1 / 1 / 2) |
| M15 | Showdown results | reward-grid + tiers | Monday; shows whether the activity threshold was met |
| M16 | War Vault | reward-grid + timer | One attempt; expiry; participation-gated |
| M17 | Season end | summary | Final guild rank + rewards banded by rank, claimed from mail; personal payout separately; top-3 badge grant called out (cosmetic, expires next season) |
| M23 | Claim refused | inline notice | Replaces the button with the reason — expired, or membership lost since it was earned |
| M18 | Kicked / disbanded while away | notice | Tells what happened (guild name + date) → routes to S1; never an empty guild view |
| M19 | "You are now leader" | notice | Fired on succession; links to Settings |
| M20 | Moderation reject | inline error | Name/description rejected — explain and keep input |
| M21 | Rules info (Boss/Showdown/War) | popup-header + text | The (i) popups, LW-style numbered rules |
| M22 | War spectate notice | one-time notice | "Joined during Preparation/Battle — spectate this round" |
Notifications¶
Restraint over coverage — this is the feature most able to generate obligation. Notify on: application accepted · invite received · guild level-up · rank change · boss chest ready · showdown/war phase start · vault expiring. Do not notify on every donation, join, or chat message (chat's own unread badge covers the last).
States checklist¶
- Loading — skeleton rows, never blank.
- Guild full / level not met — actions render disabled with the reason, never fail after the tap.
- Post-leave cooldown (60 min) — Join/Apply/Create disabled with a live countdown, never a bare "unavailable". An hour is short enough that the timer is the whole message.
- Leader inactive — succession countdown banner on the roster.
- Dormant guild (viewer returning) — a log line, nothing else; first login revives silently.
- Season ended — clan-point board shows final standing + new season timer.
- Donation cap reached — reset timer on the action.
- Boss: 0 attempts (regen timer) · chest unclaimed (reset timer).
- Anything claimable — badge at three levels (HUD entry · tab · Overview block), expiry on the item stating whether it mails or is lost, self-explaining refusal when expired or membership was lost, and a one-time "it's in your mail" note where the fallback fired. Nothing auto-credits.
- Showdown: lockout window (23:50–24:00 — "points locked") · reward day · forfeit banner.
- War: per-phase screens; joiner-spectator; unopened vault expiry; defender list is projection before the lock, frozen lineup after — captioned, never left to a timer to imply.
- GvG unavailable — three distinct states on both S5 and S6, never collapsed into one empty screen: below realm quorum (condition + live count) · rest week (next pairing date) · guild ineligible (failed condition + current value). "Not yet paired" and "no rival this week" are different sentences.
Localization & accessibility¶
All static strings localized; guild names/descriptions are user content and are not. Numbers locale-aware. Emblems must stay distinguishable for colour-blind players — shape variety, not just colour (they render at four sizes: chat-chip, row, header, picker; author large, verify at chat-chip size).