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.
- Builder.DisplayName: stub property ("Builder (P{n})") for portrait label; swaps
to real player name when MatchState lands in Phase 1.3
- HUDController: subscribe SelectionState.OnSelectionChanged in OnEnable/OnDisable;
HandleSelectionChanged drives portrait label + grays out command grid when nothing
is selected; Start() seeds initial state in case builder auto-selected before Start
- BuildSiteVisual: ComputeProgressNormalized() public API ([0,1], safe on any client);
OnNetworkSpawn spawns a non-networked BuildProgressBar child
- BuildProgressBar: new world-space uGUI Canvas bar; green while Constructing, yellow
while Paused, hidden while Queued; billboards to Camera.main each LateUpdate;
auto-destroyed when parent BuildSiteVisual despawns
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>