<<set $maxHP = 50>>
<<set $hp = 50>>
<<set $damage = 6>>
<<set $coins = 0>>
<<set $potions = 5>>
<<set $potionHeal = 20>>
<<set $act = 0>>
<<set $greenCleared = false>>
<<set $redCleared = false>>
<<set $darkCleared = false>>
<<set $hasFlashHelmet = false>>
<<set $hasMagicArmor = false>>
<<set $hasSwordOfLight = false>>
<<set $yojiState = 0>> /* Yoji dialogue / story state */
<<set $storeState = "normal">> /* "normal", "enhanced", "free" */
<<set $gameOver = false>>
<<set $ending = "">>
<<set $playerName = "">>
<<set $scores = []>>
<<set $metGeorge = false>>
<<set $FikaHP = 30>>
<<set $PhillipHP = 50>>
<<set $DitorHP = 100>>
<<set $Purchase = "">>
HP: <<= $hp >> / <<= $maxHP >> \
• Damage: <<= $damage >> \
• Coins: <<= $coins >> \
• Potions: <<= $potions >>
You wake up at the edge of a strange forest.
The air is thick with mist and the smell of ash.
To your right, you see a small wooden shop with a flickering lantern.
In the distance, three stone portals hum faintly with dark energy.
A wooden board stands nearby, covered with scorched score entries.
What do you do?
* Approach the shop→[[Yoji_Intro]]
* Examine the portals→[[ForestHub_Portals]]
* Look around the campfire area→[[ForestHub_Explore]]
<<if $scores.length > 0>>
* Check the scoreboard→[[Scoreboard]]
<</if>>You walk around the campfire area, trying to get your bearings.
Old footprints circle the firepit.
Broken weapons lie half-buried in the dirt, rusted and forgotten.
Someone tried to carve a message into a nearby rock,
but only a few words remain: "Don't trust the…"
You find a small pouch hidden under a loose stone.
<<set _coinsFound = 5>>
<<set $coins += _coinsFound>>
You gain <<= _coinsFound >> coins.
The wind carries faint whispers from the portals.
No matter where you look, the forest surrounds you.
Where do you go now?
* Examine the portals more closely→[[ForestHub_Portals]]You step closer to the three stone portals.
Each one shows a faint image inside the swirling mist.
* Green Forest – twisting vines and dim sunlight.
* Red Forest – crimson leaves and burning skies.
* Dark Forest – only darkness, with distant echoes.
<<if not $metGeorge>>
Enter the Green Forest→[[GreenForest_Entry]]
<</if>>
<<if $metGeorge and not $greenCleared>>
Return to fight George→[[George_FirstEncounter]]
<</if>>
<<if $greenCleared and not $redCleared>>
Enter the Red Forest→[[RedForest_Entry]]
<</if>>
<<if $redCleared and not $darkCleared>>
Enter the Dark Forest→[[DarkForest_Entry]]
<</if>>
<<if $darkCleared>>
The portals feel quiet. Only a heavy presence remains deeper within…
Face Ditor, the Undead King→[[Ditor_Entry]]
<</if>>
<<if $act == 0>>
Go back to the hub→[[ForestHub]]
<</if>>
<<if $act == 1>>
Go back to the hub→[[ForestHub_AfterGeorge]]
<</if>>
<<if $act == 2>>
Go back to the hub→[[ForestHub_AfterFika]]
<</if>>
<<if $act == 3>>
Go back to the hub→[[ForestHub_AfterPhillip]]
<</if>>
You step into the warm light of the small shop.
Behind the counter stands a short, tired-looking merchant with bright eyes.
"Ah, a new knight… or maybe a lost one," he says. "Name's Yoji.
If you want to get out of this cursed forest, you'll need strength, gear, and a bit of luck."
He points toward the forest portals.
"Three acts of misery and monsters. Beat their masters, and maybe you'll face the Undead King, Ditor."
What do you say?
* Ask Yoji about the forest→[[Yoji_AboutForest]]
* Ask about the shop and upgrades→[[Yoji_ExplainStore]]
* Say you're ready to enter the Green Forest→[[GreenForest_Entry]]
* Step back to the forest hub→[[ForestHub]]Yoji leans on the counter and points toward the distant portals.
"This forest isn't just trees and monsters," he says.
"It's three acts of misery, each guarded by its own master."
He counts on his fingers:
"First, the Green Forest. George, Prince of Darkness, rules there.
Then, the Red Forest, watched over by Fika and her twisted magic.
Last, the Dark Forest, where Phillip, Lord of Dread, waits in the shadows."
He lowers his voice.
"If you defeat them all, the path to Ditor, the Undead King, will open.
Beat him… and maybe this place will finally let you go."
What do you do?
* Ask about the shop and upgrades→[[Yoji_ExplainStore]]
* Say you're ready to enter the Green Forest→[[GreenForest_Entry]]
* Return to the forest hub→[[ForestHub]]Yoji taps the counter. Several items shimmer faintly:
"With coins you earn from enemies, you can buy upgrades here.
Later, things may… change. This forest never stays the same."
* Open the shop→[[Yoji_Store]]
* Go back→[[Yoji_Intro]]
<<set $act = 1>>
You step through the Green Forest portal.
The air is thick, but at least there's some light breaking through the old trees.
Monstrous shapes move between the branches.
The first wave of enemies approaches.
* Charge forward with your sword→[[GreenWave1_Sword]]
* Try to dodge and pick your battles→[[GreenWave1_Dodge]]
* Retreat back to the hub→[[ForestHub]]
<<set $act = 3>>
You step into the Dark Forest.
Here, the trees are nothing but silhouettes.
The ground is cold stone, and every sound echoes a little too long.
This is where Philip, Lord of Dread, waits.
But first, his servants appear from the darkness.
* Face the first wave→[[DarkWave1]]
* Retreat back to the hub→[[ForestHub_AfterFika]]
You follow the pull of the forest until you reach a vast, ruined throne room.
On the throne sits Ditor, the Undead King.
Bones and roots curl around his seat like a cage.
"So… the lost knight found their way here," he says.
"Let us see if you can end what I began."
* Fight cautiously, studying his patterns→[[Ditor_SafeFight]]
* Throw everything you have at him→[[Ditor_AllInFight]]
<<if $hasSwordOfLight>>
* Unleash the power of the Sword of Light→[[Ditor_LightOfWave]]
<</if>><<set $act = 2>>
You step through the Red Forest portal.
Crimson leaves fall like slow-burning embers.
The sky above is a deep, bloody red.
You feel watched.
The first wave of enemies closes in.
* Charge into the enemies→[[RedWave1_Sword]]
* Try to stay at range and dodge→[[RedWave1_Dodge]]
* Retreat back to the hub→[[ForestHub_AfterGeorge]]You browse Yoji's wares. Prices are written in shaky handwriting.
<<if $storeState is "normal">>
The items cost coins as usual.
<</if>>
<<if $storeState is "enhanced">>
Yoji looks a bit worried.
"After what happened out there… I can give you a special deal."
<</if>>
<<if $storeState is "free">>
The shop is empty. Yoji is gone.
The items on the shelves lie abandoned. A small note reads:
"Take what you need."
<</if>>
=== Available Items ===
<<if not $hasMagicArmor>>
- Magic Armor (x2 max HP) – 120 coins
<<link "Buy Magic Armor">>
<<if $storeState is "free">>
<<set $hasMagicArmor = true>>
<<set $maxHP *= 2>>
<<set $hp = $maxHP>>
<<set $Purchase = "Magic Armor">>
<<goto "Purchased">>
<<else>>
<<if $coins >= 120>>
<<set $coins -= 120>>
<<set $hasMagicArmor = true>>
<<set $maxHP *= 2>>
<<set $hp = $maxHP>>
<<set $Purchase = "Magic Armor">>
<<goto "Purchased">>
<<else>>
<<goto "Cant_Afford">>
<</if>>
<</if>>
<</link>>
<</if>>
<<if not $hasFlashHelmet>>
- Flash Helmet (Teleport ability) – 80 coins
<<link "Buy Flash Helmet">>
<<if $storeState is "free">>
<<set $hasFlashHelmet = true>>
<<set $Purchase = "Flash Helmet">>
<<goto "Purchased">>
<<else>>
<<if $coins >= 80>>
<<set $coins -= 80>>
<<set $hasFlashHelmet = true>>
<<set $Purchase = "Flash Helmet">>
<<goto "Purchased">>
<<else>>
<<goto "Cant_Afford">>
<</if>>
<</if>>
<</link>>
<</if>>
- HP Upgrade (+15 HP, up to 5 times) – 25 coins
<<link "Buy HP Upgrade">>
<<if $coins >= 25>>
<<set $coins -= 25>>
<<set $maxHP += 15>>
<<set $hp = $maxHP>>
<<set $Purchase = "HP Upgrade">>
<<goto "Purchased">>
<<else>>
<<goto "Cant_Afford">>
<</if>>
<</link>>
- Damage Upgrade (+2 damage, up to 5 times) – 20 coins
<<link "Buy Damage Upgrade">>
<<if $coins >= 20>>
<<set $coins -= 20>>
<<set $damage += 2>>
<<set $Purchase = "Damage Upgrade">>
<<goto "Purchased">>
<<else>>
<<goto "Cant_Afford">>
<</if>>
<</link>>
<<if $redCleared and not $hasSwordOfLight>>
- Sword of Light (unlock Light of Wave) – 200 coins
<<link "Buy Sword of Light">>
<<if $storeState is "free" or $coins >= 200>>
<<if $storeState is not "free">>
<<set $coins -= 200>>
<</if>>
<<set $hasSwordOfLight = true>>
<<set $Purchase = "Sword of Light">>
<<goto "Purchased">>
<<else>>
<<goto "Cant_Afford">>
<</if>>
<</link>>
<</if>>
<<if not $metGeorge>>
Leave the shop→[[ForestHub]]
<</if>>
<<if $metGeorge and $FikaHP > 0>>
Leave the shop→[[ForestHub_AfterGeorge]]
<</if>>
<<if $FikaHP <= 0 and $PhillipHP > 0>>
Leave the shop→[[ForestHub_AfterFika]]
<</if>>
<<if $PhillipHP <= 0>>
Leave the shop→[[ForestHub_AfterPhillip]]
<</if>>
You rush into the first group of undead.
<<set _damagetakes = 10>>
<<set _coinsGained = 5>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You cut them down, but not without scars.
You lose <<= _damagetakes >> HP, but gain <<= _coinsGained >> coins.
<<if $hp <= 0>>
Your vision fades among the roots of the forest...
<<goto "GameOver">>
<<else>>
Another wave is already forming.
* Stand your ground for the second wave→[[GreenWave2]]
* Drink a potion first→[[UsePotion_GreenWave2]]
<</if>>You try to avoid direct combat, weaving between the undead shapes.
<<set _damagetakes = 6>>
<<set _coinsGained = 3>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You manage to slip past some of them, taking less damage — but earning fewer coins.
<<if $hp <= 0>>
Your strength fades. The forest claims another lost knight.
<<goto "GameOver">>
<<else>>
The next wave gathers ahead.
* Face the second wave→[[GreenWave2]]
* Drink a potion first→[[UsePotion_GreenWave2]]
<</if>>The second wave hits harder and faster.
<<set _damagetakes = 12>>
<<set _coinsGained = 8>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You survive, barely.
<<if $hp <= 0>>
Your knees buckle. The forest swallows you.
<<goto "GameOver">>
<<else>>
Ahead, you see a clearing… and a tall, dark figure waiting.
Approach the figure→[[George_FirstEncounter]]
Drink a potion before stepping into the clearing→[[UsePotion_BeforeGeorge_First]]
<</if>><<if $potions > 0>>
<<set $potions -= 1>>
<<set $hp += $potionHeal>>
<<if $hp > $maxHP>><<set $hp = $maxHP>><</if>>
You quickly drink a potion. Your wounds start to close.
<<else>>
You fumble for a potion, but your belt is empty.
<</if>>
Face the second wave→[[GreenWave2]]<<set $metGeorge = true>>
In the clearing stands George, Prince of Darkness.
His sword is already drawn, his eyes fixed on you.
You charge, but every strike bounces away as if hitting smoke.
No matter what you do, you can't hurt him. Not yet.
* Keep attacking anyway→[[George_FutileAttack]]
* Try to talk to him→[[George_Talk]]
* Retreat through the portal→[[ForestHub]]<<if $potions > 0>>
<<set $potions -= 1>>
<<set $hp += $potionHeal>>
<<if $hp > $maxHP>><<set $hp = $maxHP>><</if>>
You drink a potion and steady your breathing before facing George.
<<else>>
You reach for a potion, but your belt is empty.
<</if>>
Step into George's clearing→[[George_FirstEncounter]]You swing again and again, but it's pointless.
A heavy blow sends you flying back into the portal.
<<set $hp -= 15>>
<<if $hp < 1>>
Your vision fades among the roots of the forest...
<<goto "GameOver">>
<<else>>
Back in the hub, Yoji looks at you with concern.
Keep on attacking→[[George_FutileAttack]]
Return to Yoji→[[Yoji_GeorgeFail]]
<</if>>You lower your sword for a moment.
"Why are you doing this?" you ask.
For a brief second, George hesitates.
His eyes flicker — not with darkness, but with something like regret.
Then the moment is gone.
"You are not ready," he growls. "Come back stronger… or don't come back at all."
A wave of force slams into you, hurling you back through the portal.
<<set $hp -= 10>>
<<if $hp < 1>>
You fall to your knees as the forest spins around you.
<<goto "GameOver">>
<<else>>
You crash onto the ground in the hub. Yoji rushes over.
Return to Yoji→[[Yoji_GeorgeFail]]
<</if>>
Yoji sighs as you stumble back into the hub.
"So, you met George. Yeah, I figured that would happen."
He reaches under the counter and pulls out a refined blade.
"Here. On the house. You won't beat him without this."
<<set $damage += 4>>
<<set $storeState = "enhanced">>
* Thank Yoji and return to the Green Forest→[[GreenForest_Reentry]]
* Ask if there's anything else you should know→[[Yoji_AdviceAfterGeorge]]You lean against the counter, still catching your breath.
"George is fast, strong, and wrapped in darkness," Yoji says.
"But he's not invincible."
He taps the new blade he gave you.
"Watch his movements. Dodge first, then strike when he overextends.
Don't be afraid to retreat and use potions if you have to."
He glances toward the portals.
"And remember: upgrades matter. More health, more damage —
they can be the difference between a close call and a grave."
What now?
* Head back into the Green Forest→[[GreenForest_Reentry]]
* Open the shop→[[Yoji_Store]]
* Take a break and walk around the hub→[[ForestHub_Explore]]You step once more into the Green Forest.
This time, you feel your sword humming with new strength.
Head straight for George→[[George_FinalFight]]
Drink a potion first→[[UsePotion_BeforeBoss]]<<if $potions > 0>>
<<set $potions -= 1>>
<<set $hp += $potionHeal>>
<<if $hp > $maxHP>><<set $hp = $maxHP>><</if>>
You drink a potion and steady your breathing before facing George.
<<else>>
You reach for a potion, but your belt is empty.
<</if>>
<<if $act == 1>>
Return to fight George→[[George_FinalFight]]
<</if>>
<<if $act == 2>>
Return to fight Fika→[[Fika_Encounter]]
<</if>>
<<if $act == 3>>
Return to fight Phillip→[[Phillip_Encounter]]
<</if>>
You step into the clearing once more.
George stands exactly where you left him — but this time, your sword hums with new power.
He senses it.
"You’ve returned," he growls. "Good. Let’s finish this."
How do you approach the fight?
* Play it safe: dodge, then strike→[[George_Safe]]
* Be aggressive: strike relentlessly→[[George_Aggressive]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to blink behind him→[[George_TeleportAttack]]
<</if>>
You wait patiently for George’s dash, then roll aside and cut at his exposed side.
<<set _damagetakes = 8>>
<<set $hp -= _damagetakes>>
Your cautious style keeps you alive, but the battle lasts longer.
<<if $hp <= 0>>
George's blade pierces through your guard. Darkness consumes you.
<<goto "GameOver">>
<<else>>
After a long exchange of blows, George finally falls to his knees.
<<goto "George_Defeated">>
<</if>>You charge in, trading blow for blow.
Your hits land harder, but so do his.
<<set _damagetakes = 18>>
<<set $hp -= _damagetakes>>
Your aggression pays off — but leaves you bleeding.
<<if $hp <= 0>>
Your strength fails you first. The forest grows dark.
<<goto "GameOver">>
<<else>>
With one final push, George collapses onto the forest floor.
<<goto "George_Defeated">>
<</if>>George leaps into the air, preparing a deadly strike.
You blink behind him in a flash of light and slash across his back.
<<set _damagetakes = 4>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
You misjudge the distance and fall to his counterattack.
<<goto "GameOver">>
<<else>>
George stumbles forward, collapsing under your precise strike.
<<goto "George_Defeated">>
<</if>>Your vision fades…
The forest swallows another lost knight.
This is the end of your journey — for now.
<<link "Start over from the Forest Hub">>
/* reset run stats to their initial values */
<<set $maxHP = 50>>
<<set $hp = 50>>
<<set $damage = 6>>
<<set $coins = 0>>
<<set $potions = 5>>
<<set $potionHeal = 20>>
<<set $act = 0>>
<<set $greenCleared = false>>
<<set $redCleared = false>>
<<set $darkCleared = false>>
<<set $metGeorge = false>>
<<set $hasFlashHelmet = false>>
<<set $hasMagicArmor = false>>
<<set $hasSwordOfLight = false>>
<<set $yojiState = 0>>
<<set $storeState = "normal">>
<<set $gameOver = false>>
<<set $ending = "">>
<<set $playerName = "">>
<<goto "ForestHub">>
<</link>>George, Prince of Darkness, falls to one knee.
The shadows around him fade as he dissolves into black mist.
<<set $coins += 40>>
<<set $greenCleared = true>>
A soft wind passes through the clearing.
The forest acknowledges your victory.
Return to the hub→[[ForestHub_AfterGeorge]]You return to the forest hub.
The Green Forest portal fades to a dull gray — conquered.
The Red Forest portal now glows with a deep crimson light.
Yoji nods slowly.
"Good work. The next forest… won’t show mercy."
What do you do now?
* Visit Yoji’s shop→[[Yoji_Store]]
* Head to the Red Forest portal→[[ForestHub_Portals]]
* Explore the hub a bit more→[[ForestHub_Explore]]You emerge back into the forest hub.
The Red Forest portal dims, no longer burning with rage.
The Dark Forest portal now pulses with a heavy, oppressive darkness.
Yoji looks both impressed and worried.
"Fika is gone… but Phillip waits in the Dark Forest," he says quietly.
"If you can reach that far, I might have something special for you."
What now?
* Visit Yoji’s shop→[[Yoji_Store]]
* Examine the portals→[[ForestHub_Portals]]
* Walk around the hub for a moment→[[ForestHub_Explore]]You slash your way into the first pack of twisted creatures.
<<set _damagetakes = 14>>
<<set _coinsGained = 10>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You lose <<= _damagetakes >> HP and gain <<= _coinsGained >> coins.
<<if $hp <= 0>>
Your body finally gives in among the burning leaves.
<<goto "GameOver">>
<<else>>
More enemies gather, their eyes glowing red.
* Stand your ground for the next wave→[[RedWave2]]
* Drink a potion first→[[UsePotion_RedWave2]]
<</if>>You keep your distance, dodging between the trees and striking only when safe.
<<set _damagetakes = 9>>
<<set _coinsGained = 6>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You manage to survive with fewer wounds, but gather fewer coins.
<<if $hp <= 0>>
You collapse, the red canopy spinning above you.
<<goto "GameOver">>
<<else>>
The next wave approaches, stronger than the first.
* Prepare for the next wave→[[RedWave2]]
* Drink a potion first→[[UsePotion_RedWave2]]
<</if>><<if $potions > 0>>
<<set $potions -= 1>>
<<set $hp += $potionHeal>>
<<if $hp > $maxHP>><<set $hp = $maxHP>><</if>>
You drink a potion. The burning pain eases for a moment.
<<else>>
You reach for a potion, but your belt is empty.
<</if>>
Face the next wave→[[RedWave2]]The second wave is faster and more coordinated.
<<set _damagetakes = 16>>
<<set _coinsGained = 15>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You carve a path through them, but the effort takes its toll.
<<if $hp <= 0>>
You fall to your knees as the forest spins around you.
<<goto "GameOver">>
<<else>>
As the last enemy falls, a figure appears ahead.
A tall sorceress with cruel eyes — Fika, Queen of Malice.
Approach Fika→[[Fika_Encounter]]
<</if>>You step into a clearing bathed in red light.
Fika waits for you, floating slightly above the ground, her staff crackling with dark magic.
"So, you made it this far," she says.
"Let's see how long you can dance in my storm."
How do you face her?
* Focus on dodging her projectiles→[[Fika_Safe]]
* Rush in and try to interrupt her casting→[[Fika_Aggressive]]
* Drink a potion first→[[UsePotion_BeforeBoss]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to blink between her attacks→[[Fika_Teleport]]
<</if>>Fika unleashes a barrage of projectiles, but you blink between them,
closing the gap in a flash of light.
You strike from an unexpected angle, throwing her off balance.
<<set _damagetakes = 10>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
One stray blast catches you as you appear behind her.
<<goto "GameOver">>
<<else>>
<<set $FikaHP -= $damage>>
Fika takes damage
<<if $FikaHP <= 0>>
Disoriented, Fika loses control of her magic and falls to the ground.
<<goto "Fika_Defeated">>
<<else>>
* Focus on dodging her projectiles→[[Fika_Safe]]
* Rush in and try to interrupt her casting→[[Fika_Aggressive]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to blink between her attacks→[[Fika_Teleport]]
<</if>>
<</if>>
<</if>>You watch Fika's hands carefully.
Each time she raises her staff, you dash or roll aside, then strike when you see an opening.
<<set _damagetakes = 14>>
<<set $hp -= _damagetakes>>
Her magic burns, but your patience pays off.
<<if $hp <= 0>>
One blast catches you full-on. The world vanishes in red light.
<<goto "GameOver">>
<<else>>
<<set $FikaHP -= $damage>>
Fika takes damage
<<if $FikaHP <= 0>>
At last, Fika staggers, her spells unraveling.
<<goto "Fika_Defeated">>
<<else>>
* Focus on dodging her projectiles→[[Fika_Safe]]
* Rush in and try to interrupt her casting→[[Fika_Aggressive]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to blink between her attacks→[[Fika_Teleport]]
<</if>>
<</if>>
<</if>>Fika lies defeated among the crimson leaves.
Her staff shatters into shards of dark crystal that fade into nothing.
<<set $coins += 70>>
<<set $redCleared = true>>
The Red Forest grows quieter, as if it has exhaled at last.
Return to the hub→[[ForestHub_AfterFika]]
You stand in the hub, now quieter than ever.
The Green, Red, and Dark Forest portals are all dim.
Only a heavy presence remains — deeper, beyond them all.
Yoji's shop is empty, but the items inside are now free to take.
Only one task remains: facing Ditor, the Undead King.
* Enter Yoji’s empty shop→[[Yoji_Store]]
* Approach the source of the final presence→[[Ditor_Entry]]
* Take a moment to gather yourself→[[ForestHub_Explore]]
Heavier, armored enemies emerge from the shadows.
<<set _damagetakes = 18>>
<<set _coinsGained = 20>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
You push through the first line of defense.
<<if $hp <= 0>>
Your armor cracks and your vision fades into black.
<<goto "GameOver">>
<<else>>
More enemies step out from the dark.
* Keep fighting→[[DarkWave2]]
* Drink a potion first→[[UsePotion_DarkWave2]]
<</if>><<if $potions > 0>>
<<set $potions -= 1>>
<<set $hp += $potionHeal>>
<<if $hp > $maxHP>><<set $hp = $maxHP>><</if>>
You drink a potion. The weight of the darkness feels a bit lighter.
<<else>>
You reach for a potion, but find none.
<</if>>
Face the next wave→[[DarkWave2]]
The second wave mixes ranged attacks and heavy hitters.
<<set _damagetakes = 22>>
<<set _coinsGained = 25>>
<<set $hp -= _damagetakes>>
<<set $coins += _coinsGained>>
The last enemy falls with a heavy thud.
<<if $hp <= 0>>
You fall beside them, unable to stand.
<<goto "GameOver">>
<<else>>
In the distance, a tall armoured figure steps forward — Philip, Lord of Dread.
Approach Philip→[[Phillip_Encounter]]
<</if>>Philip, Lord of Dread, stands before you like a moving statue.
His blade is long, his armor cracked but unbroken.
"You should have stayed lost," he says.
How do you fight him?
* Time your dodges and counter-attacks→[[Philip_Safe]]
* Go all-in, trading blow for blow→[[Philip_Aggressive]]
* Drink a potion first→[[UsePotion_BeforeBoss]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to evade his dashes→[[Philip_Teleport]]
<</if>>You watch Philip's dashes carefully, stepping aside at the last moment
and striking only when he overextends.
<<set _damagetakes = 20>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
One misstep is enough. Philip cuts you down.
<<goto "GameOver">>
<<else>>
<<set $PhillipHP -= $damage>>
Phillip takes damage
<<if $PhillipHP <= 0>>
At last, his movement slows. Cracks spread through his armor.
<<goto "Philip_Defeated">>
<<else>>
* Time your dodges and counter-attacks→[[Philip_Safe]]
* Go all-in, trading blow for blow→[[Philip_Aggressive]]
* Drink a potion first→[[UsePotion_BeforeBoss]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to evade his dashes→[[Philip_Teleport]]
<</if>>
<</if>>
<</if>>You meet Philip head-on, determined to break him before he breaks you.
<<set _damagetakes = 30>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
Your strength fails first. The Dark Forest swallows your last breath.
<<goto "GameOver">>
<<else>>
<<set $PhillipHP -= $damage>>
Phillip takes damage
<<if $PhillipHP <= 0>>
With a brutal final clash, Philip falls to one knee, then crashes to the ground.
<<goto "Philip_Defeated">>
<<else>>
* Time your dodges and counter-attacks→[[Philip_Safe]]
* Go all-in, trading blow for blow→[[Philip_Aggressive]]
* Drink a potion first→[[UsePotion_BeforeBoss]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to evade his dashes→[[Philip_Teleport]]
<</if>>
<</if>>
<</if>>Philip dashes across the battlefield, but you blink just out of his reach each time.
You strike as he passes, chipping away at his armor.
<<set _damagetakes = 16>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
A mistimed teleport leaves you open to his blade.
<<goto "GameOver">>
<<else>>
<<set $PhillipHP -= $damage>>
Phillip takes damage
<<if $PhillipHP <= 0>>
Eventually, his speed fails him. Philip falls.
<<goto "Philip_Defeated">>
<<else>>
* Time your dodges and counter-attacks→[[Philip_Safe]]
* Go all-in, trading blow for blow→[[Philip_Aggressive]]
* Drink a potion first→[[UsePotion_BeforeBoss]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to evade his dashes→[[Philip_Teleport]]
<</if>>
<</if>>
<</if>>Philip, Lord of Dread, collapses.
The darkness around the forest seems to thin.
<<set $coins += 100>>
<<set $darkCleared = true>>
As you catch your breath, a distant echo reaches you — a scream.
Yoji.
By the time you return to the hub, it is too late.
The shop stands silent. The door hangs open.
Yoji is gone.
From this point on, his shop holds only abandoned gear.
<<set $storeState = "free">>
Step back into the hub→[[ForestHub_AfterPhillip]]You raise the Sword of Light.
A massive wave of radiant energy bursts forward, tearing through Ditor’s defenses.
For a moment, the entire throne room is nothing but white light.
<<set _damagetakes = 20>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
The power is too much for your body to handle.
You fall as the light fades.
<<else>>
<<set $DitorHP -= $damage>>
Ditor takes damage
<<if $DitorHP <= 0>>
When the light dims, Ditor is on his knees, crown cracked,
his power all but gone.
<<goto "Ditor_Defeated">>
<<else>>
* Fight cautiously, studying his patterns→[[Ditor_SafeFight]]
* Throw everything you have at him→[[Ditor_AllInFight]]
<<if $hasSwordOfLight>>
* Unleash the power of the Sword of Light→[[Ditor_LightOfWave]]
<</if>>
<</if>>
<</if>>You watch Ditor's sweeping beams of light and pillars of energy,
dodging when you can and striking in the brief pauses.
<<set _damagetakes = 24>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
One beam cuts straight through you.
Your journey ends in the King's shadow.
<<goto "GameOver">>
<<else>>
<<set $DitorHP -= $damage>>
Ditor takes damage
<<if $DitorHP <= 0>>
Cracks spread through his skeletal form.
His crown trembles.
<<goto "Ditor_Defeated">>
<<else>>
* Fight cautiously, studying his patterns→[[Ditor_SafeFight]]
* Throw everything you have at him→[[Ditor_AllInFight]]
<<if $hasSwordOfLight>>
* Unleash the power of the Sword of Light→[[Ditor_LightOfWave]]
<</if>>
<</if>>
<</if>>You rush Ditor, ignoring most of the patterns and focusing only on getting close enough to strike.
<<set _damagetakes = 35>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
You fall at his feet, your last blow unfinished.
<<goto "GameOver">>
<<else>>
<<set $DitorHP -= $damage>>
Ditor takes damage
<<if $DitorHP <= 0>>
Your reckless fury pays off.
Ditor’s throne cracks, and he topples from it, shattered.
<<goto "Ditor_Defeated">>
<<else>>
* Fight cautiously, studying his patterns→[[Ditor_SafeFight]]
* Throw everything you have at him→[[Ditor_AllInFight]]
<<if $hasSwordOfLight>>
* Unleash the power of the Sword of Light→[[Ditor_LightOfWave]]
<</if>>
<</if>>
<</if>>Ditor’s crown falls and shatters on the stone floor.
The forest holds its breath.
Without his power, the energy that feeds this place begins to unravel.
A voice — maybe the forest itself — whispers in your mind:
"Now you choose. The forest… or yourself."
* Escape the forest and save yourself→[[Ending_Escape]]
* Use your power to save the forest→[[Ending_Save]]You turn your back on the throne room and walk away.
Behind you, the forest begins to burn.
Trees crumble into ash, and the sky turns a violent crimson.
The old scoreboard in the hub is swallowed by flame.
<<set $ending = "Escape the Forest">>
You survive — but the forest, and everyone bound to it, does not.
<<if $playerName is "">>
Before you leave, you feel an urge to carve your name somewhere.
Carve your name on the board→[[EnterName]]
<<else>>
<<set $scores.push($playerName + " – " + $ending + " – " + $coins + " coins")>>
Return to the hub (a quiet epilogue)→[[ForestHub]]
<</if>>You kneel where Ditor fell and press your hand to the cracked stone.
Instead of keeping the power for yourself, you pour it back into the world.
Light spreads through the roots and branches of the forest.
Flames vanish. Leaves regrow. The sky turns clear and blue.
Back in the hub, Yoji’s shop stands empty but peaceful.
The scoreboard now shows a new, bright engraving:
"The Lost Knight – Savior of the Forest."
<<set $ending = "Save the Forest">>
<<if $playerName is "">>
You feel a quiet urge to carve your name into the wood.
Carve your name on the board→[[EnterName]]
<<else>>
<<set $scores.push($playerName + " – " + $ending + " – " + $coins + " coins")>>
Return to the hub (a quiet epilogue)→[[ForestHub]]
<</if>>You stand before the old wooden board.
Burn marks, scratches, and faded names cover its surface.
A small empty space remains — just enough for one more name.
Type the name you want to carve:
<<textbox "$tempName" "">>
<<button "Carve your name">>
<<if $tempName is "">>
The forest refuses to remember a nameless knight.
<<else>>
<<set $playerName = $tempName>>
<<set $scores.push($playerName + " – " + $ending + " – " + $coins + " coins")>>
You carve <<= $playerName >> into the wood.
The forest will remember this run.
<<goto "ForestHub">>
<</if>>
<</button>>A wooden board stands at the edge of the hub.
Some names are scratched out, some are burned, and some still shine clearly.
Recent runs:
<<for _i = 0; _i < $scores.length; _i++>>
- <<= $scores[_i] >>
<</for>>
Return to the hub→[[ForestHub]]You purchased $Purchase
<<if $Purchase == "Magic Armor">>
You take the Magic Armor. Your body feels much tougher.
<</if>>
<<if $Purchase == "Flash Helmet">>
You take the Flash Helmet. You feel lighter, ready to blink through danger.
<</if>>
<<if $Purchase == "HP Upgrade">>
Your life force grows stronger.
<</if>>
<<if $Purchase == "Damage Upgrade">>
Your sword feels heavier in your hands, in a good way.
<</if>>
<<if $Purchase == "Sword of Light">>
The Sword of Light hums with radiant power.
You feel a new attack building inside you.
<</if>>
* Back to shop→[[Yoji_Store]]You don't have enough coins.
* Back to shop→[[Yoji_Store]]You charge straight at Fika, ignoring most of her spells.
Your blade cuts through her defenses — but her magic tears through you as well.
<<set _damagetakes = 22>>
<<set $hp -= _damagetakes>>
<<if $hp <= 0>>
Your body gives out before hers does.
You fall at her feet as the forest darkens.
<<goto "GameOver">>
<<else>>
<<set $FikaHP -= $damage>>
Fika takes damage
<<if $FikaHP <= 0>>
With a final desperate strike, you break her concentration and she collapses.
<<goto "Fika_Defeated">>
<<else>>
* Focus on dodging her projectiles→[[Fika_Safe]]
* Rush in and try to interrupt her casting→[[Fika_Aggressive]]
<<if $hasFlashHelmet>>
* Use Flash Helmet to blink between her attacks→[[Fika_Teleport]]
<</if>>
<</if>>
<</if>>