# This sticks with "to first boss" principle even though you don't get # any meaningful powerups before or from the first boss like in other # games. You actually don't get any from the second boss either, # otherwise I would have extended this to include that. IIRC there's just # air dash and double jump to get in the whole game, and air dash you # don't get until at least 1/3 of the way through the game; extending "to # first boss" until then doesn't seem fair. # Preferences P softerChecks on # Macros = cutsceneHappens name [ a {name} gt forced g cutscene At deactivate ] = 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 ] = moneyChest [ a openChest gt moneyChest At deactivate ] = 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 ] # 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} ] ] # Set up death domain for goto effects domain endings @ death @ @ # Start of journal domain main g time 2025-06-28>9:58 n [ Random NPC delivers us on a boat to seek a cure for our village. ] n [ Not sure if I should get on the boat or go right; I fiddle a bit here... ] S WildsDock::main zz Wilds > hazard water o left qb swim n [ Kinda feel like swimming won't be a thing; we'll see. ] o right xt right TutorialPath::main left > hazard spikes n [ Tutorials for basic controls: move/jump/attack/dodge. ] x right PotionBridge::main left > claimItem potion HealthPotion n [ Tutorials for items + saving. ] > save x right RuinsClimb::bottom left x up top down x right OrcEncounter::main > enemy orc n [ Shield tutorial ] x right TreeLedges::top x down bottom up > enemy orc x right TutorialDrop::top left > enemy torchOrc o down qr veryHighJump n [ Look-down mechanism allows us to see that this is a one-way. ] n [ Tiny one-way here feels like a "resolve for our journey" moment. Nice ludonarrative harmony. ] xt down bottom up x right SpikeJumps::main left > hazard spikes n [ Not worth declaring a challenge here... ] x right TreesDescent::top left > enemy torchOrc n [ Getting low on health now... ] x down bottom up o left x right TrunksGlade::main left gt hidden > claimItem potion FullRecoveryPotion n [ This reminds me of my health potion; why not use it since I'm low... ] > useItem HealthPotion t left n at: TreesDescent::bottom xt left WoodsHouse::outside o left x enter inside leave gb door > claimItem potion HealthPotion > claimItem potion StaminaPotion > claimItem charm GoblinsEye n [ Charm that grants HP regen. ] > claimItem note WoodsHouseNote n [ Berchard went to try to break through the creatures... ] t leave xt left leftSide right > claimItem lily GoldshadeLily x left RockyHills::top > enemy torchOrc x down bottom up qr veryHighJump > enemy orc x right ShrinePath::leftSide left > enemy torchOrc > hazard spikes x right mid left > save x right rightSide left > hazard water x right BigClearing::main left n level: bossFight^0 > boss GoldAxeGoblin 0 n [ I try to block and get absolutely bodied... Maybe I had wrong key? ] > failBoss GoldAxeGoblin ShrinePath::mid > gainedLevel bossFight 1 n level: bossFight^1 t right n at: ShrinePath::rightSide t right n at: BigClearing::main > beatBoss GoldAxeGoblin o right q GoldAxeGoblinDefeated