Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
<span id="content">Welcome. You are here because you want to fight beloved cartoon characters in thrilling tactical battles. How wonderful! Here you can do that to your heart's content.
(Don't worry, everything is totally safe. Oh, it can still <i>hurt</i>. It can hurt a lot. But everyone will be made good as new as soon as the battle's over, and that makes it all fine, we're sure.)
Would you like to hear the rules of the game before you begin?
>[[Yes!|Tutorial]]
>[[No, I wanna jump straight in!|Hub]]
<span class="actdesc">Version 0.57 [Archer/Cleric/Witch edition!]
Characters and franchises featured herein are the properties of their respective creators.</span>
</span><<victorycheck>>
<<specialcheck>>
<span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<include commands>>
</span><div class="commandcontainer">
<<for _i, _puppet range $puppets>>
<div class="commands">
<<if _puppet.dead is true>>
/* If puppet is defeated, display no commands. */
<<elseif _puppet.stunned is true>>
<div class="noact">
Stunned!
</div>
<<elseif _puppet.petrified is true>>
<div class="noact">
Petrified!
</div>
<<elseif _puppet.isDone is true>>
<div class="noact">
Done!
</div>
<<else>>
<<act `[$puppets[_i],"$puppets["+_i+"]"]`>><br />
<<rest `[$puppets[_i],"$puppets["+_i+"]"]`>><br />
<<items `[$puppets[_i],"$puppets["+_i+"]"]`>><br />
<<if $surrender is true>>
<<spare `[$puppets[_i],"$puppets["+_i+"]"]`>><br/>
<</if>>
<</if>>
</div>
<</for>>
</div>
<br/>
<div style="text-align: center"><span class = "btn endturn">[[end turn|end of round][$turn = "enemy"]]</span></div>
<br/>
/*[[Kill|targeting phase][$action = "kill"; $subject = [$puppets[0],"$puppets[0]"]]]<br/>*/
/*<<link "Give Mage a Blessing">><<set $effweight to 1>><<addeffect $puppets[2] "Blessing" 1 $puppets[2]>><<goto "Battle!">><</link>>*/<<widget "victorymessage">>
<<set _m = random(1,4)>>
<<switch _m>>
<<case 1>>
You win!
<<case 2>>
Victory!
<<case 3>>
You've won!
<<case 4>>
You are victorious! /* this is a reference to an old game, cookies if you recognize it */
<</switch>>
<</widget>>
<<widget "backbtn">>
<span class="btn back right">[[Back|Battle!][$targeting = false; $allytargeting = false; $pierce = false; $instant = false; $target = [null,null]; $cost = null; $item = false; $removed_effects = []; $element = null;]]</span>
<</widget>>
<<widget "act">>
<<if _puppet.down is true>>
<<if $args[0][0].en >= $struggleCost>>
[[Struggle|confirm phase][$subject = $args[0]; $action = "struggle"; $target = [null,null]; $cost = $struggleCost]]
<<else>>
<b>Exhausted!</b>
<</if>>
<<else>>
[[Act|actions][$subject = $args[0]]]
<</if>>
<</widget>>
<<widget "rest">>
[[Rest|confirm phase][$subject = $args[0]; $action = "rest"; $target = [null,null]; $cost = 0]]
<</widget>>
<<widget "items">>
<<if $embargo is true>>
<span class="embargo">
Nope!
</span>
<<else>>
[[Item|items][$subject = $args[0]]]
<</if>>
<</widget>>
<<widget "spare">>[[Spare|confirm phase][$subject = $args[0]; $action = "spare"; $cost = 0]]<</widget>>
<<widget "status">>
<span class="right">
<<link "[*]">>
<<if $args[0] eq $actor>>
<<set $actor = [null,null]>>
<<else>>
<<set $actor to $args[0]>>
<</if>>
<<replace "#status">><<include "status">><</replace>>
<</link>>
</span>
<</widget>>
<<widget "newturn">>
<<set $SacrificeUsed to false>>
<<for _puppet range $puppets>>
<<set _puppet.isDone to false>>
<<if _puppet.martyr is true or _puppet.hunter is true or _puppet.offbalance is true or _puppet.defender is true or _puppet.berserker is true>>
<<for _effect range _puppet.effects>>
<<switch _effect.name>>
<<case "Martyr" "Hunter" "Off-Balance" "Defender" "Berserker">>
<<removeEffect _puppet _effect "pierce">>
<<default>>
/* do nothing */
<</switch>>
<</for>>
<</if>>
<<if _puppet.winded is false>>
<<set _puppet.en += $ENregen>>
<</if>>
<</for>>
<</widget>>
<<widget "victorycheck">>
<<set _victory to 0>>
<<set _defeat to 0>>
<<for _enemy range $enemies>>
<<if _enemy.dead>>
<<set _victory++>>
<</if>>
<</for>>
<<if _victory eq $enemies.length>>
<<goto "Victory">>
<</if>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _defeat++>>
<</if>>
<</for>>
<<if _defeat eq $puppets.length>>
<<goto "Defeat">>
<</if>>
<</widget>>
<<widget "check">>
<<print '<<if '+$args[0]+' < 0>>\n
<<set '+$args[0]+' to 0>>\n
<</if>>'>>
<</widget>>
<<widget "chain">>
<<for _i, _a range $args>>
<<if def $args[_i] and $args[_i] isnot null and $args[_i][1] isnot null>>
<<set $args[_i][0] = State.getVar($args[_i][1])>>
<</if>>
<</for>>
<</widget>>
<<widget "endofbattle">>
<<set $inbattle to false>>
<<refreshPuppets>>
<<restock>>
<</widget>>
<<widget "checkfor">>
/* Checks if an ailment to be removed is there, to prevent players from wasting items. */
<<if $args[0] is "chi">>
<<if $target[0].chi is true>>
<<print "...but the enemy is protected by Chi Shield, so it won't work.">>
<<elseif $target[0].stasis is true>>
<<print "...but the enemy's effects are held in Stasis, so it won't work.">>
<</if>>
<<elseif $args[0] is "stasis">>
<<if $target[0].stasis is true>>
<<print "...but the target's effects are held in Stasis, so it won't work.">>
<</if>>
<<else>>
<<set _found to false>>
<<for _effect range $target[0].effects>>
<<if _effect.name eq $args[0]>>
<<set _found to true>>
<<break>>
<<elseif $args[0] is "all" and _effect.buff isnot true>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if not _found>>
...or it would, if they had <<if $args[0] is "all">>any<<else>>that ailment<</if>>! You can still use it, but it'll be a waste.
<<elseif $target[0].stasis is true>>
<<print "...but the target's effects are held in Stasis, so nothing will happen.">>
<</if>>
<</widget>>
<<widget "find">>
/* args0 is target array, args1 is attribute, args2 is key value */
/* Note that if your key is a string, it must be in quotes in the final code, which means you must send it to the widget with an extra pair of literal quotes (preceeded by the escape slash) */
<<print '<<set _pos = '+$args[0]+'.map(function(x) { return(x.'+$args[1]+') }).indexOf('+$args[2]+')>>'>>
<</widget>>
<<widget "stat">>
/* Designed by greyelf */
/* Check that a Stat Name was passed to the widget. */
<<if $args.length is 0>>
ERROR
<<else>>
<<set _current to $actor[0].get($args[0]) >>
<<set _base to $actor[0].getBase($args[0]) + $actor[0].getMod($args[0]) >>
/* Check if the Stat has been raised. */
<<if _current > _base >>
@@.stat-raised;_current@@
/* Check if the Stat has been lowered. */
<<elseif _current < _base >>
@@.stat-lowered;_current@@
/* The Stat has not changed. */
<<else>>
_current
<</if>>
<</if>>
<</widget>><<set _class = "actors enemies">>
<<if $scenario is "su1">>
/* SU1 requires an additional class to reverse the flexbox ordering so Steven is in the back */
<<set _class += " reverse">>
<</if>>
<div @class="_class" id="enemies">
<<for _i, _enemy range $enemies>>
/* Some enemies have special name displays */
<<switch _enemy.name>>
<<case "Marceline">>
<<set _name = "Marceline the Vampire Queen">>
<<case "Bill">>
<<set _name = "Bill Cipher">>
<<case "Nicole">>
<<set _name = "Nicole Watterson">>
<<default>>
<<set _name = _enemy.name>>
<</switch>>
<<if _enemy.boss is true>>
<<set _class = "actor full">>
<<else>>
<<set _class = "actor">>
<</if>>
<div class="actor">
<<if _enemy.dead is true>>
<font color="gray">_name</font><br/>
<br />
<<else>>
<<if $targeting is true and _enemy.untargetable is false>>
<<capture _i>>
[[_name|confirm phase][$target = [$enemies[_i],"$enemies["+_i+"]"]; $targeting = false; $allytargeting = false]]
<</capture>>
<<else>>
<span class="actorname">_name</span>
<</if>>
<<capture _i>><<status `[$enemies[_i],"$enemies["+_i+"]"]`>><</capture>>
<br />
HP: _enemy.hp
<</if>>
</div>
<</for>>
</div>
<<if def $controller.gum2 and $controller.gum2.shemad is true>><center><i>"...to <b>KILL YOU!</b>"</i></center><<set $controller.gum2.shemad to null>><br/><</if>>
<br/>
/* puppets */
<div class="actors" id="puppets">
<<for _i, _puppet range $puppets>>
<div class="actor">
<<if _puppet.dead is true>>
<font color="gray">_puppet.name</font><br/>
<br/>
<br/>
<<else>>
<<if $allytargeting isnot true or ($subject[0].name == _puppet.name and def $selftargeting)>>
<span class="actorname">_puppet.name</span>
<<elseif $allytargeting is true>>
<<capture _i>>
[[_puppet.name|confirm phase][$target = [$puppets[_i],"$puppets["+_i+"]"]; $allytargeting = false; $targeting = false]]
<</capture>>
<</if>>
<<capture _i>><<status `[$puppets[_i],"$puppets["+_i+"]"]`>><</capture>>
<br />
HP: _puppet.hp<br />
EN: _puppet.en / 10
<</if>>
</div>
<</for>>
</div><<if def $actor and $actor[0] isnot null>>
<div class="statusname">$actor[0].name</div>
<br />
<<for _k, _v range $actor[0].stats>>
<span class="statname"><<print _k>>:</span>
<<stat _k>>
<br/>
<</for>>
<br/>
<<effectinfo>>
<</if>><<set $base to 40>> /* base constant for dmg formula */
<<set $damper to 1>> /* damping factor for dmg formula */
<<set $effbase to 20>> /* base constant for stat mods */
<<set $effdamper to 0.5>> /* damping factor for stat mods */
<<set $min_dmg to 1>> /* minimum damage */
<<set $min_DoT to 1>> /* minimum DoT damage */
<<set $min_buff to 0>> /* minimum buff effect */
<<set $min_debuff to 5>> /* minimum debuff effect */
<<set $formula to "subtractive">>
<<set $knife_weight to 0.8>> /* weight for all basic multi-hit attacks; localized here for easy testing */
<<set $pierce_weight to 0.8>> /* weight for all basic piercing attacks; localized here for easy testing */
<<set $difficulty to "hard">>
<<set $protector_time to 3>>
<<set $boost_time to 3>>
<<set $sacrificeHP = 50>>
<<set $LIFEGIVER_HP = 100>>
<<set $struggleCost = 2>>
<<set $ENregen = 2>>
<<set $berserk_factor = 0.5>>
<<set $defend_factor = 0.5>>
<<set $SHIELD_FACTOR = 0.3>>
<<puppetsInit>>
<<set $Crossbow =
{name: "Crossbow",
cost: 0,
weight: 1,
basic: true,
phase: "targeting phase"}>>
<<set $Reload =
{name: "Reload",
cost: 2,
basic: true,
phase: "confirm phase"}>>
/* The order of items in the inventory reflects the order they'll be displayed in the Items and Procure menus */
<<set $inventory to new Map()>>
<<setinv>>
<<restock>>
<<set $achievements to new Map()>>
<<run $achievements.set("Bubblegum Chewer", 0)>>
<<run $achievements.set("Scourge of Ooo", 0)>>
<<run $achievements.set("Mystery Solver", 0)>>
<<run $achievements.set("Tree Feller", 0)>>
<<run $achievements.set("Star Crusher", 0)>>
<<run $achievements.set("Watterson Wrecker", 0)>>
<<run $achievements.set("Thinner Than Water", 0)>>
<<run $achievements.set("Thicker Than Blood", 0)>>
<<run $achievements.set("Princess With A Thousand Enemies", 0)>>
<<run $achievements.set("Gem Smasher", 0)>>
<<run $achievements.set("Pearl Connoisseur", 0)>>
<<run $achievements.set("Garnet Collector", 0)>>
<<run $achievements.set("Amethyst Curator", 0)>>
<<run $achievements.set("Bully", 0)>>
<<run $achievements.set("Widowmaker", 0)>>
<<run $achievements.set("Demonologist", 0)>>
<<run $achievements.set("Orphaner", 0)>>
<<run $achievements.set("Tyrant", 0)>>
<<run $achievements.set("Gladiator", 0)>>
<<run $achievements.set("Independent", 0)>>
<<run $achievements.set("Does It Make A Sound?", 0)>>
<<run $achievements.set("The Redemption", 0)>>
<<run $achievements.set("Alone Together", 0)>>
<<run $achievements.set("Last One Standing", 1)>>
<<run $achievements.set("Tactician", 1)>>
/* ["Invincible", {at1: false, at2: false, gf1: false, gf2: false, gum1: false, gum2: false, su1: false, su2: false, champ: false}] */
<<set $progress to {at: 0, gf: 0, gum: 0, su: 0}>>
<<set $controller to {at1: {}, gf1: {}, gum1: {}, su1: {}}>>
<<set $actor = [null,null]>>
<<set $subject = [null,null]>>
<<set $target = [null,null]>>
<<set $effects_to_remove to 0>>
<<set $removed_effects = []>>
<<set $targeting to false>>
<<set $allytargeting to false>>
<<set $AoE to false>>
<<set $turn to "player">>
<<set $action to "">>
<<set $dmg to 0>>
<<set $weight to 0>>
<<set $effweight to 0>>
<<set $cost to 0>>
<<set $mincost to 0>>
<<set $message to false>>
<<set $pierce to false>>
<<set $instant to false>>
<<set $ammo to true>>
<<set $embargo to false>>
<<set $ready to false>>
<<set $item to false>>
<<set $tutorial to false>>
<<set $inbattle to false>>
<<set $element to null>><span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<backbtn>><br/><br/>
<<actionlist $subject[0]>>
</span><span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<backbtn>>
<<set $item to true>>
<<itemlist>>
</span><span id="status">
<<include status>>
</span>
<span id="content">
<<if ndef $allytargeting or $allytargeting is false>>
<<set $targeting to true>>
<<elseif $allytargeting is null>>
<<set $allytargeting to true>>
<<set $targeting to true>>
<</if>>
<<include actorlist>>
<<backbtn>>
Select a target.
</span>
<<if $targeting is true>>
<<for _i, _enemy range $enemies>>
<<if _enemy.martyr>>
<<set $target = [$enemies[_i],"$enemies["+_i+"]"]>>
<<set $targeting to false>>
<<goto "confirm phase">>
<</if>>
<</for>>
<</if>><span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<backbtn>>
$subject[0].name will
<<if $action is "rest">>
<b>rest</b> this turn.
<<elseif $action is "struggle">>
spend $struggleCost Energy to get back on their feet.
<<elseif $item is true>>
use <<switch $action>><<case "Antidote" "Asprin" "Inhaler">>an<<default>>a<</switch>> $action.
<<elseif $action is "spare">>
accept the enemy's surrender.
<<else>>
use <b>$action</b><<if $target[0] isnot null>> on <b>$target[0].name</b><</if>>.
<</if>>
[[Confirm?|action phase]]<br />
<<preview>>
</span><span id="content">
<<include "action effects">>
/* Variable cleanup. Due to the way goto works, this will work even for invisible actions. */
<<set $element to null>>
/* If target was an enemy (i.e. an atacking skill was used), subject is marked as attacker. (This is for enemies that target the last puppet to attack them.) */
<<if $target[0] instanceof Enemy>>
<<set $attacker = $puppets.indexOf($subject[0])>>
<</if>>
/* If action was an item, decrement item stock and reset item flag */
<<if $item>>
<<run $inventory.get($action).stock -= 1>>
<<set $cost to 0>>
<<set $item to false>>
<</if>>
/* isDone logic; checks for confounding factors */
<<if $instant is true>>
<<set $instant to false>>
<<elseif $subject[0].inspired is true>>
<<set $subject[0].inspired to false>>
<<else>>
<<set $subject[0].isDone to true>>
<</if>>
/* Subtract action cost */
<<if $action isnot "Focus">>
<<set $subject[0].en -= $cost>>
<</if>>
/* Archer's mark attacks */
<<if $subject[0].name isnot "Archer" and $target[0] instanceof Enemy>>
<<set _hitlist = []>>
<<for _enemy range $enemies>>
<<if _enemy.marked is true>>
<<run _hitlist.push(_enemy)>>
<</if>>
<</for>>
<<if _hitlist.length > 0>>
<<find "$puppets" "name" "\'Archer\'">>
<<if _pos > -1>>
<<if not $puppets[_pos].dead and not $puppets[_pos].noact>>
<<set _temp = $subject[0]>>
<<set $subject[0] = $puppets[_pos]>>
<<for _enemy range _hitlist>>
<<if $puppets[_pos].en > 0>>
<<set $target[0] = _enemy>>
<<set $action = "Shot">>
<<set $cost = 1>>
<<set $weight = 0.75>>
<<include "action effects">>
<<set $puppets[_pos].en -= $cost>>
<<if $puppets[_pos].en <= 0>>
<br/>$puppets[_pos].name has run out of arrows!<br/>
<<addeffect $puppets[_pos] "Winded" 3>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<else>>
ERROR: Mark without Archer<br/>
<</if>>
<</if>>
<</if>> /* close Mark attack if */
<span class="btn">[[Continue...|Battle!]]</span>
</span><<nobr>>
<<switch $scenario>>
<<case "at1">>
<<goto "AT1 win">>
<<case "gf1">>
<<goto "GF1 win">>
<<case "gum1">>
<<goto "GUM1 win">>
<<case "su1">>
<<goto "SU1 win">>
<</switch>>
<<endofbattle>> /* this gives the engine a little bit of a break, as it doesn't have to run the effect manager. */
<</nobr>>You win!
[[Return to hub|Hub][$enemies = null]]All your puppets were defeated! Without them, you can't battle. You'll have to try again.
>[[Retry this battle|Preparation]]
>[[Return to the hub with your shame|Hub]]
<<endofbattle>><<nobr>>
<span id="status">
<<include status>>
</span>
<</nobr>><span id="content"><span id="actorlist"><<include actorlist>></span>
<<if $scenario is "at2">>Your attack pushes Marceline straight into a pool of sunlight, and she bursts into flames before she can escape.<<timed 4s>> She wails a blood-curdling shriek as she flails helplessly, the flames crisping her pale skin black like parchment as you watch.<<next>> She screams and screams and screams until suddenly -<<next>>
Silence.<<next 3s>>
<<set $enemies[0].dead to true>><<replace "#actorlist">><<include actorlist>><</replace>>The flames go out all at once. Nothing remains but a pile of ash.<<next 3s>>
[[(Continue...)|Battle!]]<</timed>><<nobr>>
<</nobr>><<elseif $scenario is "gum2">>You hear a wet <i>crunching</i> noise, and Nicole's legs buckle underneath her. She gasps sharply, but manages to catch herself.<<timed 5s>>
"That's nothing," she says with chilling calmness. "I can still fight."<<next 4s>>
She stands up, and her legs immediately give out again.<<next 5s>>
Terror flashes across her eyes, but her stare passes straight through you. "Wait. H-hold on. Just... just let me get up again."<<next>>
She forces herself upright, but you can see immediately it's not going to last. Her whole body is quivering like a reed in the wind. She falls again, landing heavily on her arm. She splays out on the ground, clutching her stomach. You hear her coughing, thick, wet noises coming from her throat.<<next 6s>>
"Everyone is... depending on me... I can't... I won't..."<<next 4s>>
She stands upright. Her leg trembles and you wait for the inevitable, but this time she stays standing. She goes still as a statue, staring at something you can't see.<<next 5s>>
She grits her teeth.<<next 3s>>
"I<<next 1s>> won't<<next>> lose.<<next 2s>>
"I<<next 1s>> won't<<next>> lose.<<next 2s>>
"I<<next 1500ms>> won't<<next 3s>>..."
<<set $enemies[0].dead to true>><<replace "#actorlist">><<include actorlist>><</replace>>Nicole collapses!
[[(Continue...)|Battle!]]<</timed>><</if>>
</span><span id="content"><<nobr>>
<div class="actors" id="puppets">
<<for _i, _puppet range $puppets>>
<div class="actor">
<span class="actorname">_puppet.name</span>
<br />
HP: _puppet.hp<br />
EN: _puppet.en / 10
</div>
<</for>>
</div>
<</nobr>>
Of course we do not expect you to go into battle on your own, small child! That would be reckless endangerment. No, no, we have created puppets to help you play. You may not recognize their faces, but you know them well; they are the essence at the core of all warriors, reborn and remasked time and again but always the same underneath. The [[Fighter][$subject[0] = $Fighter]], the [[Rogue][$subject[0] = $Rogue]], and the [[Mage][$subject[0] = $Mage]].
Though they are originals, time has also refined them to birth new roles you may like to try out: The [[Archer][$subject[0] = $Archer]] , the [[Cleric][$subject[0] = $Cleric]], and the [[Witch][$subject[0] = $Witch]]... and their sometimes friend, the [[Bard][$subject[0] = $Bard]].
See how readily they move, as if they were part of your own body. Is it not intoxicating to have such power at your fingertips?
Your puppets each have different roles, and bring different skills to the arena. Click on their names to learn more about them. Or, should you wish to learn about the general rules of battle, [[click here.|Battle Mechanics]]
[[Return to the hub|Hub]]
</span>
<<set $tutorial to true>><span id="content"><<print '<img src="'+setup.Path+'AT_logo.png" class="logo" />'>>
Upon closer inspection, you see there are actually two gates here.
The one on the left is clearly labeled "Round One". Around the edges is a pattern of what appears to be stylized bubblegum and cotton candy, full of lumpy purple blobs and wispy, flowing pink.
The one on the right is in deep shadow, even though you can't see any visible light sources. Bats perch under a stony overhang that, unlike the rest of the stone here, looks craggy and weathered with age, like the stone you'd see in a creepy old cave. The bats are nearly invisible, except for their red eyes that glow like coals within the blackness. Occasionally they shuffle and shift their weight, but they make no other sound or movement.
>[[Enter the "Round One" gate|AT1 landing][$controller.at1 = {choice: "", scene: 0, human: ""}]]<br/>
><<if $progress.at < 1>>The second gate is firmly shut.<<else>>The second gate will open sometime in the future, maybe.<</if>>
<<back>>
</span><span id="content"><<print '<img src="'+setup.Path+'GF_logo.png" class="logo" />'>>
Upon closer inspection, you see there are actually two gates here.
The one on the left is set into a country scene looking down on a little valley hamlet, surrounded by looming mountains that are almost but not quite bridged by two rocky overhangs. The colors are slightly faded, giving the impression of a sunset. On either side of the gate, in a starkly different style, are minimalist renditions of a pine tree and a shooting star. The gate is labeled "Round One".
The one on the right is painted over with a golden triangle inlaid with a huge, slitted eye. <<if $progress.gf < 1>>Looking at it makes you uncomfortable.<<else>>You can't shake the feeling that it's looking at you.<</if>> The wall around the gate is strangely plain, but if you look closely, you can see warping and twisting in the stone, little bumps and ridges at odds with the perfect smoothness everywhere else.
>[[Enter the "Round One" gate|GF1 landing][$controller.gf1 = {choice: "", scene: 0}]]<br/>
><<if $progress.gf < 1>>The second gate is firmly shut.<<else>>The second gate will open sometime in the future, maybe.<</if>>
<<back>>
</span><span id="content"><<print '<img src="'+setup.Path+'TAWOG_logo.png" class="logo" />'>>
Upon closer inspection, you see there are actually two gates here.
The one on the left is clearly labeled "Round One". It and the surroundings are covered with a bizarre collage of images in countless clashing styles. There even appears to be what looks like CGI in there. The chaos should make the whole thing an impossible mess, but somehow it just... works.
The one on the right is an ordinary, rectangular door, like one you might see in a house. Approaching it fills you with a dread you can't quite place.
>[[Enter the "Round One" gate|GUM1 landing][$controller.gum1 = {scene: 0}]]<br/>
><<if $progress.gum < 1>>The second gate is firmly shut.<<else>>/*[[Swallow your fear and open the house door|GUM2 landing][$controller.gum2 = {scene: 0, fite: 0}]]*/<</if>>
<<back>>
</span><span id="content"><<print '<img src="'+setup.Path+'SU_logo.png" class="logo" />'>>
Upon closer inspection, you see there are actually two gates here.
The one on the left is clearly labeled "Round One". It is arched, and colored a pleasant sky blue. In the center is a five-pointed white star, each arm inset with a beautiful gem. You identify them as a pearl, an amethyst, a ruby, a sapphire, and a rose quartz.
The one on the right looks similar, but there is only a rose quartz, smack in the center of the star. Fluffy pink clouds are painted on the wall around it. <<if $progress.su > 0>>From somewhere far above, rose petals flutter slowly to the ground.<</if>>
>[[Enter the "Round One" gate|SU1 landing][$controller.su1 = {scene: 0, fite: 0}; $answer = null]]<br/>
><<if $progress.su < 1>>The second gate is firmly shut.<<else>>The rose quartz is shining brightly. You can enter... as soon as the battle is designed.<</if>>
<<back>>
</span><span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<backbtn>>
<<if $cost < $mincost>>
Spell requires at least $mincost Energy.<br/>
<<elseif $subject[0].en < $cost>>
Not enough Energy!<br/>
<</if>>
How much Energy do you want to put into $action? (Minimum $mincost)<br />
<<textbox "$cost" $mincost "spell check" autofocus>><br/>
(Press Enter to confirm.)<br/>
</span><<run $cost *= 1>>
<<if ($cost < $mincost) or ($subject[0].en < $cost) or isNaN($cost)>>
<<goto "spell phase">>
<<else>>
<<switch $action>>
<<case "Blast">>
<<if $cost < 10>>
<<set $weight = 1+(0.25*($cost-$mincost))>>
<<else>>
<<set $action = "Indignant Variati">>
<<set $weight = 3>>
<</if>>
<<case "Fireball">>
<<if $cost < 10>>
<<set $effweight = 0.6+(0.1*($cost-$mincost))>>
<<else>>
<<set $action = "Perdition">>
<<set $effweight = 0.7>>
<</if>>
<<case "Restoration">>
<<if $cost < 10>>
<<set $effects_to_remove = 1+($cost-$mincost)>>
<<set $allytargeting to true>>
<<else>>
<<set $action = "Salvation">>
<<set $target = [null,null]>>
<</if>>
<<case "Neutralize">>
<<if $cost < 10>>
<<set $effects_to_remove = 1+($cost-$mincost)>>
<<else>>
<<set $action = "Annulment">>
<<set $target = [null,null]>>
<</if>>
<<case "Blessing">>
<<if $cost < 10>>
<<set $allytargeting to true>>
<<set $effweight = (10/35)>>
<<set $blessing_time = 3>>
<<switch $cost>>
<<case 6>>
<<set $blessing_time = 4>>
<<case 7>>
<<set $blessing_time = 4>>
<<set $effweight = 0.5>>
<<case 8>>
<<set $blessing_time = 5>>
<<set $effweight = 0.5>>
<<case 9>>
<<set $blessing_time = 5>>
<<set $effweight = 0.7>>
<</switch>>
<<elseif $cost == 10>>
<<set $action = "Ascension">>
<<set $effweight = 0.5>>
<<set $target = [null,null]>>
<</if>>
<<case "Curse">>
<<if $cost < 10>>
<<set $effweight = 0.6>>
<<set $curse_time = 3>>
<<switch $cost>>
<<case 6>>
<<set $curse_time = 4>>
<<case 7>>
<<set $curse_time = 4>>
<<set $effweight = 0.8>>
<<case 8>>
<<set $curse_time = 5>>
<<set $effweight = 0.8>>
<<case 9>>
<<set $curse_time = 5>>
<<set $effweight = 1>>
<</switch>>
<<elseif $cost == 10>>
<<set $action = "Forsaken">>
<<set $effweight = 2>>
<</if>>
<<case "Favor">>
<<set $transfer = $cost>>
<<set $allytargeting to true>>
<<if $cost == 10>>
<<set $action = "Inspiration">>
<</if>>
<<case "Shout">>
<<set $weight = 1+(0.25*($cost-$mincost))>>
<<case "Shot">>
<<set $weight = $weight+(0.25*($cost-$mincost))>>
<<case "Soulshot">>
<<set $weight = $weight+(0.1*($cost-$mincost))>>
<<case "Cleanse">>
<<if $cost < 10>>
<<set $effects_to_remove = 1+($cost-$mincost)>>
<<else>>
<<set $action = "Renewal">>
<<set $target = [null,null]>>
<</if>>
<<case "Gift">>
<<set $transfer = $cost>>
<<set $allytargeting to true>>
<<if $cost == 10>>
<<set $action = "Miracle">>
<<set $target = [null,null]>>
<</if>>
<</switch>>
<<switch $action>>
<<case "Salvation" "Annulment" "Ascension" "Renewal" "Miracle">>
<<goto "confirm phase">>
<<default>>
<<goto "targeting phase">>
<</switch>>
<</if>>/* Widget for display of player actions. */
/* Sacrifice's HP cost is set in StoryInit. Currently it is 50. */
//actions
/* Individual action widgets take cost, damage multiplier, and other relevant variables as arguments so they can be displayed in the description. Values are given in "Database: Actions". */
/* Self-targetting and AoE abilities must set target to null to make certain other things line up. */
<<widget "actionlist">>
<<set _char = $args[0]>>
<<for _action range _char.actions>>
<b><<if $args[0].en < _action.cost or $tutorial is true or (_action.name is "Sacrifice" and $SacrificeUsed is true)>>
/* If insufficient energy, just display the action name (no link). */
_action.name
<<elseif $args[0].dizzy is true and _action.basic isnot true>>
/* If dizzy and action not basic, display the name as crossed out followed by a gray "Dizzy!" message. */
<del>_action.name</del> <span class="dizzy">Dizzy!</span>
<<elseif (_action.name is "Sacrifice" and $args[0].hp <= $sacrificeHP) or (_action.name is "Lifegiver" and $args[0].hp <= $LIFEGIVER_HP)>>
/* If puppet has insufficient HP for an HP-consuming skill, the name is crossed out. */
<del>_action.name</del> Not enough HP!
<<else>>
<<capture _action>>
<<link "_action.name">>
<<set $action = _action.name>>
<<set $cost = _action.cost>>
<<set $weight = _action.weight>>
<<set $effweight = _action.effweight>>
<<set $duration = _action.time>>
<<set $pierce = _action.pierce>>
<<set $allytargeting = _action.ally>>
<<set $selftargeting = _action.self>>
<<set $instant = _action.instant>>
<<if _action.phase is "confirm phase">>
<<set $target = [null,null]>>
<</if>>
<<if _action.spell is true>>
<<set $allytargeting to false>>
<<set $mincost = _action.cost>>
<</if>>
<<print '<<goto "'+_action.phase+'">>'>>
<</link>>
<</capture>>
<</if>>
</b> <<if _action.name isnot "Procure">>(<<print _action.cost>><<if _action.spell>>+<</if>>)<</if>><<if _action.instant>><span class="right">[Instant] </span><</if>> <<if _action.basic>><span class="right">[Basic] </span><</if>><br />
<<actinfo _action>>
<<actdesc _action>>
<br/>
<</for>>
<</widget>><span id="status">
<<include status>>
</span>
<span id="content">
<<include actorlist>>
<<if $turn eq "player">>
/* If the turn reads "player", it's because the enemy round just finished. Run end of turn for enemies. */
<<endofround $enemies>>
<<newturn>>
<<if _message>>
[[(Continue...)|Battle!]]
<<else>>
<<goto "Battle!">>
<</if>>
<<elseif $turn eq "enemy">>
/* If the turn reads "enemy", the player turn just finished. Run end of turn for player. */
<<endofround $puppets>>
<<if _message>>
[[(Continue...)|enemy phase]]
<<else>>
<<goto "enemy phase">>
<</if>>
<</if>>
</span><<if $inbattle>>
<<if def $puppets and $puppets isnot null>>
<<for _puppet range $puppets>>
<<if _puppet.en > 10>>
<<set _puppet.en = 10>>
<<elseif _puppet.en < 0>>
<<set _puppet.en = 0>>
<</if>>
<</for>>
<</if>>
<</if>>
<<if passage() is "targeting phase" and def $selftargeting>>
<<unset $selftargeting>>
<</if>>/*
addmessage: Standardizes what message is shown when an effect is applied.
removemessage: Standardizes what message is shown when an effect is removed.
effectinfo: Displays effect description in status pane.
See also the Effect Applier and Effect Manager widgets.
*/
<<widget "removeEffect">>
<<set _actor = $args[0]>>
<<set _effect = $args[1]>>
<<if _actor.stasis is false or $args[2] is "pierce">>
<<set _effect.duration = 0>>
<<effectmanager _actor>>
<</if>>
<</widget>>
<<widget "addmessage">>
/* args0 is subject; args1 is effect name */
<<set _target = $args[0]>>
<<switch $args[1]>>
<<case "Injury">>
_target.name suffers an <b>Injury</b>!
<<case "Pain">>
_target.name is struck with <b>Pain</b>!
<<case "Headache">>
_target.name gets a <b>Headache</b>!
<<case "ATK Boost">>
_target.name is surging with strength!
<<case "DEF Boost">>
_target.name feels tougher.
<<case "SPC Boost">>
_target.name's mind is racing.
<<case "Burning">>
_target.name is <b>Burning</b>!
<<case "Poisoned">>
_target.name is <b>Poisoned</b>!
<<case "Winded">>
_target.name is <b>Winded</b>!
<<case "Dizzy">>
_target.name is <b>Dizzy</b>!
<<case "Curse">>
_target.name can't seem to do anything right.
<<case "Forsaken">>
_target.name is <b>Forsaken</b>.
<<case "Perdition">>
_target.name feels the fires of <b>Perdition</b>.
<<case "Hidden">>
_target.name is evading attacks.
<<case "Chi Shield">>
_target.name is brimming with life.
<<case "Blessing">>
_target.name feels a sense of grace.
<<case "Bubble">>
Translucent pink petals rise from the ground to wrap _target.name in a protective bubble.
<<case "Knocked Down">>
_target.name is <b>Knocked Down</b>!
<<case "Stunned">>
_target.name is <b>Stunned</b>!
<<case "Off-Balance">>
_target.name is <b>Off-Balance</b>.
<<case "Martyr">>
All eyes are on _target.name.
<<case "Protector">>
_target.name is protecting $target[0].name.
<<case "Berserker" "Defender" "Hunter" "Trickster">>
_target.name adopts the stance of a <b>$args[1]</b>.
<<case "Marked">>
_target.name is <b>Marked</b>.
<<case "Shield">>
The air before _target.name glimmers with a magical <b>Shield</b>.
<<case "Frenzy">>
_target.name feels the <b>Frenzy</b>!
<<case "Stasis">>
_target.name's effects are placed in <b>Stasis</b>.
<<case "Alert">>
/* no message */
<<default>>
An unknown effect ($args[1]) was applied.
<</switch>>
<</widget>>
<<widget "removemessage">>
/* args0 is subject; args1 is effect name */
<<if _mask isnot true>>
<<switch $args[1]>>
<<case "Chi Shield">>
$args[0].name is no longer protected by $args[1].
<<case "DEF Boost" "SPC Boost" "Blessing">>
$args[0].name loses a $args[1].
<<case "ATK Boost">>
$args[0].name loses an $args[1].
<<case "Protector">>
$args[0].name is no longer protecting anyone.
<<case "Bubble">>
$args[0].name's bubble shield dissipates.
<<case "Injury" "Pain" "Headache">>
$args[0].name's $args[1] is cured.
<<case "Curse">>
$args[0].name's $args[1] is lifted.
<<case "Berserker" "Defender" "Martyr" "Hunter" "Trickster">>
/* display nothing */
<<case "Doom">>
$args[0].name's $args[1] is dispelled.
<<case "Perdition">>
<<print "$args[0].name is freed from the fires of $args[1].">>
<<case "Shield">>
$args[0].name's Shield is gone.
<<case "Frenzy">>
$args[0].name is no longer in a Frenzy.
<<case "Stasis">>
$args[0].name's effects are no longer in Stasis.
<<default>>
$args[0].name is no longer $args[1].
<</switch>>
<br/>
<<else>>
<<set _mask to false>>
<</if>>
<</widget>>
<<widget "effectinfo">>
<<for _k, _effect range $actor[0].effects>>
<<if _effect.invisible isnot true>>
<u>_effect.name</u>
<<if _effect.duration >= 0>>
<span class="duration">_effect.duration turns</span>
<</if>><br/>
<span class="effectdesc">
<<switch _effect.name>>
<<case "Burning" "Perdition">>
Inflicts <<DoT $actor[0] _k "status">> physical damage per round.
<<case "Poisoned">>
Inflicts <<DoT $actor[0] _k "status">> special damage per round.
<<case "Doom">>
Inflicts <<DoT $actor[0] _k "status">> absolute damage per round.
<<case "Injury">>
Attack reduced by _effect.power.
<<case "Pain">>
Defense reduced by _effect.power.
<<case "Headache">>
Special reduced by _effect.power.
<<case "Curse">>
All stats reduced by _effect.power.
<<case "Forsaken">>
Defense reduced by _effect.power. Defense can be negative.
<<case "Dizzy">>
Can only use basic skills.
<<case "Winded">>
No Energy regen.
<<case "Stunned">>
Cannot act.
<<case "Alert">>
Can't be stunned.
<<case "Off-Balance">>
Direct damage will inflict Knocked Down.
<<case "Knocked Down">>
Cannot act until righted. Defense halved.
<<case "ATK Boost">>
Attack boosted by _effect.power.
<<case "DEF Boost">>
Defense boosted by _effect.power.
<<case "SPC Boost">>
Special boosted by _effect.power.
<<case "Blessing">>
All stats boosted by _effect.power.
<<case "Chi Shield">>
Protected from ailments.
<<case "Protector">>
Taking hits for an ally. Defense boosted by _effect.power.
<<case "Martyr">>
Will be targeted by all direct attacks.
<<case "Hidden">>
Can't be targeted by direct attacks.
<<case "Berserker">>
Damage dealt and received up by <<print $berserk_factor*100>>%.
<<case "Berserker">>
Damage dealt and received down by <<print $berserk_factor*100>>%.
<<case "Bubble">>
Protects against one attack.
<<case "Marked">>
Will be shot every time someone attacks.
<<case "Shield">>
Incoming damage reduced by <<print $SHIELD_FACTOR*100>>%.
<<case "Frenzy">>
Attack boosted by _effect.power; Defense reduced by <<print Math.round(_effect.power/2)>>.
<<case "Guarded">> /* this doesn't actually do anything on its own; the SU special rules are hardcoded into the action phase */
Protected from direct attacks; out of reach of area attacks.
<<default>>
Effect not yet implemented.
<</switch>>
</span>
<</if>>
<br/><br/>
<</for>>
<</widget>>/* This widget is used for the entire enemy phase, so it also includes enemy AI and action text. */
<<widget "enemyaction">>
<<set _temp = 0>>
<<switch $args[0].name>>
/*Adventure Time 1*/
<<case "Finn">>
<<set _act = random(1,2)>>
<<switch _act>>
<<case 1>> /*Attack*/
<<enemytarget>>
<<set $weight = 1>>
<<print "Finn swings his sword wildly!\n">>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 2>> /*Charge*/
<<enemytarget>>
<<set $weight = 1.5>>
<<print "Finn charges in recklessly!\n">>
<<echodamage>>
<<addeffect $subject[0] "Off-Balance" 1>>
<<set $subject[0].attacked to true>>
<</switch>>
<<case "Jake">>
<<if $subject[0].ready is true>> /* always use stomp attack if ready */
<<set _act = 5>>
<<elseif $enemies[1].dead or $enemies[2].dead>>
<<set _act = random(1,7)>> /* don't use Martyr */
<<elseif $enemies[1].dead and $enemies[2].dead>>
<<set _act = random(1,6)>> /* don't use Martyr or Protector */
<<else>>
<<set _act = random(1,8)>>
<</if>>
<<switch _act>>
<<case 1>> /* trip */
Jake stretches his arms into whips and trips everyone up!<br/><br/>
<<for _puppet range $puppets>>
<<addeffect _puppet "Off-Balance" 1>>
<</for>>
<<case 2>> /* attack */
<<enemytarget>>
<<set $weight = 1>>
<<print "Jake attacks!\n">>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 3>> /* stun */
<<enemytarget "ignore downed">>
Jake stretches out towards $target[0].name and wraps around and around until they can't move!<br/><br/>
<<addeffect $target[0] "Stunned" 1>>
<<case 4>> /* pain */
<<enemytarget "debuff">>
<<set $weight = 1>>
<<set $effweight = 0.5>>
Jake uses "Below the Belt".<br/>
Jake raises his fists as if to punch $target[0].name, but instead his legs snap out to hit them right in the knees.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<case 5>> /* headache */
<<enemytarget "debuff">>
<<set $weight = 1>>
<<set $effweight = 0.5>>
Jake uses "Dead Ringer".<br/>
Jake stretches around behind $target[0].name before they can react, and whacks them hard on the back of the head.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Headache" 3 $subject[0]>>
<<case 6>> /* charged attack: spend a turn growing big, then stomp for probably double damage? */
<<if $subject[0].ready is false>>
Jake grows to tremendous size until his bulk dwarfs everyone on the battlefield. His next attack is gonna hurt...<br/>
<<set $subject[0].ready to true>>
<<else>>
<<set $weight = 2>>
<<enemytarget>>
The giant Jake stomps hard on $target[0].name!<br/><br/>
<<echodamage>>
<br/>Jake shrinks back to regular size.<br/>
<<set $subject[0].ready to false>>
<</if>>
<<case 7>> /* protector */
<<set $effect_weight to 0.4>>
<<if $enemies[2].dead isnot true>>
<<set $target[0] = $enemies[2]>> /* always protects Finn if possible */
<<else>>
<<set $target[0] = $enemies[1]>> /* otherwise, protects Bubblegum */
<</if>>
Jake wraps himself around $target[0].name like a suit of armor.<br/>
<<addeffect $subject[0] "Protector" 3>>
<<case 8>> /* martyr */
Jake stretches himself into a huge wall of flesh, covering the others from your attacks!<br/><br/>
<<addeffect $subject[0] "Martyr" 1>>
<</switch>>
<<case "Princess Bubblegum">>
/* Bubblegum provides a supporting role while Finn and Jake are around. She has three mass buff skills, one for each stat, a chi skill, and a regular attack. Bubblegum is most likely to use a buff skill, but can only do so once every 3 rounds. */
<<if $event is false>>
/* when Finn and Jake are still up, perform supportive role */
<<if $args[0].cooldown < 0>>
<<set _act = random(1,3)>> /* can only use buffs if cooldown is done */
<<else>>
<<set _act = random(4,8)>>
<</if>>
<<switch _act>>
<<case 1>> /* Call to Arms */
<<set $effweight = 0.3>>
Princess Bubblegum uses "Call to Arms".<br/>
<<for _enemy range $enemies>>
<<addeffect _enemy "ATK Boost" 3 $subject[0]>>
<</for>>
<<set $args[0].cooldown to 3>>
<<case 2>> /* Walled City */
<<set $effweight = 0.3>>
Princess Bubblegum uses "Walled City".<br/>
<<for _enemy range $enemies>>
<<addeffect _enemy "DEF Boost" 3 $subject[0]>>
<</for>>
<<set $args[0].cooldown to 3>>
<<case 3>> /* Age of Enlightenment */
<<set $effweight = 0.3>>
Princess Bubblegum uses "Age of Enlightenment".<br/>
<<for _enemy range $enemies>>
<<addeffect _enemy "SPC Boost" 3 $subject[0]>>
<</for>>
<<set $args[0].cooldown to 3>>
<<case 4 5>> /* Bottled Chi */
<<allytarget>>
$args[0].name presses a button, and <<if $target eq 0 or $target eq 2>>$target[0].name is<<else>>becomes<</if>> surrounded by a force field.<br/>
<<addeffect $target[0] "Chi Shield" 3>>
<<case 6>> /* grenade */
<<if $subject[0].ready is true>>
<<set $item to true>>
<<set $weight = 1>>
<<enemytarget>>
Princess Bubblegum throws what appears to be a giant peppermint, but as soon as it hits the ground it explodes with the force of a grenade, spreading hard candy shrapnel everywhere.<br/><br/>
<<echodamage>>
<<set _temp = $target[0]>>
<<for _puppet range $puppets>>
<<if _puppet neq _temp and _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<set $subject[0].ready to false>>
<<else>>
Princess Bubblegum pulls something out of her pack.<br/>
<<set $subject[0].ready to true>>
<</if>>
<<case 7>> /* poison bomb */
<<if $subject[0].ready is true>>
<<enemytarget "ignore downed" "debuff">>
Princess Bubblegum douses $target[0].name in a stinging, sticky syrup. They cough and stagger as their skin breaks out in welts.<br/><br/>
<<set $effweight = 0.7>>
<<addeffect $target[0] "Poisoned" 3 $subject[0]>>
<<set $effweight = 0.5>>
<<addeffect $target[0] "Injury" 3 $subject[0]>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<addeffect $target[0] "Headache" 3 $subject[0]>>
<<else>>
Princess Bubblegum pulls something out of her pack.<br/>
<<set $subject[0].ready to true>>
<</if>>
<<default>> /* attack */
<<enemytarget>>
<<set $weight = 1>>
Princess Bubblegum blasts $target[0].name with her ray gun.<br/><br/>
<<damagecalc>>
<<echodamage>>
<<set $subject[0].attacked to true>>
<</switch>>
<<else>>
/* if Finn and Jake are down, switch to offense role */
/* Bubblegum will drop her mass buff skills in favor of a self-buff Blessing of the same power. She will always use this every 3 rounds when the Blessing would naturally wear off. Her regular attack gets a boost to its attack weight. */
<<if $args[0].cooldown <= 0>>
<<set _act = 1>> /* Always uses Mandate of Heaven if possible */
<<else>>
<<set _act = random(2,4)>>
<</if>>
<<switch _act>>
<<case 1>> /* Mandate of Heaven */
<<set $effweight to 0.5>>
$args[0].name uses "Mandate of Heaven".<br/>
<<addeffect $subject[0] "Blessing" 3 $subject[0]>>
<<set $args[0].cooldown to 3>>
<<case 2>> /* attack */
<<enemytarget>>
<<set $weight = 1>>
Princess Bubblegum blasts $target[0].name with her ray gun.<br/><br/>
<<damagecalc>>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 3>> /* grenade */
<<if $subject[0].ready is true>>
<<set $item to true>>
<<set $weight = 1>>
<<enemytarget>>
Princess Bubblegum throws what appears to be a giant peppermint, but as soon as it hits the ground it explodes with the force of a grenade, spreading hard candy shrapnel everywhere.<br/><br/>
<<echodamage>>
<<set _temp = $target[0]>>
<<for _puppet range $puppets>>
<<if _puppet neq _temp and _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<set $subject[0].ready to false>>
<<else>>
Princess Bubblegum pulls something out of her pack.<br/>
<<set $subject[0].ready to true>>
<</if>>
<<case 4>>
<<if $subject[0].ready is true>>
<<enemytarget "ignore downed" "debuff">>
Princess Bubblegum douses $target[0].name in a stinging, sticky syrup. They cough and stagger as their skin breaks out in welts.<br/><br/>
<<set $effweight = 0.7>>
<<addeffect $target[0] "Poisoned" 3 $subject[0]>>
<<set $effweight = 0.5>>
<<addeffect $target[0] "Injury" 3 $subject[0]>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<addeffect $target[0] "Headache" 3 $subject[0]>>
<<else>>
Princess Bubblegum pulls something out of her pack.<br/>
<<set $subject[0].ready to true>>
<</if>>
<</switch>>
<</if>>
/*Gravity Falls 1*/
<<case "Mabel">>
<<set _act = random(1,5)>>
<<switch _act>>
<<case 1>> /*Cuteness Poisoning*/
<<enemytarget>>
<<set $weight = 0.9>>
<<set $effweight = 0.5>>
<<damagecalc>>
Mabel uses "Cuteness Poisoning".<br/><br/>
Mabel conjures an image of a kitten... no, wait, <i>two</i> kittens? And they're being carried by a <i>puppy</i>? Omigosh, it's so cute you could just <i>DIE!</i><br/><br/>
<<echodamage>>
<<addeffect $target[0] "Poisoned" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 2>> /*Glitter Bomb*/
<<enemytarget>>
<<set $weight = 0.9>>
<<damagecalc>>
Mabel uses "Glitter Bomb".<br/><br/>
Out of nowhere, Mabel summons a dazzling, multicolored ball of sparkles and glitter. With a manic laugh she throws it at $target[0].name, and it explodes with a blinding firework of color!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Dizzy" 3>>
<<set $subject[0].attacked to true>>
<<case 3>> /*Chaos Blaster*/
<<enemytarget>>
<<set $weight = 1>>
Mabel uses "Chaos Blaster".<br/><br/>
You blink, and Mabel is suddenly holding a massive gun absolutely drowning in glitter and unicorn decals. She triumphantly points it at $target[0].name and shouts, "CHAOS... BLASTERRR!!" A shimmering, multicolored beam erupts from the cannon before it explodes magnificently in a burst of glitter.<br/><br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 4>> /*Kitty Cannon, but look up what she calls it in Dreamscaperers*/
Mabel uses "Kitty Cannon".<br/><br/>
Mabel's fists are suddenly replaced with mewling kittens. Just as you're trying to guess what tactical advantage this could possibly provide, they fly at your puppets like missiles!<br/><br/>
<<set $weight = $knife_weight>>
<<multihit 3 "spread">>
<<set $subject[0].attacked to true>>
<<case 5>> /*Galacta Burning*/
<<enemytarget>>
<<set $weight = 0.9>>
<<set $effweight = 0.5>>
Mabel uses "Galacta Burning".<br/>
Mabel points her hands at you, and multicolored cartoon stars fly from her fingertips, leaving glittering trails behind them. When they run into $target[0].name they explode in a fiery burst, as hot as if they were real stars.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Burning" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<</switch>>
<<case "Mega Mabel">>
<<set _act = random(1,5)>>
<<switch _act>>
<<case 1>> /*Cuteness Overload*/
<<set $weight = 0.5>>
<<set $effweight = 0.5>>
Mabel uses "Cuteness Overload".<br/><br/>
Mabel conjures a huge panorama of impossibly cute things. It's like your own petting zoo in here! There are ducks riding ponies! Puppies snuggling in boxes! Cats doing that thing where they curl their head in their little paws! It's... too much! The cuteness is going to make you EXPLODE!<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<echodamage _puppet>>
<<addeffect _puppet "Poisoned" 3 $subject[0]>>
<</for>>
<<set $subject[0].attacked to true>>
<<case 2>> /*Anarchy Rave*/
<<set $weight = 0.5>>
Mabel uses "Anarchy Rave".<br/><br/>
Mabel rocks out, literally bouncing off the walls with her aerial acrobatics. A disco ball appears out of nowhere and the arena is suddenly ablaze with strobe lights.<br/><br/>
And lasers. The disco ball also shoots lasers. The hot, burny kind, not the fun kind.<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<echodamage>>
<<addeffect $target[0] "Dizzy" 3>>
<</for>>
<<set $subject[0].attacked to true>>
<<case 3>> /*Chaos Thunder*/
<<enemytarget>>
<<set $weight = 1.25>>
Mabel uses "Chaos Thunder".<br/><br/>
Mabel does her best witchy cackle, letting her hands arc and crackle with electricity. She throws her arms straight up, and the magic shoots into to the sky in a brilliant stream. Then with a final, bellowing laugh, she closes her hand into a fist and brings it down like a hammer.<br/><br/>
"CHAOS... THUNDERRR!!"<br/><br/>
Lightning splits the air, leaving a wave of multicolored stars around the hapless puppet it fries.<br/><br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 4>> /*Kitty Cannon, doesn't get an upgrade*/
Mabel uses "Kitty Cannon".<br/><br/>
Mabel's fists are suddenly replaced with mewling kittens. Just as you're trying to guess what tactical advantage this could possibly provide, they fly at your puppets like missiles!<br/><br/>
<<set $weight = $knife_weight>>
<<multihit 3 "spread">>
<<set $subject[0].attacked to true>>
<<case 5>> /*Galacta Blazing*/
<<set $weight = 0.5>>
<<set $effweight = 0.5>>
Mabel uses "Galacta Blazing".<br/><br/>
Mabel flies up and raises her hands to the stars... and suddenly, the stars seem a whole lot closer. Mabel rains down what looks like the whole galaxy on you, stars bursting into psychedelic sparkles and flames where they hit.<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<echodamage>>
<<addeffect _puppet "Burning" 3 $subject[0]>>
<</for>>
<<set $subject[0].attacked to true>>
<</switch>>
<<case "Dipper">>
<<if $scenario is "gf1">>
<<set _act = random(1,6)>>
<<switch _act>>
<<case 1>> /*Recovery (Chattur'gha)*/
<<set $effweight = 0.4>>
<<allytarget>>
Dipper frantically flips through his journal before yelling, "Narokath Santak Chattur'gha!"<br/>
$target[0].name pulses with a violent red light.<br/><br/>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set _effect.duration -= 1>>
<<if _effect.duration eq 0>>
<<effectmanager $target[0]>>
<</if>>
<</if>>
<</for>>
<<addeffect $target[0] "DEF Boost" 3 $subject[0]>>
<<case 2>> /*Recovery (Ulyaoth)*/
<<set $effweight = 0.4>>
<<allytarget>>
Dipper frantically flips through his journal before yelling, "Narokath Santak Ulyaoth!"<br/>
$target[0].name glows with the deep blue of the abyss.<br/><br/>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set _effect.duration -= 1>>
<<if _effect.duration eq 0>>
<<effectmanager $target[0]>>
<</if>>
<</if>>
<</for>>
<<addeffect $target[0] "ATK Boost" 3 $subject[0]>>
<<case 3>> /*Recovery (Xel'lotath)*/
<<set $effweight = 0.4>>
<<allytarget>>
Dipper frantically flips through his journal before yelling, "Narokath Santak Xel'lotath!"<br/>
$target[0].name shines with a green light that hurts your eyes to look at.<br/><br/>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set _effect.duration -= 1>>
<<if _effect.duration eq 0>>
<<effectmanager $target[0]>>
<</if>>
<</if>>
<</for>>
<<addeffect $target[0] "SPC Boost" 3 $subject[0]>>
<<case 4>> /*Dispel Magick*/
<<dispeltarget 1>>
<<if _go>>
Dipper frantically flips through his journal before yelling, "Nekleth Redgemor <<switch $target[0].name>><<case "Rogue">>Chattur'gha<<case "Fighter">>Ulyaoth<<case "Mage">>Xel'lotath<</switch>>!"<br/><br/>
Magickal runes swirl around Dipper before crashing violently to the earth, releasing a nauseating wave that strips $target[0].name of their powers.<br/><br/>
<<for _effect range $target[0].effects>>
<<if _effect.buff is true and _effect.sticky isnot true>>
<<removeEffect $target[0] _effect>>
<</if>>
<</for>>
<<else>>
<<enemyaction $subject[0]>> /* If no one has any buffs, there's no point in using this; reroll */
<</if>>
<<case 5>> /*Damage Field*/
<<enemytarget "debuff">>
<<set $weight to 1>>
<<set $effweight to 0.5>>
<<damagecalc>>
<<set _act = random(1,3)>>
<<switch _act>>
<<case 1>> /*Chattur'gha*/
Dipper frantically flips through his journal before yelling, "Bankorok Redgemor Chattur'gha!"<br/><br/>
Pillars of red energy burst from the ground, searing $target[0].name's flesh where they touch.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<case 2>> /*Ulyaoth*/
Dipper frantically flips through his journal before yelling, "Bankorok Redgemor Ulyaoth!"<br/><br/>
Waves of blue energy shoot from the ground that chill $target[0].name with a numbing cold.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Injury" 3 $subject[0]>>
<<case 3>> /*Xel'lotath*/
Dipper frantically flips through his journal before yelling, "Bankorok Redgemor Xel'lotath!"<br/><br/>
The floor flashes with sickening green energy that makes $target[0].name's vision swim.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Headache" 3 $subject[0]>>
<</switch>>
<<set $subject[0].attacked to true>>
<<case 6>> /*Bind Creature*/
<<enemytarget "ignore downed">>
<<set $weight to 0.6>>
<<damagecalc>>
Dipper frantically flips through his journal before yelling, "Bankorok Aretak <<switch $target[0].name>><<case "Rogue">>Chattur'gha<<case "Fighter">>Ulyaoth<<case "Mage">>Xel'lotath<</switch>>!"<br/>
$target[0].name is lashed by chains of light.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Stunned" 1>>
<</switch>>
<<elseif $scenario eq "champion">>
/* Champion Dipper does different things */
<</if>>
<<case "Big Dipper">>
<<set _act = random(1,5)>>
<<switch _act>>
<<case 1>> /*Empowered Recovery (Mantorok)*/
<<set $effweight = 0.4>>
<<set $target to 0>>
A deep voice intones, "Pargon Narokath Santak Mantorok."<br/>
Violet energy swirls around Dipper.<br/><br/>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set _effect.duration -= 1>>
<<if _effect.duration eq 0>>
<<effectmanager $target[0]>>
<</if>>
<</if>>
<</for>>
<<addeffect $target[0] "Blessing" 3 $subject[0]>>
<<case 2>> /*Empowered Damage Field (Mantorok)*/
<<enemytarget "debuff">>
<<set $weight to 1.25>>
<<set $effweight to 0.5>>
<<damagecalc>>
A deep voice intones, "Pargon Bankorok Redgemor Mantorok."<br/>
$target[0].name is crushed by a field of violet energy. Though it's only the puppet that was hit, you get a feeling like someone's walked over your grave.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Curse" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 3>> /*Empowered Bind Creature (Mantorok)*/
<<enemytarget "ignore downed">>
<<set $weight to 0.6>>
A deep voice intones, "Pargon Bankorok Aretak Mantorok."<br/>
Chains of light wrap around $target[0].name and drag them forcefully to the ground.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Knocked Down" -1>>
<<addeffect $target[0] "Stunned" 1>>
<<case 4>> /*Empowered Dispel Magick (Mantorok)*/
<<dispeltarget 3 "mass">>
<<if _go>>
A deep voice intones, "Pargon Nekleth Redgemor Mantorok."<br/>
Magickal runes swirl around Dipper before crashing violently to the earth, releasing a nauseating wave that dispels everyone's magic.<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<for _effect range _puppet.effects>>
<<if _effect.buff is true and _effect.sticky isnot true>>
<<removeEffect $target[0] _effect>>
<</if>>
<</for>>
<</for>>
<<else>>
<<enemyaction $subject[0]>> /* not enough buffs, reroll */
<</if>>
<<case 5>> /*Empowered Magickal Attack (Mantorok)*/
<<set $weight = 1>>
A deep voice intones, "Pargon Antorbok Redgemor Mantorok."<br/>
Dark lightning leaps from Dipper's feet to strike your puppets in turn.<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<echodamage>>
<<addeffect $target[0] "Winded" 3>>
<</for>>
<<set $subject[0].attacked to true>>
<</switch>>
/* Gumball 1 */
<<case "Gumball">>
<<if not $surrender>>
<<set _act = random(1,13)>>
<<if $subject[0].untargetable>>
<<for _act eq 7 or _act eq 8>> /* values for Hide */
<<set _act = random(1,13)>>
<</for>>
<</if>>
<<switch _act>>
<<case 1>> /* skip turn */
Gumball doesn't feel like doing anything this turn.<br/><br/>
<<case 2>> /*Screech*/
Gumball lets out an ear-splitting screech! Everyone has to stop what they're doing to clamp their hands over their ears.<br/><br/>
<<for _t = 1; _t < $enemies.length; _t++>>
<<addeffect $enemies[_t] "Stunned" 1>>
<</for>>
<<for _puppet range $puppets>>
<<addeffect _puppet "Stunned" 1>>
<</for>>
<<case 3 4>> /* kick shins */
<<set $weight = 1>>
<<set $effweight = 0.5>>
<<enemytarget>> /* Intentionally does not use smart debuff target because Gumball is dumb. */
Gumball kicks $target[0].name in the shins!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 5 6>> /* eye spit */
<<enemytarget "ignore downed">>
Gumball spits in $target[0].name's eyes!<br/><br/>
<<addeffect $target[0] "Stunned" 1>>
<<case 7 8>> /* Hide */
Gumball's eyes flick from side to side. When he thinks no one is watching him, he slinks away from the fight.<br/><br/>
<<addeffect $subject[0] "Hidden" 3>>
<<case 9 10>> /* winded */
<<enemytarget>>
<<set $weight = 1>>
Gumball rushes forward and punches $target[0].name hard in the gut, leaving them gasping.<br/><br/>
<<echodamage>>
<<addeffect $subject[0] "Winded" 3>>
<<case 11 12 13>> /* Item */
<<set $item to true>>
Gumball rummages through his pockets...<br/>
<<set _act = random(1,20)>>
<<switch _act>>
<<case 1>> /* gumball */
...and only finds a gumball. He giggles to himself and sticks it to the arena wall with a mischevious grin. In the process, he seems to have forgotten about attacking you.<br/><br/>
<<case 2 3 4 5 6>> /* rubber band */
<<set $weight = 1>>
<<enemytarget>>
...and retrieves a thick rubber band. "Oh, awesome!" he says, his face lighting up. He looks at you with a predatory glint in his eyes. "Hey," he says with a smirk, stretching the band between his fingers like a slingshot. "Wanna see a trick?"<br/><br/>
<<echodamage>>
<<case 7 8 9 10 11>> /* candy bar */
...and retrieves a brightly-wrapped candy bar. "Oh, awesome! I forgot I had this!" He downs the whole thing in a few bites. You dread the sugar high he's going to get...<br/><br/>
<<set $effweight = 0.3>>
<<addeffect $subject[0] "SPC Boost" 3 $subject[0]>>
<<case 12 13 14 15 16>> /* protein bar */
...and pulls out a protein bar. He glares at it as if its existence offends him, then nonchalantly shrugs and takes a bite. "Food's food," he says.<br/><br/>
<<set $effweight = 0.3>>
<<addeffect $subject[0] "DEF Boost" 3 $subject[0]>>
<<case 17 18 19>> /* angry cat */
<<set $weight = 0.8>>
...and pulls out a thin, mangy cat.<br/><br/>
He screams and drops it, much to the cat's displeasure. "How did that even fit in there?! No -- wait -- good kitty -- AAAAHHHH!"<br/><br/>
<<for _enemy range $enemies>>
<<set $target[0] = _enemy>>
<<damagecalc>>
<<echodamage>>
<</for>>
<<for _pupppet range $puppets>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<echodamage>>
<</for>>
<<case 20>> /* neutrino bomb */
<<set $weight to 1.5>>
...and pulls out a neutrino bomb?!<br/>
He yelps and throws the beeping thing up into the air, but catches it before it hits the ground. "Why do I even have this?!" he yells, then shakes his head. "Whatever, don't look a gift horse in the mouth! CATCH!"<br/><br/>
<i>BOOM.</i><br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<echodamage>>
<</for>>
<</switch>>
<<set $item to false>>
<</switch>>
<<else>>
Gumball is watching you expectantly.
<</if>>
<<case "Anais">>
<<if not $surrender>>
<<if $subject[0].ready is true>>
<<set $item to true>>
<<set _act = random(1,5)>>
<<switch _act>>
<<case 1>> /*Grenade*/
<<set $weight = 1.5>>
<<enemytarget>>
Anais lobs a grenade at you!<br/><br/>
<<damagecalc>>
<<echodamage>>
<<set _temp = $target[0]>>
<<for _puppet range $puppets>>
<<if _puppet neq _temp and _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<case 2>> /*Flamethrower*/
<<set $weight = 2>>
<<set $effweight = 0.7>>
Anais pulls out a flamethrower! You barely have time to wonder how she got it before it starts shooting fire in all directions.<br/><br/>
<<set _temp to $puppets.length>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _temp -= 1>>
<</if>>
<</for>>
<<for _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/_temp)>>
<<echodamage "nocalc">>
<<addeffect $target[0] "Burning" 4 $subject[0]>>
<</if>>
<</for>>
<<case 3>> /*Gas Bomb*/
<<set $weight = 2>>
<<set $effweight = 0.7>>
Anais pulls a gas mask over her face. You barely have time to wonder where she got it from before she throws something that bursts into a cloud of stinging green gas.<br/><br/>
<<set _temp to $puppets.length>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _temp -= 1>>
<</if>>
<</for>>
<<for _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/_temp)>>
<<echodamage "nocalc">>
<<addeffect $target[0] "Poisoned" 4 $subject[0]>>
<</if>>
<</for>>
<<case 4>> /* chaff grenade */
<<set $weight = 1>>
Anais lobs a grenade at you -- but to your surprise, when it explodes it leaves a massive cloud of shiny metal flakes. It just looks like silly confetti to you, but your puppets stutter and freeze up trying to see through all the flashing lights!<br/><br/>
<<set _temp to $puppets.length>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _temp -= 1>>
<</if>>
<</for>>
<<for _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/_temp)>>
<<echodamage "nocalc">>
<<addeffect $target[0] "Dizzy" 3>>
<</if>>
<</for>>
<<case 5>> /* calamity bomb */
<<set $weight = 1>>
<<enemytarget>>
Anais pulls out a scroll that pulses with dark runes. She throws it at $target[0].name, where it explodes in a cloud of cursed magic.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Injury" 4 $subject[0]>>
<<addeffect $target[0] "Pain" 4 $subject[0]>>
<<addeffect $target[0] "Headache" 4 $subject[0]>>
<</switch>>
<<set $subject[0].attacked to true>>
<<set $item to false>>
<<set $subject[0].ready to false>>
<<else>>
<<set _act = random(1,4)>>
<<switch _act>>
<<case 1>> /*slap*/
<<set $weight = 1>>
<<enemytarget>>
Anais slaps $target[0].name.<br/><br/>
<<damagecalc>>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<default>>
Anais turns around and builds something you can't see.<br/><br/>
<<set $subject[0].ready to true>>
<</switch>>
<</if>>
<<else>>
Anais is waiting for your decision.
<</if>>
<<case "Darwin">>
<<if $subject[0].cooldown <= 0>>
<<set _act = random(1,6)>>
<<else>>
<<set _act = random(1,4)>>
<</if>>
<<switch _act>>
<<case 1>> /* regular attack */
<<set $weight = 1>>
<<enemytarget>>
Darwin punches $target[0].name!<br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 2>> /* A Farewell to Arms */
<<set $weight = 1>>
<<set $effweight = 0.5>>
<<enemytarget>> /* Intentionally does not use smart debuff targeting because Darwin, while smarter than Gumball, is still dumb. */
Darwin uses "A Farewell to Arms".<br/>
With a war cry, Darwin leaps onto $target[0].name's arm and bites down savagely!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Injury" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 3>> /* Off Your High Horse */
<<dispeltarget 1>>
<<if _go>>
<<set $weight = 1>>
Darwin uses "Off Your High Horse".<br/>
Darwin leaps and attacks with a roundhouse kick that knocks off $target[0].name's magic!<br/><br/>
<<echodamage>>
<<if $target[0].dead is false>>
<<for _i = $target[0].effects.length-1; _i >= 0; _i-->
<<if $target[0].effects[_i].buff and $target[0].effects[_i].name isnot "Alert" and $target[0].effects[_i].name isnot "Chi Shield">>
<<set $target[0].effects[_i].duration to 0>>
<<effectmanager $target[0].name>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set $subject[0].attacked to true>>
<<else>>
<<enemyaction $subject[0]>>
<</if>>
<<case 6>> /* protect other */
<<if $enemies[0].dead and $enemies[1].dead>>
<<enemyaction $subject[0]>> /* if Darwin is only one left, this is unusable; reroll */
<</if>>
<<set $effect_weight to 0.4>>
<<for true>> /* keep looping until viable target found */
<<set _t = random(0,1)>>
<<if _t = 0 and $enemies[0].dead isnot true>>
<<set $target[0] = $enemies[0]>>
<<break>>
<<elseif _t = 1 and $enemies[1].dead isnot true>>
<<set $target[0] = $enemies[1]>>
<<break>>
<</if>>
<</for>>
Darwin heroically leaps in front of $target[0].name, protecting <<if $target[0].name is "Gumball">>him<<elseif $target[0].name is "Anais">>her<</if>> from attacks.<br/>
<<addeffect $subject[0] "Protector" 3>>
<<case 5>> /* dance attack */
<<set $weight = $pierce_weight>>
<<set $pierce to true>>
<<enemytarget>>
Darwin leaps and twirls in a spectacular dance, the sun shining dazzlingly off his golden scales. It's so captivating, you don't realize he's attacking until he's already kicked your puppet in the face.<br/><br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<set $subject[0].cooldown to 2>>
<<case 6>> /* Dancing Strikes */
<<enemytarget>>
<<set $weight = $knife_weight>>
Darwin leaps into the fray with graceful, dancing blows, striking, retreating, and leaping over your puppet to strike again. Not every attack connects, but by the end $target[0].name has had to spin around so much they can't tell which way is up.<br/><br/>
<<multihit 2>>
<<addeffect $target[0] "Dizzy" 3>>
<<set $subject[0].cooldown to 2>>
<</switch>>
/* Steven Universe 1 */
<<case "Steven">>
/* Steven only uses support skills. If he makes the battle too difficult, I may make him act only every other turn. */
<<if $surrender is false>>
<<if $args[0].cooldown <= 0>>
<<set _act = random(1,3)>>
<<switch _act>>
<<case 1 2>> /*Encouragement: since there's no healing, this grants buffs instead. I think it would be cute if he buffs the gems in their weak stat. */
<<set $effweight = 0.5>>
<<allytarget>>
<<switch $target[0].name>>
<<case "Pearl">>
"Pearl, you got this!" cries Steven. Pearl stands up straighter, and clutches her spear with newfound resolve.<br/>
<<addeffect $target[0] "ATK Boost" 4 $subject[0]>>
<<case "Garnet">>
"Garnet, you're amazing!" cries Steven. Garnet's mask of stoicism cracks just long enough for her to curl a smile.<br/>
<<addeffect $target[0] "SPC Boost" 4 $subject[0]>>
<<case "Amethyst">>
"Amethyst, keep it up!" cries Steven. Amethyst whoops and flexes her muscles.<br/>
<<addeffect $target[0] "DEF Boost" 4 $subject[0]>>
<</switch>>
<<case 3>> /*Bubble Shield*/
<<for _i = 1; _i < 2; _i++>>
<<if $enemies[_i].dead isnot true and $enemies[_i].hp <= $enemies[_i-1].hp>>
<<set $target = [$enemies[_i],"$enemies["+_i+"]"]>>
<<else>>
<<set $target = [$enemies[0],"$enemies[0]"]>>
<</if>>
<</for>>
/* HOPEFULLY this means he'll always target the gem with the lowest health */
"A bubble for your trouble?" Steven lifts his shirt, and you see his gem flash with a pink light.<br/>
<<addeffect $target[0] "Bubble" 3>>
/* Might be able to incorporate his songs too, but already did stat buffs. Chi Shield? Full-party chi shield might be overpowered tho */
<</switch>>
/* <<set $args[0].cooldown to 2>> */
<</if>>
<<else>>
/* When gems are all defeated, Steven skips his turn most of the time, but rarely shields himself. */
<<set _act = random(1,3)>>
<<switch _act>>
<<case 1>>
Steven wails, and his gem flashes a bright pink.<br/>
<<addeffect $subject[0] "Bubble" 3>>
<<default>>
Steven clutches the gems to his chest and blubbers.<br/>
<</switch>>
<</if>>
<<case "Pearl">>
<<if $subject[0].cooldown <= 0>>
<<set _act = random(1,5)>>
<<else>>
<<set _act = random(1,3)>>
<</if>>
<<switch _act>>
/* Pearl's abilities in Attack the Light are spear strike, spear throw, fireball and Holo-Pearl (disables an enemy for a few turns) */
<<case 1>> /* attack */
<<set $weight = 1>>
<<enemytarget>>
Pearl advances with graceful steps, and thrusts her spear with perfect precision.<br/><br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 2>> /* Holo-Pearl */
<<enemytarget>>
Pearl twirls and dips, projecting a holographic copy of herself from the gem on her forehead. It rushes at $target[0].name, pushing them away from the battle and locking them in combat.<br/><br/>
<<addeffect $target[0] "Stunned" 1>>
<<addeffect $target[0] "Off-Balance" 1>>
<<case 3>> /* Fireball */
<<set $weight = 0.8>>
<<set $effweight = 0.7>>
<<enemytarget>>
Pearl levels her spear like a rifle as white energy swirls around the blade. Pearl fires, and the projectile bursts into searing white flames!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Burning" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 4>> /* spear throw */
<<set $weight = $pierce_weight>>
<<set $pierce to true>>
<<enemytarget>>
Pearl uses "Meteor Strike".<br/>
Pearl stands as still as a statue, staring at $target[0].name with robotic intensity. Then, in the span of an eyeblink, she hurls her spear with so much force the air ignites. It sails through the air with perfect accuracy, and hits $target[0].name right through a chink in their armor.<br/><br/>
<<echodamage>>
<<set $subject[0].cooldown to 2>>
<<set $subject[0].attacked to true>>
<<case 5>> /* Shooting Stars */
<<set $weight = $knife_weight>>
Pearl uses "Shooting Stars".<br/>
Pearl summons a second, identical spear from her forehead, then, with the grace of a dancer, leaps high into the air. She spins, and rains down her spears like thunderbolts from Heaven.<br/><br/>
<<multihit 2 "spread">>
<<set $subject[0].cooldown to 2>>
<<set $subject[0].attacked to true>>
<</switch>>
<<case "Garnet">>
<<if $args[0].cooldown <= 0>>
<<set _act = random(1,4)>>
<<else>>
<<set _act = random(1,2)>>
<</if>>
<<switch _act>>
<<case 1>> /* Attack */
<<set $weight = 1>>
<<enemytarget>>
Garnet rushes forward and slams her gauntlet into $target[0].name!<br/><br/>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<case 2>> /* Break */
<<set $weight = 1>>
<<set $effweight = 0.5>>
<<enemytarget "debuff">>
Garnet raises her fists above her head, and her gauntlets grow to twice their size. Without missing a beat, she swings forward and crushes $target[0].name under their weight.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Pain" 3 $subject[0]>>
<<set $subject[0].attacked to true>>
<<case 3>> /* rocket fists */
<<set $weight = 1>>
<<enemytarget>>
Garnet sticks her arm straight out, and her gauntlet detaches from her arm, rocketing towards you like a missile! It slams into $target[0].name before exploding in a wide burst.<br/><br/>
<<echodamage>>
<<set _temp = $target[0]>>
<<for _puppet range $puppets>>
<<if _puppet neq _temp and _puppet.dead isnot true>>
<<set $target[0] = _puppet>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<set $subject[0].attacked to true>>
<<set $args[0].cooldown to 3>>
<<case 4>> /* 2-hit combo */
<<set $weight = 0.9>>
<<enemytarget>>
Garnet rushes $target[0].name with a two-hit combo!<br/><br/>
<<echodamage>>
<<echodamage>>
<<set $subject[0].attacked to true>>
<<set $args[0].cooldown to 3>>
<</switch>>
<<case "Amethyst">>
<<if $args[0].cooldown <= 0>>
<<set _act = random(1,3)>>
<<else>>
<<set _act = random(1,2)>>
<</if>>
<<switch _act>>
<<case 1>> /* whip */
<<set $weight = 0.8>>
Amethyst lashes her whip in a wide arc, striking all your puppets!<br/><br/>
<<for _puppet range $puppets>>
<<set $target[0] = _puppet>>
<<echodamage>>
<</for>>
<<case 2>> /* Purple Puma */
<<set $weight = 1>>
<<set $effweight = 0.5>>
<<enemytarget "debuff">>
Amethyst shapeshifts into a huge, muscled wrestler. She roars and beats her chest, then slams violently into $target[0].name!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Injury" 3 $subject[0]>>
<<case 3>> /* spin attack */
<<set $weight = 1.2>>
<<enemytarget "ignore downed">>
Amethyst curls up against the ground, and spins her whole body like a wheel. Sparks fly as she builds up speed, then without warning, she rockets straight into $target[0].name, sending them flying!<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Knocked Down" -1>>
<<set $args[0].cooldown to 3>>
/* In Attack the Light her fourth skill is tons of little hits which don't work well for this engine. To utilize her Special she should have a poison or debuff skill but I dunno how to make that fit. */
<</switch>>
<</switch>>
<br/>
<</widget>>/* Not currently implemented; too complex. Preserved for posterity. */
<<if $effects_to_remove <= 0>>
<<set $ready to true>>
<<goto "confirm phase">>
<</if>>
<span id="status">
<<include status>>
</span>
<span id="content">
<<backbtn>>
<<switch $action>>
<<case "Restoration">>
<<if $target[0].effects.length = 0>>
<<print $target[0].name+" has no effects! Go back.\n">>
<<else>>
<<set _count to 0>>
<<print $target[0].name+"\'s ailments:\n">>
<<for _i, _effect range $target[0].effects>>
<<if _effect.buff is false>>
<<capture _i>>
[[_effect.name|neutralize phase][$removed_effects.push(_i); $effects_to_remove -= 1]]
<</capture>>
<<else>>
<<set _count++>>
<</if>>
<</for>>
<<if _count eq $target[0].effects.length>>
<<print "...None! Go back.">>
<</if>>
<</if>>
<<case "Neutralize">>
<<if $target[0].effects.length = 0>>
<<print $target[0].name+" has no effects! Go back.\n">>
<<else>>
<<set _count to 0>>
<<print $target[0].name+"\'s buffs:\n">>
<<for _i, _effect range $target[0].effects>>
<<if _effect.buff is true>>
<<capture _i>>
[[_effect.name|neutralize phase][$removed_effects.push(_i); $effects_to_remove -= 1]]
<</capture>>
<<if _i < $target[0].effects.length>>
<<print ", ">>
<</if>>
<<else>>
<<set _count++>>
<</if>>
<</for>>
<<if _count eq $target[0].effects.length>>
<<print "...None! Go back.">>
<</if>>
<</if>>
<</switch>>
</span>/* Set Inventory: sets data for all items. Run in StoryInit. */
/* This uses the constructor for the Item class (see story JavaScript) to reduce space at the cost of being less clear. If you are willing to write it out, you can also create the object and add the attributes manually, like this:
<<run $inventory.set("Name", {cost: num, weight: num, effweight: num, ally: boolean, phase: "targeting phase"})>>
This will work as long as the attribute names are consistent with how you refer to them later. */
<<widget "setinv">>
<<run $inventory.set("Antidote", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Fire Extinguisher", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Canned Air", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Healing Crystal", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Nanites", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Painkiller", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Asprin", new Item(2,0,0,true,"targeting phase"))>>
<<run $inventory.set("Panacea", new Item(8,0,0,true,"targeting phase"))>>
<<run $inventory.set("Bottled Chi", new Item(4,0,0,true,"targeting phase"))>>
<<run $inventory.set("Stimulant", new Item(4,0,0,true,"targeting phase"))>>
<<run $inventory.set("Adrenaline", new Item(2,0,0.5,true,"targeting phase"))>>
<<run $inventory.set("Stoneskin", new Item(2,0,0.5,true,"targeting phase"))>>
<<run $inventory.set("Nootropic", new Item(2,0,0.5,true,"targeting phase"))>>
<<run $inventory.set("Throwing Knife", new Item(4,1.25,0,false,"targeting phase"))>>
<<run $inventory.set("Grenade", new Item(5,1.5,0,false,"confirm phase"))>>
<<run $inventory.set("Powdered Glass", new Item(4,1,0,false,"targeting phase"))>>
<<run $inventory.set("Flamethrower", new Item(6,2,0.7,false,"confirm phase"))>>
<<run $inventory.set("Gas Bomb", new Item(6,2,0.7,false,"confirm phase"))>>
<<run $inventory.set("Calamity Bomb", new Item(5,1,0.5,false,"confirm phase"))>>
<<run $inventory.set("Flashbang", new Item(5,0,0,false,"confirm phase"))>>
<</widget>>
/* Restock: sets starting inventory values for each battle. */
<<widget "restock">>
<<run $inventory.get("Antidote").stock = 2>>
<<run $inventory.get("Fire Extinguisher").stock = 2>>
<<run $inventory.get("Canned Air").stock = 2>>
<<run $inventory.get("Healing Crystal").stock = 2>>
<<run $inventory.get("Nanites").stock = 2>>
<<run $inventory.get("Painkiller").stock = 2>>
<<run $inventory.get("Asprin").stock = 2>>
<<run $inventory.get("Panacea").stock = 1>>
<<run $inventory.get("Bottled Chi").stock = 1>>
<<run $inventory.get("Stimulant").stock = 2>>
<<run $inventory.get("Adrenaline").stock = 1>>
<<run $inventory.get("Stoneskin").stock = 1>>
<<run $inventory.get("Nootropic").stock = 1>>
<<run $inventory.get("Throwing Knife").stock = 3>>
<<run $inventory.get("Grenade").stock = 1>>
<<run $inventory.get("Powdered Glass").stock = 0>>
<<run $inventory.get("Flamethrower").stock = 0>>
<<run $inventory.get("Gas Bomb").stock = 0>>
<<run $inventory.get("Calamity Bomb").stock = 0>>
<<run $inventory.get("Flashbang").stock = 0>>
<</widget>>
<<widget "iteminfo">>
<span class="actinfo">
<<switch $args[0]>>
<<case "Antidote">>
Cures Poisoned.
<<case "Fire Extinguisher">>
Cures Burning.
<<case "Canned Air">>
Cures Winded and restores 1 Energy.
<<case "Healing Crystal">>
Cures Dizzy.
<<case "Nanites">>
Cures Injury.
<<case "Painkiller">>
Cures Pain.
<<case "Asprin">>
Cures Headache.
<<case "Panacea">>
Cures all status ailments.
<<case "Bottled Chi">>
Bestows Chi Shield.
<<case "Stimulant">>
Restores 5 Energy.
<<case "Adrenaline">>
Bestows an ATK Boost.
<<case "Stoneskin">>
Bestows a DEF Boost.
<<case "Nootropic">>
Bestows a SPC Boost.
<<case "Throwing Knife">>
Inflicts high damage to one enemy.
<<case "Powdered Glass">>
Damages and Stuns one enemy.
<<case "Grenade">>
Inflicts high damage to one enemy; remaining enemies take half damage.
<<case "Flamethrower">>
Damages and Burns all enemies. Damage is greater against fewer enemies.
<<case "Gas Bomb">>
Damages and Poisons all enemies. Damage is greater against fewer enemies.
<<case "Calamity Bomb">>
Damages an enemy and inflicts Injury, Pain, and Headache.
<<case "Flashbang">>
Stuns all enemies.
<<default>>
Description pending.
<</switch>>
</span>
/* You could also do this by adding the info as an attribute to the item object, but I find it cumbersome to write long sections of text in object definitions. */
<</widget>>
<<widget "itemdesc">>
<span class="actdesc">
<<switch $args[0]>>
<<case "Antidote">>
Isn't it convenient that everyone in the arena uses the exact same poison?
<<case "Fire Extinguisher">>
...This is a bucket of water. MegaCorp are cheapskates.
<<case "Canned Air">>
Regular inhalers are too pedestrian for MegaCorp, apparently. You're not entirely sure what's in this, but it gives more of a kick than regular oxygen.
<<case "Healing Crystal">>
A magic crystal that supposedly absorbs feelings of confusion and disorientation from the mind. Amazingly, it actually works.
<<case "Nanites">>
MegaCorp®’s patented nanobot surgery machines can fix any injury in a snap! They can fix so many things. They have so many wonderful ideas. Let them in. Let them fix you.
<<case "Painkiller">>
Pain is just your body holding you back. Shut it up with MegaCorp® brand extra-strength painkillers. What does that old meat sack know anyway?
<<case "Asprin">>
Is it normal for asprin to cure a headache that fast? you think. Then you laugh. The headache is making you think such funny thoughts. The headache hurts so much. You would do anything to make it go away. Anything.
<<case "Panacea">>
The mythical medicine has jumped out of the history books and onto your shelves! Don't ask how it's made. The answer would only upset you. But you'll take it anyway, won't you?
<<case "Bottled Chi">>
No need to spend a lifetime meditating on mountains – now you can buy enlightenment right off the shelves! Comes in lemon, berry, and ennui flavors.
<<case "Adrenaline">>
A hormone that releases the body's stored sugars into the bloodstream, providing a boost in energy. At least, that's what normal adrenaline is. You can keep injecting MegaCorp's version all day without crashing. It could just be something as innocuous as including extra sugars to replace the ones lost in the adrenaline rush. It could be.
<<case "Stoneskin">>
Lather yourself up with Stoneskin formula and watch the slings and arrows of misfortune bounce off your natural armor! Don't worry, there are no lasting side-effects anymore. Many, many test subjects valiantly donated their bodies to science to ensure your safety!
<<case "Nootropic">>
Performance-enhancing drugs: not just for athletes! Put your mind into overdrive with MegaCorp®'s new brain-boosting formula.
<<case "Stimulant">>
Just "Stimulant". What kind? No need to trouble yourself. It keeps your puppets going, and that's all that matters, right?
<<case "Throwing Knife">>
Don't ask why this uses Special instead of Attack. It's, uh, a magic knife. Sure.
<<case "Powdered Glass">>
By crushing glass in just the right way, you can grind it into shards so tiny they look like grains of sand. Throw it into someone's eyes, and, well, you get the picture. They won't, because it's kind of hard to see with a sharp things in your eyes.
<<case "Grenade">>
It's just a grenade. Just a totally normal explosive powered by totally mundane chemical reactions. You're sure. You're pretty sure. You stare at it nervously, daring it to show you what dark arts MegaCorp used to make it.
<<case "Flamethrower">>
Have a burning need to burn your enemies to ash? Try the MegaCorp® Flamethrower 4000! No longer has the potential for those embarassing backfire explosions you got with the 3000.
<<case "Gas Bomb">>
You don't know what kind of "gas" is supposed to be in this. Perhaps it's better that way. The casing feels oddly soft, like rotting flesh.
<<case "Calamity Bomb">>
A small, strange explosive wrapped in cursed scrolls to bring misery and torment.
<<case "Flashbang">>
This bomb contains chemicals that shine brightly instead of exploding. The flash is so bright it'll blind all your foes.
<<default>>
Description pending.
<</switch>>
</span>
<</widget>>
<<widget "itemlist">>
<<for _key, _item range $inventory>>
<b>
<<if _item.stock > 0>>
<<capture _key, _item>>
<<link "_key">>
<<set $action = _key>>
<<set $weight = _item.weight>>
<<set $effweight = _item.effweight>>
<<set $allytargeting = _item.ally>>
<<if _item.phase is "confirm phase">>
<<set $target = [null,null]>>
<</if>>
<<print '<<goto "'+_item.phase+'">>'>>
<</link>>
<</capture>>
<<else>>
_key
<</if>>
</b>
(Stock: _item.stock)
<br/>
<<iteminfo _key>>
<br/>
<<itemdesc _key>>
<br/>
<br/>
<</for>>
<</widget>>/* Procure costs are set in StoryInit. */
<<set $target = [null,null]>>
<span id="content">
<<backbtn>>
<<for _key, _item range $inventory>>
<b>
<<if $subject[0].en >= _item.cost>>
<<capture _key, _item>>
<<set _linktext = "Procure "+_key>>
[[_linktext|confirm phase][$item_to_procure = _key; $cost = _item.cost]]
<</capture>>
<<else>>
<del>_key</del>
<</if>>
</b>
(Cost: <<print _item.cost>>)<br/>
<</for>>
</span><span id="status"><<include "status">></span><span id="content"><<nobr>>
<<call "tutorial">>
<span class="actors enemies">
<<for _i, _enemy range $enemies>>
<div class="actor">
<span class="actorname">_enemy.name</span>
<<capture _i>><<status `[$enemies[_i],"$enemies["+_i+"]"]`>><</capture>>
<br />
HP: _enemy.hp
</div>
<</for>>
</span>
<br />
<div class="actors">
<<for _i, _puppet range $puppets>>
<div class="actor">
<span class="actorname">_puppet.name</span>
<<capture _i>><<status `[$puppets[_i],"$puppets["+_i+"]"]`>><</capture>>
<br/>
HP: 1000
<br />
EN: 5 / 10
</div>
<</for>>
</div>
<div class="actors">
<<for _puppet range $puppets>>
<div class="commands">
<b>
Act<br/>
Rest<br/>
Item<br/>
</b>
</div>
<</for>>
</div><</nobr>>
The battle screen looks something like what you see above. Enemies will be displayed at the top of the screen, and your puppets will be displayed below them. At any time, you can click the [*] to the right of someone's name to see information about their status and current status effects.
HP are your Hit Points. When a puppet or enemy reaches 0 HP, they are defeated! Unlike in some games you may be familiar with, there is no way to recover HP or revive defeated puppets, so don't be reckless. 1000 HP may seem like a lot, but it's all you're going to get.
EN stands for Energy. This represents a puppet's stamina or magical reserves. Taking an action costs Energy, but your puppets will gain 2 points of Energy at the beginning of every round. Certain items and actions will allow them to recover Energy during their turn, as well.
Every round, you can tell your puppets to <b>act</b>, <b>rest</b>, or use an <b>item</b>. Acting will allow them to choose an action from the action menu; for a list of each puppet's actions, see their individual passages. Resting will skip their turn, but costs no Energy and removes Winded status if they are afflicted.
You can command your puppets in any order, but you can't take back an action once it's confirmed. If an ability is tagged [Instant], it won't end the puppet's turn.
Damage from attacking skills is calculated through the formula
<div class="formula" id="thing"><<switch $formula>><<case "base weighted">>[($base + Attacker's Attack) * weight] - Defender's Defense<<case "base unweighted">>$base + (weight * Attacker's Attack) - Defender's Defense<</switch>></div>
where attack weight is determined by the specific skill used to attack. Note that this formula uses subtractive defense, which means that small changes to any one of these values can make a big difference to the final damage output. If you find yourself barely scratching an enemy, try decreasing their Defense or using an attack with a higher weight.
Would you like to learn more about [[status effects?|Effect Mechanics]]
Would you like to learn more about [[items?|Item Mechanics]]
<<back>></span><span id="content">/*(Thinking I could try adding images to these, D&D-style portraits, but it's hard to find appropriately gender-neutral ones.)
*/<b>The Rogue</b> is a master of poisons, trickery, and subterfuge. They are sometimes referred to as the Controller or the Saboteur. They have the weakest Attack of the three puppets, making them unsuited to direct damage, but do not let that lull you into a false sense of security. Their true strength lies in their ability to impede and disable their opponents, facilitated by their exceptional Special stat.
The Rogue possesses an ability for every status ailment, and unlike Mage's Curse spell, many of them inflict damage too. By choosing your ailments with care, you can set up even the most powerful enemies for a humiliating fall. However, it pays to plan in advance: these techniques have high Energy costs, and unlike Mage, Rogue cannot easily recover it.
<<back>>
<i>Tips:
"Something in your eye" can really help you in a tight spot, but use it wisely: after an enemy is stunned, they will become Alert and immune to future stuns for a long while!
If you find yourself frustrated with Rogue's poor damage output, try Poison Prick. Damage-over-time effects are as strong as regular attacks here, and poison damage draws from Rogue's hefty Special rather than their Attack.
An ounce of prevention is worth a pound of cure quite literally here. Panaceas are handy, but very expensive. You'll free Rogue up for more actions if you proactively protect your puppets with Bottled Chi instead.</i>
Rogue's abilities are:
<<find "$All_Puppets" "name" "\'Rogue\'">>
<<actionlist $All_Puppets[_pos]>>
</span><span id="content"><b>The Fighter</b> is a stalwart. You may know them as the Tank or the Knight. They are not the strongest or the most adaptable, but they are the most reliable. Magic can run dry and sabotage can fail, but not much can stop Fighter from hacking away at the enemy a little at a time. Even a god may die from a thousand cuts.
But Fighter's greatest strength is not their offense, but their defense. With the highest Defense of the puppets, they can shrug off blows that would send the others reeling. They're not so selfish to hog this safety for themselves: With their Protector and Martyr abilities, they can turn their defense into a weapon, giving you the power to control the flow of battle and protect your more fragile puppets. Just remember that while Fighter is tough, they're not invincible.
<<back>>
<i>Tips:
Fighter can't hold multiple stances at once. You'll only get the bonus from Defender if you attack!
Martyr is a good panic button, but you shouldn't use it if you don't have to. Without Protector's Defense bonus, Fighter will lose a lot more of their very limited HP. It'll benefit you in the long run if you can find a way to structure your tactic to use Protector instead.
Against particularly nasty foes, it may be worth it to use Meditate even if Fighter doesn't have any ailments. An ounce of prevention is worth a pound of cure.</i>
Fighter's abilities are:
<b>Firefly</b>
Passive. Enemies are twice as likely to target Fighter as other puppets.
<<find "$All_Puppets" "name" "\'Fighter\'">>
<<actionlist $All_Puppets[_pos]>>
</span><span id="content"><b>The Mage</b> is power embodied. They represent humanity's endless yearning, those dreams that lie just beyond the edge of the possible. You may know them as the Damager or the Black Mage, but there are elements of the Controller mixed in there as well. The Mage can be many things; magic does not play by the rules, after all.
Mage's strength is raw power. Possessing the highest Attack of the puppets, they can cut through enemies' defensive walls as if they were butter. In addition, they possess the special ability to supercharge their spells with additional Energy points, making their spells true terrors to behold. Against a fully-charged Blast, an enemy's Defense becomes all but meaningless.
<<back>>
<i>Tips:
With Focus and Favor, Mage can be used as a battery to charge up other puppets. In most cases you'll be better off pouring that energy into a spell, but it can be a lifesaver in some scenarios.
Mage's spells are highly inefficient if you only use them at their base cost, but become very powerful the more you invest. Try saving up to get the most out of your spells.
Do you wonder what might happen if you poured all 10 points of Energy into a spell? It may produce some interesting results...</i>
Mage's abilities are:
<<find "$puppets" "name" "\'Mage\'">>
<<actionlist $puppets[_pos]>>
</span><span id="content">Lucky you! MegaCorp® has generously provided you with many useful items to help you in your battles. (MegaCorp®, like your puppets, is one of those archetypes in the collective unconscious. You tend to find a MegaCorp® anywhere someone needs an allegory for modern corporate culture. The ® is mandatory.)
Items can be used by anyone, but have a limited stock. Your inventory is restocked at the start of every battle, and you can see the default amounts below.
Item effects are controlled by the Special stat. This includes both status effects and direct damage! The damage from attack items is calculated the same way as regular attacks, but with Special in place of Attack.
Though you start with few items, Rogue can add more with their Procure ability. (Don't think too much about where they're getting them from -- it is the role of the Rogue to find items, and in this realm the rules of the roles are more powerful than any logic.) Some of them are very expensive, though, and Rogue can't use the item in the same turn!
<<back>>
A list of items you'll have access to, and the default stock, is below:
<i><<itemlist>></i>
</span><span id="content">Direct attacks aren't the only thing you'll need to watch out for in the arena. Some abilities will produce effects that change what combatants can do or how they're affected by the flow of battle. Some of these effects are positive, and some are not.
All effects are powered by the Special stat. Special can protect you from some effects too.
<b><u>Control Effects</u></b>
Control effects restrict what you can do on a given turn. In addition, enemies are more likely to target off-balance and knocked-down puppets.
<i><b>Dizzy</b>
Can only use items and actions tagged [Basic].
<b>Stunned</b>
Can't act at all. However, it doesn't automatically end your turn: if cured, you can still act. This only lasts one turn, at which point it is replaced by <b>Alert</b>.
<b>Off-Balance</b>
Doesn't do anything on its own, but getting hit by a direct attack will turn this into Knocked Down.
<b>Knocked Down</b>
Prevents the use of normal actions and cuts Defense by half. Lasts until you expend 2 EN to right yourself.
<b>Winded</b>
Stops natural EN regeneration. This can be cured by resting.</i>
<b><u>Damage over Time</u></b>
Damage-over-time effects inflict damage at the end of every round. This damage is calculated by the formula:
<div class="formula">($base + $damper * (Attacker's Special - Defender's Defense)) * (ability weight)</div>
where ability weight is unique to the ability used to attach the effect. In addition, this damage never goes below 5. This damage is recalculated on every application; though the attacker's component remains fixed, alterations to the defender's defense stat will affect the results.
Notice that this uses the same base as the damage formula for regular attacks! Don't underestimate these effects.
<i><b>Burning</b>
This is the basic damage-over-time effect. You're on fire, so it's physical damage, ergo Defense protects you.
<b>Poisoned</b>
This checks against the defender's Special rather than their Defense. Knowledge of poisons helps you mitigate them, so it's a battle of wits.
<b>Perdition</b>
As Burning, but never wears off.</i>
<b><u>Stat Modifiers</u></b>
Stat modifiers change the subject's Attack, Defense, or Special stats, either positively or negatively. Unlike other effects, multiple copies of these effects can be applied to the same combatant. Their power is calculated by the formula
<div class="formula">($effbase + $damper * (Attacker's Special - Defender's Special)) * (ability weight)</div>
where ability weight is unique to the ability used to attach the effect. Boost effects are not affected by the target's Special.
<i><b>Injury, Pain, and Headache</b>
These effects reduce <b>Attack</b>, <b>Defense</b>, and <b>Special</b>, respectively.
<b>ATK Boost, DEF Boost, and SPC Boost</b>
These do exactly what they say on the tin.
<b>Blessing and Curse</b>
Blessing boosts all stats; Curse reduces all stats. By default, they produce a weaker effect than the individual effects, but Mage can make them much stronger. Unlike the basic effects, these cannot be stacked.
<b>Forsaken</b>
Massively reduces Defense. Unlike other debuffs, this can make the stat go into the negatives, causing the enemy to take more damage from attacks.</i>
<b><u>Protection Effects</u></b>
These effects protect you from other effects.
<i><b>Alert</b>
Protects against Stunned.
<b>Chi Shield</b>
Protects against all negative effects.
<b>Tolerance</b>
Protects against the associated effect once.</i>
<b><u>Stances</u></b>
Stances change the way you interact with battle and your opponents. They usually only last one round, and, with the exception of Hidden, only one can be active at a time.
<i><b>Berserker</b>
Increases both damage dealt and damage received by <<print $berserk_factor*100>>%.
<b>Defender</b>
Reduces both damage dealt and damage received by <<print $berserk_factor*100>>%.
<b>Protector</b>
Gain a small Defense boost and take all direct hits targeted at an ally. (Area attacks will still hit everyone.)
<b>Martyr</b>
Forces all direct attacks to target you.
<b>Hidden</b>
Can't be targeted by direct attacks. (You're still vulnerable to area attacks.) This doesn't work if you're the only possible target.</i>
<<back>></span><span id="content">Mabel looks on anxiously as Dipper falls to the ground, placed in stasis by the arena regulations. She laughs suddenly, with a nervous edge. "He'll be fine! Right? They told us that, at the beginning, that like, no one can die here, right? So he'll be fine, he's definitely fine. You're not scaring me." Her manic grin comes back. "And now that he's not crampin' my style, it's time to have some REAL fun!"
She throws her arms to the sky, and you watch as her feet slowly leave the ground. There is a flash, and suddenly her skirt has become a glorious battle gown, sparkling with gemstones embroidered in a tapestry of stampeding unicorns.
Rainbow-colored sparks fly from Mabel's hands as she looks down on you with the face of a mad god.
"Mega Mabel... ACTIVATE!!!"
<span class="btn">[[Continue...|Battle!]]</span></span>
<<set $enemies to [new Enemy("Mega Mabel",$enemies[1].hp,40,25,25)]>><span id="content">"Mabel! No!!" Dipper rushes over to Mabel's unconscious body, but she has already been placed in stasis as per the arena regulations. "Wh-what happened? What did you do to her?! You said we wouldn't be hurt!" he yells through teary eyes.
Hyperventilating, Dipper desperately flips through his journal, looking increasingly panicked. "A-ah... ah...!" Finally, he slams his hand down on a page near the end. "I don't care about the danger! I have to! I have to save Mabel!" He inhales, and screams it all out in a single breath: "TIER REDGEMOR MANTORK PARGON PARGON PARGON <i>PARGON!!!</i>"
Purple runes crackle at his feet. He gasps sharply, and his head snaps back for a moment before hanging forward limply.
You count a breath, and then his head rises again, slowly. His expression is... surprisingly calm compared to the panic he showed just before. He is smiling placidly, and there is something in his eyes that you can't quite place.
"Ha ha," Dipper laughs quietly. "This doesn't feel bad at all! I don't know what the journal was talking about." With a speed that startles you, he flings the book over his shoulder without even a second glance.
He stretches languidly, and you hear joints pop. "I don't need that old thing to beat you, anyway." He looks straight at you, and can't shake the distinct feeling that there is something <i>else</i> behind those eyes now.
And... was his shadow always that big?
<span class="btn">[[Continue...|Battle!]]</span></span>
<<set $enemies to [new Enemy("Big Dipper",$enemies[0].hp,35,25,30)]>>/* The order they're added to the array matters: they are displayed in that order from left to right when the stat blocks instantiate. */
<<widget "puppetsInit">>
<<set $Fighter = new Puppet("Fighter",30,40,20,'N')>>
<<set $Fighter.firefly = true>>
<<set $Rogue = new Puppet("Rogue",20,30,40,'N')>>
<<set $Mage = new Puppet("Mage",40,20,30,'N')>>
<<set $Bard = new Puppet("Bard",30,30,30,'N')>>
<<set $Cleric = new Puppet("Cleric",20,50,20,'N')>>
<<set $Cleric.firefly = true>>
<<set $Witch = new Puppet("Witch",20,20,50,'N')>>
<<set $Archer = new Puppet("Archer",50,20,20,'N')>>
<<set $All_Puppets = [$Fighter,$Rogue,$Mage,$Bard,$Archer,$Cleric,$Witch]>>
<<for _puppet range $All_Puppets>>
<<setactions _puppet>>
<</for>>
<<set $puppets = [$Rogue,$Fighter,$Mage]>>
<</widget>>
<<widget "call">>
<<switch $args[0]>>
<<case "puppets">>
<<set $puppets to [new Puppet("Rogue",20,30,40,'N'), new Puppet("Fighter",30,40,20,'N'), new Puppet("Mage",40,20,30,'N')]>>
<<fighteractions>>
<<rogueactions>>
<<mageactions>>
<<set $puppets[1].firefly to true>>
<<case "tutorial">>
/* Dummy enemies for the tutorial. */
<<set $enemies to [new Enemy("Enemy",1000,10,10,10,'X'), new Enemy("Enemy",1000,10,10,10,'X'), new Enemy("Enemy",1000,10,10,10,'X')]>>
<<run $enemies[0].effects.push(new Effect("Stunned",1,0))>>
<<run $enemies[1].effects.push(new Effect("Pain",3,10))>>
<<run $enemies[2].effects.push(new Effect("SPC Boost",3,10))>>
<<case "at1">>
/*
Adventure Time enemies: Finn, Princess Bubblegum, Jake
Finn: 750 HP
Bubblegum: 1500 HP
Jake: 750 HP
*/
/* Currently Bubblegum's name is too long and makes her box wider than normal. That's fitting though, maybe I should let it stay. */
<<set $enemies to [new Enemy("Jake",750,25,40,25,'M'), new Enemy("Princess Bubblegum",1500,20,35,35,'F'), new Enemy("Finn",750,50,25,15,'M')]>>
<<case "gf1">>
/*
Gravity Falls enemies: Mabel, Dipper
Mabel: 1500 HP
Dipper: 1500 HP
*/
<<set $enemies to [new Enemy("Dipper",1500,30,30,30,'M'), new Enemy("Mabel",1500,40,25,25,'F')]>>
<<case "gum1">>
/*
Gumball enemies: Gumball, Anais, Darwin
Gumball: 1000 HP; x Attack; x Defense; x Special
Anais: 1000 HP; x Attack; x Defense; x Special
Darwin: 1000 HP; x Attack; x Defense; x Special
*/
<<set $enemies to [new Enemy("Gumball",1000,20,40,30,'M'), new Enemy("Anais",1000,25,15,50,'F'), new Enemy("Darwin",1000,35,30,25,'M')]>>
<<case "su1">>
/*
Steven Universe enemies: Pearl, Garnet, Amethyst, Steven
(Four enemies makes the display look weird. It is kinda fitting for Steven to be on a different row. Ideally I want it to look like an upside-down T with Steven above the gems. Fiddle with flexbox.)
*/
<<set $enemies to [new Enemy("Pearl",900,20,30,40,'F'), new Enemy("Garnet",900,35,35,20,'F'), new Enemy("Amethyst",900,30,20,40,'F'), new Enemy("Steven",300,0,20,0,'M')]>>
<<set $enemies[3].deathMessage to "Steven is knocked unconscious!\n">>
<<run $enemies[3].effects.push(new Effect("Guarded",-1,0))>>
<<for _i = 0; _i < 3; _i++>>
<<set $enemies[_i].deathMessage to $enemies[_i].name+" poofs!\n">>
<</for>>
<<case "gum2">>
<<set $enemies to [new Enemy("Nicole",2000,100,30,20,'F')]>>
<<set $enemies[0].boss to true>>
<<set $enemies[0].aggro to true>>
<<case "champion">>
/*
Final match: Bonnibel, Dipper, Gumball, Stevonnie
(Stevonnie should appear in front in reversal of Crystal Gems setup)
*/
<<set $enemies to [new Enemy("Bonnibel",1000,20,30,40,'F'), new Enemy("Dipper",1000,40,20,30,'M'), new Enemy("Gumball",1000,30,30,30,'M'), new Enemy("Stevonnie",1000,30,40,20,'N')]>>
<<default>>
/* Dummy enemy so the format doesn't break. */
<<set $enemies to [new Enemy("bad call",1,0,0,0)]>>
<</switch>>
<</widget>><span id="status">
<<include status>>
</span>
<span id="content">
<<for _k, _enemy range $enemies>>
<<set $subject = [$enemies[_k],"$enemies["+_k+"]"]>>
<<if _enemy.martyr is true or _enemy.hunter is true or _enemy.offbalance is true or _enemy.defender is true or _enemy.berserker is true>>
<<for _effect range _enemy.effects>>
<<switch _effect.name>>
<<case "Martyr" "Hunter" "Off-Balance" "Defender" "Berserker">>
<<removeEffect _enemy _effect>>
<<default>>
/* do nothing */
<</switch>>
<</for>>
<</if>>
<<set _enemy.cooldown -= 1>>
<<if _enemy.dead>>
/* If enemy is defeated, do nothing */
<<elseif _enemy.stunned>>
<<print _enemy.name+" is stunned!\n\n">>
<<elseif _enemy.down>>
<<print _enemy.name+" struggles back to "+_enemy.pr.pos+" feet.\n\n">>
<<for _effect range _enemy.effects>>
<<if _effect.name is "Knocked Down">>
<<set _mask to true>>
<<removeEffect _enemy _effect>>
<</if>>
<</for>>
<<else>>
<<set $target = [null,null]>>
<<enemyaction _enemy>>
<<set $element to null>>
<<set $item to false>>
<</if>>
<<if $target[0] instanceof Puppet is true>>
<<find "$puppets" "hunter" "true">>
<<if _pos > -1>>
<<if $puppets[_pos].dead isnot true and $puppets[_pos].noact isnot true>>
<<set $target to $subject>>
<<set $subject[0] to $puppets[_pos]>>
<<set $weight to 0.8>>
<br/>
_enemy.name should've known better than to attract $puppets[_pos].name's attention. $puppets[_pos].name counterattacks!<br/>
<<echodamage>>
<</if>>
<</if>>
<</if>>
<</for>>
<span class="btn">[[Continue...|end of round][$turn = "player"]]</span>
</span><<if $inbattle>>
<<chain $subject $target $actor>>
<</if>>/* Handles effect applications. */
<<widget "addeffect">>
/* Sets power for relevant effects and avoids duplicating an effect if it's already in the array. */
/* args0 is target, args1 is effect name, args2 is duration, args3 is inflictor (where applicable) */
/* Create a temporary effect object with only the name. This gives us access to flags such as buff and statmod. */
<<set _E = new Effect($args[1],0,0)>>
<<set _target = $args[0]>> /* for clarity */
<<set _subject = $args[3]>>
<<set _a = _target.effects.length>>
<<if _target.dead isnot true>>
/* No point in applying effect if target defeated. */
<<set _found to false>>
<<set _continue to true>>
<<switch _E.name>>
<<case "Protector" "Stasis" "Rose's Thorns">>
/* do nothing */
<<default>>
<<if _target.stasis is true>>
<<set _continue to false>>
<</if>>
<<if _continue is true and _target.chi is true and _target != _subject>>
/* self-inflicted statuses ignore Chi Shield */
<<if _E.buff>>
/* If applied effect is a buff, all is well, skip ahead */
<<set _continue to true>>
<<else>>
_target.name's Chi Shield protected _target.pr.obj from the ailment.
<<set _continue to false>>
<</if>>
<</if>>
<</switch>> /* end unblockable effect switch */
<<if _continue is true>>
/* First, calculate effect power. */
/* debuff effects are calculated on first application (do not change if target SPC changes) */
<<if _E.statmod and _E.name isnot "Knocked Down">>
<<if _E.buff is false>>
<<effectcalc "debuff">>
<<else>>
<<effectcalc "buff">>
<</if>>
/* DoT damage is calculated every time it activates, so only attacker's side is applied to effect power here. */
<<elseif _E.dot>>
<<set $power = [_subject.get("Special"),$effweight]>>
/* Everything else has no numerical component, but we'll set power to a number to prevent possible glitches. */
<<else>>
<<set $power = 0>>
<</if>>
/* Then check for stackable effects. */
<<if _E.stackable>>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
<<elseif _E.exclusive>>
<<for _j, _effect range _target.effects>>
/* remove all stance effects */
<<if _effect.exclusive>>
<<set _effect.duration = 0>>
<</if>>
<</for>>
<<if _E.name is "Protector">>
<<run _target.effects.push(new Protector(_E.name,$args[2],$power,$target[1]))>>
<<set $target[0].protected to true>>
<<set _p = "\'"+_target.name+"\'">> /* necessary to work with the find widget */
<<set $target[0].protectedBy = _p>>
<<else>>
<<if _E.name is "Martyr">>
<<set _party = $subject[1].substring(0,8)>> /* miraculously, "$puppets" and "$enemies" are exactly the same length, so this works for both */
<<find _party "martyr" "true">>
<<if _pos > -1>>
<<set _party = State.getVar(_party)>>
<<set _act = _party[_pos]>>
<<find "_act.effects" "name" "\'Martyr\'">>
<<set _mask = true>>
<<removeEffect _act _act.effects[_pos]>>
<<run _a-->>
<</if>>
<</if>>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
<</if>>
/* Stunned gets a special case to check for Alert */
<<elseif _E.name is "Stunned">>
<<if _target.alert is false>>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
<<else>>
_target.name saw it coming and wasn't stunned!
<</if>>
<<else>>
<<for _k, _effect range _target.effects>>
<<if _effect.name is _E.name>>
/* if effect is already applied, increase its duration */
<<if $args[2] > _effect.duration>>
<<set _effect.duration = $args[2]>>
<</if>>
<<if _E.dot>>
<<DoT _target _k "test">>
<<set _temp = _dmg>>
<<DoT _target "test" _E.name $power[1] $power[0]>>
<<if _temp < _dmg>>
<<set _effect.power to $power[0]>>
<<set _effect.weight to $power[1]>>
<</if>>
<<else>>
<<if $power > _effect.power>>
/* if the new application has higher power than the original effect, overwrite original power */
<<set _effect.power to $power>>
<</if>>
<</if>>
<<set _found to true>>
<<break>> /* Since the effect was found, we don't need to continue the loop. */
<</if>>
<</for>>
<<if _found is false>>
/* if the effect isn't there already, add it */
<<if _E.dot>>
<<run _target.effects.push(new DoT(_E.name,$args[2],$power[0],$power[1]))>>
<<elseif _E.name is "Off-Balance">>
/* if already knocked down, can't be off-balance */
<<if _target.down is false>>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
<<else>>
_target.name would have been pushed off-balance, but they're already knocked down!
<</if>>
<<elseif _E.name is "Knocked Down">>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
/* Being knocked down also removes off-balance: */
<<for _effect range _target.effects>>
<<if _effect.name is "Off-Balance">>
<<set _effect.duration = 0>>
<<set _mask to true>>
<</if>>
<</for>>
<<else>>
<<run _target.effects.push(new Effect(_E.name,$args[2],$power))>>
<</if>>
<</if>>
<</if>>
<<if _target.effects.length > _a>> /* if true, the effect was applied */
<<addmessage _target _E.name>>
<</if>>
<<effectmanager _target>>
<</if>>
<br/>
<</if>>
<</widget>>/* Applies the effects of status effects. Always run at the end of addeffect. Also contains a reaper, so run it whenever an effect is removed as well. */
<<widget "effectmanager">>
<<set _member = $args[0]>>
<<set _temp = new Map()>>
<<for _k, _v range _member.stats>>
<<run _temp.set(_k,0)>>
<</for>>
<<for _j, _effect range _member.effects>>
<<switch _effect.name>>
<<case "Chi Shield">>
<<set _member.chi to true>>
<<case "Alert">>
<<set _member.alert to true>>
<<case "Stunned">>
<<set _member.stunned to true>>
<<set _member.noact to true>>
<<case "Burning">>
<<set _member.burning to true>>
<<case "Poisoned">>
<<set _member.poisoned to true>>
<<case "Dizzy">>
<<set _member.dizzy to true>>
<<case "Winded">>
<<set _member.winded to true>>
<<case "Off-Balance">>
<<set _member.offbalance to true>>
<<case "Petrified">>
<<set _member.petrified to true>>
<<set _member.noact to true>>
<<case "Berserker">>
<<set _member.berserker to true>>
<<case "Defender">>
<<set _member.defender to true>>
<<case "Martyr">>
<<set _member.martyr to true>>
<<case "Hidden">>
<<set _member.untargetable to true>>
<<case "Hunter">>
<<set _member.hunter to true>>
<<case "Trickster">>
<<set _member.trickster to true>>
<<case "Bubble">>
<<set _member.bubbled to true>>
<<case "Marked">>
<<set _member.marked to true>>
<<case "Shield">>
<<set _member.shield to true>>
<<case "Stasis">>
<<set _member.stasis to true>>
<<default>>
<</switch>>
<<if _effect.statmod is true>>
<<switch _effect.name>>
<<case "Injury">>
<<set _temp.set("Attack",_temp.get("Attack") - _effect.power)>>
<<case "Pain">>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<case "Headache">>
<<set _temp.set("Special",_temp.get("Special") - _effect.power)>>
<<case "Knocked Down">>
<<set _temp.set("Defense",_temp.get("Defense") - Math.round(_member.getBase("Defense")/2))>>
<<set _member.down to true>>
<<set _member.noact to true>>
<<case "Curse">>
<<set _temp.set("Attack",_temp.get("Attack") - _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<set _temp.set("Special",_temp.get("Special") - _effect.power)>>
<<case "Forsaken">>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<set _member.forsaken to true>>
<<case "ATK Boost">>
<<set _temp.set("Attack",_temp.get("Attack") + _effect.power)>>
<<case "DEF Boost">>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<case "SPC Boost">>
<<set _temp.set("Special",_temp.get("Special") + _effect.power)>>
<<case "Blessing">>
<<set _temp.set("Attack",_temp.get("Attack") + _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<set _temp.set("Special",_temp.get("Special") + _effect.power)>>
<<case "Protector">>
<<set _member.protector to true>>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<case "Frenzy">>
<<set _temp.set("Attack",_temp.get("Attack") + _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") - Math.round(_effect.power/2))>>
<</switch>>
<</if>>
/* Reaper: remove expired effects and undo their effects. */
<<if _effect.duration == 0>>
<<switch _effect.name>>
<<case "Chi Shield">>
<<set _member.chi to false>>
<<case "Alert">>
<<set _member.alert to false>>
<<case "Stunned">>
<<set _member.stunned to false>>
<<set _member.noact to false>>
/* when stun wears off, become Alert */
<<set _alert to true>>
<<case "Burning">>
<<set _member.burning to false>>
<<case "Poisoned">>
<<set _member.poisoned to false>>
<<case "Dizzy">>
<<set _member.dizzy to false>>
<<case "Winded">>
<<set _member.winded to false>>
<<case "Off-Balance">>
<<set _member.offbalance to false>>
<<case "Petrified">>
<<set _member.petrified to false>>
<<set _member.noact to false>>
<<case "Martyr">>
<<set _member.martyr to false>>
<<case "Berserker">>
<<set _member.berserker to false>>
<<case "Defender">>
<<set _member.defender to false>>
<<case "Hidden">>
<<set _member.untargetable to false>>
<<case "Hunter">>
<<set _member.hunter to false>>
<<case "Trickster">>
<<set _member.trickster to false>>
<<case "Bubble">>
<<set _member.bubbled to false>>
<<case "Marked">>
<<set _member.marked to false>>
<<case "Shield">>
<<set _member.shield to false>>
<<case "Stasis">>
<<set _member.stasis to false>>
<<default>>
<</switch>>
<<if _effect.statmod is true>>
<<switch _effect.name>>
<<case "Injury">>
<<set _temp.set("Attack",_temp.get("Attack") + _effect.power)>>
<<case "Pain">>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<case "Headache">>
<<set _temp.set("Special",_temp.get("Special") + _effect.power)>>
<<case "Knocked Down">>
<<set _temp.set("Defense",_temp.get("Defense") + Math.round(_member.getBase("Defense")/2))>>
<<set _member.down to false>>
<<set _member.noact to false>>
<<case "Curse">>
<<set _temp.set("Attack",_temp.get("Attack") + _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<set _temp.set("Special",_temp.get("Special") + _effect.power)>>
<<case "Forsaken">>
<<set _temp.set("Defense",_temp.get("Defense") + _effect.power)>>
<<set _member.forsaken to false>>
<<case "ATK Boost">>
<<set _temp.set("Attack",_temp.get("Attack") - _effect.power)>>
<<case "DEF Boost">>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<case "SPC Boost">>
<<set _temp.set("Special",_temp.get("Special") - _effect.power)>>
<<case "Blessing">>
<<set _temp.set("Attack",_temp.get("Attack") - _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<set _temp.set("Special",_temp.get("Special") - _effect.power)>>
<<case "Protector">>
<<set _member.protector to false>>
<<set _temp.set("Defense",_temp.get("Defense") - _effect.power)>>
<<set _x = State.getVar(_effect.target)>>
<<set _x.protected to false>>
<<set _x.protectedBy to null>>
<<case "Frenzy">>
<<set _temp.set("Attack",_temp.get("Attack") - _effect.power)>>
<<set _temp.set("Defense",_temp.get("Defense") + Math.round(_effect.power/2))>>
<</switch>>
<</if>>
<<removemessage _member _effect.name>>
<<run _member.effects.deleteAt(_j)>>
<<if _alert is true>>
<<if _member.boss is true>>
/* boss enemies are Alert for longer, for balance purposes */
<<addeffect _member "Alert" 7>>
<<else>>
<<addeffect _member "Alert" 3>>
<</if>>
<</if>>
<</if>>
<</for>>
/* stat mods */
<<for _k, _v range _temp>>
<<run _member.setTemp(_k,_v)>>
<</for>>
<<set _shieldBreak to false>>
<</widget>><span id="content">Princess Bubblegum looks dispassionately at her fallen comrades and sighs. "Oh, well. I can't expect them to do everything, I suppose." She flicks a switch on her gun, which starts humming loudly. "I'll just have to finish this myself."
<span class="btn">[[Continue...|Battle!]]</span></span>
<<set $enemies[1].cooldown to 0>>
<<set $event to true>><span id="content">Darwin cries out in grief and fury. "Gumball! Anais!" he screams shrilly, shaking his fists at the heavens while his eyes blaze with inner fire. "I will avenge youuuu!!"
<<run $enemies[2].effects.push(new Effect("ATK Boost",3,10))>>Darwin is surging with strength!
<<run $enemies[2].effects.push(new Effect("DEF Boost",3,10))>>Darwin feels tougher.
<<run $enemies[2].effects.push(new Effect("SPC Boost",3,10))>>Darwin's mind is racing.
<span class="btn">[[Continue...|Battle!]]</span></span>
<<set $event to true>><span id="content">Gumball flicks his eyes over the fallen bodies of his siblings, chewing his lip thoughtfully. "So, uh," he says, burying his hands in his pockets. "You know, I've always been in favor of living to fight another day. I think we can all see where this is going, so let's skip the part where I get beaten up and just call it a win for you, deal?"
<b><i>You can accept Gumball's surrender with the "Spare" command from the battle menu.</i>
<span class="btn">[[Continue...|Battle!]]</span></span>
/* the cutscene for refusing is in the action phase */
<<set $surrender to true>>
<<set $enemy_to_spare to "Gumball">>
<<set $event to true>><span id="content">Anais turns to her right, and stares at Gumball sprawled in stasis. She looks to her right, and sees Darwin crumpled in a ball. Then she looks at you.
"Okay, soooo..." she begins, sucking air through her teeth. "You know, I was only really going along with this because of them. I know, I know, I shouldn't have let them suck me in, but, well, brothers, what can you do." She shrugs and gives a little laugh. "Now that they're out of it, why don't we be sensible people and just agree to end it here, okay? I'll tell them I totally put up a good fight and we can all go home in one piece." She extends a hand. "Let's shake on it, alright?"
<b><i>You can accept Anais' surrender with the "Spare" command from the battle menu.</i></b>
<span class="btn">[[Continue...|Battle!]]</span></span>
/* the cutscene for refusing is in the action phase */
<<set $surrender to true>>
<<set $enemy_to_spare to "Anais">>
<<set $event to true>><span id="content">"Ohhh nooooo!" Steven wails. Before you can react, he dashes forward and scoops the fallen gems into his shirt. He looks up at you, arms nearly overflowing with shimmering stones. "U-um, that was a cool fight, even if we lost. You're pretty strong." He shifts his weight, and the gems sparkle enticingly.
Steven sniffles and looks around, clearly feeling awkward. "So... is it over now? Do we get to go home?" He looks at you again, lip wobbling like he's about to cry. "...You're not going to hurt me, right?"
<b><i>You can accept Steven's surrender with the "Spare" command from the battle menu.</i></b>
<span class="btn">[[Continue...|Battle!]]</span></span>
<<set $surrender to true>>
<<set $enemy_to_spare to "Steven">>
<<set $event to true>>
<<run $enemies[3].effects.deleteAt(0)>> /* this will remove the Guarded marker */<span id="content"><<nobr>>/*<i>[[Notes for testers]]</i>
<i><<link "Debug: open all doors">><<set $progress to {at: 2, gf: 2, gum: 2, su: 2}>><<goto "Hub">><</link>></i>*/
<<if $controller.su1.thief is true>>Oh, darn it! The gems vanished into thin air! Looks like you can't take any souvenirs from battles.<br/><br/>
<<unset $controller.su1.thief>><</if>><</nobr>><i>Current difficulty: <<print $difficulty>>
You can test difficulty modes through this toggle:
[[Hard|Hub][$difficulty = "hard"]]: smart targeting will only target vulnerable characters
[[Medium|Hub][$difficulty = "medium"]]: smart targeting will preferentially target vulnerable characters, but other targets can be considered
[[Easy|Hub][$difficulty = "easy"]]: disables smart targeting</i>
You're sitting in a waiting room -- or standing, if you prefer. It's almost offensively boring, the only furniture being a single bench along the back wall. The bench is plain, polished wood, with no pits or scratches but also no decoration or adornment to speak of. It is not notably comfortable or uncomfortable, just kind of... benchy. The floor and walls are smooth stone, the generic kind that has no interesting patterns or irregularities, just flat grey lifelessness. It's mildly cold to the touch, but the room itself is of an unobjectionable temperature.
You really want to fight something.
To the side is a screen explaining [[how things work in the arena.|Tutorial]]
Behind you is a wall where you may peruse your [[achievements]].
Your puppets stand vacantly beside you, silent and still with no battle to fight. You can only take three with you, but [[you can pick which ones.|Party Manager]]
Along the far wall, spread out in a semicircle, are four perfectly circular gates, each with a colorful logo flying above:
<<nobr>>
<div class="logogrid">
<div class="logoitem a">
[img[setup.Path + "AT_logo.png"][Adventure Time][$scenario = "at1"]]
</div>
<div class="logoitem b">
[img[setup.Path + "GF_logo.png"]["Gravity Falls"][$scenario = "gf1"]]
</div>
<div class="logoitem c">
[img[setup.Path + "TAWOG_logo.png"]["The Amazing World of Gumball"][$scenario = "gum1"]]
</div>
<div class="logoitem d">
[img[setup.Path + "SU_logo.png"]["Steven Universe"][$scenario = "su1"]]
</div>
</div>
<</nobr>>
</span>
<<restock>>
<<set $tutorial to false>><span id="content">These foes are from the world of <b><i>Adventure Time</i></b>.
<h4>Princess Bubblegum</h4><br/>The ruler of the Candy Kingdom, a strange civilization whose inhabitants she grew in her lab. She herself was born from the Mother Gum, a hive mind formed after the reintroduction of magic to the world. She has lived for the better part of a millennium, and in that time has gained unparalleled knowledge of science and machinery. Though she prefers to let her underlings handle most difficult jobs, she's no stranger to getting her hands dirty. She won't have her entire kingdom at her disposal in the arena, but commanding is a skill you never forget, and she can push her allies to heights they would never achieve on their own.
<u>Abilities Witnessed:</u>
<h2>Finn the Human</h2>
Finn is the last of his kind: Most humans perished following the disaster that returned magic to the world, but he, somehow, survived. He was found and adopted by Jake's family, and trained to hunt the fiercest of monsters. He lives on the outskirts of the Candy Kingdom, and is employed by Princess Bubblegum to defend the kingdom from threats when he's not searching for adventure on his own. Though young, reckless and, shall we say, not the sharpest tool in the shed, his strength is not to be underestimated -- not many monsters get to make that mistake twice.
<h2>Jake the Dog</h2>
A talking dog with the magical power to change his shape. He and Finn were raised together as family, and he always tags along on Finn's adventures as the semi-responsible big brother. His shapeshifting powers have given his body a rubber-like texture that lets him shrug off most attacks (but his pain sense remains as acute as ever, alas).
<<back>></span><<restock>>
<<call $scenario>>
<<refreshPuppets>> /* refreshes puppets */
<<set $ammo to true>>
<<set $event to false>>
<<set $surrender to false>>
<<set $anais_trap to false>>
<<set $bully to true>>
<<set $steven_defeated to false>>
<<set $untargetable_message to false>>
<<set $kills = []>>
<<set $inbattle to true>>
<<goto "Battle!">><<include "Gate">>
You find yourself in a field of grass, on what appears to be a pleasant summer day. The sun beats down from behind fluffy white clouds, sailing idly through a brilliant blue sky.
Your attention is drawn to three figures opposite you. Despite the apparent space of the field, they're close enough that you can see their features, which you immediately notice are... weird.
Well, the one on the right looks normal enough: a light-skinned boy of about 11 or 12, dressed in a plain blue shirt and pants and wearing a frog-green backpack. His eyes light up when he sees you, and... oh no, what is that on his <i>head?</i> You thought it was a helmet or a hat or something, but no, it's... you're pretty sure it's <i>a bear's skinned face</i>, with the fur bleached white. His face is poking out from where the mouth should be -- the whole thing is wrapped around his head like a second skin. Oh geez. You take that back about him being normal. And you really hope that thing doesn't have fleas.
And the figure next to him... she's tall and thin, with a straight, poised posture and long, pink dress that puts you in mind of a princess. The gold tiara on her head is probably another clue. She almost looks like a normal person, except her skin is... pink. Not the pink of a flush or a sunburn, but the bright, artificial pink of bubblegum. Upon closer inspection, you see her "hair" isn't what you thought it was, either -- you can't see any individual strands, just a solid mass of purplish-pink... <i>something</i>, molded into the shape of what human hair should look like. It's so long, almost down to her ankles. If she notices you staring, she doesn't comment. She just hangs back slightly, staring at you with a placid smile that does nothing to reassure you.
To the left is what appears to be a dog. It certainly has floppy ears, a snout, short yellow fur, and a round, almost spherical belly; everything you'd expect from a dog. But it's also walking upright, with noodly, very human-like arms, and is staring at you with a curious intelligence.
"Hey!" it -- he? -- says suddenly, pointing at you with those thin, snakelike arms. He has five fingers, you notice. "That guy looks like you, Finn! D'you think it's another human?"<<nobr>>
<<if $achievements.get("Bubblegum Chewer") < 1>>
<<run $achievements.set("Bubblegum Chewer",1)>>
<</if>>
<<if $achievements.get("Scourge of Ooo") < 1>>
<<run $achievements.set("Scourge of Ooo",1)>>
<</if>>
<</nobr>>You step through the gate. There is a flash of light, and then...
...<<set $controller.at1.introductions to true>><<include "AT1 hub">>
<<if $choice is "what">><b>"What?"</b>
"Uh." The dog coughs and looks embarrassed. "Sorry, that was probably a weird thing to say. Uh..."
"Oh, please forgive our lack of manners!" the princess chirps, voice bubbly. "We are just so excited to find another human! Let me introduce myself."<<elseif $choice is "who">><b>"Who are you guys?"</b>
"Oh, where are my manners?" the princess chirps, voice bubbly. "I haven't introduced myself!"<</if>> She spreads her arms wide, as if she is addressing the whole world. "I am Princess Bubblegum, ruler of the Candy Kingdom, and these are my friends, Jake the Dog and Finn the Human!"
"Ooh! Ooh! That's me!" the boy squeaks, jumping up and waving his hand. The dog -- Jake? -- just continues staring at you.
"They defend my kingdom from the evils that threaten it, of which there are, sadly, many." She looks around. "Unfortunately, we appear to have been... hm... misplaced. This area seems to be caught in some sort of dimensional loop; no matter how far I travel, I always find myself coming back to the same place. We know not how we got here, but we are apparently supposed to face some mysterious opponent."<<if $controller.at1.human is "">>
"Areyouahumanareyouareyou?!" the boy shouts out in one breath. He looks like he was going to burst if he had to hold the question in any longer. "Everyone says there are no more humans but you look like me so maybe that's not true hey are there more where you come from?"<</if>><<if $controller.at1.scene < 1>>"Huh?"
"YOU'RE DARN RIGHT WE'LL FIGHT YOU! YEAH!!" The boy whoops and draws an old, rusty sword that's nearly as tall as he is, stabbing it into the air. "Hey Jake! WHAT TIME IS IT?"
"Wait, Finn, don't you wanna know--"
"We can ask questions after it has been subdued," the princess says matter-of-factly, pulling bug-eyed green goggles over her face. "This must be the opponent we were meant to fight." She draws some kind of mad science ray gun from her pack, and thrusts her arms towards the sky dramatically. "Jake the magic dog and Finn the human boy! Prove your strength as champions by defending me from this miscreant!"
"So we're just gonna..."
"BATTLE TIME, JAKE!" The boy whoops again.
The dog shrugs, and shifts his feet. "Eh, well, who am I to argue?"<<elseif $controller.at1.choice is "eat">>You reach out and grab the bubblegum woman's hair. It's firm under your fingers, but you tear off a piece easily. She seems too stunned to do anything but watch as you place it in your mouth and chew slowly.
Mmm. Like you thought, it really is bubblegum. The taste is strong, with a fruity undertone. It's quite tough, and chewing it gives your jaw a good workout. When the flavor starts to fade, you experimentally blow a bubble. It almost covers your vision before it pops, splattering pink everywhere.
The princess and the dog are still just staring at you in shock, but the boy looks absolutely furious, his face flushing beet red. He shoves you almost hard enough to make you fall, and your puppets flow in between you to form a defensive perimeter.
"YOU MONSTER!" he shrieks, his voice a comically high whine. "I won't let you touch her ever again!!"
"It's not that big of a deal, Finn," the princess says calmly. "I'll regrow it in no time."
The boy doesn't seem to hear her. He just screams and draws an old, rusty sword that's nearly as tall as he is. The princess sighs softly and draws some kind of mad science ray gun from her pack. "Oh well. I suppose this will be a good test run. And this is probably our mystery opponent, anyway." She raises her arms to the sky dramatically. "To arms, everyone!"<<elseif $controller.at1.choice is "respectable">>In a flash, the boy has drawn an old, rusty sword that's nearly as tall as he is. "ALRIGHT!!" he whoops. "Hey Jake! WHAT TIME IS IT?"
"Battle time!" the dog replies with a grin, and before your eyes, you see his whole body... <i>stretch</i>, as if it's made of rubber. His legs elongate until he is wobbling comically like a clown on stilts, and uses his long legs to step easily over to the boy, at which point he shrinks down again in an instant. It happens so fast you wonder if you hallucinated the whole thing.
The princess steps back and nods to herself. "I see." She draws some kind of mad science ray gun from her pack, and thrusts her arms towards the sky dramatically. "Jake the magic dog and Finn the human boy! Prove your strength as champions by defending me from this miscreant!"<<else>>In a flash, the boy has drawn an old, rusty sword that's nearly as tall as he is. "YOU'RE DARN RIGHT WE'LL FIGHT YOU!!" he says with a whoop.
The princess steps back and nods to herself. "I see. You must be the opponent we are meant to fight." She draws some kind of mad science ray gun from her pack, and thrusts her arms towards the sky dramatically. "Jake the magic dog and Finn the human boy! Prove your strength as champions by defending me from this miscreant!"<</if>>
<center><span class="btn">[[Begin!|Preparation][$scenario = "at1"]]</span></center><<set $controller.at1.asked_abt_humans to true>><<include "AT1 hub">>
<<if $controller.at1.choice is "alt">><b>"Why do you want to meet a human so bad?"</b><<else>><b>"What happened to the humans?"</b><</if>>
Princess Bubblegum shakes her head gravely, losing her smile for the first time. "Alas, they did not adapt well to the return of magic. It was a rather cataclysmic event, according to what records I have found. Following the destruction of their civilization, humans were hunted by vampires and other monsters, until eventually they were no more." She pauses and looks thoughtful. "I once had a... friend..." Her voice deepened there, and there is a meaningful pause before she continues, "...who helped protect humans from those monsters. She told me that one plucky group escaped the mainland and set sail for parts unknown, hoping to find another land where they could be safe. But that was a long time ago, and we have not heard or seen of humans since..." Her face brightens again. "Until now!"You're standing in a grassy field, on what appears to be a pleasant summer day. The sun beats down from behind fluffy white clouds, sailing idly through a brilliant blue sky.
You're sharing this space with three very weird figures: a talking yellow dog with human hands; a tall, smiling princess you suspect is made out of bubblegum; and a human boy, ordinary except for the fact he's wearing a bear pelt for a hat.<<nobr>>
<<set $controller.at1.scene++>>
<</nobr>><<set $controller.at1.human = "yes">><<include "AT1 hub">>
<b>"Yes, I am a human."</b>
"Wow! Cool!!" The boy jumps up and down with excitement. "Where did you come from? Are there more of you? Can I go there?"
Behind him, the princess' expression shifts subtly. She is looking at you much more intently now, like you're some sort of curiosity that belongs in a museum... or a lab.<<set $controller.at1.human = "no">><<include "AT1 hub">>
<<if $controller.at1.choice is "backpedal">><b>"Uh, wait, did you say 'human'? Sorry, I thought you meant... uh... 'hoo-man'. I am definitely not a human."</b><<else>><b>"No, I am not a human."</b><</if>>
All three of them look disappointed, especially the boy. "Aw," he says.
"Ah well," the dog says, patting him on the back. "Maybe next time."<<set $controller.at1.asked_abt_kingdom to true>><<include "AT1 hub">>
<b>"...Candy Kingdom?"</b>
"Yes!" Bubblegum says without missing a beat. "I built the Candy Kingdom and the candy people with my own hands! They're very sweet -- so sweet that everyone wants a piece of them! That's why I need champions like these boys to protect it."<br/>
>[[fite me|AT1 fite]]<br/>
<<if passage() is "AT1 landing">>
>[[What?|AT1 Introductions][$controller.at1.choice = "what"]]<br/>
<</if>>
<<if $controller.at1.introductions isnot true>>
>[[Who are you guys?|AT1 Introductions][$controller.at1.choice = "who"]]<br/>
<</if>>
<<if passage() is "AT1 Introductions">>
>[[Oh. I'm that opponent.|AT1 fite][$controller.at1.choice = "respectable"]]<br/>
<</if>>
<<if $controller.at1.confirmed_otherworld is true>>
>[[I brought you here. I'm your opponent. Fight me.|AT1 fite][$controller.at1.choice = "respectable"]]<br/>
<</if>>
<<if $controller.at1.introductions is true>>
<<if passage() isnot "AT1 Introductions">>
>[[I'm the opponent you need to fight.|AT1 fite][$controller.at1.choice = "respectable"]]<br/>
<</if>>
<<if $controller.at1.asked_abt_humans isnot true>>
>[[What happened to the humans?]]<br/>
<</if>>
<<if $controller.at1.asked_abt_kingdom isnot true>>
>[[...Candy Kingdom?]]<br/>
<</if>>
<</if>>
<<if $controller.at1.human is "">>
>[[Yes, I am a human.]]<br/>
>[[No, I am not a human.]]<br/>
<<elseif $controller.at1.asked_abt_humans isnot true>>
>[[Why do you want to meet a human so bad?|What happened to the humans?][$controller.at1.choice = "alt"]]<br/>
<</if>>
<<if $controller.at1.human is "yes">>
<<if $controller.at1.confirmed_otherworld isnot true>>
>[[Sorry to disappoint you, but I'm not from your world.]]<br/>
<</if>>
>[[Uh, wait, did you say "human"? Sorry, I thought you meant... uh... "hoo-man". I am definitely not a human.|No, I am not a human.][$controller.at1.choice = "backpedal"]]<br/>
<</if>>
>[[(Eat some of the bubblegum woman's hair.)|AT1 fite][$controller.at1.choice = "eat"; $controller.at1.scene = 1]]<<if tags().includes("AT1")>>
<<include "AT1 choices">>
<<elseif tags().includes("GF1")>>
<<include "GF1 choices">>
<<elseif tags().includes("GUM1")>>
<<include "GUM1 choices">>
<<elseif tags().includes("SU1")>>
<<include "SU1 choices">>
<<elseif tags().includes("AT2")>>
<<include "AT2 choices">>
<<elseif tags().includes("GF2")>>
<<include "GF2 choices">>
<<elseif tags().includes("GUM2")>>
<<include "GUM2 choices">>
<<elseif tags().includes("SU2")>>
<<include "SU2 choices">>
<</if>><<set $controller.at1.confirmed_otherworld to true>><<include "AT1 hub">>
<b>"Sorry to disappoint you, but I'm not from your world."</b>
The princess strokes her chin. "A dimensional traveler, then?" she says, not even fazed. "Why, that's even more fascinating! Do you know what brought us here? Perhaps you can help us track down this opponent we're supposed to fight."<<back>><br/><br/>
Go on. Bask in your glory.<br/><br/>
<<for _key, _value range $achievements>>
<<achievement _key>>
<</for>><<if $progress.at < 1>><<set $progress.at = 1>><</if>><<achievementcheck>><<victorymessage>>
Finn sits up slowly, groaning and rubbing his head. Jake doesn't get up at all, preferring instead to moan from the ground while waving his arms melodramatically.
Princess Bubblegum just brushes some dirt off her dress, hardly fazed at all. "Hm!" she chirps. "So it's true what we were told -- despite the intensity of that battle, I feel as good as new!" She taps her chin, staring off into space. "A simulated combat environment with no real-world consequences... the possibilities are <i>fascinating!</i> Finn, I could train you against all kinds of monsters here, and you wouldn't have to worry about getting hurt! How strong could you become, I wonder...? This necessitates further study! We must return sometime!"
"U-uh, maybe later, PB." Finn has scuttled away to hide behind Princess Bubblegum, and now looks at you with abject terror. "I just wanna go home now."
Bubblegum makes a disappointed <i>hrrm</i> noise, but says, "Yes, I suppose we have other work to do." She waves at you, similing brightly. "Farewell, mysterious and terrifying stranger!"
>[[Return to the hub|Hub]]<<widget "achievement">>
<<set _key = $args[0]>>
<<set _value = $achievements.get(_key)>>
<b><<if _value < 2>>??????<<else>>_key<</if>></b><br/>
<<if _value eq 0>>
<<switch _key>>
<<case "Bubblegum Chewer" "Scourge of Ooo">>
<i>Enter the Adventure Time gate to learn a hint.</i>
<<case "Mystery Solver" "Tree Feller" "Star Crusher">>
<i>Enter the Gravity Falls gate to learn a hint.</i>
<<case "Watterson Wrecker" "Thinner Than Water" "Princess With A Thousand Enemies" "Thicker Than Blood">>
<i>Enter the Amazing World of Gumball gate to learn a hint.</i>
<<case "Gem Smasher" "Pearl Connoisseur" "Garnet Collector" "Amethyst Curator">>
<i>Enter the Steven Universe gate to learn a hint.</i>
<<case "Demonologist">>
<i>Enter the second Gravity Falls gate to learn a hint.</i>
<<case "Orphaner">>
<i>Enter the second Amazing World of Gumball gate to learn a hint.</i>
<<case "Tyrant">>
<i>Enter the second Steven Universe gate to learn a hint.</i>
<<case "Bully" "Gladiator" "Independent" "Does It Make A Sound?" "The Redemption" "Alone Together">>
<i>This achievement is a secret.</i>
<<default>>
<i>This achievement isn't available yet.</i>
<</switch>>
<<else>>
<<switch _key>>
<<case "Bubblegum Chewer">>
Defeat Princess Bubblegum and associates.
<<case "Scourge of Ooo">>
Defeat Princess Bubblegum before either Finn or Jake.
<<case "Mystery Solver">>
Defeat the Mystery Twins.
<<case "Tree Feller">>
Defeat Big Dipper.
<<case "Star Crusher">>
Defeat Mega Mabel.
<<case "Watterson Wrecker">>
Defeat the Wattersons.
<<case "Thinner Than Water">>
Witness cowardice.
<<case "Thicker Than Blood">>
Witness loyalty.
<<case "Princess With A Thousand Enemies">>
Witness cunning.
<<case "Gem Smasher">>
Defeat the Crystal Gems.
<<case "Pearl Connoisseur">>
When fighting the Crystal Gems, save Pearl for last.
<<case "Garnet Collector">>
When fighting the Crystal Gems, save Garnet for last.
<<case "Amethyst Curator">>
When fighting the Crystal Gems, save Amethyst for last.
<<case "Bully">>
Defeat the Crystal Gems entirely by forcing them to defend Steven. You meanie.
<<case "Widowmaker">>
Defeat Marceline.
<<case "Demonologist">>
Defeat Bill Cipher.
<<case "Orphaner">>
Defeat Nicole.
<<case "Tyrant">>
Defeat Rose Quartz.
<<case "Gladiator">>
Win the final challenge.
<<case "Independent">>
Bonnibel Bubblegum was your last opponent.
<<case "Does It Make A Sound?">>
Dipper was your last opponent.
<<case "The Redemption">>
Gumball was your last opponent.
<<case "Alone Together">>
Stevonnie was your last opponent.
<<case "Last One Standing">>
Win a match with only one puppet remaining.
<<case "Tactician">>
Win a match will all puppets intact.
<</switch>>
<</if>>
<br/><br/>
<</widget>>
<<widget "achievementcheck">>
<<set _end = $kills.length-1>>
<<switch $scenario>>
<<case "at1">>
<<if $achievements.get("Bubblegum Chewer") < 2>>
<<run $achievements.set("Bubblegum Chewer",2)>>
<i>Achievement Unlocked:</i> <<achievement "Bubblegum Chewer">>
<</if>>
<<if $achievements.get("Scourge of Ooo") < 2>>
<<if $kills[0] is "Princess Bubblegum">>
<<run $achievements.set("Scourge of Ooo",2)>>
<i>Achievement Unlocked:</i> <<achievement "Scourge of Ooo">>
<</if>>
<</if>>
<<case "gf1">>
<<if $achievements.get("Mystery Solver") < 2>>
<<run $achievements.set("Mystery Solver",2)>>
<i>Achievement Unlocked:</i> <<achievement "Mystery Solver">>
<</if>>
<<if $achievements.get("Tree Feller") < 2>>
<<if $kills[_end] is "Big Dipper">>
<<run $achievements.set("Tree Feller",2)>>
<i>Achievement Unlocked:</i> <<achievement "Tree Feller">>
<</if>>
<</if>>
<<if $achievements.get("Star Crusher") < 2>>
<<if $kills[_end] is "Mega Mabel">>
<<run $achievements.set("Star Crusher",2)>>
<i>Achievement Unlocked:</i> <<achievement "Star Crusher">>
<</if>>
<</if>>
<<case "gum1">>
<<if $achievements.get("Watterson Wrecker") < 2>>
<<run $achievements.set("Watterson Wrecker",2)>>
<i>Achievement Unlocked:</i> <<achievement "Watterson Wrecker">>
<</if>>
<<if $achievements.get("Thinner Than Water") < 2>>
<<if $kills[_end] is "Gumball">>
<<run $achievements.set("Thinner Than Water",2)>>
<i>Achievement Unlocked:</i> <<achievement "Thinner Than Water">>
<</if>>
<</if>>
<<if $achievements.get("Princess With A Thousand Enemies") < 2>>
<<if $kills[_end] is "Anais" and $anais_trap is true>>
<<run $achievements.set("Princess With A Thousand Enemies",2)>>
<i>Achievement Unlocked:</i> <<achievement "Princess With A Thousand Enemies">>
<</if>>
<</if>>
<<if $achievements.get("Thicker Than Blood") < 2>>
<<if $kills[_end] is "Darwin">>
<<run $achievements.set("Thicker Than Blood",2)>>
<i>Achievement Unlocked:</i> <<achievement "Thicker Than Blood">>
<</if>>
<</if>>
<<case "su1">>
<<if $achievements.get("Gem Smasher") < 2>>
<<run $achievements.set("Gem Smasher",2)>>
<i>Achievement Unlocked:</i> <<achievement "Gem Smasher">>
<</if>>
<<if $achievements.get("Bully") < 2>>
<<if $bully is true>>
<<run $achievements.set("Bully",2)>>
<i>Achievement Unlocked:</i> <<achievement "Bully">>
<</if>>
<</if>>
<<if $achievements.get("Pearl Connoisseur") < 2>>
<<if $kills[_end] is "Pearl">>
<<run $achievements.set("Pearl Connoisseur",2)>>
<i>Achievement Unlocked:</i> <<achievement "Pearl Connoisseur">>
<</if>>
<</if>>
<<if $achievements.get("Garnet Collector") < 2>>
<<if $kills[_end] is "Garnet">>
<<run $achievements.set("Garnet Collector",2)>>
<i>Achievement Unlocked:</i> <<achievement "Garnet Collector">>
<</if>>
<</if>>
<<if $achievements.get("Amethyst Curator") < 2>>
<<if $kills[_end] is "Amethyst">>
<<run $achievements.set("Amethyst Curator",2)>>
<i>Achievement Unlocked:</i> <<achievement "Amethyst Curator">>
<</if>>
<</if>>
<<case "gf2">>
<<if $achievements.get("Demonologist") < 2>>
<<run $achievements.set("Demonologist",2)>>
<i>Achievement Unlocked:</i> <<achievement "Demonologist">>
<</if>>
<<case "gum2">>
<<if $achievements.get("Orphaner") < 2>>
<<run $achievements.set("Orphaner",2)>>
<i>Achievement Unlocked:</i> <<achievement "Orphaner">>
<</if>>
<<case "su2">>
<<if $achievements.get("Tyrant") < 2>>
<<run $achievements.set("Tyrant",2)>>
<i>Achievement Unlocked:</i> <<achievement "Tyrant">>
<</if>>
<</switch>>
<<if $achievements.get("Last One Standing") < 2>>
<<set _d = 0>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _d++>>
<</if>>
<</for>>
<<if _d eq 2>>
<<run $achievements.set("Last One Standing",2)>>
<i>Achievement Unlocked:</i> <<achievement "Last One Standing">>
<</if>>
<</if>>
<<if $achievements.get("Tactician") < 2>>
<<set _d = 0>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _d++>>
<</if>>
<</for>>
<<if _d eq 0>>
<<run $achievements.set("Tactician",2)>>
<i>Achievement Unlocked:</i> <<achievement "Tactician">>
<</if>>
<</if>>
<</widget>>You're standing in a clearing, in a forest at dusk. Tall trees, an even mix of deciduous and coniferous, spread out in all directions as far as you can see. Their leaves rustle just on the edge of hearing as a faint breeze blows past, making the shadows dance as the sun twinkles in and out from behind the canopy.
Across from you are two <<if $controller.gf1.introductions isnot true>>maybe-twins, a boy hunched over a huge journal and a cheerful girl in a bedazzled sweater.<<else>>twins: Dipper, a boy hunched over a huge journal, and Mabel, a cheerful girl in a bedazzled sweater.<</if>><<nobr>>
<<set $controller.gf1.scene++>><</nobr>><<include "Gate">>
You find yourself in a forest at dusk. Tall trees, an even mix of deciduous and coniferous, spread out in all directions as far as you can see. Their leaves rustle just on the edge of hearing as a faint breeze blows past, making the shadows dance as the sun twinkles in and out from behind the canopy.
"I'm telling you, something is <i>definitely</i> weird here!"
Two kids, a boy and a girl, step out from the trees, and stop dead when they see you.
They look almost identical -- siblings, you think, if not twins. Both have pale skin, chocolate-brown hair, and hazel eyes that gawk at you from pudgy faces. Both look around 12 years old, if you had to guess.
The boy is the one who spoke. He's clutching a big, hard-bound book that's almost the size of his torso. There's no title, just a gold plate in the shape of a six-fingered hand, inset with the number "3". He's wearing a navy blue jacket over a thick red shirt, and his mousy hair peeks out from under a white-and-blue baseball cap with a pine tree on the front. He stares at you like he's trying to figure you out, gears clearly whirring behind his eyes.
The girl is -- you only took your eyes off her for a moment, but she's already walked straight up to puppets without a hint of fear, braces glinting in her toothy grin. Where the boy is hunched and withdrawn, she seems to fill and illuminate the whole space. Even her wardrobe choices are literally brighter than his -- she wears a neon pink sweater covered in glittering pins and stickers, most prominently a bright yellow shooting star leaving a rainbow trail. Her long hair is kept back with a pink headband.
She raps her knuckles on Fighter's helmet and giggles at the ringing noise it makes. "Mabel! What are you doing?!" the boy cries out, voice quavering with panic.<<nobr>>
<<if $achievements.get("Mystery Solver") < 1>>
<<run $achievements.set("Mystery Solver",1)>>
<</if>>
<<if $achievements.get("Tree Feller") < 1>>
<<run $achievements.set("Tree Feller",1)>>
<</if>>
<<if $achievements.get("Star Crusher") < 1>>
<<run $achievements.set("Star Crusher",1)>>
<</if>>
<</nobr>><br/>
>[[fite me|GF1 fite]]<br/>
<<if $controller.gf1.introductions isnot true>>
<<if $controller.gf1.mabeldone isnot true>>
>[[Who are you guys?|GF1 introductions][$controller.gf1.mabeldone = true]]<br/>
<<else>>
>[[Who are you guys, anyway?|GF1 introductions][$controller.gf1.mabeldone = true]]<br/>
<</if>>
<<elseif $controller.gf1.introductions is true>>
>[[I'm the one you need to fight.|GF1 fite][$controller.gf1.choice = "respectable"]]<br/>
>[[What do you think this is, an escape-the-room puzzle? This is an RPG! Fight me already!|GF1 fite][$controller.gf1.choice = "meta"]]<br/>
<<if $controller.gf1.asked_abt_origins isnot true>>
>[[Where are you from?]]<br/>
<</if>>
<</if>>
<<if passage() is "These are my puppets. They help me fight things.">>
>[[Things like you. Fight me!|GF1 fite]]<br/>
<</if>>
<<if passage() is "You know, I think I don't actually know what these puppets are myself. Something about... archetypes? I don't get it.">>
>[[You know the best way to learn about them? Fight them!|GF1 fite]]<br/>
<</if>>
<<if $controller.gf1.mabeldone isnot true>>
>[[Stop doing that.]]<br/>
>[[(Wait and see what the girl does next)]]<br/>
<</if>>
<<if $controller.gf1.puppets_explained is "asked">>
<<if passage() is "GF1 introductions">>
>[[Wait, what do you mean "more"?]]<br/>
<</if>>
>[[These are my puppets. They help me fight things.]]<br/>
>[[You know, I think I don't actually know what these puppets are myself. Something about... archetypes? I don't get it.]]<br/>
<</if>>
<<if passage() is "(Wait and see what the girl does next)" and $controller.gf1.mabeldone is true>>
>[[Yes.]]<br/>
>[[No.]]<br/>
<</if>>
<<if passage() is "Yes." or passage() is "No.">>
>[[Sure. You just need to fight me.|GF1 fite][$controller.gf1.choice = "respectable"]]<br/>
<</if>><<if $progress.gf < 1>><<set $progress.gf = 1>><</if>><<achievementcheck>><<victorymessage>>
<<if $kills[1] is "Mega Mabel">>
The twins' eyes snap open, and they stagger to their feet. Mabel sways as if from vertigo while Dipper frantically pats himself down for injuries. "What was that?!" he says. "The voice was totally lying! That <i>hurt!</i> I th-thought we were goners, for real!"
"Oh, don't be a baby," Mabel says. "I had to keep it up after you tapped out early! I was all like--" She waves her arms around excitedly. "--ZOOM, POP, BOOM, rainbows everywhere! It was totally awesome, we gotta try again so you can see!"
"Nope. Noooo thanks," Dipper says emphatically, tapping on the return portal behind him. "Let's get out of here before anything else happens."
"Okay fiiiine," Mabel whines. "If you <i>really</i> think swindling tourists is better than cool no-consequence magic battles..."
"<i>Mabel.</i>"
She looks back at you with a smirk and shrugs, as if to say, <i>Brothers, am I right?</i> and hops into the portal.<<elseif $kills[1] is "Big Dipper">>The twins' eyes snap open, and they stagger to their feet. Mabel groans and stretches, while Dipper sways as if from vertigo, clutching his head.
"What... what just happened?" he says. "I remember... I read that spell in the journal and then... it's all just a haze..."
"Aw," Mabel says, booping him on the nose. "Did you do something big and dramatic for me, little bro? That's so sweet!"
"How are you so calm about this?!" Dipper squeaks. He flushes red, clearly embarassed. "I thought... I thought you might actually be..."
"Dipper, I'm fine," Mabel says, more seriously. "We're not dead, just like it said! You gotta learn to trust mysterious disembodied voices more."
"Well I don't wanna do it again! We may not be dead but it still <i>hurt!</i>" He shoots you a nervous glance, then backs away towards the return portal. "Let's just go home."
Mabel heaves a dramatic sigh, but smiles good naturedly. "Alright, I <i>guess</i> we could go back to our very important job helping Gruncle Stan swindle more tourists." She looks back at you over her shoulder and waves. "Well, <i>I</i> had fun, anyway! Let's do this again sometime!"<</if>>
>[[Return to the hub|Hub]]<<if $controller.gf1.mabeldone isnot true>>The girl yelps and leaps away with strength that would impress a frog and bounds back to the boy.
"Mabel, what did you do?!" the boy screams, clutching his book like a life preserver. "You should know better than to poke random things!"
"Okay, okay!" The girl grins nervously and puts her hands up. "We're really sorry and if you let us go we promise we'll never poke you again, okay?"
To your frustration, your puppets won't move, since you're not in a battle yet. You step forward menacingly, hoping that'll suffice.
"Dipperrrr," the girl hisses from the side of her mouth. "Please tell me the journal has something on this!"<<elseif $controller.gf1.choice is "respectable">>"Wait, what?"
The girl <i>hmms</i> to herself. "Not what I was expecting, but whatever! I'm tired of these stupid woods!"
"Hold on, hold on!" the boy says, waving his hands. "Doesn't any of this sound fishy to you? Something's trying to pit us against each other! If we work together, we can find another way out--"
"BORING!" the girl says. "C'mon, Dip, they said it wouldn't even hurt! Maybe it'll even be fun!"
You step forward menacingly.<<elseif $controller.gf1.choice is "meta">>The boy boggles. "Wh... what are you talking about?"
"So we just have to fight you and then we can go home?" the girl says. "Alright, deal!"
"Hold on, Mabel, they never actually said that! And what do you mean, 'RPG'? Like... a video game? Are we in a video game? Is that what this is???" He clutches at his head, clearly at a loss.
"You can overthink this later! See if the journal has anything we can use!"<<else>>"What? No!" the boy shouts. "Why would we want to fight you?"
"Wait a minute!" the girl says. "I bet this is the guy we're supposed to fight!"
"That's crazy!" the boy says, his voice cracking. "They've got those weird... creepy... things! With swords! How are we supposed to fight that?"
"Oh, come on! We've fought gnomes and werewolves and ghosts and you're scared of some guys from the Renaissance fair? See what the journal says!"<</if>>
"U-uh, uh..." The boy cracks the book open, and looks shocked at what he sees. "What? This wasn't here before!"
The girl butts in to read over his shoulder, much to his annoyance. "'Since you're pathetic normal humans who wouldn't stand a chance in a fair fight--' Wow, rude," she reads, "'--the arena has changed the rules to give you a fighting chance! Anything you imagine will become real, like when you fought in the Dreamscape!'" Her eyes light up. "Woah, I take that back! That's super cool!"
The boy squints at the page and continues reading. "'And for Dipper, since we know you'll need a little help in that area--' Hey, what's that's supposed to mean?!" He grumbles to himself and keeps reading. "'--since we know you'll need a little help in that area, you'll find some new spells in your journal to do the heavy lifting for you, no original thought required!' Oh, come on! I... I can be creative!"
The girl does a twirl, and shooting stars appear from nowhere to trail behind her. She laughs in delight. "Well you better do it fast, Dip-Dop! This fight is officially <i>on!</i>"
<center><span class="btn">[[Begin!|Preparation][$scenario = "gf1"]]</span></center><<include "GF1 hub">>
<<if $controller.gf1.scene < 2>>The girl taps on Fighter's breastplate, and the boy cringes with every motion. "Mabel, that thing looks dangerous! Get back!"
"C'mon, Dip, they're not even moving!" she shouts back. She stares up at Fighter again, trying to peek through their helment. "Are they even alive?"<<elseif $controller.gf1.scene == 2>>The girl stands on her toes to grab at Fighter's helment, but sits back and harumphs when it doesn't move. She glares at Fighter a moment longer before appearing to get bored. She walks over to Rogue next, and looks over their assortment of belts and pouches.
The boy bites his nails.<<elseif $controller.gf1.scene == 3>>The girl stares straight into Rogue's hood. You doubt she can see much through the shadow, but her gaze doesn't break as she slowly extends a finger forward. She jerks back as soon as it touches Rogue's leather armor, as if she expected Rogue to snap her up like a bear trap, but nothing happens. She creeps back, and once again maintains what passes for eye contact as her hand carefully moves to unlatch a pouch.
The boy yelps and covers his eyes, but nothing happens. The girl discovers with obvious disappointment that the pouches remain firmly sealed to anyone who isn't Rogue.<<elseif $controller.gf1.scene == 4>>The girl walks over to Mage next. "Hey, what are you supposed to be? Some creepy old wizard?"
"Mabelll, get away from there..." the boy whines.<<elseif $controller.gf1.scene == 5>>When she doesn't get a response, the girl pokes and grabs at Mage's robe. "Ooh, this is so soft!" she croons. "Where'd you get it?"
The boy looks like he wants to be in a bunker.<<elseif $controller.gf1.scene == 6>>"Hmmm..." The girl narrows her eyes, and stares up into the shadow under Mage's hat. Slowly and deliberately, she reaches up, grasps the brim of the hat, and yanks it off in a single swift motion.
Both of the kids are stunned into silence at the sight of Mage's bald, smooth head and blank stare. When nothing happens, the girl gingerly places the hat back and steps away, grinning awkwardly.<<elseif $controller.gf1.scene == 7>>And now the girl has turned her attention to you. She looks into your eyes, and clearly sees that unlike the puppets, you're staring back at her.
"So what are you doing here with these weirdos? Can you talk?"<<set $controller.gf1.mabeldone to true>><</if>><<include "GF1 hub">><<set $controller.gf1.introductions to true>>
<b>"Who are you guys?"</b>
<<if ndef $controller.gf1.canspeak>>"They talk!" the girl exclaims with a laugh.
<</if>>"Oh. I'm Dipper, and this is Mabel. We're twins," the boy explains.
"The Mystery Twins!" Mabel says, grinning.
"I thought you hated that?"
"Eh, I'm warming up to it."
The boy -- Dipper -- looks at you again. "We... uh... we can't remember how we got here, exactly. But a voice told us we had to fight someone to get back home, and also that the fight wouldn't hurt us or something?" He scratches his head. "Maybe we need to think outside the box. I've tried searching for a way out, but these woods just seem to go on forever. Maybe if we put our heads together, we can find a way out."<<if $controller.gf1.puppets_explained isnot "explained">>
Mabel points at your puppets. "And hey, what are those things? Are they more haunted mannequins?"
Dipper taps a finger against the cover of his journal. "I'd actually like to know that too. It's my mission to record every weird thing in this town!" He adds self-consciously, "U-uh, if you don't mind."<<set $controller.gf1.puppets_explained to "asked">><</if>><<set $controller.gf1.canspeak to "yes">><<include "GF1 hub">>
<b>"Yes."</b>
"Ha! It speaks!" the girl shouts. "Are you really shy, or do you just like watching people like a creeper?"
"Mabel, be nice," the boy says. He looks a little more relaxed now that you've spoken. "Do you know if there's any way we can get out of here?" he says to you.<<set $controller.gf1.canspeak to "no">><<include "GF1 hub">>
<b>"No."</b>
The girl nods and says, "Oh, well that settles that then!" Her face scrunches up. "Heeeey, wait a minute..."
The boy guffaws loudly, and looks relaxed for the first time you've seen him. "Okay, so you have a sense of humor. Do you know how we can get out of here?"<<set $controller.gf1.asked_abt_origins to true>><<include "GF1 hub">>
<b>"Whare are you from?"</b>
"California," the boy says immediately, with just a hint of irritation. "But if you mean where we <i>just</i> came from... uh, it's a place called Gravity Falls, Oregon."
"Our folks wanted us to get out of the house over the summer, so they sent us over to our Gruncle Stan's!" She snorts. "We have to help him run the Mystery Shack -- that's his tourist trap. You won't believe the kind of stuff people will buy!"
"But there's also some stuff in Gravity Falls that's...weird. I mean, like..." The boy lowers his voice, like he's sharing a grave secret. "...<i>conspiracy</i> weird. I could never find anything in California, but in the past month alone I've practically been tripping over--" He waves his hands excitedly. "--monsters, cryptids, even a mind demon! There's something in that town that's like a magnet for weirdness." His eyes unfocus, and he starts tapping his chin. "I feel like I'm so close to figuring it out, but there's still something missing. Something that ties it all together... What could it be?"
The girl cuts him off with a sharp, "Nerd out later, Dipper! Right now we gotta focus on getting out of <i>here!</i>"<<if $progress.gum < 1>><<set $progress.gum = 1>><</if>><<achievementcheck>><<victorymessage>>
The world shifts back, and the Wattersons are inexplicably standing upright, in the same positions as before. They sway a little, as if from vertigo.
"Wait," Anais says, "weren't we just, like, knocked unconscious or something? What just happened?"
Gumball scoffs and waves a hand dismissively. "Pfft! Everyone knows that battles in RPGs never count, duh!"
Anais screws up her face. "...What?"
"See, this is why you need to play more video games!"
"Oh, so you knew we were in a video game after all?" Darwin says pleasantly.
Gumball waves a hand imperiously. "I mean, obviously! We even had to take turns to fight each other!"
"Of course! You wanted to take us to another video game world, but you knew we'd be suspicious, so you added this guy to pin the blame on! Very clever, Gumball!" His voice and smile don't falter once.
"Yeah!" Gumball nods sagely, then his eyes bulge open with realization. "Hey, wait, no -- it wasn't me this time!"
Darwin rolls his eyes and barely contains a laugh. "Sure it wasn't."
"Oh come on!" Gumball makes a show of sighing loudly. "You trap your family in a video game <i>one time</i>...!"
"...What RPGs are <i>you</i> playing?" Anais says suddenly, still scrunching her face in confusion.
"Uh, all of them? When you beat people in RPGs they always just run away in the cutscene afterwards, it's really annoying!" Gumball steps towards the exit portal, and the others follow.
"You need to play better games! In the ones I play the guys totally die afterwards!"
"Okay okay, let's play them all again and tally up all the battles but I'm telling you, they totally don't..."
They keep bickering like that until the portal closes behind them. They don't even spare you a single glance.
>[[Return to the hub|Hub]]<<if $progress.su < 1>><<set $progress.su = 1>><</if>><<achievementcheck>><<victorymessage>><<set $controller.su1.postbattle to true>>
<<if $steven_defeated isnot true>>Steven ducks his head and sprints away, not even sparing you a single glance. He doesn't drop a single gem.<<else>>Even though the battle is over, Steven remains unconscious. His belly rises and falls slowly, the gem in his flesh sparkling with every movement. He could almost be sleeping -- though from the expression on his face, he'd have to be having a nightmare.
The gems have fallen out of his hands and onto the ground. They appear totally inanimate.<</if>>
<<unset $answer>><<set $controller.gf1.mabeldone = true>><<set $controller.gf1.canspeak to "yes">><<include "GF1 hub">>
<b>"Stop doing that."</b>
The girl zips back to the boy's side with impressive speed. Even he seems surprised, wobbling a little as she presses up to him. "Sorry! Sorry!" the girl says, smiling wide and laughing nervously. "They were just, you know, haha, soooo cool and interesting! Can't really blame me for wanting to check 'em out, right? Right? Hahaha!"
The boy takes a half-step back, and pulls the girl with him. "Yeah, sorry, we didn't mean to bother you and your... uh..." His eyes flick over the puppets anxiously. "...weird... mannequin... things..." He clears his throat. "B-but, uh, we're kind of... stuck here? We've tried to get back home, but these woods always lead back to this clearing. If you know a way out, we won't bother you again. Promise."
His eyes drift to the puppets again, and his finger rubs along the cover of the book he's holding. You think you see him lick his lips for a split second. "Although... could you tell me what those things are? I've seen haunted mannequins before, but these don't look quite the same..." He adds self-consciously, "U-uh, if you don't mind."<<set $controller.gf1.puppets_explained to "asked">><<set $controller.gf1.puppets_explained to "explained">><<include "GF1 hub">>
<b>"These are my puppets. They help me fight things."</b>
The boy is scribbling furiously in his journal. You didn't even see him open it. "Uh-huh," he says, not even looking up. "What kinds of things?"<<set $controller.gf1.puppets_explained to "explained">><<include "GF1 hub">>
<b>"You know, I think I don't actually know what these puppets are myself. Something about... archetypes? I don't get it."</b>
The boy is scribbling furiously in his journal. You didn't even see him open it. "Interesting. <i>Verrry</i> interesting." He looks up and steps forward, inspecting the puppets without a trace of his previous fear. "Archetypes... hm... Now that you mention it, these look kind of like <i>Dungeons, Dungeons, and More Dungeons</i> characters. A fighter, a rogue, and a wizard, right? Or, no, I think that could be a sorceror... Everyone lumps them together, but they're actually really different!" He scribbles more notes. "Are you saying those characters were brought to life? Like Rumble Skirmish..." He looks up at nothing in particular, and starts clicking his pen unsconsciously. "I wonder... are these events all happening independently, or is there a singlular force behind all of it? Something with an interest in making characters real? Hmm. Hmm." Click. Click. "I have to know more..." From behind him, the girl rolls her eyes at you with a playful smirk.<<include "GF1 hub">>
<b>"Wait, what do you mean 'more'?"</b>
"Oh, we found some evil wax mannequins in our gruncle's shack a while back," the girl says as nonchalantly if she were discussing the weather. "They tried to kill Gruncle Stan, then they tried to kill us when we found out, so we killed them."
"I lured Wax Sherlock Holmes outside to get melted by the summer sun!" the boy says proudly.<<if $controller.gum1.choice is "reveal">>"VINDICATION!" the cat screams, jumping in the air.
The rabbit raises an eyebrow. "Wow, Gumball really wasn't the cause of our problems today? I am shocked and amazed."
"Hey, don't be mean, Anais!" the fish insists. "Gumball is only the cause of our problems on <i>some</i> days!"
"Wow, I can just feel the love radiating off you," the cat drawls sarcastically.
"So are we really fighting this guy?" the fish says, raising his fists.
"Yeah!" The cat looks at you with fire in his eyes. "Let's show 'em what happens when you mess with the Wattersons!"<<elseif $controller.gum1.choice is "respectable">>The cat pumps his fist. "Oh yeah! Knew it! Point for Gumball!"
"Do we really have to fight?" the fish says with a pout. "Maybe they're a sad and hurting soul who just needs a friend!"
"Yes, I agree," the rabbit says. "Getting into fights based on voices in your head is crazy. Like, literally."
"Hey, it's probably like, the will of the universe." The cat presses a hand to his breast. "I am merely its conduit."
The rabbit palms her face. "Alright, let's just get this over with."<<else>>"Wait, what?" the rabbit says, eyes boggling.
"Aha! See?" The cat points at you triumphantly. "THEY brought US here to fight in some weird gladiator game! Not me this time!"
"Or you shifted us into a world full of weird gladiator people," the rabbit shoots back.
"Uh, guys? Are we fighting them or what?" the fish says, looking nervous.
The cat snaps his fingers. "Oh, actually...! Do you remember, when we got here, we got that feeling we had to fight someone?"
"Ooohhh yeah!" the fish says, realization dawning. "If we fight this guy we can go back!"
The rabbit boggles at them. "So you're just going to do what a voice in your head tells you to?"
"Hey, it's probably like, the will of the universe." The cat presses a hand to his breast. "I am merely its conduit."
The rabbit palms her face. "Alright, let's just get this over with."<</if>>
<center><span class="btn">[[Begin!|Preparation][$scenario = "gum1"]]</span></center><br/>
>[[fite me|GUM1 fite]]<br/>
<<if $controller.gum1.introductions is 2>>
>[[Yup, I'm your opponent. It me.|GUM1 fite][$controller.gum1.choice = "respectable"]]<br/>
<</if>>
<<if $controller.gum1.this_time is true>>
>[[I brought you here. To fight me. Stop talking and fight me already.|GUM1 fite][$controller.gum1.choice = "reveal"]]<br/>
<</if>>
<<if ndef $controller.gum1.introductions>>
>[[Uh, what are you?]]<br/>
>[[Who are you guys?|GUM1 introductions]]<br/>
<<elseif $controller.gum1.introductions is 1>>
>[[Okay, WHO are you?|GUM1 introductions][$controller.gum1.choice = "rude"]]<br/>
<</if>>
<<if passage() is "GUM1 landing">>
>[['This time'?]]<br/>
<<elseif $controller.gum1.this_time isnot true>>
>[[What did you mean, 'this time'?|'This time'?][$controller.gum1.choice = "alt"]]<br/>
<</if>>
<<if ndef $controller.gum1.climb_attempt>>
>[[(Climb over the fence)]]<br/>
<</if>><<include "Gate">>
You find yourself in what appears to be a normal suburban backyard. A slotted wooden fence surrounds a square plot of bright green, slightly overgrown grass. A small toolshed, the wood somewhat warped, sits in one corner.
Your attention is drawn to three... beings...? that have just appeared in front of you. They all look like animals, but in the shape and stature of people... or so you think, but the more you look the more bizarre that shape and stature seems to be. They look like bobblehead dolls, huge round heads stuck on tiny square bodies and stubby limbs. Somehow, this doesn't seem to bother them at all, and to your amazement they're able to stand up straight as if their heads couldn't crush their entire bodies with their weight.
From left to right, they are... you're <i>pretty</i> sure they're a cat, a rabbit, and a... goldfish? You weren't looking closely at first, but now, yep, that is a person-sized fish with arms and legs. It... he? even has a tail, but no ventral or pectoral fins -- perhaps the human limbs took the place of those in whatever accident of magic or mad science that created this thing. His body is almost perfectly round, not the elegant serpentine form of an adult goldfish, giving the impression of a baby goldfish blown up to tremendous size. You wonder if he's a juvenile who will mature later, or if he's meant to look like this. He wears sneakers and long green socks, and... unfortunately, that just draws your attention to the fact that he doesn't appear to be wearing anything else. Eh, well, you suppose that's not really an issue with fish...
The rabbit is smaller than the others, though this is accomplished by downsizing its... her? body to even smaller proportions rather than shrinking that massive head. Her ears are so big she could probably hide in them. Her fur is bright pink, the color of bubblegum. She wears a white blouse, its neatness comically undercut by just how absurdly tiny it is on her. She's looking around with an odd, almost exasperated expression.
The last one you're pretty sure is a cat, but his fur is a bright neon blue you've never seen on any animal. Does he... dye it? Is that a thing cat-people do? You have no idea. Thankfully, unlike the fish he's wearing a full outfit of clothes, though pretty ordinary ones. You think his head is bigger than the others, even the fish, if that's even possible. His mouth nearly splits his face and his eyes must be the size of --
"Oh my gosh, why is this creeper staring at us?!" he yells, jolting you out of your thoughts. His voice is nasally and just beginning to deepen; you place his age somewhere between 10 and 12. He huffs and yells to the general area, "MOOO~OOM, there's a creepy stranger in the yard!"
"Uhh... Gumball?" The fish moves his head -- his giant, giant head -- around the cat, and points at one fence of the yard with apprehension. "I don't think she can hear you..."
As one, the animal-people turn to face the fence opposite the shed. You don't understand the significance, but their faces immediately turn grave.
To your surprise, the rabbit follows this with a nonchalant, "Oh. So you've got us stuck in another dimension again. Thanks, Gumball." Her voice is higher than the others', almost squeaky; between that and her smaller size, you guess she's younger than the other two. You guess. Maybe animal-people get smaller and higher-pitched as they age. You're not sure if you can assume anything here.
The blue cat sputters and acts affronted. "It wasn't me this time! Honest!"
It's only now that you notice there are no roads or landmarks past the fence, just a blank green expanse, and the vague suggestion of houses on the horizon. It's like the <i>idea</i> of a suburb, but only as a backdrop for this single yard.<<nobr>>
<<if $achievements.get("Watterson Wrecker") < 1>>
<<run $achievements.set("Watterson Wrecker",1)>>
<</if>>
<<if $achievements.get("Thicker Than Blood") < 1>>
<<run $achievements.set("Thicker Than Blood",1)>>
<</if>>
<<if $achievements.get("Thinner Than Water") < 1>>
<<run $achievements.set("Thinner Than Water",1)>>
<</if>>
<<if $achievements.get("Princess With A Thousand Enemies") < 1>>
<<run $achievements.set("Princess With A Thousand Enemies",1)>>
<</if>>
<</nobr>>You're standing in a suburban backyard with no suburb and no house to be the backyard of. It's a clear, sunny day.
Across from you is a blue cat person<<if $controller.gum1.introductions is 2>> ("Gumball", apparently)<</if>>, a pink rabbit person<<if $controller.gum1.introductions is 2>> ("Anais")<</if>>, and a goldfish person<<if $controller.gum1.introductions is 2>> ("Darwin") <</if>>who for some reason feels the need to wear socks but not anything else.<<nobr>>
<<set $controller.gum1.scene++>><</nobr>><<set $controller.gum1.introductions to 1>><<include "GUM1 hub">>
<b>"Uh, what are you?"</b>
The boy snorts and looks taken aback. "'What are we?' Uh, people, duh? Why, what are <i>you</i>, with that weird lump in the middle of your face? Your tiny, tiny face? Ugh, it's making me cringe the more I look at it! Only a really dumb tiny brain would fit in there -- OH WAIT."
"Gumball, be nice!" the fish admonishes. "They're probably some poor alien who's lost and scared!"
"Guys, they're obviously a human," the rabbit says. "I know there aren't many in Elmore, but surely you've seen them in books?"
"Oh, now I remember!" the fish says, eyes going wide. "But I thought they were extinct!"
The rabbit's eye twitches. "Darwin, they're the dominant species on the planet."
"Then why don't we ever see any?"
"I still can't get over that head," the cat says, gawking at you like you're a zoo attraction. "It's so... <i>wrong</i>."
"The head is very disturbing," the rabbit agrees.<<set $controller.gum1.climb_attempt to true>><<include "GUM1 hub">>
You try to climb over the fence, but when you try to hook your foot into the slots, it hits something. You try again and clearly see that it appears to be stopped by thin air. Well, no matter... the fence is short enough you can probably jump it. You step back, crouch, and...
Yep. Definitely an invisible wall. The boy clicks his tongue as you groan on the ground. "Don't you play video games?" he says. "You should know easily-hopped fences <i>always</i> have invisible walls!"
"Wait, we're in a video game?" the fish says, having a little trouble keeping up. "Again?"
"I hate to say this, but that's actually looking pretty likely," the rabbit says with some annoyance. "Would explain why everything past the fence looks like a bad background render," she adds, squinting into the distance.<<set $controller.gum1.this_time to true>><<include "GUM1 hub">>
<<if $controller.gum1.choice is "alt">><b>"What did you mean, 'this time'?"</b><<else>><b>"'This time'?"</b><</if>>
"Oh, come on!" the cat throws his hands in the air. "Now random strangers are judging me too?"
"He got a cursed video game that trapped us inside," the rabbit explains nonchalantly, like that's an everyday occurance. "We had to beat it to get free."
"Oh! Oh!" the fish waves his hand excitedly. "And when we tried to throw out our old puppets, he got us trapped in the puppet dimension!"
"Hey, that one was all you!" the cat snaps back. "I <i>told</i> you to throw them out, but <i>noooo</i>, you just had to play with them and get possessed!"
"For once I'm glad I have no idea what you're talking about," the rabbit sighs.<<include "GUM1 hub">>
<<if $controller.gum1.choice is "rude">><b>"Okay, WHO are you?"</b>
"See, was that so hard?" the cat croons with mock sweetness.<<else>><b>"Who are you guys?"</b><</if>>
"I'm Darwin!" the goldfish chirps enthusiastically. "This is Anais--" He points to the rabbit, who nods curtly. "--and this is my best friend Gumball!" he finishes, motioning to the blue cat.
"We're the Watterson family," Gumball says, inspecting his nails like you're not worth his attention. "You might've have heard of us."
"Hey, hey, they might have heard of <i>you</i>," Anais says, waving her hands defensively. "Don't drag me into your Dangerous Duo stuff!"
"Too bad, you're here now!" Gumball replies smugly, then leans down to grin at her. "Embraaace the dangerousity, Anais! You know you want to!"
"Anyway," Anais says, pushing him away, "this <i>looks</i> like our backyard, but our house isn't here, and our neighborhood doesn't seem to be either. I speculate we're in some sort of pocket dimension." She glares accusingly at the empty expanse. "A low-budget one."
Gumball snaps his fingers, and everyone looks to him. "Oh! Do you remember, when we got here, we heard something, like... we were supposed to fight someone?" He turns his eyes to you, and your puppets, then smiles mischeviously. "<i>Hmmm.</i>"<<nobr>>
<<set $controller.gum1.introductions to 2>>
<</nobr>>You're standing in a battlefield covered in giant weapons and, strangely, giant strawberries as well.
In the rosy light of dawn you can see four figures: a porcelain doll of a woman with a pearl in her forehead, a short and stocky woman with an amethyst in her heart, and a stoic, imposing woman with garnets in her hands. A small boy with a <<if $controller.su1.introductions is true>>rose quartz<<else>>pink gem<</if>> in his gut peeks out behind them and waves at you. He's the only one with what you'd describe as normal human body proportions.<<nobr>>
<<set $controller.su1.scene++>><</nobr>><<include "Gate">>
You find yourself in a battlefield.
It's very old, its battle long over, but it has left unmistakable scars, stark lines cut into the turf that may never heal.
The titanic weapons littering the place are another clue. From the thick vines crawling around them you'd guess this battlefield is a century old at least, but the weapons remain the deep, shiny black of unrusted metal. A special alloy, perhaps? You've heard of stainless steel, but you're pretty sure even that doesn't last forever.
The place is also filled with strawberries. <i>Gigantic</i> strawberries, both growing off the vines and buried in the dirt. Were they once harvested by the giants who fought with those weapons?
In the rosy light of dawn, you see four figures approach from behind a giant sword. One of them, a short and pudgy little boy, is running ahead and jumping over the vines like he's having the time of his life, laughing and giggling. His hair is dark and curly, and his skin is light brown. He's wearing a bright red T-shirt with a yellow five-pointed star on the chest. When he jumps, the shirt flutters up to reveal a round pink gemstone embedded in his stomach, where his bellybutton should be.
The other three are much taller, of adult proportions. No -- strike that. As they get closer, you see their proportions are subtly inhuman -- too long in some areas, too wide in others. They watch the boy carefully as he horses around.
You see one pull him back when he wanders too far off the path, murmuring something you can't hear. She's very tall -- you think her legs must take up at least half her total height -- and thin as a reed. Her arms and legs are all sharp angles and long proportions, almost putting you in mind of a stick figure, though her hands look normal enough. Well, except for... her skin is as white as porcelain, completely devoid of color. The rest of her has color, at least -- her hair is peach-pink, and brushed back into a conical shape, looking much like the strawberries littering the battlefield. She is wearing a pale blue leotard emblazoned with that same yellow star, flared at the waist with yellow shorts beneath. A huge silk bow is tied around her torso, the same blue as her dress. Her nose is sharp and pointed, reminiscent of a bird's beak... and on her forehead, set into her skin like it's meant to be there: a large, oblong white pearl.
Another one is watching the boy as well, though where the white one frets, she just laughs and cheers him on. This one is almost her polar opposite: almost half her height, but filled out with stocky arms and legs. This one's skin is purple, and her grey-blue hair is an absolute mane, wider than her own body and nearly touching the ground. This one's face is squashed and round, with a pig-like nose that snorts loudly when she laughs. She's wearing black pants with star patterns cut into the shins, and a sleeveless grey shirt with one strap hung low down her arm. The shirt's neckline dips low to reveal the top of a dark purple gem on her chest -- an amethyst.
You realize with a start that the last figure has been watching you this whole time. Her eyes are hidden by reflective sunglasses that drop over her eyes like icicles, but you can feel her gaze all the same. This one is almost entirely leg -- her thighs are enormous, so huge you wouldn't be surprised if they could kick through solid steel. They're split almost but not quite down the middle, one side maroon and the other pitch black. Her torso is comically small in comparison, nearly spherical, bulbous like some kind of robot. She has a star symbol there, too -- but it's white, and surrounded by a pink outline that gives the impression of a powerful supernova. Her hair is a gigantic afro, so cubical it could have been hewn from stone. Her arms are incredibly thin, even stickier than the white woman, jutting from bulbous red shoulder pads to end in oddly-proportioned hands, the fingers too long and too big. Dark red gems -- garnets -- are set into each palm. Her exposed skin -- or what you assume is exposed skin -- is a similar color, the deep maroon of fired earth.
"This place is dangerous for humans," she says sharply, jolting you out of your thoughts. "You shouldn't be here." The others turn to look at her, then you.<<nobr>>
<<if $achievements.get("Gem Smasher") < 1>>
<<run $achievements.set("Gem Smasher",1)>>
<</if>>
<<if $achievements.get("Pearl Connoiseur") < 1>>
<<run $achievements.set("Pearl Connoiseur",1)>>
<</if>>
<<if $achievements.get("Garnet Collector") < 1>>
<<run $achievements.set("Garnet Collector",1)>>
<</if>>
<<if $achievements.get("Amethyst Curator") < 1>>
<<run $achievements.set("Amethyst Curator",1)>>
<</if>>
<</nobr>><br/>
<<if ndef $controller.su1.postbattle>>
>[[fite me|prefite]]<br/>
<<if $controller.su1.introductions isnot true>>
>[[Who are you guys?|SU1 introductions]]<br/>
<</if>>
<<if $controller.su1.introductions is true>>
<<if $controller.su1.asked_abt_steven isnot true>>
>[[So is the kid your... son? Nephew? ...Pet?]]<br/>
<</if>>
<<if $controller.su1.asked_abt_steven is true and $controller.su1.asked_abt_rose isnot true>>
>[[Why isn't your leader with you?]]<br/>
<</if>>
>[[I'm what you're supposed to fight!]]<br/>
<<if ndef $controller.su1.reveal>>
>[[I am the villain you have been seeking for so long -- the beastmaster of the gem monsters! Tremble before me!]]<br/>
<</if>>
<<if passage() is "I am the villain you have been seeking for so long -- the beastmaster of the gem monsters! Tremble before me!">>
>[[Oh really? Should I tell him what you've been hiding from him? Should I tell him what those 'monsters' REALLY are?]]<br/>
<</if>>
<<if ndef $controller.su1.homeworld>>
>[[HA! You fell for my trap! I'm a Homeworld soldier, and now I'm going to shatter you traitors!]]<br/>
<</if>>
<</if>>
<<if $controller.su1.fite >= 2>>
>[[What do you think this is, a dating sim? Stop talking and fight me already!|prefite][$controller.su1.choice = "meta"]]<br/>
<</if>>
<<if $controller.su1.fite >= 4>>
>[[Hey!! I'm not fragile! I'll prove it!! FIGHT ME!!!|prefite]]<br/>
<</if>>
<<if $controller.su1.steven_grabbable is true>>
>[[(Attack the small child.)|SU1 fite][$controller.su1.choice = "evil"]]<br/>
<</if>>
<<else>>
>[[Return to the hub|Hub]]<br/>
<<if $steven_defeated is true>>
<<if ndef $controller.su1.thief>>
>[[(Take the gems for yourself)]]<br/>
<</if>>
<<if ndef $controller.su1.pry_gem>>
>[[(Pry the rose quartz from Steven's belly)]]<br/>
<</if>>
<<if ndef $controller.su1.shattering>>
>[[(Shatter the gems)]]<br/>
<</if>>
<</if>>
<</if>><<set $controller.su1.fite++>><<include "SU1 hub">>
<<if $controller.su1.choice is "meta">><b>"What do you think this is, a dating sim? Stop talking and fight me already!"</b><<else>><b>"fite me"</b><</if>>
<<switch $controller.su1.fite>>
<<case 1>>They all look confused for a moment. Then <<Garnet>> says, "No."<<case 2>><<Pearl "capital">> just laughs, a little strangely. "Why would we fight you? We don't want to hurt you!"
"Yeah!" <<Steven>> chimes in. "I don't wanna see you guys have to fight! Are... are you upset? Did we do something wrong? I'm sure we can work something out!"<<case 3>><<Amethyst "capital">> snorts, and gives you a smirk. "Dude, I like your attitude, so I'm just gonna be nice and tell ya: you wouldn't last five minutes against us." She leans her head back into her hands. "We're pretty awesome."
<<Steven "capital">> steps forward, arms outstrenched. "We don't need to fight!" he says cheerily. "C'mon, let's talk it out! I'm sure we can be friends!"<<set $controller.su1.steven_grabbable to true>><<case 4>>"We already told you, we're not going to fight you!" <<Pearl>> says, with more exasperation this time. Her gaze softens, and she looks at you with infuriating pity. "Humans are such poor, fragile creatures... I could never forgive myself if something happened to you!" She shakes her head. "This place must be doing something to your mind. Come with us and we can help you back home."
<<Garnet "capital">> grumbles something to herself and places a hand to her forehead.<<default>><<goto "SU1 fite">><</switch>><<if $controller.su1.choice is "evil">>Your puppets won't attack outside of a battle, but that limitation doesn't apply to you. You lunge forward to grab the little boy--
You don't even see what happens. You just feel a <i>woosh</i> of air, and suddenly <<Garnet>> is standing where the boy was. You barrel into her awkwardly, and she shoves you away, so hard you're sent sprawling. "Steven, get back!" she snaps. "This person is dangerous!" He warbles and looks like he's about to cry, but obediently hides behind her.
"Alright, that's it!" <<Amethyst>> snarls, her previous amiability wiped off her face in an instant. In a sharp motion she reaches into the gem in her chest, and pulls out a black three-tailed whip tipped with purple crystals. "You mess with Steven, you mess with ALL of us!"
You look over, and <<Pearl>> has already drawn a spear from somewhere. The shaft is white as ivory, and the head is tipped with a sea-blue glass blade. Her expression toward you is cold now. "We'll try not to hurt you..." she says, leveling her spear, "...too much!"
<<Garnet "capital">> flicks her wrists, and with a flash of light, her hands are suddenly encased in huge metal gauntlets. "Gems, to battle!"<<else>><<Pearl "capital">> puts her hands on her hips. "For the last time," she says crossly, "there will be no fighting here! Now come along and--"
"Okay," <<Garnet>> says flatly.
<<Pearl "capital">>'s eyes go wide and she wobbles for a moment, before sputtering, "Wha -- huh -- buh, but Garnet, you said you didn't want to fight them!"
"I don't." She sighs. "But I've checked every possibility, and it always ends in us fighting. They just... really want to fight us." She shrugs. "There's no other way out of this, so..." She crouches into a battle stance, and with a flash of light, her hands are suddenly encased in huge metal gauntlets.
"Awright!" <<Amethyst>> yells, and places a hand to her chest. Her gem glows, and she pulls from it a black three-tailed whip, tipped with purple crystals. "Let's show this joker who's boss!"
"But Garnet, they're only humans!" <<Pearl>> protests, panic edging into her voice. "If we use our powers against them, they could be permanently injured!"
"Ooh! Ooh!" <<Steven "capital">> hops from one foot to the other, stars in his eyes. "Gem fight! Gem fight! Oh this is gonna be so cool!"
"Steven, they're not gems, they're humans!" <<Pearl>> huffs. "This could be really dangerous!"
"They're tougher than they look," <<Garnet>> says, not taking her eyes off of you. "You can be gentle if you like, but we're still fighting them! That's an order!"
<<Pearl "capital">> looks defeated. "If you say so..." In a flowing, elegant motion, she leans back, and a turquoise blade sprouts from the gem on her forehead. She pulls it out and twirls it, revealing it to be a spear. "But let's keep this orderly, okay?"<</if>>
<center><span class="btn">[[Begin!|Preparation][$scenario = "su1"]]</span></center><<include "SU1 hub">>
<b>"Who are you guys?"</b>
"We are the Crystal Gems." The red woman raises her palms, giving you a clear view of the gemstones. "Garnet."
The purple woman pulls her shirt down slightly, showing off the gem in her chest. "Amethyst."
The white woman takes a deep, elegant bow, prominently displaying the pearl on her forehead. "And Pearl."
"And Steven!" the boy chirps, running up to you and spreading his arms like a superhero. His childish exclamation is jarring after the measured, almost melodious voices of the women. He lifts his shirt to give you a clear view of his gem, which you can now recognize as a rose quartz. "I'm a Crystal Gem too!" He makes it sound like that's the greatest thing in the entire world.
Pearl smiles and pats him on the head. "Yes, that's right, Steven!" she says in the tone of a proud parent. Steven glows under her praise.
"We are sworn to protect humanity and the planet Earth," the woman identified as Garnet explains. "We were called here to face a terrible danger... but we have not found it yet. You should return to safety, before it finds you!"<<nobr>>
<<set $controller.su1.introductions to true>>
<<set $controller.su1.steven_grabbable to true>>
<</nobr>><<set $controller.su1.asked_abt_steven to true>><<include "SU1 hub">>
<b>"So is the kid your... son? Nephew? ...Pet?"</b>
Pearl visibly bristles are your question. "Steven is the son of our leader, Rose Quartz," she says flatly, as if reading off a script. "He inherited her gem and her powers, but has an organic body. We are training him so he can assist us in our mission."<<set $controller.su1.asked_abt_rose to true>><<include "SU1 hub">>
<b>"Why isn't your leader with you?"</b>
Something complex flashes across each of the gems' faces, and none of them seem able to meet your gaze.
"That information isn't relevant to this situation," Garnet says, eventually. "It is imperative you let us escort you away from this area."<<include "SU1 hub">>
<b>"I'm what you're supposed to fight!"</b>
"You aren't," Garnet says immediately. Amethyst snorts with laughter, and even Pearl can't hold back a chuckle.
"You must be thinking of someone else," Pearl tells you condescendingly. "Or someone is playing a very mean joke on you! We have no quarrel with humans."<<set $controller.su1.fite++>><<include "SU1 hub">>
<b>"I am the villain you have been seeking for so long -- the beastmaster of the gem monsters! Tremble before me!"</b>
The gems' mouths hang open, too baffled to even speak. The boy laps it up though, gasping with theatrically perfect shock. "You mean -- all this time -- a <i>person</i> was controlling the monsters?! Oh no! Why would you do that???"
"They're lying, Steven," Pearl tells him with clear annoyance. "The--" and there's an odd hesitation before she says, "--monsters can't be controlled. Certainly not by a human! They're just telling stories." She glares pointedly at you. "We're not going to fight them."<<set $controller.su1.reveal to "attempted">><<include "SU1 hub">>
<b>"Oh really? Should I tell him what you've been hiding from him? Should I tell him what those 'monsters' //really// are?"</b>
In an instant, a spear is in Pearl's hands. "HOW DO YOU KNOW TH--"
"PEARL!" Garnet yells sharply, jarring Pearl like she's been physically struck. "They're just saying stuff to get a rise out of us! Don't fall for it!"
Steven, unconcerned, looks up at you with stars in his eyes. "You know more about the gem monsters? Tell me, tell me, I wanna know!"
Pearl and Amethyst share a glance, filled with utter panic. Even Garnet looks tense.
<i>Were</i> you bluffing? Or do you really know? Type your answer in the field below, and press "Enter" to say it...
<<textbox "$answer" "" "Mystery of the Gem Monsters">>
<i>[You only get one shot at this. A simple answer will suffice.]</i><<include "SU1 hub">>
<b>"<<print $answer>>"</b>
<<set $answer = $answer.toLowerCase()>>
<<if $answer.includes("corrupted gems") or $answer.includes("used to be gems") or $answer.includes("corrupted by the diamonds")>><<set $controller.su1.reveal to "success">>The gems gasp in unison, unable to hide their shock. Steven's eyes go wide.
"Y-y-you're lying!" Pearl says, very slightly more on the ball this time. "Yes, you're lying! Steven, they're just trying to--"
"Oh, I thought it might be something like that."
The nonchalance in Steven's voice freezes Pearl mid-rant. Pearl's face fights through a series of expressions before settling on abject confusion. "Wh... what do you mean?" she asks him.
Steven lifts a finger to his chin thoughtfully. "I mean... I was thinking about it, and they all have gems just like you, and they all have magic powers just like you... It makes sense!" He shrugs and smiles innocently.
Pearl casts for help, but the others avert their gazes and look awkward. Finally, she sighs and pats Steven on the head. "I'm sorry we didn't tell you. It's just..." She threads her fingers together and looks away. "We'll explain everything after this, okay?"
Steven nods, and Pearl pointedly pulls him away from you.<<set $controller.su1.steven_grabbable to false>>
"Hey, so quick question, <i>how the heck do you know that?!</i>" Amethyst yells, pulling her hair for effect.
"Doesn't matter," Garnet says before you can respond. "Human, if you know what it is we do, then you know this place is dangerous. Let us escort you to safety."<<else>>Steven tilts his head. "Huh? I don't get it." The gems visibly relax, and Pearl snatches him away before you can do any more damage.<<set $controller.su1.steven_grabbable to false>>
"See, Steven, this is why you shouldn't trust strangers," Pearl admonishes gently, extending a finger like a teacher.
"Aww." Steven pouts. "I just want to know more about gem stuff! Will <i>you</i> tell me?"
"Yes, later," Pearl promises. She looks at you and her expression is pleasant again, but this time the smile looks fixed. "Now then, where were we?"<<set $controller.su1.reveal to "failed">><</if>><<set $controller.su1.fite++>><<include "SU1 hub">>
<b>"<<print passage()>>"</b>
Pearl and Amethyst actually look thrown, but Garnet shuts you down with a flat, "No, you're not."
"Huh? 'Home world'? What are they talking about?" Steven says, scratching his head.
"Nothing you need to worry about, Steven," Pearl says quickly.
"W-wait," Amethyst says, not taking her eyes off of you. Her easy confidence has vanished, replaced with obvious apprehension. "Are you sure, Garnet? How do you know? I-I mean, those things back there, they haven't been talking at all, maybe they're robots or something?"
Garnet lets out a surprisingly emotional huff, clearly exasperated. "Alright, then. If you're from Homeworld, show us your gem."
You can't, of course.
Garnet smirks infuriatingly. "See? Just a pretender."<<set $controller.su1.homeworld to true>><<set $controller.su1.thief to true>>You quickly scoop the gems up into your pack. You notice that Garnet's gems have changed colors, into the brighter red of a ruby and the deep blue of a sapphire. Interesting, but not a problem -- they'll still fetch a pretty penny!<<set $controller.su1.pry_gem to true>>You inspect Steven's belly carefully. The gem does appear to be real; it has the luster of a true quartz, not the hollow transparency of a glass fake, and feels sturdy enough when you tap it. The flesh around it seems totally normal -- there is none of the scarring or inflamation you would expect if the gem had been artificially grafted to his body. Try as you might, you can't see any gap at all between his skin and the gem, in fact; the two appear totally seamless. The gem really does seem to be a natural part of him, strange as that may be.
Not that that's your concern. You order Rogue to hand you a chisel and a scalpel -- you're not sure which one is more appropriate here.
Unfortunately, you quickly find it to be a moot point. Your scalpel glides off Steven's skin and even hair like it's made of rubber, and your chisel can't make even the smallest fracture in the gem no matter how hard you hammer. Seems like hurting people outside of battle is against the arena's rules. You grudgingly concede defeat.Do you have a preference?
>[[Shatter Pearl|The Shattering][$controller.su1.choice = "Pearl"]]
>[[Shatter Garnet|The Shattering][$controller.su1.choice = "Garnet"]]
>[[Shatter Amethyst|The Shattering][$controller.su1.choice = "Amethyst"]]
>[[Shatter Steven|The Shattering][$controller.su1.choice = "Steven"]]
>[[Shatter them all!|The Shattering][$controller.su1.choice = "all"]]<<set $controller.su1.shattering to true>>You gleefully grab hold of Fighter's warhammer. Though you heave with the effort, you successfully lift it, and bring it crashing down on--
As soon as it touches the gem, the hammer is flung back with a comical <i>boi-oi-oooing!</i> noise.
Oh, right. Killing people is against the rules.<<back>>
Tell me if your experience significantly diverges from the intended "feel" of the fights.
Battles in general are supposed to be pretty involved affairs; major set pieces rather than speedbumps. They should take pretty long to win but not so long you get bored.
<b>Adventure Time:</b> Intended as a "flunky boss" setup. Bubblegum is the major opponent, but you are intended to defeat the weaker Finn and Jake before taking her on.
<ul><li>Bubblegum provides a support role by using a powerful full-party buff every 3 rounds and safeguarding Finn and Jake from status effects. She may also afflict you with status effects or throw a grenade, which requires 1 turn of preparation first. Occasionally she may use a regular attack, which is very weak and intended as a breather. After Finn and Jake go down, she switches to using a stronger self-buff and stops using the status ailment safeguard.</li>
<li>Jake is a dual-class rogue/tank. He uses some of Rogue's stun and debuff abilities, as well as Fighter's protection abilities. He has a special ability where he can spend a turn growing big, then attack for double damage.</li>
<li>Finn just attacks every turn. Occasionally he may charge like Fighter can.</li></ul>
<b>Gravity Falls:</b> Only two opponents, so they are intended to be slightly tougher individually to make up for it. Key feature is that the twins evolve into a stronger form after you defeat one. This is meant to be a "pick your poison" scenario, with each one emphasizing their most dangerous characteristics in their evolved forms. Currently these stronger forms only change attacks, not stats, but that may change if you feel they don't pack enough punch as-is.
<ul><li>Dipper is support role. Since there's no healing this means buffs, and inflicting debuffs on you. He can also dispel your buffs, but he's not supposed to do this if you have no buffs to dispel; please tell me if you see any weird behavior with that. He is meant to become more well-rounded in his Big Dipper form, with an additional attack spell and a greater chance of using attack abilities, but still having a focus on buffs and debuffs.</li>
<li>Mabel is the attacker. She has attacks for inflicting damage-over-time as well as two that are just pure damage. She can also inflict Dizzy, but I am not sure if that is too close to a rogue-ish role, and I might give that capacity to Dipper. Her Mega Mabel form makes her attacks target the whole party (though they are made weaker to compensate), and makes her single-target attack stronger. I may nerf this, as full-party Dizzy in particular is pretty devastating and can shut you down for pretty much the whole battle.</li></ul>
<b>Amazing World of Gumball:</b> Intended to be wacky and highly luck-based, but still relatively easy overall. Each character displays special behavior if they're the only one remaining.
<ul><li>Gumball is the rogue. Can debuff, stun, and hide. He's where the luck comes in: his special ability is to use a random item, which can do nothing, attack a single target, give him a buff, hurt everyone including his allies, or be a really strong attack against you.</li>
<li>Anais is effectively the mage. Her behavior is very simple: she spends a turn making a bomb, then she uses it. She can use the same bomb items as you: grenade, flamethrower, gas bomb, calamity bomb, and a chaff grenade that inflicts Dizzy. She rarely uses a weak regular attack as a breather. Her Defense is extremely poor, so players are encouraged to target her first.</li>
<li>Darwin is a dual-class fighter/rogue. He has some of the debuff abilities Gumball lacks, and can also protect others (or he will once I figure out how to implement it).</li></ul>
<b>Steven Universe:</b> This is intended to be the hardest battle, on account of them having actual battle experience and such. Currently this is not actually true, because I'm getting most of their abilities from the actual Steven Universe video game, where they had far fewer abilities than I've given the other characters. (Possibly they have more in Save the Light, idk buy my a PS4 for Christmas so I can find out.) Gimmick is that they have Steven as an additional fighter, but he just gives out weak buffs. It shouldn't be possible to harm Steven at all until all the gems are defeated; area attacks should skip him and there should be a special event where the gems take hits for him if you try to target him directly.
<ul><li>Steven either buffs one gem (in their weak stat because I think that's cute), or gives them a bubble shield that completely nullifies one hit. (Little exploit: that's one <i>hit</i>, not one action, so Rogue's multi-hit attacks can break it and still do damage.)</li>
<li>Garnet is the fighter. She punches you a lot and can inflict a defense debuff and that's pretty much it.</li>
<li>Pearl is...a dual-class fighter/rogue maybe? She inflicts damage-over-time and stun, and has multi-hit and piercing attacks.</li>
<li>Amethyst is supposed to be a mage/rogue hybrid but I'm not too sure if I've got the mage part down yet. Her regular attack hits everyone, she can inflict an attack debuff, and she has a slightly stronger attack that automatically knocks someone down. I think she needs more attacks. Poison or another debuff would be good for taking advantage of her high Special but I can't think of any thematically fitting attacks. halp?</li></ul>
You can also tell me your experience with the pre-battle cutscenes. If you're familiar with the shows, were the characters in-character? If not, did you feel you were adequately orientated? Are there any other dialogue choices you'd have liked to make?
Also, help me test damage formula balance. Play with both of these models and tell me which one feels better.
Current damage formula:
<div class="formula" id="thing"><<switch $formula>><<case "base weighted">>[($base + Attacker's Attack) * weight] - Defender's Defense<<case "base unweighted">>$base + (weight * Attacker's Attack) - Defender's Defense<</switch>></div>
<<link "Use base unweighted formula">><<set $formula = "base unweighted">><<set $knife_weight = 0.2>><<replace "#thing">><<switch $formula>><<case "base weighted">>[($base + Attacker's Attack) * weight] - Defender's Defense<<case "base unweighted">>$base + (weight * Attacker's Attack) - Defender's Defense<</switch>><</replace>><</link>>
<<link "Use base weighted formula">><<set $formula = "base weighted">><<set $knife_weight = 0.8>><<replace "#thing">><<switch $formula>><<case "base weighted">>[($base + Attacker's Attack) * weight] - Defender's Defense<<case "base unweighted">>$base + (weight * Attacker's Attack) - Defender's Defense<</switch>><</replace>><</link>>/* Story-based widgets, e.g. text modifiers and cutscene triggers. */
<<widget "Pearl">>
<<if $controller.su1.introductions is true>>
Pearl
<<else>>
<<if $args[0] is "capital">>T<<else>>t<</if>>he pearl woman
<</if>>
<</widget>>
<<widget "Garnet">>
<<if $controller.su1.introductions is true>>
Garnet
<<else>>
<<if $args[0] is "capital">>T<<else>>t<</if>>he garnet woman
<</if>>
<</widget>>
<<widget "Amethyst">>
<<if $controller.su1.introductions is true>>
Amethyst
<<else>>
<<if $args[0] is "capital">>T<<else>>t<</if>>he amethyst woman
<</if>>
<</widget>>
<<widget "Steven">>
<<if $controller.su1.introductions is true>>
Steven
<<else>>
<<if $args[0] is "capital">>T<<else>>t<</if>>he little boy
<</if>>
<</widget>>
<<widget "Nicole">>
<<if $controller.gum2.introductions > 0>>
<<set _text to "Nicole">>
<<else>>
<<set _text to "the woman">>
<<if $args[0] is "cap">><<set _text = _text.toUpperFirst()>><</if>>
<</if>>
<<print _text>>
<</widget>>
<<widget typewriter>>
<!-- Create a SPAN with an ID -->
<span id="typewriter"></span>
<!-- In SugarCube, arrays start at 0 -->
<<set _textArrayLength to 0>>
<!-- Repeat every second -->
<<repeat $args[1]>>
<!-- Test if textArrayLength is greater than length of $args[0] -->
<<if _textArrayLength gte $args[0].length>>
<<stop>>
<<else>>
<!-- Append the current position to the existing characters -->
<<append "#typewriter">>$args[0][_textArrayLength]<</append>>
<!-- Update the length -->
<<set _textArrayLength++>>
<</if>>
<</repeat>>
<</widget>>
<<widget "specialcheck">>
/* Called at the battle screen, checks for special circumstances e.g. avengeance effects */
<<switch $scenario>>
<<case "gf1">>
<<if $enemies.length > 1>> /* This checks that a transformation hasn't already happened */
<<if $enemies[0].dead>> /* If Dipper is defeated first, see Mega Mabel cutscene */
<<goto "Mega Mabel">>
<<elseif $enemies[1].dead>> /* If Mabel is defeated first, see Big Dipper cutscene */
<<goto "Big Dipper">>
<</if>>
<</if>>
<<case "at1">>
<<if $enemies[0].dead is true and $enemies[2].dead is true and $event is false>>
<<goto "Bubblegum shift">>
<</if>>
<<case "gum1">>
<<if $event is false>>
<<if $enemies[0].dead is true and $enemies[1].dead is true>>
<<goto "Darwin last survivor">>
<<elseif $enemies[1].dead is true and $enemies[2].dead is true>>
<<goto "Gumball last survivor">>
<<elseif $enemies[0].dead is true and $enemies[2].dead is true>>
<<goto "Anais last survivor">>
<</if>>
<</if>>
<<case "su1">>
<<if $enemies[0].dead is true and $enemies[1].dead is true and $enemies[2].dead is true and $event is false>>
<<goto "Steven alone">>
<</if>>
<</switch>>
<</widget>>As you pass through, the feeling suddenly crystalizes: it's the dread of seeing your parent when you know you've been naughty.
<<include "Gate">>
You find yourself in the parlor of what appears to be a typical suburban home. A nondescript carpet lines the floor, and a wide couch sits facing a large TV. The wallpaper suggests something vaguely floral.
Standing across from you is another anthropomorphic blue cat, but this one looks nothing like Gumball. This cat-person is much taller -- you think adult height, if those standards even apply here -- and wears a white blouse with a gray skirt. Her eyes bore into you with frightening intensity; you feel like a frightened, helpless little kid, all your power and securities stripped away to reveal all the weaknesses at your core. Then the gaze is gone, and you let out a breath you didn't know you were holding. The woman does the same to all your puppets, eyes flicking over each of them in turn. The whole process happens almost instantly, but it feels so much longer.
"Oh, um, hello." She smiles and says it in a friendly voice, but her body language still betrays clear tension and suspicion. "You'll have to forgive the state of the house. I wasn't expecting visitors today! Could you just leave those, uh..." She looks over your puppets again, pointedly lingering on their prominent belts of weaponry. "...things... by the door, please? Someone could get hurt."<<nobr>>
<<if $achievements.get("Orphaner") < 1>>
<<run $achievements.set("Orphaner",1)>>
<</if>>
<</nobr>><br/>
<<if $controller.gum2.postbattle isnot true>>
>[[fite me|GUM2 prefite][$controller.gum2.choice = "fite me"]]<br/>
<<if passage() is "GUM2 landing">>
>[[Yeah, that's the idea. Fight me!|GUM2 prefite][$controller.gum2.choice = "Yeah, that's the idea. Fight me!"]]<br/>
<</if>>
>[[I'm a gladiator from another world. Fight me!|GUM2 prefite][$controller.gum2.choice = "I'm a gladiator from another world. Fight me!"; $controller.gum2.alien = true]]<br/>
<<if $controller.gum2.fite > 0>>
>[[I fought your kids already, you know.]]<br/>
<</if>>
<<if $controller.gum2.threat isnot true>>
>[[I'm buddies with your boss. Fight me or you're fired!][$controller.gum2.choice = "I'm buddies with your boss. Fight me or you're fired!"; $controller.gum2.threat = true]]<br/>
<</if>>
<<if $controller.gum2.insult>>
>[[H-hey! Just so you know, I don't design the rooms, okay? It's the arena master who's lazy!]]
<</if>>
<<if ndef $controller.gum2.introductions>>
>[[Who are you?|GUM2 introductions][$controller.gum2.choice = "Who are you?"]]<br/>
<<elseif $controller.gum2.introductions is 1>>
>[[Watterson? You're the mother, then?][$controller.gum2.choice = "Watterson? You're the mother, then?"]]<br/>
<</if>>
<<if $controller.gum2.fite > 1>>
>[[(Admit defeat and return to the hub)]]
<</if>>
<<else>>
<<if ndef $controller.gum2.woah and ndef $controller.gum2.checked>>
>[[Woah, is she dead?]]<br/>
<</if>>
<<if ndef $controller.gum2.checked>>
>[[(Check her pulse)]]<br/>
<</if>>
>[[Return to the hub|Hub]]<br/>
<</if>>You're in a suburban home. You're sharing the space with <<if $controller.gum2.introductions isnot 2>><<if $controller.gum2.introductions is 1>>Nicole, <</if>>a woman who appears to be the same "species" as Gumball: an anthropomorphic cat with neon blue fur.<<else>>Nicole, Gumball's mother. She appears to be the same "species" as him: an anthropomorphic cat with neon blue fur.<</if>><<nobr>>
<<set $controller.gum2.scene++>><</nobr>><<if $controller.gum2.fite > 9>><<include "GUM2 prefite">>
It doesn't look like she's in the mood to answer any of your questions anymore.<<else>><<include "GUM2 hub">><<set $controller.gum2.introductions to 1>>
<b>"Who are you?"</b>
"Oh, where are my manners?" the woman says with a little laugh. "I'm Nicole. Nicole Watterson." She smiles, but it doesn't reach her eyes. "Now... may I ask who <i>you</i> are, by any chance?"<</if>><<if $controller.gum2.fite > 9>><<include "GUM2 prefite">>
It doesn't look like she's in the mood to answer any of your questions anymore.<<else>><<include "GUM2 hub">><<set $controller.gum2.introductions to 2>>
<b>"<<print passage()>>"</b>
Nicole chuckles. "Ah, sounds like you've met my sons. Don't worry, I'll sort them out if they've been causing trouble."<</if>><<set $controller.gum2.fite++>><<include "GUM2 hub">>
<b>"<<print $controller.gum2.choice>>"</b>
<<nobr>>
<<switch $controller.gum2.fite>>
<<case 1>>
<<Nicole "cap">> stares at you in bafflement for a second, then shakes her head with a soft chuckle. "Oh, you're one of <i>those</i>," she says, voice dripping with poorly-disguised contempt. "Sorry, but I don't do that anymore. I have to set a good example for my family."
<<case 2>>
"No," <<Nicole>> says.
<<case 3>>
<<Nicole "cap">> closes her eyes and takes a deep breath, and the tension flows out of her body.
<<case 4>>
<<Nicole "cap">> ignores you and walks away. There is a hard <i>thunk</i> noise when she tries to walk through the doorway to the kitchen, and she recoils, touching her head. "What the-- is there an <i>invisible wall</i> here?!" she shouts with clear agitation. She reaches out a hand, and it stops in the doorway where there should only be empty space. You see muscles strain in her arm as she pushes agaist the wall, but it does not budge. Finally, she yells in frustration, and her arm snaps back and forward with lightning speed in a perfect palm strike. The impact rattles everything in the house, but nothing else happens. She clenches her fist and grits her teeth--<br/>
<br/>
And breathes out, becoming calm as a stream again. "Ah. I see what's going on here. You've trapped me here, in an attempt to force me into doing what you want. Very clever, but I think you'll find that two can play at that game." She smiles.
<<case 5>>
<<Nicole "cap">> ignores you and goes to sit down on the couch, pointedly worming her way into the cushions and sighing contentedly. She reaches a hand out automatically, and her eyes snap into focus again when she finds herself clutching air. "What -- oh, where did they put the remote this time? Ugh..."
<<case 6>>
<<Nicole "cap">> ignores you and starts tearing out couch cushions with mounting frustration. There's no remote to be found. She huffs.
<<case 7>>
<<Nicole "cap">>'s face twitches, then she stands up straight and lets out a long breath. She smiles. "Ah well, remotes promote laziness anyway! I can just turn it on manually." She walks over and taps the power button at the base of the TV, but nothing happens. Her brow creases and she presses it again. Still nothing. She grumbles something to herself.
<<case 8>>
With a grunt, <<Nicole>> kneels down and twists around to look behind the TV. She's still for a moment, then mutters, "What...?" She reaches a hand behind the TV, where there should be a tangle of wires and cords, but you don't hear her hit anything. Curious, you bend over to look yourself, and see that there's nothing in the space at all: no wires are coming out of the TV at all, and the wall does not even appear to have an outlet.<br/>
<br/>
<<Nicole "cap">> gets up slowly. She looks around the room slowly, her brow creased with suspicion. Just when you think she's about to do something, she sighs loudly and shrugs. "Well, that's weird," she says.
<<case 9>>
<<Nicole "cap">> sits down carefully in the middle of the room, crosses her legs, sits up straight, and closes her eyes. You hear her breathing, slowly and deliberately.
<<default>>
<<Nicole "cap">> hums a low, droning noise from where she sits in her meditation pose, breathing in and out slowly and deliberately.
<</switch>>
<</nobr>><<if $controller.gum2.fite < 8 and $controller.gum2.alien isnot true>><<goto "GUM2 fite">><<else>><<include "GUM2 hub">>
<b>"<<print passage()>>"</b>
<<nobr>>
<<if $controller.gum2.alien is true>>
"Ah, but didn't you say you were from another world?" <<Nicole>> says with a knowing smile, almost but not quite keeping the triumph out of her voice. "You ought to be more careful with your web of lies, sweetie."
<<else>>
"Hmm, you know, something makes me doubt that," <<Nicole>> says with an easy smile. "Maybe it's the fact that the remote seems to have winked out of existence. Or the fact that all our wiring seems to have disappeared. Or, hmm, maybe it's the fact you were too lazy to make even a <i>single other room</i> when you designed this pitiful replica of my house." She sniffs. "Honestly, I think I'm more offended by your lack of work ethic than the fact you kidnapped me."
<<set $controller.gum2.insult to true>>
<</if>>
<</nobr>>
<</if>><<include "GUM2 hub">>
<b>"<<print passage()>>"</b>
"Oh! I'm so terribly sorry," is what Nicole tells you, but her grin says something entirely different. "Pass it along then, will you? There's no excuse for poor craftsmanship!"<<set $controller.gum2.insult to null>><<Nicole>> narrows her eyes at you, expression cold. "So that's how it is," she mutters.
Her feet shift into a balanced stance, and she raises her arm with perfect form. "I hope you know what you're getting into, because I'm not going to hold back!"
<center><span class="btn">[[Begin!|Preparation][$scenario = "gum2"]]</span></center>Yeah, you're getting nowhere with this. Why would someone <i>not</i> want to fight? This is new territory, and it scares and confuses you. You sigh, and open a return portal back to the hub. Maybe if you try again later, with her memories reset, you'll have better luck.
[[(next)|Hub]]<<include "GUM2 hub">>
<b>"<<print passage()>>"</b>
You instantly have her full attention.
"...Excuse me?"
Her voice is a dead calm that sends chills down your spine.
<<nobr>>
>[[S-sorry, you must have misheard me. What I meant to say was...|GUM2 hub]]<br/>
>[[Yeah, you heard me. I pounded their stupid faces into the dirt. Their tears were delicious.]]
<<nobr>><b>"<<print passage()>>"</b>
<<if $controller.gum2.fite >= 9>><<Nicole "cap">> rises to her feet. She<<else>><<Nicole "cap">><</if>> is shaking with rage.
<<nobr>>
>[[Especially that brat, Gumball. Did you know he tried to run away with his tail between his legs? I'd like to say he cried for you, but he was too much of a coward to even do that.|road to rage][$controller.gum2.choice = "Especially that brat, Gumball. Did you know he tried to run away with his tail between his legs? I'd like to say he cried for you, but he was too much of a coward to even do that."]]<br/>
>[[Especially that freak, Darwin. He tried so hard to save them, but in the end he couldn't even save himself. Isn't that funny?|road to rage][$controller.gum2.choice = "Especially that freak, Darwin. He tried so hard to save them, but in the end he couldn't even save himself. Isn't that funny?"]]<br/>
>[[Especially that know-it-all, Anais. She thought she knew how to stop me. Spoiler alert: she didn't.|road to rage][$controller.gum2.choice = "Especially that know-it-all, Anais. She thought she knew how to stop me. Spoiler alert: she didn't."]]<br/>
<</nobr>><b>"<<print $controller.gum2.choice>>"</b>
<<Nicole "cap">> is breathing heavily and staring at you with utter hatred.
>[[And you know what the best thing is? I can keep summoning them here for as long as I want! I think after I've beat you, I'll go back and fight them again. And again. And again!]]<b>"<<print passage()>>"</b>
"No, you won't." <<Nicole "cap">> has suddenly become as still as a statue.
>[[Oh? And why's that?]]<b>"<<print passage()>>"</b>
<<timed 500ms>><<typewriter "\"Because I... " "125ms">><<next 2625ms>><<typewriter "am going...\"" "125ms">><<next 3500ms>><<set $controller.gum2.shemad to true>><<set $scenario to "gum2">><<goto "Preparation">><</timed>><<if $progress.gum < 2>><<set $progress.gum = 2>><</if>><<achievementcheck>><<victorymessage>><<set $controller.gum2.postbattle to true>>
Nicole is still unconscious. She is lying on her side, her eyes half-lidded. She is not moving.<b>"<<print passage()>>"</b>
There is a faint sound like the clearing of a throat, and words flash into existence on the nearby wall: NO DEATHS ALLOWED IN THE ARENA.You press a finger to Nicole's neck. After a moment, you feel a faint pulse. Now that you're up close, you can also tell that she's still breathing. She does not move, otherwise./* Action statistics and data. */
/* Argument order is: name, cost, attack weight, effect weight, phase. Basic/notbasic, ally targeting, and instant/notinstant set manually. */
<<widget "setactions">>
<<if $args.length < 1>>
ERROR in setactions: no arguments passed
<<else>>
<<set _char = $args[0]>>
<<switch _char.name>>
<<case "Rogue">>
<<set _char.actions = [
{name: "Knife",
cost: 2,
weight: $knife_weight,
basic: true,
phase: "targeting phase"},
{name: "Crossbow",
cost: 0,
weight: 1,
basic: true,
phase: "targeting phase"},
{name: "Something in your eye",
cost: 2,
phase: "targeting phase"},
{name: "Poison Prick",
cost: 3,
weight: 0.6,
effweight: 0.6,
time: 4,
phase: "targeting phase"},
{name: "Off Your High Horse",
cost: 4,
weight: 1,
phase: "targeting phase"},
{name: "A Farewell to Arms",
cost: 4,
weight: 1,
effweight: 0.5,
time: 3,
phase: "targeting phase"},
{name: "Below the Belt",
cost: 4,
weight: 1,
effweight: 0.5,
time: 3,
phase: "targeting phase"},
{name: "Dead Ringer",
cost: 4,
weight: 1,
effweight: 0.5,
time: 3,
phase: "targeting phase"},
{name: "Flurry",
cost: 5,
weight: 0.7,
phase: "targeting phase"},
{name: "Sneak",
cost: 2,
time: 3,
phase: "confirm phase"},
{name: "Procure",
phase: "procure"}
]>>
<<case "Fighter">>
<<set _char.actions = [
{name: "Sword",
cost: 2,
weight: 1,
basic: true,
phase: "targeting phase"},
{name: "Punch",
cost: 1,
weight: 0.75,
basic: true,
phase: "targeting phase"},
{name: "Hammer",
cost: 3,
weight: 0.8,
basic: true,
pierce: true,
phase: "targeting phase"},
{name: "Charge",
cost: 4,
weight: 1.5,
phase: "targeting phase"},
{name: "Berserker",
cost: 1,
instant: true,
phase: "confirm phase"},
{name: "Defender",
cost: 1,
instant: true,
phase: "confirm phase"},
{name: "Meditate",
cost: 5,
basic: true,
time: 4,
phase: "confirm phase"},
{name: "Protector",
cost: 2,
effweight: 0.4,
ally: true,
self: false,
time: 3,
phase: "targeting phase"},
{name: "Martyr",
cost: 2,
phase: "confirm phase"}
]>>
<<case "Mage">>
<<set _char.actions = [
{name: "Focus",
cost: 2,
phase: "confirm phase"},
{name: "Sacrifice",
cost: 0,
basic: true,
instant: true,
phase: "confirm phase"},
{name: "Blast",
cost: 3,
weight: 1,
basic: true,
spell: true,
phase: "spell phase"},
{name: "Fireball",
cost: 4,
weight: 1,
effweight: 0.5,
time: 3,
spell: true,
phase: "spell phase"},
{name: "Favor",
cost: 1,
ally: true,
self: false,
spell: true,
phase: "spell phase"},
{name: "Restoration",
cost: 3,
ally: true,
spell: true,
phase: "spell phase"},
{name: "Neutralize",
cost: 3,
spell: true,
phase: "spell phase"},
{name: "Blessing",
cost: 5,
ally: true,
spell: true,
phase: "spell phase"},
{name: "Curse",
cost: 5,
spell: true,
phase: "spell phase"}
]>>
<<case "Bard">>
<<set _char.actions = [
{name: "Rapier",
cost: 2,
weight: 1,
basic: true,
phase: "targeting phase"},
{name: "Dagger",
cost: 2,
weight: $knife_weight,
basic: true,
phase: "targeting phase"},
{name: "Shout",
cost: 3,
weight: 1,
basic: true,
spell: true,
phase: "spell phase"},
{name: "Non-Sequitor",
cost: 4,
weight: 0.9,
phase: "targeting phase"},
{name: "Insult",
cost: 2,
effweight: 0.3,
time: 3,
phase: "targeting phase"},
{name: "Joke",
cost: 2,
effweight: 0.3,
time: 3,
phase: "targeting phase"},
{name: "Equivocate",
cost: 2,
effweight: 0.3,
time: 3,
phase: "targeting phase"},
{name: "Rewrite",
cost: 5,
ally: null,
phase: "targeting phase"},
{name: "Provoke",
cost: 2,
phase: "confirm phase"},
{name: "Sneak",
cost: 2,
phase: "confirm phase"}
]>>
<<case "Archer">>
<<set _char.actions = [
{name: "Shot",
cost: 1,
weight: 0.75,
basic: true,
spell: true,
phase: "spell phase"},
{name: "Soulshot",
cost: 3,
weight: $pierce_weight,
spell: true,
phase: "spell phase"},
{name: "Exacerbate",
cost: 3,
weight: 1,
phase: "targeting phase"},
{name: "Explosive Bolt",
cost: 4,
weight: 1,
phase: "targeting phase"},
{name: "Mark",
cost: 1,
time: 3,
phase: "targeting phase"},
{name: "Mercy",
cost: 0,
basic: true,
instant: true,
phase: "targeting phase"},
{name: "Hunter",
cost: 2,
phase: "confirm phase"},
{name: "Call to Arms",
cost: 7,
effweight: 0.4,
time: 3,
phase: "confirm phase"}
]>>
<<case "Cleric">>
<<set _char.actions = [
{name: "Club",
cost: 2,
weight: 1,
basic: true,
phase: "targeting phase"},
{name: "Assured Aegis",
cost: 3,
time: 3,
ally: true,
phase: "targeting phase"},
{name: "Protector",
cost: 2,
effweight: 0.4,
ally: true,
self: false,
time: 3,
phase: "targeting phase"},
{name: "Martyr",
cost: 2,
phase: "confirm phase"},
{name: "Lifegiver",
cost: 1,
basic: true,
ally: true,
self: false,
phase: "targeting phase"},
{name: "Downfall",
cost: 6,
weight: 1,
phase: "targeting phase"},
{name: "Meditate",
cost: 5,
basic: true,
time: 4,
phase: "confirm phase"},
{name: "Walled City",
cost: 7,
effweight: 0.4,
time: 3,
phase: "confirm phase"}
]>>
<<case "Witch">>
<<set _char.actions = [
{name: "Pox",
cost: 3,
weight: 0.8,
effweight: 0.5,
time: 2,
phase: "targeting phase"},
{name: "Focus",
cost: 2,
phase: "confirm phase"},
{name: "Gift",
cost: 1,
basic: true,
ally: true,
self: false,
spell: true,
phase: "spell phase"},
{name: "Cleanse",
cost: 2,
basic: true,
ally: null,
spell: true,
phase: "spell phase"},
{name: "Forgetfulness",
cost: 2,
phase: "targeting phase"},
{name: "Curse",
cost: 5,
spell: true,
phase: "spell phase"},
{name: "Frenzy",
cost: 4,
effweight: 0.6,
ally: true,
phase: "targeting phase"},
{name: "Thaumastasis",
cost: 5,
time: 7,
ally: null,
phase: "targeting phase"},
{name: "Age of Enlightenment",
cost: 7,
effweight: 0.4,
time: 3,
phase: "confirm phase"},
{name: "Procure",
phase: "procure"}
]>>
<<default>>
ERROR in setactions: character name not recognized
<</switch>>
<</if>>
<</widget>>
<<widget "actinfo">>
<span class="actinfo">
<<switch $args[0].name>>
/* Fighter */
<<case "Sword" "Punch">>
Inflicts damage with an attack weight of <<print $args[0].weight>>.
<<case "Hammer">>
Inflicts damage with an attack weight of <<print $args[0].weight>> and ignores enemy defense.
<<case "Charge">>
Inflicts damage with an attack weight of <<print $args[0].weight>> but knocks Fighter <b>Off-Balance</b>.
<<case "Berserker">>
Increases damage taken and received by <<print $berserk_factor*100>>%.
<<case "Defender">>
Reduces damage taken and received by <<print $defend_factor*100>>%.
<<case "Meditate">>
Cures user of all negative ailments and bestows <b>Chi Shield</b>, protecting them from future ailments for $args[0].time turns.
<<case "Protector">>
Take hits for an ally and gain a Defense bonus for $protector_time rounds.
<<case "Martyr">>
Draw all direct attacks for this round.
/* Rogue */
<<case "Knife">>
Attack twice with a weight of $args[0].weight.
<<case "Crossbow">>
Inflicts damage with an attack weight of $args[0].weight. Needs reloading after use.
<<case "Reload">>
Reloads crossbow.
<<case "Something in your eye">>
Stun an enemy.
<<case "Poison Prick">>
Attack with a weight of $args[0].weight and inflict Poisoned for $args[0].time rounds.
<<case "Off Your High Horse">>
Attack with a weight of $args[0].weight and remove the target's most recent buff.
<<case "A Farewell to Arms">>
Attack with a weight of $args[0].weight and inflict Injury for $args[0].time rounds.
<<case "Below the Belt">>
Attack with a weight of $args[0].weight and inflict Pain for $args[0].time rounds.
<<case "Dead Ringer">>
Attack with a weight of $args[0].weight and inflict Headache for $args[0].time rounds.
<<case "Dancing Strikes">>
Attack twice with a weight of $args[0].weight and inflict Dizzy.
<<case "Flurry">>
Attack thrice with a weight of $args[0].weight and inflict Off-Balance.
<<case "Sneak">>
Become untargetable for $args[0].time rounds.
<<case "Trickster">>
Evade the next direct attack and retaliate with a powerful counterattack.
<<case "Procure">>
Add an item to party stock. Cost varies.
/* Mage */
<<case "Focus">>
Generates 4 Energy (net 2).
<<case "Sacrifice">>
Sacrifice $sacrificeHP HP to generate 2 Energy.
<<case "Blast">>
Inflicts damage with an attack weight of $args[0].weight + 0.25 per Energy invested.
<<case "Fireball">>
Inflicts damage with an attack weight of $args[0].weight and inflicts Burning status with greater severity per Energy invested.
<<case "Favor">>
Lend Energy to an ally.
<<case "Restoration">>
Cure an ally of their most recent status ailment, plus one ailment per Energy invested.
<<case "Neutralize">>
Strip an enemy of their most recent buff, plus one buff per Energy invested.
<<case "Blessing">>
Bestows a Blessing, which will boost all stats for 3 rounds. Additional Energy points will alternate improvements in duration and effect.
<<case "Curse">>
Inflicts a Curse, which will weaken all stats for 3 rounds. Additional Energy points will alternate improvements in duration and effect.
/* Bard */
<<case "Rapier">>
Inflicts damage with an attack weight of <<print $args[0].weight>>.
<<case "Dagger">>
Attack twice with a weight of $args[0].weight.
<<case "Shout">>
Inflicts damage with an attack weight of $args[0].weight + 0.25 per Energy invested.
<<case "Shove">>
Attack with a weight of $args[0].weight and inflict Off-Balance.
<<case "Insult">>
Inflicts an Injury for $args[0].time rounds.
<<case "Joke">>
Inflicts Pain for $args[0].time rounds.
<<case "Equivocate">>
Inflicts Headache for $args[0].time rounds.
<<case "Rewrite">>
Removes all effects (positive and negative) from a target.
<<case "Provoke">>
Draw all direct attacks for this round.
/* Archer */
<<case "Shot">>
Inflicts damage with an attack weight of $args[0].weight + 0.25 per Energy invested.
<<case "Soulshot">>
Inflicts damage with an attack weight of $args[0].weight + 0.1 per Energy invested and ignores enemy defense.
<<case "Exacerbate">>
Inflicts damage with a weight of $args[0].weight + 0.25 for every ailment afflicting the enemy.
<<case "Explosive Bolt">>
Inflicts damage with a weight of $args[0].weight to target and half damage to all other enemies.
<<case "Mark">>
Paint a target on an enemy. Every time another puppet attacks, Archer will follow up with a 1-point Shot on every Marked enemy. (Archer will become Winded if their Energy is exhausted in this manner.)
<<case "Mercy">>
Remove a Mark from an enemy.
<<case "Hunter">>
Take a potshot at any enemy foolish enough to attack this round.
<<case "Call to Arms">>
Bestows an ATK Boost to all puppets for $args[0].time rounds.
/* Cleric */
<<case "Club">>
Inflicts damage with an attack weight of <<print $args[0].weight>>.
<<case "Assured Aegis">>
Bestows a Shield to a puppet for $args[0].time rounds, reducing incoming damage by <<print $SHIELD_FACTOR*100>>%.
<<case "Downfall">>
Inflicts damage with a weight of $args[0].weight + 0.2 for every buff empowering the enemy, removing them in the process.
<<case "Lifegiver">>
Give <<print $LIFEGIVER_HP>> HP to another puppet.
<<case "Walled City">>
Bestows a DEF Boost to all puppets for $args[0].time rounds.
/* Witch */
<<case "Pox">>
Inflicts damage with a weight of $args[0].weight and inflicts Pain for $args[0].time rounds.
<<case "Cleanse">>
Removes the most recent ailment from an ally or the most recent buff from an enemy, plus 1 effect for every Energy point invested.
<<case "Forgetfulness">>
Stun an enemy.
<<case "Gift">>
Lend Energy to an ally.
<<case "Frenzy">>
Greatly boost Attack, but cut Defense by half the amount.
<<case "Thaumastasis">>
Places a puppet in Stasis, preventing any change to their effects for $args[0].time rounds.
<<case "Age of Enlightenment">>
Bestows a SPC Boost to all puppets for $args[0].time rounds.
<<default>>
This doesn't do anything yet!
<</switch>>
</span><br />
<</widget>>
<<widget "actdesc">>
<span class="actdesc">
<<switch $args[0].name>>
/* Fighter */
<<case "Punch">>
A quick jab with the off-hand. Weaker than using a weapon, but less tiring.
<<case "Sword">>
Ah, the sword: favored weapon of heroes everywhere. In reality they're pretty impractical and hard to use, but they just look so cool!
<<case "Hammer">>
Fighter's heavy warhammer concentrates all the force of their swing onto a single point, piercing through even the toughest of armor.
<<case "Charge">>
Rush the enemy with an all-out attack! Fighter can put a lot of force behind this attack, but it'll leave them overbalanced and open to a counterattack.
<<case "Berserker">>
Fighter will throw down their shield and fight with reckless abandon, hitting harder but hurting harder, too.
<<case "Defender">>
Fighter will hunker behind their shield, blocking oncoming blows but making it harder for them to attack.
<<case "Meditate">>
<<switch $subject[0].name>>
<<case "Fighter">>
The indignities of the world quail before Fighter's indominable spirit. When that spirit is focused, nothing can keep them down.
<<case "Cleric">>
Cleric knows it'll be all right in the end. If they just hold on to that optimism, all their troubles will fade away.
<</switch>>
<<case "Protector">>
<<switch $subject[0].name>>
<<case "Fighter">>
Leap to another puppet's defense! Fighter will put themselves in the way of any attack, deflecting it with their mighty shield. But they can't be everywhere at once, so beware of area attacks...
<<case "Cleric">>
Cleric never hesitates to defend the weak. They will stand like a mighty titan before their charge, protecting them from all harm. But they can't be everywhere at once, so beware of area attacks...
<</switch>>
<<case "Martyr">>
<<switch $subject[0].name>>
<<case "Fighter">>
The blinding intensity of Fighter's spirit can warp perception itself. Through sheer will they can become so overpoweringly <b>real</b> that enemies become unable to see anything else, compelling them to send all attacks Fighter's way. Unfortunately, the technique requires too much concentration for Fighter to raise their shield.
<<case "Cleric">>
The light of Cleric's spirit is blinding. Even under normal circumstances, people can't help but be drawn to them; when that spirit is focused, they will see nothing else. Cleric will gladly take all their pain and violence onto themselves.
<</switch>>
/* Mage */
<<case "Focus">>
Magic is everywhere if you know where to look. A skilled mage can, with concentration, read the currents that flow through the world and pluck power from them like notes from a harp.
<<case "Sacrifice">>
Magic is born from a desire to impose morality on a cruel and uncaring world. If we suffer, should good things not happen to balance it out? Only wishful thinking when done by humans, of course -- but Mage makes it a reality.
<<case "Blast">>
Use the beautiful, wonderous, and infinite power of magic to blow something up.
<<case "Fireball">>
Since the beginning of humanity, fire has had a hallowed place in the halls of myth and magic. One moment, there is nothing but dead wood and still air -- the next, a wild, flickering shape that banishes the cold and dark, changes objects irrevocably, purges evil and disease. What could be more magical than that? Of course, you don't care about any of that. You just want to burn stuff.
<<case "Favor">>
Magic blurs the boundaries of the natural world, and the boundaries between individuals. Mage can allow another to use their energy as if it was their own.
<<case "Restoration">>
People have always turned to mystics for cures to the world's ills and pains. To be blighted by an enemy you cannot see is terrifying and transcendent -- so surely, one must seek out a person that is the same. And so Mage gained the power of healing.
<<case "Neutralize">>
To make magic, one must first know how to break it. Your enemies think themselves safe, shining and untouchable with all those enchantments? With a whisper, Mage can remind them just how mortal they really are.
<<case "Blessing">>
Grant us strength that we may strike true. Grant us protection that we may endure. Grant us wisdom that we may see the way through the darkness.
<<case "Curse">>
May their flesh sag and rot. May their bones crumble like parchment. May their thoughts slow like treacle.
/* Rogue */
<<case "Knife">>
It's not as strong as Fighter's big sword, but Rogue is fast enough to get two licks before their victim knows what's hit them. This is most effective against enemies with poor defense.
<<case "Crossbow">>
Ah, the marvel of modern technology: while other fools tire themselves out swinging those heavy weapons, Rogue can send death flying through the air with just a twitch of the finger.
<<case "Reload">>
...Of course, crossbows also take an age and a half to reload.
<<case "Something in your eye">>
It's amazing how if you say something ridiculous, people will hold still long enough for you to make it true. It's like they want it to happen, really.
<<case "Poison Prick">>
The tiny knife may barely break the skin, but the poison it's coated in ensures they'll be feeling it for a while to come.
<<case "Off Your High Horse">>
A special technique that cuts through flesh and magic alike, bringing those haughty enchanted foes back down to earth.
<<case "A Farewell to Arms">>
A savage laceration of the arm muscles that leaves the enemy crippled.
<<case "Below the Belt">>
A nasty kick to the joints and other painful regions that leaves the enemy too distracted by pain to defend themselves.
<<case "Dead Ringer">>
An unsporting blow to the temple that leaves the enemy's head ringing.
<<case "Dancing Strikes">>
Mock the enemy with a dazzling display of agility, forcing them to spin around and around just to keep up with Rogue. By the end they won't know which way is up!
<<case "Flurry">>
Descend on the enemy in a whirlwind of strikes! The sudden ferocity will make them lose their footing, leaving them open to another puppet's attack.
<<case "Sneak">>
Become one with the shadows.
<<case "Trickster">>
<<case "Procure">>
Even you don't know where they get it from.
/* Bard */
<<case "Rapier">>
A flashy, elegant weapon for sophisticated duelists, specialized for thrusts and precise cuts. Its usefulness in a real brawl is questionable, but if you can't fight in style, what's even the point?
<<case "Dagger">>
A real dagger, not the shoddy knife you'd find in the hands of a thug! Longer than a knife and shorter than a sword, the dagger is an elegant weapon combining strength and concealment. It's favored by assassins and scheming nobles.
<<case "Shout">>
Bard knows all about the destructive power of words, though it's a bit more literal than usual in this case. With a little magic, boosted by their own mythological resonance with the domain of sound, Bard can turn their voice into an oddly melodic sonic attack.
<<case "Non-Sequitor">>
"This statement is false!" Sometimes you need to do the thing they least expect. It'll throw them off-kilter, especially after you follow it with a sucker punch.
<<case "Insult">>
"You fight like a cow!" Any bard worth their salt knows exactly what wicked wordplay will leave their victims a laughingstock. The injury inflicted is only emotional, but really, isn't that worse?
<<case "Joke">>
Bard can make jokes so bad they cause physical pain. Bard assures us they're doing it ironically. You think that makes worse.
<<case "Equivocate">>
"Oh, I'm sure you <b>believe</b> that's true, but have you considered..." Also known as "playing devil's advocate" or, more colloquially, "trolling". Bard is a master.
<<case "Rewrite">>
Don't like the story? Then change it! It's the tales that are remembered, and in a way isn't that more real than what actually happened?
<<case "Provoke">>
A bard thrives in the spotlight. This one knows just how to get it.
/* Archer */
<<case "Shot">>
Ranged weapons are where the real power's at. With sharp eyes, you can strike down an entire battalion of soldiers before they can land even single blow. Of course, in this arena, everyone is always within melee range of each other, so it's a bit less useful. Archer has to make up for it by firing multiple arrows at once -- they can draw on their mythological resonance to create them out of Energy points, so you'll never run out.
<<case "Soulshot">>
Arrows made of pure ether. Their insubstantial nature makes them weaker than real weapons, but they'll glide straight through any armor to pierce the heart.
<<case "Exacerbate">>
A cruel attack targeted at existing wounds and injuries. Go on. Twist the knife.
<<case "Explosive Bolt">>
The famous "bomb arrow" technique, popularized by a certain green-capped troublemaker, that consists of strapping a bomb to an arrow and shooting it away from you very fast. It's totally absurd, but then, what isn't?
<<case "Mark">>
Archer never lets up once an enemy is in their sights.
<<case "Mercy">>
Archer wants you to know they're letting you live because they feel like it, and not because they're too tired to keep going. They never let up, remember!
<<case "Hunter">>
Archer can forgo an attack to hone their senses to the peak of human perfection, straining their ears and eyes for the slightest movement. Any enemy that dares to come close will know their swift and vengeful wrath.
<<case "Call to Arms">>
Let slip the dogs of war.
/* Cleric */
<<case "Club">>
Priests are prohibited from shedding blood. Violence against one's fellow man is a sin, after all! Fortunately, bludgeoning weapons, though capable of causing horrific internal injuries, don't spill blood, so it's all kosher.
<<case "Assured Aegis">>
Don't worry. You're safe now.
<<case "Downfall">>
Pride goeth before a fall. Cleric can turn the enemy's hubris against them, reminding them that even the strongest warrior can be brought low by the smallest among us. All power revolves, ephemeral.
<<case "Lifegiver">>
Life is a limited resource. We have only what we were given. But, if our life is ours, is it not up to us what we do with it?
<<case "Walled City">>
A line, to separate us from them. A shield to repel all.
/* Witch */
<<case "Pox">>
A curse of suffering. The victim's skin breaks out with sores and blisters, causing terrible pain.
<<case "Gift">>
The mages may speak of "equivalent exchange", of sacrifice. Witch understands the world is not so simple. Our lives are a renewable resource, a rich pattern of ups and downs, flourishing anew every day with new choices and ideas. So this is a gift, freely given: do with it what you will.
<<case "Forgetfulness">>
A curse of confusion. A fog briefly passes over the victim's mind, making them forget what they were doing.
<<case "Cleanse">>
Wizards heal by forcing their will upon the world, demanding that it change for them. But there is an easier way, if you are willing to work with the currents of the world instead of against them. All things pass; Witch just needs to speed up the process a little.
<<case "Frenzy">>
Power like no other, at the expense of all else. Witch can give it to you, if you are prepared to accept it.
<<case "Thaumastasis">>
Being one with nature sounds very nice right up until you're getting chased by a bear while suffering from some new and exciting disease and starving from the recent drought. Sometimes, nature needs a kick in the teeth. Witch can forcefully stop the flow of magic completely, forcing every one of an individual's effects to stay exactly as they are.
<<case "Age of Enlightenment">>
To hoard one's knowledge is inevitably to lose it. Let it free, so that it can live.
<<default>>
Description pending.
<</switch>>
<br/>
</span>
<</widget>><<widget "preview">>
<span class="preview">
<<switch $action>>
<<case "rest" "struggle" "Reload" "kill" "spare">>
/* Nothing should be displayed in this case. */
<<case "Punch" "Sword" "Hammer" "Charge" "Blast" "Crossbow" "Off Your High Horse" "Rapier" "Shout" "Shot" "Soulshot" "Club">>
<<damagecalc>>
This attack will inflict $dmg damage.
<<case "Meditate">>
Fighter will be cured of all ailments and gain <b>Chi Shield</b>.
<<case "Protector">>
Fighter will protect $target[0].name and gain a bonus to Defense.
<<case "Martyr" "Defender" "Berserker" "Sneak" "Hunter" "Trickster" "Provoke">>
/* Other stances display no preview. */
<<case "Knife" "Dagger">>
<<damagecalc>>
This attack will inflict <<print $dmg>> x 2 damage.
<<case "Something in your eye" "Forgetfulness">>
This attack will inflict <b>Stunned</b>. <<if $target[0].alert is true>>...but the enemy is Alert, so they won't fall for it.<<elseif $target[0].chi is true>>...but the enemy is protected by Chi Shield, so it won't work.<</if>>
<<case "Poison Prick">>
<<damagecalc>>
This attack will inflict $dmg damage<<if $target[0].chi is true>> and <b>Poisoned</b> status<</if>>.
<<case "A Farewell to Arms">>
<<damagecalc>>
This attack will inflict $dmg damage<<if $target[0].chi is false>> and <b>Injury</b> status<</if>>.
<<case "Below the Belt">>
<<damagecalc>>
This attack will inflict $dmg damage<<if $target[0].chi is false>> and <b>Pain</b> status<</if>>.
<<case "Dead Ringer">>
<<damagecalc>>
This attack will inflict $dmg damage<<if $target[0].chi is false>> and <b>Headache</b> status<</if>>.
<<case "Dancing Strikes">>
<<damagecalc>>
This attack will inflict <<print $dmg>> x 2 damage<<if $target[0].chi is false>> and <b>Dizzy</b> status<</if>>.
<<case "Flurry">>
<<damagecalc>>
This attack will inflict <<print $dmg>> x 3 damage<<if $target[0].chi is false>> and <b>Off-Balance</b> status<</if>>.
<<case "Procure">>
One $item_to_procure will be added to party stock.
<<case "Focus">>
$subject[0].name will gain 2 net Energy.
<<case "Sacrifice">>
Mage will lose $sacrificeHP HP and gain 2 Energy.
<<case "Fireball">>
<<damagecalc>>
This attack will inflict $dmg damage<<if $target[0].chi is false>> and <b>Burning</b> status<</if>>.
<<case "Favor" "Gift">>
$subject[0].name will transfer $cost Energy to $target[0].name. <<if ($target[0].en + $cost) > 10>>...but they already have $target[0].en Energy, so some of it will be wasted.<</if>>
<<case "Restoration" "Neutralize" "Cleanse">>
<<neutralize>>
<<if $removed_effects.length > 0>>
This will remove
<<for _i, _eff range $removed_effects>>
<<print $target[0].effects[_eff].name>>
<<if _i eq ($removed_effects.length-2)>>
<<print ", and ">>
<<elseif _i eq ($removed_effects.length-1)>>
<<print ".">>
<<else>>
<<print ", ">>
<</if>>
<</for>>
<<else>>
...This won't remove any effects! You can still cast it if you really want to, but it'll be a waste of a turn.
<</if>>
<<case "Blessing">>
$target[0].name will receive a Blessing for $blessing_time rounds. <<checkfor "stasis">>
<<case "Curse">>
$target[0].name will receive a Curse for $curse_time rounds. <<checkfor "chi">>
<<case "Indignant Variati">>
<<damagecalc>>
The wrath of the gods. This attack will inflict $dmg damage and <b>knock the enemy off their feet</b>, but the exertion will leave Mage <b>Winded</b>.
<<case "Perdition">>
<<damagecalc>>
The flames of eternal torment. This attack will inflict $dmg damage and <b>Perdition</b> status, which will remain for the duration of the battle.
<<case "Salvation">>
A miracle to turn the tide of battle. This will cleanse all negative ailments from every puppet, and bestow each with Chi Shield.
<<case "Annulment">>
A judgment upon those who would defy you. This will strip all buffs from every enemy, including Alert and Chi Shield.
<<case "Ascension">>
Become something greater. This will endow a Blessing to all puppets for 5 rounds.
<<case "Forsaken">>
A terrible judgment that denies all mercy. This will inflict <b>Forsaken</b> status, which will sharply reduce Defense, even into the negatives.
<<case "Inspiration">>
The breath of life. Mage will transfer $cost Energy to $target[0].name and grant them an additional action.
<<case "Non-Sequitor">>
<<damagecalc>>
This attack will inflict <<print $dmg>> damage<<if $target[0].chi is false>> and <b>Off-Balance</b> status<</if>>.
<<case "Insult">>
$target[0].name will suffer an <b>Injury</b>. <<checkfor "chi">>
<<case "Joke">>
$target[0].name will suffer <b>Pain</b> status. <<checkfor "chi">>
<<case "Equivocate">>
$target[0].name will suffer a <b>Headache</b>. <<checkfor "chi">>
<<case "Rewrite">>
<<set _count = 0>>
<<for _effect range $target[0].effects>>
<<if not _effect.sticky>>
<<set _count++>>
<</if>>
<</for>>
This will remove all effects from the target. <<if _count == 0>>...Or it would, if they had any! You can still use it if you really want to, but it'll be a waste of a turn.<</if>>
/* Archer */
<<case "Exacerbate">>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set $weight += 0.25>>
<</if>>
<</for>>
<<damagecalc>>
This attack will inflict $dmg damage.
<<case "Mark">>
$target[0].name will be <b>Marked</b>. <<checkfor "chi">>
<<case "Mercy">>
$target[0].name will lose their Mark. <<if $target[0].marked isnot true>>...or they would, if they had one!<</if>>
<<case "Call to Arms">>
All puppets will gain an <b>ATK Boost</b>.
/* Cleric */
<<case "Lifegiver">>
$subject[0].name will give $LIFEGIVER_HP HP to $target[0].name. <<if $target[0].hp > ($target[0].maxhp - $LIFEGIVER_HP)>>...but some of it will be wasted.<</if>>
<<case "Downfall">>
<<set $removed_effects = []>>
<<for _i, _effect range $target[0].effects>>
<<if _effect.buff is true>>
<<set $weight += 0.2>>
<<if _effect.sticky isnot true and $target[0].stasis isnot true>>
<<run $removed_effects.push(_i)>>
<</if>>
<</if>>
<</for>>
<<damagecalc>>
This attack will inflict $dmg damage
<<if $removed_effects.length > 0>>
and remove
<<for _i, _eff range $removed_effects>>
<<print $target[0].effects[_eff].name>>
<<if _i == ($removed_effects.length-2)>>
<<print ", and ">>
<<elseif _i == ($removed_effects.length-1)>>
<<print ".">>
<<else>>
<<print ", ">>
<</if>>
<</for>>
<</if>>.
<<case "Assured Aegis">>
$target[0].name will be protected by a <b>Shield</b>. <<checkfor "stasis">>
<<case "Walled City">>
All puppets will gain a <b>DEF Boost</b>. <<checkfor "stasis">>
/* Witch */
<<case "Frenzy">>
$target[0].name will gain <b>Frenzy</b>. <<checkfor "stasis">>
<<case "Thaumastasis">>
$target[0].name's effects will be held in <b>Stasis</b>.
<<case "Age of Enlightenment">>
All puppets will gain a <b>SPC Boost</b>.
<<case "Miracle">>
It's a sad truth that one often gains a lesser reward than the sacrifice one gave up to achieve it. But sometimes, fortune smiles upon us, and gives us more than we lost. It will cost 10 Energy to call to the Earth for supplication, but it will give 12 Energy in return, spread evenly across your puppets.
<<case "Renewal">>
By accepting the flow of nature, all your troubles can be washed away. This miracle will remove all buffs from enemies and all ailments from allies, even through Stasis and Chi Shield.
/* Items */
<<case "Antidote" "Fire Extinguisher" "Canned Air" "Healing Crystal" "Nanites" "Painkiller" "Asprin">>
<<switch $action>>
<<case "Antidote">>
<<set _eff to "Poisoned">>
<<case "Fire Extinguisher">>
<<set _eff to "Burning">>
<<case "Canned Air">>
<<set _eff to "Winded">>
<<case "Healing Crystal">>
<<set _eff to "Dizzy">>
<<case "Nanites">>
<<set _eff to "Injury">>
<<case "Painkiller">>
<<set _eff to "Pain">>
<<case "Asprin">>
<<set _eff to "Headache">>
<</switch>>
This will cure $target[0].name of _eff.<<checkfor _eff>>
<<case "Panacea">>
This will cure $target[0].name of all ailments.<<checkfor "all">>
<<case "Bottled Chi">>
This will bestow $target[0].name with <b>Chi Shield</b>. <<checkfor "stasis">>
<<case "Adrenaline">>
This will give $target[0].name an <b>ATK Boost</b> for $boost_time rounds. <<checkfor "stasis">>
<<case "Stoneskin">>
This will give $target[0].name a <b>DEF Boost</b> for $boost_time rounds. <<checkfor "stasis">>
<<case "Nootropic">>
This will give $target[0].name a <b>SPC Boost</b> for $boost_time rounds. <<checkfor "stasis">>
<<case "Stimulant">>
$target[0].name will gain 5 Energy. <<if $target[0].en > 5>>...but they already have $target[0].en Energy, so some will be wasted.<</if>>
<<case "Throwing Knife">>
<<damagecalc>>
This will inflict $dmg damage.
<<case "Powdered Glass">>
<<damagecalc>>
This will inflict $dmg damage and <b>Stunned</b> status.<<if $target[0].alert is true>>...but the enemy is Alert, so they won't be stunned.<<elseif $target[0].chi is true>>...but the enemy is protected by Chi Shield, so they won't be stunned.<</if>>
<<case "Grenade" "Explosive Bolt">>
<<damagecalc>>
This will inflict $dmg damage to $target[0].name and half damage to other enemies.
<<case "Flamethrower">>
This will inflict damage and <b>Burning</b> status to all enemies. Damage will be divided across current number of enemies.
<<case "Gas Bomb">>
This will inflict damage and <b>Poisoned</b> status to all enemies. Damage will be divided across current number of enemies.
<<case "Calamity Bomb">>
<<damagecalc>>
This will inflict $dmg damage as well as <b>Injury</b>, <b>Pain</b>, and <b>Headache</b> status.
<<case "Flashbang">>
This will inflict <b>Stunned</b> status on all enemies, provided they are not Alert enough to block their eyes.
<<default>>
This doesn't do anything yet.
<</switch>>
</span>
<</widget>><<widget "endofround">>
<<for _actor range $args[0]>>
<<for _k, _effect range _actor.effects>>
/* DoT check */
<<if _effect.dot is true>>
<<set _message to true>>
<<DoT _actor _k>>
<<switch _effect.name>>
<<case "Burning">>
_actor.name takes $dmg burning damage!
<<case "Poisoned">>
_actor.name takes $dmg poison damage!
<<case "Perdition">>
The fires of perdition smolder. _actor.name takes $dmg burning damage.
<<case "Doom">>
_actor.name's doom ticks closer. They suffer $dmg damage.
<</switch>>
<br/>
<<set _actor.hp -= $dmg>>
<<set $target[0] = _actor>>
<<deathcheck>>
<</if>>
/* decrementor */
<<switch _effect.name>>
<<case "Berserker" "Defender" "Martyr" "Hunter" "Off-Balance">>
/* do nothing; these are decremented at the start of the round */
<<default>>
<<if _effect.duration >= 1 and !(_actor.stasis is true and _effect.name != "Stasis")>>
<<set _effect.duration -= 1>>
<</if>>
<</switch>>
<<if _effect.duration == 0>>
<<set _message to true>>
<<effectmanager _actor>>
<</if>>
<</for>>
<</for>>
<</widget>>/* Determines effects to be removed by Neutralize and Restoration. */
/* Because these actions are so similar, the same widget can be used for both. */
<<widget "neutralize">>
<<if $target[0].stasis isnot true>>
/* Stasis blocks any effect changes, so it blocks this too. */
<<set _effects to $target[0].effects>> /* This is done just so you don't have to write out the longer name */
<<for _i = (_effects.length-1); _i >= 0; _i-->>
/* Loop runs over the effects array starting from the END and working backwards. This is why we can't use a "range" loop, because that only goes forwards. */
<<if $effects_to_remove <= 0>>
<<break>>
/* The number of effects removed by Neutralize/Restoration varies depending on energy invested. If there are more effects than the spell can remove, we end the function here. Otherwise the spell would clear all effects regardless of strength! */
<</if>>
<<if $target[0] instanceof Puppet is true>>
<<if _effects[_i].buff isnot true and _effects[_i].sticky isnot true>>
/* Because there are fewer buffs than debuffs, a single "buff" flag is used to distinguish them. We only want Restoration to remove debuffs, so it will only trigger the removal code if the effect's buff flag is NOT true. */
/* You may also want some effects to be irremovable. This is the purpose of the "sticky" flag, which is set in the story JavaScript. */
<<run $removed_effects.push(_i)>>
/* This stores the index of the effect that will be removed. In the action phase, every effect keyed to the values in this array will be cleared. */
<<set $effects_to_remove -= 1>>
<</if>>
<<elseif $target[0] instanceof Enemy is true>>
<<if _effects[_i].buff is true and _effects[_i].sticky isnot true>>
<<run $removed_effects.push(_i)>>
<<set $effects_to_remove -= 1>>
<</if>>
<</if>>
<</for>>
<</if>>
<</widget>><<widget "damagecalc">>
/* Do we use Attack or Special? */
<<if $item is true>>
<<set _atk to $subject[0].get("Special")>>
<<else>>
<<set _atk to $subject[0].get("Attack")>>
<</if>>
/* Piercing? */
<<if $pierce is true>>
<<set _def to 0>>
<<set $pierce to false>>
<<else>>
<<set _def to $target[0].get("Defense")>>
<</if>>
/* base damage: */
<<switch $formula>>
<<case "subtractive">>
<<set $dmg to (($base+$damper*_atk)*$weight)-$damper*_def>>
<<case "bonfire">>
<<set $dmg to ($base+$damper*(_atk-_def))*$weight>>
<<case "rpgmaker">>
<<set $dmg to (_atk*4-_def*2)*$damper*$weight>>
<<case "divisive">>
<<set $dmg to ($base*(_atk/_def))*$weight>>
<<default>>
/* add your own here! */
/* You can also make additional cases if you want a unique formula for an attack. Just remember to reset the $formula variable after so you don't get cross-over! */
<</switch>>
/* Find element factor, and multiply it to damage */
<<switch $element>>
<<case "element A">>
<<set _factor = $target[0].element.A>>
<<default>>
<<set _factor = 1>>
<</switch>>
<<set $dmg *= _factor>>
/* Element message */
<<if _factor > 1>>
<<set _elntmsg to "Super effective! ">>
<<elseif _factor < 1>>
<<set _elntmsg to "Not very effective... ">>
<</if>>
/* Miscellaneous factors */
<<if $subject[0].berserker is true>>
<<set $dmg *= (1+$berserk_factor)>>
<</if>>
<<if $target[0].berserker is true>>
<<set $dmg *= (1+$berserk_factor)>>
<</if>>
<<if $subject[0].defender is true>>
<<set $dmg *= $defend_factor>>
<</if>>
<<if $target[0].defender is true>>
<<set $dmg *= $defend_factor>>
<</if>>
<<if $target[0].shield is true>>
<<set $dmg *= (1-$SHIELD_FACTOR)>>
<</if>>
/* Round to integer and check against minimum */
<<set $dmg = Math.round($dmg)>>
<<if $dmg < $min_dmg>>
<<set $dmg = $min_dmg>>
<</if>>
<</widget>>
<<widget "echodamage">>
<<if $args[0] isnot "nocalc">>
<<damagecalc>>
<</if>>
<<set $pierce to false>>
<<if $target[0].dead is false>>
<<if $target[0].bubbled is true>>
$target[0].name's bubble pops like a balloon under your attack, leaving them unharmed!<br/>
<<for _effect range $target[0].effects>>
<<if _effect.name eq "Bubble">>
<<removeEffect $target[0] _effect>>
<<break>>
<</if>>
<</for>>
<<else>>
<<if def _elntmsg>><<print _elntmsg>><</if>>$target[0].name takes $dmg damage!<br />
<<set $target[0].hp -= $dmg>>
<<deathcheck>>
<<if $target[0].dead is false and $target[0].offbalance is true>>
<<addeffect $target[0] "Knocked Down" -1>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "effectcalc">>
<<switch $args[0]>>
<<case "debuff">>
<<set $power = Math.round(($effbase+$effdamper*(_subject.get("Special")-_target.get("Special")))*$effweight)>>
<<if $power < $min_debuff>>
<<set $power = $min_debuff>>
<</if>>
<<case "buff">>
<<set $power = Math.round(($effbase+$effdamper*(_subject.get("Special")))*$effweight)>>
<<if $power < $min_buff>>
<<set $power = $min_buff>>
<</if>>
<</switch>>
<</widget>>
<<widget "DoT">>
/* Calculates damage from damage-over-time effects. */
/* args0 is subject; args1 effect index */
<<if $args[1] is "test">>
<<set _name to $args[2]>>
<<set _weight to $args[3]>>
<<set _power to $args[4]>>
<<else>>
<<set _name to $args[0].effects[$args[1]].name>>
<<set _weight to $args[0].effects[$args[1]].weight>>
<<set _power to $args[0].effects[$args[1]].power>>
<</if>>
<<switch _name>>
<<case "Burning" "Perdition">>
/* effect base vs. defender's DEF */
<<set _dmg = _weight*($base+($damper*(_power - $args[0].get("Defense"))))>>
<<case "Poisoned">>
/* effect base vs. defender's SPC */
<<set _dmg = _weight*($base+($damper*(_power - $args[0].get("Special"))))>>
<<case "Doom">>
/* Effect base, unblockable. There is no refuge. */
<<set _dmg = _weight*($base+($damper*(_power))>>
<<case "proportional">>
<<set _dmg = $args[0].maxhp*_weight>>
<<case "fixed">>
<<set _dmg = _power>>
<</switch>>
<<set _dmg = Math.round(_dmg)>>
<<if _dmg < $min_DoT>>
<<set _dmg = $min_DoT>>
<</if>>
<<if $args[2] is "test">>
/* do nothing; _dmg will be preserved for later use */
<<elseif $args[2] is "status">>
<<print _dmg>>
<<else>>
<<set $dmg to _dmg>>
<</if>>
<</widget>><<widget "enemytarget">>
<<set _continue to true>>
/* Priority 1: Martyr takes all hits */
<<find "$puppets" "martyr" "true">>
/* Note that this assumes only one Martyr can be active at a time. If multiple are active, this will only find the first in the array. */
<<if _pos >= 0>> /* will be -1 if nothing found */
<<set $target = [$puppets[_pos],"$puppets["+_pos+"]"]>>
<<set _continue to false>>
<</if>>
<<if _continue isnot true>>
/* do nothing */
<<else>>
/* Priority 2: aggro enemies bypass normal targeting */
<<if $subject[0].aggro and def $attacker>>
<<set $target = [$puppets[$attacker],"$puppets["+$attacker+"]"]>> /* always targets the puppet that attacked last */
<<if $target[0].dead isnot true>>
<<set _continue to false>>
<</if>>
/* Note that this bypasses untargetable as well */
<</if>>
<<if _continue isnot true>>
/* do nothing */
<<else>>
/* mercy setting */
<<if $subject[0].mercy < 1 or $args.includes("smart")>>
/* if enemy's mercy is below 1, they will always use smart targeting */
<<set _mercy = 2>>
<<else>>
/* 1 in (mercy) chance of random targeting, to give players a break */
<<set _mercy = random(1,$subject[0].mercy)>>
<</if>>
<<set _hitlist = []>>
/* smart targeting */
<<if $difficulty is "hard">>
<<if _mercy > 1>>
<<if not $args.includes("ignore downed")>>
/* This clause makes enemies preferentially target off-balance and downed puppets. */
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true and _puppet.untargetable isnot true>>
<<if _puppet.offbalance or _puppet.down>>
/* if effect found, add their address to the hitlist */
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if $args.includes("debuff")>>
/* Debuffing attacks will preferentially target puppets with lowered Special, as they will be more strongly affected */
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true and _puppet.untargetable isnot true>>
<<if _puppet.get("Special") < _puppet.baseSpc>>
/* if spc-reducing debuff found, add to hitlist */
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _hitlist.length > 0>>
<<set _continue to false>>
<</if>>
<</if>>
/* normal targeting */
<<if _continue is true>>
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true and _puppet.untargetable isnot true>>
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</for>>
<</if>>
<<elseif $difficulty is "medium">>
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true and _puppet.untargetable isnot true>>
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
/* smart targeting */
<<if _mercy > 1>>
<<if not $args.includes("ignore downed")>>
/* This clause makes enemies preferentially target off-balance and downed puppets. */
<<if _puppet.offbalance or _puppet.down>>
/* if effect found, add their address to the hitlist */
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<<if $args.includes("debuff")>>
/* Debuffing attacks will preferentially target puppets with lowered Special, as they will be more strongly affected */
<<if _puppet.get("Special") < _puppet.baseSpc>>
/* if spc-reducing debuff found, add to hitlist */
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</if>>
<</if>> /* end mercy if */
<</for>>
<<elseif $difficulty is "easy">>
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true and _puppet.untargetable isnot true>>
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</for>>
<</if>> /* end difficulty if */
<<if def _hitlist and _hitlist.length > 0>>
<<set _n = random(0,_hitlist.length-1)>>
<<set _t = _hitlist[_n]>>
<<set $target = [$puppets[_t],"$puppets["+_t+"]"]>>
<<else>>
/* If a target wasn't found, only possibilities are that everyone's dead or untargetable. */
<<set _k = 0>>
<<for _puppet range $puppets>>
<<if _puppet.dead>>
<<set _k++>>
<</if>>
<</for>>
<<if _k eq $puppets.length>>
/* everyone's dead, just stop and the game over message will display next passage */
<<else>>
/* everyone's untargetable, run the check again without untargetable protection */
<<set _hitlist = []>> /* reset hitlist */
<<for _i, _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<run _hitlist.push(_i)>>
<<if _puppet.firefly is true>>
<<run _hitlist.push(_i)>>
<</if>>
<</if>>
<</for>>
<<if def _hitlist and _hitlist.length > 0>>
<<set _n = random(0,_hitlist.length-1)>>
<<set _t = _hitlist[_n]>>
<<set $target = [$puppets[_t],"$puppets["+_t+"]"]>>
<<else>>
<<print "ERROR: No target found\n">>
<</if>>
<</if>>
<</if>>
/* protection check */
<<if $target[0] isnot null and $target[0].protected>>
/* Note that this assumes only one Protector effect can be active at a time. */
<<find "$puppets" "protector" "true">>
<<if _pos eq -1>>
<<print "ERROR: Protected character with no protector\n">>
<<else>>
<<print $puppets[_pos].name+" took the hit for "+$target[0].name+"!\n">>
<<set $target to [$puppets[_pos],"$puppets["+_pos+"]"]>>
<</if>>
<</if>>
<</if>>
<</if>>
<<unset _hitlist>>
<</widget>>
<<widget "allytarget">>
<<set _hitlist = []>>
<<for _i, _enemy range $enemies>>
<<if _enemy.dead isnot true>>
<<run _hitlist.push(_i)>>
<</if>>
<</for>>
<<set _n = random(0,_hitlist.length-1)>>
<<set _t = _hitlist[_n]>>
<<set $target to [$enemies[_t],"$enemies["+_t+"]"]>>
<<unset _hitlist>>
<</widget>>
<<widget "dispeltarget">>
<<set _threshold to $args[0]>>
<<set _go to false>>
<<set _temp to 0>>
<<set _hitlist to []>>
<<for _i, _puppet range $puppets>>
<<if $args[1] isnot "mass">>
<<set _temp to 0>>
<</if>>
<<for _effect range _puppet.effects>> /* Search for buffs */
<<if _effect.buff is true and _effect.sticky isnot true>>
<<if _effect.name is "Blessing">>
<<set _temp += 3>> /* Blessings are higher priority to dispel */
<<else>>
<<set _temp += 1>>
<</if>>
<</if>>
<</for>>
<<if $args[1] isnot "mass">>
<<if _temp >= _threshold>>
<<run _hitlist.push(_i)>> /* If someone has a buff, make them a possible target */
<</if>>
<</if>>
<</for>>
<<if ($args[1] isnot "mass" and _hitlist.length eq 0) or ($args[1] is "mass" and _temp < _threshold)>>
<<set _go to false>> /* If no one has any buffs, there's no point in using this; reroll */
<<else>>
<<set _go to true>>
<<if $args[1] isnot "mass">> /* mass dispel doesn't need to pick a target */
<<set _n = random(0,(_hitlist.length-1))>>
<<set _t = _hitlist[_n]>>
<<set $target = [$puppets[_t],"$puppets["+_t+"]"]>>
<</if>>
<</if>>
<</widget>>
<<widget "multihit">>
<<set _hits = $args[0]>>
<<for _h = 1; _h <= _hits; _h++>>
<<if $args[1] is "spread">> /* careful, this means you have to call enemytarget outside this widget if this isn't a spread attack */
<<enemytarget "ignore downed">>
<</if>>
<<echodamage>>
<</for>>
<</widget>>/* Refreshes puppets to resting states. Use this to tidy up any flags or changes that might occur in battle. */
<<widget "refreshPuppets">>
<<for _puppet range $puppets>>
<<set _puppet.hp = _puppet.maxhp>>
<<set _puppet.en = 5>>
<<for _effect range _puppet.effects>>
<<set _mask = true>>
<<removeEffect _puppet _effect "pierce">>
<</for>>
<<setactions _puppet>> /* in case of any changes, such as with Rogue's crossbow */
<</for>>
<</widget>><span id="content"><b>The Bard</b> has a little bit of everything. Traditionally, they are a storyteller who often finds -- or inserts -- themselves at the center of those very stories. Their traveling lifestyle requires a diverse set of skills, and their wit and mockery often gets them into trouble. They have some of Rogue's cunning, Fighter's skill, and Mage's esoteric knowledge... but not all of it. They are the jack-of-all-trades, a dabbler in everything but a master of nothing -- except, perhaps, adaptability.
Bard can mimic the basic functionality of all three specialists, but lacks access to their more advanced techniques. They're useful if you find a specialist unsuited for a particular challenge, but do not wish to forgo all their abilities entirely. Their own specialty is the power of word itself: their jokes and stories are so compelling they can become true, to an extent. They can weave these tales quickly, but the results are only as resilient as the spoken word: that is to say, not very much.
<<back>>
<i>Tips:
Bard's debuffs are less powerful than Rogue's, even without accounting for their lower Special. The key is that they cost only half the Energy. Basic debuffs can be applied multiple times, so if you use them continuously you can rack up an appreciable effect.
Though it uses the same variable cost feature as Mage's spells, Shout doesn't do anything special at 10 EN. That's the price of forgoing a specialty! A 10-point Shout will still be quite powerful, however.
The one thing Bard can't do at all is pierce armor. Against a tough foe, you'll want to keep Fighter in the party.</i>
Bard's abilities are:
<<find "$All_Puppets" "name" "\'Bard\'">>
<<actionlist $All_Puppets[_pos]>>
</span><span id="status"><<include "party manager reserve">></span><span id="content"><center>Active puppets:</center>
<<nobr>>
<div class="actors" id="puppets">
<<include "party manager puppets">>
</div>
<</nobr>>
A list of all available puppets is on the right. To swap out an active puppet, click on them and then on the puppet you want to add.
[[Return to the Hub|Hub]]
</span><<for _i, _puppet range $puppets>>
<div class="actor" @id="_i">
<center>
<<capture _i>>
<<link _puppet.name>>
<<if def _s>><<run $('#' + _s).removeClass("selected")>><</if>>
<<set _s = _i>>
<<run $('#' + _i).addClass("selected")>>
<<replace "#status">><<include "party manager reserve">><</replace>>
/*<<replace "#puppets">><<include "party manager puppets">><</replace>>*/
<</link>>
<</capture>>
</center><br/>
<<for _k, _v range _puppet.stats>>
<span class="statname"><<print _k>>:</span>
<<print _puppet.get(_k)>>
<br/>
<</for>>
</div>
<</for>><<set _names = []>>
<<for _p range $puppets>>
<<run _names.push(_p.name)>>
<</for>>
<<for _puppet range $All_Puppets>>
<span class="statname">
<<if def _s and !_names.includes(_puppet.name)>>
<<capture _puppet>>
<<link _puppet.name>>
<<set $puppets[_s] = _puppet>>
<<unset _s>>
<<replace "#puppets">><<include "party manager puppets">><</replace>>
<<replace "#status">><<include "party manager reserve">><</replace>>
<</link>>
<</capture>>
<<else>>
_puppet.name
<</if>>
</span><br/><br/>
<</for>>/* Where the action actually happens. Kept separate from action phase for modularity purposes. */
<<switch $action>>
<<case "rest" "struggle" "Reload" "Procure">>
/* These actions display no action text and take the player immediately back to the battle hub. */
<<switch $action>>
<<case "rest">>
<<if $subject[0].winded is true>>
<<for _effect range $subject[0].effects>>
<<if _effect.name is "Winded">>
<<removeEffect $subject[0] _effect>>
<</if>>
<</for>>
<</if>>
<<case "struggle">>
<<for _effect range $subject[0].effects>>
<<if _effect.name is "Knocked Down">>
<<removeEffect $subject[0] _effect>>
<</if>>
<</for>>
<<case "Reload">>
<<find "$subject[0].actions" "name" "\'Reload\'">>
<<set $subject[0].actions[_pos] = $Crossbow>>
<<case "Procure">>
<<run $inventory.get($item_to_procure).stock += 1>>
<</switch>>
<<goto "Battle!">>
<<default>>
/* First is action use text. A regular action takes the form "Actor uses..." Items take the form "Actor uses a/n..." */
<<if $item is true>>
<<switch $action>>
<<case "Adrenaline">>
$subject[0].name injects a shot of adrenaline.
<<case "Stoneskin">>
$subject[0].name uses some Stoneskin formula.
<<case "Grenade">>
$subject[0].name chucks a grenade.
<<case "Flamethrower">>
$subject[0].name bathes your enemies in flame.
<<case "Gas Bomb">>
$subject[0].name throws a bomb filled with noxious gas.
<<case "Calamity Bomb">>
$subject[0].name throws a calamity bomb.
<<default>>
$subject[0].name uses a<<if $action is "Antidote" or $action is "Asprin">>n<</if>> $action.
<</switch>>
<<elseif $action is "Sword">>
$subject[0].name swings their sword with perfect form.
<<elseif $action is "Punch">>
$subject[0].name's fist slams into the enemy.
<<elseif $action is "Hammer">>
$subject[0].name draws their warhammer from their back and brings it down on the enemy in a crushing blow.
<<elseif $action is "Knife">>
$subject[0].name draws two knives and rushes in, slashing with one hand and stabbing with the other.
<<elseif $action is "Crossbow">>
$subject[0].name fires their crossbow with a <i>twang</i>.
<<elseif $action is "Rapier">>
$subject[0].name elegantly stabs the foe with their rapier.
<<elseif $action is "Dagger">>
$subject[0].name draws an ornate dagger and slashes it twice across the enemy.
<<elseif $action is "Shot">>
$subject[0].name fires <<if $cost == 1>>an arrow<<else>>a volley of arrows<</if>>.
<<elseif $action is "Soulshot">>
$subject[0].name fires the ghost of an arrow.
<<elseif $action is "Explosive Bolt">>
$subject[0].name fires an explosive bolt. The explosion is magnificent.
<<elseif $action is "Club">>
$subject[0].name nonviolently clubs the enemy over the head.
<<elseif $action is "spare">>
/* no text */
<<else>>
$subject[0].name uses "$action".<<switch $action>><<case "Call to Arms" "Walled City" "Age of Enlightenment" "Martyr" "Hunter" "Mercy">><<default>><br/><</switch>>
<</if>>
<<if $scenario is "su1" and $target isnot null>>
/* When vs. the Crystal Gems, the Gems will take hits for Steven if you try to attack him. */
<<if $target[0].name is "Steven">>
<<if $enemies[1].dead is false>>
/* Garnet is the first to defend him */
$enemies[1].name's head snaps towards you and she jumps in the way of your attack, leaving Steven unharmed.
<<set _t to 1>>
<<elseif $enemies[0].dead is false>>
/* If Garnet is poofed, Pearl plays defense */
$enemies[0].name screams, "STEVEN!!!" and throws herself into your attack without hesitation.
<<set _t to 0>>
<<elseif $enemies[2].dead is false>>
/* If Garnet and Pearl are poofed, Amethyst plays defense */
$enemies[2].name yells, "Pick on someone your own size!" and throws herself in front of Steven.
<<set _t to 2>>
<<else>>
<<set _t to 3>> /* this is Steven's index; he is vulnerable */
<</if>>
<<set $target to [$enemies[_t],"$enemies["+_t+"]"]>>
<br/>
<<else>>
<<set $bully to false>> /* If you didn't target Steven, lose out on Bully achievement */
<</if>>
<</if>>
/* Then descriptive text. */
<<switch $action>>
/* Fighter */
<<case "Charge">>
$subject[0].name rushes up to the enemy and puts all their weight into the attack! In the process, they overextend themselves, and start to wobble a little.
<<case "Berserker">>
$subject[0].name's shield drops to the ground with a <i>clang</i>, and they grip their weapon with fiery determination. No holding back, now!
<<case "Defender">>
An expression of cool stillness passes over $subject[0].name's face as they hunker behind their shield, eyes peeled for all incoming attacks.
<<case "Meditate">>
$subject[0].name stops, and closes their eyes. Their sudden tranquility is discordant with the chaos of the battle. They take a deep breath and let it out, seemingly unaware of the world around them -- and, strangely, the world seems to pass them by as well. A physical weight seems to lift from them, and they glow with newfound purpose.
<<case "Protector">>
Without hesitation $subject[0].name jumps in front of their charge, shielding them from all harm.
/* Rogue */
<<case "Something in your eye">>
"Hey," you say. "Something in your eye."<br/>
'Something' turns out to be a fistful of dirt.
<<case "Poison Prick">>
$subject[0].name feints to the side, then with blinding speed draws a tiny concealed knife, stabbing it into the enemy like a needle. The skin around it breaks into welts and sickly purple splotches.
<<case "Off Your High Horse">>
$subject[0].name leaps forward, twirling their knife in a strange pattern before slicing it across the enemy. Glimmering lines of energy trail after it like strands of cobweb, then wink out of existence.
<<case "Flurry">>
With uncharacteristic unsubtlety, $subject[0].name charges forward, swinging their blades in a whirlwind of flashing steel. Not every swing connects, but it doesn't need to. The enemy stumbles and sways from the pressing assault, looking like they could be knocked over by a light breeze. $subject[0].name grins and leaps away, their job done.
<<case "A Farewell to Arms">>
$subject[0].name pauses, their eyes flicking over their opponent. They raise their knife level with their eyes, and the next instant lunge forward with a crippling stab to the arm joints.
<<case "Below the Belt">>
$subject[0].name pauses, their eyes flicking over their opponent. Suddenly they strike out like a viper, ramming a sharp kick into an exposed weak point.
<<case "Dead Ringer">>
$subject[0].name kicks dust into their opponent's eyes, disorienting them just long enough for them to ram their dagger's pommel straight into their temple.
<<case "Sneak">>
The arena should be well-lit, but as $subject[0].name presses themselves against the wall, their surroundings suddenly become dimmer. You blink, and suddenly you can't tell where they end and the shadows begin.
/* Mage */
<<case "Focus">>
$subject[0].name holds out a hand. The motion is calm and easy, like trailing a hand through a forest stream. Glimmering motes of multicolored light settle on it like dew, trickling into the center of their palm before vanishing with a soft glow.
<<case "Sacrifice">>
$subject[0].name presses their hand into a fist so tight it draws blood. As you watch, their blood changes from a thick red into an inky black that streams away as if you are underwater. In an instant it is gone, leaving $subject[0].name with only a faint scar.
<<case "Blast">>
<<switch $cost>>
<<case 3>>
Mage raises a hand, and an orb of glowing blue-white energy shoots out of their palm.
<<case 4>>
Mage raises a hand, and a missile of glowing blue-white energy shoots out of their palm, showering shimmering motes like snow.
<<case 5 6>>
Mage raises a hand, and blue-white energy erupts from it like a geyser, blasting into the enemy.
<<case 7 8>>
Mage raises both of their hands, and blue-white energy erupts in front of them in a chaotic blast, glowing tendrils arcing against the air and ground as the enemy is eveloped in waves of destruction.
<<case 9>>
Mage raises both of their hands, glowing with power. Countless rays of blue-white energy spread out in all directions before curving in and condensing into a huge, powerful beam.
<</switch>>
<<case "Indignant Variati">>
$subject[0].name calmly steps forward, and raises a hand to the heavens. In an instant, the sky is suddenly ablaze with wrathful fire. Fire and lightning rain down from the inferno to strike the earth, blasting the enemy in a terrifying and beautiful display of utter destruction.
<<case "Fireball">>
<<switch $cost>>
<<case 4>>
Mage waves a hand, and a ball of orange flame bursts into existence to fly towards the enemy, igniting in an impressive display of fire that clings to the enemy's skin.
<<case 5>>
Mage waves a hand, and a ball of yellow flame bursts into existence to fly towards the enemy, igniting in a magnificent display of fire that clings to the enemy's skin.
<<case 6 7 8>>
Mage throws out their hand like a punch. A jet of flame shoots out like a comet, swallowing the enemy in fire.
<<case 9>>
Mage points a finger at the enemy, and a perfect sphere of orange-red flame shoots out like a missile. When it connects it lights up like a firework, exploding in a brilliant inferno.
<</switch>>
<<case "Perdition">>
Mage raises their palms as if lifting a great weight, and the enemy is suddenly enveloped in a pillar of screaming white fire. The ember, lodged in the enemy's heart, is unquenchable.
<<case "Restoration">>
$subject[0].name waves their hands in smooth, wide motions, as if polishing a surface. When they're finished they stretch their hands out imperiously, and positive energy washes over $target[0].name in a bright burst.
<<case "Salvation">>
$subject[0].name spreads their hands wide, exultant. The curses afflicting your puppets condense into balls of dark energy before bursting in brilliant showers of light. The glow swirls around them, enveloping them in protective energy.
<<case "Neutralize">>
$subject[0].name waves their hands in contracted, sprialling motions, as if gathering up dust. When they're finished, they swipe a hand lazily to the side as if in dismissal. You see $target[0].name's magic flash and sputter, fading away like mist.
<<case "Annulment">>
$subject[0].name places their hand out, palm up. With violent suddenness they close it into a fist. You suddenly see the enchantments aiding the enemy clear as day, little balls of energy orbiting them like little planets -- before they all shatter at once.
<<case "Curse">>
$subject[0].name stares intently, then calmly raises a hand to point at the enemy. $target[0].name sways, and the air around them suddenly looks dingier.
<<case "Forsaken">>
$subject[0].name does not even move. They only spare $target[0].name a look, and $target[0].pr.obj are suddenly drowned in darkness.
<<case "Blessing">>
$subject[0].name raises their arms skyward, then clasps their hands together as if in prayer. They suddenly let go, and wave their hands over $target[0].name with a flourish. Motes of light fall over $target[0].pr.obj, making $target[0].pr.obj glow with a strange aura.
<<case "Ascension">>
$subject[0].name raises their arms skyward. Their muscles strain and their fists suddenly clench, as if they are trying to grasp the Sun itself. Perhaps they succeed: their hands are suddenly effulgent with light, which they push down into the earth. The ground glows and your puppets are bathed in geysers of light, radiant with energy.
<<case "Favor">>
$subject[0].name clasps one hand over their heart, and extends another towards $target[0].name. Glowing blue energy flows between them.
<<case "Inspiration">>
$subject[0].name places their palm flat below their mouth. They close their eyes, and blow out a breath towards $target[0].name. The breath glows with a strange energy, wrapping around $target[0].name. Instantly, they look look livelier.
/* Bard */
<<case "Shout">>
$subject[0].name projects their voice into a wave of crushing force.
<<case "Non-Sequitor">>
$subject[0].name says something so random the enemy has to stop to process it. While they're doing that, $subject[0].name socks them in the face.
<<case "Insult">>
$subject[0].name insults the opponent's fighting style so wickedly they are crushed by despair.
<<case "Joke">>
$subject[0].name makes a painfully bad joke.
<<case "Equivocate">>
$subject[0].name leads the enemy on a meandering and nonsensical argument. It's irritating to everyone, but $target[0].name gets the worst of it.
<<case "Provoke">>
$subject[0].name runs around like a headless chicken while insulting everyone's parentage.
<<case "Rewrite">>
$subject[0].name crafts a personal narrative so compelling it overwrites $target[0].name's state of being. All the forces acting upon $target[0].pr.obj vanish like they were never even there.
/* Archer */
<<case "Exacerbate">>
$subject[0].name pulls out a massive, wicked arrow with a head of twisted, barbed metal; it looks more like a harpoon than an arrow. They draw their bowstring to the limit, quivering with tension. Their eyes flick over their opponent, scanning for the slightest weakness. Then, with a suddenness that makes you jump, they let the arrow fly.
<<case "Mark">>
$subject[0].name stares with burning intensity, and a target flares into existence over $target[0].name.
/* Cleric */
<<case "Downfall">>
$subject[0].name plants their feet firmly. They swing their staff around in wide, twirling motions, building up momentum before charging $target[0].name head-on and bringing it down like a judgment from the heavens.
<<case "Assured Aegis">>
$subject[0].name places a hand over $target[0].name like a benediction.
<<case "Lifegiver">>
$subject[0].name cradles $target[0].name. Vibrant green energy flows into $target[0].pr.pos wounds, and the broken flesh knits back together.
/* Witch */
<<case "Pox">>
$subject[0].name points a finger at $target[0].name, and $target[0].pr.obj instantly breaks out in boils that swell and burst. It looks pretty painful.
<<case "Gift">>
$subject[0].name exchanges a look with $target[0].name, and gives them a slight nod.
<<case "Miracle">>
$subject[0].name kneels down, and spreads their hand over the earth. They whisper something you can't hear. There is a pause, and then flowers break through the ground in beautiful blooms. Your puppets are glowing with energy.
<<case "Forgetfulness">>
$subject[0].name slowly waves a hand over $target[0].name's eyes.
<<case "Frenzy">>
$subject[0].name bites their thumb, and smears the blood over $target[0].name's face in a strange pattern. Their eyes narrow into slits.
<<case "Cleanse">>
$subject[0].name calmly waves a hand, and $target[0].name's effects are suddenly gone.
<<case "Renewal">>
$subject[0].name lifts their hands to the sky, palms up. There is a silence in the air, and then you hear it: the crashing of waves. From out of nowhere comes an unstoppable tide of crystal-clear water, flowing over the whole arena. As it passes over everyone, you see motes of glowing magic dissolve into it like flecks of dirt. Then the flood passes, and the arena is back to normal. Everyone is completely dry.
<<case "Stasis">>
$subject[0].name snaps their fingers. The air around $target[0].name seems to freeze for a moment, then returns to normal.
<<default>>
/* no text */
<</switch>>
<br/><br/>
/* Then effects. */
<<switch $action>>
<<case "kill">>
<<set $target[0].hp to 0>>
<<deathcheck>>
/* Fighter */
<<case "Sword" "Punch" "Hammer">>
<<echodamage $target[0]>>
<<case "Charge">>
<<echodamage $target[0]>>
<<addeffect $subject[0] "Off-Balance" 1>>
<<case "Berserker">>
<<addeffect $subject[0] "Berserker" 1>>
<<case "Defender">>
<<addeffect $subject[0] "Defender" 1>>
<<case "Meditate">>
<<for _effect range $subject[0].effects>>
<<if _effect.buff is false and _effect.sticky isnot true>>
<<removeEffect $subject[0] _effect>>
<</if>>
<</for>>
<<addeffect $subject[0] "Chi Shield" $duration>>
<<case "Protector">>
<<addeffect $subject[0] "Protector" $duration $subject[0]>>
<<case "Martyr">>
<<addeffect $subject[0] "Martyr" 1>>
/* Rogue */
<<case "Knife">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<echodamage $target[0]>>
<</if>>
<<case "Crossbow">>
<<echodamage $target[0]>>
<<find "$subject[0].actions" "name" "\'Crossbow\'">>
<<set $subject[0].actions[_pos] = $Reload>>
<<case "Something in your eye">>
<<addeffect $target[0] "Stunned" 1>>
<<case "Poison Prick">>
<<echodamage $target[0]>>
<<addeffect $target[0] "Poisoned" $duration $subject[0]>>
<<case "Dancing Strikes">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<echodamage $target[0]>>
<<addeffect $target[0] "Dizzy" 3>>
<</if>>
<<case "Flurry">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<echodamage $target[0]>>
<<addeffect $target[0] "Off-Balance" 1>>
<</if>>
<</if>>
<<case "Off Your High Horse">>
<<echodamage $target[0]>>
<<if $target[0].dead is false and $target[0].stasis isnot true>>
<<for _i = $target[0].effects.length-1; _i >= 0; _i-->>
<<set _effect = $target[0].effects[_i]>>
<<if _effect.buff is true and _effect.sticky isnot true>>
<<removeEffect $target[0] _effect>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case "A Farewell to Arms">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<addeffect $target[0] "Injury" $duration $subject[0]>>
<</if>>
<<case "Below the Belt">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<addeffect $target[0] "Pain" $duration $subject[0]>>
<</if>>
<<case "Dead Ringer">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<addeffect $target[0] "Headache" $duration $subject[0]>>
<</if>>
<<case "Sneak">>
<<addeffect $subject[0] "Hidden" $duration>>
/* Mage */
<<case "Focus">>
<<set $subject[0].en -= $cost>>
<<set $subject[0].en += 4>>
Mage gains 4 Energy!
<<case "Sacrifice">>
Mage loses $sacrificeHP HP!<br/>
Mage gains 2 Energy!
<<set $subject[0].hp -= $sacrificeHP>>
<<set $subject[0].en += 2>>
<<set $SacrificeUsed to true>> /* thinking it may be too exploitable if you can use this multiple times per turn */
<<case "Blast">>
<<echodamage $target[0]>>
<<case "Fireball">>
<<echodamage $target[0]>>
<<addeffect $target[0] "Burning" $duration $subject[0]>>
<<case "Restoration">>
<<for _id range $removed_effects>>
<<removeEffect $target[0] $target[0].effects[_id]>>
<</for>>
<<set $removed_effects = []>>
<<case "Neutralize">>
<<for _id range $removed_effects>>
<<removeEffect $target[0] $target[0].effects[_id]>>
<</for>>
<<set $removed_effects = []>>
<<case "Curse">>
<<addeffect $target[0] "Curse" $curse_time $subject[0]>>
<<case "Blessing">>
<<addeffect $target[0] "Blessing" $blessing_time $subject[0]>>
<<case "Favor">>
$target[0].name gains $cost Energy!
<<set $target[0].en += $cost>>
<<case "Inspiration">>
$target[0].name gains $cost Energy and an additional action!
<<set $target[0].en += $cost>>
<<if $target[0].isDone is true>>
<<set $target[0].isDone to false>>
<<else>>
<<set $target[0].inspired to true>>
<</if>>
<<case "Indignant Variati">>
<<echodamage>>
<<addeffect $target[0] "Knocked Down" -1>>
<<addeffect $subject[0] "Winded" 3>>
<<case "Perdition">>
<<echodamage>>
<<addeffect $target[0] "Perdition" -1 $subject[0]>>
<<case "Ascension">>
<<for _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<addeffect _puppet "Blessing" 5 $subject[0]>>
<</if>>
<</for>>
<<case "Forsaken">>
<<addeffect $target[0] "Forsaken" 5 $subject[0]>>
<<case "Salvation">>
<<for _puppet range $puppets>>
<<if _puppet.dead isnot true>>
<<for _effect range _puppet.effects>>
<<if _effect.buff isnot true>>
<<removeEffect _puppet _effect>>
<</if>>
<</for>>
<<addeffect _puppet "Chi Shield" 4>>
<</if>>
<</for>>
<<case "Annulment">>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true>>
<<for _effect range _enemy.effects>>
<<if _effect.buff is true>>
<<removeEffect _enemy _effect>>
<</if>>
<</for>>
<</if>>
<</for>>
/* Bard */
<<case "Rapier">>
<<echodamage $target[0]>>
<<case "Dagger">>
<<echodamage $target[0]>>
<<if $target[0].dead is false>>
<<echodamage $target[0]>>
<</if>>
<<case "Shout">>
<<echodamage $target[0]>>
<<case "Non-Sequitor">>
<<echodamage $target[0]>>
<<addeffect $target[0] "Off-Balance" 1>>
<<case "Insult">>
<<addeffect $target[0] "Injury" $duration $subject[0]>>
<<case "Joke">>
<<addeffect $target[0] "Pain" $duration $subject[0]>>
<<case "Equivocate">>
<<addeffect $target[0] "Headache" $duration $subject[0]>>
<<case "Provoke">>
<<addeffect $subject[0] "Martyr" 1>>
<<case "Rewrite">>
<<for _effect range $target[0].effects>>
<<if _effect.sticky != true>>
<<removeEffect $target[0] _effect>>
<</if>>
<</for>>
/* Archer */
<<case "Shot">>
<<echodamage>>
<<case "Soulshot">>
<<echodamage "nocalc">>
<<case "Exacerbate">>
/* For players, this code is handled in the preview already, but it is preserved here for convenience.
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<set $weight += 0.25>>
<</if>>
<</for>>
*/
<<echodamage>>
<<case "Explosive Bolt">>
<<echodamage>>
<<set _temp = $target[0]>>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true and _enemy neq _temp and _enemy.name isnot "Steven">>
<<set $target[0] = _enemy>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<case "Mark">>
<<addeffect $target[0] "Marked" $duration>>
<<case "Mercy">>
<<for _effect range $target[0].effects>>
<<if _effect.name == "Marked">>
<<removeEffect $target[0] _effect>>
<</if>>
<</for>>
<<case "Hunter">>
<<addeffect $subject[0] "Hunter" 1>>
<<case "Call to Arms">>
<<for _puppet range $puppets>>
<<addeffect _puppet "ATK Boost" $duration $subject[0]>>
<</for>>
/* Cleric */
<<case "Club">>
<<echodamage>>
<<case "Downfall">>
/* compact version preserved for convenience:
<<for _effect range $target[0].effects>>
<<if _effect.buff is true>>
<<set $weight += 0.2>>
<<if _effect.sticky isnot true>>
<<set _mask to true>>
<<removeEffect $target[0] _effect>>
<</if>>
<</if>>
<</for>>
*/
<<echodamage>>
<<for _id range $removed_effects>>
<<removeEffect $target[0] $target[0].effects[_id]>>
<</for>>
<<case "Assured Aegis">>
<<addeffect $target[0] "Shield" $duration>>
/*<<addeffect $target[0] "Chi Shield" $duration>>*/
<<case "Lifegiver">>
<<set $subject[0].hp -= $LIFEGIVER_HP>>
<<set $target[0].hp += $LIFEGIVER_HP>>
<<if $target[0].hp > $target[0].maxhp>>
<<set $target[0].hp = $target[0].maxhp>>
<</if>>
$subject[0].name gives $LIFEGIVER_HP HP to $target[0].name!
<<case "Walled City">>
<<for _puppet range $puppets>>
<<addeffect _puppet "DEF Boost" $duration $subject[0]>>
<</for>>
/* Witch */
<<case "Pox">>
<<echodamage>>
<<addeffect $target[0] "Pain" $duration $subject[0]>>
<<case "Gift">>
$target[0].name gains $cost Energy!
<<set $target[0].en += $cost>>
<<case "Miracle">>
<<for _puppet range $puppets>>
<<set _puppet.en += 4>>
<<print "_puppet.name gains 4 Energy!\n">>
<</for>>
<<case "Forgetfulness">>
<<addeffect $target[0] "Stunned" 1>>
<<case "Frenzy">>
<<addeffect $target[0] "Frenzy" $duration $subject[0]>>
<<case "Cleanse">>
<<for _id range $removed_effects>>
<<removeEffect $target[0] $target[0].effects[_id]>>
<</for>>
<<set $removed_effects = []>>
<<case "Renewal">>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true>>
<<for _effect range _enemy.effects>>
<<if _effect.buff is true>>
<<removeEffect _enemy _effect "pierce">>
<</if>>
<</for>>
<</if>>
<</for>>
<<for _puppet range $puppets>>
<<if _enemy.dead isnot true>>
<<for _effect range _enemy.effects>>
<<if _effect.buff isnot true>>
<<removeEffect _puppet _effect "pierce">>
<</if>>
<</for>>
<</if>>
<</for>>
<<case "Age of Enlightenment">>
<<for _puppet range $puppets>>
<<addeffect _puppet "SPC Boost" $duration $subject[0]>>
<</for>>
<<case "Stasis">>
<<addeffect $target[0] "Stasis" $duration>>
/* Items */
<<case "Adrenaline">>
<<addeffect $target[0] "ATK Boost" $boost_time $subject[0]>>
<<case "Stoneskin">>
<<addeffect $target[0] "DEF Boost" $boost_time $subject[0]>>
<<case "Nootropic">>
<<addeffect $target[0] "SPC Boost" $boost_time $subject[0]>>
<<case "Antidote" "Fire Extinguisher" "Canned Air" "Healing Crystal" "Nanites" "Painkiller" "Asprin">>
<<switch $action>>
<<case "Antidote">>
<<set _eff to "Poisoned">>
<<case "Fire Extinguisher">>
<<set _eff to "Burning">>
<<case "Canned Air">>
<<set _eff to "Winded">>
<<case "Healing Crystal">>
<<set _eff to "Dizzy">>
<<case "Nanites">>
<<set _eff to "Injury">>
<<case "Painkiller">>
<<set _eff to "Pain">>
<<case "Asprin">>
<<set _eff to "Headache">>
<</switch>>
<<for _effect range $target[0].effects>>
<<if _effect.name == _eff>>
<<removeEffect $target[0] _effect>>
<</if>>
<<if $action == "Canned Air">>
<<set $target[0].en += 1>>
<</if>>
<</for>>
<<case "Panacea">>
<<for _effect range $target[0].effects>>
<<if _effect.buff isnot true>>
<<removeEffect $target[0] _effect>>
<</if>>
<</for>>
<<case "Bottled Chi">>
<<addeffect $target[0] "Chi Shield" 4>>
<<case "Stimulant">>
<<set $target[0].en += 5>>
$target[0].name gains 5 Energy!
<<case "Throwing Knife">>
<<echodamage>>
<<case "Powdered Glass">>
"Hey," you say. "Something in your eye."<br/>
"Something" turns out to be a hundred tiny shards of glass.<br/><br/>
The enemy ought to consider themselves lucky that injuries regenerate so quickly here.<br/><br/>
<<echodamage>>
<<addeffect $target[0] "Stunned" 1>>
<<case "Grenade">>
<<echodamage $target[0]>>
<<set _temp = $target[0]>>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true and _enemy neq _temp and _enemy.name isnot "Steven">>
<<set $target[0] = _enemy>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/2)>>
<<echodamage "nocalc">>
<</if>>
<</for>>
<<case "Flamethrower">>
<<set _temp to $enemies.length>>
<<for _enemy range $enemies>>
<<if $enemy.dead>>
<<set _temp -= 1>>
<</if>>
<</for>>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true and (_enemy.name isnot "Steven" or $event is true)>>
<<set $target[0] = _enemy>>
<<damagecalc $puppets $enemies>>
<<set $dmg = Math.round($dmg/_temp)>>
<<echodamage "nocalc">>
<<addeffect $target[0] "Burning" 5 $subject[0]>>
<</if>>
<</for>>
<<case "Gas Bomb">>
<<set _temp to $enemies.length>>
<<for _enemy range $enemies>>
<<if $enemy.dead>>
<<set _temp -= 1>>
<</if>>
<</for>>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true and (_enemy.name isnot "Steven" or $event is true)>>
<<set $target[0] = _enemy>>
<<damagecalc>>
<<set $dmg = Math.round($dmg/_temp)>>
<<echodamage "nocalc">>
<<addeffect $target[0] "Poisoned" 5 $subject[0]>>
<</if>>
<</for>>
<<case "Calamity Bomb">>
<<echodamage>>
<<addeffect $target[0] "Injury" 4 $subject[0]>>
<<addeffect $target[0] "Pain" 4 $subject[0]>>
<<addeffect $target[0] "Headache" 4 $subject[0]>>
<<case "Flashbang">>
<<for _enemy range $enemies>>
<<if _enemy.dead isnot true>>
<<set $target[0] = _enemy>>
<<addeffect $target[0] "Stunned" 1>>
<</if>>
<</for>>
<<case "spare">>
<<switch $enemy_to_spare>>
<<case "Gumball">>
Gumball laughs so hard he cries. "Wow! Wow, I really don't have to..." His expression snaps to suspicion with unsettling speed, and his head darts from side to side like a bird's. "This isn't a trick, is it? You're not gonna stab me in the back? I'm not gonna trip and break my neck? An anvil's not gonna fall from the sky?"<br/><br/>
He cowers for several seconds, but nothing happens. After a few more moments, he gingerly cracks an eye open. A heartbeat later, he's suddenly jumping wildly up and down, cackling frenziedly. "Ahahaha! Yes! <i>Yes!</i>" He raises his fist in triumph. "Guess who didn't get beaten to a pulp today? That's right, ME! Suck on that, Universe! SUCK! ON! TH--"<br/><br/>
Gumball slips on a stray pebble, falls back, hits his head, and instantly falls unconscious.<br/><br/>
<<set $enemies[0].dead to true>>
<<run $kills.push("Gumball")>>
<<set $surrender to false>>
<<case "Anais">>
You order $subject[0].name forward. They grasp Anais' hand, bending down to do so, and she shakes it firmly.<br/><br/>
"That's it," Anais says. "I'm glad we could resolve this like civilized -- PSYCHE!!"<br/><br/>
Before you can react, Anais pulls out a comically large syringe and stabs it into $subject[0].name, cackling maniacally. She leaps away as they stagger back.<br/><br/>
"Did you REALLY think I'd just let you win after what you did to my brothers?!" she screams. "Wattersons never give up! And now, that poison will give you a heart attack in three... two... one!"<br/><br/>
Without fanfare, $subject[0].name falls to the ground like a puppet with its stings cut. Which, you suppose, is pretty accurate.<br/><br/>
<<set $subject[0].hp to 0>>
<<deathcheck>>
<<set $surrender to false>>
<<set $anais_trap to true>>
<<case "Steven">>
You let Steven scuttle away with the gems in tow.
<<set $enemies[3].dead to true>>
<<set $surrender to false>>
<<set $steven_defeated to false>>
<</switch>>
<<default>>
This action doesn't do anything yet!
<</switch>>
<br/>
/* This section is for special scenarios, such as avengeance effects. */
<<if $surrender is true>>
<<switch $action>>
<<case "rest" "struggle" "spare">>
/* nothing happens */
<<default>>
<<switch $enemy_to_spare>>
<<case "Gumball">><br/>
Gumball sighs. "Well, it was worth a shot." He raises his fists, but halfheartedly. "Hey, you never know. Maybe I'll get lucky for once. Stranger things have happened!"<br/>
<<set $surrender to false>>
<<case "Anais">><br/>
"Eh, it was worth a shot." Anais steps back. "Alrighty then. Let's finish this your way, you barbarian."<br/>
<<set $surrender to false>>
<</switch>>
<</switch>>
<</if>>
<br/>
<</switch>><<widget "deathcheck">>
<<if $target[0].hp <= 0 and $target[0].dead is false>>
<<set $target[0].hp = 0>>
<<for _effect range $target[0].effects>>
<<set _mask to true>>
<<removeEffect $target[0] _effect>>
<</for>>
<<if $target[0] instanceof Enemy>>
<<run $kills.push($target[0].name)>>
<</if>>
<<if $target[0].deathMessage is "special">>
<<goto "specialdeath">>
<<else>>
<<set $target[0].dead to true>>
<<print $target[0].deathMessage>>
<</if>>
<<if $target[0].protected is true>>
<<find "$puppets" "name" $target[0].protectedBy>>
<<if _pos > -1>>
<<set _p = _pos>>
<<set _a = "$puppets["+_pos+"].effects">>
<<find _a "name" "\'Protector\'">>
<<removeEffect $puppets[_p] $puppets[_p].effects[_pos]>>
<</if>>
<<find "$enemies" "name" $target[0].protectedBy>>
<<if _pos > -1>>
<<set _p = _pos>>
<<set _a = "$enemies["+_pos+"].effects">>
<<find _a "name" "\'Protector\'">>
<<removeEffect $enemies[_p] $enemies[_p].effects[_pos]>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "deathcheckOLD">>
/* Old death check method that runs over all characters. Necessary if you plan to inflict damage without specifying a target. */
<<for _enemy range $enemies>>
<<if _enemy.hp <= 0 and _enemy.dead is false>>
<<set _enemy.hp = 0>>
<<run $kills.push(_enemy.name)>>
<<if _enemy.deathMessage is "special">>
<<goto "specialdeath">>
<<else>>
<<set _enemy.dead to true>>
<<print _enemy.deathMessage>>
<<for _effect range _enemy.effects>>
<<set _effect.duration to 0>>
<</for>>
<<effectmanager _enemy>> /* to strip effect flags, just in case they can still interfere during the turn */
<</if>>
<</if>>
<</for>>
<<for _puppet range $puppets>>
<<if _puppet.hp <= 0 and _puppet.dead is false>>
<<set _puppet.hp = 0>>
<<set _puppet.dead to true>>
<<print _puppet.deathMessage>>
<<for _effect range _puppet.effects>>
<<set _effect.duration to 0>>
<</for>>
<<effectmanager _puppet>>
<</if>>
<</for>>
<</widget>><span id="content">The <b>Archer</b> is a killer. They are the relentless hunter, the merciless assassin, the unerring sniper. They only know how to do one thing, but they know it well: utter devastation.
Archer's potential is even greater than Mage's. They can invest extra Energy to power up their attacks just like Mage, but their bow is even deadlier than Mage's Blast. And if that's still not enough, they need not restrict their attacks to just their own turn: with their ability to mark an enemy for death, they can keep attacking continuously until they are completely exhausted. The price for all this is that they don't know how to do anything else, including replenishing their own stock of arrows. Archer is powerful, but will burn out without support.
<<back>>
<i>Tips:
Archer has good synergy with Witch and Mage. Energy transfers can keep Archer going strong, and their high-weight abilities let them get the most out of Blessing and Frenzy.
Unlike Mark, Hunter attacks don't consume Energy. It might be wise to switch if you're low on Energy but still want to keep Archer active.
Archer's spell-like abilities don't have supercharges. Don't complain, a 10-point Shot is already as strong as Indignant Variati!</i>
Archer's abilities are:
<<find "$All_Puppets" "name" "\'Archer\'">>
<<actionlist $All_Puppets[_pos]>>
</span><span id="content">The <b>Cleric</b> is a true protector. They are an unwavering pillar of support to all who need them, their faith and optimism a greater shield than the mightiest armor. Though they're not the sharpest tool in the shed, there is very little that can truly bring them down.
Cleric's Defense rating is gargantuan, reducing most attacks against them to mere blemishes. Unfortunately, they can only chip away at enemies at the same rate. They won't be bringing down any titans on their own, but they can greatly extend the survivability of those who can. Their Assured Aegis lets them protect a puppet even when they can't be there themselves, and with the Defense bonus from Protector they become virtually invincible, stonewalling the enemy's offense completely.
<<back>>
<i>Tips:
Assured Aegis always protects to exactly the same degree, meaning it isn't hampered by Cleric's poor Special. This is a very good thing!
Downfall can rack up pretty good damage against a sufficiently buffed foe, but its high cost makes it prohibitive as a regular attack. For best use, save it for emergencies, such as if Mage or Witch goes down and the enemy's still buffing themselves to high heaven.
Beware of armor piercing attacks! Cleric has no more HP than anyone else, so they'll be hurt just as badly as your squishies. If you want to use Cleric for those battles, armor piercing enemies should be your priority targets.</i>
Cleric's abilities are:
<b>Firefly</b>
Passive. Enemies are twice as likely to target Cleric as other puppets.
<<find "$All_Puppets" "name" "\'Cleric\'">>
<<actionlist $All_Puppets[_pos]>>
</span><span id="content">The <b>Witch</b> is a master of the arcane. Rogue may have knowledge of the mundane and Mage may be learned in the fantastic, but Witch has both and far more besides. The title is feared, hated, respected and loved throughout history, and for good reason. The Witch is who you turn to when no one else is able -- or willing -- to help.
Witch's magic is subtler than Mage's, but perhaps more versatile. They are unparalleled in their capacity for effect manipulation, making the flow of magic dance to their tune. Their effect removal is one Energy point more efficient than Mage's, and they possess the unique ability to lock a battler's effects in place, keeping them active far past their normal expiration date. But magic's not all they can do: they'll surprise you with knowledge of devices and potions that put Rogue to shame. Of course, nothing comes without a price... their role is one for the shadows, and as such their ability for direct action is limited. They have almost nothing in the way of attacks, and are unlikely to defeat any opponents on their own.
<<back>>
<i>Tips:
Witch has good synergy with Archer. Energy transfers can keep Archer going, and their high-weight abilities put Frenzy to good use. The Pain from Witch's Pox is also to their benefit, especially if you can chain it against a Marked enemy.
Though some of Witch's abilities are superficially similar to Mage's, they have different effects when supercharged.</i>
Witch's abilities are:
<<find "$All_Puppets" "name" "\'Witch\'">>
<<actionlist $All_Puppets[_pos]>>
</span>