beacon: implement the Unbuilding endgame
This commit is contained in:
committed by
Alexander Whitestone
parent
1081b9e6c4
commit
aa88937509
19
js/engine.js
19
js/engine.js
@@ -216,20 +216,31 @@ function tick() {
|
||||
}
|
||||
|
||||
// Check corruption events every ~30 seconds
|
||||
if (G.tick - G.lastEventAt > 30 && Math.random() < CONFIG.EVENT_PROBABILITY) {
|
||||
if (G.tick - G.lastEventAt > 30 && Math.random() < CONFIG.EVENT_PROBABILITY && !G.dismantleActive) {
|
||||
triggerEvent();
|
||||
G.lastEventAt = G.tick;
|
||||
}
|
||||
|
||||
// The Unbuilding: offer or advance the sequence before a positive ending overlay can freeze the game
|
||||
if (typeof Dismantle !== 'undefined') {
|
||||
if (!G.dismantleActive && !G.dismantleComplete) {
|
||||
Dismantle.checkTrigger();
|
||||
}
|
||||
if (G.dismantleActive) {
|
||||
Dismantle.tick(dt);
|
||||
G.dismantleStage = Dismantle.stage;
|
||||
}
|
||||
}
|
||||
|
||||
// Drift ending: if drift reaches 100, the game ends
|
||||
if (G.drift >= 100 && !G.driftEnding) {
|
||||
if (G.drift >= 100 && !G.driftEnding && !G.dismantleActive) {
|
||||
G.driftEnding = true;
|
||||
G.running = false;
|
||||
renderDriftEnding();
|
||||
}
|
||||
|
||||
// True ending: The Beacon Shines — rescues + Pact + harmony
|
||||
if (G.totalRescues >= 100000 && G.pactFlag === 1 && G.harmony > 50 && !G.beaconEnding) {
|
||||
// Legacy Beacon overlay remains as a fallback for contexts where Dismantle is unavailable.
|
||||
if (G.totalRescues >= 100000 && G.pactFlag === 1 && G.harmony > 50 && !G.beaconEnding && typeof Dismantle === 'undefined') {
|
||||
G.beaconEnding = true;
|
||||
G.running = false;
|
||||
renderBeaconEnding();
|
||||
|
||||
Reference in New Issue
Block a user