Admin rules: starting balance, guild claim/member limits, market listing limit; panel UI

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DjMbLQujBHunCCu5GpsHaT
This commit is contained in:
Claude committed 2026-10-01 01:06:51 +00:00
1 parent c859628e93
commit 19d111eeff
8 files changed
+166 -12

No files matched your search

+1
View File
@@ -393,6 +393,7 @@ export interface ProgressionSettings {
global_xp_multiplier: number;
server_xp_multiplier: number;
xp_rates: { playtime_per_hour: number; player_kill: number; mob_kill: number; block_broken: number; block_placed: number; message: number };
rules: { starting_balance: number; guild_base_claims: number; guild_claims_per_member: number; guild_claims_per_level: number; guild_max_members: number; market_max_listings: number };
}
export interface ProgressionView {
+14
View File
@@ -17,6 +17,7 @@
global_xp_multiplier: 1,
server_xp_multiplier: 1,
xp_rates: { playtime_per_hour: 600, player_kill: 50, mob_kill: 15, block_broken: 0.2, block_placed: 0.2, message: 2 },
rules: { starting_balance: 1000, guild_base_claims: 16, guild_claims_per_member: 0, guild_claims_per_level: 0, guild_max_members: 0, market_max_listings: 0 },
};
let tab = $state<'quests' | 'xp' | 'players'>('quests');
@@ -264,6 +265,19 @@
</div>
<p class="muted small">These stack with the multipliers in each server's plugin/mod config (server levels default to 1.5× there). Quest and achievement XP is set per quest/achievement.</p>
</section>
<section class="card">
<div class="section-title"><h2><Info size={16} /> Economy &amp; guild rules</h2></div>
<p class="muted small">Apply on every server. Home limits, cooldowns and RTP are set per server in the plugin/mod config, and ranks can raise home limits with permission nodes (scopenet.homes.10).</p>
<div class="rates">
<label class="field"><span class="lab">Starting balance <span class="unit">$</span></span><input type="number" min="0" step="50" bind:value={s.rules.starting_balance} /></label>
<label class="field"><span class="lab">Guild claims at creation <span class="unit">chunks</span></span><input type="number" min="0" step="1" bind:value={s.rules.guild_base_claims} /></label>
<label class="field"><span class="lab">Extra claims per member <span class="unit">chunks</span></span><input type="number" min="0" step="1" bind:value={s.rules.guild_claims_per_member} /></label>
<label class="field"><span class="lab">Extra claims per guild level <span class="unit">chunks</span></span><input type="number" min="0" step="1" bind:value={s.rules.guild_claims_per_level} /></label>
<label class="field"><span class="lab">Guild member limit <span class="unit">0 = none</span></span><input type="number" min="0" step="1" bind:value={s.rules.guild_max_members} /></label>
<label class="field"><span class="lab">Market listings per player <span class="unit">0 = none</span></span><input type="number" min="0" step="1" bind:value={s.rules.market_max_listings} /></label>
</div>
</section>
</div>
{:else}
<section class="card">