Restructures the game around the cyclical run loop from Game Design Doc V2:
5 waves = a cycle, 3 cycles = a phase, each phase ends in a boss.
- New TD.Gameplay.Waves: WaveGroup / PhaseDefinition / RunDefinition author the
run as draggable weighted pools; RunState owns phase/cycle position, the drawn
wave slots, and the per-slot enemy buff sets. WaveManager's flat wave array is
gone -- it now only runs the encounter RunState points at.
- New TD.Gameplay.EnemyUpgrades: the post-wave enemy-buff vote, with public
live-replicated ballots so the HUD can show who voted for what.
- Inter-wave flow is now strictly sequential: draft -> vote -> build, each stage
ending early once every player has acted.
- Enemy abilities inverted from per-instance random rolls to deterministic,
stacking per-wave-slot sets. Six cards ship: Split (reworked), Flight, Blink,
No Bounty, Gold Theft, Double Up.
- Tower upgrades are a two-step tree: a draft pick unlocks a node, gold converts
an already-placed tower in place.
- Boss encounters flag their enemies and drive a boss HP bar.
- Player cap reduced to 3 via MatchRules.MaxPlayers.
- GoldConfig is now keyed by global encounter number rather than wave index.
Compiles clean; NOT yet verified in-engine. Editor wiring still required --
see Docs/2.0_Setup_Checklist.md.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
TowerInstance.StampFootprint now writes walkability via SetWalkableBatch instead of per-tile SetWalkable, so despawning (selling) a 2x2 tower fires one OnWalkabilityChanged / enemy re-path instead of four — matching placement and removing the frame hitch on sell. PlaySellEffectRpc now logs a one-time warning when no SellEffectSpawner is in the scene, since a missing spawner silently suppressed the coin VFX and sound.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace deprecated [Rpc(..., RequireOwnership = true)] with InvokePermission = RpcInvokePermission.Owner on the owner-submitted draft/buff RPCs (PlayerDraft, PlayerBuffManager), matching the pattern already used elsewhere. Also commits the .meta files Unity generated for the new sell-VFX scripts so their GUIDs are stable across machines.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Owner-validated sell RPC refunds SellRefundPercent of invested gold (Wall refunds 100% while un-upgraded), despawns the tower, and broadcasts a coin-burst VFX + rustle SFX. Refunds do not count as per-wave income. Investment/upgrade tracking added as the seam for the future upgrade system.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This may need to be changed later if we have any towers that have visuals that go underneath the ground. Right now that won't work, but we also don't have anything like that.