Pre-fight Blood Prince Council and Blood-Queen Lana'thel planning for the original Wrath 3.3.5a client.
Download the latest release · Adapt it for your raid · Read the architecture
Important
This is the source-available Pizza Warriors reference implementation—not a universal plug-and-play addon. Its encounter rules, workbook geometry, and publishing workflow reflect one raid team's strategy. Fork it and deliberately adapt those contracts before using it with another group.
Pizza Warriors Raid Planner captures raid composition and damage evidence inside Icecrown Citadel, saves valid Festergut kills as reusable benchmarks, and produces reviewable assignments before the pull. A companion Windows publisher transfers the chosen plan into a raid-position workbook and publishes native 4096px encounter images to Discord.
| Planner | Output |
|---|---|
| Festergut history | Confirmed kills plus clearly labelled wipe/pull records; only kills are selectable benchmarks |
| Blood Prince Council | Valanar-active positions, Discipline Priest H1, Warlock R1/Curse of Tongues, Kinetic Bomb coverage, Divine Sacrifice, and Fire Aura Mastery |
| Blood-Queen Lana'thel | Position-aware bite tree, R1/R6 ranged anchors, Rogue/DPS-DK Middle rules, side Retribution groups, Pact Shadow AM, and Airphase DSac |
| Roster audible | One current-roster rebuild after Festergut, with incoming/outgoing review and same-spec historical fallback only |
| Desktop publisher | One atomic BPC+BQL revision, values-only workbook updates, and crisp 4K Discord images with transparent outer margins |
The BQL tree uses the second bite to establish the opposite ranged side, the third bite to seed one melee branch per side, and the final rounds to prefer same-role, same-side, then same-class/spec pairings. Bite targets move to stationary biters and return home afterward. If the roster changes after Festergut, /prp audible scans the current raid and rebuilds both encounters together. An incoming player receives only that player's own same-class/same-spec Festergut history when available and is otherwise clearly marked unbenchmarked—an ICC average is never substituted.
flowchart LR
A["WoW 3.3.5a addon"] -->|"/reload flushes SavedVariables"| B["Local Base64 TSV export"]
B --> C["Authenticated Windows publisher"]
C --> D["Bound Google Apps Script"]
D --> E["Raid-position workbook"]
C --> F["Native 4096px PNG render"]
F --> D
D --> G["Discord #raid-positions"]
The addon itself never contacts Google or Discord and never performs protected gameplay actions. Network access begins only when the user launches the external desktop publisher after WoW has written SavedVariables.
| Path | Purpose |
|---|---|
Root Lua files and Media/ |
Loadable WoW addon |
tools/DiscordPost.gs |
Bound Apps Script workbook endpoint |
tools/Sync-PizzaRaidPlannerToSheets.ps1 |
Authenticated desktop transfer and 4K renderer |
tests/ |
Offline Lua, JavaScript, and PowerShell regression tests |
scripts/ |
Secret gate and deterministic release builder |
docs/ |
Adaptation, architecture, compatibility, and validation guides |
- Read the adaptation guide.
- Fork the repository under the included noncommercial license.
- Replace the Pizza Warriors name and emblem with your own branding.
- Adapt the BPC/BQL strategy rules and workbook ranges to your raid.
- Run the secret gate and all offline tests before deploying anything.
- Build separate addon and desktop release archives with
scripts/Build-Release.ps1.
The public source contains no Discord webhook, deployment URL, upload token, live workbook ID, WoW account name, or SavedVariables history. Each fork binds itself to its own workbook during first-time setup.
- Desktop requests require a randomly generated 64-character token.
- The token is encrypted with a random per-user key; the ACL-restricted key and ciphertext remain separate and never enter addon SavedVariables.
- Desktop publishing accepts only an exact Google Apps Script deployment endpoint.
- The Apps Script endpoint accepts only fixed actions, sheets, and ranges.
- TSV cells are neutralized against spreadsheet formula injection.
- A failed prepare restores both the managed TSV dump and all live-sheet blocks.
- Two-stage publish tickets bind validated PDFs and PNGs to one exact plan.
- Atomic plan metadata prevents a dirty roster, stale/missing Festergut benchmark, or mixed BPC/BQL revisions from reaching the workbook.
- Discord receives only server-validated PNG payloads within fixed dimensions and size limits.
- Duplicate fingerprints prevent the same flushed plan from being posted twice.
See SECURITY.md for reporting and docs/ARCHITECTURE.md for the trust model.
- World of Warcraft client interface
30300(Wrath 3.3.5a) - Optional ElvUI styling
- Optional Skada damage integration
- Windows PowerShell 5.1+
- Google Sheets with a bound Apps Script project
- A Discord channel webhook controlled by the adapting raid team
Warmane and other private-server combat-log behavior must be validated in game. Offline tests confirm the planner's contracts but cannot prove a server's spell identifiers or encounter events.
Copyright © 2026 Neil Mitchell. The software is available under the PolyForm Noncommercial License 1.0.0 with the required notices in NOTICE.md.
You may fork, study, adapt, and distribute it for noncommercial purposes under those terms. Commercial use is not granted. The Pizza Warriors name, emblem, and visual identity are reserved and are not licensed for use in derivative branding.
This upstream repository does not accept commits, issues, or pull requests. Approved releases are archived read-only; users may download or fork them. See CONTRIBUTING.md and docs/REPOSITORY_POLICY.md.
World of Warcraft and Warcraft are trademarks of Blizzard Entertainment. This project is an independent community tool and is not affiliated with or endorsed by Blizzard Entertainment.

