Final Boss Grandpa - UQcsse3200/2026-studio-4 GitHub Wiki
Final Boss: Grandpa
Implementation baseline:
mainat 78c7cd4, checked on 21 October 2026.
Overview
Grandpa is Team 1's three-stage Final Boss. The encounter starts with a transformation and summon waves, continues with a fire arena countered by collectible ice magic, and ends with ice attacks, five statues and a peaceful return to Grandpa.
This is the current encounter overview. The Stage 2 Remake and Stage 3 Improvements page contains detailed fire/ice/tornado mechanics and historical coverage evidence. The Sprint 2 version is retained as design history.
Encounter progression
Defaults below use the unscaled 100 maximum health. Thresholds are percentages of the actual maximum, rather than fixed HP for all room difficulties.
| Part | Progression and damage rules |
|---|---|
| Stage 1 — first summon wave | Eight explosive summons; Grandpa is shielded. Summons have 10 HP and deal 10 explosion damage by default. First-wave proximity explosions have a 1-second warning. |
| Stage 1 — break | After the wave clears, a full 7-second break allows 25% incoming damage with a 90%-health floor. Reaching that floor restores shielding, but does not shorten the break. |
| Stage 1 — second wave | Sixteen faster summons, immediate proximity detonation and petrification warnings. Clearing the wave sets Grandpa to 80% maximum health. |
| Stage 2 — fire arena | Collect ice energy and hold J to damage the shielded boss with authorised ice shots. At 60% maximum health, Stage 2 finishes. |
| Stage 3 — ice wave | Ice volleys, freeze/teleport strikes and repositioning. Ordinary attacks can damage the boss. At 20% maximum health, the statue wave begins. |
| Stage 3 — statues and ending | Defeat five statues. Up to four tornadoes remain from defeated statues. After the last statue, hazards clear and Grandpa returns peacefully. |
Stage handovers use a protected 3-second transition. Damage, movement and owned objects must follow the active stage rather than continuing from the previous one.
Stage 1: summons and petrification
Grandpa first appears peacefully, transforms into the Wizard and casts the summon wave. During Wave 1 he moves in steps and pauses; remaining close to him causes periodic proximity damage. Wave 2 uses faster summons, retreat movement and petrification rather than the first wave's proximity-damage mode.
Petrification places a fixed warning circle at the player's sampled position. The warning lasts 0.5 seconds and has a 1.2-unit radius. If the player remains inside when it resolves, a 0.5 movement-speed multiplier lasts 2 seconds. The cooldown is 2.5 seconds from warning resolution. Leaving the circle before resolution avoids that cast. The player-side petrification component owns the slowdown/status display, and the boss cleans up its effect when the wave ends.
The break achievement observes the entire break, including any remaining time after the health floor restores the shield. A positive damage attempt invalidates it even if a shield or rounding prevents health loss.
Stage 2: fire, cover and ice energy
The arena is fixed from the room/camera context. Grandpa moves slowly while firing for 20 seconds, then pauses new volleys for 3 seconds; existing fireballs continue moving. Temporary ice cover blocks fireballs and disappears after its lifetime or four fireball hits.
Blue pickups supply up to two reserves, with eight shots in each reserve. Hold J to fire at 0.18-second intervals while energy is available; shots home with a limited turn rate. A landed ice shot contributes 0.25 damage, so four accepted impacts remove one integer health point. Normal attacks remain blocked by the Stage 2 shield. Walls and ice cover can intercept player shots.
Ice pickups are separate from solid cover and from ordinary magnetic room drops. Input, reserves, hints, projectiles and cover are cleaned up at the end of the phase. Detailed tuning and integration are in the Stage 2 remake page.
Stage 3: ice attacks, statues and tornadoes
The first wave fires three-bolt ice fans. Two volleys are followed by recovery and a repositioning teleport. An ice hit locks player actions, then Grandpa moves briefly before teleporting beside the player for one strike. A successful strike releases the boss-owned freeze; a missed strike does not repeat, and the freeze has a maximum duration. Phase changes, defeat and disposal release the boss-owned control lock.
At 20% health, five statues replace the direct boss fight. Statues move, evade after repeated hits and take turns warning/jumping/slamming. Ground shockwaves and tall tornadoes are different hazards: jumping can avoid the ground shockwave, but does not evade tornado contact.
The first four defeated statues can each leave a tornado; the last does not create a fifth. Tornadoes pursue from separate approach directions, avoid obstacles and share one contact-damage clock. Their nominal 0.5 damage every 0.25 seconds accumulates fractionally; overlapping tornadoes do not multiply the tick rate. They have a harmless appearance period and use white hit feedback.
After the final statue, pending attacks stop, tornadoes dissolve and Grandpa returns near the player. finalBossEncounterCompleted tells the room to complete the encounter while Grandpa remains peaceful and invulnerable. The ending dialogue remains supplied by the encounter configuration.
Achievements
The room's complete-encounter report supports Vanquisher. Seven additional challenges are reported by FinalBossAchievementComponent through the shared achievement service:
| Achievement | Qualifying event / important boundary |
|---|---|
| I need a break too | Finish the full Stage 1 break with no positive damage attempt against Grandpa. Shield-blocked hits, rounded-to-zero damage and damage over time can invalidate it. |
| Coolin' off, make it fun | An actual player ice-projectile impact on the boss during Stage 2; picking up energy or firing alone is insufficient. |
| I'm fireproof! | Complete Stage 2 with no boss-fireball hit. A collision can invalidate the attempt even without visible health loss; skipping the stage is not completion. |
| Whoa! The Snow Queen | First ice-projectile hit on the player during Stage 3 Wave 1. |
| Brrr, it's freezing! | Hits in three consecutive ice volleys, with at most one count per volley; a missed volley resets the streak. |
| You flashed too fast | First qualifying sword/dagger hit on the boss during Stage 3 Wave 1. Ranged hits do not qualify. |
| How can a statue even flash? | First successful statue teleport during Stage 3 Wave 2. |
Attempts are encounter-scoped and cancelled/cleaned up on the relevant phase exit, death or disposal. The shared Achievements and Achievements Service pages describe persistence and UI; this page documents Team 1's encounter triggers.
Architecture and integration
| Responsibility | Main implementation |
|---|---|
| Assembly | FinalBossFactory creates the entity and attaches stage, movement, damage, visual and achievement components. |
| Phase transitions | FinalBossPhaseControllerComponent owns sequential stages and protected handovers. |
| Damage rules | FinalBossDamageControllerComponent owns shields, health floors and authorised fractional Stage 2 ice damage. |
| Stage behaviour | FinalBossStageOneComponent, FinalBossStageTwoComponent, FinalBossStageThreeComponent coordinate each encounter part. |
| Stage 2 details | Arena, fire, ice-cover, pickup, player-ice, hint/input and wall-collision helpers divide the implementation. |
| Stage 3 hazards | Statue behaviour is coordinated by Stage 3; FinalBossTornadoController owns tornado movement/contact/cleanup. |
| Room completion | EnemyManagerComponent provides spawning/camera context and consumes finalBossEncounterCompleted. Summons, statues and projectiles are not independent room-clear requirements. |
Local testing
The current terminal command is:
room fb_stage 1
room fb_stage 2
room fb_stage 3
From outside the Final Boss room, it enters a fresh encounter at the requested stage. Stage selection is a one-time entry choice, not a reset for an ongoing fight and not evidence that skipped stages were completed. The actual room ID is finalBossRoom; use room goto finalBossRoom for ordinary room entry. The old finalBossStage1/2/3 room aliases are not current IDs.
The Team 1 Test Plan lists current regression suites, manual cases and achievement coverage gaps. Historical reports on the earlier pages remain tied to their recorded revisions; this page does not claim a new test or coverage run.
Sources and merged development
Core sources: FinalBossFactory.java, FinalBossPhaseControllerComponent.java, FinalBossDamageControllerComponent.java, FinalBossStageOneConfig.java, FinalBossStageTwoConfig.java, FinalBossStageThreeConfig.java, FinalBossAchievementComponent.java, RoomCommand.java.
Feature ticket: #93. Stage foundations and refinements: #128, #141, #154, #161. Stage 2 remake and tornado work: #218. Room-wall integration: #245. Encounter achievements and ice hint: #289.