# Preferences P softerChecks on # Death reversion setup P revertAspects [ current-positions primary ] # Note: Coins-collected seem to be preserved if you die, but reverted if # you quit-to-menu and re-load. T_T. It's not worth representing that in # the reversion system... # Macros = cutsceneHappens name [ !a {name} gt forced g cutscene At deactivate gt trigger ] = cutsceneTo where [ p {where} g cutscene ] = gainedLevel kind howMany [ A gain {kind}^{howMany} ] = claimPower what [ a claim{what} gt power {what} At gain {what} At deactivate ] = seeItem type what [ oa get{what} gt item {what} gt itemType {type} e gain {what}*1 e deactivate ] = seeSwitch [ oa switch q ElementGun e { set door:open; deactivate } ] = seeFarSwitch [ oa switch q ElementGun&ElementGun2 e { set door:open; deactivate } ] = seeSwitchDoor [ m door:closed > seeSwitch ] = seeFarSwitchDoor [ m door:closed > seeFarSwitch ] = seeOrbSlot [ m orbSlot:empty oa deliverOrb q greenOrb*1 e { set orbSlot:full; lose greenOrb*1; deactivate } ] = seeOrbPedestal [ oa grabOrb q greenOrb*0 e gain greenOrb*1 ] = grabOrbFromPedestal [ n has: greenOrb*0 > seeOrbPedestal ta grabOrb n has: greenOrb*1 ] = seeHugeCoin [ # It's called a "Megatranchip" apparently oa getHugeCoin e { gain hugeCoin*1; save; deactivate } nt [ Also refills health + ammo. ] ] = hugeCoin [ > seeHugeCoin ta getHugeCoin ] = claimItem type what [ a get{what} gt item {what} gt itemType {type} At gain {what}*1 At deactivate ] = useItem what [ A lose {what}*1 g useItem ] = seeCoins howMany [ oa grabCoins e { gain coin*{howMany}; deactivate } ] = coins howMany [ > seeCoins {howMany} ta grabCoins ] = seeChest [ oa chest gt chest e { save; deactivate } ] = coinDoor howMany [ m coinDoor:closed oa spendCoin q coin*1&!coinDoor:open e { lose coin*1; gain spentAt_{__zone__}_{__hereName__}*1 } oa spendTen q coin*10&!coinDoor:open e { lose coin*10; gain spentAt_{__zone__}_{__hereName__}*10 } oa spendFifty q coin*50&!coinDoor:open e { lose coin*50; gain spentAt_{__zone__}_{__hereName__}*50 } oa openCoinDoor q spentAt_{__zone__}_{__hereName__}*{howMany} e { set coinDoor:open; deactivate } gt trigger ] = motorcycleGarage [ m motorcycleDoor:closed oa activateMotorcycle q motorcycleKey*1 e { set motorcycleDoor:open; deactivate } ] = underwater [ > hazard underwater oa loseAir q !?waterBreathing&outOfAir*0 e { gain outOfAir*1 } gt trigger oa ranOutOfAir # name alphabetically after loseAir q !?waterBreathing&outOfAir*2 # triggers after 2nd step e { set outOfAir*0; goto endings//death } gt trigger ] = waterExit [ e { set outOfAir*0 } ] = tookWaterExit [ At { set outOfAir*0 } ] = waterEntrance [ er { set outOfAir*0 } ] = seeIceBlock [ m block:placed oa shiftBlock q GravityGlove e { set block:shifted; deactivate } ] = shiftIceBlock [ > seeIceBlock ta shiftBlock ] # Use 'failBoss' or 'beatBoss' afterwards # Note: Room locks should be implemented via *Defeated requirements. # They're usually not necessary except on edges that leave further. = boss who level [ oa {who} gt bossFight e [ { <{level}>sum(bossFight, {who}){ gain {who}Defeated; deactivate }{ goto endings//death } } ] ] = failBoss who where [ !ta {who}%f # Follow has now taken us to 'death' ending revert slot0 n at: {where} ] = beatBoss who [ ta {who}%s # This means that further 'At's after > beatBoss will correctly only # be available if you beat the boss: a claimReward q {who}Defeated At deactivate gt trigger ] = enemy which [ gd enemy:{which} ] = hazard which [ gd hazard:{which} ] = friendly which [ gd friendly:{which} ] = chat who [ a chatWith{who} gt chat ] = save [ a saveGame gt save At save ] = _jaunt where [ p {where} g jaunt ] = shopItem type what howmuch [ oa purchase{what} q money*{howmuch} e lose money*{howmuch} e gain {what}*1 gt item {what} gt itemType {type} ] # Note: Must use shopItem first... = buy what [ ta purchase{what} ] # Instead of tracking every coin picked up from enemies or gained from # selling stuff, I'll just observe money when it seems relevant. = haveMoney howmuch [ A set money*{howmuch} n has money*{howmuch} ] = taxChallenge skill level price [ At [ { <{level}>sum({skill})> { } { lose {price} } } ] ] = rejectChallenge skill level [ At [ { <{level}>sum({skill})>{ }{ bounce } } ] ] = rejectPriceChallenge skill level price [ At [ { <{level}>sum({skill})>{ }{ lose {price}; bounce } } ] ] = reciprocalTaxChallenge skill level price [ er [ { <{level}>sum({skill})>{ }{ lose {price} } } ] ] = reciprocalRejectChallenge skill level [ er [ { <{level}>sum({skill})>{ }{ bounce } } ] ] = reciprocalRejectPriceChallenge skill level price [ er [ { <{level}>sum({skill})>{ }{ lose {price}; bounce } } ] ] = damageBoost avoidWith [ gt damageBoostWithout:{avoidWith} ] = damageBoostBack avoidWith [ gr damageBoostWithout:{avoidWith} ] = sign direction text [ gd sign:{direction} [ {text} ] ] = exitFlight [ At lose FlightUnit er gain FlightUnit ] = seeExitFlight [ e lose FlightUnit er gain FlightUnit ] = enterFlight [ At gain FlightUnit er lose FlightUnit ] = seeEnterFlight [ e gain FlightUnit er lose FlightUnit ] # TODO P softerChecks on # Set up death domain for goto effects domain endings @ death @ @ # Start of journal domain main g time 2025-07-09>20:12 n [ We're flying through space in a cozy spaceship. We're an android. ] S Homeship::top zz Home x down bottom up n [ Plant sample sent by U.C.. Recovered 7 years ago after "dimension fall." ] > claimItem quest plantSample n [ Triggers dimension fall cutscene. ] n has: plantSample*1 ~a dimensionFall q plantSample*1 g cutscene At deactivate n [ We're closest; we might find a DNA quartz? ] ~x spaceTransit LandingSite::mossyShrine - # no reciprocal zz Surface n [ Our thruster & crystal rod broke on impact. Our cartridges all melted on entering the atmosphere. We also lost all map data. Necom sent automatic mobile containers to gather local materials; we need to retrieve them. ] n [ Note: the mobile containers all went to the right... ] > coins 2 n has: coin*2 o right o left g time 2025-07-09>20:25 w g break g time 2025-07-11>20:44 xt left diamondViewBridge right > coins 2 n has: coin*4 t right n at: LandingSite::mossyShrine xt right heldUpBoxes left o up q ?higherJump > coins 2 n has: coin*6 x down rustyFenceCave up > coins 4 n has: coin*10 x left fanFloatsCave right > enemy fanFloat o up fanFloatsCaveTop down q ?higherJump|?freezeEnemies @ fanFloatsCaveTop > seeCoins 2 @ @ x left trappedBlobs right > enemy blob x left balconyDescent right > enemy fanFloat > coins 2 n has: coin*12 x down rustedGirders up qr ?higherJump|?freezeEnemies x right blobLedges left > enemy blob o right q ?higherJump x down crookedGirderSave up qr ?flight > enemy blob > save n [ Note: Saving does NOT refill health... ] o right x left floatsDoor right > enemy fanFloat > coins 1 n has: coin*13 oa grabCoinAbove e { gain coin*1; deactivate } q ?higherJump|?freezeEnemies # Didn't fully explore this before dying ... E death R n at: LandingSite::crookedGirderSave n [ coin is preserved... ] n has: coin*13 t left n at: floatsDoor o left qb ?openYinYangDoors # Now this is fully explored t right n at: LandingSite::crookedGirderSave ta saveGame xt right fourPillarsBridge left > enemy blob > enemy hoverDrill n [ We can see some stuff under this bridge, but no way to get down. ] @ belowFourPillarsBridge > enemy shooter > seeCoins 3 > seeChest @ @ x right pipesPlatformsBottom left > enemy blob o up x down greenGateTunnel up > coins 2 n has: coin*15 o right qb openGreenDoors n [ Maybe an indicator we need 5 green things? ] t up n at: LandingSite::pipesPlatformsBottom xt up pipesPlatformsMid down > enemy hoverDrill o left pipesPlatformsMidLeft right qb ?farJump|?freezeEnemies @ pipesPlatformsMidLeft > seeChest @ @ x up pipesPlatformsSprings down > coins 4 n has: coin*19 x up orbLedge down At gain coin*2 =1 > coins 1 n has: coin*22 > enemy wideFans o right o left q ?higherJump o jumpDown e gain coin*2 =1 xt jumpDown pipesPlatformsMidLeft flyUp qr ?flight n has: coin*24 > claimPower ElementGun F ElementGun ?freezeEnemies x left platformsOverBridge right qb ElementGun > coins 2 n has: coin*26 x left aboveBlobLedges right qb ElementGun > coins 3 # TODO: Was 2 coins in original note... Where did I lose two? n has: coin*29 r left blobLedges right t down n at: LandingSite::crookedGirderSave ta saveGame t left n at: LandingSite::floatsDoor ta grabCoinAbove n has: coin*30 t right n at: LandingSite::crookedGirderSave ta saveGame t right g jauntStart n at: fourPillarsBridge t right n at: pipesPlatformsBottom t up n at: pipesPlatformsMid t up n at: pipesPlatformsSprings t up g jauntEnd n at: LandingSite::orbLedge xt right greenGateDown left qb ElementGun > enemy blob > coins 2 n has: coin*32 n [ We activate numbered switches by shooting them. ] o up q ?higherJump m door:closed oa switch q ElementGun e set door:open ta switch x down trellisLedges up q door:open qr door:open&(?flight|?wallJump) > enemy blob > enemy hoverDrill > coins 3 n has: coin*35 x down belowTrellisSave up qr ?flight|?wallJump > save o right qb ElementGun x down belowTrellisPit up > coins 2 n has: coin*37 > enemy blob t up n at: LandingSite::belowTrellisSave xt right threeViewsLedge left o downRight qr ?wallJump|?flight o downLeft belowTrellisPit upRight qr ?wallJump|?flight e gain coin*1 =1 t downLeft n at: belowTrellisPit t up n at: belowTrellisSave ta saveGame t right n at: LandingSite::threeViewsLedge xt downRight underPath upRight > enemy blob o left o up e gain coin*2 =1 # TODO: Original note had 3 here, but I'm balancing out # known count of 40 below... xt up shootUpNook down n has: coin*40 x up activePlatformsCave down qb ElementGun > enemy blob > enemy hoverDrill o overLeft x up beyondGreenGateTunnel down q ElementGun v left greenGateTunnel right m door:closed oa switch q ElementGun e set door:open ta switch # Revise requirement @ greenGateTunnel right qb beyondGreenGateTunnel::door:open @ @ t left n at: LandingSite::greenGateTunnel t right n at: LandingSite::beyondGreenGateTunnel t down n at: LandingSite::activePlatformsCave > coinDoor 50 n has: coin*40 ta spendTen ta spendTen ta spendTen ta spendTen n has: coin*0 n has: spentAt_LandingSite_activePlatformsCave*40 o leftDoor q coinDoor:open xt overLeft breezyPuddle right x left mossyGirderPlatformComplex right > coins 1 n has: coin*1 > enemy blob > enemy hoverDrill > enemy fanFloat o up q ElementGun e gain coin*2 =1 o upLeft q ElementGun A save revert E death R n at: belowTrellisSave R revert n at: LandingSite::mossyGirderPlatformComplex xt upLeft aboveMossyGirderPlatformComplex down o left qb ?breakSteel # Note: I first thought this was just the same as the rocks... > coins 2 n has: coin*3 t down n at: LandingSite::mossyGirderPlatformComplex xt up blueColumns down n has: coin*5 > enemy hoverDrill x right belowFourPillarsBridge left ta grabCoins n has: coin*8 n [ We can slice bullets! ] ta chest At gain ElementCartridge*1 n has: ElementCartridge*1 n [ Doubles ammo for element gun. ] n [ Still 2 coins short for the coins door... ] t left g jauntStart t down t right n at: breezyPuddle t right n at: activePlatformsCave t down n at: shootUpNook t down n at: underPath g jauntEnd xt left eyeWingStatue upRight o right o upLeft q ?higherJump&?breakStone xt right eyeWingGreenDoorBack left m door:closed o belowLeft eyeWingGreenDoorFront right qb door:open @ eyeWingGreenDoorFront oa switch q ElementGun e set LandingSite::eyeWingGreenDoorBack::door:open > enemy shooter @ @ n [ This is a dead end I guess... Map does mark coins in one location I'd better get to then. ] t left g jauntStart n at: eyeWingStatue t upRight t up t up n at: activePlatformsCave t up t left t up n at: pipesPlatformsBottom t left t left n at: LandingSite::crookedGirderSave g jauntEnd ta saveGame n [ Not here; should have remembered... ] t left n at: LandingSite::floatsDoor t right n at: LandingSite::crookedGirderSave ta saveGame t right g jauntStart t right n at: pipesPlatformsBottom t up t left n at: pipesPlatformsMidLeft t left n at: platformsOverBridge t left n at: aboveBlobLedges t left n at: blobLedges t left n at: rustedGirders t up n at: balconyDescent t right n at: trappedBlobs t right n at: LandingSite::fanFloatsCave g jauntEnd xt up n at: LandingSite::fanFloatsCaveTop ta grabCoins n has:coin*10 n [ Exactly enough coins for that door. This retrace was forced... ] t down g jauntStart n at: fanFloatsCave t right rustyFenceCave t up heldUpBoxes t left mossyShrine t left diamondViewBridge g jauntEnd n [ Just double-checking... ] t right mossyShrine t right heldUpBoxes o upRight q ?breakStone n [ Didn't notice the stone boxes here before... ] t down n at: LandingSite::rustyFenceCave x down hangingPlatforms up qb ElementGun n [ This wasn't apparent before I knew what platforms could be activated. ] v down platformsOverBridge flyUp qr ?flight n [ Not 100% sure about this connection, but oh well... ] x right aboveOrbLedge left v right orbLedge left o flyUp tallBalcony down q flight @ tallBalcony > enemy blob @ @ t right n at: LandingSite::orbLedge t right greenGateDown g jauntStart t down trellisLedges t down belowTrellisSave g jauntEnd ta saveGame t right threeViewsLedge g jauntStart t downRight underPath t up shootUpNook t up activePlatformsCave g jauntEnd ta spendTen n has: coin*0 n has: spentAt_LandingSite_activePlatformsCave*50 n state: coinDoor:open n [ The openCoinDoor action is taken as a triggered action when we spend the last coins. ] xt leftDoor greenOrbRoom flyUp qr ?flight|(?higherJump&?wallJump) > enemy blob > enemy hoverDrill > coins 2 n has: coin*2 m orbSlot:empty a escortOrb At { set orbSlot:full; deactivate } o left qb orbSlot:full v right eyeWingStatue upLeft xt left preBossSave right > save o down qr ?flight x leftArches preBossNook right gt hidden > claimItem upgrade LifeCartridge n has: LifeCartridge*1 t right n at: LandingSite::preBossSave ta saveGame xt down walkerArena flyUp n [ We get advice from our buddy about how to attack it. Element gun won't work; downward stab on weak point should be good. ] > boss MilitaryServerCalasma 0 n [ A fun if easy boss. ] > beatBoss MilitaryServerCalasma n [ Yamato pops out of the boss. I guess we saved her! She'd like us to think she's a scientist on a research team. She beams away immediately. Necom informs us that Yamato is just the name of her frame. Her ID isn't on the U.C. database. ] # Added this to ensure TFB journal has this info without exploring it o right MossyWoods::mossyLedge left qb MilitaryServerCalasmaDefeated