Setup

War Plan

Enter members and targets, then generate.

📋 Event Roster Builder

The post leaders hand-type before every event, built in seconds: paste your members (strongest first — round-robin spreads them evenly), pick an event preset or make your own groups, add per-group orders, copy to Discord. Your roster and groups save automatically for next week.

Role Assignments

Paste members, pick a preset, and build.

From member list to battle plan

The Alliance War Planner takes your real member names (one per line), your target list, and the number of rallies you want to run, then assigns members to rallies round-robin so the load spreads evenly. The output is a copy-ready assignment sheet — who leads what, who joins where — which is the artifact alliance chats actually need in the ten minutes before a fight.

Making the plan survive contact

  • Round-robin balances headcount, not power — swap your two strongest members onto separate rallies after generating, using the power data in your Alliance Roster.
  • Rally count is capped by your available leads' deployment capacity and the timer math — sanity-check the timeline with the Rally Planner and march times with the Map Planner.
  • For headcount-only splits without names, the lightweight Alliance Mobilization planner is faster.

How the war planner calculator works

Assigns your alliance's members across rally targets and tells you what each rally is carrying.

How many rallies you can actually run
numRallies = Math.min(numRallies, targets.length || 1, members.length); — Capped by the number of targets AND the number of members — you cannot run more rallies than you have either.
Members per rally
Math.ceil(members.length / numRallies) — Rounded UP, so the figure is the largest rally rather than an average that leaves someone out.

It reads the roster you keep on the roster page, which lives in your own browser. Nothing about your alliance is sent anywhere.

Every expression shown in code above is quoted from js/calc-war.js, which is the file this page actually runs.