<<display "lswd_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "long"]]\n[[No|weaponswap]]
<<set $atk to Math.trunc($atk * setup.bal.patk)>>\n<<set $def to Math.trunc($def * setup.bal.pdef)>>\n<<set $mov to Math.trunc($mov * setup.bal.pmov)>>\n\n<<set $critmult to Math.trunc($critmult * setup.bal.critOdds)>>\n<<set $critdam to Math.trunc($critdam * setup.bal.critical)>>\n<<set $dodge to Math.trunc($dodge * setup.bal.ddgOdds)>>\n<<set $dispel to Math.trunc($dispel * setup.bal.dispOdds)>>\n\n<<set $maxgrit to Math.trunc($maxgrit * setup.bal.pgrit)>>\n<<set $grit to $maxgrit>>\n\n<<set $rageBuild to Math.trunc($rageBuild * setup.bal.rageB)>>\n<<set $rageDecay to Math.trunc($rageDecay * setup.bal.rageD)>>
''Attack''\n\nAttack the enemy to deal damage. Your current Attack Rating is <<print $atk>>. You can continue attacking until you don't have enough stamina left.\n\n[img[setup.ui.icons.ui_crit]] Your critical rating is: <<print Math.trunc($critchance)>>\n\n[img[setup.ui.icons.ui_crit]] Your critical bonus damage is: <<print Math.trunc($critdam - $atk)>>\n
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has dodged an enemy attack.\n\nDodging causes an enemy attack to have no effect. <<name>>'s change to dodge an attack is based on her Agility and equipment.\s\n<</dialog>>\n<<tutorialHook 'tut_onDodge'>>
While you can save the game yourself outside of combat and menus, the game will automatically save your progress at certain points.
<<set $allyname to "Ripley">>\n<<set $allynumber to 3.1>>\n\n<<set $allylvl to 18>>\n<<set $allymaxhealth to 4>>\n<<set $allymaxgrit to 245>>\n<<set $allyatk to 126>>\n<<set $allydef to 110>>\n<<set $allymov to 113>>\n<<set $allymagic to 103>>\n\n<<set $allyspecial to "chain">>\n<<set $specialname "Co-op Attack">>\n<<set $allyspec to 2>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>\n
Elesun can't hear what they're saying from here, but they both seem animated enough. She decides not to snoop, but does wave at Ripley, and she waves back before becoming lost in her conversation again.
<<set $spellname to "Focus">>\n<<set $schoolname to "Natural">>\n<<set $p_spellname to "Focus">>\n<<set $spell_ui to "focus_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 10>>\n\n<<set $satk to 1.1>>\n<<set $sdef to 1.1>>\n<<set $smov to 1.1>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $naturaltraining is 1>>\n\t<<set $satk to 1.2>>\n<<elseif $naturaltraining is 2>>\n\t<<set $sdef to 1.2>>\n\t<<set $satk to 1.2>>\n<<elseif $naturaltraining is 3>>\n\t<<set $sdef to 1.2>>\n\t<<set $satk to 1.2>>\n\t<<set $smov to 1.2>>\n<<endif>>
<<set $spellname to "Shadow Veil">>\n<<set $schoolname to "Dark">>\n<<set $p_spellname to "Shadow Veil">>\n<<set $spell_ui to "shad_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 20>>\n<<set $spellgrit to -20>>\n\n<<set $satk to 0.8>>\n<<set $sdef to 0.8>>\n<<set $smov to 1.1>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 20>>\n\n<<if $darktraining is 1>>\n\t<<set $spellgrit to -10>>\n<<elseif $darktraining is 2>>\n\t<<set $sdef to 0.9>>\n\t<<set $spellgrit to -10>>\n<<elseif $darktraining is 3>>\n\t<<set $satk to 0.9>>\n\t<<set $sdef to 0.9>>\n\t<<set $spellgrit to -10>>\n<<endif>>
{{{MAXIMIZE WINDOW TO VIEW TABLE!\n---------------------------------------------------------------------------------\n##::NAME..............HOW TO GET......................EFFECT/HOOK DESCRIPTION\n---------------------------------------------------------------------------------\n01::Demonkin..........Start...........................No effect. No hook.\n02::Unyielding One....Kill Aesil in Ch 1?.............Bonus chance to dispel.\n03::Dargon Slayer.....Defeat Alva (dragon)............Better move bonus.\n04::Dungeon Master....Play a game with the mercs......Chance to +grit on crit.\n05::Village Hero......Protect the village.............Chance to +grit on dodge.\n06::Gracious Host.....Help Harlaus with guests........Chance to +heart on desp.\n07::Chosen One........Defeat Akatosh..................Devil form. No hook.\n08::Dragonkin.........Call forth Arkan................Arkan. No hook.\n09::Apostate..........Learn hellish magic.............Hellish magic. No hook.\n10::True Druid........Help druids for free............Chance to +heart on dodge.\n11::True Neutral......Help druids for a price.........+DESP ATK\n12::Treasure Hunter...Help find the hidden treasure...Chance to +heart on dispel.\n13::Pilgrim...........Help the priests reach safety...Light magic. No hook.\n14::Vampire-Touched....Defeat Vampire Lord.............Chance to +heart on crit.\n15::Diplomat..........Get egg without fight...........+DODGE when unarmed\n16::Angel Slayer......Defeat the Elysian Beast........+REGEN\n17::Protector.........Save Irelith....................+CRIT DAMAGE\n18::Trickster.........Trick a god.....................Effects ending. No hook.\n19::Druid Queen.......Convince the druids to help.....Improved bangles. No hook.\n20::Lady of Pain......Learn to control your power.....Final form. No hook.\n21::Promised One......Save the world, again...........No effect. No hook.\n---------------------------------------------------------------------------------\n##::NAME..............HOW TO GET......................EFFECT/HOOK DESCRIPTION\n---------------------------------------------------------------------------------\n21 total titles.}}}
<<print $bugcode>>\n\nGo to [<<print $go>>]?\n\n[[Yes.|$go][$gamestart to 1]]\n\n[[Yes, with debug on.|$go][$gamestart to 1, $debug to 1]]\n\n[[Cancel.|debug_features]]\n\n\n
<<set $exitpassage to "1IreTrainerDone">><<image "IreSm">><<thumb>>"You ready then?" Irelith asks, drawing her sword.\n\nIn only a few moments, the nearby soldiers have gathered around to see what's sure to be the fight of the century.\n\n<<message "Help: Training">><<display "helpTraining">><</message>>\n\n<<ctrlClick "Continue." "combat_trainer">>
A wooden-handled scythe.\n\nAs a farm tool repurposed for battle, this weapon is difficult to wield. However, it hits a little harder than an ordinary spear.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Moderate|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|High|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Very Low|\n*__Finesse__: Very Low\n*__Stamina__: Moderate
<<if $playerturn is 1>><<if $sta gt 0>><span id="defOpt">[[2. Defend|highway2][$playeraction to 2]]</span>: End turn and focus on defense.\n<span id="movOpt">[[3. Move|highway2][$playeraction to 3]]</span>: End turn and try to get an advantage for next time.<<else>><span id="endOpt">[[4. End Turn|highway2]]</span>: Not enough stamina to defend or move.<<endif>><<else>><span id="conOpt">[[Ctrl: Continue|$combatnext]]</span><<endif>>
/% 9 %/\n<<set $specialMult to 0.6>>/%damage of spell%/\n<<set $SpEffName to "Held">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,1,1)>>/%time adjustment%/\n\n<<set $NMESpMov to 0.5>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 0.9>>/%atk debuff%/\n<<set $NMESpDam to 0.8>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 9>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Black Tendrils">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
<<set $spellname to "Protect">>\n<<set $schoolname to "Neutral">>\n<<set $p_spellname to "Protect">>\n<<set $spell_ui to "prot_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 5>>\n<<set $spellgrit to 10>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.1>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 10>>\n\n<<if $neutraltraining is 1>>\n\t<<set $sdef to 1.2>>\n<<elseif $neutraltraining is 2>>\n\t<<set $spellgrit to 15>>\n\t<<set $sdef to 1.2>>\n<<elseif $neutraltraining is 3>>\n\t<<set $spelldodge to 10>>\n\t<<set $spellgrit to 15>>\n\t<<set $sdef to 1.2>>\n<<endif>>
<<if $mobile is 0>>* <<radiobutton "$mobile" 0 checked>> Off: Recommended for playing on a computer or tablet screen.\n* <<radiobutton "$mobile" 1>> On: This option will remove some features, images, and text to improve appearance and performance on mobile devices.<<else>>* <<radiobutton "$mobile" 0>> Off: Recommended for playing on a computer or tablet screen.\n* <<radiobutton "$mobile" 1 checked>> On: This option will remove some features, images, and text to improve appearance and performance on mobile devices.<<endif>>
<<image "RipSmKid">><<thumb>>Elesun sits down beside Ripley and puts an arm around her. "Now, now," she says. "We're going to end all this, I promise. But until we do, we need to keep fighting."\n\nRipley throws her arms around Elesun and has herself a good cry. A minute or two later she calms down and looks up. "Your scarf smells good."\n\n"It's spice. Cinnamon mostly."\n\n"I like it." Ripley dries her eyes. "I know we can't stay here."\n\n"Let's go then." Elesun stands and helps Ripley up. "We'll get through this. I need you to believe that."\n\n"I'll try."\n\n<<ctrlClick "Continue." "0wall3">>
This assassin, on his own, shouldn’t be anything Ripley can’t handle. However, a poisoned blade or a bit of clever bound magic and Ripley could be dead in an instant.\n\nSure, she knows how to handle herself, but this is a bit dangerous for training.
"Where did they go?" Elesun shouts.\n\n"Aesil had Ripley wrapped up in that magic of his," one of the guards says. "She was trying to dispel it and Aesil just grabbed her and left. I think they went that way."\n\nThe other guard is bending down, over his fallen friend, and shuts his eyes with a wave of his hand. The driver is trying to calm the horses.\n\n"I'll go after them on horseback," Elesun says. "One of you needs to get back to the castle and get reinforcments. Ride hard. Kill the horse if you have to."\n\n"I can do that," the driver says.\n\n"Take some supplies and go now, then. Godspeed."\n\nThe driver nods and leaves.\n\n"This doesn't look good for the Druids," one of the guards says. "You'll be faster on your own; we'll check for survivors and follow. Don't worry about supplies, we'll catch up to you soon."\n\n//Journal updated.//<<set $storystage to 4>>\n\n<<ctrlCon '1druidcamp'>>
/*! <<bugreport>> macro for SugarCube 2.x */\n!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<bugreport>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("bugreport",{handler:function(){function serializeVariables(varObj,diffObj,doSort){function renderDiff(diff,orig){for(var keys=Object.keys(diff||{}),render=orig?clone(orig):{},i=0,klen=keys.length;klen>i;i++){var p=keys[i],diffP=diff[p];if(diffP===Util.DiffOp.Delete)delete render[p];else if(Array.isArray(diffP))switch(diffP[0]){case Util.DiffOp.SpliceArray:try{render.splice(diffP[1],1+(diffP[2]-diffP[1]))}catch(e){}break;case Util.DiffOp.Copy:render[p]=clone(diffP[1]);break;case Util.DiffOp.CopyDate:render[p]=new Date(diffP[1])}else{var recurse=renderDiff(diffP,render[p]);0!==Object.keys(recurse).length&&(render[p]=recurse)}}return render}var varList=[],diff=renderDiff(Util.diff(varObj,diffObj));for(var p in diff){var sName="$"+(-1===p.search(/[^\sw]/)?p:'"'+p+'"');varList.push(sName+"="+JSON.stringify(diff[p]))}return doSort&&("function"==typeof doSort?varList.sort(doSort):varList.sort()),0!==varList.length?varList.join(", "):""}var srcMatch,passages,varsPre,varsPost,dialog,dataEl,info=null!=this.args[0]&&Story.has(this.args[0])?Story.get(this.args[0]):null,last=State.length-1,source=unescape(window.location);null!==(srcMatch=/\s/([^\s/]+)$/.exec(source))&&(source=srcMatch[1]),passages=[];for(var i=0;last>=i;i++)passages.push('"'+State.index(i).title+'"');passages=passages.join(", "),varsPre=serializeVariables(State.index(0).variables,State.index(last).variables),varsPost=serializeVariables(State.index(last).variables,State.variables),dialog=UI.setup("Report","bugreport"),dialog.innerHTML=(null!==info?'<div id="bugreport-info"></div>':"")+'<div><b>Current Information:</b> <a id="bugreport-data-select" class="link-internal macro-bugreport">[Select]</a></div><code id="bugreport-data" tabindex="0"></code>'+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad"> </div>'),dataEl=dialog.querySelector("#bugreport-data"),null!==info&&new Wikifier(dialog.querySelector("#bugreport-info"),info.processText()),addAccessibleClickHandler("#bugreport-data-select",function(self){return function(){jQuery(dataEl).focus(),self.selectData(dataEl)}}(this.self)),insertText(dataEl,"[spoiler][code]"),insertElement(dataEl,"br"),insertText(dataEl,"SOURCE: "+source),insertElement(dataEl,"br"),insertElement(dataEl,"br"),insertText(dataEl,"PASSAGES:"),insertElement(dataEl,"br"),insertText(dataEl,passages),insertElement(dataEl,"br"),insertElement(dataEl,"br"),insertText(dataEl,"VARIABLES (PRE-EXECUTION):"),insertElement(dataEl,"br"),varsPre&&(insertText(dataEl,varsPre),insertElement(dataEl,"br")),insertElement(dataEl,"br"),insertText(dataEl,"VARIABLES (POST-EXECUTION):"),insertElement(dataEl,"br"),varsPost&&(insertText(dataEl,varsPost),insertElement(dataEl,"br")),insertText(dataEl,"[/code][/spoiler]"),UI.open()},selectData:function(e){if(window.getSelection){var s=window.getSelection();if(s.setBaseAndExtent)s.setBaseAndExtent(e,0,e,e.innerText.length-1);else{window.opera&&"<br>"===e.innerHTML.substring(e.innerHTML.length-4)&&(e.innerHTML+=" ");var r=document.createRange();r.selectNodeContents(e),s.removeAllRanges(),s.addRange(r)}}else if(document.getSelection){var s=document.getSelection(),r=document.createRange();r.selectNodeContents(e),s.removeAllRanges(),s.addRange(r)}else if(document.selection){var r=document.body.createTextRange();r.moveToElementText(e),r.select()}}})}();\n
It's deep, and Irelith is sitting in a pool of her own blood. She's tough, and she'll survive if they can get a healer to her.
A door to a storeroom. If Elesun is where she thinks she is, this storeroom should be the one above the servant's quarters.\n\n<<if $helpServants is 1>>Now that Ripley mentions it, you can hear moaning coming from within.\n\n<<ctrlClick "Check it out." "0storeroom" "leave">><<if $servants is 1>><<set $helpServants++>><<endif>><<endif>>
<<widget "questList">>\s\n <<if $sq.length gt 0>>\s\n ''Current Side Quests:''\n <<for _i to 0; _i lt $sq.length; _i++>>\s\n <<capture _i>>\s\n <<set $quTitle[_i] to $sq[_i].title>>\s\n <<set $quDescr[_i] to $sq[_i].descrPass>>\s\n <<set $quCompl[_i] to $sq[_i].complPass>>\s\n <<set $quProg[_i] to $sq[_i].progress>>\s\n <<if $quProg[_i] lt 10>>\s\n <<set $quStatus[_i] to "Status">>\s\n <<else>>\s\n <<set $quStatus[_i] to "Completed">>\s\n <<endif>>\s\n <<print $quTitle[_i]>> - \s\n <<link $quStatus[_i]>>\n <<popup $quDescr[_i]>>\n <</link>> \s\n <<if $quProg[_i] gt 9>>\s\n <<button "Turn In!">>\n <<goto $quCompl[_i] 'Quest Information'>>\n <</button>>\n <<endif>>\s\n <</capture>>\s\n <</for>>\s\n <<endif>>\s\n <<if $sqDone.length gt 0>>\n \n <<button "Completed Quests">>\n <<popup "quDone" 'Completed Quests'>>\n <</button>>\n <<else>>\n\n <<endif>>\s\n<</widget>>\s\n
<<image "KingPt">><<set $gamestart to 2>>''The King''\n\nHis Majesty King Harmon is the ruler of the kingdom of Juno, widely known and respected across the world for his wisdom and pragmatism. \n\nRealizing that the cycle was upon them again and that Akatosh's return was near, the King assembled the demonkin and built a large army in the hopes of protecting humanity.\n\nHis son and heir, Prince Harlaus, seems to take after him in many ways.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
/%\n-Enemies can perform three possible actions: atk, def, and special, assigned to the numbers 1, 2, and 3. Enemies do not "move."\n\n-Enemies have combo limits ($NMElimit) in their object passages. These limits determine how many possible attack actions can be chained together at max. Enemies may stop attacking and switch to defense before this limit is reached.\n\n-There are three components to enemyai: base ai, type ai, and situation ai.\n\t-base ai: 1: 50%, 2: 25%, 3: 25%\n\t-type ai: \n\t\t-casters: 10: 20%, 20: 10%, 30:70% (3)\n\t\t-attackers: 10: 70%%, 20: 10%, 30: 20% (1)\n\t\t-tanks: 10: 30%, 20: 50%, 30: 20% (2)\n\t\t-boss: provided by the passage\n\t-situational AI:\n\t\t-enemy (self) grit low: 200\n\t\t-player grit low: 100: 50%, 200: 50%\n\t\t-both low: 100\n\t\t-normal: 100: 33%, 200: 33%, 300: 33%\n\n-The three AI values are stored in an array/string (not sure which yet), and they are checked:\n\n111-attack until limit is hit \n112-stop one attack from limit (121, 211)\n122-one attack, and then defend (212, 221)\n113-attack until limit or stop one from limit. (131, 311)\n123-stop once or twice and defend (213, 312)\n223-defend (232, 322)\n222-defend\n133-use special (313, 331)\n233-use special (323, 332)\n333-use special\n\n-Specials: if crit attack is special, perform normal combo attack (111), but boost crit rate by 10 just for that turn. Other specials:\n\t-crits (3=atk) [default] (0)\n\t-steels itself (regain some hp on defends) (3=def) (1)\n\t-natural magic (snare: prevents mov and atk for two turns) (2)\n\t-light magic (casts a heal spell) (3)\n\t-neutral magic (force wave atk) (4)\n\t-dark magic (deals damage based on casters remaing grit, caster then loses that grit) (5)\n\t-hellish magic (hellfire atk) (6)\n\t-hellish magic (flash fire) (7)\n\t-riposte (occasionally dodges and deals minor damage) (8)\n\n%/\n\n<<if not $flinched>>\n\n<<set $nmebaseAI to either(1,1,2,3)>>\n\n<<if $nmetype is 1>>\n\t<<set $nmetypeAI to either(10,10,10,10,10,10,10,20,30,30)>>\n<<elseif $nmetype is 2>>\n\t<<set $nmetypeAI to either(10,10,10,20,20,20,20,20,30,30)>>\n<<elseif $nmetype is 3>>\n\t<<set $nmetypeAI to either(10,10,20,30,30,30,30,30,30,30)>>\n<<endif>>\n\n<<if $nmegrit lte $nmemaxgrit/4 and $grit gt $maxgrit/4>>\n\t<<set $nmesitAI to 200>>\n<<elseif $nmegrit gt $nmemaxgrit/4 and $grit lte $maxgrit/4>>\n\t<<set $nmesitAI to 100>>\n<<elseif $nmegrit lte $nmemaxgrit/4 and $grit lte $maxgrit/4>>\n\t<<set $nmesitAI to either(100,100,100,200,300)>>\n<<else>>\n\t<<set $nmesitAI to either(100,200,300)>>\n<<endif>>\n\t\n<<set $nmeAI to $nmesitAI+$nmetypeAI+$nmebaseAI>>\n\n<<if $nmeAI is 111>>\n\t<<set $nmeaction to 1>> /%full attack%/\n<<elseif $nmeAI is 112 or $nmeAI is 121 or $nmeAI is 211>>\n\t<<set $nmeaction to 1.1>> /%attack one away from moveset limit then defend%/\n<<elseif $nmeAI is 122 or $nmeAI is 221 or $nmeAI is 212>>\n\t<<set $nmeaction to 1.2>> /%attack once then defend%/\n<<elseif $nmeAI is 113 or $nmeAI is 311 or $nmeAI is 131>>\n\t<<set $nmeaction to either(1,1.1)>>\n<<elseif $nmeAI is 123 or $nmeAI is 321 or $nmeAI is 213 or $nmeAI is 312 or $nmeAI is 132>>\n\t<<set $nmeaction to either(1.2,1.3)>>/%1.3 two attacks then defend%/\n<<elseif $nmeAI is 322 or $nmeAI is 223 or $nmeAI is 232>>\n\t<<set $nmeaction to 2>>/%defend%/\n<<elseif $nmeAI is 222>>\n\t<<set $nmeaction to 2>>/%defend%/\n<<elseif $nmeAI is 332 or $nmeAI is 233 or $nmeAI is 232>>\n\t<<set $nmeaction to 3>>/%use special%/\n<<elseif $nmeAI is 333>>\n\t<<set $nmeaction to 3>>/%use special%/\n<<else>>\n\t<<set $nmeaction to 1>> /%full attack%/\n<<endif>>\n\n<<if $nmetype is 3>>\n\t<<if $nmeaction neq 3>>\n\t\t<<set $nmeaction to either(3,$nmeaction,$nmeaction)>>\n\t<<endif>>\n<<endif>>\n\n<<if $nmeaction is 3>>\n\t<<if $enemyspecialname is "heal">>\n\t\t<<if $NMEgrit gt 0.7*$NMEmaxgrit>>\n\t\t\t<<set $nmeaction to either(1,1.1)>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>\n\n/% adjust agression %/\n<<if setup.bal.agression neq 1>>\n\t<<switch setup.bal.agression>>\n\t<<default>> /% reduced enemy agression -- same as case 0 %/\n\t\t<<set _agression to random(100)>>\n\t\t<<if $nmeaction lt 2>>\n\t\t\t<<if $health lt 2>>\n\t\t\t\t<<if $nmeaction is 1>>\n\t\t\t\t\t<<if _agression lt 20>>\n\t\t\t\t\t\t<<set $nmeaction to either(2, 1.3, 1.2)>>\n\t\t\t\t\t<<elseif _agression lt 50>>\n\t\t\t\t\t\t<<set $nmeaction to either(1.3, 1.2, 1.1)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<else>>\n\t\t\t\t\t<<if _aggression lt 20>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3, 2)>>\n\t\t\t\t\t<<elseif _aggression lt 50>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<endif>>\n\t\t\t<<elseif $grit lt $maxgrit/5>>\n\t\t\t\t<<if $nmeaction is 1>>\n\t\t\t\t\t<<if _agression lt 10>>\n\t\t\t\t\t\t<<set $nmeaction to either(2, 1.3, 1.2)>>\n\t\t\t\t\t<<elseif _agression lt 25>>\n\t\t\t\t\t\t<<set $nmeaction to either(1.3, 1.2, 1.1)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<else>>\n\t\t\t\t\t<<if _aggression lt 10>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3, 2)>>\n\t\t\t\t\t<<elseif _aggression lt 25>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<case 0>> /% reduced enemy agression %/\n\t\t<<set _agression to random(100)>>\n\t\t<<if $nmeaction lt 2>>\n\t\t\t<<if $health lt 2>>\n\t\t\t\t<<if $nmeaction is 1>>\n\t\t\t\t\t<<if _agression lt 20>>\n\t\t\t\t\t\t<<set $nmeaction to either(2, 1.3, 1.2)>>\n\t\t\t\t\t<<elseif _agression lt 50>>\n\t\t\t\t\t\t<<set $nmeaction to either(1.3, 1.2, 1.1)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<else>>\n\t\t\t\t\t<<if _aggression lt 20>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3, 2)>>\n\t\t\t\t\t<<elseif _aggression lt 50>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<endif>>\n\t\t\t<<elseif $grit lt $maxgrit/5>>\n\t\t\t\t<<if $nmeaction is 1>>\n\t\t\t\t\t<<if _agression lt 10>>\n\t\t\t\t\t\t<<set $nmeaction to either(2, 1.3, 1.2)>>\n\t\t\t\t\t<<elseif _agression lt 25>>\n\t\t\t\t\t\t<<set $nmeaction to either(1.3, 1.2, 1.1)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<else>>\n\t\t\t\t\t<<if _aggression lt 10>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3, 2)>>\n\t\t\t\t\t<<elseif _aggression lt 25>>\n\t\t\t\t\t\t<<set $nmeaction to either($nmeaction, 1.3)>>\n\t\t\t\t\t<<endif>>\n\t\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<case 2>> /% increased enemy aggression %/\n\t\t<<set _agression to random(100)>>\n\t\t<<if $nmeaction is 2>>\n\t\t\t<<if _agression lt 50>>\n\t\t\t\t<<set $nmeaction to either(1.3, 1.2, 3, 2)>>\n\t\t\t<<elseif _agression lt 30>>\n\t\t\t\t<<set $nmeaction to either(1.1, 1.2, 1.3, 3)>>\n\t\t\t<<elseif _agression lt 20>>\n\t\t\t\t<<set $nmeaction to either(1, 1.1, 1.2)>>\n\t\t\t<<elseif _agression lt 10>>\n\t\t\t\t<<set $nmeaction to either (1, 1.1)>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<</switch>>\n<<endif>>\t\n\n<<endif>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Variable level\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
\nA set of eight golden bangles the Ripley wears on her arms and legs. Forged by the Druid oracles and gifted only to elite Druid warriors, these bangles grant increased healing, longer life, and improved physical prowess. Their real power, hoewever, is their ability to disperse magical energies, making the dispeling of hostile magic much easier.\n\n
!Ally's Turn\n<<nobr>>\n<<display "allyai">><<display "damagecalc_ally">>\n<<set $combatnext to "highway5">>\n<<set $playerturn to 3>>\n<<display "combatinfodock">><<if $combatimages is 1>><<comPt>><<endif>>\n<span id="combatNME"><<display "combatboxNME">></span>\n<span id="combatAlly"><<display "combatboxAlly">></span>\n\n<<display "health_checker">>\n<<endnobr>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
!Enemy's Turn\n<<nobr>>\n<<set $nmedefboost to 1.0>><<set $nmeregen to $nmebaseregen>>\n\n<<display "enemyai">><<display "damagecalc_NME">>\n<<if $allynumber is 0>><<set $combatnext to "highway5">><<else>><<set $combatnext to "highway3">><<endif>>\n\n<<set $playerturn to 2>>\n<<display "combatinfodock">><div id="tray"><<comPt>></div>\n<span id="combatNME"><<display "combatboxNME">></span>\n<<if $allynumber neq 0>><span id="combatAlly"><<display "combatboxAlly">></span><<endif>>\n<<replace "#combatactions">><<display "playeractions">><</replace>>\n\n<<endnobr>>\n\n\n\n\n\n\n
!Player's Turn\n<<nobr>>\n<<set $firstAtk to true>>\n<<set $playerturn to 1>>\n<<display "combatinfodock">><div id="tray"><<comPt>></div>\n<span id="combatNME"><<display "combatboxNME">></span>\n\n<<if $allynumber neq 0>><span id="combatAlly"><<display "combatboxAlly">></span><<endif>>\n<<set $playeraction to 1>>\n<<display "health_checker">>\n\n<<endnobr>>\n\n\n\n\n\n\n\n\n\n\n\n
<<if not $crityes>>\n\t<<set _staggerDam to Math.trunc(($wStaUse + $wilrank) * setup.bal.pstagger)>>\n\t<<set _roll to random($staggerOdds)>>\n\t<<if _roll lt _staggerDam>>\n\t\t<<set $flinched to true>>\n\t\t<<set $staggerOdds to $baseStaggerOdds>>\n\t<<else>>\n\t\t/% stagger damage adjustments %/\n\t\t<<if $weaponname is 'Great Sword' or $weaponname is 'Battle Axe'>>\n\t\t\t<<set _staggerDam += 2>>\n\t\t<<elseif $weaponname is 'Spear' or $weaponname is 'Scythe'>>\n\t\t\t<<set _staggerDam += 1>>\n\t\t<<elseif $weaponname is 'Unarmed' or $weaponname is 'Clawed Gauntlets'>>\n\t\t\t<<set _staggerDam -= 1>>\n\t\t<<endif>>\n\t\t<<set $staggerOdds -= _staggerDam>>\n\t<<endif>>\n<<endif>>
<<set $infopop to 0>>/%validates display mode 0, -1 %/\n<<set $rageCurrent to 0>>/%validates transformation%/\n\n<<if $version lt 50>>\n\t<<goto "oldsave">>\n<<endif>>\n\n<<if $version eq 50>>\n\t<<set $version to 51>>\n\t<<set $song to $chapter>>\n\t<<display "AudioLoad">>\n\t<<set $chapter to 0>>\n\t<<set $infopop to 0>>\n\t<<set $dockdisp to 1>>\n\t<<set $versionnumber to "0.5.1">>\n\t<<set $weapon_ui to "lswrd_ui">>\n\t<<set $armor_ui to "leath_ui">>\n\t<<set $spell_ui to "prot_ui">>\n\t<<display "spell_protect">>\n\t<<display "leatherarmor">>\n\t<<display "longsword">>\n\t<<stats>>\n<<endif>>\n\n<<if $version eq 51 or $version eq 50>>\n\t<<script>>\n\t\tUI.alert("You are attempting to load a save file from a prototype version of <em>Holy Land</em>.<br>Please delete your saves and start a new game.<br>The game will restart when you close this window", null, function () {Engine.restart();});\n\t<</script>>\n<<endif>>
!Round <<print $round>> is over.\n<<display "combat_upkeep">>\n<<print $endrndm1>>\n\n<<print $endrndm2>>\n<<if $despatk is 1>><<set $despatk to 2>><<endif>>\n<span id="conOpt">[[Ctrl: Next Round|$combatnext][$round++]]</span>\n\n\n\n\n<span id="info">\n\nRound <<print $round>> is over.\n\n[[Ctrl: Next Round|$combatnext][$round++]]\n</span>
:(
/% remove tutorials %/\n<<deleteHook 'onCrit' 'tut_onCrit'>>\n<<deleteHook 'onNMEspell' 'tut_onNMEspell'>>\n<<deleteHook 'onFirstAtk' 'tut_onFirstAtk'>>\n<<deleteHook 'onDespAtk' 'tut_onDespAtk'>>\n<<deleteHook 'onGritDam' 'tut_onGritDam'>>\n<<deleteHook 'onHeartDam' 'tut_onHeartDam'>>\n<<deleteHook 'onMov' 'tut_onMov'>>\n<<deleteHook 'onNMEheartDam' 'tut_onNMEheartDam'>>\n<<deleteHook 'onDef' 'tut_onDef'>>\n<<deleteHook 'onDispel' 'tut_onDispel'>>\n<<deleteHook 'onDodge' 'tut_onDodge'>>\n<<deleteHook 'onTransform' 'tut_onTransform'>>\n<<deleteHook 'onRevert' 'tut_onRevert'>>\n<<deleteHook 'onFightEnd' 'tut_onFightEnd'>>
<<set $enemyname to "Lowly Assassin">>\n<<set $enemynumber to 3>>\n<<set $enemypower to 98>>\n<<set $enemyimg to setup.nme["NME_ninjawoman"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 142>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 2>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 31>>\n<<set $nmedef to 30>>\n<<set $nmemov to 31>>\n<<set $nmemagic to 0>>\n\n<<set $enemyspecialname to "">>\n<<set $enemyspecial to 0>>\n\n<<set $nmecritchance to 15>>\n<<set $nmecritdam to 1.5>>\n<<set $nmespellpower to 0>>\n<<set $nmeacc to 90>>\n<<set $nmebaseregen to 3>>\n\n<<set $nmemoveset to 4>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 20>>\n\n<<display "bal-adj-nme">>
/%\n list of all vows, indexed by ID -- \n the IDs are pushed into relevant story arrays \n%/\n<<set setup.vows.list to {\n\t'example' : {\n\t\tid : 'example',\n\t\ttitle : 'Example vow.',\n\t\tdescr : 'This is simply an example of a vow.',\n\t\toutc : 'This is set in-story based on how it turned out.',\n\t\ttype : 3\n\t},\n\t'protRip' : {\n\t\tid : 'protRip',\n\t\ttitle : 'Protect Ripley.',\n\t\tdescr : 'Elesun has sworn to protect the child of promise, Ripley, and keep her from harm.',\n\t\toutc : '',\n\t\ttype : 0\n\t},\n\t'serveKing' : {\n\t\tid : 'serveKing',\n\t\ttitle : 'Serve the king.',\n\t\tdescr : 'Elesun has sworn and oath to protect the king, his lands, his people, and his property.',\n\t\toutc : '',\n\t\ttype : 0\n\t}\n}>>
It's time to finish this. Are you sure you're ready?\n\n<<ctrlClick "Proceed." "0protectking1" "leave">>
<<image "HarlPtKid">>Elesun approaches Harlaus.\n\n"Hello Elesun."\n\n<<dock "Chit-chat." "HarlChat1">>\n\n<<dock "Ask about Ripley." "1HarlRip">>\n\n<<dock "I must go." "1HarlNVM">>\n\n<<info>>\n\n\n\n\n
<<image "KingSm">>The throne room's repairs are mostly complete; while the walls are still lined with cracks and <<weak 'the new stonework stands out against the old' '1throneStone'>>, the room is otherwise the same as it always was.\n\nThe <<action 'King sits on his throne' '1throneKing'>>. No one else is around; unusual for this time of day.\n\nBehind Elesun, <<action 'the door to the main hall is open' '1throneDoor'>>.
As the sun is setting, Elesun can see Merac in the distance, and the road winds ahead to meet it. The horse spits blood, and pitches forward. Elesun kicks her legs out and curls into a roll as the horse collapses. It's breathing ragged. It begins to whine.\n<<set $xpearned to $xpearned + 35>>\n[[Put the horse down.|1afterRip2][$mercyKill to 1]]\n\n[[There's no time! Run to the town now.|1afterRip2][$mercyKill to 0]]
<<if $mercyKill>>Elesun draws her sword and aims carefully, making sure to kill the horse in a single blow.\n\n"Thank you," she says. "I'm sorry."\n\nElesun's blade strikes true, and the horse is still.\n\nShe turns back toward Merac and takes off running.<<else>>Elesun barely loses momentum coming out of her roll and continues running toward Merac. She thanks the horse silently. His pathetic breathing soon fades away as she leaves.<<endif>>\n\nElesun is steps from the town gates when she hears a whistle in the wind. She crouches into a slide as an arrow parts the air where she would have been. Atop a nearby hill she sees a man taking aim with another arrow.\n\nElesun draws her sword and charges up the hill.\n\n<<ctrlCon 'combat_call_1_2'>>
<<image "AesSm3">><<thumb>>Aesil stumbles back.\n\n"No," he rasps. "This isn't..." he turns to flee, but trips over himself.\n\n<<if $character is 'Elesun'>>Elesun throws her sword even as she feels her body collapsing; her muscles and bone are exposed across her body, pain fills her mind, darkness closes in on her vision. Yet the sword strikes true, pinning Aesil to the ground--his blood runs over dead grass and leaves.<<else>>Ripley lunges at him, knocking him to the ground. She stands over him.<<endif>>\n\n"This is where you die," <<name>> says.\n\n[[Get Ready!|attack-bar]]\n<<set $nextBoss to 'Aes-boss-attack-3'>>
<<image "AesSm3">><<thumb>>Aesil is stumbling. "Can't lose..." he says--a gaping hole in his chest causes his shrieks to come out as pathetic rasps.\n\n<<if $character is 'Elesun'>>Elesun isn't doing much better, though. She can feel her skin practically dripping from her.\n\n<<endif>>"Can't lose. Won't lose. Kill." He rears back his head; bares his teeth, screams. "Won't lose won't lose. Kill kill." He throws himself at <<name>> in a desperate, ferocious final stand.\n\n[[Get Ready!|defend-bar]]\n<<set $nextBoss to 'Aes-boss-defend-3'>>\n<<set $defCon to 0>><<set $defCount to 0>>
<<image "AesSm3">><<thumb>>Aesil's eyes are panicked, his breathing labored. He's taken several wounds; each one should be fatal. They're closing, healing. But slower now.\n\n<<name>> grins. "You're afraid. Why? I told you: as many times as it takes." She charges.\n\n<<if $character is 'Elesun'>>Even as she runs, blade raised and ready to strike, Elesun can feel the dark magic eating away at her body. She's slower now, weaker. Hopefully Aesil is, too...<<else>>The image keeps running through her mind--Elesun, pooled and puddled on the ground, a mix of blood and melted flesh, the smell of sick and rot, no longer recognizable. Ripley feels it; the weight behind every punch and kick she throws. The weight of her hate and rage.<<endif>>\n\n[[Get Ready!|attack-bar]]\n<<set $nextBoss to 'Aes-boss-attack-2'>>
<<image "AesSm3">><<thumb>><<name>> leaps forward and her blade strikes deep. Aesil leaps back, but smiles. The wound is already closing.\n\n"I'll kill you as many times as it takes, you bastard," <<name>> says. She raises her blade.\n\n"Die!" Aesil shrieks. His eyes widen and he lets out an unsettling snarl. "You die!" He launches into a frenzied attack.\n\n<<message>>\s\nIn boss fights, the action will occasionally be broken up by descriptions and quick-time events.\n\nThere are two types of ''quick-time events'': ''defend events'' and ''attack events''. During defend events, you will need to click on the block button with the proper timing. A bar will appear on the screen, and when it turns white, you will have a split second to click it. Doing so will allow you to avoid all damage, restore grit, or launch an attack event, depending on the encounter. During attack events, a bar will also be placed on the screen. Click on the attack button as many times as possible before the bar runs out to deal massive damage.\n\nThese quick-time events can allow you to kill enemies that are immensely more powerful than you.\s\n<</message>>\n\n[[Get ready!|defend-bar]]\n<<set $nextBoss to 'Aes-boss-defend-1'>>
A suit of leather armor. <<if $clothplus is 1>>Or so it seems. Though this armor may not seem like much, it's been forged by the legendary blacksmiths of the Elysian realm, and should not be underestimated.<<endif>>\n\nLeather armor provides good defense without restricting movement too much, but leaves much to be desired against heavier attacks.\n\n|[img[setup.ui.icons.ui_def]]|Defense Bonus:|Low|\n|[img[setup.ui.icons.ui_mov]]|Encumberance:|Low|
<<display $weapon_ui>>
''Vows'' -- <<getstring true>>.
<div id="tutorial">[img[setup.ui.tut.tut6][combatexplanation7menu]]</div>\n<<ctrlCon "combatexplanation7menu">>
Select an enemy to fight:\n\n<<link "Soldier of Fortune">><<display "rank3lvl5_soldier_akatosh">><<goto "combat_test_2">><</link>>\n\n<<link "Wandering Knight">><<display "rank4lvl4_knight_akatosh">><<goto "combat_test_2">><</link>>\n\n<<link "Lowly Assassin">><<display "rank3lvl3_assassin">><<goto "combat_test_2">><</link>>\n\n<<link "Forest Witch">><<display "rank5lvl5_witch">><<goto "combat_test_2">><</link>>\n\n[[Cancel|debug_features]]
<<widget 'tutorialHook'>>\n\t<<set _psg to $args[0]>>\n\t<<set _array to _psg.split('_')>>\n\t<<set _hk to _array[1]>>\n\t<<deleteHook _hk _psg>>\n\t<<addclass '#ui-dialog' 'fart'>>\n<</widget>>
If Elesun could only get her to use that anger as a motivation. Ripley is too sweet, too soft.\n\nThere's a fine line, between caring too little and too much. Elesun knows that she might care too little herself, but she also knows that Ripley cares way too much.
/%calculates all player actions%/\n<<payload 'onEachAtk'>>\n<<if $firstAtk>>\n\t<<payload 'onFirstAtk'>>\n\t<<set $firstAtk to false>>\n<<endif>>\n\n<<set $modifier to either(0.8,0.9,1.1,1.2)>>\n<<set $damagetoNME to 0>>\n<<if $movbonus gt 0>>\n\t<<set $booster to Math.trunc($mov*0.3+$movbonus)>>\n\t<<set $movbonus to 0>>\n<<else>>\n\t<<set $booster to 0>>\n<<endif>>\n\n<<set $damagetoNME to Math.trunc(($atk*$modifier*$NMESpAtk)-($nmedef*0.5)+$booster)*$NMESpDam>>\n\n<<if $damagetoNME lt $atk*0.4>>\n\t<<if $nmedefboost is 1.5>>\n\t\t<<if $damagetoNME lt $atk*0.2>>\n\t\t\t<<if $devilForm is 0 and $formUnlock gte 1>>\n\t\t\t<<set $damagetoNME to Math.trunc($atk*0.2)>>\n\t\t\t<<set $rage to Math.trunc($rageBuild*0.3)>>\n\t\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<<else>>\n\t\t\t<<set $damagetoNME to Math.trunc($damagetoNME)>>\n\t\t\t<<if $devilForm is 0 and $formUnlock gte 1>>\n\t\t\t<<set $rage to Math.trunc($rageBuild*0.3)>>\n\t\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<else>>\n\t\t<<set $damagetoNME to Math.trunc($atk*0.4)>>\n\t\t<<if $devilForm is 0 and $formUnlock gte 1>>\n\t\t<<set $rage to Math.trunc($rageBuild*0.3)>>\n\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t<<endif>>\n<<endif>>
<<set $xpearned to $xpearned + 25>>As Elesun predicts, Ripley doesn’t need any help.<<image "RipSmKid">><<thumb>>\n\nThe assassin moves in with a slash, and almost before his arm moves, Ripley slips out of the way and delivers a devastating punch. She wasn’t quite fast enough, though, and she receives a nick on her forearm. She’s alive though, so the blade probably wasn’t poisoned.\n<<set $ripFight to 1>>\n“Good work,” Elesun says.\n\nRipley turns around, surprised. “Oh, hey Elesun.”\n\n“Are you alright?”\n\n“I’m fine.”\n\n<<ctrlClick "Continue." "0meetupwithRip">>
*<<link "About the Information Dock">><<dialog 'Information'>>\n\nThe information dock appears at the bottom of the screen in in any part of the game where it is used. You can double click the dock to collapse it, or press the spacebar to reset it.\n\n<</dialog>><</link>>\n*<<link "Different Types of Links">><<dialog 'Information'>>\n\nThere are two general types of links in the game. Links that appear throughout text descriptions update the information dock with more detailed information when clicked. Links that appear set apart at the bottom of some text, or within the information dock itself, usually perform some sort of action, make a decision, or cause the scene to change.\n\n<</dialog>><</link>>\n*<<link "The Menu">><<dialog 'Information'>>\n\nThe frame on the left side of the screen contains various menu options that can be accessed at almost any part of the story. You can collapse the menu frame by clicking the arrow on the top right of the frame.\n\n<</dialog>><</link>>\n*<<link "Scenes and Spaces">><<dialog 'Information'>>\n\nThe story is primarily divided into scenes and spaces. The spaces are areas where you are free to click around and explore. Scenes are chunks of story that are followed by a "continue" link or a decision. Scenes usually contain very important information that will be critical in making educated decisions later.\n\n<</dialog>><</link>>\n*<<link "Decisions">><<dialog 'Information'>>\n\nMajor story decisions usually occur during scenes or conversations. Other decisions, like who to talk to and where to go in spaces usually don't have a lasting impact on the story.\n\n<</dialog>><</link>>\n*<<link "A Note on Roleplaying">><<dialog 'Information'>>\n\nWhile you control <<print $character>>, keep in mind that she is a distinct character in the world as well, with her own strengths, weaknesses, goals, and fears. When you make decisions and impact the story, you are not so much controlling her as you are stepping into a role. In other words, while you can tell <<print $character>> what to do, you can't really tell her how to feel or think.\n\n<</dialog>><</link>>\n*<<link "Combat">><<dialog 'Information'>>\n\nWould you like to review the combat reference? <<link [[Yes|combatexplanationmenu]]>><<run Dialog.close()>><</link>>\n\n<</dialog>><</link>>\n*<<link "Status Effects Reference">><<dialog 'Information'>>\n\nWould you view the status effect reference? <<link [[Yes|status_effects_help]]>><<run Dialog.close()>><</link>>\n\n<</dialog>><</link>>\n*<<link "Keyboard Shortcuts">><<goto "kb_controls">><</link>>\n\n\n/%[[View the Online Guide.|https://holylanddev.files.wordpress.com/2017/01/readme1.pdf]]%/\n\n[[Return to the Journal|journalmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>\n\n\n\n\n\n\n\n\n\n\n\n\n
/*! <<numberpool>> macro set for SugarCube 2.x */\n!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2||"undefined"==typeof version.minor||version.minor<5)throw new Error("<<numberpool>> macro set requires SugarCube 2.5.0 or greater, aborting load");Macro.add("numberbox",{handler:function(){function validateAndApply(el,addend){var curValue=Math.trunc(Wikifier.getValue(varName)),newValue=Math.trunc(el.value),newPoolValue=null;if(isNaN(newValue)||!isFinite(newValue))return el.value=curValue,!1;if(null!=addend&&(newValue+=addend),minValue>newValue?newValue=minValue:newValue>maxValue&&(newValue=maxValue),null!==pool){var poolValue=pool.get(),delta=(newValue-curValue)*poolCost;0>delta?newPoolValue=poolValue-delta:delta>0&&poolValue>=poolCost?(delta>poolValue&&(newValue=curValue+Math.trunc(poolValue/poolCost),delta=poolValue-poolValue%poolCost),newPoolValue=poolValue-delta):newValue=curValue}return Wikifier.setValue(varName,newValue),el.value=newValue,null!==newPoolValue&&pool.set(newPoolValue),!0}var _this=this;if(this.args.length<4){var errors=[];return this.args.length<1&&errors.push("story variable name"),this.args.length<2&&errors.push("default value"),this.args.length<3&&errors.push("min value"),this.args.length<4&&errors.push("max value"),this.error("no "+errors.join(" or ")+" specified")}if("string"!=typeof this.args[0]||"$"!==this.args[0].trim()[0])return this.error('story variable name "'+this.args[0]+'" is missing its sigil ($)');var varName=this.args[0].trim(),varId=Util.slugify(varName),defValue=Number(this.args[1]),minValue=Number(this.args[2]),maxValue=Number(this.args[3]),poolCost=1,autofocus=!1;if(this.args.length>5?(poolCost=Number(this.args[4]),autofocus="autofocus"===this.args[5]):this.args.length>4&&("autofocus"===this.args[4]?autofocus=!0:poolCost=Number(this.args[4])),isNaN(defValue)||!isFinite(defValue)||Math.trunc(defValue)!==defValue)return this.error("default value ("+this.args[1]+") is not a whole number");if(isNaN(minValue)||!isFinite(minValue)||Math.trunc(minValue)!==minValue)return this.error("min value ("+this.args[2]+") is not a whole number");if(isNaN(maxValue)||!isFinite(maxValue)||Math.trunc(maxValue)!==maxValue)return this.error("max value ("+this.args[3]+") is not a whole number");if(isNaN(poolCost)||!isFinite(poolCost)||Math.trunc(poolCost)!==poolCost||0>=poolCost)return this.error("pool cost ("+this.args[4]+") is not a whole number greater than zero");if(minValue>defValue)return this.error("default value ("+this.args[1]+") is less than min value ("+this.args[2]+")");if(defValue>maxValue)return this.error("default value ("+this.args[1]+") is greater than max value ("+this.args[3]+")");var pool=function(){var parent=_this.contextSelect(function(c){return"numberpool"===c.name});return null!==parent&&parent.hasOwnProperty("pool")?parent.pool:null}();Config.debug&&this.debugView.modes({block:!0});var $elControl=jQuery(document.createElement("div")),$elInput=jQuery(document.createElement("input"));$elControl.attr("id",this.name+"-body-"+varId).addClass("macro-"+this.name).appendTo(this.output),jQuery(document.createElement("button")).attr({id:this.name+"-minus-"+varId,tabindex:0}).text("").on("click",function(){return validateAndApply($elInput[0],-1)}).appendTo($elControl),$elInput.attr({id:this.name+"-input-"+varId,name:this.name+"-input-"+varId,type:"text",pattern:"\s\sd+",tabindex:0}).on("change",function(){validateAndApply(this)}).on("keypress",function(evt){13===evt.which&&(evt.preventDefault(),$elInput.trigger("change"))}).appendTo($elControl),jQuery(document.createElement("button")).attr({id:this.name+"-plus-"+varId,tabindex:0}).text("").on("click",function(){return validateAndApply($elInput[0],1)}).appendTo($elControl),$elInput.val(defValue),validateAndApply($elInput[0]),autofocus&&($elInput.attr("autofocus","autofocus"),postdisplay["#autofocus:"+$elInput.attr("id")]=function(task){setTimeout(function(){return $elInput.focus()},Engine.minDomActionDelay),delete postdisplay[task]})}}),Macro.add("numberpool",{tags:["onchange"],handler:function(){if(0===this.args.length)return this.error("no variable name specified");if(this.payload.length>2)return this.error("multiple <<onchange>> sections specified");if("string"!=typeof this.args[0]||!/^[$_]/.test(this.args[0].trim()))return this.error('variable name "'+this.args[0]+'" is missing its sigil ($ or _)');var varName=this.args[0].trim(),varId=Util.slugify(varName);TempState.hasOwnProperty(this.name)||(TempState[this.name]={}),TempState[this.name].hasOwnProperty(varId)||(TempState[this.name][varId]=0),Object.defineProperty(this,"pool",{value:Object.defineProperties({},{get:{value:function(){return Wikifier.getValue(varName)}},set:{value:function(content){return function(value){var curValue=Wikifier.getValue(varName);value!==curValue&&(Wikifier.setValue(varName,value),content&&Wikifier.wikifyEval(content))}}(this.payload.length>1?this.payload[1].contents.trim():"")}})}),jQuery(document.createElement("div")).attr("id",this.name+"-"+varId+"-"+TempState[this.name][varId]++).addClass("macro-"+this.name).wiki(this.payload[0].contents.replace(/^\sn/,"")).appendTo(this.output)}}),Macro.add("numberslider",{handler:function(){function stepValidate(value){if(fracDigits>0){var ma=Number(minValue+"e"+fracDigits),sa=Number(stepValue+"e"+fracDigits),va=Number(value+"e"+fracDigits)-ma;return Number(va-va%sa+ma+"e-"+fracDigits)}var _va=value-minValue;return _va-_va%stepValue+minValue}function validateAndApply(el){var curValue=Wikifier.getValue(varName),newValue=Number(el.value),newPoolValue=null;if(isNaN(newValue)||!isFinite(newValue))return el.value=curValue,!1;if(newValue=stepValidate(newValue),minValue>newValue?newValue=minValue:newValue>maxValue&&(newValue=maxValue),null!==pool)if(fracDigits>0){var pa=Number(pool.get()+"e"+fracDigits),ca=Number(curValue+"e"+fracDigits),na=Number(newValue+"e"+fracDigits),delta=na-ca;delta>pa&&(na-=delta-pa,delta=na-ca,newValue=Number(na+"e-"+fracDigits)),newPoolValue=Number(pa-delta+"e-"+fracDigits)}else{var poolValue=pool.get(),_delta=newValue-curValue;_delta>poolValue&&(newValue-=_delta-poolValue,_delta=newValue-curValue),newPoolValue=poolValue-_delta}return Wikifier.setValue(varName,newValue),el.value=newValue,null!==newPoolValue&&pool.set(newPoolValue),!0}var _this2=this;if(this.args.length<5){var errors=[];return this.args.length<1&&errors.push("story variable name"),this.args.length<2&&errors.push("default value"),this.args.length<3&&errors.push("min value"),this.args.length<4&&errors.push("max value"),this.args.length<5&&errors.push("step value"),this.error("no "+errors.join(" or ")+" specified")}if("string"!=typeof this.args[0]||"$"!==this.args[0].trim()[0])return this.error('story variable name "'+this.args[0]+'" is missing its sigil ($)');var varName=this.args[0].trim(),varId=Util.slugify(varName),defValue=Number(this.args[1]),minValue=Number(this.args[2]),maxValue=Number(this.args[3]),stepValue=Number(this.args[4]),autofocus=this.args.length>5&&"autofocus"===this.args[5];if(isNaN(defValue)||!isFinite(defValue))return this.error("default value ("+this.args[1]+") is not a number");if(isNaN(minValue)||!isFinite(minValue))return this.error("min value ("+this.args[2]+") is not a number");if(isNaN(maxValue)||!isFinite(maxValue))return this.error("max value ("+this.args[3]+") is not a number");if(isNaN(stepValue)||!isFinite(stepValue)||0>=stepValue)return this.error("step value ("+this.args[4]+") is not a number greater than zero");if(minValue>defValue)return this.error("default value ("+this.args[1]+") is less than min value ("+this.args[2]+")");if(defValue>maxValue)return this.error("default value ("+this.args[1]+") is greater than max value ("+this.args[3]+")");var fracDigits=function(){var str=String(stepValue),pos=str.lastIndexOf(".");return-1===pos?0:str.length-pos-1}();if(stepValidate(maxValue)!==maxValue)return this.error("max value ("+this.args[3]+") is not a multiple of the"+(" step value ("+this.args[4]+") plus the min value ("+this.args[2]+")"));var pool=function(){var parent=_this2.contextSelect(function(c){return"numberpool"===c.name});return null!==parent&&parent.hasOwnProperty("pool")?parent.pool:null}();Config.debug&&this.debugView.modes({block:!0});var $elControl=jQuery(document.createElement("div")),$elInput=jQuery(document.createElement("input")),$elValue=void 0,showValue=void 0;$elControl.attr("id",this.name+"-body-"+varId).addClass("macro-"+this.name).appendTo(this.output),$elInput.attr({id:this.name+"-input-"+varId,name:this.name+"-input-"+varId,type:"range",min:minValue,max:maxValue,step:stepValue,tabindex:0}).on("change",function(){validateAndApply(this),"function"==typeof showValue&&showValue()}).on("input."+Util.slugify(this.name),function(){"function"==typeof showValue&&showValue()}).on("keypress",function(evt){13===evt.which&&(evt.preventDefault(),$elInput.trigger("change"))}).appendTo($elControl),!Browser.isIE||Browser.ieVersion>9?($elValue=jQuery(document.createElement("span")),$elValue.attr("id",this.name+"-value-"+varId).appendTo($elControl),showValue=function(){$elValue.text(Number($elInput.val()).toFixed(fracDigits))}):$elInput.off("input."+Util.slugify(this.name)),$elInput.val(defValue),validateAndApply($elInput[0]),"function"==typeof showValue&&showValue(),autofocus&&($elInput.attr("autofocus","autofocus"),postdisplay["#autofocus:"+$elInput.attr("id")]=function(task){setTimeout(function(){return $elInput.focus()},Engine.minDomActionDelay),delete postdisplay[task]})}})}();\n
Harlaus seems to notice Elesun and nods to her.\n\n<<if !$HarlScene>>\s\n\t<<ctrlClick 'See what he wants.' '1HarlScene'>>\s\n<<else>>\s\n\t<<ctrlClick 'Speak to him.' '1HarlTalk'>>\s\n<<endif>>
!function(){$(document).on("dblclick","#info",function(){$("#info").empty()}),$(document).keyup(function(e){32!=e.keyCode||e.shiftKey||1!=State.variables.gamestart||("Elesun"==State.variables.character?($("#info").empty(),$('<center><img src="assets/img/EleCl.jpg"></center>').appendTo("#info")):($("#info").empty(),$('<center><img src="assets/img/RipCl.jpg"></center>').appendTo("#info")))})}(),function(){$(document).keyup(function(e){77==e.keyCode&&$("#mutebutton a").trigger("click")})}(),function(){$(document).keyup(function(e){68==e.keyCode&&1==State.variables.infopop&&$("#dismiss button").trigger("click")})}(),function(){$(document).keyup(function(e){70==e.keyCode&&$("#fscreenbutton button").trigger("click")})}(),function(){$(document).keyup(function(e){27==e.keyCode&&2==State.variables.gamestart&&(State.variables.gamestart=1,$("#return a").trigger("click"))})}(),function(){$(document).keyup(function(e){81==e.keyCode&&2==State.variables.gamestart&&(State.variables.gamestart=1,$("#return a").trigger("click"))})}(),function(){$(document).keyup(function(e){49==e.keyCode&&$("#atkOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){50==e.keyCode&&$("#defOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){51==e.keyCode&&$("#movOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){97==e.keyCode&&$("#atkOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){98==e.keyCode&&$("#defOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){99==e.keyCode&&$("#movOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){52==e.keyCode&&$("#endOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){100==e.keyCode&&$("#endOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){110==e.keyCode&&$("#endOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){17==e.keyCode&&$("#endOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){32==e.keyCode&&$("#trsOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){17==e.keyCode&&$("#conOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){96==e.keyCode&&$("#conOpt a").trigger("click")})}(),function(){$(document).keyup(function(e){32==e.keyCode&&e.shiftKey&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("charmenu"))})}(),function(){$(document).keyup(function(e){192==e.keyCode&&e.shiftKey&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("debug_mode_activation"))})}(),function(){$(document).keyup(function(e){67==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("charmenu"))})}(),function(){$(document).keyup(function(e){69==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("equipmenu"))})}(),function(){$(document).keyup(function(e){65==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("armorswap"))})}(),function(){$(document).keyup(function(e){83!=e.keyCode||e.shiftKey||1!=State.variables.gamestart||(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("spellswap"))})}(),function(){$(document).keyup(function(e){83==e.keyCode&&e.shiftKey&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("player_settings"))})}(),function(){$(document).keyup(function(e){87==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("weaponswap"))})}(),function(){$(document).keyup(function(e){74==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("journalmenu"))})}(),function(){$(document).keyup(function(e){9!=e.keyCode||e.shiftKey||1!=State.variables.gamestart||(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("journalmenu"))})}(),function(){$(document).keyup(function(e){9==e.keyCode&&e.shiftKey&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("codex_menu"))})}(),function(){$(document).keyup(function(e){88==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("player_settings"))})}(),function(){$(document).keyup(function(e){90==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("codex_menu"))})}(),function(){$(document).keyup(function(e){72==e.keyCode&&1==State.variables.gamestart&&(State.variables["return"]=passage(),State.variables.gamestart=2,State.display("helpmenu"))})}(),function(){$(document).keyup(function(e){17==e.keyCode&&($("#ctrlClick a").trigger("click"),$("#ctrlClick button").trigger("click"))})}(),function(){$(document).keyup(function(e){96==e.keyCode&&($("#ctrlClick a").trigger("click"),$("#ctrlClick button").trigger("click"))})}(),function(){$(document).keyup(function(e){13==e.keyCode&&($("#ctrlClick a").trigger("click"),$("#ctrlClick button").trigger("click"))})}(),function(){$(document).keyup(function(e){(49==e.keyCode||97==e.keyCode)&&($("#oneAct a").trigger("click"),$("#oneAct button").trigger("click")),(50==e.keyCode||98==e.keyCode)&&($("#twoAct a").trigger("click"),$("#twoAct button").trigger("click")),(51==e.keyCode||99==e.keyCode)&&($("#threeAct a").trigger("click"),$("#threeAct button").trigger("click")),(52==e.keyCode||100==e.keyCode)&&($("#fourAct a").trigger("click"),$("#fourAct button").trigger("click")),(53==e.keyCode||101==e.keyCode)&&($("#fiveAct a").trigger("click"),$("#fiveAct button").trigger("click")),(54==e.keyCode||102==e.keyCode)&&($("#sixAct a").trigger("click"),$("#sixAct button").trigger("click")),(55==e.keyCode||103==e.keyCode)&&($("#sevenAct a").trigger("click"),$("#sevenAct button").trigger("click")),(56==e.keyCode||104==e.keyCode)&&($("#eightAct a").trigger("click"),$("#eightAct button").trigger("click")),(57==e.keyCode||105==e.keyCode)&&($("#nineAct a").trigger("click"),$("#nineAct button").trigger("click")),(48==e.keyCode||96==e.keyCode)&&($("#zeroAct a").trigger("click"),$("#zeroAct button").trigger("click"))})}();\n!function(){$(document).on("dblclick","#ui-bar",function(){$("#ui-bar").toggleClass("stowed")});}();\n$(document).on('keyup', function (e) {\n if ((e.which === 81 || e.which === 27 || e.which === 68) && Dialog.isOpen()) {\n Dialog.close();\n }\n});
jquery:on\nhash:off\nbookmark:on\nmodernizr:off\nundo:off\nobfuscate:off\nexitprompt:on\nblankcss:off\n
Irelith is bad at looking busy.\n\nShould Elesun go bother her?\n\n<<ctrlClick "Absolutely." "1IreTalk">>
<<if $health lte 0>>\n\t<<set $playerturn to 0>><<set $combatnext to "gameover">>\n\t<<audio ":playing" fadeout>>\n\t<<set $SpEffEnd to -1>>\n\t<<set $specialOn to 0>>\n\t<<set $NMESpMov to 1.0>>\n\t<<set $NMESpDef to 1.0>>\n\t<<set $NMESpAtk to 1.0>>\n\t<<set $NMESpDam to 1.0>>\n\t<<set $NMEStaUse to 0>>\n\t<<set $NMEStaLmt to 0>>\n\t<<set $SpEffDisplay to "">>\n<<endif>>\n\n<<if $nmehealth lte 0>>\n\t<<set $playerturn to 0>><<set $combatnext to "combat_end">>\n<<endif>>
<<display "fists_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "unarm"]]\n[[No|weaponswap]]
"Sure, I could use some practice."\n\n<<ctrlClick "Let's do it, then." "1IreTrainer">>
<<display $armor_ui>>
<span id="volMaker"></span>\n<<script>>\npostdisplay['volume-control'] = function (taskName) {\n delete postdisplay[taskName];\n $('#volMaker').append('<input type="range" name="volume" min="0" max="10" step="1" value="' + State.variables.vol + '" oninput="volumeSlider();" />');\n};\n<</script>>\n\n\n/% old stuff\n //$(document).ready(function(){\n<input type="range" name="volume" min="0" max="10" step="1" oninput="volumeSlider();" />\n\n<<script>>\n!function(){\n $(document).ready(function(){\n $('#volMaker').append('<input type="range" name="volume" min="0" max="10" step="1" value="' + State.variables.vol + '" oninput="volumeSlider();" />');\n });\n}();\n<</script>>%/
<<if $titles.has('Gracious Host')>>\n\t<<if $health lt $maxhealth>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 20>>\n\t\t\t<<set $health++>>\n\t\t\t<<if $health gte $maxhealth>>\n\t\t\t\t<<set $health to $maxhealth>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
<<display "cloth_ui">>\nEquip this armor?\n\n[[Yes|changearmor][$change to "cloth"]]\n[[No|armorswap]]
Go see Ripley?\n\n<<ctrlClick "Go on." "0choice3" "leave">>
Irelith is sleeping. Elesun doesn't want to disturb her.
<<display "leath_ui">>\nEquip this armor?\n\n[[Yes|changearmor][$change to "leath"]]\n[[No|armorswap]]
setup.encode = function (obj) {\n\tvar encoded;\n\t\n\tif (!obj) {\n\t\tobj = State.variables;\n\t}\n\t\n\ttry {\n\t\tencoded = JSON.stringify(obj);\n\t\tencoded = btoa(encoded);\n\t} catch (e) {\n\t\tencoded = JSON.stringify(e);\n\t\tencoded = btoa(encoded);\n\t} finally {\n\t\treturn encoded;\n\t}\n};\n\nsetup.decode = function (bugcode) {\n\tvar decoded;\n\n\tdecoded = atob(bugcode);\n\tdecoded = JSON.parse(decoded);\n\t\n\treturn decoded;\n};
<<set $spellname to "Healing">>\n<<set $schoolname to "Light">>\n<<set $p_spellname to "Healing">>\n<<set $spell_ui to "heal_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 0.9>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 10>>\n<<set $spellhealing to 50>>\n<<set $spelldispel to 0>>\n\n<<if $lighttraining is 1>>\n\t<<set $spellhealing to 60>>\n<<elseif $lighttraining is 2>>\n\t<<set $spellregen to 20>>\n\t<<set $spellhealing to 60>>\n<<elseif $lighttraining is 3>>\n\t<<set $satk to 1.0>>\n\t<<set $spellregen to 20>>\n\t<<set $spellhealing to 60>>\n<<endif>>
\t\t<<timed 1s t8n>>\n''Written, programmed, and designed by:''<<next 1s t8n>> ChapelR\n\t\t\t<<next 1s t8n>>\n''Voice actress:'' <<next 1s t8n>> [[Ashley Eddy|https://freesound.org/people/11linda/]]\n\t\t\t<<next 1s t8n>>\n''Music:'' <<next 1s t8n>>[[Shady Dave|https://soundcloud.com/shady-dave-2/tracks]] [[Eric Hopton|https://erichopton.bandcamp.com/]] [[Goran Andrić|https://soundcloud.com/zagi2]] [[Frankumjay|https://soundcloud.com/frankumjay]]\n\t\t\t<<next 1s t8n>>\n''Sound:'' <<next 1s t8n>>[[Bertof Sound|https://freesound.org/people/Bertrof/]] [[Abyssmal|https://freesound.org/people/Abyssmal/]] [[Joel Azzopardi|https://freesound.org/people/JoelAudio/]]\n\t\t\t<<next 1s t8n>>\n''Art and Icons:'' <<next 1s t8n>>[[Roman Alkan|http://www.rinmarugames.com/]] [[/u/Lorc|https://www.reddit.com/r/IndieGaming/comments/ifmie/i_made_700_rpg_icons_free_for_use_for_your_game/]]\n\t\t\t<<next 1s t8n>>\n''Resources:'' <<next 1s t8n>>[[Twine by Chris Klimas|https://twinery.org/]] [[Sugarcube by Thomas Michael Edwards|http://www.motoslave.net/sugarcube/]]\n[[Chromium|https://www.chromium.org/Home]] [[Node.js|https://nodejs.org/en/]] [[NW.js|https://nwjs.io/]] [[NW-Builder|https://github.com/nwjs/nw-builder]] [[Inno Setup|http://www.jrsoftware.org/isinfo.php]]\n\t\t<</timed>>\n<<timed 15s>><<goto "title3">>\n<</timed>><span id="ctrlClick">@@display: none;[[skip|title3]]@@</span>
\n<center>\n<div class="text-fade-in">\n!!Make no vows.\n</div><<timed 2s t8n>>\n<<ctrlClick "Continue" "ch1intro">>\n<</timed>></center>
Aesil didn't tend to leave survivors. Still, they needed to be sure, if only so they could give mercy to the suffering ones he didn't quite finish.
/% tutorial hooks -- place by default %/\n<<set setup.comTut to true>>\n\n<<display 'place_tut_hooks'>>\n/% title hooks added when titles are added %/\n\n<<set $titles to new Inventory('Demonkin')>>\n<<set $choice to new Inventory()>>
<span id="enemystatupdate"><<display "nmegritbar">><<display "nmeheartbreaker">><<if $combatimages is 1 and $mobile neq 1>><span id="nmeport">[img[$enemyimg]]</span><<endif>>\n<<print $enemyname>> (<<print $enemypower>>)\n\n<<if $combatimages is 1>>[img[$NMEgritdisplay]]<<else>><<= setup.words.grit.toUpperFirst()>>: <<print $nmegrit>><<endif>>\n<<if $combatimages is 1>>[img[$NMEheartdisplay]]<<else>>Health: <<print $nmehealth>><<endif>>\n<<if $playerturn is 1>><<if $sta gte $wStaUse>><<if $despatk is 2>><span id="atkOpt"><<click "1. Desperation Attack">><<display "desperation_atk">><<shaketarget "#combatNME" 380ms>><</click>></span><<else>><span id="atkOpt"><<click "1. Attack">><<display "attack">><<shaketarget "#combatNME" 250ms>><</click>></span> (Cost: <<print $wStaUse + $NMEStaUse>> Stamina)<<endif>><<else>>Not enough stamina.\n<<display "playeractionsMobile">><<endif>><<else>><<if $nmehealth lte 0>>Enemy defeated.\n<<display "playeractionsMobile">><<else>>Enemy's Turn...\n<<display "playeractionsMobile">><<endif>><<endif>></span>
<<set $NMEhearts to ($nmemaxhealth*10)+$nmehealth>>\n\n<<if $NMEhearts is 11>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of1'])>>\n<<elseif $NMEhearts is 10>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of1'])>>\n\n<<elseif $NMEhearts is 22>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of2'])>>\n<<elseif $NMEhearts is 21>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of2'])>>\n<<elseif $NMEhearts is 20>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of2'])>>\n\n<<elseif $NMEhearts is 33>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of3'])>>\n<<elseif $NMEhearts is 32>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of3'])>>\n<<elseif $NMEhearts is 31>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of3'])>>\n<<elseif $NMEhearts is 30>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of3'])>>\n\n<<elseif $NMEhearts is 44>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of4'])>>\n<<elseif $NMEhearts is 43>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of4'])>>\n<<elseif $NMEhearts is 42>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of4'])>>\n<<elseif $NMEhearts is 41>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of4'])>>\n<<elseif $NMEhearts is 40>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of4'])>>\n\n<<elseif $NMEhearts is 55>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of5'])>>\n<<elseif $NMEhearts is 54>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of5'])>>\n<<elseif $NMEhearts is 53>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of5'])>>\n<<elseif $NMEhearts is 52>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of5'])>>\n<<elseif $NMEhearts is 51>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of5'])>>\n<<elseif $NMEhearts is 50>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of5'])>>\n\n<<elseif $NMEhearts is 66>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of6e'])>>\n<<elseif $NMEhearts is 65>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of6e'])>>\n<<elseif $NMEhearts is 64>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of6e'])>>\n<<elseif $NMEhearts is 63>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of6e'])>>\n<<elseif $NMEhearts is 62>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of6e'])>>\n<<elseif $NMEhearts is 61>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of6e'])>>\n<<elseif $NMEhearts is 60>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of6e'])>>\n\n<<elseif $NMEhearts is 77>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['7of7'])>>\n<<elseif $NMEhearts is 76>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of7'])>>\n<<elseif $NMEhearts is 75>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of7'])>>\n<<elseif $NMEhearts is 74>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of7'])>>\n<<elseif $NMEhearts is 73>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of7'])>>\n<<elseif $NMEhearts is 72>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of7'])>>\n<<elseif $NMEhearts is 71>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of7'])>>\n<<elseif $NMEhearts is 70>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of7'])>>\n\n<<elseif $NMEhearts is 88>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['8of8'])>>\n<<elseif $NMEhearts is 87>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['7of8'])>>\n<<elseif $NMEhearts is 86>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of8'])>>\n<<elseif $NMEhearts is 85>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of8'])>>\n<<elseif $NMEhearts is 84>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of8'])>>\n<<elseif $NMEhearts is 83>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of8'])>>\n<<elseif $NMEhearts is 82>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of8'])>>\n<<elseif $NMEhearts is 81>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of8'])>>\n<<elseif $NMEhearts is 80>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of8'])>>\n\n<<elseif $NMEhearts is 99>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['9of9'])>>\n<<elseif $NMEhearts is 98>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['8of9'])>>\n<<elseif $NMEhearts is 97>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['7of9'])>>\n<<elseif $NMEhearts is 96>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of9'])>>\n<<elseif $NMEhearts is 95>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of9'])>>\n<<elseif $NMEhearts is 94>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of9'])>>\n<<elseif $NMEhearts is 93>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of9'])>>\n<<elseif $NMEhearts is 92>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of9'])>>\n<<elseif $NMEhearts is 91>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of9'])>>\n<<elseif $NMEhearts is 90>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of9'])>>\n\n<<elseif $NMEhearts is 110>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['10of10'])>>\n<<elseif $NMEhearts is 109>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['9of10'])>>\n<<elseif $NMEhearts is 108>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['8of10'])>>\n<<elseif $NMEhearts is 107>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['7of10'])>>\n<<elseif $NMEhearts is 106>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of10'])>>\n<<elseif $NMEhearts is 105>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of10'])>>\n<<elseif $NMEhearts is 104>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of10'])>>\n<<elseif $NMEhearts is 103>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of10'])>>\n<<elseif $NMEhearts is 102>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of10'])>>\n<<elseif $NMEhearts is 101>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of10'])>>\n<<elseif $NMEhearts is 100>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of10'])>>\n\n<<elseif $NMEhearts is 220>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['20of20'])>>\n<<elseif $NMEhearts is 219>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['19of20'])>>\n<<elseif $NMEhearts is 218>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['18of20'])>>\n<<elseif $NMEhearts is 217>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['17of20'])>>\n<<elseif $NMEhearts is 216>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['16of20'])>>\n<<elseif $NMEhearts is 215>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['15of20'])>>\n<<elseif $NMEhearts is 214>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['14of20'])>>\n<<elseif $NMEhearts is 213>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['13of20'])>>\n<<elseif $NMEhearts is 212>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['12of20'])>>\n<<elseif $NMEhearts is 211>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['11of20'])>>\n<<elseif $NMEhearts is 210>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['10of20'])>>\n<<elseif $NMEhearts is 209>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['9of20'])>>\n<<elseif $NMEhearts is 208>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['8of20'])>>\n<<elseif $NMEhearts is 207>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['7of20'])>>\n<<elseif $NMEhearts is 206>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['6of20'])>>\n<<elseif $NMEhearts is 205>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['5of20'])>>\n<<elseif $NMEhearts is 204>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['4of20'])>>\n<<elseif $NMEhearts is 203>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['3of20'])>>\n<<elseif $NMEhearts is 202>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['2of20'])>>\n<<elseif $NMEhearts is 201>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['1of20'])>>\n<<elseif $NMEhearts is 200>>\n\t<<set $NMEheartdisplay to clone(setup.ui.hearts['0of20'])>>\n\n<<endif>>\n
<<set $formUnlock to 1>>\n<<set $scars to $ripleyscars>>\n<<set $bangles to 1>>\n<<set $character to "Ripley">>\n<<set $naturalhave to 1>>\n<<set $tp to $tp+$ripleytp>>\n<<set $xp to $ripleyxp>>\n<<set $unarmedtraining to 2>>\n<<set $clothhave to 1>>\n<<display "unarmed">>\n<<display "spell_keen">>\n<<display "clotharmor">>\n<<stats>>
/%balanceObj%/\n<<set $nmeatk to Math.trunc($nmeatk * setup.bal.eatk)>>\n<<set $nmedef to Math.trunc($nmedef * setup.bal.edef)>>\n<<set $nmemov to Math.trunc($nmemov * setup.bal.emov)>>\n<<set $nmemaxgrit to Math.trunc($nmemaxgrit * setup.bal.egrit)>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmexp to Math.trunc($nmexp * setup.bal.xpEarn)>>
\nThe total amount of experience <<print $character>> has earned since the last time she earned a level. She will earn a new level once her pool of experience reaches 100.\n\n
<<image "AesSm3">><<thumb>>Elesun charges Aesil shoulder first and crashes into him, knocking them both to the ground.\n\nShe manages to make it to her feet first, and grabs Ripley's hand and sprints up the steps with her in tow.\n\nThey run back through the storeroom and spill back out onto the wall.\n\n<<ctrlClick "Continue." "0aesil_escape">>
''<<switch $mode>><<case 0>>Story Mode<<case 1>>Normal Mode<<case 2>>Easy Mode<<case 3>>Intense Mode<</switch>>''\n<<stats>>\nAre you sure?\n\n<<ctrlClick "I'm sure." "ch1intro">>\n\n[[Select something else.|difficulty_check]]
Elesun suspects that this is the lever that controls the courtyard gate.\n\n<<ctrlClick "Pull it." "0iwlever2" "interact">>
There's a lot more sellswords than soldiers, which is good. Probably largely Irelith's doing. Akatosh's men were motivated by fear and money, and they were taking heavy losses. Their morale wouldn't hold.
<<if $debug is 1 and $release is 1>>Debug Mode <<link "Turn Off">><<set $debug to 0>><<script>>UI.alert("Debug mode will deactivate on next passage transition.");<</script>><</link>><<elseif $debug is 0 and $release is 0>>Development Build <<if $verify is 2>>\n<<link "Turn On Debug Features">><<set $debug to 1>><<script>>UI.alert("Debug mode will activate on next passage transition.");<</script>><</link>><<endif>><<elseif $debug is 1 and $release is 0>>Development Build (Debug) \n<<link "Turn Off Debug Features">><<set $debug to 0>><<script>>UI.alert("Debug mode will deactivate on next passage transition.");<</script>><</link>><<else>>A narrative game by Chapel<<endif>>
Ghost grants a large bonus to critical chance in exchange for a penalty to critical damage.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
[conf] confused [hapy] happy\n[grin] grin [detr] determined\n[mask] wearing mask [exct] excited\n[surp] surprised [sadd] sad\n[doll] dolled up [dola] dolled up (angry)\n[doln] dolled up (neutral)\n----------------------------------------------------------------\n<<emote "code" "size[pt or sm]">>\n----------------------------------------------------------------\n<<portrait>> or <<thumb>> for non-emote images.
/% 5 %/\n<<set $specialMult to 0.8>>/%damage of spell%/\n<<set $SpEffName to "Burned">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,1,1)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 0.9>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 0.9>>/%damage debuff%/\n<<set $NMEStaUse to 2>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Flash Fire">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
"The brave captain of my personal guard," the King say, grinning. "I assume she's hard at work organizing my men."\n\n"Something like that, I'm sure."
Head south to the bailey?\n\n<<ctrlClick "Go to the bailey." "1bailey" "leave">>
Elesun sighs.\n\nRipley's legs are too far apart and her shoulders are too far forward. //Again//.
<<set $spellname to "Regeneration">>\n<<set $schoolname to "Light">>\n<<set $p_spellname to "Regeneration">>\n<<set $spell_ui to "rgn_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 10>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 20>>\n<<set $spellhealing to 5>>\n<<set $spelldispel to 0>>\n\n<<if $lighttraining is 1>>\n\t<<set $spellregen to 25>>\n<<elseif $lighttraining is 2>>\n\t<<set $spellregen to 30>>\n<<elseif $lighttraining is 3>>\n\t<<set $spellhealing to 10>>\n\t<<set $spellregen to 30>>\n<<endif>>
Ripley was playing this well.\n\nShe’s trained in the use of many weapons, but she always did prefer her fists--they’re less lethal. When fighting with fists against all manner of weapons, being on the defensive is ideal.
Elesun listens closer. She hears screams and war cries, and the sounds of metal clashing against metal. A lot of people are dying out there.
Elesun could almost see his face. Akatosh.<<image "AkaSm_craz">>\n\nHe'd get his soon.
<<display "infr_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "infr"]]\n[[No|spellswap]]
Elesun can train to improve her effectiveness with weapons and spells. Visit combat trainers (like Irelith) or magic trainers to spend training points (TP) to level up her skills. Weapons and schools of magic can be trained up to rank 3. The bonuses conferred by training are small at first, and so are the costs. High level training, on the other hand, has potentially massive benefits, though they can cost quite a bit of TP.
<<if $character is "Elesun">>[img[setup.img.EleCl]]<<else>>[img[setup.img.RipCl]]<<endif>>
!People\n\n<span id="codexpeo">Description of People</span>\n\n<<link "The Kingdom of Juno">>\n\t<<replace "#codexpeo">>Junovians<</replace>>\n<</link>>\n<<link "The Kingdom of Valne">>\n\t<<replace "#codexpeo">>Valnese<</replace>>\n<</link>>\n<<link "The Northers">>\n\t<<replace "#codexpeo">>Northers<</replace>>\n<</link>>\n<<link "The Druid Tribes">>\n\t<<replace "#codexpeo">>Druids<</replace>>\n<</link>>\n<<link "Other Peoples">>\n\t<<replace "#codexpeo">>Other peeps.<</replace>>\n<</link>>\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
!Welcome to level <<print $lvl>>.\n<<stats>><<display "rest_basic">>\n!!Power: <<print $power>>\n|!Health:|<<print $health>>/<<print $maxhealth>>|!Scars:|<<print $scars>>|\n|!<<= setup.words.grit.toUpperFirst()>>: |<<print $maxgrit>>|!Stamina:|<<print $maxsta>>|\n| |\n|!Attributes:| | |!Derived Attributes:| |\n|Strength| |<<print $strrank>>|Attack:| |<<print $atk>>|\n|Agility| |<<print $agirank>>|Defense:| |<<print $def>>|\n|Endurance| |<<print $endrank>>|Movement:| |<<print $mov>>|\n|Will| |<<print $wilrank>>|Critical Chance:| |<<print $critchance>>|\n|Cunning| |<<print $cngrank>>|Dodge Chance:| |<<print $dodge>>|\n\nTraining Points (TP): <<print $tp>>\n<span id="ctrlClick">[[Continue|$exitpassage]]</span>\n\n\n\n\n
Once you start, there's no turning back--the variables demand it. Set your level now with the level up button!\n\nJump to which chapter:\n\n[[Chapter 1|ch1-jump]] (recommended level: 4)\n\n...\n[[Cancel|debug_features]]
!function(){$(document).keyup(function(t){49==t.keyCode&&($("#oneAct a").trigger("click"),$("#oneAct button").trigger("click")),50==t.keyCode&&($("#twoAct a").trigger("click"),$("#threeAct button").trigger("click")),51==t.keyCode&&($("#threeAct a").trigger("click"),$("#threeAct button").trigger("click")),52==t.keyCode&&($("#fourAct a").trigger("click"),$("#fourAct button").trigger("click")),52==t.keyCode&&($("#fourAct a").trigger("click"),$("#fourAct button").trigger("click")),53==t.keyCode&&($("#fiveAct a").trigger("click"),$("#fiveAct button").trigger("click")),54==t.keyCode&&($("#sixAct a").trigger("click"),$("#sixAct button").trigger("click")),55==t.keyCode&&($("#sevenAct a").trigger("click"),$("#sevenAct button").trigger("click")),56==t.keyCode&&($("#eightAct a").trigger("click"),$("#eightAct button").trigger("click")),57==t.keyCode&&($("#nineAct a").trigger("click"),$("#nineAct button").trigger("click")),48==t.keyCode&&($("#zeroAct a").trigger("click"),$("#zeroAct button").trigger("click")),9==t.keyCode&&($("#tabAct a").trigger("click"),$("#tabAct button").trigger("click")),32==t.keyCode&&($("#spaceAct a").trigger("click"),$("#spaceAct button").trigger("click")),17==t.keyCode&&($("#ctrlAct a").trigger("click"),$("#ctrlAct button").trigger("click")),8==t.keyCode&&($("#bkspAct a").trigger("click"),$("#bkspAct button").trigger("click")),27==t.keyCode&&($("#escAct a").trigger("click"),$("#escAct button").trigger("click")),46==t.keyCode&&($("#delAct a").trigger("click"),$("#delAct button").trigger("click")),13==t.keyCode&&($("#enterAct a").trigger("click"),$("#enterAct button").trigger("click")),18==t.keyCode&&($("#altAct a").trigger("click"),$("#altAct button").trigger("click")),81==t.keyCode&&($("#qKeyAct a").trigger("click"),$("#qKeyAct button").trigger("click")),87==t.keyCode&&($("#wKeyAct a").trigger("click"),$("#wKeyAct button").trigger("click")),69==t.keyCode&&($("#eKeyAct a").trigger("click"),$("#eKeyAct button").trigger("click")),82==t.keyCode&&($("#rKeyAct a").trigger("click"),$("#rKeyAct button").trigger("click")),84==t.keyCode&&($("#tKeyAct a").trigger("click"),$("#tKeyAct button").trigger("click")),89==t.keyCode&&($("#yKeyAct a").trigger("click"),$("#yKeyAct button").trigger("click")),85==t.keyCode&&($("#uKeyAct a").trigger("click"),$("#uKeyAct button").trigger("click")),73==t.keyCode&&($("#iKeyAct a").trigger("click"),$("#iKeyAct button").trigger("click")),79==t.keyCode&&($("#oKeyAct a").trigger("click"),$("#oKeyAct button").trigger("click")),80==t.keyCode&&($("#pKeyAct a").trigger("click"),$("#pKeyAct button").trigger("click")),65==t.keyCode&&($("#aKeyAct a").trigger("click"),$("#aKeyAct button").trigger("click")),83==t.keyCode&&($("#sKeyAct a").trigger("click"),$("#sKeyAct button").trigger("click")),68==t.keyCode&&($("#dKeyAct a").trigger("click"),$("#dKeyAct button").trigger("click")),70==t.keyCode&&($("#fKeyAct a").trigger("click"),$("#fKeyAct button").trigger("click")),71==t.keyCode&&($("#gKeyAct a").trigger("click"),$("#gKeyAct button").trigger("click")),72==t.keyCode&&($("#hKeyAct a").trigger("click"),$("#hKeyAct button").trigger("click")),74==t.keyCode&&($("#jKeyAct a").trigger("click"),$("#jKeyAct button").trigger("click")),75==t.keyCode&&($("#kKeyAct a").trigger("click"),$("#kKeyAct button").trigger("click")),76==t.keyCode&&($("#lKeyAct a").trigger("click"),$("#lKeyAct button").trigger("click")),90==t.keyCode&&($("#zKeyAct a").trigger("click"),$("#zKeyAct button").trigger("click")),88==t.keyCode&&($("#xKeyAct a").trigger("click"),$("#xKeyAct button").trigger("click")),67==t.keyCode&&($("#cKeyAct a").trigger("click"),$("#cKeyAct button").trigger("click")),86==t.keyCode&&($("#vKeyAct a").trigger("click"),$("#vKeyAct button").trigger("click")),66==t.keyCode&&($("#bKeyAct a").trigger("click"),$("#bKeyAct button").trigger("click")),78==t.keyCode&&($("#nKeyAct a").trigger("click"),$("#nKeyAct button").trigger("click")),77==t.keyCode&&($("#mKeyAct a").trigger("click"),$("#mKeyAct button").trigger("click")),112==t.keyCode&&($("#f1KeyAct a").trigger("click"),$("#f1KeyAct button").trigger("click")),113==t.keyCode&&($("#f2KeyAct a").trigger("click"),$("#f2KeyAct button").trigger("click")),114==t.keyCode&&($("#f3KeyAct a").trigger("click"),$("#f3KeyAct button").trigger("click")),115==t.keyCode&&($("#f4KeyAct a").trigger("click"),$("#f4KeyAct button").trigger("click")),116==t.keyCode&&($("#f5KeyAct a").trigger("click"),$("#f5KeyAct button").trigger("click")),117==t.keyCode&&($("#f6KeyAct a").trigger("click"),$("#f6KeyAct button").trigger("click")),118==t.keyCode&&($("#f7KeyAct a").trigger("click"),$("#f7KeyAct button").trigger("click")),119==t.keyCode&&($("#f8KeyAct a").trigger("click"),$("#f8KeyAct button").trigger("click")),120==t.keyCode&&($("#f9KeyAct a").trigger("click"),$("#f9KeyAct button").trigger("click")),121==t.keyCode&&($("#f10KeyAct a").trigger("click"),$("#f10KeyAct button").trigger("click")),122==t.keyCode&&($("#f11KeyAct a").trigger("click"),$("#f11KeyAct button").trigger("click")),123==t.keyCode&&($("#f12KeyAct a").trigger("click"),$("#f12KeyAct button").trigger("click"))})}();
Grants a large increase to critical attack chance and critical attack damage.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
<<if $stoneLoc is 0>><<set $stoneLoc to 1>>"Hey Elesun. How's Ripley been since the siege?" one of the guards asks.\n\n"She's putting on a brave face," Elesun replies.\n\n"She still have that rock collection? I saw a pretty neat-looking rock over by the well."<<else>>They're just shooting the breeze.<<endif>>
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has performed a desperation attack.\n\n<<name>> gains access to this powerful technique after losing a heart, and it replaces her ability to perform ordinary attacks. The desperation attack deals massive damage at the cost of all stamina. It's power is not affected by equipment.\s\n<</dialog>>\n<<tutorialHook 'tut_onDespAtk'>>
<<nobr>><<if $characterHide is 0>><<portrait>><<endif>><<set $gamestart to 2>><<endnobr>><<if $characterHide is 0>>\n!<<print "\su2629\s " + $character>>\n!!<<link "Level">><<dialog 'Information'>><<display "lvlinfo">><</dialog>><</link>> <<print $lvl>>, <<link "Power">><<dialog 'Information'><<display "powinfo">><</dialog>><</link>> <<print $power>>\n|!<<link "Health">><<dialog 'Information'>><<display "healthinfo">><</dialog>><</link>>:|<<print $health>>/<<print $maxhealth>>|!<<link "Scars">><<dialog 'Information'>><<display "scarsinfo">><</dialog>><</link>>:|<<print $scars>>|\n|!<<link setup.words.grit>><<dialog 'Information'>><<display "gritinfo">><</dialog>><</link>>: |<<print $maxgrit>>|!<<link "Stamina">><<dialog 'Information'>><<display "stainfo">><</dialog>><</link>>:|<<print $maxsta>>|\n| |\n| |!Attributes:| | | | | |\n|[img[setup.ui.icons.strIcon]]|<<link "Strength">><<dialog 'Information'>><<display "strinfo">><</dialog>><</link>>|<<print $strrank>>|[img[setup.ui.icons.ui_atk]]|Attack:| |<<print $atk>>| |\n|[img[setup.ui.icons.agiIcon]]|<<link "Agility">><<dialog 'Information'>><<display "agiinfo">><</dialog>><</link>>|<<print $agirank>>|[img[setup.ui.icons.ui_def]]|Defense:| |<<print $def>>| |\n|[img[setup.ui.icons.endIcon]]|<<link "Endurance">><<dialog 'Information'>><<display "endinfo">><</dialog>><</link>>|<<print $endrank>>|[img[setup.ui.icons.ui_mov]]|Movement:| |<<print $mov>>| |\n|[img[setup.ui.icons.wilIcon]]|<<link "Will">><<dialog 'Information'>><<display "wilinfo">><</dialog>><</link>>|<<print $wilrank>>|[img[setup.ui.icons.ui_crit]]|Critical Chance:| |<<print $critchance>>| |\n|[img[setup.ui.icons.cngIcon]]|<<link "Cunning">><<dialog 'Information'>><<display "cnginfo">><</dialog>><</link>>|<<print $cngrank>>|[img[setup.ui.icons.ui_dodge]]|Dodge Chance:| |<<print $dodge>>| |\n\n|!Special:|\n<<if $bangles eq 1>><<link "Druid Bangles">><<dialog 'Information'>><<display "banglesinfo">><</dialog>><</link>><<else>>Nothing of note.<<endif>>\n<<if $formUnlock is 1>><<link "Devil Form">><<dialog 'Information'>><<display "devilforminfo">><</dialog>><</link>><<elseif $formUlock is 2>><<link "Final Form">><<dialog 'Information'>><<display "finalforminfo">><</dialog>><</link>><<endif>>\n\n|<<link "Experience Points">><<dialog 'Information'>><<display "xpinfo">><</dialog>><</link>> (XP): |<<print $xp>>/100|\n|<<link "Training Points">><<dialog 'Information'>><<display "tpinfo">><</dialog>><</link>> (TP): |<<print $tp>>|\n\n<span id="return">[[Return to game.|$return][$gamestart to 1]]</span>\n\n<<else>>Nothing here right now...<<endif>>\n\n\n\n\n\n\n\n\n\n\n
<<image "ElePt">><<set $gamestart to 2>>''Elesun''\n\nKing Harmon found Elesun living a simple life as a serf. When he realized she was demonkin, he instructed Irelith to train her and offered her a place on the King's Guard. Elesun agreed, and excelled in every form of combat. Her skill gave rise to half-joking arguments among the King's soldiers over which one of the two demonkin would win in a fight.\n\nOnce Ripley was discovered and brought to the castle, Elesun became her personal body guard, trainer, and companion. The two grew close over the years.\n\nElesun tends to be a more thoughtful, careful, and crafty warrior than most, but isn't above brute-forcing her way through a fight.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<set $gamestart to 2>>Debug options.\n\nTurns: <<set _exclude to visitedTags("combat") + visitedTags("dock") + visitedTags("menu") + visitedTags("menu") + visitedTags("nobr")>><<set _baseTurns to turns()>><<set _turnResult to _baseTurns - _exclude>><<print _baseTurns + "(Total) - " + _exclude + "(Menus/Combat/Doubles) = " + _turnResult + "(Adjusted)">>\n\n<<link "Check Variables">><<checkvars>><</link>>\n\n[[Training Dummy|debug_trainingdummy]]\n\n[[Level Up|debug_thelevelupbutton]]\n\n[[Info Tester|info macro test]]\n\n[[Sound Tester|soundtest]]\n\n[[Bug Code Unpacker|TheDebugDecoderRing]]\n\n[[Test Combat|combat_test]]\n\n[[Image Tester|debug_images]]\n\n[[Boss Fight Test|boss-fight-debug]]\n\nWARNING: The following options will ruin your game state.\n\n[[Chapter Select|storyJump]]\n\n[[Title Screen|title]]\n\n[[Game Over|gameover]]\n\n<<link "Switch to Ripley">><<set $character to "Ripley">><<set $formUnlock to 1>><<set $bangles to 1>><<stats>><</link>>\n\n\n[[Cancel|$exitpassage][$gamestart to 1]]
/% changes:\n\tplayer deals more damage globally\n\tdesp atks more effective\n\tenemy spells are weaker\n\tenemies deal less damage and have less health\n\tenemies are less agressive\n%/\n<<display balanceObj>> /%reset%/\n<<set setup.bal.patk to 1.5>>\n<<set setup.bal.pdef to 1.2>>\n<<set setup.bal.pgrit to 1.2>>\n<<set setup.bal.eatk to 0.8>>\n<<set setup.bal.edef to 0.8>>\n<<set setup.bal.egrit to 0.8>>\n<<set setup.bal.estagger to 0.9>>\n<<set setup.bal.xpEarn to 1.0>>\n<<set setup.bal.espell to 0.5>>\n<<set setup.bal.desp to 2.0>>\n<<set setup.bal.agression to 0>>
The Debug Decoder Ring\n\n<<textbox "$bugcode" "" "debugdecode" autofocus>>\n\nPress enter to continue.\n\n[[Cancel|debug_features]]
<span id="allystatupdate">\nblah\n</span>
<<set $weaponname to "Saber">>\n<<set $weapon_ui to "sbr_ui">>\n\n<<set $watk to 0.9>>\n<<set $wdef to 0.9>>\n<<set $wmov to 1.1>>\n<<set $critrange to 95>>\n\n<<set $wStaUse to 5>>\n\n<<if $sabertraining is 1>>\n\t<<set $watk to 1.0>>\n<<elseif $sabertraining is 2>>\n\t<<set $watk to 1.0>>\n\t<<set $wdef to 1.0>>\n<<elseif $sabertraining is 3>>\n\t<<set $watk to 1.0>>\n\t<<set $wdef to 1.0>>\n\t<<set $critrange to 90>>\n<<endif>>
<<if $despatk is 0>>\n\t<<set $despatk to 1>>\n<<elseif $despatk is 2>>\n\t<<set $despatk to 0>>\n\t<<set $sta to 0>>\n\t<<payload 'onDespAtk'>>\n <<set _despMod to either(0.8, 0.9, 0.9, 1, 1, 1, 1, 1, 1.1, 1.1, 1.1, 1.2, 1.2, 1.3, 1.5)>>\n\t<<set $damagetoNME to Math.trunc($power * _despMod * setup.bal.desp) + $maxsta>>\n\t<<set $nmegrit to Math.trunc($nmegrit-$damagetoNME)>>\n\n /%audio%/\n <<if $character is "Ripley">>\n\t<<set _despSel to either(1,2,2,3,3,3,4,4,4,4,4,5,5,5,5)>>\n <<switch _despSel>>\n <<case 1>>\n <<playlist "desp-atk-1" stop>>\n <<playlist "desp-atk-1" unloop play>>\n <<case 2>>\n <<set _despSelB to either(1,1,2)>>\n <<if _despSelB is 2 and $character is "Ripley">>\n <<playlist "desp-atk-R" stop>>\n <<playlist "desp-atk-R" unloop play>>\n <<else>>\n <<playlist "desp-atk-2" stop>>\n <<playlist "desp-atk-2" unloop play>>\n <<endif>>\n <<case 3>>\n <<playlist "desp-atk-3" stop>>\n <<playlist "desp-atk-3" unloop play>>\n <<case 4>>\n <<playlist "desp-atk-4" stop>>\n <<playlist "desp-atk-4" unloop play>>\n <<case 4>>\n <<playlist "desp-atk-5" stop>>\n <<playlist "desp-atk-5" unloop play>>\n <<default>>\n <<playlist "desp-atk-1" stop>>\n <<playlist "desp-atk-1" unloop play>>\n <</switch>>\n <<else>>\n <<audio "critical" play>>\n <<endif>>\n\n\t<<if $nmegrit lte 0>>\n\t\t<<set $nmehealth to $nmehealth-1>>\n\t\t<<set $nmegrit to $nmemaxgrit>>\n\t<<endif>>\n\n\t<<replace "#combatmessages">><<if $crityes is 1>>''Desperate Attack: ''<<endif>>Dealt <<print $damagetoNME>> damage.<</replace>>\n\n\t<<if $nmehealth lte 0>>\n\t\t<<set $nmegrit to 0>>\n\t\t<<display "health_checker">>\n\t<<endif>>\n\n\t<<if $allynumber is 0>>\n\t\t<<com_update_noally>>\n\t<<else>>\n\t\t<<com_update>>\n\t<<endif>>\n<<endif>>
<<if $process lte 3>><<set $process++>><<endif>>"It's good to see you two," the king says. "I've received reports that Aesil is out there somewhere. I sent Folsom to go deal with it, but now we're without his wisdom and magic when Irelith needs it. Just another of many of my decisions that I'm sure you'll have treasonous opinions on."\n\n"I didn't say anything," Elesun replies.\n\n"Oh, but you will, won't you?"\n\n"If we live long enough you'll find out."
<<set $weaponname to "Great Sword">>\n<<set $weapon_ui to "gswd_ui">>\n\n<<set $watk to 1.5>>\n<<set $wdef to 1.1>>\n<<set $wmov to 0.9>>\n<<set $critrange to 103>>\n\n<<set $wStaUse to 8>>\n\n<<if $greatswordtraining is 1>>\n\t<<set $wmov to 1.0>>\n<<elseif $greatswordtraining is 2>>\n\t<<set $wdef to 1.2>>\n\t<<set $wmov to 1.0>>\n<<elseif $greatswordtraining is 3>>\n\t<<set $critrange to 100>>\n\t<<set $wdef to 1.2>>\n\t<<set $wmov to 1.0>>\n<<endif>>
Inferno causes critical attacks to do absurd damage, but it slightly reduces critical attack chance and moderately reduces grit.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_down]]|//Moderate//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
\nA measure of willpower, sense, and wisdom. Will influences stamina, <<name>>'s chance to dispel hostile magic, and end-of-round grit regeneration. <<if $character is "Ripley">>It also determines the rate at which Ripley's rage increases.<<endif>>\n\n
#slash {\n margin: 2em 0;\n height: 5em;\n background-color: #111;\n z-index: -1;\n}\n\n#slashes {\n display: none;\n position: relative;\n width: 10em;\n height: 5em;\n background-color: #fff;\n border: 1px solid #fff;\n border-radius: 50%;\n}\n\n.internal-slash {\n display: block;\n position: relative;\n width: 10em;\n margin: 1em;\n height: 5em;\n background-color: #111;\n border: 1px solid #111;\n border-radius: 50%;\n}\n\n.slash-1 {\n display: block;\n}\n\n.slash-2 {\n display: block;\n transform: rotate(90deg);\n}\n.slash-3 {\n display: block;\n transform: skew(60deg);\n}\n.slash-4 {\n display: block;\n transform: skew(45deg);\n transform: rotate(270deg);\n}\n.slash-5 {\n display: block;\n transform: skew(240deg);\n transform: rotate(180deg);\n}\n.slash-6 {\n display: block;\n transform: skew(60deg);\n transform: rotate(300deg);\n}
<<if $helpServants is 0>><<set $helpServants to 1>>"Do you hear that?"\n\nElesun listens. She can just barely hear moaning and crying coming from inside the storeroom.\n\n"Someone's hurt. We need to help."<<timed 500ms>><<replace "#gone">><<action "throne room" "0wall2continue">><</replace>><</timed>><<else>>"We need to help them!" Ripley says. "Let's go."\n\n"We need to get to the king." Elesun says.\n\n"Irelith's with him, he'll be fine."\n\n"We have a duty. And Irelith isn't invincible."\n\n"You'd leave them to die?" Ripley shouts.\n\n"Ripley..."<<timed 1s>><<replace "#goneA">>Ripley<</replace>><</timed>><<endif>>
Ripley was fond of many of the villagers, and after some initial awkwardness, they came to accept their new Lady, young as she was at the time. Ripley couldn’t have been like any noble they’d ever known, running everywhere barefoot, always inviting herself to join in every event, from parties to moonlit lovers’ walks.\n\nThe poor girl would break if she knew that Elesun was going to let them die to keep her safe. She’d never need to know.
Clicking the links in the text updates the ''information dock'' at the bottom of the screen. Take a look around and investigate at your leisure. Links that appear within the information dock itself will generally perform some action or take you to a new location. You can either click the links that appear in the dock, or press Ctrl to activate them.\n\nIf the dock is getting in the way, you can press Spacebar to reset its contents, or double click on it to collapse it.
<<set $allyname to "Alva">>\n<<set $allynumber to 1>>/%0 is no ally%/\n\n<<set $allylvl to 2>>\n<<set $allymaxhealth to 2>>\n<<set $allymaxgrit to 70>>\n<<set $allyatk to 42>>\n<<set $allydef to 47>>\n<<set $allymov to 42>>\n<<set $allymagic to 42>>\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n/%special attack code (0 is watchback, 1 is magic, etc.)%/\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<if $webversion is 1>>\nYou are playing the browser version of Holy Land.\n\n//Holy Land// may or may not be compatible with your browser. <<link "Click here">>\n<<script>>\nDialog.setup("Browser Support");\nDialog.wiki(Story.get("browserSupport").processText());\nDialog.open();\n<</script>>\n<</link>> for more information.\n<<endif>>\n\n\n\n<<link "Continue">><<script>>\nif (Save.autosave.has()) {\n Save.autosave.load();\n} else {\n\tUI.alert("No autosave found.");\n}\n<</script>><</link>>\n\n<<link "New Game">><<audio "beep" play>><<goto "newgame">><</link>>\n\n<<link "Load Game">><<audio "beep" play>><<script>>UI.saves();<</script>><</link>>\n\n\n<<link "About">>\n<<script>>\nDialog.setup("About");\nDialog.wiki(Story.get("about").processText());\nDialog.open();\n<</script>>\n<</link>>\n\n[[Controls|control-ref]]
<<set $spellname to "Explosion">>\n<<set $schoolname to "Hellish">>\n<<set $p_spellname to "Explosion">>\n<<set $spell_ui to "expl_ui">>\n\n<<set $spellcrit to 5>>\n<<set $spellcritdam to 2.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.1>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $hellishtraining is 1>>\n\t<<set $spellcrit to 10>>\n<<elseif $hellishtraining is 2>>\n\t<<set $satk to 1.2>>\n\t<<set $spellcrit to 10>>\n<<elseif $hellishtraining is 3>>\n\t<<set $spellcrit to 15>>\n\t<<set $satk to 1.2>>\n<<endif>>
Equip armor to protect yourself. Heavier armor hampers movement.
<<image "IreSm">>The sun is up, and though the <<weak "castle" "1baileyCastle">> has seen better days, the signs of the <<dock "siege" "1baileySiege">> are few and far between.\n\nThe <<action "gate" "1baileyGate">> to the courtyard is open, and a few soldiers are milling about inside.\n\n<<action "Irelith" "1baileyIre">> is looking busy nearby.\n\n<span id="navbox"><<mapHarlan $now>></span>\n\n<<message>><<display "helpFreedom">><</message>>\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set $specialMult to 1.0>>/%damage of spell%/\n<<set $SpEffName to "">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,0)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "None">>\n\n<<set $specialMult to $specialMult * $bal.espell>>
<<set $armorname to "Cloth Armor">>\n<<set $armor_ui to "cloth_ui">>\n\n<<set $aatk to 1.0>>\n<<set $adef to 0.9>>\n<<set $amov to 1.1>>\n\n<<if $clothplus eq 1>>\n\t<<set $adef to 1.0>>\n\t<<set $armorname to "Cloth Armor+">>\n<<endif>>
<<set $attackSec to 6>>\n<<set $nextBoss to "">>\n<<set $def_success to false>>\n<<set $QTEatk to 0>>\n\n<<set $weapon_ui to "lswd_ui">>\n<<set $spell_ui to "prot_ui">>\n<<set $armor_ui to "leath_ui">>\n\n<<set $formUnlock to 0>>\n<<set $devilForm to 0>>\n<<set $rage to 0>>\n\n<<set $spBase to 1000>>\n\n<<set $location to "">>\n<<set $from to "">>\n\n<<set $battletheme to 1>>\n<<set $battlethemepicker to 0>>\n<<set $hurtmaker to 0>>\n<<set $subj to "">>\n\n<<set $scarchance to 0>>\n<<set $scarchancesAmt to 0>>\n<<set $scartest to 0>>\n<<set $scarReport to 0>>\n<<set $wounds to 0>>\n<<set $restScars to "">>\n<<set $restReport to "">>\n\n<<set setup.xpreq to 100>>/%xp per level%/\n<<set setup.attrcap to 10>>/%attribute cap%/\n\n<<set $booster to 0>>\n<<set $movbonus to 0>>\n<<set $crityes to 0>>\n\n<<set $playeraction to 1>>\n<<set $combatnext to "">>\n<<set $nmeaction to 1>>\n<<set $nmedefboost to 1.0>>\n\n<<set $armorupgrade to 0>>\n\n<<set $playerturn to 1>>\n<<set $allynumber to 0>>\n<<set $courtyardgate to 0>>\n\n<<set $specialname to "">>\n<<set $spelldamReport to "">>\n<<set $effectReport to "">>\n\n<<set $flinched to false>>\n<<set $rager to 0>>\n
Elesun hopes the king and Irelith are alright.\n\nShe needs to wrap this up fast.
<<image "manSm">><<image "womanSm">><<if $helpServants>>The servant's quarters were cleaned, but Elesun can't forget what she saw here.<<else>>Apparently, Aesil had his way with the servants quarters and its occupants during the siege.<<endif>> The poor bastards who <<weak 'cleaned it' '1servqClean'>> were taking turns puking outside and crying.\n\nA few <<weak 'servants' '1servqServ'>> are milling about, taking breaks or finishing up the day's work. <<action "Andre, the King's royal smith" '1servqAndre'>> is sitting on the ground outside his quarters, and he looks exhausted. \n\n<span id="navbox"><<mapHarlan $now>></span>\n\n<<info>>
<<set $spellname to "Rage">>\n<<set $schoolname to "Neutral">>\n<<set $p_spellname to "Rage">>\n<<set $spell_ui to "rage_ui">>\n\n<<set $spellcrit to 5>>\n<<set $spellcritdam to 1.2>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to -10>>\n\n<<set $satk to 1.1>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to -5>>\n\n<<if $neutraltraining is 1>>\n\t<<set $satk to 1.2>>\n<<elseif $neutraltraining is 2>>\n\t<<set $satk to 1.2>>\n\t<<set $spelldispel to 0>>\n<<elseif $neutraltraining is 3>>\n\t<<set $spellgrit to 0>>\n\t<<set $satk to 1.2>>\n\t<<set $spelldispel to 0>>\n<<endif>>
<<set $weaponname to "Unarmed">>\n<<set $weapon_ui to "fists_ui">>\n\n<<set $watk to 0.6>>\n<<set $wdef to 0.8>>\n<<set $wmov to 1.2>>\n<<set $critrange to 95>>\n\n<<set $wStaUse to 3>>\n\n<<if $unarmedtraining is 1>>\n\t<<set $critrange to 90>>\n<<elseif $unarmedtraining is 2>>\n\t<<set $critrange to 90>>\n\t<<set $watk to 0.8>>\n<<elseif $unarmedtraining is 3>>\n\t<<set $critrange to 90>>\n\t<<set $watk to 1.0>>\n<<endif>>
<<image "IrePt">><<set $gamestart to 2>>''Irelith''\n\nIrelith was the first demonkin to join King Harmon's army, and swore fealty to him. Her strength and skill in combat is unmatched, and she rose through the ranks of his military quickly over the next ten years.\n\nIrelith is currently the commander of the King's Guard, and serves as Harmon's personal body guard. Years ago, in more peaceful times, she trained Lady Ripley and Prince Harlaus in the use of weapons and in personal combat.\n\nIrelith has earned a reputation on the battlefield for her sometimes reckless aggression and near-constant grinning.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<set $healing to 0>>\n\n<<set setup.base to 50>>\n<<set $rageCurrent to 0>>\n<<set $statbase to setup.base + Math.trunc($rageCurrent/4)>>\n<<set $strrank to 2>>\n<<set $strval to ($statbase*($strrank/10+1))+($statbase*($lvl/10))>>\n<<set $agirank to 1>>\n<<set $agival to ($statbase*($agirank/10+1))+($statbase*($lvl/10))>>\n<<set $endrank to 1>>\n<<set $endval to ($statbase*($endrank/10+1))+($statbase*($lvl/10))>>\n<<set $wilrank to 1>>\n<<set $wilval to ($statbase*($wilrank/10+1))+($statbase*($lvl/10))>>\n<<set $cngrank to 1>>\n<<set $cngval to ($statbase*($cngrank/10+1))+($statbase*($lvl/10))>>\n\n<<set $atkbase to Math.trunc($strval*0.5+$cngval*0.2)>>\n<<set $watk to 1.0>> /%weapon atk mod%/\n<<set $aatk to 1.0>> /%armor atk mod%/\n<<set $satk to 1.0>> /%spell atk mod%/\n<<set $atk to Math.trunc($atkbase*$watk*$aatk*$satk)>>\n\n<<set $defbase to Math.trunc($endval*0.5+$strval*0.2)>>\n<<set $wdef to 1.0>>\n<<set $adef to 1.0>>\n<<set $sdef to 1.1>>\n<<set $def to Math.trunc($defbase*$wdef*$adef*$sdef)>>\n\n<<set $movbase to Math.trunc($agival*0.5+$cngval*0.2)>>\n<<set $wmov to 1.0>>\n<<set $amov to 1.0>>\n<<set $smov to 1.0>>\n<<set $mov to Math.trunc($movbase*$wmov*$amov*$smov)>>\n\n<<set $critchance to Math.trunc(($agival/10+$cngrank)+$spellcrit)>>\n<<set $critmult to $agival/100+1>>\n<<set $critdam to Math.trunc($atk*$critmult*$spellcritdam)>>\n<<set $dodge to Math.trunc(((5+$agirank*2.5)+$cngrank)+$spelldodge)>>\n\n<<set $maxsta to Math.trunc($endval/10+$wilrank+8)>>\n<<set $sta to $maxsta>>\n<<set $maxgrit to 100+$endval+$spellgrit>>\n<<set $grit to $maxgrit>>\n<<set $maxhealth to Math.trunc(3+$scars/5)>>\n<<set $health to $maxhealth>>\n<<set $power to $lvl*$statbase+(($maxhealth*$maxhealth*$maxhealth)+$maxhealth*7)+$lvl+1>>\n\n<<set $dodgedatks to 0>>\n<<set $regen to Math.trunc($wilrank/2)>>\n\n<<set $rageBuild to $wilrank + 4>>\n<<set $rageDecay to 34 - $endrank>>\n<<set $rageStock to 0>>\n\n<<set $dispel to $basedispel+$spelldispel+$wilrank>>\n\n<<set $ripleylvl to 1>>\n<<set $ripleyscars to 0>>\n<<set $ripleystr to 1>>\n<<set $ripleyagi to 1>>\n<<set $ripleyend to 1>>\n<<set $ripleywil to 1>>\n<<set $ripleycng to 1>>\n<<set $ripleybase to 60>>\n<<set $ripleyxp to 0>>\n<<set $ripleytp to 0>>
<<image "RipSmKid">><span id="gone"><<dock "Ripley" "0wallRip">></span> is still standing near the edge, but she’s turned her back to the <<action "tragedy below" "0wallTragedy">>.\n\nElesun hopes that if they <<action "hurry" "0wallSouth">>, they can get to the king before anything bad happens.\n\n<<info>>
Do you wish to unequip your armor?\n\nYour defenses will plummet.\n\n[[Yes|changearmor][$change to "no"]]\n[[No|armorswap]]
/% 6 %/\n<<set $specialMult to 0.4>>/%damage of spell%/\n<<set $SpEffName to "Blunted">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,1,1)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 0.5>>/%atk debuff%/\n<<set $NMESpDam to 0.5>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Weaken">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
<span id="navbox"> </span>
<span id="info"><span id="playerstats"><<if $mobile is 1>><<display "playerstatsMobile">><<else>><<display "playerstats">><<endif>></span>\n<span id="combatmessages"><<display "combat_report">></span>\n<span id="combatactions"><<if $mobile is 1>><<display "playeractions_fake0">><<else>><<display "playeractions_fake0">><<endif>></span>\n</span>
/%Open as alert.%/Elesun stops by the smithy to tell the blacksmith about the king's decision.\n\n"Thanks, Elesun," the blacksmith says. "After I finish the repairs, I'll make something special for you. Stop back in a few days." \n<<silently>>\n<<set $sq1.progress to 100>>\n<<for _i to 0; _i lt $sq.length; _i++>>\n <<if $sq[_i].code is 1>>\n <<set $index to _i>>\n <<break>>\n <<endif>>\n<</for>>\n<<run $sq.splice($index, 1)>>/%remove sidequest from docket%/\n<<run $sqDone.push($sq1.title)>> /%add title of sidequest to finished quests docket%/\n<<endsilently>>\n[[Okay.|previous()]]
"My dutiful son, always trying to be wiser than I. He just might be. If you haven't seen him yet you should, he's been meaning to talk to you."
Well-armored gauntlets featuring claws and spikes.\n\nThe spikes and claws make holding a weapon with these gauntlets difficult. Fortunately, their design makes them a weapon in themselves.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Low|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:Very Low|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Moderate|\n*__Finesse__: Very High\n*__Stamina__: Very Low
\nA measure of intelligence and craftiness. Cunning has influences attack and movement, and has a large impact on critical chance.\n\n
<<if $playerturn is 1>><<if $sta gt 0>>[[2. Defend|highway2][$playeraction to 2]] - [[3. Move|highway2][$playeraction to 3]]<<else>>[[4. End Turn|highway2]]<<endif>><<else>>[[Ctrl: Continue|$combatnext]]\n<<endif>>
<<set $armorname to "Leather Armor">>\n<<set $armor_ui to "leath_ui">>\n\n<<set $aatk to 1.0>>\n<<set $adef to 1.0>>\n<<set $amov to 1.0>>\n\n<<if $leatherplus eq 1>>\n\t<<set $adef to 1.1>>\n\t<<set $amov to 1.1>>\n\t<<set $armorname to "Leather Armor+">>\n<<endif>>
Druids love their meditiation--connecting with nature. They seem to enjoy it most when they're indoors. There's something to it, probably, those traditional Druid beliefs. Elesun doesn't know what, but there's probably something to it.
No armor is equipped.\n\n|[img[setup.ui.icons.ui_def]]|Defense Bonus:|None|\n|[img[setup.ui.icons.ui_mov]]|Encumberance:|None|
<<display "gswd_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "great"]]\n[[No|weaponswap]]
<<display "ghst_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "gho"]]\n[[No|spellswap]]
/% types: 0 - main, 1 - side, 2 - secret, 3 - debug %/\n<<set setup.vows to {\n\tlist : {},\n\tprot : {\n\t\tid : '',\n\t\ttitle : '',\n\t\tdescr : '',\n\t\toutc : '',\n\t\ttype : 0\n\t},\n\tnames : [\n\t\t'bastard', \n\t\t'charlatan', \n\t\t'scoundrel',\n\t\t'and unproven',\n\t\t'advocate',\n\t\t'upholder',\n\t\t'oathkeeper',\n\t\t'champion'\n\t],\n\ttiers : [\n\t\t'neutral',\n\t\t'pragmatic',\n\t\t'tricky',\n\t\t'opportunistic',\n\t\t'slick',\n\t\t'rigid',\n\t\t'noble',\n\t\t'devoted',\n\t\t'idealistic',\n\t\t'pedantic',\n\t\t'strict',\n\t\t'level-headed',\n\t\t'driven'\n\t]\n}>>\n\n<<set $vows to {\n\tcurrent : [],\n\tcomplete : [],\n broken : [],\n\tstats : {\n\t\tstrict : 0,\n\t\tloose : 0,\n\t\tletter : 0,\n\t\tspirit : 0,\n\t\thonor : 1,\n\t\tclever : 1\n\t},\n\tordered : [],\n\tpoints : 0,\n\ttier : 'neutral',\n\tname : 'and unproven',\n\tstr : 'neutral and unproven'\n}>>\n\n<<display 'vowList'>>\n\n<<addvow 'protRip'>>\n<<addvow 'serveKing'>>
Elesun bet that Ripley knew the name of every servant, cook, and soldier in the castle. Maybe every serf in the village, too. She made friends easy. And Akatosh killed them just as easily.\n\nHow much will be enough to break her?
<<if $process lt 3>>"Good to see you alive, Elesun," Irelith says.<<set $process++>>\n\n"You too. You going to be all right?"\n\n"Yeah. We managed to drive most of them off. Just wish I wasn't stuck in here."<<else>>"You hear that?" Irelith looks toward the remains of the wall. "Someone's coming."\n\n<<ctrlClick "Yeah. I hear it." "0protectking3">><<endif>>
Who would do it? And why? Sure, wars often had their defectors and traitors, but it was hard for Elesun to imagine anyone actively trying to get Ripley killed.
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has just been attacked by an enemy and taken some <<= setup.words.grit>> damage. Her <<= setup.words.grit>> is represented as a bar on the bottom of the screen. When her <<= setup.words.grit>> is fully depleted, <<name>> will lose a heart.\n\n<<= setup.words.grit.toUpperFirst()>> represents <<name>>'s ability to avoid getting wounded or taking a nasty blow--it's a combination of her skill, luck, and armor. When her luck runs out and her <<= setup.words.grit>> is depleted, she takes a hit and gets wounded.\s\n<</dialog>>\n<<tutorialHook 'tut_onGritDam'>>
// volume slider, by chapel; for sugarcube 2\n// version 1.0\n\n// create namespace\nsetup.vol = {};\n\n// options object\nsetup.vol.options = {\n\tcurrent : 75,\n\trangeMax : 100,\n\tstep : 1\n};\n\nsetup.vol.last = setup.vol.options.current;\nsetup.vol.start = setup.vol.last / setup.vol.options.rangeMax;\n\npostdisplay['volume-task'] = function (taskName) {\n\tdelete postdisplay[taskName];\n\tSimpleAudio.volume = setup.vol.start;\n}\n\n!function () {\n\t$(document).on('input', 'input[name=volume]', function() {\n\t\t// grab new volume from input\n\t\tvar volRef = setup.vol.options;\n\t\tvar change = $('input[name=volume]').val();\n\t\tvar newVol = change / volRef.rangeMax;\n\t\tvolRef.current = newVol.toFixed(2);\n\n\t\t// change volume; set slider position\n\t\tSimpleAudio.volume = volRef.current;\n\t\tsetup.vol.last = change;\n\t});\n}();\n\nMacro.add('volume', {\n\thandler : function () {\n\t\t\n\t\t// set up variables\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar $slider = $(document.createElement('input'));\n\t\tvar className = 'macro-' + this.name;\n\t\tvar volRef = setup.vol.options;\n\t\t\n\t\t// create range input\n\t\t$slider\n\t\t\t.attr({\n\t\t\t\tid : 'volume-control',\n\t\t\t\ttype : 'range',\n\t\t\t\tname : 'volume',\n\t\t\t\tmin : '0',\n\t\t\t\tmax : volRef.rangeMax,\n\t\t\t\tstep : volRef.step,\n\t\t\t\tvalue : setup.vol.last\n\t\t\t});\n\t\t// class '.macro-volume' and id '#volume-control' for styling\n\t\t\t\n\t\t// output\n\t\t$wrapper\n\t\t\t.append($slider)\n\t\t\t.addClass(className)\n\t\t\t.appendTo(this.output);\n\t}\n});
A sad thing to see. Ripley seemed almost like she was trying not to look for fear of seeing a familiar face.
It's early evening, and the torches give the dark corridor a hellish orange glow. The hall is clean and well-kept, though the stone walls are growing more uneven every few years.
Select an attribute to increase:\n<<set $lvl to $lvl+1>><<set $tp to $tp+3>>\n|[img[setup.ui.icons.strIcon]] |<<if $strrank lt setup.attrcap>>[[Strength|levelup2][$strrank to $strrank+1]]: <<print $strrank>><<else>>Your strength can't go any higher.<<endif>>|\n|[img[setup.ui.icons.agiIcon]] |<<if $agirank lt setup.attrcap>>[[Agility|levelup2][$agirank to $agirank+1]]: <<print $agirank>><<else>>Your agility can't go any higher.<<endif>>|\n|[img[setup.ui.icons.endIcon]] |<<if $endrank lt setup.attrcap>>[[Endurance|levelup2][$endrank to $endrank+1]]: <<print $endrank>><<else>>Your endurance can't go any higher.<<endif>>|\n|[img[setup.ui.icons.wilIcon]] |<<if $wilrank lt setup.attrcap>>[[Will|levelup2][$wilrank to $wilrank+1]]: <<print $wilrank>><<else>>Your will can't go any higher.<<endif>>|\n|[img[setup.ui.icons.cngIcon]] |<<if $cngrank lt setup.attrcap>>[[Cunning|levelup2][$cngrank to $cngrank+1]]: <<print $cngrank>><<else>>Your cunning can't go any higher.<<endif>>|
At this pace, Elesun should make Merac by nighfall.\n\n<<ctrlClick 'Push the horse harder.' '1afterRip1'>>
<<masteraudio stop>>\n<<switch $song>>\n<<case 0>>\n\t<<audio "oh" loop play>>\n<<case -1>>\n\t<<audio "herat7" loop play>>\n<<case -2>>\n\t<<audio "expressions-of-the-mind" loop play>>\n<<case 1>>\n\t<<audio "cibelle" loop play>>\n<<case -3>>\n\t<<audio "demon1" loop play>>\n<<case -4>>\n\t<<audio "demon2" loop play>>\n<</switch>>
<<image 'HarlSmKid'>><<thumb>><<set $HarlScene to 1>>"Have you been to the village, yet?" Harlaus asks. "Since the attack, I mean."\n\nElesun sighs. "Yeah."\n\n"I think we need to get Ripley out of the castle. It's only a two days' ride to the grove. She's been wanting to go. What do you think?"\n\n"I think that'd be good for her. See some friendly faces."\n\n"I've spoken to my father. I'll have a carriage prepared in the morning. I can have Irelith assemble some soldiers to keep you safe."\n\n"That's a good idea," Elesun replies. "Not too many men, though, we don't need any attention."\n\n"Fair point."\n\n//Journal updated.//<<set $storystage to 2>>\n\n<<ctrlCon '1mainhall'>>
/*! <<shake>> macro set for SugarCube 2.x */\n!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2||"undefined"==typeof version.minor||version.minor<5)throw new Error("<<shake>> macro requires SugarCube 2.5.0 or greater, aborting load");Macro.add("shake",{tags:null,handler:function(){var duration=this.args.length>0?this.args[0]:1/0,shakeClass="shake";if(1/0!==duration)try{duration=Math.max(Engine.minDomActionDelay,Util.fromCssTime(duration))}catch(e){return this.error(e.message)}Config.debug&&this.debugView.modes({block:!0});var $wrapper=jQuery(document.createElement("span"));$wrapper.addClass("macro-"+this.name+" "+shakeClass).wiki(this.payload[0].contents).appendTo(this.output),1/0!==duration&&setTimeout(function(){$wrapper.removeClass(shakeClass)},Engine.minDomActionDelay+duration)}}),Macro.add(["shakescreen","shaketarget"],{handler:function(){var $targets,duration,shakeClass;if("shakescreen"===this.name)$targets=jQuery("#passages"),duration=this.args.length>0?this.args[0]:1/0,shakeClass="shake-block";else{if(0===this.args.length)return this.error("no selector specified");if($targets=jQuery(this.args[0]),0===$targets.length)return this.error('no elements matched the selector "'+this.args[0]+'"');duration=this.args.length>1?this.args[1]:1/0,shakeClass="block"===jQuery($targets[0]).css("display")?"shake-block":"shake"}if("stop"===duration)return void $targets.removeClass(shakeClass);if(1/0!==duration)try{duration=Math.max(Engine.minDomActionDelay,Util.fromCssTime(duration))}catch(e){return this.error(e.message)}$targets.addClass(shakeClass),1/0!==duration&&setTimeout(function(){$targets.removeClass(shakeClass)},Engine.minDomActionDelay+duration)}})}();\n
<<image "RipPtKid">><<set $choice2 to 1>>Ripley looks up at Elesun when she gets near. "I'm sorry, I need to <<weak "pull myself together" "0choice2tough">>."\n\nBefore she can say anything else, she sobs again. "I think I saw <<weak "Jonah's face" "0choice2friends">> on the side of it. Part of it at least."\n\nShe shudders, <<weak "with both powerless rage and desperate sadness" "0choice2hate">>.\n\n<span id='action-link'>[[Be considerate.|0choice2thoughtful][$ripleyxp to $ripleyxp+20]]</span>\n\n<span class='action-link'>[[Be tough.|0choice2rough][$ripleyscars++]]</span>\n\n<span class='action-link'>[[Be supportive.|0choice2motherly][$ripleytp++]]</span>\n\n<<info>>\n\n\n\n\n
<<display "gaun_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "gaunt"]]\n[[No|weaponswap]]
<<set $bugcode to setup.encode(State.variables)>>If you have encountered a bug, please create a report using the form below<<if $webversion is 0>> (requires internet connection)<<endif>>.\n\nHere is your bug report code: \n\n<<button 'Select All'>><<run $('#bug textarea').select()>><</button>> <<button 'Copy to Clipboard'>><<run $('#bug textarea').select(); document.execCommand('copy');>><</button>>\n<span id='bug'><<textarea '_dummy' $bugcode>></span>\n<<nobr>><<script>>\npostdisplay['bug-text-readonly'] = function (t) {\n\t$('#bug textarea').attr('readonly', true);\n\tdelete postdisplay[t];\n};\n<</script>><<endnobr>>\n<center>\n<iframe src="https://docs.google.com/forms/d/e/1FAIpQLScDj4h2ChNrm2dOxw9pDP8hCR2lENz9XPfjb1cnkMqNhp1GYA/viewform?embedded=true" width="900" height="500" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe></center>\n\n
<<image "RipPtKid">><<message>><<display "helpdecisions">><</message>>\n\nAs Elesun approaches Ripley’s quarters, she can here fighting. Ripley seems to have been the <<weak "target" "0choice1target">> all along. At least <<weak "one of them" "0choice1one">>. She enters the stone corridors of the parapet and rushes up the spiraling stone stairs until she finds herself in Ripley’s antechamber.\n\nBefore she can enter Ripley’s room, the door <<weak "explodes open" "0choice1door">> as a soldier crashes through it and slides motionless across the floor to her feet. He’s hurt, but <<weak "still alive" "0choice1pacifism">>. As usual for Ripley.\n\nThrough the door, Elesun can see her. She has red hair gathered in a braid, and she’s dressed for supper, not battle. She’s <<weak "barefoot" "0choice1barefoot">> in accordance with her <<weak "druid beliefs" "0choice1druid">>. She’s wearing a <<weak "white dress" "0choice1dress">>, and her <<weak "golden bangles" "0choice1bangles">> gleam on her wrists, arms, ankles, and legs.\n\nShe has her back to what’s left of the door, and is staring down a <<weak "well-armed assassin" "0choice1assassin">>. The assassin raises his blade toward her. Ripley just takes a <<weak "fighting stance" "0choice1stance">> and <<weak "waits" "0choice1waits">>.\n\nElesun considers her options.\n\n<span class='action-link'>[[Ripley can handle herself.|0letRipfight][$ripleyscars++]]</span>\n\n<span class='action-link'>[[She’s in danger.|combat_call_0_2][$ripleytp++]]</span>\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
/% path grabber %/\n<<set setup.assets to {\n\timg: 'assets/img/',\n\tmisc: 'assets/img/art/misc/',\n\trip: 'assets/img/art/rip/',\n\tripKid: 'assets/img/art/rip/kid/',\n\tripAd: 'assets/img/art/rip/adult/',\n\tripEmL: 'assets/img/art/rip/adult/emPt/',\n\tripEmS: 'assets/img/art/rip/adult/emSm/',\n\tele: 'assets/img/art/ele/',\n\tire: 'assets/img/art/ire/',\n\tnme: 'assets/img/nme/',\n\tmaps: 'assets/img/maps/',\n\tui_: 'assets/img/interface/',\n\tgrit: 'assets/img/interface/grit/',\n\thearts: 'assets/img/interface/hearts/',\n\trage: 'assets/img/interface/rage/',\n\ticn: 'assets/img/interface/icn/',\n\ttut: 'assets/img/interface/tut/',\n\n\taudio: 'assets/audio/',\n\teffects: 'assets/audio/effects/',\n\tmusic: 'assets/audio/music/',\n\tbattle: 'assets/audio/music/battle/',\n\tvoice: 'assets/audio/voice/'\n}>>\n\n/% image grabber %/\n<<set setup.img to {\n\tEleCl: 'assets/img/art/ele/cl.jpg',\n\tEleSm: 'assets/img/art/ele/sm.jpg',\n\tElePt: 'assets/img/art/ele/pt.jpg',\n\n\tIreCl: 'assets/img/art/ire/cl.jpg',\n\tIreSm: 'assets/img/art/ire/sm.jpg',\n\tIrePt: 'assets/img/art/ire/pt.jpg',\n\n\tRipCl: 'assets/img/art/rip/adult/cl.jpg',\n\tRipSm: 'assets/img/art/rip/adult/sm.jpg',\n\tRipPt: 'assets/img/art/rip/adult/pt.jpg',\n\n\tRipClKid: 'assets/img/art/rip/kid/cl.jpg',\n\tRipSmKid: 'assets/img/art/rip/kid/sm.jpg',\n\tRipPtKid: 'assets/img/art/rip/kid/pt.jpg',\n\n\tRipPtECH1: 'assets/img/art/rip/kid/endCh1.jpg',\n\tRipSmECH1: 'assets/img/art/rip/kid/endCh1Sm.jpg',\n\tRipPtdevlKid: 'assets/img/art/rip/kid/smDvl.jpg',\n\tRipSmdevlKid: 'assets/img/art/rip/kid/PtDvl.jpg',\n\n\tRipSmbeat: 'assets/img/art/rip/adult/emSm/beat.jpg',\n\tRipPtbeat: 'assets/img/art/rip/adult/emPt/beat.jpg',\n\tRipSmbthp: 'assets/img/art/rip/adult/emSm/bthp.jpg',\n\tRipPtbthp: 'assets/img/art/rip/adult/emPt/bthp.jpg',\n\tRipSmconf: 'assets/img/art/rip/adult/emSm/conf.jpg',\n\tRipPtconf: 'assets/img/art/rip/adult/emPt/conf.jpg',\n\tRipSmdetr: 'assets/img/art/rip/adult/emSm/detr.jpg',\n\tRipPtdetr: 'assets/img/art/rip/adult/emPt/detr.jpg',\n\tRipSmdevl: 'assets/img/art/rip/adult/emSm/devl.jpg',\n\tRipPtdevl: 'assets/img/art/rip/adult/emPt/devl.jpg',\n\tRipSmdola: 'assets/img/art/rip/adult/emSm/dola.jpg',\n\tRipPtdola: 'assets/img/art/rip/adult/emPt/dola.jpg',\n\tRipSmdoll: 'assets/img/art/rip/adult/emSm/doll.jpg',\n\tRipPtdoll: 'assets/img/art/rip/adult/emPt/doll.jpg',\n\tRipSmdoln: 'assets/img/art/rip/adult/emSm/doln.jpg',\n\tRipPtdoln: 'assets/img/art/rip/adult/emPt/doln.jpg',\n\tRipSmeatn: 'assets/img/art/rip/adult/emSm/eatn.jpg',\n\tRipPteatn: 'assets/img/art/rip/adult/emPt/eatn.jpg',\n\tRipSmedis: 'assets/img/art/rip/adult/emSm/edis.jpg',\n\tRipPtedis: 'assets/img/art/rip/adult/emPt/edis.jpg',\n\tRipSmehap: 'assets/img/art/rip/adult/emSm/ehap.jpg',\n\tRipPtehap: 'assets/img/art/rip/adult/emPt/ehap.jpg',\n\tRipSmexct: 'assets/img/art/rip/adult/emSm/exct.jpg',\n\tRipPtexct: 'assets/img/art/rip/adult/emPt/exct.jpg',\n\tRipSmfinl: 'assets/img/art/rip/adult/emSm/finl.jpg',\n\tRipPtfinl: 'assets/img/art/rip/adult/emPt/finl.jpg',\n\tRipSmgrin: 'assets/img/art/rip/adult/emSm/grin.jpg',\n\tRipPtgrin: 'assets/img/art/rip/adult/emPt/grin.jpg',\n\tRipSmhapy: 'assets/img/art/rip/adult/emSm/hapy.jpg',\n\tRipPthapy: 'assets/img/art/rip/adult/emPt/hapy.jpg',\n\tRipSmhope: 'assets/img/art/rip/adult/emSm/hope.jpg',\n\tRipPthope: 'assets/img/art/rip/adult/emPt/hope.jpg',\n\tRipSmjoys: 'assets/img/art/rip/adult/emSm/joys.jpg',\n\tRipPtjoys: 'assets/img/art/rip/adult/emPt/joys.jpg',\n\tRipSmlagh: 'assets/img/art/rip/adult/emSm/lagh.jpg',\n\tRipPtlagh: 'assets/img/art/rip/adult/emPt/lagh.jpg',\n\tRipSmmask: 'assets/img/art/rip/adult/emSm/mask.jpg',\n\tRipPtmask: 'assets/img/art/rip/adult/emPt/mask.jpg',\n\tRipSmsadd: 'assets/img/art/rip/adult/emSm/sadd.jpg',\n\tRipPtsadd: 'assets/img/art/rip/adult/emPt/sadd.jpg',\n\tRipSmsigh: 'assets/img/art/rip/adult/emSm/sigh.jpg',\n\tRipPtsigh: 'assets/img/art/rip/adult/emPt/sigh.jpg',\n\tRipSmsurp: 'assets/img/art/rip/adult/emSm/surp.jpg',\n\tRipPtsurp: 'assets/img/art/rip/adult/emPt/surp.jpg',\n\tRipSmtoas: 'assets/img/art/rip/adult/emSm/toas.jpg',\n\tRipPttoas: 'assets/img/art/rip/adult/emPt/toas.jpg',\n\tRipSmwhat: 'assets/img/art/rip/adult/emSm/what.jpg',\n\tRipPtwhat: 'assets/img/art/rip/adult/emPt/what.jpg',\n\tRipSmworr: 'assets/img/art/rip/adult/emSm/worr.jpg',\n\tRipPtworr: 'assets/img/art/rip/adult/emPt/worr.jpg',\n\n\tAesPt1: 'assets/img/art/misc/AesPt1.jpg',\n\tAesSm1: 'assets/img/art/misc/AesSm1.jpg',\n\tAesPt2: 'assets/img/art/misc/AesPt2.jpg',\n\tAesSm2: 'assets/img/art/misc/AesSm2.jpg',\n\tAesPt3: 'assets/img/art/misc/AesPt3.jpg',\n\tAesSm3: 'assets/img/art/misc/AesSm3.jpg',\n\tAkaPt: 'assets/img/art/misc/AkaPt.jpg',\n\tAkaSm: 'assets/img/art/misc/AkaSm.jpg',\n\tAkaPtgrin: 'assets/img/art/misc/AkaPt_grin.jpg',\n\tAkaSmgrin: 'assets/img/art/misc/AkaSm_grin.jpg',\n\tAkaPtcraz: 'assets/img/art/misc/AkaPt_craz.jpg',\n\tAkaSmcraz: 'assets/img/art/misc/AkaSm_craz.jpg',\n\n\tFolsomPt: 'assets/img/art/misc/FolsomPt.jpg',\n\tFolsomSm: 'assets/img/art/misc/FolsomSm.jpg',\n\tHarlPt: 'assets/img/art/misc/HarlPt.jpg',\n\tHarlSm: 'assets/img/art/misc/HarlSm.jpg',\n\tHarlPtKid: 'assets/img/art/misc/HarlPtKid.jpg',\n\tHarlSmKid: 'assets/img/art/misc/HarlSmKid.jpg',\n\tKingPt: 'assets/img/art/misc/KingPt.jpg',\n\tKingSm: 'assets/img/art/misc/KingSm.jpg',\n\n\tmanPt: 'assets/img/art/misc/manPt.jpg',\n\tmanSm: 'assets/img/art/misc/manSm.jpg',\n\twomanPt: 'assets/img/art/misc/womanPt.jpg',\n\twomanSm: 'assets/img/art/misc/womanSm.jpg'\n\n}>>\n\n<<set setup.nme to {\n\tcloaked: 'assets/img/nme/cloaked.jpg',\n\tdragon: 'assets/img/nme/dragon.jpg',\n\tghostwoman: 'assets/img/nme/ghostwoman.jpg',\n\tknight: 'assets/img/nme/knight.jpg',\n\tNMEaes2: 'assets/img/nme/NMEaes2.jpg',\n\tNMEaxe: 'assets/img/nme/NMEaxe.jpg',\n\tNMEfemwarrior: 'assets/img/nme/NMEfemwarrior.jpg',\n\tNMEmage: 'assets/img/nme/NMEmage.jpg',\n\tNMEninjawoman: 'assets/img/nme/NMEninjawoman.jpg',\n\tNMEspear: 'assets/img/nme/NMEspear.jpg',\n\tNMEwarrior: 'assets/img/nme/NMEwarrior.jpg'\n}>>\n\n<<set setup.gen to {\n\tEleCl: 'assets/img/EleCl.jpg',\n\tRipCl: 'assets/img/RipCl.jpg',\n\t\n\ticon: 'assets/img/ic.png',\n\ttitlecard: 'assets/img/titlecard.png',\n\tcontrols: 'assets/img/controls.png'\n}>>\n\n<<set setup.ui to {\n\thearts: {},\n\tgrit: {},\n\trage: {},\n\ticons: {},\n\ttut: {},\n\t\n\tbanner: 'assets/img/interface/banner.png',\n\tgover: 'assets/img/interface/gover.png'\n}>>\n\n<<set setup.ui.hearts to {\n\t'0of1': 'assets/img/interface/hearts/0of1.png',\n\t'1of1': 'assets/img/interface/hearts/1of1.png',\n\t'0of2': 'assets/img/interface/hearts/0of2.png',\n\t'1of2': 'assets/img/interface/hearts/1of2.png',\n\t'2of2': 'assets/img/interface/hearts/2of2.png',\n\t'0of3': 'assets/img/interface/hearts/0of3.png',\n\t'1of3': 'assets/img/interface/hearts/1of3.png',\n\t'2of3': 'assets/img/interface/hearts/2of3.png',\n\t'3of3': 'assets/img/interface/hearts/3of3.png',\n\t'0of4': 'assets/img/interface/hearts/0of4.png',\n\t'1of4': 'assets/img/interface/hearts/1of4.png',\n\t'2of4': 'assets/img/interface/hearts/2of4.png',\n\t'3of4': 'assets/img/interface/hearts/3of4.png',\n\t'4of4': 'assets/img/interface/hearts/4of4.png',\n\t'0of5': 'assets/img/interface/hearts/0of5.png',\n\t'1of5': 'assets/img/interface/hearts/1of5.png',\n\t'2of5': 'assets/img/interface/hearts/2of5.png',\n\t'3of5': 'assets/img/interface/hearts/3of5.png',\n\t'4of5': 'assets/img/interface/hearts/4of5.png',\n\t'5of5': 'assets/img/interface/hearts/5of5.png',\n\t'0of6': 'assets/img/interface/hearts/0of6.png',\n\t'1of6': 'assets/img/interface/hearts/1of6.png',\n\t'2of6': 'assets/img/interface/hearts/2of6.png',\n\t'3of6': 'assets/img/interface/hearts/3of6.png',\n\t'4of6': 'assets/img/interface/hearts/4of6.png',\n\t'5of6': 'assets/img/interface/hearts/5of6.png',\n\t'6of6': 'assets/img/interface/hearts/6of6.png',\n\t'0of6e' : 'assets/img/interface/hearts/0of6e.png',\n\t'1of6e' : 'assets/img/interface/hearts/1of6e.png',\n\t'2of6e' : 'assets/img/interface/hearts/2of6e.png',\n\t'3of6e' : 'assets/img/interface/hearts/3of6e.png',\n\t'4of6e' : 'assets/img/interface/hearts/4of6e.png',\n\t'5of6e' : 'assets/img/interface/hearts/5of6e.png',\n\t'6of6e' : 'assets/img/interface/hearts/6of6e.png',\n\t'0of7': 'assets/img/interface/hearts/0of7.png',\n\t'1of7': 'assets/img/interface/hearts/1of7.png',\n\t'2of7': 'assets/img/interface/hearts/2of7.png',\n\t'3of7': 'assets/img/interface/hearts/3of7.png',\n\t'4of7': 'assets/img/interface/hearts/4of7.png',\n\t'5of7': 'assets/img/interface/hearts/5of7.png',\n\t'6of7': 'assets/img/interface/hearts/6of7.png',\n\t'7of7': 'assets/img/interface/hearts/7of7.png',\n\t'0of8': 'assets/img/interface/hearts/0of8.png',\n\t'1of8': 'assets/img/interface/hearts/1of8.png',\n\t'2of8': 'assets/img/interface/hearts/2of8.png',\n\t'3of8': 'assets/img/interface/hearts/3of8.png',\n\t'4of8': 'assets/img/interface/hearts/4of8.png',\n\t'5of8': 'assets/img/interface/hearts/5of8.png',\n\t'6of8': 'assets/img/interface/hearts/6of8.png',\n\t'7of8': 'assets/img/interface/hearts/7of8.png',\n\t'8of8': 'assets/img/interface/hearts/8of8.png',\n\t'0of9': 'assets/img/interface/hearts/0of9.png',\n\t'1of9': 'assets/img/interface/hearts/1of9.png',\n\t'2of9': 'assets/img/interface/hearts/2of9.png',\n\t'3of9': 'assets/img/interface/hearts/3of9.png',\n\t'4of9': 'assets/img/interface/hearts/4of9.png',\n\t'5of9': 'assets/img/interface/hearts/5of9.png',\n\t'6of9': 'assets/img/interface/hearts/6of9.png',\n\t'7of9': 'assets/img/interface/hearts/7of9.png',\n\t'8of9': 'assets/img/interface/hearts/8of9.png',\n\t'9of9': 'assets/img/interface/hearts/9of9.png',\n\t'0of10': 'assets/img/interface/hearts/0of10.png',\n\t'1of10': 'assets/img/interface/hearts/1of10.png',\n\t'2of10': 'assets/img/interface/hearts/2of10.png',\n\t'3of10': 'assets/img/interface/hearts/3of10.png',\n\t'4of10': 'assets/img/interface/hearts/4of10.png',\n\t'5of10': 'assets/img/interface/hearts/5of10.png',\n\t'6of10': 'assets/img/interface/hearts/6of10.png',\n\t'7of10': 'assets/img/interface/hearts/7of10.png',\n\t'8of10': 'assets/img/interface/hearts/8of10.png',\n\t'9of10': 'assets/img/interface/hearts/9of10.png',\n\t'10of10': 'assets/img/interface/hearts/10of10.png',\n\t'0of20': 'assets/img/interface/hearts/0of20.png',\n\t'1of20': 'assets/img/interface/hearts/1of20.png',\n\t'2of20': 'assets/img/interface/hearts/2of20.png',\n\t'3of20': 'assets/img/interface/hearts/3of20.png',\n\t'4of20': 'assets/img/interface/hearts/4of20.png',\n\t'5of20': 'assets/img/interface/hearts/5of20.png',\n\t'6of20': 'assets/img/interface/hearts/6of20.png',\n\t'7of20': 'assets/img/interface/hearts/7of20.png',\n\t'8of20': 'assets/img/interface/hearts/8of20.png',\n\t'9of20': 'assets/img/interface/hearts/9of20.png',\n\t'10of20': 'assets/img/interface/hearts/10of20.png',\n\t'11of20': 'assets/img/interface/hearts/11of20.png',\n\t'12of20': 'assets/img/interface/hearts/12of20.png',\n\t'13of20': 'assets/img/interface/hearts/13of20.png',\n\t'14of20': 'assets/img/interface/hearts/14of20.png',\n\t'15of20': 'assets/img/interface/hearts/15of20.png',\n\t'16of20': 'assets/img/interface/hearts/16of20.png',\n\t'17of20': 'assets/img/interface/hearts/17of20.png',\n\t'18of20': 'assets/img/interface/hearts/18of20.png',\n\t'19of20': 'assets/img/interface/hearts/19of20.png',\n\t'20of20': 'assets/img/interface/hearts/20of20.png'\n}>>\n\n<<set setup.ui.grit to {\n\t'0grit': 'assets/img/interface/grit/0grit.png',\n\t'5grit': 'assets/img/interface/grit/5grit.png',\n\t'10grit': 'assets/img/interface/grit/10grit.png',\n\t'15grit': 'assets/img/interface/grit/15grit.png',\n\t'20grit': 'assets/img/interface/grit/20grit.png',\n\t'25grit': 'assets/img/interface/grit/25grit.png',\n\t'30grit': 'assets/img/interface/grit/30grit.png',\n\t'35grit': 'assets/img/interface/grit/35grit.png',\n\t'40grit': 'assets/img/interface/grit/40grit.png',\n\t'45grit': 'assets/img/interface/grit/45grit.png',\n\t'50grit': 'assets/img/interface/grit/50grit.png',\n\t'55grit': 'assets/img/interface/grit/55grit.png',\n\t'60grit': 'assets/img/interface/grit/60grit.png',\n\t'65grit': 'assets/img/interface/grit/65grit.png',\n\t'70grit': 'assets/img/interface/grit/70grit.png',\n\t'75grit': 'assets/img/interface/grit/75grit.png',\n\t'80grit': 'assets/img/interface/grit/80grit.png',\n\t'85grit': 'assets/img/interface/grit/85grit.png',\n\t'90grit': 'assets/img/interface/grit/90grit.png',\n\t'95grit': 'assets/img/interface/grit/95grit.png',\n\t'100grit': 'assets/img/interface/grit/100grit.png'\n}>>\n\n<<set setup.ui.rage to {\n\t'rage0-1': 'assets/img/interface/rage/rage0-1.png',\n\t'rage0-05': 'assets/img/interface/rage/rage0-05.png',\n\t'rage0-10': 'assets/img/interface/rage/rage0-10.png',\n\t'rage0-15': 'assets/img/interface/rage/rage0-15.png',\n\t'rage0-20': 'assets/img/interface/rage/rage0-20.png',\n\t'rage0-25': 'assets/img/interface/rage/rage0-25.png',\n\t'rage0-30': 'assets/img/interface/rage/rage0-30.png',\n\t'rage0-35': 'assets/img/interface/rage/rage0-35.png',\n\t'rage0-40': 'assets/img/interface/rage/rage0-40.png',\n\t'rage0-45': 'assets/img/interface/rage/rage0-45.png',\n\t'rage0-50': 'assets/img/interface/rage/rage0-50.png',\n\t'rage0-55': 'assets/img/interface/rage/rage0-55.png',\n\t'rage0-60': 'assets/img/interface/rage/rage0-60.png',\n\t'rage0-65': 'assets/img/interface/rage/rage0-65.png',\n\t'rage0-70': 'assets/img/interface/rage/rage0-70.png',\n\t'rage0-75': 'assets/img/interface/rage/rage0-75.png',\n\t'rage0-80': 'assets/img/interface/rage/rage0-80.png',\n\t'rage0-85': 'assets/img/interface/rage/rage0-85.png',\n\t'rage0-90': 'assets/img/interface/rage/rage0-90.png',\n\t'rage0-95': 'assets/img/interface/rage/rage0-95.png',\n\t'rage0-100': 'assets/img/interface/rage/rage0-100.png',\n\t'rage1-1': 'assets/img/interface/rage/rage1-1.png',\n\t'rage1-05': 'assets/img/interface/rage/rage1-05.png',\n\t'rage1-10': 'assets/img/interface/rage/rage1-10.png',\n\t'rage1-15': 'assets/img/interface/rage/rage1-15.png',\n\t'rage1-20': 'assets/img/interface/rage/rage1-20.png',\n\t'rage1-25': 'assets/img/interface/rage/rage1-25.png',\n\t'rage1-30': 'assets/img/interface/rage/rage1-30.png',\n\t'rage1-35': 'assets/img/interface/rage/rage1-35.png',\n\t'rage1-40': 'assets/img/interface/rage/rage1-40.png',\n\t'rage1-45': 'assets/img/interface/rage/rage1-45.png',\n\t'rage1-50': 'assets/img/interface/rage/rage1-50.png',\n\t'rage1-55': 'assets/img/interface/rage/rage1-55.png',\n\t'rage1-60': 'assets/img/interface/rage/rage1-60.png',\n\t'rage1-65': 'assets/img/interface/rage/rage1-65.png',\n\t'rage1-70': 'assets/img/interface/rage/rage1-70.png',\n\t'rage1-75': 'assets/img/interface/rage/rage1-75.png',\n\t'rage1-80': 'assets/img/interface/rage/rage1-80.png',\n\t'rage1-85': 'assets/img/interface/rage/rage1-85.png',\n\t'rage1-90': 'assets/img/interface/rage/rage1-90.png',\n\t'rage1-95': 'assets/img/interface/rage/rage1-95.png',\n\t'rage1-100': 'assets/img/interface/rage/rage1-100.png'\n}>>\n\n<<set setup.ui.icons to {\n\tagiIcon: 'assets/img/interface/icn/agiIcon.jpg',\n\tcngIcon: 'assets/img/interface/icn/cngIcon.jpg',\n\tendIcon: 'assets/img/interface/icn/endIcon.jpg',\n\tstrIcon: 'assets/img/interface/icn/strIcon.jpg',\n\twilIcon: 'assets/img/interface/icn/wilIcon.jpg',\n\n\tlvlIcon: 'assets/img/interface/icn/lvlIcon.jpg',\n\tpowIcon: 'assets/img/interface/icn/powIcon.jpg',\n\tragebIcon: 'assets/img/interface/icn/ragebIcon.jpg',\n\tragedIcon: 'assets/img/interface/icn/ragedIcon.jpg',\n\tscarsIcon: 'assets/img/interface/icn/scarsIcon.jpg',\n\tstaIcon: 'assets/img/interface/icn/staIcon.jpg',\n\tgrit2: 'assets/img/interface/icn/grit2.jpg',\n\n\tui_armor: 'assets/img/interface/icn/ui_armor.jpg',\n\tui_atk: 'assets/img/interface/icn/ui_atk.jpg',\n\tui_crit: 'assets/img/interface/icn/ui_crit.jpg',\n\tui_def: 'assets/img/interface/icn/ui_def.jpg',\n\tui_disp: 'assets/img/interface/icn/ui_disp.jpg',\n\tui_dodge: 'assets/img/interface/icn/ui_dodge.jpg',\n\tui_down: 'assets/img/interface/icn/ui_down.jpg',\n\tui_grit: 'assets/img/interface/icn/ui_grit.jpg',\n\tui_heal: 'assets/img/interface/icn/ui_heal.jpg',\n\tui_mov: 'assets/img/interface/icn/ui_mov.jpg',\n\tui_regen: 'assets/img/interface/icn/ui_regen.jpg',\n\tui_same: 'assets/img/interface/icn/ui_same.jpg',\n\tui_spell: 'assets/img/interface/icn/ui_spell.jpg',\n\tui_up: 'assets/img/interface/icn/ui_up.jpg',\n\tui_weapon: 'assets/img/interface/icn/ui_weapon.jpg'\n}>>\n\n<<set setup.ui.tut to {\n\ttut1: 'assets/img/interface/tut/tut1.jpg',\n\ttut2: 'assets/img/interface/tut/tut2.jpg',\n\ttut3: 'assets/img/interface/tut/tut3.jpg',\n\ttut4: 'assets/img/interface/tut/tut4.jpg',\n\ttut5: 'assets/img/interface/tut/tut5.jpg',\n\ttut6: 'assets/img/interface/tut/tut6.jpg',\n\ttut7: 'assets/img/interface/tut/tut7.jpg'\n}>>\n\n<<set setup.maps to {\n\tmap11: 'assets/img/maps/map11.jpg'\n}>>
<<set $neutraltraining to 0>>\n<<set $naturaltraining to 0>>\n<<set $lighttraining to 0>>\n<<set $darktraining to 0>>\n<<set $hellishtraining to 0>>\n\n<<set $longswordtraining to 0>>\n<<set $greatswordtraining to 0>>\n<<set $unarmedtraining to 0>>\n<<set $sabertraining to 0>>\n<<set $scythetraining to 0>>\n<<set $speartraining to 0>>\n<<set $sideswordtraining to 0>>\n<<set $katanatraining to 0>>\n<<set $battleaxetraining to 0>>\n<<set $gauntletstraining to 0>>\n\n<<set $gswordhave to 0>>\n<<set $katanahave to 0>>\n<<set $spearhave to 0>>\n<<set $sswordhave to 0>>\n<<set $gauntletshave to 0>>\n<<set $scythehave to 0>>\n<<set $saberhave to 0>>\n<<set $axehave to 0>>\n\n<<set $clothhave to 0>>\n<<set $leatherhave to 1>>\n<<set $chainhave to 0>>\n<<set $platehave to 0>>\n\n<<set $clothplus to 0>>\n<<set $leatherplus to 0>>\n<<set $chainplus to 0>>\n<<set $plateplus to 0>>\n\n<<set $neutralhave to 1>>\n<<set $naturalhave to 0>>\n<<set $lighthave to 0>>\n<<set $darkhave to 0>>\n<<set $hellishhave to 0>>
Talking to people multiple times will occasionally trigger new responses. Try to click around and see what happens.
/%\nCreates a navigation menu for the bailey in ch1, making the directions relative to the current passage and elminating the nav reference to the current passage. \n\nsyntax: <<mapHarlan "current passage">>\n\n[title of passage is: (ch)Map(number in ch)]\n\ncastle map:\n\nNorth\n\tRipley's quarters.\n\t\tExt: Wall-------Ext = only accessible through parent\n\tServant's quarters.\n\t!+Bailey--------------! = midpoint; + = start point\n\t\tExt: Courtyard\n\tMainhall\n\t\tExt: Throneroom\nSouth\n\nWest:\n\tElesun's quarters\n%/<<widget "mapHarlan">>''<<name>> is <<if $args[0] is "1bailey">>in the bailey<<elseif $args[0] is "1RipQuarters">>in Ripley's quarters<<elseif $args[0] is "1servQuarters">>in the servant's quarters<<elseif $args[0] is "1mainhall">>in the main hall<<elseif $args[0] is "1EleQuarters">>in her own quarters<<endif>>.''\n<<switch $args[0]>><<case "1bailey">><<link "Ripley's Quarters">><<replace "#info">><<display "1Map1Rip">><</replace>><</link>>\n<<link "Servants' Quarters">><<replace "#info">><<display "1Map1Serv">><</replace>><</link>>\n<<link "Elesun's Quarters">><<replace "#info">><<display "1Map1Ele">><</replace>><</link>>\n<<link "Main Hall">><<replace "#info">><<display "1Map1Hall">><</replace>><</link>>\n<<case "1RipQuarters">><<link "Bailey">><<replace "#info">><<display "1Map1Bailey">><</replace>><</link>>\n<<link "Servants' Quarters">><<replace "#info">><<display "1Map1Serv">><</replace>><</link>>\n<<link "Elesun's Quarters">><<replace "#info">><<display "1Map1Ele">><</replace>><</link>>\n<<link "Main Hall">><<replace "#info">><<display "1Map1Hall">><</replace>><</link>>\n<<case "1servQuarters">><<link "Ripley's Quarters">><<replace "#info">><<display "1Map1Rip">><</replace>><</link>>\n<<link "Bailey">><<replace "#info">><<display "1Map1Bailey">><</replace>><</link>>\n<<link "Elesun's Quarters">><<replace "#info">><<display "1Map1Ele">><</replace>><</link>>\n<<link "Main Hall">><<replace "#info">><<display "1Map1Hall">><</replace>><</link>>\n<<case "1EleQuarters">><<link "Ripley's Quarters">><<replace "#info">><<display "1Map1Rip">><</replace>><</link>>\n<<link "Servants' Quarters">><<replace "#info">><<display "1Map1Serv">><</replace>><</link>>\n<<link "Bailey">><<replace "#info">><<display "1Map1Bailey">><</replace>><</link>>\n<<link "Main Hall">><<replace "#info">><<display "1Map1Hall">><</replace>><</link>>\n<<case "1mainhall">><<link "Ripley's Quarters">><<replace "#info">><<display "1Map1Rip">><</replace>><</link>>\n<<link "Servants' Quarters">><<replace "#info">><<display "1Map1Serv">><</replace>><</link>>\n<<link "Bailey">><<replace "#info">><<display "1Map1Bailey">><</replace>><</link>>\n<<link "Elesun's Quarters">><<replace "#info">><<display "1Map1Ele">><</replace>><</link>>\n<</switch>><<button "See Map">><<replace "#navbox">><<display "map_1_1-pass">><</replace>><</button>><<endwidget>>
Elesun knows Akatosh is behind this attack.\n\nThe thought of him alone makes her heart hurt for poor Ripley. And then the thought makes her angry. Someday Ripley would make him pay. And if Ripley’s strength failed, Elesun would be there.
<div id="tutorial">[img[setup.ui.tut.tut2][combatexplanation3menu]]</div>\n<<ctrlCon "combatexplanation3menu">>
/% 2 %/\n<<set $specialMult to 1.0>>/%damage of spell%/\n<<set $SpEffName to "">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,0)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Fire Ball">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
<<unset $staggerOdds>><<unset $baseStaggerOdds>><<if $bossFight>><<display $hookPull>><<set $bossFight to false>><<endif>><<audio ":playing" fadeout>><<payload 'onFightEnd'>><<set $xpearned to $nmexp>><<set $sta to $maxsta>><<set $gamestart to 1>><<set $grit to $maxgrit>><<set $sta to $maxsta>><<set $SpEffEnd to -1>><<set $specialOn to 0>><<set $NMESpMov to 1.0>><<set $NMESpDef to 1.0>><<set $NMESpAtk to 1.0>><<set $NMESpDam to 1.0>><<set $NMEStaUse to 0>><<set $NMEStaLmt to 0>><<set $SpEffDisplay to "">><<display "rage_store">><<set $rageCurrent to 0>><<xp>>
<<first>><<masteraudio stop>><<audio 'herat7' loop play>><</first>><<image 'RipSmKid'>><<thumb>><<if $drawOrNot>>Elesun breaks out into a sprint, sword in hand. Behind her, the guards drop what they're holding and run after her.<<else>>Elesun walks more quickly.\n\n"Ripley, what's wrong?" she calls.\n\nThe guards behind her set their things down. "What is it?" one asks. They start to trot after Elesun.<<endif>>\n\nBefore Elesun can get there, Ripley jumps back--a tendril of inky-dark magical energy explodes into the ground where she was standing. Elesun and Ripley both look for the source, and see a cloaked figure emerge from the darkness.\n\n"No," Ripley gasps. "What did you do to them?"\n\n<<ctrlCon '1tocamp3'>>
\nTraining points, or TP, are paid to trainers found throughout the game to improve the effectiveness of your weapons and magic. All training starts at level 0, and has a maximum level of 3.\n\n
<div id="tutorial">[img[setup.ui.tut.tut5][combatexplanation6menu]]</div>\n<<ctrlCon "combatexplanation6menu">>
From the sound of it, there's some fighting happening on the grounds outside the throne room. Things seem quiet inside, though.
<<set $wounds to $wounds + ($health - $maxhealth)>>\n<<set $health to $maxhealth>>\n<<set $day to $day+1>>
<<if $holyLandAutoLoad is 1>>* <<radiobutton "$holyLandAutoLoad" 0>> No. Default.\n*<<radiobutton "$holyLandAutoLoad" 1 checked>> Yes.<<else>>* <<radiobutton "$holyLandAutoLoad" 0 checked>> No. Default.\n*<<radiobutton "$holyLandAutoLoad" 1>> Yes.<<endif>>
Healing causes defending to replenish <<= setup.words.grit>> and grants a small bonus to <<= setup.words.grit>> regeneration. Slight penalty to attack.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_down]]|//Slight//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_up]]|//Moderate//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_up]]|//Large//|
!function(){\n\t$(document).on('click', '#map1-1-ele', function(e){\n\t\te.preventDefault();\n\t\tnew Wikifier (null, "<<replace #info>><<display '1Map1Ele'>><</replace>>");\n\t});\n\t$(document).on('click', '#map1-1-bly', function(e){\n\t\te.preventDefault();\n\t\tnew Wikifier (null, "<<replace #info>><<display '1Map1Bailey'>><</replace>>");\n\t});\n\t$(document).on('click', '#map1-1-mhl', function(e){\n\t\te.preventDefault();\n\t\tnew Wikifier (null, "<<replace #info>><<display '1Map1Hall'>><</replace>>");\n\t});\n\t$(document).on('click', '#map1-1-srv', function(e){\n\t\te.preventDefault();\n\t\tnew Wikifier (null, "<<replace #info>><<display '1Map1Serv'>><</replace>>");\n\t});\n\t$(document).on('click', '#map1-1-rip', function(e){\n\t\te.preventDefault();\n\t\tnew Wikifier (null, "<<replace #info>><<display '1Map1Rip'>><</replace>>");\n\t});\n}();\n\n!function(){\n\t$(document).on('mouseenter', '#map1-1-ele', function(e){\n\t\t$('#map-descr').addClass('ele');\n\t}).on('mouseout', '#map1-1-ele', function(e){\n\t\t$('#map-descr').removeClass('ele');\n\t});\n\t$(document).on('mouseenter', '#map1-1-rip', function(e){\n\t\t$('#map-descr').addClass('rip');\n\t}).on('mouseout', '#map1-1-rip', function(e){\n\t\t$('#map-descr').removeClass('rip');\n\t});\n\t$(document).on('mouseenter', '#map1-1-bly', function(e){\n\t\t$('#map-descr').addClass('bly');\n\t}).on('mouseout', '#map1-1-bly', function(e){\n\t\t$('#map-descr').removeClass('bly');\n\t});\n\t$(document).on('mouseenter', '#map1-1-srv', function(e){\n\t\t$('#map-descr').addClass('srv');\n\t}).on('mouseout', '#map1-1-srv', function(e){\n\t\t$('#map-descr').removeClass('srv');\n\t});\n\t$(document).on('mouseenter', '#map1-1-mhl', function(e){\n\t\t$('#map-descr').addClass('mhl');\n\t}).on('mouseout', '#map1-1-mhl', function(e){\n\t\t$('#map-descr').removeClass('mhl');\n\t});\n}();
<<image "KingPt">>Elesun steps toward the throne.\n\n"Do you need something, Elesun?"\n\n<<dock "Chit-chat." "KingChat1">>\n\n<<dock 'Talk about Ripley.' '1KingRip'>>\n\n<<dock 'Talk about Folsom.' '1KingFolsom'>>\n\n<<dock 'Talk about Harlaus.' '1KingHarl'>>\n\n<<dock 'Talk about Irelith.' '1KingIre'>>\n\n<<dock "Goodbye." "1KingNVM">>\n\n<<info>>\n\n\n\n\n
@font-face {\n font-family: code;\n src: url("assets/fonts/code.otf");\n }\n\n@font-face {\n font-family: base;\n src: url("assets/fonts/base.ttf");\n }\n\n@font-face {\n font-family: base-med;\n src: url("assets/fonts/rob-m.ttf");\n font-size: 22px;\n }\n\n@font-face {\n font-family: runes;\n src: url("assets/fonts/runes.ttf");\n }\n\nbody {\n font-family: base;\n }\n\n#ui-dialog {\n font-family: base-med;\n }\n\n#story-caption {\n\tdisplay: none;\n}\n\n#story-title, #story-author, #story-banner, .error {\n\tdisplay: none;\n}\n\n#story-subtitle {\n\tfont-size: 162.5%;\n \tfont-weight: bold;\n\tmargin: 0;\n}\n\nbody.menu {\n\tcolor: #111;\n\tbackground-color: #fff;\n}\nbody.menu a {\n\tcolor: #35c;\n}\nbody.menu a:hover {\n\tcolor: #57e;\n}\n\nbody.menu #info a {\n\tcolor: red;\n\tfont-weight: bold;\n}\n\nbody.menu button {\n\tcolor: #111;\n\tbackground-color: #acf;\n\tborder-color: #8ad;\n}\nbody.menu button:hover {\n\tbackground-color: #8ad;\n\tborder-color: #68b;\n}\nbody.menu button:disabled {\n\tbackground-color: #ccc;\n\tborder-color: #aaa;\n}\nbody.menu input, select, textarea {\n\tcolor: #111;\n\tborder-color: #ccc;\n}\nbody.menu input:focus, select:focus, textarea:focus,\ninput:hover, select:hover, textarea:hover {\n\tbackground-color: #eee;\n\tborder-color: #111;\n}\n\nbody.menu #ui-bar {\n\tbackground-color: #696969;\n\tborder-color: #ccc;\n}\n\nbody.menu #info {\n\tposition: fixed;\n\tbottom: 20px;\n\tborder: 5px solid #000;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmax-height: 25%;\n\tmin-width: 60%;\n\tmax-width: 60%;\n\toverflow: auto;\n\tbackground-color: #696969; \n\tcolor: #fff;\n\topacity: 0.8;\n}\n\nbody.menu #info:hover {\n\topacity: 1.0;\n}\n\nbody.menu #ui-overlay {\n\tbackground-color: #777;\n}\nbody.menu #ui-dialog-titlebar {\n\tbackground-color: #ccc;\n}\nbody.menu #ui-dialog-close:hover {\n\tbackground-color: #b44;\n\tborder-color: #a33;\n}\nbody.menu #ui-dialog-body {\n\tbackground-color: #fff;\n\tborder-color: #ccc;\n}\nbody.menu #ui-dialog-body hr {\n\tbackground-color: #ccc;\n}\n\n/* List-based dialog styling */\nbody.menu #ui-dialog-body.list li:not(:first-child) {\n\tborder-top-color: #ccc;\n}\nbody.menu #ui-dialog-body.list li a {\n\tcolor: #111;\n}\nbody.menu #ui-dialog-body.list li a:hover {\n\tbackground-color: #ccc;\n\tborder-color: #111;\n}\n\n#menu li a {\n text-transform: none;\n font-size: 110%;\n }\n\n#titlecard {\n\tfloat: left;\n}\n\n#info {\n\tposition: fixed !important;\n\tbottom: 20px;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmax-height: 25%;\n\tmin-width: 60%;\n\tmax-width: 60%;\n\toverflow: auto;\n\tcolor: #fff;\n\tbackground-color: #000000; \n\topacity: 0.9;\n}\n\n#panda {\n\tfloat: right;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmin-height: 25%;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 25%;\n\tbackground-color: #000000;\n\toverflow: auto;\n}\n\n#info:hover {\n\topacity: 1.0;\n}\n\n#cominfo {\n\tposition: fixed;\n\tbottom: 20px;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmax-height: 25%;\n\tmin-width: 60%;\n\tmax-width: 60%;\n\toverflow: auto;\n\tcolor: #fff;\n\tbackground-color: #000000; \n\topacity: 0.9;\n}\n\n#cominfo:hover {\n\topacity: 1.0;\n}\n\n\n\n#combatAlly {\n\tfloat: right;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 25%;\n\toverflow: auto;\n\tbackground-color: #000000; \n\topacity: 0.9;\n}\n\n#combatAlly:hover {\n\topacity: 1.0;\n}\n\n#portrait {\n\tfloat: right;\n\tpadding: 10px;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 45%;\n\tclear: right;\n}\n\n#portrait2 {\n\tfloat: right;\n\tborder: 5px solid #fff;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 45%;\n\tclear: right;\n}\n\n#subj {\n\tfloat: right;\n\tpadding: 10px;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 45%; \n\tclear: right;\n}\n\n#nmeport {\n\tfloat: left;\n\tpadding: 5px;\n\tmargin: 10px;\n}\n\n#combatNME {\n\tfloat: right;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\tmargin: 15px;\n\tmin-height: 20%;\n\tmax-height: 25%;\n\tmin-width: 45%;\n\tmax-width: 45%;\n\toverflow: auto;\n\tbackground-color: #000000; \n\topacity: 0.9;\n}\n\n#combatNME:hover {\n\topacity: 1.0;\n}\n\n#bugcode {\n\tdisplay: block;\n\tborder: 5px solid #696969;\n\tpadding: 10px;\n\tmargin: 15px;\n\tbackground-color: #fff;\n\tcolor: #000;\n\tword-wrap: break-word;\n\toverflow: auto;\n\theight: 10em;\n}\n\n.mobile.space .passage {\n\tposition: fixed;\n\tborder: 3px solid #fff;\n\tfont-size: 120%;\n\tpadding: 2px;\n\tmargin: none;\n\tmax-height: 80%;\n\tmin-width: 70%;\n\tmax-width: 70%;\n\toverflow: auto;\n\tbackground-color: #000;\n\tcolor: #fff;\n}\n\n.mobile #info {\n\tposition: fixed;\n\tbottom: 5px;\n\tborder: 3px solid #fff;\n\tpadding: 2px;\n\tmargin: 3px;\n\tmax-height: 20%;\n\tmin-width: 70%;\n\tmax-width: 70%;\n\toverflow: auto;\n\tbackground-color: #000000; \n\topacity: 0.6;\n}\n\nbody.mobile #portrait {\n\tfloat: right;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 45%;\n\toverflow: auto;\n\ttext-size: 90%;\n}\n\n.mobile.combat #comele #comrip {\n\tdisplay: none;\n\tfloat: right;\n\tmax-height: 25%;\n\tmin-width: 25%;\n\tmax-width: 45%;\n\toverflow: auto;\n\ttext-size: 90%;\n}\n\nbody.mobile.combat .passage {\n\tposition: static;\n\tborder: none;\n\tfont-size: 100%;\n\tpadding: initial;\n\tmargin: auto;\n\tmax-height: none;\n\tmin-width: none;\n\tmax-width: none;\n\toverflow: visible;\n\tbackground-color: #111;\n\tcolor: #eee;\n}\n\nbody.mobile #combatNME {\n\tposition: absolute;\n\tmin-height: 20%;\n\tmax-height: 40%;\n\tmin-width: 60%;\n\tmax-width: 60%;\n\toverflow: auto;\n\tbackground-color: #000000; \n\topacity: 0.9;\n}\n\nbody.mobile #combatNME:hover {\nopacity: 1.0;\n}\n\n.mobile #info:hover {\n\topacity: 1.0;\n}\n\n#comele {\n\tfloat: right;\n\tcolor: #fff;\n\tfont-size: 100%;\n\theight: 600px;\n\twidth: 45%;\n\tbackground-image: url('assets/img/art/_ele/pt.jpg');\n\tbackground-size: contain;\n\tbackground-color: #111;\n\tbackground-repeat: no-repeat;\n\toverflow: auto;\n\tz-index: -1;\n}\n\n#comrip {\n\tfloat: right;\n\tcolor: #fff;\n\tfont-size: 100%;\n\theight: 600px;\n\twidth: 45%;\n\tbackground-image: url('assets/img/art/__rip/adult/pt.jpg');\n\tbackground-size: contain;\n\tbackground-color: #111;\n\tbackground-repeat: no-repeat;\n\toverflow: auto;\n\tz-index: -1;\n}\n\n#comripDvl {\n\tfloat: right;\n\tcolor: #fff;\n\tfont-size: 100%;\n\theight: 600px;\n\twidth: 45%;\n\tbackground-image: url('assets/img/art/__rip/adult/emPt/devl.jpg');\n\tbackground-size: contain;\n\tbackground-color: #111;\n\tbackground-repeat: no-repeat;\n\toverflow: auto;\n\tz-index: -1;\n}\n\n#comripFnl {\n\tfloat: right;\n\tcolor: #fff;\n\tfont-size: 100%;\n\theight: 600px;\n\twidth: 45%;\n\tbackground-image: url('assets/img/art/__rip/adult/emPt/finl.jpg');\n\tbackground-size: contain;\n\tbackground-color: #111;\n\tbackground-repeat: no-repeat;\n\toverflow: auto;\n\tz-index: -1;\n}\n\n.switch {\n\tposition: relative;\n\tright: -100%;\n\tleft: 0;\n\ttop: 0;\n\tbottom: 0;\n\t/*visibility: hidden;*/\n\twidth: 0px;\n\ttransition: width 150ms;\n\t-webkit-transition: width 150ms;\n\t-moz-transition: width 150ms;\n\t-o-transition: width 150ms;\n}\n\n#comele:hover .switch {\n\t/*visibility: visible;*/\n\twidth: 100%;\n}\n\n#comrip:hover .switch {\n\t/*visibility: visible;*/\n\twidth: 100%;\n}\n\n#comripDvl:hover .switch {\n\t/*visibility: visible;*/\n\twidth: 100%;\n}\n\n#comripFnl:hover .switch {\n\t/*visibility: visible;*/\n\twidth: 100%;\n}\n\n#helpA, #helpB, #helpC {\n\tcolor: #01ff70;\n}\n\n#journallink a {\n\tcolor: #eee;\n\ttext-decoration: underline;\n}\n\n.info2 {\n\tposition: fixed;\n\ttop: 10%;\n\tright: 20%;\n\tmin-height: 15%;\n\tmax-height: 60%;\n\tmin-width: 40%;\n\tmax-width: 40%;\n\tbackground-color: #000;\n\tborder: 5px solid #696969;\n\tcolor: #fff;\n\topacity: 0.9;\n\tmargin: 10px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n}\n\n.info2titlebar {\n\tposition: relative;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n\theight: 40px;\n\tbackground-color: #696969;\n\tcolor: #000;\n}\n\n#info2title {\n\tposition: relative;\n\twidth: 150px;\n\tpadding-top: 10px;\n\tpadding-left: 20px;\n\tfont-weight: bold;\n}\n\n#info2close {\n float: right;\n\theight: 40px;\n\tbackground-color: red;\n text-decoration: none;\n\tz-index: 4;\n}\n\n#info2close a:hover {\n\topacity: 0.7;\n}\n\n#info2close a:hover {\n\ttext-decoration: none;\n}\n\n.mobile .info2 {\n\tright: 0%;\n\tmin-width: 80%;\n\tmax-width: 80%;\n\tmargin: 3px;\n\tpadding: 1px;\n}\n\n.info2:hover {\n\topacity: 1.0;\n}\n\n#infoX {\n\tposition: relative;\n\tdisplay: block;\n\tline-height: 1.6;\n\tpadding: 20px;\n}\n\n#info3 {\n\tposition: relative;\n\tmin-height: 25%;\n\tmax-height: 35%;\n\tbackground-color: #000;\n\tborder: 5px solid #696969;\n\tcolor: #fff;\n\topacity: 0.9;\n\tpadding: 10px;\n\tmargin: 15px;\n\toverflow: auto;\n}\n\n#info3:hover {\n\topacity: 1.0;\n}\n\n#info3close {\n\tdisplay: none;\n}\n\n.space #info3close {\n\tdisplay: initial;\n}\n\n.choice #info3close {\n\tdisplay: initial;\n}\n\n.info4 {\n\tvisibility: visible;\n\tposition: relative;\n display: inline-block;\n\tcolor: #35c;\n\ttext-decoration: underline;\n}\n\n.info4 .info4tip {\n visibility: hidden;\n width: 120px;\n background-color: #eee;\n color: #111;\n text-align: center;\n padding: 5px 0;\n border-radius: 6px;\n position: absolute;\n z-index: 1;\n\twidth: 120px;\n top: 100%;\n left: 50%; \n margin-left: -60px;\n}\n\n.info4 .info4tip::after {\n content: " ";\n position: absolute;\n bottom: 100%; /* At the top of the tooltip */\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent black transparent;\n}\n\n.info4:hover .info4tip {\n\topacity: 1.0;\n visibility: visible;\n}\n\n.comDisp {\n\tposition: relative;\n\ttop: 5%;\n\tright: 0;\n\tleft: 0;\n\tmin-height: 30%;\n\tmax-height: 50%;\n\tbackground: rgba(0, 0, 0, 0.4);\n\tcolor: #fff;\n\toverflow: hidden;\n\tvisibility: inherit;\n}\n\n.comUIimg {\n\topacity: 0.6;\n\tvisibility: inherit;\n}\n\n.comUIimg:hover {\n\topacity: 1.0;\n}\n\n.switch:hover {\n\tvisibility: visible;\n}\n\n#transformbutton {\n\tposition: relative;\n\ttop: 10px;\n\tleft: 0;\n\tright: 0;\n}\n\n#transformbutton a {\n\tanimation: blinker 1s linear infinite;\n\tcolor: red;\n\tfont-size: 150%;\n}\n\n#transformbutton a:hover{\n\tanimation: blinker 500ms linear infinite;\n\ttext-decoration: none;\n}\n\n#transformbutton2 a {\n\tanimation: blinker 1s linear infinite;\n\tcolor: red;\n}\n\n#transformbutton2 a:hover{\n\tanimation: blinker 500ms linear infinite;\n\ttext-decoration: none;\n}\n\n@keyframes blinker { \n 50% { opacity: 0; }\n}\n\n#rager {\n\tfloat: right;\n\tmargin-right: 20%;\n\tmargin-top: 20px;\n\ttext-align: center;\n}\n\n#mutebutton {\n\tvisibility: hide;\n}\n\n#titleContainer {\n\tposition: static;\n\tmargin-left: -4em;\n}\n\n#titlecard {\n\tposition: relative;\n\tmax-width: 60vp;\n}\n\n#navbox {\n\tdisplay: inline-block;\n\tborder: 5px solid #fff;\n\tpadding: 10px;\n\toverflow: auto;\n\tcolor: #fff;\n\tbackground-color: #000; \n\topacity: 0.9;\n}\n\n#navbox:hover{\n\topacity: 1;\n}\n\n.time-bar {\n width: 60%;\n height: 12px;\n border-radius: 3px;\n border: 2px solid red;\n}\n.time-bar span {\n\tposition: relative;\n\ttop: -7px;\n background: red;\n height: 12px;\n display: inline-block;\n}\n.time-bar .w0 {\n animation: w0 4s ease forwards;\n}\n\n.time-bar .w0 {\n\tposition: relative;\n\twidth: 1%;\n}\n\n@keyframes w0 {\n\t0% {width: 1%;}\n\t60% {width: 80%;}\n\t100% {width: 100%;}\n}\n\n.battle-bar {\n width: 60%;\n height: 20px;\n border-radius: 5px;\n border: 2px solid #fff;\n}\n\n.battle-bar span {\n position: relative;\n top: 0px;\n background: #fff;\n height: 18px;\n border-radius: 5px;\n display: inline-block;\n}\n\n.battle-bar .w1 {\n position: relative;\n width: 100%;\n}\n\n.battle-bar .w2 {\n position: relative;\n width: 0%;\n\tanimation: w2 1500ms linear forwards;\n}\n\n@keyframes w2 {\n 0% { width: 100%; }\n 33% { width: 66%; background: #fff }\n\t34% { width: 65%; background: red;}\n\t65% { width: 34%; background: red;}\n\t66% { width: 33%; background: #fff;}\n\t100% { width: 1%; }\n}\n\n.time-btn {\n\tfont-size: 275%;\n}\n\n.runes {\n font-family: runes;\n font-wieght: bold;\n font-size: 400%;\n text-align: center;\n }\n\n.titleText {\n font-family: code;\n font-size: 400%;\n font-weight: bold;\n text-align: center;\n }\n\n/* ----------------------------------------------\n * Generated by Animista on 2017-4-7 0:43:14\n * http://animista.net\n * T: @cssanimista\n * ---------------------------------------------- */\n\n@-webkit-keyframes text-focus-in{0%{-webkit-filter:blur(12px);filter:blur(12px);opacity:0}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1}}@keyframes text-focus-in{0%{-webkit-filter:blur(12px);filter:blur(12px);opacity:0}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1}}\n\n.text-focus-in {\n\t-webkit-animation: text-focus-in 0.4s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;\n\t-moz-animation: text-focus-in 0.4s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;\n\tanimation: text-focus-in 0.4s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;\n}\n\ninput[type=range] {\n -webkit-appearance: none;\n width: 200px;\n margin: 0 10px;\n vertical-align: text-bottom;\n border: 0;\n}\ninput[type=range]:focus {\n outline: none;\n}\ninput[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;\n background: #000000;\n border-radius: 0px;\n border: 0px solid #010101;\n}\ninput[type=range]::-webkit-slider-thumb {\n box-shadow: 0px 0px 0px rgba(0, 0, 62, 0.67), 0px 0px 0px rgba(0, 0, 88, 0.67);\n border: 1.9px solid #000000;\n height: 15px;\n width: 15px;\n border-radius: 15px;\n background: #ffffff;\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -5px;\n}\ninput[type=range]:focus::-webkit-slider-runnable-track {\n background: #0a0a0a;\n}\ninput[type=range]::-moz-range-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;\n background: #000000;\n border-radius: 0px;\n border: 0px solid #010101;\n}\ninput[type=range]::-moz-range-thumb {\n box-shadow: 0px 0px 0px rgba(0, 0, 62, 0.67), 0px 0px 0px rgba(0, 0, 88, 0.67);\n border: 1.9px solid #000000;\n height: 15px;\n width: 15px;\n border-radius: 15px;\n background: #ffffff;\n cursor: pointer;\n}\ninput[type=range]::-ms-track {\n width: 100%;\n height: 5px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n}\ninput[type=range]::-ms-fill-lower {\n background: #000000;\n border: 0px solid #010101;\n border-radius: 0px;\n box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;\n}\ninput[type=range]::-ms-fill-upper {\n background: #000000;\n border: 0px solid #010101;\n border-radius: 0px;\n box-shadow: 0px 0px 0px #000000, 0px 0px 0px #0d0d0d;\n}\ninput[type=range]::-ms-thumb {\n box-shadow: 0px 0px 0px rgba(0, 0, 62, 0.67), 0px 0px 0px rgba(0, 0, 88, 0.67);\n border: 1.9px solid #000000;\n height: 15px;\n width: 15px;\n border-radius: 15px;\n background: #ffffff;\n cursor: pointer;\n height: 5px;\n}\ninput[type=range]:focus::-ms-fill-lower {\n background: #000000;\n}\ninput[type=range]:focus::-ms-fill-upper {\n background: #0a0a0a;\n}\n\n#tutorial img {\n width: 135%;\n margin-left: -10em;\n margin-top: -2em;\n }\n\n.help a { color: #01FF70; }\n.help a:hover { color: #3D9970; }\n.help.open a { color: #3D9970; }\n.help.open a:hover { color: #01FF70; }\n.help {\n color: #01ff70;\n }\n\n.action-info a { color: #7FDBFF; }\n.action-info a:hover { color: #0074D9; }\n.action-link a { color: #7FDBFF; }\n.action-link a:hover { color: #0074D9; }\n\n#splash {\n\tz-index: 100;\n\tposition: fixed;\n\ttop: 0; bottom: 0; left: 0; right: 0;\n\tbackground-color: #111;\n\tcolor: #eee;\n\theight: 100%;\n\twidth: 100%;\n\ttext-align: center;\n\tpadding-top: 10%;\n}\n\n#splash-text {\n\tfont-size: 250%;\n}\n\n#imgloader-box{position:fixed;left:0;top:0;width:2px;height:2px;overflow:hidden;z-index:0}\n#imgloader-box img{position:absolute;left:0;top:0;width:1px;height:1px}\n\n.tutDlg { padding: 10em 15em !important; }
<<display "heartbreaker">><<display "gritbar">>Stamina: <<print $sta>>/<<print $maxsta>>\n[img[$gritdisplay]][img[$heartdisplay]]
<<image "RipPtKid">>"You're stronger than I give you credit for," Elesun says. "I'm sorry."\n<<set $comfortRip to 0>>\nRipley doesn't say anything.\n\n"And thank you for saving my life," Elesun says.\n\nElesun turns and heads back to the throne room.\n\n<<ctrlClick "Continue." "prol6">>
/*! <<checkvars>> macro for SugarCube 2.x */\n#ui-dialog-body.checkvars{padding:1em}#ui-dialog-body.checkvars h1{font-size:1.5em;margin-top:0}#ui-dialog-body.checkvars table{border-collapse:collapse;border-spacing:0}#ui-dialog-body.checkvars thead tr{border-bottom:2px solid #444}#ui-dialog-body.checkvars tr:not(:first-child){border-top:1px solid #444}#ui-dialog-body.checkvars td,#ui-dialog-body.checkvars th{padding:.25em 1em}#ui-dialog-body.checkvars td:first-child,#ui-dialog-body.checkvars th:first-child{padding-left:.5em;border-right:1px solid #444}#ui-dialog-body.checkvars td:last-child,#ui-dialog-body.checkvars th:last-child{padding-right:.5em}#ui-dialog-body.checkvars th:first-child{text-align:center}#ui-dialog-body.checkvars td:first-child{font-weight:700;text-align:right}#ui-dialog-body.checkvars td{font-family:monospace,monospace;vertical-align:top;white-space:pre-wrap}#ui-dialog-body.checkvars .scroll-pad{margin:0;padding:0}\n
<<set $gamestart to 0>>The Elysian smith has agreed to help Ripley. You can select one of your suits of armor to upgrade. This upgrade is permanent, and cannot be changed later.\n\n[[Upgrade my cloth armor.|armorsmith2][$clothplus to 1; $armorupgrade to 0]]\n\n[[Upgrade my leather armor.|armorsmith2][$leatherplus to 1; $armorupgrade to 0]]\n\n[[Upgrade my chain armor.|armorsmith2][$chainplus to 1; $armorupgrade to 0]]\n\n[[Upgrade my plate armor.|armorsmith2][$plateplus to 1; $armorupgrade to 0]]\n\n[[Cancel upgrading.|$exitpassage][$gamestart to 1]]
[[Music|musictester]]\n\n[[Sound|effecttester]]\n\n\n[[Cancel|debug_features]]
Holy Land
\n\n\n\n\n\n\nPlease note:\n\nThe browser version of //Holy Land// uses your browser's cache to record saves. If you want to clear your browser data or switch browsers/computers, you can export/import your save games to your disk drive from the @@font-family: tme-fa-icons;<<- "\sue82b">>@@ Saves menu on the left.\n\n<<ctrlClick "Okay" "newgame3">>
<<dialog 'Tutorial' 'tut'>>\s\nThe enemy has cast a spell.\n\nSpells are powerful, and most have a chance to cause ''status effects''. Fortunately, <<name>> has a chance to dispel every spell an enemy casts.\s\n<</dialog>>\n<<tutorialHook 'tut_onNMEspell'>>
<<print $bugcode>>\n<<run setup.decode($bugcode)>>\n\n''Version and Progression'':\n*Version (<<print $versionnumber>>)\n*Chapter (<<print $chapter>>)\n*Stage (<<print $storystage>>)\n<<display "AudioLoad">>\nSettings (<<print $bugcodeSettings>>):\n*Dock (<<print $dockmode>>)\n*Mobile (<<print $mobile>>)\n*Combat Images (<<print $combatimages>>)\n*Audio (<<print $audioswitch>>)\n*Master Audio (<<print $masteraudioswitch>>)\n*Demo (<<print $demomode>>)\n*Debug (<<print $debug>>)\n\n''Stats'':\n*Character (<<print $character>>)\n*Level (<<print $lvl>>)\n*Stat Base (<<print $statbase>>)\n*Attributes: Str (<<print $strrank>>), Agi (<<print $agirank>>), End (<<print $endrank>>), Wil (<<print $wilrank>>), Cng (<<print $cngrank>>)\n*XP (<<print $xp>>)\n*TP (<<print $tp>>)\n*Scars (<<print $scars>>)\n\n''Items Loaded...''\n<<message "View">><<display "debug_decode_view_items">><</message>>\n\n''Game Location'' (<<print $return>>) :\n*[[Go there now.|$return][$gamestart to 1]]\n*[[Go in debug mode.|$return][$debug to 1, $gamestart to 1]]\n\nJump to a different passage with the loaded stats:\n\n<<textbox "$go" "" "go" autofocus>>\n\nPress enter to jump.\n\n\n[[Back to decoder.|TheDebugDecoderRing]]\n\n\n
<<set $allyname to "Irelith">>\n<<set $allynumber to 2>>\n\n<<set $allylvl to 5>>\n<<set $allymaxhealth to 3>>\n<<set $allymaxgrit to 165>>\n<<set $allyatk to 61>>\n<<set $allydef to 63>>\n<<set $allymov to 56>>\n<<set $allymagic to 56>>\n\n<<set $allyspecial to "guard">>\n<<set $specialname "Guard">>\n<<set $allyspec to 1>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has been wounded.\n\nWhen <<name>>'s <<= setup.words.grit>> is fully depleted, she loses one point of health, represented by the hearts at the bottom of the screen. If <<name>> loses all her hearts, she dies and it's game over.\n\nHearts can usually only be restored by resting. When <<name>> rests and recovers from her wounds, she has a chance to earn new scars. If she earns enough scars, she will gain a new heart.\s\n<</dialog>>\n<<tutorialHook 'tut_onHeartDam'>>
\n\n<-journal and help\n\n
^\n|_-weapons\n\n<-spells\n\n\n\n\nsettings->
/% 7 %/\n<<set $specialMult to 0.2>>/%damage of spell%/\n<<set $SpEffName to "Shattered">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,1,1,2)>>/%time adjustment%/\n\n<<set $NMESpMov to 0.1>>/%mov debuff%/\n<<set $NMESpDef to 0.5>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Break">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
<<if $storystage lt 1>>Nothing here yet.<<else>>''Chapter One: Broken Promises''\n\n<<if $storystage lt 3>>Relax a bit.<<else>>Protect and escort Ripley.<<endif>>\n\n<<if $storystage is 2>>Get some rest before you set out.<<elseif $storystage is 3>>Keep an eye out for trouble.<<elseif $storystage is 4>>Find Ripley.<<elseif $storystage is 5>>Rescue Ripley.<<elseif $storystage is 6>>Kill Aesil.<<endif>>\n<<endif>>
<<set $armorname to "Plate Armor">>\n<<set $armor_ui to "plate_ui">>\n\n<<set $aatk to 0.9>>\n<<set $adef to 1.2>>\n<<set $amov to 0.9>>\n\n<<if $plateplus eq 1>>\n\t<<set $adef to 1.3>>\n\t<<set $aatk to 1.0>>\n\t<<set $armorname to "Plate Armor+">>\n<<endif>>
It's a mean-looking steel blade, almost as tall as Elesun is herself. One of the castle’s soldiers must have decided on a more functional weapon.\n\n<<ctrlClick "Pick up the greatsword." "0iwgreatsword2" "interact">>
Andre notices Elesun. "Lady Elesun, might I have a word?" he asks, standing up.\n\n<<ctrlClick 'Sure.' '1AndreScene'>>
<<set $allyTalk to either("Those are nice paintings", "Hey that portrait's of me. I remember having to sit for it", "There's a painting of Harlaus, there's one of the king over there, too", "That witch didn't hurt you, right? You look a little wobbly")>>"<<print $allyTalk>>," Ripley says.
Summonable, end game.\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 20>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<set $spellname to "Inferno">>\n<<set $schoolname to "Hellish">>\n<<set $p_spellname to "Inferno">>\n<<set $spell_ui to "infr_ui">>\n\n<<set $spellcrit to -10>>\n<<set $spellcritdam to 4.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to -50>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $hellishtraining is 1>>\n\t<<set $spellcrit to -5>>\n<<elseif $hellishtraining is 2>>\n\t<<set $spellgrit to -30>>\n\t<<set $spellcrit to -5>>\n<<elseif $hellishtraining is 3>>\n\t<<set $spellcrit to 0>>\n\t<<set $spellgrit to -30>>\n<<endif>>
<<display "Aesil_Prol">>You’re about to fight <<print $enemyname>>.\n\n<span id="ctrlClick">[[Continue|com_Aes_fake][$gamestart to 0]]</span>
<script>\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\n ga('create', 'UA-91155432-1', 'auto');\n ga('require', 'urlChangeTracker');\n ga('require', 'pageVisibilityTracker');\n ga('send', 'pageview');\n\n</script>\n<script async src='https://www.google-analytics.com/analytics.js'></script>\n<script async src='track/autotrack.js'></script>
<<nobr>>\n/% delete chapter flags %/\n<<unset $RipScene>>\n<<unset $HarlScene>>\n<<unset $FolsomScene>>\n<<unset $KingScene>>\n<<unset $stoneLoc>>\n<<endnobr>>
!!!Prologue End\n\n<<timed 1s t8n>><<if $gswordhave is 1>>Elesun found a greatsword and took it with her.<<run $choices.pickUp('tookWeapon-1')>><<unset $gswordhave>><<else>>Elesun didn't find anything useful<<endif>>\n\n<<next 1s t8n>><<if $ripFight is 1>>Elesun let Ripley fight her own battles.<<run $choices.pickUp('ripFight-1')>><<unset $ripFight>><<else>>Elesun protected Ripley from the enemy.<<endif>>\n\n<<next 1s t8n>><<if $helpServants is 1>>Elesun and Ripley tried to help the servants, but were too late.<<run $choices.pickUp('helpServants-1')>><<unset $helpServants>><<else>>Elesun and Ripley got to the king as fast as possible.<<endif>>\n\n<<next 1s t8n>><<if $comfortRip is 1>>Elesun did her best to comfort Ripley.<<run $choices.pickUp('comfortRip-1')>><<unset $comfortRip>><<else>>Elesun gave Ripley her space.<<endif>>\n\n<<next 1s t8n>>\s\n<<ctrlClick "Next Chapter" "difficulty_check">>\n<</timed>>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
/% IFID: 2E6EE76E-E31A-4AD3-B730-FFCC2FAA304D %/\n\n/% asset loaders %/\n<<display 'ASSET_LOADER'>>\n\n/% initialzie version %/\n<<display 'version'>>\n\n/% words %/\n<<set setup.words to {\n\tgrit : 'grit',\n\tmaxgrit : 'maximum grit',\n\tspells : 'charms',\n\tspell : 'charm'\n}>>\n\n/% external init %/\n<<display 'eqp-setup'>>\n<<display 'char-setup'>>\n<<display 'stats-setup'>>\n\n<<display 'engine-setup'>>\n\n/% variable declaration \n<<set $bugcode to "">>\n<<set $bugcodeVersion to "">>\n<<set $bugcodeSettings to "">>\n<<set $bugcodeStats to "">>\n<<set $bugcodeItems to "">>\n<<set $chartrue to "">>\n<<set $bugpassage to "">>\n\n<<set $item to ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]>>%/\n\n<<set $imageSize to "">>\n<<set $emote_subj to "">>\n\n<<set $gamestart to 0>>\n<<set $summon to 0>>\n<<set $return to "main menu">>\n<<set $exitpassage to "main menu">>\n\n<<set $mode to 1>>\n<<set $modeatk to 1.0>>\n<<set $modeNMEatk to 1.0>>\n\n<<set $song to 0>>\n<<set $storystage to 0>>\n<<set $chapter to 0>>\n<<set $day to 0>>\n\n<<set $anchor to 0>>\n\n<<display 'quest-setup'>>\n\n<<display "balanceObj">>\n<<display "bal-adjust">>\n\n<<set setup.xpreq to Math.trunc(setup.xpreq * setup.bal.xpNeed)>>\n\n<<display 'AudioInit'>>\n\n<<if setup.audioswitch is 0>>\n\t<<masteraudio mute>>\n<<endif>>\n\n<<display 'initHooksAndTitles'>>\n\n<<set $bossFight to false>>\n<<set $theme to ''>>\n<<set $hookPull to ''>>\n\n<<display 'vowInit'>>\n<<set $choices to new Inventory()>>
The soldier falls before Elesun.<<masteraudio stop>><<audio "oh" time 25 loop play>>\n\n//Elesun is no ordinary warrior. While levels do matter, her power relative to the power of her foes is a much better indication of how she'll fair in a fight.\n\nFurthermore, many of the more difficult encounters in the game will be hinted at long before they happen. Try to prepare yourself for every battle by selecting your best equipment and spells for a given fight.\n\nAlso, note that while stamina and grit will return between fights, health damage can only be cured by rest. Curing health damage through rest also has a chance to give Elesun new scars. Collecting a certain number of scars will increase Elesun's health permanently.//\n\n<span id="ctrlClick">[[Continue|prol3][$gamestart to 1]]</span>
The assassin falls at Elesun’s feet.\n<<masteraudio stop>><<audio "oh" time 25 loop play>><<image "RipSmKid">><<thumb>>\nShe turns to Ripley. “Are you all right?”\n\n“Yeah, I’m fine.”\n\n<span id="ctrlClick">[[Continue|0meetupwithRip][$gamestart to 1]]</span>
<<masteraudio stop>><<audio "oh" time 25 loop play>><<set $song to 0>><<image "RipSmKid">><<thumb>>The witch falls, and Elesun catches her breath. A moment later, Ripley comes tumbling down the muddied stone of the wall and lands flat on her back.\n\n"Everything okay?" she asks, climbing to her feet.\n\n"All good here. You?"\n\n"Eh," Ripley replies. "I've fallen farther."\n\n"Come on, let's get to the throne room."\n\n<span id="ctrlClick">[[Continue.|0kingsquarters][$gamestart to 1]]</span>
<<masteraudio stop>><<audio "oh" time 25 loop play>><<thumb>>The knight falls, and Elesun turns to head back to the throne room.\n\n<span id="ctrlClick">[[Continue.|0nearvillage][$gamestart to 1]]</span>
<<set $song to 0>><<masteraudio stop>><<audio "anticipation" loop play>><<thumb>>The witch falls, and Elesun catches her breath. She was definitely the one who destroyed the wall.\n\n[[Continue.|0nearvillage][$gamestart to 1]]
Head back to the Bailey?\n\n<<ctrlClick "Proceed." "1bailey" "leave">>
<<image "AesSm3">><<thumb>>Aesil shrieks in pain as <<name>>'s blows rain down on him. She follows up the onslaught with a kick, sending Aesil stumbling backward.\n<<print $QTEatk>>\n"Demonkin!" Aesil screams. "Die!"\n\nAesil extends his hand, and a shadowy black tendril shoots out from it.\n\n<<if $character is 'Ripley'>>Ripley crosses her arms in front of her and her bangles glow faintly. The dark tendril breaks apart when it meets her, turning to smoke and floating away harmlessly on the air. "You're a joke," Ripley says.<<else>>"Shit!" Elesun jumps to the side, but the tendril turns in middair to find her, and hits her, turning to smoke and washing over her. A weakness begins spreading through her body.\n\n"This spell will kill me," Elesun says. "It doesn't matter, though--you won't live to see me die."<<endif>>\n<<nobr>>\s\n<<if $QTEatk lte 22>>\n\t<<set $nmehealth -= 1>>\n<<elseif $QTEatk lte 35>>\n\t<<set $nmehealth -= 1>>\n\t<<set $nmegrit to Math.trunc( $nmegrit / 2 )>>\n<<else>>\n\t<<set $nmehealth -= 2>>\n\t<<set $bossPoints++>>\n<<endif>>\s\n<<endnobr>>\n<<ctrlCon 'highway1'>>\n
<<image "AesSm3">><<thumb>><<name>> tries to keep on the offensive. Aesil shifts and attempts to gain momentum, but she punches his face hard, cracking skull under her fist. <<if $character is 'Elesun'>>Elesun gasps, feeling her own bones shatter like glass, and when she pulls her hand away, her fingers are hanging by strands of skin and tendon. \n\n"Damn it," she curses. Her arm feels heavy, sluggish.<<else>>Aesil reels back, but fires another spell before Ripley can close in. She dispels it easily, but is forced back.<<endif>>\n\n"No!" Aesil shrieks. "No, no, no no no nonononononononono! I'm strong!" He jerks both hands forward toward <<name>>. In a circle around him, out to a radius of several feet, the grass turns brown as a mass of shadowy dark energy forms in his hands. "This will kill you! I will kill you!"\n\n"Come on!" <<name>> cries. "I am not afraid."\n\n[[Get Ready!|defend-bar]]\n<<set $nextBoss to 'Aes-boss-defend-2'>>\n<<nobr>>\s\n<<if $QTEatk lte 22>>\n\t<<set $nmehealth -= 1>>\n<<elseif $QTEatk lte 36>>\n\t<<set $nmehealth -= 2>>\n<<else>>\n\t<<set $nmehealth -= 2>>\n\t<<set $nmegrit to 1>>\n\t<<set $bossPoints++>>\n<<endif>>\s\n<<endnobr>>
<<image "AesSm3">><<thumb>>It takes Aesil several attempts to finally climb to his feet.\n\n"Let's end this," <<name>> says.\n\n<<if $QTEatk lt 23>>\s\n<<set $nmegrit to Math.trunc($nmegrit / 2)>>\s\n<<ctrlCon 'highway1'>>\n<<else>>\s\n<<set $nmegrit to 1>>\s\n<<set $nmehealth to 1>>\s\n<<button [[DESPERATION ATTACK|UltimateDespAtk-Aesil]]>><</button>>\n<<endif>>
//Holy Land// supports a number of keyboard shortcuts that can be used to quickly navigate the game screens.\n\n[img[setup.gen.controls]]\n\nOf all the keyboard commands, ''Ctrl'' is probably most worth getting to know. Use the control key to quickly activate links that are either the only link on the screen (such as "Continue") or appear in the information dock or pop-up.\n\n<pre>\n''Ctrl or Numpad 0''.....Continue/Select\n''E''....................Equipment Screen \n''C or Shift + Space''...Character Screen \n''A''....................Armor (Equip) \n''S''....................Charms (Equip) \n''W''....................Weapons (Equip) \n''J or Tab''.............Journal Screen \n''X or Shift + S''.......Settings \n''Z or Shift + Tab''.....Codex Menu \n''H''....................Help Menu \n''Q or Esc''.............Exit Menu/Dismiss Popup \n''F''....................Fullscreen Mode \n''M''....................Mute Sound\n''F''....................Dismiss Popup \n''Space''................Clears the information dock\n\nDuring Combat:\n''1 or Numpad 1''............Attack\n''2 or Numpad 2''............Defend\n''3 or Numpad 3''............Move\n''4 or Ctrl or Numpad . ''...End Turn\n''Ctrl or Numpad 0''.........Continue/Next Round</pre><<if $character is "Ripley">><pre>\n''Space''....................Transform</pre><<endif>>\n\n[[Back.|helpmenu]]\n\n[[Return to the Journal|journalmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>\n
<<nobr>><<set _RipChat1 to either(\n"I really did miss Folsom. It's good to have him around again. I feel like I can tell him anything.", \n"Irelith showed me a few new moves yesterday. I'll show you when we spar next.",\n"I missed the King and Harlaus. You're great company, Elesun, but I'm really glad we're all together again.",\n"I know it's wrong, but when I look down at the village now, I feel guilt. I know it's not my fault, but it just...it hurts.",\n"The King seems to be in a pretty foul mood these last few days. You haven't been too hard on him, have you?",\n"You look tired. You should rest up in your quarters. Don't push yourself too hard, okay?",\n"One of the masons that was working on the repairs <i>made</i> me a stone for my collection. He chiseled it into a perfect little heart-shape. Isn't that nice?"\n)>>\n<<endnobr>><<print '"' + _RipChat1 + '"'>>
/% 8 %/\n<<set $specialMult to 0.7>>/%damage of spell%/\n<<set $SpEffName to "Weighted">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,1)>>/%time adjustment%/\n\n<<set $NMESpMov to 0.9>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 2>>/%additional sta usage%/\n<<set $NMEStaLmt to 6>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Burden">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
"Elesun, wait," Ripley cries. "Please!"\n\nShe isn't budging from the storeroom door.\n\n<<ctrlClick "Drag her, if that's what it takes." "0towardthethrone" "leave">><<if $servants is 1>><<set $helpServants++>><<endif>>
Grants a massive boost to <<= setup.words.grit>> and <<= setup.words.grit>> regeneration and provides minor healing on defend actions.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_up]]|//Slight//|
\n!!!Weapons:\n|!Unarmed|Have|Rank: <<print $unarmedtraining>>|\n|!Longsword|Have|Rank: <<print $longswordtraining>>|\n|!Greatsword|<<if $gswordhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $greatswordtraining>>|\n|!Katana|<<if $katanahave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $katanatraining>>|\n|!Spear|<<if $spearhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $speartraining>>|\n|!Sidesword|<<if $sswordhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $sideswordtraining>>|\n|!Gauntlets|<<if $gauntletshave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $gauntletstraining>>|\n|!Scythe|<<if $scythehave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $scythetraining>>|\n|!Saber|<<if $saberhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $sabertraining>>|\n|!Battle Axe|<<if $axehave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $battleaxetraining>>|\n\n!!!Spells:\n|!Neutral|<<if $neutralhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $neutraltraining>>|\n|!Natural|<<if $naturalhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $naturaltraining>>|\n|!Light|<<if $lighthave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $lighttraining>>|\n|!Dark|<<if $darkhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $darktraining>>|\n|!Hellish|<<if $hellishhave is 1>>Have<<else>>Don't Have<<endif>>|Rank: <<print $hellishtraining>>|\n\n!!!Armor:\n|!Cloth|<<if $clothhave is 1>>Have<<else>>Don't Have<<endif>>|<<if $clothplus is 1>>Upgraded<<else>>Normal<<endif>>|\n|!Leather|<<if $leatherhave is 1>>Have<<else>>Don't Have<<endif>>|<<if $leatherplus is 1>>Upgraded<<else>>Normal<<endif>>|\n|!Chain|<<if $chainhave is 1>>Have<<else>>Don't Have<<endif>>|<<if $chainplus is 1>>Upgraded<<else>>Normal<<endif>>|\n|!Plate|<<if $platehave is 1>>Have<<else>>Don't Have<<endif>>|<<if $plateplus is 1>>Upgraded<<else>>Normal<<endif>>|\n\n!!!Other Items:\n*Bangles? <<if $bangles is 1>>Yes<<else>>No<<endif>>
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has reverted to her normal form, ending her transformation.\n\n<<name>>'s rage steadily depletes while she is in her transformed state. When her rage reaches 0%, she returns to her base form.\s\n<</dialog>>\n<<tutorialHook 'tut_onRevert'>>
The influence of powerful dark magic makes <<print $character>>'s flesh and bones weak and prone to injury. Sustained exposure to this dark magic could turn her into a puddle.\n\nMassive penalty to Move actions and Defense.
/% changes:\n\tcritcal attack are weaker but more common\n\tdesp atks far less effective\n\ttransformations take longer to achieve and are shorter\n\tenemies and the player both have less health\n\tenemies are more agressive and hit harder\n\tmore experience is earned\n\tRipley starts with additional bonuses in Chapter 2\n\t\t-bonus tp\n\t\t-freely unlocked gear\n\t\t-a special title\n%/\n<<display balanceObj>> /%reset%/\n<<set setup.bal.patk to 1.1>>\n<<set setup.bal.pdef to 1.0>>\n<<set setup.bal.pstagger to 0.8>>\n<<set setup.bal.eatk to 1.1>>\n<<set setup.bal.critOdds to 1.2>>\n<<set setup.bal.critical to 0.8>>\n<<set setup.bal.rageB to 0.8>>\n<<set setup.bal.rageD to 1.2>>\n<<set setup.bal.eatk to 1.1>>\n<<set setup.bal.edef to 1.0>>\n<<set setup.bal.egrit to 0.8>>\n<<set setup.bal.estagger to 1.0>> \n<<set setup.bal.ebossSt to 1.8>> \n<<set setup.bal.xpEarn to 1.1>>\n<<set setup.bal.espell to 1.0>>\n<<set setup.bal.desp to 0.5>>\n<<set setup.bal.agression to 2>>\n
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<span id="twoAct">[[2. Defend|0aesil4Rip][$gamestart to 1]]</span>: End turn and focus on defense.\n<span id="threeAct">[[3. Move|0aesil4Rip][$gamestart to 1]]</span>: End turn and try to get an advantage for next time.
<<set $allyname to "Ripley">>\n<<set $allynumber to 3>>\n\n<<set $allylvl to 10>>\n<<set $allymaxhealth to 3>>\n<<set $allymaxgrit to 205>>\n<<set $allyatk to 97>>\n<<set $allydef to 82>>\n<<set $allymov to 82>>\n<<set $allymagic to 74>>\n\n<<set $allyspecial to "chain">>\n<<set $specialname "Co-op Attack">>\n<<set $allyspec to 2>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>\n
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMkAAAAzCAYAAAA9zyx6AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAANuSURBVHhe7d27btpgGAbglyqp0iFSqzRzF5wBpTdAegMkS9Q76OKoE1mQegEZImUxUwVb1wxVhsbMlQpDZ8SAvXRs06odOlQiqmub3wfA+CMOKhjeR/qS3ydg8Kv/4KAUADhuEdEUD9RvIpqCISESMCREAoaESMCQEAkYEiIBQ0IkYEiIBAwJkYAhIRIwJEQChoRIwJAQCRgSIgFDQiTI+H2SbdSwhR2/PcB7/MJnv020eubQk2ziJXbd0Gyo7fkoGxYcx/HL1NXOmegw1XWOY7pbs8p6naBswApe1zJQVrspPzKGZIDvqhXYwSM8U22iVZIxJLe4US2iVZeLiXulEQyD4kOWMgwrtt+riXFZBY3wuBpC6WZ4vmWkD350M7g2quE1Ce+tyv8Isfdw2lUU/VejvMrf6laxinfujaqbbVTH775Kww3KsdrwtNBqqSY0lNz7u1zS1DZg9TqqNankzokaFbURU6y2U+dIlZoJs5ZwIeXWDCF5jHN3Yj5aT/BCHY1s4fXEecN6pc7IqnVSwEHdVluefUT3uo36Sd39qWiaG4fI1VWQkiL29t0r94Jk2eh3VVMw/v5ayX2h0Nj7j0g7RnkhhMRb6t1U7eyeznnl6066/fAmrRwbUbjsa1xO70iIQqkheYaH6lnIfQzw0Z3oL0ynB0s1oR3hKOhIrB7SMtI71VAoFPw6bMZ7IFo3KSHZwPM5TFl+4PeCHzQ2EY24iuEk2p5xrBU8r0man9B6SEnBLT7gBm8S6yc+qbMif/A24dyLRfYiSrc/OStIm7QPDR8utidWB2jd3L+ryIHO5fXY5FmetJeMGoLOY3LhgNbJHEMywBfVWjrxeYnPgtSR7HEOQsocQ7K5xH+W0sXIiMvuu3uIZpMxJLf4plqL0UUv7BqKqDZiT7Uta6zX8HRweR1LibCy5enHUuU98c82Nxn7bJRLmXuSr/irWoH/O9xqHh5gYppg13FweKU2RnWiVM20stU7vUD4sP5O+jjTTjJeS8vK+z5Jxtp2ath1zv3aSji+RKWbTsDUE46zWNMrcecKle5E8fCYjp54HouVXGuxBBxn18/QVG2iWfDfwREJ1q4nIborhoRIwJAQCRgSIgFDQiRgSIgEDAmRgCEhEjAkRAKGhEjAkBAJGBIiAUNCJGBIiAQMCVEq4B+ahuBYtOD6rwAAAABJRU5ErkJggg==
<<if $titles.has('Diplomat')>>\n\t<<if $dodgecheck gte $dodge and $weaponname eq 'Unarmed'>>\n\t\t<<set $dodgecheck to random(1, ($nmeacc - 10))>>\n\t<<endif>>\n<<endif>>
"What about Lady Ripley?"\n\n<span class='action-link'><<dock `'"Do you think she' + "'" + 's pretty?"'` '1HarlRip_pretty'>></span>\n<span class='action-link'><<dock `'"She' + "'" + 'd make a fine queen."'` '1HarlRip_queen'>></span>\n<span class='action-link'><<dock `'"She' + "'" + 's very fond of you."'` '1HarlRip_fond'>></span>
!!<<print "\su2699">> Settings\n<<button "Report Bug">>\n<<script>>\nDialog.setup("Bug Report");\nDialog.wiki(Story.get("bugr").processText());\nDialog.open();\n<</script>><</button>>    <<button "Patch Notes">>\n<<script>>\nDialog.setup("Version History");\nDialog.wiki(Story.get("Update History").processText());\nDialog.open();\n<</script>>\n<</button>>    <<display "fullscreen_toggler">>\n\n<<set $gamestart to 2>>Volume: <<volume>> <<display "muter">>\n\nDock Mode:\n<<display "docksettings">>\nInterface: (//Beta//)\n<<display "dockdisplay">>\n\n/%Load last auto-save on start up:\n<<display "autoload">>%/\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>\n\nHoly Land's IFID is: 2E6EE76E-E31A-4AD3-B730-FFCC2FAA304D\n\n''This is an unfinished build of the game.''\n\n\n
Strange, curved blade of a foreign land.\n\nThe weapon is lightwieght and sharp, but also fragile, making it unreliable for defense.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Moderate|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Very Low|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Moderate|\n*__Finesse__: Very High\n*__Stamina__: Moderate
<<display "kata_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "katn"]]\n[[No|weaponswap]]
Ripley is tough--not unbreakable, maybe, but tough as hell nonetheless.\n\nThis alone wouldn't break her. She'd get over it. And she'd get her revenge. Even when she's crying on the ground, Elesun can see her potential.
<<display "fshr_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "shroud"]]\n[[No|spellswap]]
<<image "AesPt3">><<set $gamestart to 2>>''Aesil''\n\nThe dark mage Aesil is something of an oddity. Though human, or at least formerly human, he has become nearly unkillable and unbelievably powerful since he has sworn loyalty to Akatosh. However, his mind and body seem damaged from their deal, leading some to speculate that his deal with Akatosh wasn't made willingly.\n\nAesil's power exceeds even that of the demonkin, and his mastery of magic puts him on even footing with even the most learned wizards.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<set $gamestart to 0>>\n<<set $xpearned to 100>>\n<<xp>>
<<timed 3s t8n>><<image "AesSm3">><<image "RipSmKid">><</timed>>Before Elesun can make a move, she hears something.\n<<timed 3s t8n>>\n"Bastard!" <<journallink "Ripley" "codex_Ripley">> screams, tearing out of the throne room toward Aesil. "You bastards aren't taking anyone else."\n\n"Ripley! Stay away!" Elesun cries. She rushes, but she won't beat Ripley to Aesil.\n\n<<journallink "Aesil" "codex_Aesil">> extends his hand and inky black tendrils erupt from the ground toward Ripley and engulf her, holding her in place and wrapping around her limbs and pulling them taught.\n\nElesun throws herself at Aesil, but is knocked back by a single swing of his arm.\n\n"Ripley!" she shouts as she clatters to the ground.\n\nRipley throws her head back and screams in rage. "Enough!" she shouts, and her bangles ignite with light. The dark magic holding her dissipates and she lands safely on the ground.\n\nAesil takes a step back.\n\n<<ctrlClick "Continue." "0aesil4Rip2">><</timed>>
<<set $weaponname to "Battle Axe">>\n<<set $weapon_ui to "baxe_ui">>\n\n<<set $watk to 1.6>>\n<<set $wdef to 0.9>>\n<<set $wmov to 0.8>>\n<<set $critrange to 105>>\n\n<<set $wStaUse to 9>>\n\n<<if $battleaxetraining is 1>>\n\t<<set $wdef to 1.0>>\n<<elseif $battleaxetraining is 2>>\n\t<<set $wdef to 1.0>>\n\t<<set $critrange to 100>>\n<<elseif $battleaxetraining is 3>>\n\t<<set $wdef to 1.0>>\n\t<<set $critrange to 100>>\n\t<<set $wmov to 0.9>>\n<<endif>>
!!!Would you like to change the combat difficulty level before moving on?\nYou will not be able to alter this setting again without restarting the game.\n\nYou <<if $mode is 0>>are currently playing in Story Mode, and have combat turned off<<else>>are currently playing in <<switch $mode>><<case 1>>Normal<<case 2>>Easy<<case 3>>Intense<</switch>> Mode<<endif>>.\n\n<<if $mode is 1>><<link "Stay in Normal Mode.">><<set $mode to 1>><<display "balanceObj">><<goto "double_check">><</link>>\n\n<<link "Change to Easy Mode.">><<set $mode to 2>><<display "easy-bal-adj">><<goto "double_check">><</link>>\n<<link "Change to Intense Mode.">><<set $mode to 3>><<display "hard-bal-adj">><<goto "double_check">><</link>>\n<<link "Turn combat off.">><<set $mode to 0>><<display "balanceObj">><<goto "double_check">><</link>><<elseif $mode is 0>><<link "Leave combat off.">><<set $mode to 0>><<display "balanceObj">><<goto "double_check">><</link>>\n\n<<link "Change to Normal Mode.">><<set $mode to 1>><<display 'balanceObj'>><<goto "double_check">><</link>>\n<<link "Change to Easy Mode.">><<set $mode to 2>><<display "easy-bal-adj">><<goto "double_check">><</link>>\n<<link "Change to Intense Mode.">><<set $mode to 3>><<display "hard-bal-adj">><<goto "double_check">><</link>><<elseif $mode is 2>><<link "Stay in Easy Mode.">><<set $mode to 2>><<display "easy-bal-adj">><<goto "double_check">><</link>>\n\n<<link "Change to Normal Mode.">><<set $mode to 1>><<display "balanceObj">><<goto "double_check">><</link>>\n<<link "Change to Intense Mode.">><<set $mode to 3>><<display "hard-bal-adj">><<goto "double_check">><</link>>\n<<link "Turn combat off.">><<set $mode to 0>><<display "balanceObj">><<goto "double_check">><</link>><<else>><<link "Stay in Intense Mode.">><<set $mode to 3>><<display 'hard-bal-adj'>><<goto 'double_check'>><</link>>\n\n<<link "Change to Normal Mode.">><<set $mode to 1>><<display 'balanceObj'>><<goto "double_check">><</link>>\n<<link "Change to Easy Mode.">><<set $mode to 2>><<display "easy-bal-adj">><<goto "double_check">><</link>>\n<<link "Turn combat off.">><<set $mode to 0>><<display "balanceObj">><<goto "double_check">><</link>><<endif>>\n\n<<button "About Difficulty Levels">><<popup "diff_expl">><</button>>
<<set $rageStock to 0>>\n<<if $rageCurrent lte 10>>\n <<set $rageStock to $rageCurrent>>\n<<elseif $rageCurrent lte 25>>\n <<set $rageStock to $rageCurrent - 5>>\n<<elseif $rageCurrent lte 50>>\n <<set $rageStock to 15 + Math.trunc($rageCurrent+0.5)>>\n<<elseif $rageCurrent lte 100>>\n <<set $rageStock to 30 + Math.trunc($rageCurrent+0.5)>>\n<<elseif $rageCurrent lte 150>>\n <<set $rageStock to 80 + Math.trunc($rageCurrent+0.5)>>\n<<elseif $rageCurrent lte 200>>\n <<set $rageStock to 120 + Math.trunc($rageCurrent+0.5)>>\n<<else>>\n <<set $rageStock to 0>>\n <<script>>UI.alert("Rage meter broke!!!!")<</script>>\n<<endif>>
Devil Form increase stat base by a significant margin (25-30 initially, 25-50 later.)\n\nDevil Form has penalties:\n*can't perform crits.\n*can't perform desperation attacks.\n*lowers dispel and dodge.\n*prevents all regen.\n*halves healing.
Summonable, end game.\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 20>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
Go back to the main hall?\n\n<<ctrlClick 'Go.' '1mainhall' 'leave'>>
<<display "prot_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "prot"]]\n[[No|spellswap]]
System deprecated.
<span id="gone">Elesun walks down the steps. Every step, the smell grows stronger. Ripley stops partway down in a fit of gagging. \n\nElesun arrives at the bottom of the steps. It's hard to see. The floor is wet.\n\n<<timed 2s t8n>><span id="ctrlClick"><<link "Wait for Ripley.">><<append "#gone">><<display "0aesWait">><</append>><</link>></span><</timed>>\n\n</span>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<image "AesSm3">><<image "RipSmKid">>Ripley manages to dispel his magic--her bangles gleam with light.\n\nElesun jumps to her feet and charges to her side.\n\n"Go! Get out of here!" she cries.\n\n"We can beat him together," Ripley says.\n\n[[Grab Ripley and run.|0aesRun][$ripleytp++]]\n\n[[Stand and fight.|0aesFight][$ripleyscars++]]
<<image "AesPt3">>That's not a face you forget. Last time they met, Elesun was forced to run. She'd love to kill him though, if it was even possible.\n\n<<journallink "Aesil" "codex_Aesil">> shrieks, and with a gesture, knocks Elesun across the room with a burst of magical force.\n\n<<journallink "Ripley" "codex_Ripley">> shouts, and Elesun can hear a struggle starting as she crashes into the far wall and falls face first onto the bloody floor.\n\n<<ctrlClick "Get up." "0aesil3">>
<<set $hearts to ($maxhealth*10)+$health>>\n\n<<if $hearts is 33>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['3of3'])>>\n<<elseif $hearts is 32>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['2of3'])>>\n<<elseif $hearts is 31>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['1of3'])>>\n<<elseif $hearts is 30>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['0of3'])>>\n\n<<elseif $hearts is 44>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['4of4'])>>\n<<elseif $hearts is 43>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['3of4'])>>\n<<elseif $hearts is 42>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['2of4'])>>\n<<elseif $hearts is 41>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['1of4'])>>\n<<elseif $hearts is 40>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['0of4'])>>\n\n<<elseif $hearts is 55>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['5of5'])>>\n<<elseif $hearts is 54>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['4of5'])>>\n<<elseif $hearts is 53>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['3of5'])>>\n<<elseif $hearts is 52>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['2of5'])>>\n<<elseif $hearts is 51>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['1of5'])>>\n<<elseif $hearts is 50>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['0of5'])>>\n\n<<elseif $hearts is 66>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['6of6'])>>\n<<elseif $hearts is 65>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['5of6'])>>\n<<elseif $hearts is 64>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['4of6'])>>\n<<elseif $hearts is 63>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['3of6'])>>\n<<elseif $hearts is 62>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['2of6'])>>\n<<elseif $hearts is 61>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['1of6'])>>\n<<elseif $hearts is 60>>\n\t<<set $heartdisplay to clone(setup.ui.hearts['0of6'])>>\n\n<<endif>>\n
<<image "AesSm3">><<thumb>><<if $helpServants is 0>>Aesil is a master of dark magic, consumed by his lust for murder, and loyal only to <<journallink "Akatosh" "codex_Akatosh">>. Elesun had faced him once or twice before. She knows she can't kill him, but she might be able to hold him off.<<else>>Elesun knows she can't kill Aesil, but she only needs to hold him off.<<endif>>\n\n<<journallink "Aesil" "codex_Aesil">> climbs to his feet, and upon seeing Elesun, his eyes grow wide and his mouth contorts into a grin too big for his face. "Demonkin!" he shrieks.\n\n"All right," Elesun says to herself. "I can do this."\n\n<<ctrlClick "Stay alive." "fake_comcall_0">>
!History\n\n<span id="codexhis">Description of History</span>\n\n<<link "The Founding of Juno">>\n\t<<replace "#codexhis">>Juno history<</replace>>\n<</link>>\n<<link "The First Druids">>\n\t<<replace "#codexhis">>Druid history<</replace>>\n<</link>>\n<<link "The Endless Cycle">>\n\t<<replace "#codexhis">>The history of the demonkin<</replace>>\n<</link>>\n<<link "The Vampire Lord">>\n\t<<replace "#codexhis">>Vampire history<</replace>>\n<</link>>\n<<link "The Dragon Pacts">>\n\t<<replace "#codexhis">>Dragon/human history<</replace>>\n<</link>>\n<<link "The Elysian Affair">>\n\t<<replace "#codexhis">>Past Elysian incidents<</replace>>\n<</link>>\n<<link "The Valnese Revolution">>\n\t<<replace "#codexhis">>Valne history<</replace>>\n<</link>>\n<<link "The Fall of the North">>\n\t<<replace "#codexhis">>Norther history<</replace>>\n<</link>>\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<link "Anticipation">><<masteraudio stop>><<audio "anticipation" loop play>><</link>>\n\n<<link "Snowfall">><<masteraudio stop>><<audio "snowfall" loop play>><</link>>\n\n<<link "Expressions of the Mind">><<masteraudio stop>><<audio "expressions-of-the-mind" loop play>><</link>>\n\n<<link "Aesil's Theme">><<masteraudio stop>><<audio "herat7" loop play>><</link>>\n\n<<link "It's Like Her Eyes Are on Fire">><<masteraudio stop>><<audio "eyes-fire" loop play>><</link>>\n\n<<link "There's Nothing Left for You Here">><<masteraudio stop>><<audio "nothing-left" loop play>><</link>>\n\n\n[[Sounds|effecttester]]\n\n[[Back|debug_features]]\n\n\n<<link "Battle Theme 1">><<masteraudio stop>><<audio "battle1" loop play>><</link>>\n\n<<link "Battle Theme 2">><<masteraudio stop>><<audio "battle2" loop play>><</link>>\n\n<<link "Battle Theme 3">><<masteraudio stop>><<audio "battle3" loop play>><</link>>\n\n<<link "Battle Theme 4">><<masteraudio stop>><<audio "battle4" loop play>><</link>>\n\n<<link "Battle Theme 5">><<masteraudio stop>><<audio "battle5" loop play>><</link>>\n\n<<link "Battle Theme 6">><<masteraudio stop>><<audio "battle6" loop play>><</link>>\n\n<<link "Battle Theme 7">><<masteraudio stop>><<audio "battle7" loop play>><</link>>\n\n<<link "Battle Theme 8">><<masteraudio stop>><<audio "battle8" loop play>><</link>>\n\n<<link "Battle Theme 9">><<masteraudio stop>><<audio "battle9" loop play>><</link>>\n\n\n[[Sounds|effecttester]]\n\n[[Back|debug_features]]\n\n\n<<link "alhambra">><<masteraudio stop>><<audio "alhambra" loop play>><</link>>\n\n<<link "another">><<masteraudio stop>><<audio "another" loop play>><</link>>\n\n<<link "asked">><<masteraudio stop>><<audio "asked" loop play>><</link>>\n\n<<link "breath">><<masteraudio stop>><<audio "breath" loop play>><</link>>\n\n<<link "cell">><<masteraudio stop>><<audio "cell" loop play>><</link>>\n\n<<link "cibelle">><<masteraudio stop>><<audio "cibelle" loop play>><</link>>\n\n<<link "desperate">><<masteraudio stop>><<audio "desperate" loop play>><</link>>\n\n<<link "dope">><<masteraudio stop>><<audio "dope" loop play>><</link>>\n\n<<link "dunno">><<masteraudio stop>><<audio "dunno" loop play>><</link>>\n\n<<link "escape">><<masteraudio stop>><<audio "escape" loop play>><</link>>\n\n\n[[Sounds|effecttester]]\n\n[[Back|debug_features]]\n\n\n<<link "milan">><<masteraudio stop>><<audio "milan" loop play>><</link>>\n\n<<link "mx">><<masteraudio stop>><<audio "mx" loop play>><</link>>\n\n<<link "oh">><<masteraudio stop>><<audio "oh" loop play>><</link>>\n\n<<link "ophelia">><<masteraudio stop>><<audio "ophelia" loop play>><</link>>\n\n<<link "red">><<masteraudio stop>><<audio "red" loop play>><</link>>\n\n<<link "rhodes">><<masteraudio stop>><<audio "rhodes" loop play>><</link>>\n\n<<link "sleeping">><<masteraudio stop>><<audio "sleeping" loop play>><</link>>\n\n<<link "slow">><<masteraudio stop>><<audio "slow" loop play>><</link>>\n\n<<link "space">><<masteraudio stop>><<audio "space" loop play>><</link>>\n\n<<link "spin">><<masteraudio stop>><<audio "spin" loop play>><</link>>\n\n\n[[Sounds|effecttester]]\n\n[[Back|debug_features]]\n\n\n<<link "stand">><<masteraudio stop>><<audio "stand" loop play>><</link>>\n\n<<link "summer">><<masteraudio stop>><<audio "summer" loop play>><</link>>\n\n<<link "un">><<masteraudio stop>><<audio "un" loop play>><</link>>\n\n<<link "what">><<masteraudio stop>><<audio "what" loop play>><</link>>\n\n<<link "you">><<masteraudio stop>><<audio "you" loop play>><</link>>\n\n<<link "wa">><<masteraudio stop>><<audio "wa" loop play>><</link>>\n\n\n[[Sounds|effecttester]]\n\n[[Back|debug_features]]\n\n\n
Deprecated in favor of more depth for Arkan.
<<display "spr_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "spear"]]\n[[No|weaponswap]]
Protect grants small bonuses to dodge, dispel, <<= setup.words.grit>>, and defense at no cost.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
\n/*\n<<linkkey>> macro\n\nusage:\n<<linkkey 'link text' 'linkkey id' (optional: keyword)>>...<</message>>\n\n\nex. <<linkkey 'Click me' 'oneAct'>>...<</linkkey>>\nex. <<linkkey 'Clickity click' 'aKeyAct' app>>...<</linkey>>\n\nLINK TEXT: The text of the link.\n\nLINKKEY ID: ID associated with an event handler to fire the link.\n\nKEYWORD: One of the following:\n\t* btn : renders as a button\n * pre : prepend\n * rpl : replace\n * app : append\n * defaults to an ordinary link\n\nNOTE: Cannot accept a target-passage argument--use <<goto>>!\n*/\nMacro.add('linkkey', {\n\t tags : null,\n\thandler : function () {\n\t\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar $content = $(document.createElement('span'));\n\t\tvar link = 'link';\n\t\tvar content = this.payload[0].contents;\n\t\t\n\t\tif (this.args.length < 2 || this.args.length > 3) {\n\t\t\treturn this.error('must be 2 or 3 arguments');\n\t\t} else {\n\t\t\tvar text = this.args[0];\n\t\t\tvar key = this.args[1];\n\t\t}\n\n\t\tif (this.args.length === 3) {\n\t\t\tif (this.args.includes('btn')) {\n\t\t\t\tlink = 'button';\n\t\t\t} else if (this.args.includes('rpl')) {\n\t\t\t\tlink = 'linkreplace';\n\t\t\t} else if (this.args.includes('app')) {\n\t\t\t\tlink = 'linkappend';\n\t\t\t} else if (this.args.includes('pre')) {\n\t\t\t\tlink = 'linkprepend';\n\t\t\t} else {\n\t\t\t\tlink = 'link';\n\t\t\t}\n\t\t}\n\t\t\n\t\t$wrapper\n\t\t\t.wiki('<<' + link + ' "' + text + '">>' + content + '<</' + link + '>>')\n\t\t\t.attr('id', key)\n\t\t\t.appendTo(this.output);\n\t\t}\n});
Ripley doesn’t wear shoes often. The druids believe that their connection to the earth grants them spiritual power, and only wear shoes when absolutely necessary.\n\nThere was something to it. Elesun heard tell of druid oracles who could sense the location of others across respectable distances by feeling the ground. That said, for Ripley it was just a cultural thing.
<<set $enemyname to "Wandering Knight">>\n<<set $enemynumber to 2>>\n<<set $enemypower to 187>>\n<<set $enemyimg to setup.nme['NME_knight']>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 160>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 3>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 44>>\n<<set $nmedef to 45>>\n<<set $nmemov to 42>>\n<<set $nmemagic to 30>>\n\n<<set $enemyspecialname to "heal">>\n<<set $enemyspecial to 10>>\n\n<<set $nmecritchance to 7>>\n<<set $nmecritdam to 1.6>>\n<<set $nmespellpower to 60>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 4>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 2>>\n\n<<set $nmexp to 45>>\n\n<<display "bal-adj-nme">>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<if $nmehealth lte 9 and $phase is 0>>\n\t<<set $QTEatk to 0>>\n\t<<set $phase to 1>>\n\t<<set $sta to $maxsta - $NMEStaLmt>>\n\t<<goto 'Aesil-phase-shift-1'>>\n<<elseif $nmehealth lte 6 and $phase is 1>>\n\t<<set $QTEatk to 0>>\n\t<<set $phase to 2>>\n\t<<set $sta to $maxsta - $NMEStaLmt>>\n\t<<goto 'Aesil-phase-shift-2'>>\n<<elseif $nmehealth lte 2 and $phase is 2>>\n\t<<set $QTEatk to 0>>\n\t<<set $phase to 3>>\n\t<<set $sta to $maxsta - $NMEStaLmt>>\n\t<<goto 'Aesil-phase-shift-3'>>\n<<elseif $nmehealth lte 1 and $bossPoints is 6 and $phase is 3>>\n\t/% special fight ending if QTEs were perfect %/\n\t<<goto 'Aesil-phase-shift-4'>>\n<<endif>>
<<set $NMEtruegrit to Math.trunc(($nmegrit/$nmemaxgrit)*100)>>\n\n<<if $NMEtruegrit lt 5>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['0grit'])>>\n<<elseif $NMEtruegrit lt 10>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['5grit'])>>\n<<elseif $NMEtruegrit lt 15>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['10grit'])>>\n<<elseif $NMEtruegrit lt 20>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['15grit'])>>\n<<elseif $NMEtruegrit lt 25>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['20grit'])>>\n<<elseif $NMEtruegrit lt 30>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['25grit'])>>\n<<elseif $NMEtruegrit lt 35>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['30grit'])>>\n<<elseif $NMEtruegrit lt 40>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['35grit'])>>\n<<elseif $NMEtruegrit lt 45>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['40grit'])>>\n<<elseif $NMEtruegrit lt 50>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['45grit'])>>\n<<elseif $NMEtruegrit lt 55>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['50grit'])>>\n<<elseif $NMEtruegrit lt 60>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['55grit'])>>\n<<elseif $NMEtruegrit lt 65>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['60grit'])>>\n<<elseif $NMEtruegrit lt 70>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['65grit'])>>\n<<elseif $NMEtruegrit lt 75>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['70grit'])>>\n<<elseif $NMEtruegrit lt 80>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['75grit'])>>\n<<elseif $NMEtruegrit lt 85>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['80grit'])>>\n<<elseif $NMEtruegrit lt 90>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['85grit'])>>\n<<elseif $NMEtruegrit lt 95>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['90grit'])>>\n<<elseif $NMEtruegrit lt 100>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['95grit'])>>\n<<else>>\n\t<<set $NMEgritdisplay to clone(setup.ui.grit['100grit'])>>\n<<endif>>\n\n\n\n
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has just scored a critical hit!\n\nWith every attack she launches, <<name>> has a chance of scoring a critical hit. Critical hits deal much higher damage than normal. The odds of scoring a critical hit and the damage they deal are influenced by Agility and Cunning and the currently equipped weapon.\n\nGenerally, lighter and faster weapons have a higher chance of scoring a critical, and allow more attacks per turn, further increasing the odds.\s\n<</dialog>>\n<<tutorialHook 'tut_onCrit'>>
<<if setup.masteraudioswitch is 1>>\n\n\t<<link "\su00a0\su00a0\su00a0\su2669\su00a0\su00a0\su00a0\s Mute Sound">>\n\n\t\t<<if setup.audioswitch is 1>>\n\t\t\t<<masteraudio mute>>\n\t\t\t<<set setup.audioswitch to 0>>\n\n\t\t<<else>>\n\t\t\t<<masteraudio unmute>>\n\t\t\t<<set setup.audioswitch to 1>>\n\n\t\t<<endif>>\n\t<</link>>\n<<endif>>
A suit of chain armor. <<if $clothplus is 1>>Or so it seems. Though this armor may not seem like much, it's been forged by the legendary blacksmiths of the Elysian realm, and should not be underestimated.<<endif>>\n\nChain armor is heavy and awkward, but provides excellent defense.\n\n|[img[setup.ui.icons.ui_def]]|Defense Bonus:|Moderate|\n|[img[setup.ui.icons.ui_mov]]|Encumberance:|Moderate|
\n\n\n\n\n<center><div class="battle-bar"><span class="w2"></span></div>\n\n<div class="time-btn def-bar"><span id="timedpress"><<button "Wait!">><<audio "hurt2" play>><<set $def_success to false>><<goto $nextBoss>><</button>></span></div>\n<<timed 500ms>>\n<<replace "#timedpress">><<button "Block!">><<audio "defend" play>><<set $def_success to true>><<goto $nextBoss>><</button>><</replace>>\n<<next 500ms>>\n<<replace "#timedpress">><<button "Wait!">><<audio "hurt1" play>><<set $def_success to false>><<goto $nextBoss>><</button>><</replace>>\n<<next 500ms>>\n<<audio "hurt3" play>><<goto $nextBoss>>\n<</timed>></center>
A sturdy spear with an elongated tip for sweeping.\n\nThe range of the spear makes it easy to keep enemies back, but it's length can also make it awkward to wield.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Moderate|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Very High|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Very Low|\n*__Finesse__: Moderate\n*__Stamina__: Moderate
<<set $storystage to 2>><<set $xpearned to $xpearned + 70>><<set $exitpassage to "prol4">>\n<<image "RipSmKid">><<thumb>>\n'How are things going out there?" Ripley asks.\n\n"Everything is going to be fine. We need to regroup with Irelith and help protect the king."\n\n"We could go over the walls, it might be faster."\n\n"Good idea, let’s go."\n\n//You earned enough experience to level up.//\n\n<<message>><<display "helplevelup">><</message>>\n\n<<ctrlClick "Level up." "tallyxp">>\n\n<<set $helpthestaff to 0>>\n<<notifyJournal>>
<<image "FolsomPt">>Elesun approaches Folsom.\n\n"Hello Elesun."\n\n<<dock "Chit-chat." "FolsomChat1">>\n\n<<dock "How are you holding up?" "1FolsomHow">>\n\n<<dock "Goodbye." "1FolsomNVM">>\n\n<<info>>\n\n\n\n\n
<div id="titleContainer"><span id="titlecard">[img[setup.gen.titlecard]]</span></div>\n\n\n<<ctrlClick "Continue" "main menu">>\n\n<<tipster>>\n<<masteraudio stop>><<audio 'space' loop play>>\n<<nobr>>\n/%<<display 'splash-screen'>>%/\n/% cache images %/\n<<script>>(function () {\n\tvar sources = [], img = [], icn = [], grit = [], rage = [], hearts = [],\n\t\tdocFrag = document.createDocumentFragment(),\n\t\timgBox = document.createElement("div");\n\t\t\n\timg = $.map(setup.img, function(value, index) {\n\t\treturn [value];\n\t});\n\ticn = $.map(setup.ui.icons, function(value, index) {\n\t\treturn [value];\n\t});\n\tgrit = $.map(setup.ui.grit, function(value, index) {\n\t\treturn [value];\n\t});\n\trage = $.map(setup.ui.rage, function(value, index) {\n\t\treturn [value];\n\t});\n\thearts = $.map(setup.ui.hearts, function(value, index) {\n\t\treturn [value];\n\t});\n\tsources = sources.concat(img, icn, grit, rage, hearts);\n\t\n\t\n\timgBox.id = "imgloader-box";\n\tdocFrag.appendChild(imgBox);\n\tsources.forEach(function (src) {\n\t\tvar image = document.createElement("img");\n\t\timage.src = src;\n\t\timgBox.appendChild(image);\n\t});\n\tdocument.body.appendChild(docFrag);\n}());\n\n/*$(document).one(':audiofullyloaded', function () {\n\t$('#splash-title').fadeOut(500);\n\t$('#splash').delay(250).fadeOut(1000);\n});*/\n<</script>>\n/%<<timed 6s>>\n\t<<run $('#splash-title').fadeOut(500);>>\n\t<<run $('#splash').delay(250).fadeOut(1000);>>\n<</timed>>%/\n<<endnobr>>
<<if $dockdisp is -1>>* <label><<radiobutton "$dockdisp" -1 checked>> Mixed: Dock links that provide information are shown in the dock at the bottom of the screen. Dock links that include further links to click are rendered as "pop ups."</label>\n* <label><<radiobutton "$dockdisp" 1>> Dock Only: The contents of all dock links appear in the dock at the bottom of the screen. Default.</label>\n* <label><<radiobutton "$dockdisp" 0>> Pop Up Only: All dock links open a pop-up style window on the screen when a link is clicked and the dock is completely removed.</label><<elseif $dockdisp is 1>>* <label><<radiobutton "$dockdisp" -1>> Mixed: Dock links that provide information are shown in the dock at the bottom of the screen. Dock links that include links are rendered as "pop ups."</label>\n* <label><<radiobutton "$dockdisp" 1 checked>> Dock Only: The contents of all dock links appear in the dock at the bottom of the screen. Default.</label>\n* <label><<radiobutton "$dockdisp" 0>> Pop Up Only: All dock links open a pop-up style window on the screen when a link is clicked and the dock is completely removed.</label><<elseif $dockdisp is 0>>* <label><<radiobutton "$dockdisp" -1>> Mixed: Dock links that provide information are shown in the dock at the bottom of the screen. Dock links that include links are rendered as "pop ups."</label>\n* <label><<radiobutton "$dockdisp" 1>> Dock Only: The contents of all dock links appear in the dock at the bottom of the screen. Default.</label>\n* <label><<radiobutton "$dockdisp" 0 checked>> Pop Up Only: All dock links open a pop-up style window on the screen when a link is clicked and the dock is completely removed.</label><<endif>>
"I'm ready," Ripley says. "Let's go."
!Chapter 1: Broken Promises<<portrait>>\nSeptember 13, 1101:<<set $chapter to 1>><<set $storystage to 0>> ''Three months later.''\n<<if visited() is 1>><<masteraudio stop>><<audio "cibelle" loop play>><<set $song to 1>><<endif>>\nThings aren't as dire as they could be, and Elesun knows it. Every day that passes without word of <<journallink "Akatosh" "codex_Akatosh">> is worrying--but no news is good news. The siege hit the castle hard. It Ripley hard. But <<journallink "Prince Harlaus" "codex_Harlaus">> arrived at the castle last month, and his presence is a calm sea after a storm; even after all the funerals, Ripley still manages to smile when he's near.\n\nShe'll be okay. <<journallink "Elesun" "codex_Elesun">> beleives that, she forces herself to believe it. Still...\n\nThere's a darkness forming in Ripley--a rage and anger that Elesun had never known her to have. It wasn't obvious--indeed, no one else seemed to notice. But Elesun saw it. She could see it when <<journallink "Ripley" "codex_Ripley">> would fall silent, set her jaw, and stare off in to the distance. Every once in a while, Ripley would doze off like that, and though Elesun couldn't guess what she was thinking about, but she could see the thoughts pass over her face like shadows chasing light.<<if $mode is 3>>\n\n//Intense Mode bonuses added.//\n\n<<message 'About Intense Mode'>>In Intense Mode, the player and enemies both have less health across the board, critical hits occur more frequently but deal less damage, deperation attacks and transformations are weaker, and enemies are more aggressive.\n\nIn exchange, you gain more experience and start the game with extra training points and equipment, among a few other bonuses.<</message>><<set $tp += 9, $gauntletshave to 1, $axehave to 1, $spearhave to 1, $darkhave to 1, $lighthave to 1, $chainhave to 1>><<endif>>\n\n<<ctrlClick "Start." "ch1-1">>\s\n<<nobr>>\n/% init chapter flags %/\n<<set $RipScene to 0>>\n<<set $HarlScene to 0>>\n<<set $FolsomScene to 0>>\n<<set $KingScene to 0>>\n<<endnobr>>
The <<action "courtyard" "1cyInspect">> is pristine as always. A pair of <<dock "guards" "1cyGuards">> are standing in the far corner talking near the <<action "well" "1cyWell">>.\n\nThe bailey is just through the <<action "gate" "1cyGate">>.\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<print $character>> is capable of using bound magic, and the <<= setup.words.spell>> you select provides various passive bonuses and unique effects, occasionally offset by penalties.
/*try { \n version.extensions['decoderMacro'] = { \n major:1, minor:1, revision:2 \n };\n\tmacros['decoder'] = {\n\t\thandler: function(place, macroName, params, parser) {\n\t\t\tvar bcode, vn1, vn2, vn3,loc,itemcode;\n\t\t\tbcode = State.variables.bugcode;\n\t\t\tState.variables.chapter = bcode.charAt(6);\n\t\t\tvn1 = bcode.charAt(0);\n\t\t\tvn2 = bcode.charAt(2);\n\t\t\tvn3 = bcode.charAt(4);\n\t\t\tState.variables.versionnumber = vn1+"."+vn2+"."+vn3;\n\t\t\tState.variables.storystage = bcode.charAt(8);\n\t\t\tState.variables.dockmode = bcode.charAt(10);\n\t\t\tState.variables.mobile = bcode.charAt(11);\n\t\t\tState.variables.combatimages = bcode.charAt(12);\n\t\t\tState.variables.audioswitch = bcode.charAt(13);\n\t\t\tState.variables.masteraudioswitch = bcode.charAt(14);\n\t\t\tState.variables.demomode = bcode.charAt(15);\n\t\t\tState.variables.debug = bcode.charAt(16);\n\t\t\tState.variables.lvl = bcode.charAt(18) + bcode.charAt(19);\n\t\t\tState.variables.xp = bcode.charAt(21) + bcode.charAt(22) + bcode.charAt(23);\n\t\t\tState.variables.tp = bcode.charAt(25) + bcode.charAt(26) + bcode.charAt(27) + bcode.charAt(28);\n\t\t\tState.variables.scars = bcode.charAt(30) + bcode.charAt(31);\n\t\t\tState.variables.chartrue = bcode.charAt(33);\n\t\t\tState.variables.strrank = bcode.charAt(37) + bcode.charAt(38);\n\t\t\tState.variables.agirank = bcode.charAt(39) + bcode.charAt(40);\n\t\t\tState.variables.endrank = bcode.charAt(41) + bcode.charAt(42);\n\t\t\tState.variables.wilrank = bcode.charAt(43) + bcode.charAt(44);\n\t\t\tState.variables.cngrank = bcode.charAt(45) + bcode.charAt(46);\n\t\t\tState.variables.statbase = bcode.charAt(47) + bcode.charAt(48);\n\t\t\tloc = bcode.split(":");\n\t\t\tState.variables.bugcodeVersion = loc[0];\n\t\t\tState.variables.bugcodeSettings = loc[1];\n\t\t\tState.variables.bugcodeStats = loc[2];\n\t\t\tState.variables.bugcodeItems = loc[3];\n\t\t\titemcode = loc[3];\n\t\t\tState.variables.item[0] = itemcode.charAt(0);\n\t\t\tState.variables.item[1] = itemcode.charAt(2);\n\t\t\tState.variables.item[2] = itemcode.charAt(4);\n\t\t\tState.variables.item[3] = itemcode.charAt(6);\n\t\t\tState.variables.item[4] = itemcode.charAt(8);\n\t\t\tState.variables.item[5] = itemcode.charAt(10);\n\t\t\tState.variables.item[6] = itemcode.charAt(12);\n\t\t\tState.variables.item[7] = itemcode.charAt(14);\n\t\t\tState.variables.item[8] = itemcode.charAt(16);\n\t\t\tState.variables.item[9] = itemcode.charAt(18);\n\t\t\tState.variables.item[10] = itemcode.charAt(20);\n\t\t\tState.variables.item[11] = itemcode.charAt(22);\n\t\t\tState.variables.item[12] = itemcode.charAt(24);\n\t\t\tState.variables.item[13] = itemcode.charAt(26);\n\t\t\tState.variables.item[14] = itemcode.charAt(28);\n\t\t\tState.variables.item[15] = itemcode.charAt(30);\n\t\t\tState.variables.item[16] = itemcode.charAt(32);\n\t\t\tState.variables.item[17] = itemcode.charAt(34);\n\t\t\tState.variables.item[18] = itemcode.charAt(36);\n\t\t\tState.variables.item[19] = itemcode.charAt(38);\n\t\t\tState.variables.bugpassage = loc[4];\n\t\t},\n\t};\n} catch(e) {\n\tthrowError(place, "decoder error "+e.message);\n}*/
''Movement''\n\nThe "move" action ends your turn and grants a bonus to attacks on the following turn. The magnitude of the bonus depends, in part, on how much stamina is remaining when you select the option. You current Move Rating is <<print $mov>>.\n\nYour defense will lower slightly until your next turn when you take a move action.\n
#journal-menu-buttons button {\n\twidth: 40%;\n}
<<if $titles.has('True Neutral')>>\n\t<<set _dam to random(1, 25)>>\n\t<<set _dam to Math.trunc(($power / 4) - _dam)>>\n\t<<set $NMEgrit to Math.trunc($NMEgrit - _dam)>>\n<<endif>>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
Rage grants bonuses to attack, critical attack chance, and critical attack damage in exchange for a small penalty to <<= setup.words.grit>>.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Moderate//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_down]]|//Slight//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_down]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
// simple-inventory.js, by chapel; for sugarcube 2\n// version 2.1.0\n\n// namespace\nsetup.simpleInv = {};\n\n// options\nsetup.simpleInv.options = {\n\ttryGlobal : true, // send constructor to global scope\n\tdefaultStrings : {\n\t\tempty : 'The inventory is empty...',\n\t\tlistDrop : 'Discard',\n\t\tseparator : '\sn'\n\t}\n};\n\n// events\nsetup.simpleInv.attachEvent = function (inv, loc, items, cont) {\n\t$(document).trigger({\n\t\ttype : (cont === 'initialized') ? ':inventory-init' : ':inventory-update', // the event name\n\t\tinstance : inv, // the calling instance; the giver in transfers\n\t\treceiving : loc, // the inventory recieving transfers, or null\n\t\tmoved : items, // the items moved to or from the calling inventory, or null\n\t\tcontext : cont // drop, pickup, transfer, or initialized\n\t});\n};\n\n// the invetory constructor\nsetup.simpleInv.inventory = function (array) {\n\t"use strict"; // prevent leaks to global scope\n\t\n\tif (array) {\n\t\t// some number of arguments were passed\n\t\tarray = [].slice.call(arguments);\n\t\tarray = array.flatten();\n\t} else { \n\t\t// no arguments were passed\n\t\tarray = [];\n\t}\n\t\n\tif (this instanceof setup.simpleInv.inventory) {\n\t\tthis.inv = array;\n\t\tarray = (array.length) ? array : null;\n\t\t// run the event only if assignement is successful\n\t\tsetup.simpleInv.attachEvent(this, null, array, 'initialized');\n\t} else { // if the author forgets the 'new' operator, add it for them\n\t\treturn new setup.simpleInv.inventory(array);\n\t}\n};\n\n// static methods\nsetup.simpleInv.inventory.is = function (inv) {\n\t// test to see if passed object is an inventory instance\n\treturn (inv instanceof setup.simpleInv.inventory);\n};\nsetup.simpleInv.inventory.log = function (inv) {\n\t// logs the inventory to the console (for debugging)\n\tvar string = (setup.simpleInv.inventory.is(inv)) ?\n\t\t('Inventory.log() -> ' + inv.toArray().join(' - ')) : \n\t\t('Inventory.log() -> object is not an inventory...');\n\treturn string;\n};\nsetup.simpleInv.inventory.removeDuplicates = function (inv) {\n\t// removes duplicate items from an inventory\n\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\treturn; // not an inventory\n\t}\n\tvar items = inv.toArray();\n\tvar uniq = (function (i) {\n\t\tvar ret = [];\n\t\ti.forEach( function (item) {\n\t\t\tif (!ret.includes(item)) {\n\t\t\t\tret.push(item);\n\t\t\t}\n\t\t});\n\t\treturn ret;\n\t}(items));\n\t\n\treturn uniq;\n};\nsetup.simpleInv.inventory.getUID = function (name, i) {\n\tvar key = Math.random().toString(36).substring(7);\n\tif (arguments.length < 2) {\n\t\t// we'll generate an id anyway, but it might not be as unique as i'd like.\n\t\tname = Math.random().toString(36).substring(7);\n\t\ti = random(99);\n\t}\n\treturn ('simple-inv-' + i + '-' + Date.now() + '-' + name.replace(/[^A-Za-z0-9]/g, '') + '-' + key);\n};\n\n// the instance methods -> \n// these are on the prototype; we don't need them copied to each instance, and that saves us memory\nsetup.simpleInv.inventory.prototype = {\n\t\n\ttransfer : function (loc) {\n\t\t// transfer items from this inventory to a specified inventory\n\t\tif (arguments.length < 2) {\n\t\t\treturn this; // error in args, do nothing\n\t\t}\t\n\t\tif (!(loc instanceof setup.simpleInv.inventory)) {\n\t\t\treturn this; // error in args, do nothing\n\t\t}\n\t\t\n\t\tvar items = [].slice.call(arguments);\n\t\titems = items.slice(1).flatten();\n\t\t\n\t\tvar pushed = [];\n\t\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\t\t// only transfer the item if it exists\n\t\t\tif (this.inv.includes(items[i])) { \n\t\t\t\tthis.inv.delete(items[i]);\n\t\t\t\tpushed.push(items[i]);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (pushed.length) {\n\t\t\tloc.inv = loc.inv.concat(pushed);\n\t\t\tsetup.simpleInv.attachEvent(this, loc, pushed, 'transfer');\n\t\t\treturn this; // for chaining\n\t\t}\n\t\treturn this; // for chaining\n\t},\n\t\n\thas : function () { // this inventory has any of the passed items\n\t\tvar items = [].slice.call(arguments).flatten();\n\t\tif (items && items.length) {\n\t\t\treturn this.inv.includesAny(items);\n\t\t}\n\t\treturn false;\n\t},\n\t\n\thasAll : function () { // this inventory has all of the passed items\n\t\tvar items = [].slice.call(arguments).flatten();\n\t\tif (items && items.length) {\n\t\t\treturn this.inv.includesAll(items);\n\t\t}\n\t\treturn false;\n\t},\n\t\n\tpickUp : function (unique) { // add items to this inventory\n\t\tvar items = [].slice.call(arguments).flatten(), inventory = this;\n\t\tif (items && items.length) {\n\t\t\tif (unique === 'unique' || items[0] === 'unique') { // JS API only; items must be unique in eash inventory instance\n\t\t\t\titems = items.splice(1);\n\t\t\t\titems = (function (items) { \n\t\t\t\t\tvar ret = []; // this code could use some cleanup\n\t\t\t\t\titems.forEach(function (item) {\n\t\t\t\t\t\tif (!inventory.inv.includes(item)) {\n\t\t\t\t\t\t\tret.push(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn ret;\n\t\t\t\t}(items));\n\t\t\t}\n\t\t\t// concat the arrays and call the event\n\t\t\tthis.inv = this.inv.concat(items);\n\t\t\tsetup.simpleInv.attachEvent(this, null, items, 'pickup');\n\t\t}\n\t\treturn this; // for chaining\n\t},\n\t\n\tdrop : function () { // remove items from this inventory\n\t\tvar items = [].slice.call(arguments).flatten(),\n\t\t\tinventory = this; // we need to access this in the <array>.forEach()\n\t\tif (items && items.length) {\n\t\t\tvar moved = [];\n\t\t\titems.forEach(function (item) {\n\t\t\t\tif (inventory.has(item)) {\n\t\t\t\t\tmoved.push(item); // for the event below\n\t\t\t\t\tinventory.inv.delete(item);\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetup.simpleInv.attachEvent(this, null, moved, 'drop');\n\t\t}\n\t\treturn this; // for chaining\n\t},\n\t\n\tsort : function () { // sorts this inventory\n\t\tthis.inv = this.inv.sort();\n\t\tsetup.simpleInv.attachEvent(this, null, null, 'sort');\n\t\treturn this;\n\t},\n\t\n\tshow : function (sep) { // returns a string representing the inventory\n\t\tif (!sep || typeof sep !== 'string') {\n\t\t\tsep = setup.simpleInv.options.defaultStrings.separator; // default\n\t\t}\n\t\tif (this.inv.length) {\n\t\t\treturn this.inv.join(sep);\n\t\t}\n\t\treturn setup.simpleInv.options.defaultStrings.empty; // nothing is in this inventory\n\t},\n\t\n\tempty : function () { // remove all items from this inventory\n\t\tvar temp = clone(this.inv); // for the event\n\t\tthis.inv = []; \n\t\t// this is still technically a 'drop' event\n\t\tsetup.simpleInv.attachEvent(this, null, temp, 'drop');\n\t\treturn this; // for that sweet chaining action\n\t},\n\t\n\ttoArray : function () { // not super necessary\n\t\treturn (this.inv);\n\t},\n\t\n\tlinkedList : function (loc, action) { // construct the list elements to keep the macro call clean-ish\n\t\tif (!loc || !(loc instanceof setup.simpleInv.inventory)) {\n\t\t\tloc = false; // if no loc, then no transferring\n\t\t}\n\t\t\n\t\t// set up vars\n\t\tvar list = this.toArray();\n\t\tvar inv = this;\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\t\n\t\t// if inventory is empty, append message and return element\n\t\tif (!list || !list.length) {\n\t\t\t$wrapper.wiki(setup.simpleInv.options.defaultStrings.empty);\n\t\t\treturn $wrapper;\n\t\t}\n\t\t\n\t\t// construct the link list\n\t\tlist.forEach(function (item, idx, arr) {\n\t\t\tvar $listing = $(document.createElement('span')),\n\t\t\t\t$link = $(document.createElement('a')),\n\t\t\t\tdrop = (action) ? action : setup.simpleInv.options.defaultStrings.drop, // the action name or default\n\t\t\t\tUID = setup.simpleInv.inventory.getUID(item, idx); // create a unique element ID \n\t\t\t\n\t\t\t$link // create the drop link\n\t\t\t\t.wiki(drop)\n\t\t\t\t.addClass('simple-inv drop-link');\n\t\t\t\n\t\t\t// add click event handler\n\t\t\t$link.ariaClick(function () {\n\t\t\t\tif (loc) {\n\t\t\t\t\tinv.transfer(loc, item);\n\t\t\t\t} else {\n\t\t\t\t\tinv.drop(item);\n\t\t\t\t}\n\t\t\t\t$('#' + UID).empty(); // empty the listing by its UID\n\t\t\t});\n\t\t\t\n\t\t\t// set up the listing element, which contains the name and the link\n\t\t\t$listing\n\t\t\t\t.attr('id', UID)\n\t\t\t\t.addClass('simple-inv link-listing')\n\t\t\t\t.wiki(item + ' ')\n\t\t\t\t.append($link);\n\t\t\t\n\t\t\t// add newline via <br> for listings that aren't last\n\t\t\t// this also allows the newline to disappear with its associated listing when dropped\n\t\t\tif (idx < arr.length - 1) {\n\t\t\t\t$listing.wiki('<br />');\n\t\t\t}\n\t\t\t\n\t\t\t// attach to the return element\n\t\t\t$wrapper.append($listing);\n\t\t});\n\t\t\n\t\t// return the whole element\n\t\treturn $wrapper;\n\t},\n\t\n\t// we need to reassign this since we may have clobbered it using the prototype\n\tconstructor : setup.simpleInv.inventory,\n\t\n\ttoJSON : function () { // the custom revive wrapper for SugarCube's state tracking\n\t\treturn JSON.reviveWrapper('new setup.simpleInv.inventory(' + JSON.stringify(this.inv) + ')');\n\t},\n \n clone : function () { return new setup.simpleInv.inventory(this.inv); }\n};\n\n/*\n\tINVENTORY METHODS LIST\n\t * (new) Inventory([items]) // constructor \n\t * Inventory.is(<inv>) // check if passed object is an inventory instance\n\t * <inv>.transfer(<inv>, [items]) // chainable\n\t * <inv>.has([items]), // not chainable; returns boolean\n\t * <inv>.hasAll([items]), // not chainable; returns boolean\n\t * <inv>.pickUp([items]), // chainable\n\t * <inv>.drop([items]), // chainable\n\t * <inv>.sort(), // chainable\n\t * <inv>.show([seperator]), // not chainable; returns string\n\t * <inv>.empty(), // chainable\n\t * <inv>.toArray(), // not chainable; returns array\n\t * <inv>.linkedList(), // returns a jQuery instance of the linked list\n*/\n\n// global\nif (setup.simpleInv.options.tryGlobal) {\n\t// this allows authors to access the JS API using the Inventory class\n\t// rather than the setup.simpleInv.inventory class, which is a mouthful\n\twindow.Inventory = window.Inventory || setup.simpleInv.inventory;\n\t// ... but only if window.Inventory is undefined\n}\n\n/* MACROS */\n// <<newinventory '$var' '(optional) list of items'>>\nMacro.add('newinventory', {\n\thandler : function () {\n\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// set up new inventory\n\t\tWikifier.setValue(varName, new setup.simpleInv.inventory(this.args.slice(1).flatten()));\n\t}\n});\n\n// <<pickup '$var' 'list of items'>>\nMacro.add('pickup', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length < 2) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tinv.pickUp(this.args.slice(1).flatten());\n\t}\n});\n\n// <<drop '$var' 'list of items'>>\nMacro.add('drop', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length < 2) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tinv.drop(this.args.slice(1).flatten());\n\t}\n});\n\n// <<transfer '$var' '$anotherVar' 'list of items'>>\nMacro.add('transfer', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length < 3) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\t/* the receiving inventory */\n\t\tvar recVarName = this.args[1].trim();\n\t\t// check variable string\n\t\tif (recVarName[0] !== '$' && recVarName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[1] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar recInv = Wikifier.getValue(recVarName);\n\t\tif (!setup.simpleInv.inventory.is(recInv)) {\n\t\t\treturn this.error('variable ' + recVarName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tinv.transfer(recInv, this.args.slice(2).flatten());\n\t}\n});\n\n// <<dropall '$var'>>\nMacro.add('dropall', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tinv.empty();\n\t}\n});\n\n// <<clear>> (same as <<dropall>>)\nMacro.add('clear', 'dropall', false);\n\n// <<sort '$var'>>\nMacro.add('sort', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tinv.sort();\n\t}\n});\n\n// <<inventory '$var' 'separator'>>\nMacro.add('inventory', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length < 1 || this.args.length > 2) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar varName = this.args[0].trim();\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[0] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\t// create output element and add to DOM\n\t\tvar $wrapper = $(document.createElement('span')), \n\t\t\tsep = (this.args[1]) ? this.args[1] : false;\n\t\t\n\t\t$wrapper\n\t\t\t.wiki(inv.show(sep))\n\t\t\t.addClass('macro-' + this.name)\n\t\t\t.appendTo(this.output);\n\t}\n});\n\n// <<linkedinventory 'action name' '$var' '(optional) $anotherVar'\nMacro.add('linkedinventory', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length < 2 || this.args.length > 3) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t}\n\t\t\n\t\tvar recInv = false,\n\t\t\tvarName = this.args[1].trim(),\n\t\t\taction = (typeof this.args[0] === 'string') ? this.args[0] : false; // the action name, which is required\n\t\t\n\t\tif (!action) { // just in case\n\t\t\treturn this.error('first argument should be the link text');\n\t\t}\n\t\t\n\t\t// check variable string\n\t\tif (varName[0] !== '$' && varName[0] !== '_') {\n\t\t\treturn this.error('variable name "' + this.args[1] + '" is missing its sigil ($ or _)');\n\t\t}\n\t\t\n\t\t// use a varID for linked lists\n\t\tvar varID = Util.slugify(varName); \n\t\tvarID = this.name + '-' + varID;\n\t\t\n\t\t// check if story var is an inventory instance\n\t\tvar inv = Wikifier.getValue(varName);\n\t\tif (!setup.simpleInv.inventory.is(inv)) {\n\t\t\treturn this.error('variable ' + varName + ' is not an inventory!');\n\t\t}\n\t\t\n\t\tif (this.args.length > 2) {\n\t\t\t// the receiving inventory, if applicable\n\t\t\tvar recVarName = this.args[2].trim();\n\t\t\t// check variable string\n\t\t\tif (recVarName[0] !== '$' && recVarName[0] !== '_') {\n\t\t\t\treturn this.error('variable name "' + this.args[2] + '" is missing its sigil ($ or _)');\n\t\t\t}\n\t\t\t\n\t\t\t// check if story var is an inventory instance\n\t\t\trecInv = Wikifier.getValue(recVarName);\n\t\t\tif (!setup.simpleInv.inventory.is(recInv)) {\n\t\t\t\treturn this.error('variable ' + recVarName + ' is not an inventory!');\n\t\t\t}\n\t\t}\n\t\t\n\t\t// create output and att to DOM\n\t\tvar $list = inv.linkedList(recInv, action);\n\t\t$list\n\t\t\t.attr('id', varID)\n\t\t\t.addClass('macro-' + this.name)\n\t\t\t.appendTo(this.output);\n\t},\n});\n\n/* "simple inventory" is becoming more and more of a misnomer */\n\n// dialog API macro set, by chapel; for sugarcube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#dialog-api-macros\n\n// <<dialog>> macro\nMacro.add('dialog', {\n\t tags : null,\n\thandler : function () {\n\n\t\tvar content = this.payload[0].contents;\n\t\t\n\t\tif (this.args.length > 1) {\n\t\t\tvar title = this.args[0];\n\t\t\tthis.args.deleteAt(0);\n\t\t\tthis.args.push('macro-' + this.name);\n\t\t\tvar classNames = this.args.join(' ');\n\t\t} else if (this.args.length === 1) {\n\t\t\tvar title = this.args[0];\n\t\t\tvar classNames = 'macro-' + this.name;\n\t\t} else {\n\t\t\tvar title = 'Information';\n\t\t\tvar classNames = 'macro-' + this.name;\n\t\t}\n\t\t\n\t\tDialog.setup(title, classNames);\n\t\tDialog.wiki(content);\n\t\tDialog.open();\n\t\t\n\t}\n\n});\n\n// <<popup>> macro\nMacro.add('popup', {\n\thandler : function () {\n\t\t\n\t\tif (this.args.length > 2) {\n\t\t\tvar passageName = this.args[0];\n\t\t\tvar title = this.args[1];\n\t\t\tthis.args.deleteAt(0, 1);\n\t\t\tthis.args.push('macro-' + this.name);\n\t\t\tvar classNames = this.args.join(' ');\n\t\t} else if (this.args.length === 2) {\n\t\t\tvar passageName = this.args[0];\n\t\t\tvar title = this.args[1];\n\t\t\tvar classNames = 'macro-' + this.name;\n\t\t} else if (this.args.length === 1) {\n\t\t\tvar passageName = this.args[0];\n\t\t\tvar title = 'Information';\n\t\t\tvar classNames = 'macro-' + this.name;\n\t\t} else {\n\t\t\treturn this.error('need at least one argument; the passage to display');\n\t\t}\n\t\t\n\t\tDialog.setup(title, classNames);\n\t\tDialog.wiki(Story.get(passageName).processText());\n\t\tDialog.open();\n\t\t\n\t}\n\n});\n\n// fading macro set, by chapel; for SugarCube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#fading-macros\n\n// <<fadein>> macro\nMacro.add('fadein', {\n\t tags : null,\n\thandler : function () {\n\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar className = ('macro-' + this.name);\n\t\tvar content = this.payload[0].contents;\n\t\tvar delay = 0;\n\t\tvar time = 0;\n\n\t\tif (this.args.length === 1) {\n\t\t\tvar delay = 0;\n\t\t\tvar time = this.args[0] * 1000;\n\t\t} else if (this.args.length === 2) {\n\t\t\tvar delay = this.args[0] * 1000;\n\t\t\tvar time = this.args[1] * 1000;\n\t\t} else {\n\t\t\treturn this.error('incorrect number of arguments...');\n\t\t}\n\n\t\t$wrapper\n\t\t\t.wiki(content)\n\t\t\t.addClass(className)\n\t\t\t.appendTo(this.output)\n\t\t\t.hide()\n\t\t\t.delay(delay)\n\t\t\t.fadeIn(time);\n\n\t}\n});\n\n// <<fadeout>> macro\nMacro.add('fadeout', {\n\t tags : null,\n\thandler : function () {\n\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar className = ('macro-' + this.name);\n\t\tvar content = this.payload[0].contents;\n\t\tvar delay = 0;\n\t\tvar time = 0;\n\n\t\tif (this.args.length === 1) {\n\t\t\tvar delay = 0;\n\t\t\tvar time = this.args[0] * 1000;\n\t\t} else if (this.args.length === 2) {\n\t\t\tvar delay = this.args[0] * 1000;\n\t\t\tvar time = this.args[1] * 1000;\n\t\t} else {\n\t\t\treturn this.error('incorrect number of arguments...');\n\t\t}\n\n\t\t$wrapper\n\t\t\t.wiki(content)\n\t\t\t.addClass(className)\n\t\t\t.appendTo(this.output)\n\t\t\t.delay(delay)\n\t\t\t.fadeOut(time);\n\n\t}\n});\n\n// play time system, by chapel; for SugarCube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#play-time-system\n\n// intialize namespace\nsetup.playTime = {};\n\n// options object:\nsetup.playTime.options = {\n\tstoryVar : 'playTime',\n\tpauseTag : 'menu'\n};\n\n// create and initialize story variables\nState.variables[setup.playTime.options.storyVar] = {\n\t hr : 0,\n\tmin : 0,\n\tsec : 0,\n\t ms : 0,\n\tstr : ''\n};\nsetup.playTime.ptRef = () => State.variables[setup.playTime.options.storyVar];\n\nsetup.playTime.timeCount = function (timer) {\n\t// check for pause tag\n\tif (!tags().includes(setup.playTime.options.pauseTag)) {\n\t\ttimer.ms += time();\n\t\t\n\t\t// get time in ms and split it into hr:min:sec\n\t\tif (timer.ms >= 1000) {\n\t\t\ttimer.sec += Math.trunc(timer.ms / 1000);\n\t\t\ttimer.ms = timer.ms % 1000;\n\t\t}\n\t\tif (timer.sec >= 60) {\n\t\t\ttimer.min += Math.trunc(timer.sec / 60);\n\t\t\ttimer.sec = timer.sec % 60;\n\t\t}\n\t\tif (timer.min >= 60) {\n\t\t\ttimer.hr += Math.trunc(timer.min / 60);\n\t\t\ttimer.min = timer.min % 60;\n\t\t}\n\t\t\n\t\t// add leading 0's (if necessary)\n\t\tvar hh = (timer.hr < 10) ? \n\t\t\t\t'0' + timer.hr : timer.hr;\n\t\tvar mm = (timer.min < 10) ? \n\t\t\t\t'0' + timer.min : timer.min;\n\t\tvar ss = (timer.sec < 10) ? \n\t\t\t\t'0' + timer.sec : timer.sec;\n\t\t\n\t\t// format time string and save to story variable property 'str'\n\t\ttimer.str = '<b>' + hh + ':' + mm + '</b>:' + ss;\n\t}\n} \n\nprehistory["logTime"] = function (taskName) {\n\t// log time before old passage transitions out\n\tvar t = setup.playTime.ptRef();\n\tsetup.playTime.timeCount(t);\n};\n\n// <<playtime>> macro\nMacro.add('playtime', {\n\thandler : function () {\n\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar className = 'macro-' + this.name;\n\t\tvar timer = setup.playTime.ptRef();\n\t\tvar content = timer.str;\n\n\t\t$wrapper\n\t\t\t.wiki(content)\n\t\t\t.addClass(className)\n\t\t\t.appendTo(this.output);\n\t\t\n\t}\n\n});\n\n// message macro, by chapel (with help from T.M. Edwards); for sugarcube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#message-macro\n\n//intialize namespace\nsetup.messageMacro = {};\n\n// default text option:\nsetup.messageMacro.default = 'Help';\n\n// <<message>> macro\nMacro.add('message', {\n\ttags : null,\n\thandler : function () {\n\t\tvar message = this.payload[0].contents;\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar $link = $(document.createElement(this.args.includes('btn') ? 'button' : 'a'));\n\t\tvar $content = $(document.createElement('span'));\n\n\t\t$link\n\t\t\t.wiki(this.args.length > 0 && this.args[0] !== 'btn' ? this.args[0] : setup.messageMacro.default)\n\t\t\t.ariaClick(function () {\n\t\t\t\tif ($wrapper.hasClass('open')) {\n\t\t\t\t\t$content\n\t\t\t\t\t\t.css('display', 'none')\n\t\t\t\t\t\t.empty();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t$content\n\t\t\t\t\t\t.css('display', 'block')\n\t\t\t\t\t\t.wiki(message);\n\t\t\t\t}\n\n\t\t\t\t$wrapper.toggleClass('open');\n\t\t\t});\n\n\t\t$wrapper\n\t\t\t.attr('id', 'macro-' + this.name + '-' + this.args.join('').replace(/[^A-Za-z0-9]/g, ''))\n\t\t\t.addClass('help')\n\t\t\t.append($link)\n\t\t\t.append($content)\n\t\t\t.appendTo(this.output);\n\t}\n});\n\n// first macro, by chapel; for sugarcube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#first-macro\n\n// <<first>> macro\nMacro.add('first', {\n\t tags : ['then', 'finally'],\n\thandler : function () {\n\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar className = 'macro-' + this.name;\n\t\tvar length = this.payload.length;\n\t\tvar visits = visited() - 1;\n\t\tvar lastTag = this.payload[ length - 1 ].name;\n\t\tvar lastContent = this.payload[ length - 1 ].contents;\n\t\tvar content;\n\n\t\tif (visits < length){\n\t\t\tcontent = this.payload[visits].contents;\n\t\t} else {\n\t\t\tcontent = (lastTag === 'finally') ? lastContent : '';\n\t\t}\n\n\t\t$wrapper\n\t\t\t.wiki(content)\n\t\t\t.addClass(className)\n\t\t\t.appendTo(this.output);\n\t}\n\n});\n\n//<<dropdown>> macro\nMacro.add('dropdown', {\n\thandler : function () {\n\t\t\n var $wrapper = $(document.createElement('span'));\n var $drop = $(document.createElement('select'));\n\t\t\n var opts = this.args;\n var storyVar = opts.shift();\n var store;\n var i;\n\t\t\n // handle simple errors\n if (typeof storyVar == 'undefined') {\n return this.error('No arguments provided.');\n }\n if (opts.length < 1) {\n return this.error('Must provide at least one list option.');\n }\n\t\t\n if (storyVar.charAt(0) === '$') {\n store = State.variables;\n } else if (storyVar.charAt(0) === '_') {\n store = State.temporary;\n } else {\n return this.error('First argument should be a valid TwineScript variable.');\n }\n storyVar = storyVar.slice(1);\n store[storyVar] = opts[0];\n\t\t\t\n\t\t\n for (i = 0; i < opts.length; i++) {\n var $option = $(document.createElement('option'));\n $option\n .attr('value', opts[i])\n .wiki(opts[i])\n .appendTo($drop);\n }\n\t\t\n $drop\n .attr({\n name : 'dropdown-macro',\n id : storyVar\n })\n .appendTo($wrapper);\n\t\t\n $wrapper\n .addClass('macro-' + this.name)\n .appendTo(this.output);\n\t\t\n $(document).on('change', 'select#' + storyVar, function () { \n store[storyVar] = $('select#' + storyVar).val();\n })\n\t\t\n\t\t\n }\n});
<<display "damagecalc_player">>\n<<display "critmaker">>\n<<display 'staggermaker'>>\n<<if $crityes is 1>><<audio "critical" play>><<else>><<audio "attack" play>><<endif>>\n<<replace "#combatmessages">><<if $crityes is 1>>''Critical Hit: ''<<endif>>Dealt <<print Math.trunc($damagetoNME)>> damage.<</replace>>\n<<set $crityes to 0>>\n<<if $damagetoNME>><<payload 'onNMEgritDam'>><<endif>>\n<<set $nmegrit to $nmegrit-$damagetoNME>>\n<<if $nmegrit lte 0>><<set $nmehealth to $nmehealth-1>><<payload 'onNMEheartDam'>><<set $nmegrit to $nmemaxgrit>><<endif>>\n\n<<if $nmehealth lte 0>><<set $nmegrit to 0>><<display "health_checker">><<endif>>\n\n<<set $sta to $sta-($wStaUse+$NMEStaUse)>>\n/%<<display "damagecalc_player">>%/\n<<if $allynumber is 0>>\n\t<<com_update_noally>>\n<<else>>\n\t<<com_update>>\n<<endif>>
Elesun rides hard for Merac, and as the sun rises, her horse begins to slow. She doesn't stop cracking the reigns, even as it grows <<weak 'unsteady' '1orUnsteady'>>. It's well-trained.\n\nAs she rides, she grows more and more uneasy. Aesil knew where Ripley would be. <<dock 'Someone at the castle' '1orMole'>> must have told him. For now, though, <<action 'rescuing Ripley' '1orRescue'>> is all she can do.\n\n<<info>>
<<set $armorname to "No Armor">>\n<<set $armor_ui to "naked_ui">>\n\n<<set $aatk to 1.0>>\n<<set $adef to 0.6>>\n<<set $amov to 1.0>>
<<portrait>><<journallink "Ripley" "codex_Ripley">> and Elesun head across the wall and arrive at the door that leads into the main hall. From here, the throne room should be a few floors down.\n\nElesun puts her hand to the door to pull it open.\n\n"Look out!" Ripley shouts.\n\nThe stone of the wall beneath Elesun pitches suddenly, like a wave, and the stone melts into muck. She falls. Ripley dives for her, sliding to the edge, hands out, but can't reach her in time.\n\nElesun finds herself in the king's quarters, just above the throne room. A woman--a witch--in a black dress is standing nearby, smiling.\n\n"Hello, demonkin," the witch says.\n\nElesun draws her sword and throws it at the witch. The witch raises her hand, and the sword stops in midair inches from her face. Elesun is already on her feet though, and leaps toward the witch, plucking the sword from the air and swinging. The witch dodges--barely, but a red cut forms on her cheek and blood drips down the side of her face.\n\n"Come on!" Elesun says.\n\n"As you wish," the witch says, drawing her own sword.\n\n<<ctrlClick "Continue." "combat_call_0_3">>\n\n\n\n\n\n\n\n\n\n
/%custom widgets and tags%/\n<<widget "showdock">><<display "infobox">><<endwidget>>\n<<widget "info">><<display "infobox">><<endwidget>>\n\n<<widget "stats">><<display "statupdater">><<endwidget>>\n\n<<widget "rest">><<display "rest_scars">><<print $restReport>><<endwidget>>\n\n/%anchor set--for returning from combat and other things%/\n<<widget "anchor">><<set $exitpassage to passage()>><<endwidget>>\n<<widget "anchorswitch">><<set $anchor to 1>><<endwidget>>\n<<widget "anchorreturn">>[[Continue|$exitpassage]]<<endwidget>>\n<<widget "anchorkill">><<set $anchor to 0>><<endwidget>>\n\n<<widget "com_update">><<replace "#enemystatupdate">><<display "combatboxNME">><</replace>><<replace "#allystatupdate">><<display "combatboxAlly">><</replace>><<replace "#playerstats">><<if $mobile is 1>><<display "playerstatsMobile">><<else>><<display "playerstats">><<endif>><</replace>><<replace "#combatactions">><<if $mobile is 1>><<display "playeractionsMobile">><<else>><<display "playeractions">><<endif>><</replace>><<endwidget>>\n\n<<widget "com_update_noally">><<replace "#enemystatupdate">><<display "combatboxNME">><</replace>><<replace "#playerstats">><<if $mobile is 1>><<display "playerstatsMobile">><<else>><<display "playerstats">><<endif>><</replace>><<replace "#combatactions">><<if $mobile is 1>><<display "playeractionsMobile">><<else>><<display "playeractions">><<endif>><</replace>><<endwidget>>\n\n<<widget "comUpdate">><<if $allynumber is 0>><<com_update_noally>><<else>><<com_update>><<endif>><<endwidget>>\n\n<<widget "xp">><<display "tallyxp">><<endwidget>>\n\n<<widget "dock">><<if $dockdisp is 1 or $dockdisp is -1>><<link $args[0]>><<replace "#info">><<display $args[1]>><</replace>><</link>><<elseif $dockdisp is 0>><<link $args[0]>><<popup $args[1]>><</link>><<endif>><<endwidget>>\n\n<<widget "weak">><<if $dockmode is 0>><<print $args[0]>><<else>><<if $dockdisp is 1 or $dockdisp is -1>><<link $args[0]>><<replace "#info">><<display $args[1]>><</replace>><</link>><<elseif $dockdisp is 0>><<link $args[0]>><<popup $args[1]>><</link>><<endif>><<endif>><<endwidget>>\n\n<<widget "action">><span class='action-info'><<if $dockdisp is 1>><<link $args[0]>><<replace "#info">><<display $args[1]>><</replace>><</link>><<elseif $dockdisp is 0 or $dockdisp is -1>><<link $args[0]>><<popup $args[1]>><</link>><<endif>></span><<endwidget>>\n\n/%<<dock "link text" "passage_to_display">>: updates the infodock--requires <<info>> to be in the same passage work\n\na weak dock link disappears in dockmode 0%/\n\n<<widget "help">><<link "Help">><<replace "#helpA">><<display $args[0]>>\n<<link "Close">><<replace "#helpA">>...<</replace>><</link>><</replace>><</link>><span id="helpA">...</span><<endwidget>>\n\n/%<<help "passage_to_display">>%/\n\n<<widget "help_string">><<link "Help">><<replace "#helpB">><<print $args[0]>>\n<<link "Close">><<replace "#helpB">>...<</replace>><</link>><</replace>><</link>><span id="helpB">...</span><<endwidget>>\n\n/%<<help "string to display">>: string-based variant%/\n\n<<widget "tutorial">><<link $args[0]>><<replace "#helpC">><<display $args[1]>>\n<<link "Close">><<replace "#helpC">>...<</replace>><</link>><</replace>><</link>><span id="helpC">...</span><<endwidget>>\n\n/%<<tutorial "link text" "passage_to_display">>: help variant where link text can be edited%/\n\n/%you can use <<help>>, <<help_string>>, and <<tutorial>> to display up to three different help messages in the same passage%/\n\n<<widget "portrait">><<if $mobile neq 1>><<display "PlayerPortrait">><<else>><<display "PlayerPortSmall">><<endif>><<endwidget>>\n<<widget "thumb">><<if $mobile neq 1>><<display "PlayerPortSmall">><<endif>><<endwidget>>\n<<widget "closeup">><<if $mobile is 1>>Information<<else>><<display "PlayerCloseUp">><<endif>><<endwidget>>\n<<widget "image">><<set $subj to clone(setup.img[ $args[0] ])>><<display "ShowImage">><<endwidget>>\n\n/%<<combat "enemy" "passage to display before combat" "passage to exit combat into">>%/\n<<widget "combat">><<if $anchor is 0>><<display $args[0]>><<anchor>><<display $args[1]>>\n\n<span id="ctrlClick">[[Continue|combat_init]]</span><<else>><<anchorkill>><<goto $args[2]>><<endif>><<endwidget>>\n\n<<widget "name">><<print $character>><<endwidget>>\n\n<<widget "interact">><<link $args[0]>><<goto $args[1]>><<audio "click"d play>><</link>><<endwidget>>\n\n<<widget "leave">><<link $args[0]>><<goto $args[1]>><<audio "steps" play>><</link>><<endwidget>>\n\n<<widget "tipster">><<display "tips">><<button "Give me another tip.">><<display "tips">><<replace "#tip">><<print $tip>><</replace>><</button>> //<span id="tip"><<print $tip>></span>// <</widget>>\n\n<<widget "comPt">><<display "combat_portrait">><<endwidget>>\n\n<<widget "journallink">><span id="journallink"><<link $args[0]>><<set $return to passage()>><<goto $args[1]>><<audio "page" play>><</link>></span><<endwidget>>\n\n/%<<ctrlClick "text" "passage" (optional "type")>>%/\n<<widget "ctrlClick">><span id="ctrlClick" class='action-link'><<link $args[0]>><<if $args[2]>><<if $args[2] is "leave">><<audio "steps" volume 0.3 play>><<elseif $args[2] is "interact">><<audio "equip" play>><<elseif $args[2] is "codex">><<audio "page" play>><<set $return to passage()>><<endif>><<endif>><<goto $args[1]>><</link>></span><<endwidget>>\n\n/%<<ctrlContinue(or ctrlCon) "passage" (optional "leave")>>%/\n<<widget "ctrlContinue">><span id="ctrlClick" class='action-link'><<link "Continue.">><<if $args[1] is "leave">><<audio "steps" volume 0.3 play>><<endif>><<goto $args[0]>><</link>></span><</widget>>\n<<widget "ctrlCon">><span id="ctrlClick" class='action-link'><<link "Continue.">><<if $args[1] is "leave">><<audio "steps" volume 0.3 play>><<endif>><<goto $args[0]>><</link>></span><</widget>>\n\n/%<<selection "link text" "passage (goto)" integer(number key to fire link)>>%/\n<<widget "selection">><<switch $args[2]>><<case 1>><span id="oneAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 2>><span id="twoAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 3>><span id="threeAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 4>><span id="fourAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 5>><span id="fiveAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 6>><span id="sixAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 7>><span id="sevenAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 8>><span id="eightAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 9>><span id="nineAct"><<link "" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<case 10>><span id="zeroAct"><<link "1" + $args[3] + ": " + $args[0]>><<goto $args[1]>><</link>></span><<default>><span id="zeroAct"><<link $args[0]>><<goto $args[1]>><</link>></span><</switch>><<endwidget>>\n\n<<widget "nav">><<display "navbox">><</widget>>\n\n<<widget "toTop">><<if $args[0] or $args[0] is "">><<set _linkText to $args[0]>><<else>><<set _linkText to "Return to top.">><<endif>><<if $args[1] is "l" or $args[1] is "link">><<link _linkText>><<script>>window.scroll(0, 0);<</script>><</link>><<else>><<button _linkText>><<script>>window.scroll(0, 0);<</script>><</button>><<endif>><</widget>>\n\n/%<<toTop "link text" (optional) "l (or 'link')" (to use link insead of button, optional, requires link text to have some value or an empty string)>>%/
!!!Initial Settings\n//You can access more settings from the settings menu once you start the game.//\n\n''Volume and Sound:''\nVolume: <<volume>> <<display "muter">>\n\n''Screen Mode:''\n<<display "fullscreen_toggler">>\n\n''Combat Tutorials''\nWhen on, combat tutorials will show up. Each tutorial message is only displayed once.\n<<display 'combat_tutorials'>>\n\n''Difficulty Setting:''\nWhile this is primarily a narrative game, there is combat. For those who just wish to enjoy the story, you may turn the combat to easy mode, or off entirely. Note that doing so may prevent you from completing certain content in the game.\n\nHow would you like to play?\n\n[[Normal Mode|prologueintro][$mode to 1]]: The way it was intended.\n\n<<link "Easy Mode">><<set $mode to 2>><<display "easy-bal-adj">><<stats>><<goto "prologueintro">><</link>>: Put the story first.\n\n<<if $demomode>><b>Intense Mode</b>: Gain some bonuses, but combat is faster-paced and more deadly. (Not available in this demo.)<<else>><<link "Intense Mode">><<set $mode to 3>><<display "hard-bal-adj">><<stats>><<goto "prologueintro">><</link>>: Gain some bonuses, but combat is faster-paced and more deadly.<<endif>>\n\n<<if $demomode>><b>Story Mode</b>: Just the story; combat is turned off. (Not available in this demo.)<<else>>[[Story Mode|prologueintro][$mode to 0]]: Just the story; combat is skipped.<<endif>>\n\n\n[['[' + 'View the combat reference.' + ']'|combatexplanationmenu]]\n
Equip a weapon to use in combat. Heavier weapons do more damage, but also cost more stamina to attack with, and also have lower critical attack rates.
"See you later."\n\n<<ctrlClick 'Be good.' '1RipQuarters'>>
<<image "AesSm3">><<thumb>><<display 'ultimateDespAudio'>>\s\n<<if $character is 'Elesun'>>Elesun drives her sword into Aesil's gut and carves outward. He falls, and her left leg gives way, bones cracking and skin tearing. She kneels over him, and forces the sword deeper into the earth. She wanted to drive his blood to the center of the earth.\n\nAesil gasped and choked, clinging to life. Elesun pulls back her sword and swings. She watches as her hand separates at the wrist and follows the weight of the sword as it cleaves through Aesil. She doesn't feel it--not anymore, not anything. But she can see the red blood chasing after her hand.<<else>>Ripley drives her fist through Aesil's chest until her hand comes out the other side.\n\nAesil swings desperately, but Ripley catches his arm and wrenches it off in a single motion. She pushes him to the ground, steps on his chest, and takes hold of his head in both hands. Her muscles strain as Aesil struggles, but his head eventually comes free. Finally, Aesil becomes still.<<endif>>\n\n''Aesil is defeated.''\n\n<<ctrlCon 'combat_end'>>
"You know, Elesun, the grove has great respect for you. The elder even proposed making you an honorary warrior. They'd have given you bangles and everything."\n\n"Is that so? First I've heard of it."\n\n"Well, the oracles started prophesying doom and some of the warriors got really mad--"\n\n"I get it," Elesun said. "I've gotten this far without bangles, I think I'll make it."
<<portrait>>\n[img[setup.img.RipPtKid]]\n[img[setup.img.IrePt]]\n[img[setup.img.FolsomPt]]\n[img[setup.img.RipCl]]\n[img[setup.img.EleCl]]\n<<thumb>>\n<<masked>>\n<<excited>>\n<<grinning>>\n<<happy>>\n<<confused>>\n<<dolled-up>>\n<<grinning>>\n<<sad>>\n<<dolled-up-neutral>>\n<<th-determined>>\n<<devil-form>>\n<<what>>\n<<eating-happy>>\n<<worried>>\n<<joyous>>\n<<hoping>>\n<<th-sigh>>\n<<eating-dismissive>>\n[[Back|debug_features]]
<<set $xpearned to $xpearned+40>><<image "RipSmKid">><<thumb>>Ripley and Elesun head down into the main hall.\n\n<<ctrlClick "Continue." "0levelupcheck2">>
<<set $xpearned to $xpearned+50>><<image "RipSmKid">><<thumb>>As they reach the door that leads to the main hall, and the throne room, Elesun can see a woman in a long black dress walking away from them along the wall.\n\n"Who's that?" Ripley asks.\n\n"I don't know. No one good. Come on."\n\nThey enter the main hall, and head down the steps.\n\n<<ctrlClick "Continue." "0levelupcheck2">>
The golden bangles Ripley wears are made by the druid oracles, and the process of making them is a closely guarded secret. The bangles are reserved for only the most elite druid warriors, and the process of binding them can kill the bearer if he or she is too weak. They were given to Ripley once the oracles realized she was the promised child.\n\nThe bangles amplify strength and speed up healing. Perhaps most impressive, they amplify one’s ability to dispel most forms of hostile magic. There are eight in total, two on each limb.
It takes Ripley a second to catch up with the light. In the center of the floor, surrounded by stretching pools of blood, is a--\n\nA pile of bodies. Sort of.\n\nElesun had seen this before. It was the work of dark magic.\n\n<<timed 2s t8n>><span id="ctrlClick"><<link "Try to look away.">><<append "#gone">><<display "0aesTry">><</append>><</link>></span><</timed>>\n\n
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has wounded the enemy.\n\nTo win a fight, <<name>> must deplete all of an enemy's hearts. To deplete a heart, she must deplete all of an enemy's <<= setup.words.grit>>.\s\n<</dialog>>\n<<tutorialHook 'tut_onNMEheartDam'>>
"I'm fine," Folsom says. "Thank you for asking. The attack did take a lot out of me, but it took more out of them. That's all we can hope for, anyway."
!Magic\n<span id="codexmag">\nMagic is a powerful ally. While the number of people who can cast true, unbound magic is incredibly limited, bound spells are relatively easy to learn and master, and are widely used the world over.</span>\n\n<<link "The Source of Magic">>\n\t<<replace "#codexmag">>\n''The Source of Magic''\n\nWhile arguments abound to the true nature and source of magical power, all scholars agree that it is "borrowed" from the other world. \n\nWhile a great deal of practitioners reject the notion that all magic comes from the same source, scholars have argued for centuries that the schools of magic are too similar to be completely unique. Many have pointed to the Hellish Flame as a likely originator of the various forms of magic, claiming that hellish magic is magic in its rawest, most primal state. Others resist this notion, believing that magic flows naturally into this world from the next through natural forces, life, or even through human will. \n\nSeveral objective studies have been carried out, but most are marred by controversy, tribalism, and scandal.<</replace>>\n<</link>>\n<<link "Schools of Magic">>\n\t<<replace "#codexmag">>\n''The Schools of Magic''\n\nThere are five major schools of magic. While bound magic can generally be learned in only a few years, learning unbound magic can take a lifetime, and most dedicated mages devote themselves to the study of only one school.\n\n*Neutral magic, occasionally called anti-magic, was the most recently founded school of magic, with a history of roughly three-hundred years--short in comparison to the other schools. Neutral magic focuses on controlling and reacting to other magical forces, both naturally occurring and man-made. Neutral magic can bend, dispel, and manipulate other forms of magic, and also allows casters to channel ambient magic to various ends.\n\n*Natrual magic, or Druidic magic, is a closely guarded secret, used exclusively by the Druid tribes in both its bound and unbound forms. Natural magic tends to focus on enhancing and empowering already existing skills, but also mixes elements of light magic and neutral magic. Although neutral magic is a much more modern invention, scholars have identified many key similarities between the two. The Druids believe their magic is an extension of their relationship to the natural world, and comes from the same source as all life.\n\n*Light (or white) magic focuses on enhancing and speeding up the natural healing processes of living beings. Unbound light magic is incredibly powerful, capable of healing deadly wounds, but its power comes at a cost, as more powerful spells often drain the caster's life force. Its nature as a healing medium and its sacrificial requirements has made practicitioners of light magic into saints in the eyes of most people. Light magic is the most studied form of magic in the world.\n\n*Dark magic is sometimes described as a perversion of light magic, though most scholars see it as its own form. The practice of dark magic is shunned and outlawed by many societies. Dark magic can harm others, slow the healing process, and wear away at the life force of its targets, but the wielders of dark magic are also weakened and injured by its use, usually in similar ways, even in its bound forms. Unlike most other forms of magic, unbound dark magic can be manifested in various physical forms and manipulated by its caster, such as shadowy blades or tendrils of inky darkness.\n\n*Hellish magic is a mind-boggling and often devastating power. It is the only form of magic to be regulated by a neutral, international body, and its use in wartime, other than for self-defense or the defense of innocents, is considered a war crime. It is said that dragons taught humans to harness hellish magic, and that they, in turn, had learned it from the Hellish Flame, a supposedly living, thinking fire that exists in the Other World. Hellish magic manifests as bright, reddish energy that vaguely suggests fire, and its heat, light, and force can be controlled by its caster in its unbound form.<</replace>>\n<</link>>\n<<link "Mages and Wizards">>\n\t<<replace "#codexmag">>\n''On Mages and Wizards''\n\nWhile a great deal of warriors, nobles, and other people of means often recieve some level of basic magical training, usually over a period of a few years, mages and wizards are trained from childhood until middle-age in the ways of magic. Unbound magic takes decades of training to safely use, and this difficult, lengthy journey to mastery means that there are never enough mages, and that the mages who do make it are highly respected, well-paid, and always busy.\n\nSome mages go on to learn more than one form of magic. These mages are generally granted the unofficial title of wizard. Wizards are incredibly rare.\n\nMost wizards find themselves employed by royalty, teaching nobles and royal children bound magic, weaving spells of protection and healing for the king and his castle, and advising in all matters that involve or can be affected by magic.<</replace>>\n<</link>>\n<<link "Bound and Unbound Magic">>\n\t<<replace "#codexmag">>\n''Bound and Unbound Magic''\n\nBound magic is a simplified form of magic that can be learned relatively quickly. Easy-to-manage, widely applicable spells are taught to individuals, usually without any great deal of context or understanding of the wider implications of the discipline. Bound magic generally pales in comparison to the true potential of a given school.\n\nUnbound magic, on the other hand, is magic as it is meant to be. Most mages do not cast discreet spells. Instead, through pure mastery of their discipline, they craft spells and alter them on the fly, as needed. Unbound magic is unrivaled in power, but the dedication required to learn it and the decades of training required to safely utilize it means that even fairly ordinary mages are rare outside the halls of power.<</replace>>\n<</link>>\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<div id="tutorial">[img[setup.ui.tut.tut4][combatexplanation5menu]]</div>\n<<ctrlCon "combatexplanation5menu">>
!!!Version 0.7.3\n* Second prototype release.\n<<silently>>/%!!!Version 0.7.5:\n*Demo version (initial).\n<<if $debug is 1>>%/\n!!!Version 0.7.4-2 (Demo Release Candidate)\n*Last minute fixes and adjustments.\n*Finalizations.\n*Prepped repo.\n\n!!!Version 0.7.4-1 (Demo Release Candidate)\n*Bug fixes and stability improvements.\n*Corrected grammar errors and typos.\n*Improved combat balance.\n*Finalized intallable release builds.\n*Finalized web-build.\n\n!!!Version 0.7.4 (Demo Release Candidate)\n*Finished chapter 1, now in beta.\n*Readjusted combat balance.\n*Multiple improvements to the code base.\n*Improved initial load times and efficiency.\n\n!!!Version 0.7.3 (Internal)\n*Made improvements to the boss fight system.\n*Improved the interface of the QTEs.\n*Repaired some asset piping that was lost in translation to the new system.\n*Balance adjustments and improvements.\n*General fixes for bugs and typos.\n*Laid groundwork for Intense Mode.\n*Added enemy agression as a factor in combat, based on the selected difficulty mode.\n*Improved enemy combat AI.\n\n!!!Version 0.7.2 (Internal)\n*Created and implemented boss fight system; now in beta.\n*Improved visuals of QTE system.\n*Rebalanced some combat encounters to be slightly easier.\n*Titles system is now fully implemented and in beta.\n*Optimized image loading; first time load may be somewhat longer for some users.\n*Made adjustments to the QTE balance.\n*Made several improvements to the map system.\n*Fixed several bugs in the hook system.\n*Fixed other bugs and typos.\n\n!!!Version 0.7.0: (Internal)\n*Created and implemented hook system.\n*Improved CSS of various systems.\n*Implemented complete combat tutorial system.\n*Created titles system.\n*Continued working on chapter 1.\n*General improvements and optimizations.\n*Fixed critical bug in the browser-version fullscreen option.\n*Fixed bugs and typos.\n\n!!!Version 0.6.8: (Internal)\n*Migrated all base-64 internal images to external resources--a data-structure in the {{{setup}}} object now handles image pathing.\n*Pared down and refocused audio.\n*Fully integrated the balance object, $bal, into most relevant systems, including M_Combat, M_Stats, O_Enemies, and O_SpecialAbilities.\n*Implemented a number of new features to the engine.\n*Removed some deprecated code.\n*Rewrote some code to make the engine more efficent.\n*Various back-end updates and upgrades, including new macros, systems, and scripting.\n*Desperation attack damage is now based on power ($power * _despMod * $bal.desp; where _despMod is a weighted random modifier and $bal.desp refers to the balance object).\n*Fixed a series of major bugs in the Prologue that were caused by the migration to the {{{<<ctrlClick>>}}} and {{{<<ctrlCon>>}}} macros.\n*Improved the logic and efficency of various widget and macro definitions.\n*Improved easy mode (it now uses the balance object).\n*Added new sounds to combat.\n*Improved combat visuals.\n*A combat explanation now exists.\n*General improvements and optimization.\n*Fixed bugs and typos.\n\n!!!Version 0.6.5: (Internal)\n*Adjusted combat balance.\n*Added new sound effects and music.\n*Rage build-up is now carried over from combat to combat, but is reduced slightly in between.\n*Created credits HTML file and implemented it in the "about" page.\n*Migrated some features to the dialog API.\n*Quest system implemented (needs more testing and patching).\n*Adjustable volume slider implemented in settings menu.\n*Ajusted appearance of settings menu.\n*Added unicode icons to menu options.\n*Added real-time combat gauges for boss battles (not yet fully implemented).\n*Title screen created (not yet implemented).\n*Fixed bugs and typos.\n''Web Version''\n*Improved cross-browser support for audio and animations.\n*Added MP3 options for all audio.\n''Executable Version''\n*Improved load times and optimization.\n\n!!!Version 0.6.0: (Internal)\n*Added Ripley's rage transformations (currently in beta).\n*Removed mobile mode (needs rewritten from ground-up).\n*Changed default dock options.\n*Added full keyboard and handler support.\n*Started chapter 1.\n*Added nav-box interface.\n*Adjusted help menus and tutorials to reflect keyboard support.\n*Fixed critical error in "Combat Off" mode.\n\n!!!Version 0.5.1: (Alpha Test Build)\n*Fixed a bug that caused enemy spells to unequip player spells.\n*Fixed an unrelated but equally silly bug that prevented the dispel spell from working anyway.\n*Fixed a number of minor bugs and typos in various systems.\n*Added new settings to change the functionality of the information dock, and changed its default functionality.\n*Dramatically increased the opacity of the information dock.\n*Made improvements to the appearance and organization of the combat screen.\n*Improved the appearance of some menus.\n\n!!!Version 0.5.0: (Alpha Test Build)\n*First public version.\n\n!!!Version 0.5.0: (Prototype)\n*Final audio added.\n*Status effects added and implemented.\n*Added journal-link system to scenes.\n*Various improvements to CSS and UI implemented.\n*Save data updater added.\n\n!!!Version 0.4.8: (Prototype)\n*Enemy AI improved.\n*Combat balance improved.\n*Enemy combat features added.\n*Imporved look and organization of UI and menus.\n\n!!!Version 0.4.6: (Prototype)\n*Bug code unpacker fully implemented.\n*Prologue content added.\n*Enemy AI improved.\n\n!!!Version 0.4.5: (Prototype)\n*Fixed bug that caused the desperation attack to become available one round later than intended.\n*Fixed bug where sound would not start on reload of a save file.\n*Improved appearance and organization of CSS.\n*Added the settings menu and settings functionality.\n*Added bug reporting features.\n*Improved combat tutorials.\n\n!!!Version 0.4.1: (Prototype)\n*Inummerable bugs fixed.\n*Image and sound support implemented.\n*Combat design improved.\n\n!!!Version 0.3: (Prototype)\n*First playable build.\n/%<<endif>>%/<</silently>>\n<<if $gamestart is 0>><<link "Back">>\n<<script>>\nDialog.setup("About");\nDialog.wiki(Story.get("about").processText());\nDialog.open();\n<</script>>\n<</link>><<endif>><
The door didn’t come off its hinges--it shattered to splinters. Ripley is a decent fighter, but her best asset by far is that she was at least three times stronger than the average, well-trained soldier.
#notify {\n\tposition : fixed;\n\tdisplay : block;\n\twidth : 16em;\n\tright : -20em; top : 2em;\n\tpadding : 0.5em;\n\tbackground-color : #fff;\n\tcolor : #000;\n\t-webkit-transition-duration : 0.3s;\n\t-moz-transition-duration : 0.3s;\n\t-o-transition-duration : 0.3s;\n\ttransition-duration : 0.3s;\n}\n#notify.open {\n\tright : 0;\n}
Hooks are defined via macros and are related to titles, and are also used by the tutorial system. Hooks occur at certain, definite points throughout combat and run the code contained in these passages silently--they can do things like add a chance to restore hearts on criticals, improve desperation attack damage, and add increased dispel chances. These changes will not be reflected in the payer's stats.\n\nNote that hooks are not a replacement for the balance object. You can access hooks in the IDE via {{{$hook[hookName]}}}. Each hook is an array.
You’re about to fight <<print $enemyname>>.
\nCertain combat actions require stamina to perform. Characters can continue performing a variety of actions until they no longer have enough stamina, at which point, their turn ends. Ending a turn with excess stamina restores grit.\n\n
<<display "plate_ui">>\nEquip this armor?\n\n[[Yes|changearmor][$change to "plate"]]\n[[No|armorswap]]
Some enemies are capable of casting unbound magic, which can have a variety of effects. In addition to spells that simply do damage or heal, certain spells may also cause status effects, damaging your abilities until they end. You can see which status effect (if any) is currently effecting you in the character window during combat.\n\nPossible Status Effects:\n*<<dock "Slowed" "slowed_help">>\n*<<dock "Burned" "burned_help">>\n*<<dock "Blunted" "blunted_help">>\n*<<dock "Shattered" "shattered_help">>\n*<<dock "Weighted" "weighted_help">>\n*<<dock "Held" "held_help">>\n\n\n[[Return to the Journal|journalmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n
<<image "RipSmKid">><<thumb>>"Do you hate them?" Elesun asks, squatting down in front of Ripley.\n\n"What?"\n\n"Do you hate them? Aesil. Akatosh."\n\nRipley stares hard at Elesun for a few seconds in silence. "You know I do."\n\n"We can't get back what we've lost, but every step that you take--every time you decide to keep going--you're shortening their lives. So get up. We'll mourn the dead when they stop piling up."\n\nRipley dries her eyes and stands. "All right," she says, choking back tears.\n\n"I'm proud of you," Elesun says. "Come on."\n\n<<ctrlClick "Continue." "0wall3">>
<<print $character>>'s body itself becomes wreathed in neutral magic that attempts to pull her to the ground.\n\nMild penalty to Move actions. Attacks cost more Stamina than normal. Large penalty to total Stamina.
<<set $enemyname to "Dark Mage Aesil">>\n<<set $enemynumber to 6>>\n<<set $enemypower to 1366>>\n<<set $enemyimg to setup.nme["NME_aes2"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 250>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 10>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 63>>\n<<set $nmedef to 62>>\n<<set $nmemov to 58>>\n<<set $nmemagic to 65>>\n\n<<set $enemyspecialname to "break">>\n<<set $enemyspecial to 7>>\n\n<<set $nmecritchance to 9>>\n<<set $nmecritdam to 1.9>>\n<<set $nmespellpower to 100>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 17>>\n\n<<set $nmemoveset to 5>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 100>>\n\n<<display "bal-adj-nme">>
<<image "IreSm">><<thumb>>Irelith comes to stand next to Elesun in the bailey.\n\n"How'd you and Rip get anything done around here?" she asks.\n<<set $stoneLoc to 0>>\n"What?"\n<<set $relax to 0>>\n"You two must have interesting thoughts to get wrapped up in them so much," <<journallink "Irelith" "codex_Irelith">> says. "Interesting like a mess, that is."\n\n"You have something you want me to do?" Elesun asks.\n\n"No. Doing anything is better than nothing, though, so look busy--it's bad for the men to see you slacking. Find something to patrol. And if you feel like doing some training or running some drills, come talk to me."\n\n"Yes, sir," Elesun says, grinning. "I'll get right to work."\n\n"Harlaus was asking after you, by the way. He's in the main hall with <<journallink "Folsom" "codex_Folsom">>."\n\n"Okay."\n\n//Journal updated.//<<set $storystage to 1>>\n\n<<ctrlClick "Continue." "1bailey">>\n\n\n\n\n\n\n\n\n\n\n
!! You've completed the demo.\n\nThere's not much left for you here...\n\nHowever, if you want, you can try out a boss fight before you go.\n\n<<include 'bossAdjust'>>\n\n<<link 'Start Over'>><<run UI.restart()>><</link>>\n\n
Elesun always was better at fighting and killing than tracking, but Folsom had taught her the basics. The darkness made it more difficult, but Aesil was not known for subtlety. Broken branches--and indeed a few broken trees, litter his wake.\n\nShe also knew the lay of the land. Aesil was unlikely to pass to close to the castle for fear of running across Folsom, and if he was already heading this way, he had to be heading toward Merac, a fairly large town just within the borderlands.\n<<set $mercyKill to 0>>\nAs strong as Aesil is, Ripley's bangles could protect her from his magic almost indefinitely. If it came to a physical fight, she is smart enough and strong enough to escape. Elesun had time; some time anyway.\n\n<<ctrlCon '1onroad'>>
<<image "AesSm3">><<thumb>>"Stay behind me," Elesun says.\n\nElesun draws her sword, but with a flick of Aesil's wrist, it becomes stained with black. The sword wrenches out of her hands and rises to the ceiling, where it clatters to rest as it might have to the ground.\n\n"Damn it."\n\nAesil charges toward Ripley.\n\n<<ctrlClick "Save her!" "0aesil_rescue">>
!!!Control Reference\n\n[img[setup.gen.controls]]\n\n<<ctrlClick "Click here" "main menu">> or press CTRL to continue.
It's huge room with several rows of tables and chairs and two large fireplaces, one on each side. Neither one is lit tonight. The massive gate that leads outside is still shut.\n\nOn the other side, another massive set of wooden doors leads into the throne room. It's also shut.
/%stone collection%/\n<<set $stoneOne to {\n\tdescr: "A small, boxy black stone. Found in the courtyard by Elesun in chapter 1.",\n\tname: "Square Stone",\n\tnum: 1,\n\thave: 0\n }>>\n<<set $stoneTwo to {\n\tdescr: "Almost perfectly round, and whititsh. Found by Elesun in the Druid grove in chapter 1.",\n\tname: "Egg-shaped Stone",\n\tnum: 2,\n\thave: 0\n }>>\n<<set $stoneThree to {\n\tdescr: "Lop-sided, but shaped a little like a heart. Chalky and black in color. Found by Ripley in chapter 2.",\n\tname: "Heart-shaped Stone",\n\tnum: 3,\n\thave: 0\n }>>\n<<set $stoneFour to {\n\tdescr: "Glossy, flat, and shiny. Gray but speckled with lighter gray. Found by Ripley in chapter 2.",\n\tname: "Flat Stone",\n\tnum: 4,\n\thave: 0\n }>>\n<<set $stoneFive to {\n\tdescr: "A rock that was shaped by one of Carthus's firey attacks. Beatiful, smooth, and shiny. Found by Ripley in chapter 4.",\n\tname: "Fire-forged Stone",\n\tnum: 5,\n\thave: 0\n }>>\n<<set $stoneSix to {\n\tdescr: "A purple pebble. Jagged and sharp. Found by Ripley in chapter 4.",\n\tname: "Puple Pebble",\n\tnum: 6,\n\thave: 0\n }>>\n<<set $stoneSeven to {\n\tdescr: "A small glassy pebble--almost like a bead. Found by the queen in 5.",\n\tname: "Shiny Pebble",\n\tnum: 7,\n\thave: 0\n }>>\n<<set $stoneEight to {\n\tdescr: "A large, fist-sized rock shaped like a dome. Heavy. Found by Ripley in chapter 6.",\n\tname: "Dome Rock",\n\tnum: 8,\n\thave: 0\n }>>\n<<set $stoneNine to {\n\tdescr: "A small smooth, white speckled rock. Found by Ripley in chapter 6.",\n\tname: "Speckled Rock",\n\tnum: 9,\n\thave: 0\n }>>\n<<set $stoneTen to {\n\tdescr: "Almost perfectly spherical, but otherwise completely average. Found by Ripley in the Otherworld.",\n\tname: "Globe Stone",\n\tnum: 10,\n\thave: 0\n }>>\n\n/%array of multiple questlines.%/\n<<set $sq to [], $sqDone to []>>\n<<set $quTitle to [], $quDescr to [], $quCompl to [], $quProg to [], $quStatus to []>>\n/%progress: 0=not yet found, 1=start, 10=complete(turn in), 100=complete(removed)%/\n<<set $sq0 to {\n title: "Example Quest Title",\n descrPass: "Passage describing quest goals, with if statements to show var.progress steps.",\n complPass: "Passage to display on completion, with variable changes/rewards; placed in the 'Turn in!' button. Also pops $sq# out of $sq array.",\n progress: 0,\n code: 0\n }>>\n<<set $sq1 to {\n title: "Buy the Blacksmith Time",\n descrPass: "sq1descr",\n complPass: "sq1compl",\n progress: 0,\n code: 1\n }>>\n\n<<set $index to 0>>
<span id="rager">\s\n<span id="journallink"><<link "''Rage'':">><<popup "rageUI">><</link>></span>\n<<print $rageCurrent>>%\n[img[$rageDisplay]]\n<<if $rageCurrent gte 100 and $devilForm is 0 and $formUnlock gt 0 and $playerturn is 1>><center><span id="transformbutton2"><span id="trsOpt"><<link "''-TRANSFORM-''">><<display "rage_trans">><</link>></span></span>\nPress Space</center><<endif>></span>
<<if $titles.has('Unyielding One')>>\n\t<<if $dispCheck lte $dispel>>\n\t\t<<set $dispCheck to random(1, ($nmespellpower - 10))>>\n\t<<endif>>\n<<endif>>
Ripley, “the child of promise,” had been dogged by Akatosh all her life. But she isn’t a child anymore.
<<if $titles.has('Angel Slayer')>>\n\t<<set _max to $maxgrit>>\n\t<<set _curr to $grit>>\n\t<<if _curr lt _max>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 20>>\n\t\t\t<<set _reg to 30 + ($lvl * 5)>>\n\t\t\t<<set _reg to _reg - _odds>>\n\t\t\t<<set $grit to Math.trunc($grit + _reg)>>\n\t\t\t<<if $grit gte $maxgrit>>\n\t\t\t\t<<set $grit to $maxgrit>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
"Did she say that?"\n\nElesun nods.\n\n"When? At the seige? Did she say anything else?"\n\nElesun grins.\n\n"Hm. Well, we are very good friends. Don't you have work to do?"
<<if $dockmode is 1>>* <label><<radiobutton "$dockmode" 1 checked>> Normal: All dock links will appear throughout the text. Recommended.</label>\n* <label><<radiobutton "$dockmode" 0>> Clean: Shows only important dock links (for those who are a bit overwhelmed by all the links).</label><<else>>* <label><<radiobutton "$dockmode" 1>> Normal: All dock links will appear throughout the text. Recommended.</label>\n* <label><<radiobutton "$dockmode" 0 checked>> Clean: Shows only important dock links (for those who are a bit overwhelmed by all the links).</label><<endif>>
<<nobr>><<set _HarlChat1 to either(\n"You're getting along with my father, right?", \n"I heard you encountered Aesil at the siege. You're all lucky to be alive.",\n"Keep your wits about you; the enemy has shown us they'll stop at nothing.",\n"It's been so long. It's so good to see you and Ripley again.",\n"Irelith probably won't admit it, but she's missed you and Ripley these last few months.",\n"Don't forget to rest up before you set out."\n)>>\n<<endnobr>><<print '"' + _HarlChat1 + '"'>>
The castle's head blacksmith wants Elesun to talk to the king on his behalf, to request more time for repairing the armor of the troops.\n\n<<link "Accept his request.">>\n <<set $sq1.progress to 1>>\n <<run $sq.push($sq1)>>\n <<run Dialog.close()>>\n<</link>>\n\n<<link "Deny his request.">>\n <<run Dialog.close()>>\n<</link>>
<<display "heal_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "heal"]]\n[[No|spellswap]]
<<if $titles.has('Protector')>>\n\t<<set $damagetoNME to Math.trunc($damagetoNME * 1.2)>>\n<<endif>>
"Lady Elesun," one of the guards says. "We're just finishing loading supplies. Won't be much longer. Climb aboard whenever you're ready to depart."\n\n"Alright, thanks," Elesun says.
/% 10 %/\n<<set $specialMult to 0.7>>/%damage of spell%/\n<<set $SpEffName to "">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,0)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Heal">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
Blessing grants a wide variety of small benefits with no drawbacks. It will provide bonuses to nearly everything you do.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
Current Weapon: <<print $weaponname>>\n\nSelect a weapon:\n[[Unarmed]] (Level <<print $unarmedtraining>>)\n[[Longsword]] (Level <<print $longswordtraining>>)\n<<if $gswordhave is 1>>[[Great Sword]] (Level <<print $greatswordtraining>>)<<endif>>\n<<if $katanahave is 1>>[[Katana]] (Level <<print $katanatraining>>)<<endif>>\n<<if $spearhave is 1>>[[Spear]] (Level <<print $speartraining>>)<<endif>>\n<<if $sswordhave is 1>>[[Side Sword]] (Level <<print $sideswordtraining>>)<<endif>>\n<<if $gauntletshave is 1>>[[Clawed Gauntlets]] (Level <<print $gauntletstraining>>)<<endif>>\n<<if $scythehave is 1>>[[Scythe]] (Level <<print $scythetraining>>)<<endif>>\n<<if $saberhave is 1>>[[Saber]] (Level <<print $sabertraining>>)<<endif>>\n<<if $axehave is 1>>[[Battle Axe]] (Level <<print $battleaxetraining>>)<<endif>>\n\n[[Back|equipmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>
This is a little bit of text.
<<display "rage_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "rage"]]\n[[No|spellswap]]
<<audio "equip" play>>Equipment changed!\n\n[[Okay.|equipmenu]]\n\n<<if $change eq "spear">>\n\t<<display "spear">>\n<<elseif $change eq "axe">>\n\t<<display "battleaxe">>\n<<elseif $change eq "unarm">>\n\t<<display "unarmed">>\n<<elseif $change eq "gaunt">>\n\t<<display "gauntlets">>\n<<elseif $change eq "side">>\n\t<<display "sidesword">>\n<<elseif $change eq "scyt">>\n\t<<display "scythe">>\n<<elseif $change eq "katn">>\n\t<<display "katana">>\n<<elseif $change eq "great">>\n\t<<display "greatsword">>\n<<elseif $change eq "long">>\n\t<<display "longsword">>\n<<elseif $change eq "sabr">>\n\t<<display "saber">>\n<<endif>>\n<<stats>>
You've found an interesting-looking stone. Ripley keeps a rock collection; you should show her your find.
A curved blade often used by calvalry.\n\nA well-balanced weapon, slightly weaker than the longsword in hand-to-hand combat, but much stronger when used as a skirmishing weapon.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Low|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Moderate|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|High|\n*__Finesse__: High\n*__Stamina__: Moderate
\n\nUpgrade complete!\n\n\n[[Okay.|$exitpassage][$gamestart to 1]]
$gamestart to 2: display [return to game] in menu\n$gamestart to 1: normal menu\n$gamestart to 0: only [mute sound] in menu\n\n$return: stores <passage()> on link click\n\nno saves on [menu] tagged passages
<<set $spellname to "">>\n<<set $schoolname to "">>\n<<set $spell_ui to "">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n/%training%/
Flameshroud provides a significant boost to defense, dispel, and dodge, but slightly reduces critical attack chance.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_down]]|//Moderate//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_up]]|//Moderate//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_up]]|//Moderate//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
Elesun is kinking herself for not noticing it earlier--the deafening silence.
<<image "RipSmKid">>As Elesun runs across the wall with <span id="goneA"><<dock "Ripley" "0wall2Rip">></span> close behind, Ripley suddenly stops in front of the door to a <<action "storeroom" "0wall2door">>.\n\nThey're getting close to the <<if $helpServants is 1>><<action "throne room" "0wall2continue">><<else>><span id="gone">throne room.</span><<endif>>\n\nThere isn't much <<weak "time" "0wall2time">>.\n\n<<message>><<display "helpdecisions2">><</message>>\n\n<<info>>
<<image "RipSmKid">><<if $choice2 is 0>>Elesun and Ripley run along the wall. They're getting close now. Ripley suddenly breaks away. She leans over the side of the wall and vomits. When she's finished, she sits down and cries softly.\n\n<<endif>><<if $choice2 is 0>>It's <<action "hard to see her like that" "0wall3Rip">>. <<else>><<masteraudio stop>><<audio "oh" time 25 loop play>><<set $song to 0>><<weak "Ripley" "0wall3Rip">> seems to be feeling a bit better now.<<endif>>\n\nFortunately, with <<weak "Folsom" "0wall3Folsom">> keeping <<weak "Aesil" "0wall3Aes">> busy, they shouldn't need to worry too much now.\n\nThe throne room is just <<action "up ahead" "0wall3south">>.\n\n<<info>>\n\n\n\n\n\n\n\n
<<image "HarlSmKid">><<image "FolsomSm">>The main hall <<weak 'took a beating' '1mainWitch'>> during the siege, and wooden scaffolding is still in place under parts of the ceiling. It's still a stately place in spite. Young Prince <<action 'Harlaus' '1mainHarl'>> is off in the corner of the room, speaking quietly with <<action 'Folsom' '1mainFolsom'>>.\n\nThe <<action 'door' '1mainDoor'>> to the throne room is open.\n\n<span id="navbox"><<mapHarlan $now>></span>\n\n<<info>>
<<image 'AesSm3'>><<image 'RipSmKid'>>Aesil just smiles.\n\n"Shit," Elesun says. She hears a muffled shout from behind, and turns to see a group of sellswords descending upon the guards.\n\n"Get Ripley," one of the guards shouts.\n\nElesun turns and runs toward Ripley as fast as she can, but Aesil's dark magic is already swirling around her. Ripley is gasping, both arms outstretched, her bangles shining as she resists.\n\nElesun leaps and brings her sword around, slashing at Aesil, and cleaving off his outstretched arm. Aesil stumbles back, but the arm is already regrowing. He fires a blast of magic at Elesun, forcing her to dive out of the way.\n\nElesun jumps back up and only has a moment to react before a blade slashes at her. She blocks it, and finds herself crossing swords with a sell sword.\n\n"Out of my way!" Elesun shouts.\n\n<<ctrlCon 'combat_call_1_1'>>
The king loved Ripley, and being apart from her was probably hard for him--he thought of her as a daughter. Irelith and Elesun had convinced him that her training and safety was more important, though, and the king gave Elesun leave to bring Ripley here, to Harlan Castle. The place was also occupied by a minor local noble, but the king persuaded him to give up the fief.
<<set $song to -1>><<masteraudio stop>><<audio "herat7" loop play>><<image "AesSm3">><<image "FolsomSm">>Before Elesun can take a step, <<journallink "Aesil" "codex_Aesil">> comes careening through the air past her, and goes scattering across the ground.\n\n"Hello<<if $helpServants is 1>> again<<endif>>, Elesun," a voice says. She looks over to see Folsom standing there, looking rather exhausted.\n\n<<if $helpServants is 1>>"He's still not dying I see," Elesun says.<<else>>"Folsom?" Elesun says. "It's good to see you. So Aesil's here, too. Great."<<endif>>\n\n"How are things over here?"\n\n"Not great. <<journallink "Irelith" "codex_Irelith">>'s pretty hurt. She could use your expertise."\n\n<<journallink "Folsom" "codex_Folsom">> frowns. "I'm worried that if I stop hitting Aesil with my magic, he'll kill us all."\n\n"I'll take over for a minute then."\n\n"Last time you barely lasted ten seconds."\n\n"Then you'd better be fast."\n\nFolsom sighs. "Very well. Don't die. It'd break poor Ripley's heart."\n\nWith that, Folsom runs off toward the throne room.\n\n<<ctrlClick "Continue." "0aesil4">>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
The soldier falls before Elesun.<<masteraudio stop>><<audio "mx" loop play>>\n\nNearby, the remaining two guards finish off the last of the sellswords. Elesun looks around, but doesn't see Ripley or Aesil anymore.\n\n<span id="ctrlClick">[[Continue|1atcamp1][$gamestart to 1]]</span>
/% 1 %/\n<<set $specialMult to 0.5>>/%damage of spell%/\n<<set $SpEffName to "Slowed">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,1)>>/%time adjustment%/\n\n<<set $NMESpMov to 0.7>>/%mov debuff%/\n<<set $NMESpDef to 0.9>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 0.9>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n/%additional casts increase time:%/\n<<set $SpEffTimeRecast to either(1,1,2)>>\n\n<<set $specialname to "Swamp">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
<span id="enemystatupdate"><<display "nmegritbar">><<display "nmeheartbreaker">><<if $combatimages is 1 and $mobile neq 1>><span id="nmeport">[img[$enemyimg]]</span><<endif>>\n<<print $enemyname>> (<<print $enemypower>>)\n\n<<if $combatimages is 1>>[img[$NMEgritdisplay]]<<else>>Grit: <<print $nmegrit>><<endif>>\n<<if $combatimages is 1>>[img[$NMEheartdisplay]]<<else>>Health: <<print $nmehealth>><<endif>>\n<span id="oneAct">[[1. Attack|0aesil4Rip][$gamestart to 1]]</span>
A suit of lightly padded cloth. <<if $clothplus is 1>>Or so it seems. Though this armor may not seem like much, it's been forged by the legendary blacksmiths of the Elysian realm, and should not be underestimated.<<endif>>\n\nCloth armor doesn't restrict movement, but offers minimal protection.\n\n|[img[setup.ui.icons.ui_def]]|Defense Bonus:|Very Low|\n|[img[setup.ui.icons.ui_mov]]|Encumberance:|None|
<<if $devilForm is 1>>\n\t<<payload 'onRevert'>>\n\t<<set $rageCurrent to $rageCurrent - $rageDecay>>\n\n\t<<if $rageCurrent lte 1>>\n\t\t<<set $devilForm to 0>>\n\t\t<<set $rageCurrent to 0>>\n\t\t<<display "transform_updater">>\n\t\t<<set $rageCurrent to 1>>\n\t\t<<set $rager to either(1,2,3,4,5)>>\n\n\t\t<<switch $rager>>\n\t\t<<case 1>>\n\t\t\t<<audio "rage-drop1" play>>\n\t\t<<case 2>>\n\t\t\t<<audio "rage-drop2" play>>\n\t\t<<case 3>>\n\t\t\t<<audio "rage-drop3" play>>\n\t\t<<case 4>>\n\t\t\t<<audio "rage-drop4" play>>\n\t\t<<case 5>>\n\t\t\t<<audio "rage-drop5" play>>\n\t\t<<default>>\n\t\t\t<<audio "rage-drop1" play>>\n\t\t<</switch>>\n\t\t<<if $characterHide is 0>>\n\t\t<<dialog>>\n\n\t\t\tRipley has reverted to her normal form.\n\n\t\t<</dialog>>\n\t\t<<endif>>\n\t\t/%<<replace "#tray">>\n\t\t\t<<display "combat_portrait">>\n\t\t<</replace>>%/\n\t\t<<comUpdate>>\n\t<<endif>>\n<<endif>>
<<first>><<masteraudio stop>><<audio 'summer' loop play>><</first>><<image 'manSm'>><<thumb>>
Harlan Castle was built by the third king of Juno, Harlan, a few hundred years ago--Elesun was never very good with dates. About fifty years ago it was restored, and the old fortress still holds together well, all things considered.
/% 3 %/\n<<set $specialMult to 1.2>>/%damage of spell%/\n<<set $SpEffName to "">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,0)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Hellfire Bomb">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
As you progress through the game, you will encounter different gameplay elements. In __spaces__, you will be able to explore your surroundings and perform actions using the information dock. In __scenes__, you’ll either have the option to continue or be asked to make a decision.
Stats based on Ripley's. Summonable.\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<link 'Fight Aesil as Elesun Lv 5'>><<set $lvl to 5, $strrank to 4, $agirank to 2, $endrank to 2>><<stats>><<display 'Aesil-boss-1-1'>><<goto 'combat_test_2'>><</link>>\n\n<<link 'Fight Aesil as Ripley Lv 6'>><<display 'switchtoRipley'>><<set $lvl to 6, $strrank to 4, $agirank to 3, $endrank to 2>><<stats>><<display 'Aesil-boss-1-1'>><<goto 'combat_test_2'>><</link>>
!Player's Turn\n<<nobr>>\n<<set $playerturn to 1>>\n<<display "cominfo_fake0">><<if $combatimages is 1>><<comPt>><<endif>>\n<span id="combatNME"><<display "combatNME_fake0">></span>\n\n\n<<endnobr>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set $spellname to "Dispel">>\n<<set $schoolname to "Neutral">>\n<<set $p_spellname to "Dispel">>\n<<set $spell_ui to "dispel_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 5>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 30>>\n\n<<if $neutraltraining is 1>>\n\t<<set $spelldispel to 35>>\n<<elseif $neutraltraining is 2>>\n\t<<set $spelldispel to 40>>\n<<elseif $neutraltraining is 3>>\n\t<<set $spelldispel to 50>>\n<<endif>>
The horse's breathing is labored, and he's swaying a bit as he runs.\n\nElesun pats the die of his neck. "Hang in there, boy."
You’re about to fight <<print $enemyname>>.\n\n<<help "helpNMEspells">>
<<set $weaponname to "Long Sword">>\n<<set $weapon_ui to "lswd_ui">>\n\n<<set $watk to 1.0>>\n<<set $wdef to 1.0>>\n<<set $wmov to 1.0>>\n<<set $critrange to 100>>\n\n<<set $wStaUse to 5>>\n\n<<if $longswordtraining gte 1>>\n\t<<set $watk to 1.1>>\n<<elseif $longswordtraining is 2>>\n\t<<set $watk to 1.1>>\n\t<<set $wdef to 1.1>>\n<<elseif $longswordtraining is 3>>\n\t<<set $watk to 1.1>>\n\t<<set $wdef to 1.1>>\n\t<<set $wmov to 1.1>>\n<<endif>>
Combat Tutorials: <span id='comTutOpt' style='color:#B10DC9;'>On </span> <<button 'Change'>>\n\t<<if setup.comTut>>\n\t\t<<display 'pull_tut_hooks'>>\n\t\t<<replace '#comTutOpt'>>Off<</replace>>\n\t\t<<set setup.comTut to false>>\n\t<<else>>\n\t\t<<display 'place_tut_hooks'>>\n\t\t<<replace '#comTutOpt'>>On <</replace>>\n\t\t<<set setup.comTut to true>>\n\t<<endif>>\n<</button>>
<<image "RipSmKid">><<action 'Ripley' '1ripqRip'>> appears to be <<weak 'meditating' '1ripqMed'>> when Elesun enters, sitting on the floor, legs folded, hands together in her lap in the Druid way. She doesn't seem to notice Elesun.\n\nOn display in the room's far side, near the <<weak 'window' '1ripqWindow'>> is a small box with a handful of <<dock 'strangely shaped rocks' '1ripqRocks'>>.\n\n<span id="navbox"><<mapHarlan $now>></span>\n\n<<info>>
<<set $gamestart to 0>>\n\n\n\n<div class="text-focus-in"><div class="titleText">+Holy Land</div></div>\n<<timed 2.5s t8n>><center>\n!!!A choice-driven narrative adventure game.\n</center><</timed>>\n\n<<timed 5s>>\n<<goto "title2">>\n<</timed>><span id="ctrlClick">@@display: none;[[skip|title2]]@@</span>\n
Dark tendrils materialize and attempt to pin <<print $character>> and root her in place.\n\nMassive penalty to Move actions and total Stamina. Moderate penalties to Attack actions and damage dealt.
Elesun already pulled the lever.
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has attacked the enemy.\n\n<<name>> can continue attacking until she is out of stamina (stamina is displayed in the status window near the bottom of the screen). Each weapon costs a different amount of stamina to use. Heavier weapons deal more damage, but cost more stamina.\s\n<</dialog>>\n<<tutorialHook 'tut_onFirstAtk'>>
<<set $spellname to "Blessing">>\n<<set $schoolname to "Light">>\n<<set $p_spellname to "Blessing">>\n<<set $spell_ui to "bless_ui">>\n\n<<set $spellcrit to 5>>\n<<set $spellcritdam to 1.1>>\n<<set $spelldodge to 5>>\n<<set $spellgrit to 10>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 5>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 5>>\n\n<<if $lighttraining is 1>>\n\t<<set $spellcrit to 10>>\n<<elseif $lighttraining is 2>>\n\t<<set $spelldodge to 10>>\n\t<<set $spellcrit to 10>>\n<<elseif $lighttraining is 3>>\n\t<<set $spelldispel to 10>>\n\t<<set $spelldodge to 10>>\n\t<<set $spellcrit to 10>>\n<<endif>>
When you talk to characters, you'll use the links presented to ask different questions and recieve responses in the information dock, similar to navigating a space. Also like a space, asking certain things may lead to new or different things to ask about.\n\nThere are also a few special options you may find:\n*''Chit-chat'': Select chit-chat to hear about whatever happens to be on the character's mind at the moment. You can keep clicking it for new lines. Chatting can help you learn about lore, hints, and leads for new quests.\n*''Services'': Some characters offer services, like training or renting rooms. You can talk to them to use these services.\n*''Quests'': Some characters will give you specific tasks and side-quests that you can optionally choose to complete.
<<set $weaponname to "">>\n<<set $weapon_ui to "">>\n\n<<set $watk to 1.0>>\n<<set $wdef to 1.0>>\n<<set $wmov to 1.0>>\n<<set $critrange to 100>>\n\n<<set $wStaUse to 0>>\n\n/%training%/
<<set $version to 73>>\n<<set $versionnumber to "0.7.3">>\n<<set $webversion to 1>>/% 1-browser, 0-exe %/\n\n<<set $debug to 0>>/% access debug features %/\n<<set $demomode to 0>>/% locks off unfinished parts %/\n<<set $release to 1>>/% 0-pw protected launch %/\n\n/% launch options %/\n<<set $combatimages to 1>>\n<<set setup.audioswitch to 1>>\n<<set setup.masteraudioswitch to 1>>\n<<set $dockmode to 1>>\n<<set $dockdisp to 1>>\n<<set $characterHide to 0>>\n\n/% level caps %/\n<<if $demomode is 1>>\n\t<<set setup.lvlcap to 8>>\n<<else>>\n\t<<set setup.lvlcap to 20>>/%level cap%/\n<<endif>>
This is a normal amount of text. This is a normal amount of text. This is a normal amount of text. \n\nThis is a normal amount of text. This is a normal amount of text. \n\nThis is a normal amount of text.
<<print $character>>'s weapon is wreathed in neutral magic, blunting it temporarily\n\nMassive penalies to Attack actions and damage dealt.
<<combat "rank5lvl3_witch" "combat_intro_0_3" "combat_outro_0_5">>
<<set $armorname to "">>\n<<set $armor_ui to "">>\n\n<<set $aatk to 1.0>>\n<<set $adef to 1.0>>\n<<set $amov to 1.0>>\n\n/%upgrade%/
"I'm not discussing this with you Elesun. Between you and Irelith, I've had quite enough of the match-making."
OOOOOOOHHHHOHOHOH\n\nSPOOKY GHOSTS
$(document.head).append("<link rel='icon' href='assets/img/ic.png' />");\n\nConfig.passages.start = "Start";\nConfig.history.controls = false;\nConfig.history.maxStates = 1;\nconfig.saves.autosave = "save";\nconfig.saves.id = "holy-land";\nConfig.saves.version = "0.5.0";\nConfig.loadDelay = 1000;\nConfig.saves.onLoad = function () {\n\tpostrender['restore-audio'] = function (_, taskName) {\n\t\tdelete postrender[taskName];\n\t\tnew Wikifier(null, Story.get('AudioLoad').text);\n\t};\n\nprerender['save-update'] = function (_, taskName) {\n\t\tdelete postrender[taskName];\n\t\tnew Wikifier(null, Story.get('updater').text);\n\t};\n\n};\nconfig.saves.isAllowed = function () {\n\tif (tags().includesAny("combat", "menu", "nosave")) {\n\t\t$(document).one('tw:dialogclosed', function () {\n\t\t\tUI.alert("You can't save right now.");\n\t\t});\n\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nConfig.saves.autoload = function () {\n var autoLoad = "prompt";\n if (State.variables.holyLandAutoLoad === 1) {\n return autoLoad;\n } else {\n return false;\n }\n};\n\nConfig.passages.descriptions = function () { \n var ch = State.variables.chapter;\n var stage = State.variables.storystage;\n var locCode = ch * 10 + stage;\n var descr = ""\n\n switch (ch) {\n case 0:\n descr = "Prologue";\n break;\n case 1:\n descr = "Chapter 1";\n break;\n case 2:\n descr = "Chapter 2";\n break;\n case 3:\n descr = "Chapter 3";\n break;\n case 4:\n descr = "Chapter 4";\n break;\n case 5:\n descr = "Chapter 5";\n break;\n case 6:\n descr = "Chapter 6";\n break;\n case 7:\n descr = "Chapter 7";\n break;\n default:\n descr = "";\n }\n\n if (stage === 0) {\n descr = descr + ": Introduction";\n } else {\n descr = descr + ": Part " + stage;\n }\n\n if (tags().includes("space")) {\n descr = descr + ": Space";\n } else if (tags().includes("scene")) {\n descr = descr + ": Scene";\n } else if (tags().includes("choice")) {\n descr = descr + ": Choice";\n } else if (tags().includes("save")) {\n descr = descr + ": Checkpoint";\n }\n\n return descr;\n};\n
A suit of ornate plate armor. <<if $clothplus is 1>>Or so it seems. Though this armor may not seem like much, it's been forged by the legendary blacksmiths of the Elysian realm, and should not be underestimated.<<endif>>\n\nPlate armor is heavy, even to the point of hampering attacks. However, it's protective qualities are unrivaled.\n\n|[img[setup.ui.icons.ui_def]]|Defense Bonus:|High|\n|[img[setup.ui.icons.ui_mov]]|Encumberance:|High|
<<if $playeraction is 3>><<set $movbonus to $sta>><<payload 'onMov'>><<else>><<set $movbonus to 0>><<endif>>\n<<set $rgn to Math.trunc($regen+($sta*$regenmult)+$spellregen)>>\n<<set $healing to $spellhealing+Math.trunc($rgn*1.5)>>\n<<if $spellhealing gt 0 and $playeraction is 2>>\n\t<<set $rgn to 0>>\n<<endif>>\n\n<<if $playeraction is 2 and $spellhealing gt 0>>\n\t<<set $temp_healing to 0>>\n\t<<payload 'onHeal'>>\n\t<<if $sta lt $maxsta/4>>\n\t\t<<set $temp_healing to Math.trunc($healing*0.3)>>\n\t<<elseif $sta lt $maxsta/2>>\n\t\t<<set $temp_healing to Math.trunc($healing*0.7)>>\n\t<<elseif $sta lt $maxsta*0.75>>\n\t\t<<set $temp_healing to Math.trunc($healing*0.9)>>\n\t<<elseif $sta eq $maxsta>>\n\t\t<<set $temp_healing to Math.trunc($healing*1.1)>>\n\t<<endif>>\n\t<<if $devilForm is 1>>\n\t\t<<set $temp_healing to Math.trunc($temp_healing/2)>>\n\t<<endif>>\n\t<<set $endrndm1 to $character + " heals herself for " + $temp_healing + " points.">>\n\t<<set $grit to $grit+$temp_healing>>\n\t<<if $grit gt $maxgrit>>\n\t\t<<set $grit to $maxgrit>>\n\t<<endif>>\n<<endif>>\n\n<<if $playeraction is 2>><<payload 'onDef'>><<endif>>\n\n<<if $rgn gt 0 and $devilForm is 0>>\n\t<<payload 'onRegen'>>\n\t<<set $endrndm1 to $character + " has regenerated " + $rgn + " grit.">>\n\t<<set $grit to Math.trunc($grit+$rgn)>>\n\t<<if $grit gt $maxgrit>>\n\t\t<<set $grit to $maxgrit>>\n\t<<endif>>\n<<endif>>\n\n<<if $nmeregen gt 0>>\n\t<<set $nmeluck to either(1.0,1.0,1.2,1.5,1.1,1.2,0.9)>>\n\t<<set $nmegrit to Math.trunc($nmegrit+($nmeregen*$nmeluck))>>\n\t<<set $endrndm2 to $enemyname + " has regenerated " + Math.trunc($nmeregen*$nmeluck) + " grit.">>\n\t<<if $nmegrit gt $nmemaxgrit>>\n\t\t<<set $nmegrit to $nmemaxgrit>>\n\t<<endif>>\n<<endif>>\n\n<<if $specialOn is 1>>\n\t<<if $round gt $SpEffEnd + 1>>\n\t\t<<set $specialOn to 0>>\n\t\t<<set $NMESpMov to 1.0>>\n\t\t<<set $NMESpDef to 1.0>>\n\t\t<<set $NMESpAtk to 1.0>>\n\t\t<<set $NMESpDam to 1.0>>\n\t\t<<set $NMEStaUse to 0>>\n\t\t<<set $NMEStaLmt to 0>>\n\t\t<<set $SpEffDisplay to "">>\n\t<<endif>>\n<<elseif $specialOn is 0>>\n\t<<set $NMESpMov to 1.0>>\n\t<<set $NMESpDef to 1.0>>\n\t<<set $NMESpAtk to 1.0>>\n\t<<set $NMESpDam to 1.0>>\n\t<<set $NMEStaUse to 0>>\n\t<<set $NMEStaLmt to 0>>\n\t<<set $SpEffDisplay to "">>\n<<endif>>\n\n<<display "trans_end">>\n\n<<set $sta to $maxsta - $NMEStaLmt>>\n<<display "health_checker">>\n<<if $health gt 0 and $nmehealth gt 0>>\n\t<<set $combatnext to "highway1">>\n<<endif>>\n\n<<set $flinched to false>>
<<image "RipSmKid">><<thumb>>Ripley is sitting on the floor near one of the fireplaces out in the main hall. She isn't crying--she isn't making a sound at all. That's worse than crying, in Elesun's experience.\n\nElesun approaches, but Ripley doesn't move or look up.\n\n<span class='action-link'>[[Give her some space.|0choice3leavealone][$ripleyscars++]]</span>\n\n<span class='action-link'>[[Try to comfort her.|0choice3comfort][$ripleytp++]]</span>
<<display "keen_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "keen"]]\n[[No|spellswap]]
!Creatures\n<span id="codexcre">\nThe world is populated by many stange and wonderful things.</span>\n\n<<link "Human Beings">>\n\t<<replace "#codexcre">>\n''Humans''\n\nThough they share the world with all manner of other intelligent creatures: trolls, vampires, dragons, demonkin, and occasionally Elysians, humans have managed to make it to the top. While they may not be as strong as some of the other races of the world, humanity’s obsession with building, organizing, and conquering has cemented them as the most powerful and numerous race in the world, and their civilizations can be found in every corner of every continent.<</replace>>\n<</link>>\n<<link "The Elysians">>\n\t<<replace "#codexcre">>\n''Elysians''\n\nElysians hail from the other world--the holy land. Though generally regarded as good by humans, the Elysians’ strange ways, riddle-like mannerisms, and terrifying appearance tend to cause unease, sometimes even panic, when one does show up. What is known is that the Elysians seem to consider human beings, even on an individual level, worthy of concern and care, and they frequently appear during large scale natural catastrophes and other such events and lend aid.\n\nElysians are powerful. Whether they can be killed or even hurt isn’t readily known, and their physical strength dwarfs the raw brawn of even the dragons. Their magic, though similar to the typical schools practiced by humans, is similarly powerful.<</replace>>\n<</link>>\n<<link "Vampires">>\n\t<<replace "#codexcre">>\n''Vampires''\n\nSometimes called darkkin or nightkin, vampires subside off the blood of other creatures. Their ranks are made up of converted humans, and if other creatures can be made vampires, it’s certainly rare. Vampires themselves are all a member of the same bloodline, and carry the curse of their progenitor, the mythical vampire lord, in their blood.\n\nThe process of turning a human into a vampire is more ritualistic and intentional than most realize--simply fighting a vampire poses no risk of contracting the curse. Vampire society is notable for its lack of any kind of individual expression. Though marginally self-sufficient, every vampire in the world is in most ways a slave to the vampire that made him or her, and this goes up the chain all the way to the vampire lord himself. This slavery is speculated by some scholars to be related to the Vow Logic.<</replace>>\n<</link>>\n<<link "Dragons">>\n\t<<replace "#codexcre">>\n''Dragons''\n\nMassive winged beasts resembling reptiles, dragons were the first beings made by the gods, and share a special connection to the Hellish Flame. The power of the flame is shared and split between the dragons, and when one dies, his power is redistributed amongst the survivors.\n\nAs a dragon ages, or grows wounded, his connection with the Flame begins to fade, and once it fades completely, the dragon turns to stone and shatters. The piece of stone that forms from its heart becomes an "egg," and after a period of time, a new dragon can be called forth, fully grown, from it by another dragon or dragonkin. Some dragons can also generate these stones during their lives without dying, though this is rare.\n\nDragons all share a connection to a communal memory and have telepathic powers. That said, they are rarely, if ever, of one mind, and have as personalities as varied as humans. Akatosh, and some devastating in-fighting, have left dragons nearly extinct.\n\nNo creatures alive today have as strong a connection to the Vow Logic as dragons.<</replace>>\n<</link>>\n<<link "Demons">>\n\t<<replace "#codexcre">>\n''Demons''\n\nDemons are specualted to exist as a sort of balanced opposite to the Elysians. While conclusive proof has never been found, many consider Akatosh to be some kind of demon. Akatosh's exact nature is difficult to pin down, but most scholars agree that he is something else--neither Elysian nor Demonkin, nor human, and it seems likely that other, simmilar beings should exist somewhere.<</replace>>\n<</link>>\n<<link "Demonkin">>\n\t<<replace "#codexcre">>\n''Demonkin''\n\nThough the moniker "demonkin" is very likely inaccurate, it's remained for simple want of an appropriate alternative term. The demonkin begin being born into the world shortly after the arrival of Akatosh. When Akatosh arrives every few centuries, he indwells the body of a living human and sets about destroying the world. The demonkin, all female, are born to normal, unsuspecting parents and rise up to challenge him. Demonkin are significantly stronger and more resilient than ordinary humans, but otherwise are not much different.\n\nOne particular demonkin in each generation is known as the Child of Promise. She is born on a certain day, when the stars are in a certain place, and is given more power than the others. She is the only one born with enough power to rival Akatosh, and is "destined" to face him.\n\nThe Child of Promise is not always successful. When she fails, Akatosh generally destroys a near apocalyptic portion of the human race before vanishing for another few hundred years.\n\nScholars estimate that the Child of Promise is successful only slightly more often than she is unsuccessful, and specualte that Akatosh's next incarnation becomes much more powerful every time she succeeds until she eventually fails. The current incarnation of Akatosh comes on the heels two consecutive defeats.<</replace>>\n<</link>>\n<<link "Dragonkin">>\n\t<<replace "#codexcre">>\n''Dragonkin''\n\nDescription of the Dragonkin<</replace>>\n<</link>>\n\n<<link "The Gods">>\n\t<<replace "#codexcre">>\n''The Gods''\n\nDescription of the Gods<</replace>>\n<</link>>\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<image 'RipPtKid'>>Elesun knocks gently on the wall. Ripley turns to look.\n\n"What's up, Elesun?" she asks.\n\n<<dock "Chit-chat." "RipChat1">>\n\n<<dock "Ask about Harlaus." "1RipHarl">>\n\n<<dock "Ask how she's doing." "1RipHow">>\n\n<<if $HarlScene>><<dock "Ask about visiting the Druids." "1RipDruids">>\n\n<<endif>><<if $stoneOne.have is 1>>[[Show her the stone.|1RipStone1]]\n\n<<endif>><<dock "Never mind." "1RipNVM">>\n\n<<info>>\n\n\n\n\n
<<display "chain_ui">>\nEquip this armor?\n\n[[Yes|changearmor][$change to "chain"]]\n[[No|armorswap]]
<<timed 3s t8n>><<image "FolsomPt">><</timed>>"Elesun! Ripley!" A familiar voice is calling...\n<<timed 3s t8n>>\n"<<journallink "Folsom" "codex_Folsom">>?" Elesun says. "what are you doing here?"\n\n"I heard Aesil was nearby."\n\n"He is. He's--"\n\nBefore Elesun can finish, <<journallink "Aesil" "codex_Aesil">> bursts through the door. He notices Folsom, and grins. "Wizard," he hisses.\n\n"Shit!" Folsom shouts. "Clear out!" Folsom raises his hands, and a reddish orb of magical energy forms before him.\n\n"Oh shit." Elesun grabs Ripley by the shoulders and tackles her to the ground.\n\nA beam of pure hellish energy erupts from Folsom's hands, sending Aesil flying back.\n\n"I've got him," Folsom says. "You two get out of here."\n\n<<ctrlClick "Get moving." "0wall3" "leave">>\n<</timed>>\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set $tips to [\n"If you encounter any bugs, you can report them from the settings menu.", \n"Change your equipment to confront new challenges.", \n"The game autosaves after every handful of scenes and events. Still, it's wise to save the game yourself occasionally.", \n"If the number of links in the game text distracts you, try turning the dock mode to clean in the settings menu.", \n"Some fights can be avoided based on the decisions you make.", \n"You can keep attacking until you're out of stamina.", \n"The 'power' of an enemy, relative to the power of your character, is an indicator of how good a fight they'll put up.", \n"You can change the appearance and behavior of the information dock from the settings menu.", \n"Each attribute is capped at 10, while your character's overall level is capped at 20.", \n"Winning fights is not the only way to earn experience and level up.", \n"There are many solutions to a given problem. There are no best choices.", \n"Never underestimate moving and defending, as tempting as an all-out attack might be.", \n"You will be given the chance to adjust the difficulty before starting the game and after the prologue. After that, you'll have to live with your decision.",\n"Explore your surrounding with the information dock. You'll get more context for the story, and may even find some new equipment or items.", \n"Ripley has quite a collection of smooth and strange-shaped stones. Keep an eye out and help add to her collection.", \n"Side quests aren't logged in the journal, but can be quite important. They can lead to new equipment and abilities.", \n"Not all enemies fight the same way--many enemies have powerful spells and abilities at their disposal, and even ordinary enemies can score critical hits.", \n"Elesun's vows, and how you choose to approach and interpret them, will have a major effect on how people view her.",\n"There is no tip here.", \n"Review the codex (found in the journal menu) for background information on the world and context for the story. It's not required reading, but it may enhance your enjoyment of the game.", \n"Double click the information dock to collapse it. Click on a link or press the space bar to bring it back.",\n"You can review the help menu from the journal for information and instructions.", \n"Make no vows.",\n"You can double click on the information dock to collapse it, and press space to reset it.",\n"Most menus and sub-menus can be accessed through keyboard shortcuts. Press H to bring up the help menu, and find out more there."\n]>>\n<<if ndef _tipIdx>>\n\t<<set _tipIdx to random($tips.length-1)>>\n<<else>>\n\t<<if _tipIdx lt ($tips.length - 1)>>\n\t\t<<set _tipIdx++>>\n\t<<else>>\n\t\t<<set _tipIdx to 0>>\n\t<<endif>>\n<<endif>>\n<<set $tip to $tips[_tipIdx]>>
<<set $enemyname to "Forest Witch">>\n<<set $enemynumber to 4>>\n<<set $enemypower to 375>>\n<<set $enemyimg to setup.nme["ghostwoman"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 195>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 5>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 66>>\n<<set $nmedef to 68>>\n<<set $nmemov to 61>>\n<<set $nmemagic to 75>>\n\n<<set $enemyspecialname to "swamp">>\n<<set $enemyspecial to 1>>\n\n<<set $nmecritchance to 10>>\n<<set $nmecritdam to 1.9>>\n<<set $nmespellpower to 100>>\n<<set $nmeacc to 90>>\n<<set $nmebaseregen to 10>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 3>>\n\n<<set $nmexp to 20>>\n\n<<display "bal-adj-nme">>
<<rest>><<first>>\n\n<<message>>Elesun has earned a new scar and her health has increased by one point.\n\nThe odds of earning a new scar when resting are increased for every wound she suffers, but are reset after a new scar is earned. It is possible to earn more than one scar per rest if she has taken an exceptional number of wounds between rests. For every five scars she earns, she gains one additional heart of health, up to a maximum of six total hearts.<</message>><</first>>\n\n<<if $HarlScene>><<ctrlCon '1AfterRest'>><<else>><<ctrlCon '1EleQuarters'>><<endif>>
/% journal %/\n<<widget 'notifyJournal'>>\n\t<<first>>\n\t\t<<notify 'journal-update'>>\n\t\t\tJournal Updated!\n\t\t<</notify>>\n\t<</first>>\n<</widget>>\n\n/% inventory %/\n<<widget 'notifyInventory'>>\n\t<<first>>\n\t\t<<set _gear to $args[0]>> /% spell, weapon, armor %/\n\t\t<<notify 'inventory-update'>>\n\t\t\tNew _gear obtained!\n\t\t<</notify>>\n\t<</first>>\n<</widget>>\n\n/% vows %/\n<<widget 'notifyVow'>>\n\t<<first>>\n\t\t<<set _result to $args[0]>> /% broken, complete, taken %/\n\t\t<<notify 'vows-update'>>\n\t\t\tVow _result!\n\t\t<</notify>>\n\t<</first>>\n<</widget>>\n\n/% title %/\n<<widget 'notifyTitle'>>\n\t<<first>>\n\t\t<<set _title to $args[0]>>\n\t\t<<notify 'title-update'>>\n\t\t\t<<if _title>>\n\t\t\t\tNew title: _title!\n\t\t\t<<else>>\n\t\t\t\tNew title earned!\n\t\t\t<<endif>>\n\t\t<</notify>>\n\t<</first>>\n<</widget>>
\nLevel is a representation of a character's experience, skill, and knowledge. As it increases, the character will grow more powerful. Levels are earned by accumulating experience points from combat, quests, and exploration.\n\n
Ripley is wearing the white dress that Harlaus, the king’s son and heir to the throne, had commissioned for her last year. Harlaus was clever like his father, maybe even cleverer, and Elesun couldn’t tell if he fancied Ripley or not.\n\nIt’s sleeveless, and goes down to the knee. Ripley wears a red cloak over it, a common accessory worn by the king’s personal guard. Ripley’s exposed limbs are lined with lean, powerful muscles from years of intense training; first as a druid warrior, then as one of the king’s guard, and now as the pupil of Elesun and Irelith.
<span id="portrait"><<if $character is "Elesun">>[img[setup.img.ElePt]]<<else>>[img[setup.img.RipPt]]<<endif>></span>
<<if !$HarlScene>>\s\n\t"Come to air more opinions?" the King asks.\n\n\t<<ctrlClick 'Talk to the King.' '1KingScene'>>\s\n<<else>>\s\n\tElesun steps closer to the King.\n\n\t<<ctrlClick 'Speak to him.' '1KingTalk'>>\s\n<<endif>>
<div id='splash'>\n<center><h1 style='color:red;'>Warning</h1>\n\n<span>//Holy Land// contains strong language and written depicitons of intense violence and gore.</span>\n\n<<timed 2s t8n>>\n<<button 'Okay'>><<run $('#splash').fadeOut();>><</button>>\n<</timed>>\n</center>\n</div>
<<dialog 'Tutorial' 'tut'>>\s\nCongratulations! <<name>> has defeated the enemy.\n\nAfter combat ends, <<name>> will earn some XP and possibly level up. There are other ways to earn XP, too. The game will autosave immediately before and after every fight. <<= setup.words.grit.toUpperFirst()>> will regenerate completely between every fight, but hearts will not. To restore your hearts, you'll need to find a place to ''rest''.\s\n<</dialog>>\n<<tutorialHook 'tut_onFightEnd'>>
<<if $vows.complete.length lte 0>>\s\n\tNo completed vows.\s\n<<else>>\s\n\t<<for _i to 0; _i lt $vows.complete.length; _i++>>\s\n\t\t<<set _v to $vows.complete[_i]>>\s\n\t\t<<capture _v>>\s\n\t\t\t<<link setup.vows.list[_v].title>>\n\t\t\t\t<<dialog `'Vow: ' + setup.vows.list[_v].title` 'vow'>>\s\n\t\t\t\t\t<<- setup.vows.list[_v].descr>>\s\n\t\t\t\t\t<<if setup.vows.list[_v].outc>>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<<- setup.vows.list[_v].outc>>\s\n\t\t\t\t\t<<endif>>\s\n\t\t\t\t<</dialog>>\n\t\t\t<</link>>\n\t\t<</capture>>\s\n\t<</for>>\n<<endif>>
You can access your journal from the menu on the left, or by pressing Tab or J on the keyboard. Your journal tells you what your current goal is.\n\nIt also includes a codex which gives background information on the world. You can view the codex from the journal menu, or by pressing Shift+Tab or Z on the keyboard. You can leave an menu by clicking on the "Return to Game" link or by pressing Q or Esc on the keyboard.
<<set $rageCurrent to $rageStock>>\n<<if typeof $rageCurrent != 'number'>>\n\t<<set $rageCurrent to 0>>\n<<endif>>
<<dialog 'Tutorial' 'tut'>>\s\nBy ending her turn by moving, <<name>> sacrifices defense to gain a better position. Her attacks on the next turn after moving deal increased damage.\s\n<</dialog>>\n<<tutorialHook 'tut_onMov'>>
Healing Irelith's wounds took a toll on Folsom. His back wasn't that hunched a few weeks ago.\n\n<<ctrlClick 'Talk to him.' '1FolsomTalk'>>
Comes and goes. Special summon.\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 30>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<display 'rgn_ui'>>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "regn"]]\n[[No|spellswap]]
Head west to Elesun's quarters?\n\n<<ctrlClick "Go to Elesun's quarters." "1EleQuarters" "leave">>
<<display "vigr_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "vigr"]]\n[[No|spellswap]]
<<image "RipSmKid">><<dock "Ripley" "0kingsRip">> and Elesun are standing in <<weak "the king" "0kingsKings">>'s quarters in the castle's main hall.\n\nThere are a handful of <<weak "portraits" "0kingsPort">> hanging on the wall nearby, while the wall behind them is...<<weak "melted" "0kingsWall">>, for lack of a better term.\n\nElesun can hear <<weak "fighting" "0kingsListen">> somewhere below them--probably outside. They should <<action "get moving" "0kingsContinue">>.\n\n<<info>>\n\n\n\n\n
<<if $tpcost gt $tp>>Not enough TP.<<else>>\n\n<<if $choice is "unarm">><<set $unarmedtraining to $unarmedtraining+1>><<set $tp to $tp-$tpcost>>Skill with unarmed increased to <<print $unarmedtraining>>.<<elseif $choice is "lsword">><<set $longswordtraining to $longswordtraining+1>><<set $tp to $tp-$tpcost>>Skill with longsword increased to <<print $longswordtraining>>.<<elseif $choice is "gsword">><<set $greatswordtraining to $greatswordtraining+1>><<set $tp to $tp-$tpcost>>Skill with great sword increased to <<print $greatswordtraining>>.<<elseif $choice is "katana">><<set $katanatraining to $katanatraining+1>><<set $tp to $tp-$tpcost>>Skill with katana increased to <<print $katanatraining>>.<<elseif $choice is "spear">><<set $speartraining to $speartraining+1>><<set $tp to $tp-$tpcost>>Skill with spear increased to <<print $speartraining>>.<<elseif $choice is "ssword">><<set $sideswordtraining to $sideswordtraining+1>><<set $tp to $tp-$tpcost>>Skill with side sword increased to <<print $sideswordtraining>>.<<elseif $choice is "gaunt">><<set $gauntletstraining to $gauntletstraining+1>><<set $tp to $tp-$tpcost>>Skill with clawed gauntlets increased to <<print $gauntletstraining>>.<<elseif $choice is "scythe">><<set $scythetraining to $scythetraining+1>><<set $tp to $tp-$tpcost>>Skill with scythe increased to <<print $scythetraining>>.<<elseif $choice is "saber">><<set $sabertraining to $sabertraining+1>><<set $tp to $tp-$tpcost>>Skill with saber increased to <<print $sabertraining>>.<<elseif $choice is "axe">><<set $battleaxetraining to $battleaxetraining+1>><<set $tp to $tp-$tpcost>>Skill with battle axe increased to <<print $battleaxetraining>>.<<endif>>\n<<endif>>\n[[Back to training.|combat_trainer]]\n[[Quit training.|$exitpassage][$gamestart to 1]]
You've earned enough experience to level up. Click the link below and follow the instructions. You'll be able to increase one of your attribute ranks by one point, and you'll also earn TP, which you can spend at trainers later.\n\nLeveling up will restore your health, but it won't guve you a chance to form new ''scars''.\n\nYou can review your current level, abilities, and stats from the character menu on the left, or by pressing C or Shift+Spacebar on the keyboard.
<<timed 3s t8n>><<image "FolsomPt">><</timed>>"Who's down there?" A familiar voice is calling from the storeroom above...\n<<timed 3s t8n>>\n"<<journallink "Folsom" "codex_Folsom">>?" Elesun calls back. "Is that you? Hurry!"\n\nA moment later, Folsom comes sprinting down the stairs.\n\n<<journallink "Aesil" "codex_Aesil">> stops short upon seeing him. "Wizard," he hisses.\n\n"I thought I might find you here," Folsom says. A beam of pure hellish energy erupts from his hands, sending Aesil flying back into the wall.\n\n"I'll handle this from here, Elesun. Get Ripley out of here."\n\n"You got it," Elesun replies. She grabs Ripley by the hand, and the two run back up and out onto the wall.\n\n<<ctrlClick "Get moving." "0wall3" "leave">>\n<</timed>>\n\n\n\n\n\n\n\n\n\n\n\n
<<if $combatimages is 1>>* <<radiobutton "$combatimages" 1 checked>> On: Display combat portraits and UI elements. Recommended.\n* <<radiobutton "$combatimages" 0>> Off: Turn off combat images. May help improve performance and appearance on some browsers and devices.<<else>>* <<radiobutton "$combatimages" 1>> On: Display combat portraits and UI elements. Recommended.\n* <<radiobutton "$combatimages" 0 checked>> Off: Turn off combat images. May help improve performance and appearance on some browsers and devices.<<endif>>
setup.fullscreen = function (element) {\n if(element.requestFullScreen) {\n element.requestFullScreen();\n } else if(element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if(element.webkitRequestFullScreen) {\n element.webkitRequestFullScreen();\n }\n}\n\n// <<fullscreen>> macro\nMacro.add('fullscreen', {\n handler : function() { \n\n var bg = $('body').css('background-color');\n $('html').css('background-color', bg);\n\n setup.fullscreen(document.documentElement);\n\n }\n});\n\npostdisplay['fullscreen-fix'] = function (t) {\n\tvar bg = $('body').css('background-color');\n\t$('html').css('background-color', bg);\n};
You’re about to fight <<print $enemyname>>.\n\n<<message "Help: Enemy Magic">><<display "helpNMEspells">><</message>>
<<image "RipSmKid">><<thumb>>Elesun rushes to Ripley’s aid.\n<<set $ripFight to 0>>\n“I’ve got this, Ripley.”\n\n“Elesun?”
You’re about to fight <<print $enemyname>>.
<<if $gamestart eq 1>>[["\su00a0\su2629\su00a0\su00a0\s Character\su00a0\su00a0\su00a0"|charmenu][$return to passage()]]\n\n[["\su00a0\su2694\su00a0\su00a0\s Equipment\su00a0"|equipmenu][$return to passage()]]\n\n[["\su270E\su00a0\s Journal\su00a0\su00a0\su00a0\su00a0\su00a0"|journalmenu][$return to passage()]]\n\n[["\su00a0\su2699\su00a0\su00a0\s Settings\su00a0\su00a0\su00a0\su00a0\su00a0"|player_settings][$return to passage()]]\n\n<<if $debug is 1>>[[~Test|debug_features][$return to passage(), $exitpassage to passage()]]<<endif>><<elseif $gamestart eq 2>>[["\su25c4\s Return to Game"|$return][$gamestart to 1]]<<endif>>\n\n<<if $debug is 1>><<click "~Generate Report">><<bugreport>><</click>>\n<<link 'FORCE MENU'>><<set $gamestart to 1>><<goto `passage()`>><</link>>\n<<endif>>\n\n<<display "audiomute">>\n
Simple bare fists.\n\nThough training can make unarmed combat deadly, it still comes with great risks.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Very Low|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Very Low|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|High|\n*__Finesse__: High\n*__Stamina__: Very Low
<<display "heartbreaker">><<display "gritbar">><<if $character is "Ripley">><<display "rabbleRouser">><<endif>><<if $characterHide is 0>><<print $character>><<else>>???<<endif>>, Power: <<print $power>>, Stamina: <<print $sta>>/<<print $maxsta>><<if $character is "Ripley">><<display "rageBar">><<endif>>\n[img[setup.ui.icons.grit2]] <<= setup.words.grit.toUpperFirst()>>: <<print Math.trunc($grit)>><<if $combatimages is 0>>/<<print $maxgrit>><<else>> [img[$gritdisplay]]<<endif>> Health: <<if $combatimages is 0>><<print $health>>/<<print $maxhealth>><<else>>[img[$heartdisplay]]<<endif>>
"Goodbye, Elesun."\n\n<<ctrlClick '"Goodbye."' '1throne'>>
<<if $gamestart is 1>>\n\t<<switch $chapter>>\n\t<<case 0>>\n\t\t<<set document.title = "Holy Land: Prologue">>\n\t<<case 1>>\n\t\t<<set document.title = "Holy Land: Chapter 1">>\n\t<<case 2>>\n\t\t<<set document.title = "Holy Land: Chapter 2">>\n\t<<case 3>>\n\t\t<<set document.title = "Holy Land: Chapter 3">>\n\t<<case 4>>\n\t\t<<set document.title = "Holy Land: Chapter 4">>\n\t<<case 5>>\n\t\t<<set document.title = "Holy Land: Chapter 5">>\n\t<<case 6>>\n\t\t<<set document.title = "Holy Land: Chapter 6">>\n\t<<case 7>>\n\t\t<<set document.title = "Holy Land: Chapter 7">>\n\t<<case 8>>\n\t\t<<set document.title = "Holy Land: Epilogue">>\n\t<<default>>\n\t\t<<set document.title = "+ Holy Land">>\n\t<</switch>>\n<<else>>\n\t<<set document.title = "+ Holy Land">>\n<<endif>>
<<if $tpcost gt $tp>>Not enough TP.<<else>>\n\n<<if $choice is "neut">><<set $neutraltraining to $neutraltraining+1>><<set $tp to $tp-$tpcost>>Skill with neutral magic increased to <<print $neutraltraining>>.<<elseif $choice is "nat">><<set $naturaltraining to $naturaltraining+1>><<set $tp to $tp-$tpcost>>Skill with natural magic increased to <<print $naturaltraining>>.<<elseif $choice is "lt">><<set $lighttraining to $lighttraining+1>><<set $tp to $tp-$tpcost>>Skill with light magic increased to <<print $lighttraining>>.<<elseif $choice is "dk">><<set $darktraining to $darktraining+1>><<set $tp to $tp-$tpcost>>Skill with dark magic increased to <<print $darktraining>>.<<elseif $choice is "hell">><<set $hellishtraining to $hellishtraining+1>><<set $tp to $tp-$tpcost>>Skill with hellish magic increased to <<print $hellishtraining>>.<<endif>>\n<<endif>>\n[[Back to training.|magic_trainer]]\n[[Quit training.|$exitpassage][$gamestart to 1]]
<span id="cominfo"><span id="playerstats"><<if $mobile is 1>><<display "playerstatsMobile">><<else>><<display "playerstats">><<endif>></span>\n<span id="combatmessages"><<display "combat_report">></span>\n<span id="combatactions"><<if $mobile is 1>><<display "playeractionsMobile">><<else>><<display "playeractions">><<endif>></span>\n</span>
/%\n\n -> <<display>>ed in StoryInit\n\n ->use the balance object to make blanket balance adjustments to combat, transformation, and xp requirements/earnings\n\n -> the base $bal object represents "normal" difficulty\n\n%/\n\n<<set setup.bal to {\n pgrit : 1.0,\n pstagger : 1.0,\n patk : 1.0,\n pdef : 1.0,\n pmov : 1.0,\n desp : 1.0,\n critOdds : 1.0,\n critical : 1.0,\n ddgOdds : 1.0,\n dispOdds : 1.0,\n rageB : 1.0,\n rageD : 1.0,\n egrit : 1.0,\n eatk : 1.0,\n edef : 1.0,\n emov : 1.0,\n estagger : 1.0,\n ebossSt : 1.5,\n espell : 1.0,\n xpEarn : 1.0,\n xpNeed : 1.0,\n agression : 1\n }>>\n\n/%\n\n -> in engine example:\n<<set $atk to $atk * $bal.atk>>, etc\n\n -> Properties Key:\n---------------------------------------\nPlayer (General)\n---------------------------------------\npgrit -player grit\npatk -player attack\npdef -player defense\npmov -player move\n---------------------------------------\nPlayer (Special)\n---------------------------------------\ndesp -desperation attack damage\ncritOdds -critical chance\ncritical -critical damage\nddgOdds -dodge chance\ndispOdds -dispel chance\n---------------------------------------\nPlayer (Transformation)\n---------------------------------------\nrageB -rage build-up\nrageD -rage decay\n---------------------------------------\nEnemy\n---------------------------------------\negrit -enemy grit\neatk -enemy attack\nedef -enemy defense\nemov -enemy move\nespell -enemy special damage\nagression -global enemy agression\n---------------------------------------\nGrowth\n---------------------------------------\nxpEarn -XP earned from enemy kill\nxpNeed -XP required for level up\n---------------------------------------\n%/
<<button "Mute">>\n <<if $audioswitch is 1>>\n <<masteraudio mute>>\n <<set $audioswitch to 0>>\n <<else>>\n <<masteraudio unmute>>\n <<set $audioswitch to 1>>\n <<endif>>\n<</button>>
Focus grants small boosts to attack, defense, movement, and <<= setup.words.grit>> with no downsides.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
A heavy two-handed sword.\n\nIdeal for unseating calvary, cleaving people in half, and crashing through an opponent's guard. Less ideal for a measured approach.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|High|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|High|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Low|\n*__Finesse__: Low\n*__Stamina__: High
<<set $exitpassage to "prol5">><<set $storystage to 3>><<xp>>
<<combat "rank4lvl4_knight_akatosh" "combat_intro_0_4" "combat_outro_0_4">>
<<if $character is "Elesun">><div id="comele"><div class="switch">\n\n<div class="comDisp"><center><span id="comtext">\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_weapon]]>><<popup "wpn_comUI">><</link>></span>|<<print $weaponname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_atk]]>><<popup "atk_comUI">><</link>></span>|__ATK__:|<<print $atk>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_armor]]>><<popup "arm_comUI">><</link>></span>|<<print $armorname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_def]]>><<popup "def_comUI">><</link>></span>|__DEF__:|<<print $def>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_spell]]>><<popup "spl_comUI">><</link>></span>|<<print $p_spellname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_mov]]>><<popup "mov_comUI">><</link>></span>|__MOV__:|<<print $mov>>|\n<<if $SpEffEnd gt $round and $spEffDisplay neq "">>''<<print $SpEffDisplay>>''\nRounds remaining: <<print $SpEffEnd-$round>><<endif>></span></center></div>\n\n</div></div><<else>><<if $devilForm is 0>><div id="comrip"><<if $rageCurrent gte 100 and $playerturn is 1>><span id="transformbutton"><center><<link "''-TRANSFORM-''">><<display "rage_trans">><</link>></center></span><<endif>><div class="switch">\n\n<div class="comDisp"><center><span id="comtext">\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_weapon]]>><<popup "wpn_comUI">><</link>></span>|<<print $weaponname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_atk]]>><<popup "atk_comUI">><</link>></span>|__ATK__:|<<print $atk>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_armor]]>><<popup "arm_comUI">><</link>></span>|<<print $armorname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_def]]>><<popup "def_comUI">><</link>></span>|__DEF__:|<<print $def>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_spell]]>><<popup "spl_comUI">><</link>></span>|<<print $p_spellname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_mov]]>><<popup "mov_comUI">><</link>></span>|__MOV__:|<<print $mov>>|\n<<if $SpEffEnd gt $round and $spEffDisplay neq "">>''<<print $SpEffDisplay>>''\nRounds remaining: <<print $SpEffEnd-$round>><<endif>></span></center></div>\n\n</div></div><<elseif $devilForm is 1 and $formUnlock is 1>><div id="comripDvl"><div class="switch">\n\n<div class="comDisp"><center><span id="comtext">\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_weapon]]>><<popup "wpn_comUI">><</link>></span>|<<print $weaponname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_atk]]>><<popup "atk_comUI">><</link>></span>|__ATK__:|<<print $atk>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_armor]]>><<popup "arm_comUI">><</link>></span>|<<print $armorname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_def]]>><<popup "def_comUI">><</link>></span>|__DEF__:|<<print $def>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_spell]]>><<popup "spl_comUI">><</link>></span>|<<print $p_spellname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_mov]]>><<popup "mov_comUI">><</link>></span>|__MOV__:|<<print $mov>>|\n<<if $SpEffEnd gt $round and $spEffDisplay neq "">>''<<print $SpEffDisplay>>''\nRounds remaining: <<print $SpEffEnd-$round>><<endif>></span></center></div>\n\n</div></div><<elseif $devilForm is 1 and $formUnlock is 2>><div id="comripFnl"><div class="switch">\n\n<div class="comDisp"><center><span id="comtext">\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_weapon]]>><<popup "wpn_comUI">><</link>></span>|<<print $weaponname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_atk]]>><<popup "atk_comUI">><</link>></span>|__ATK__:|<<print $atk>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_armor]]>><<popup "arm_comUI">><</link>></span>|<<print $armorname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_def]]>><<popup "def_comUI">><</link>></span>|__DEF__:|<<print $def>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_spell]]>><<popup "spl_comUI">><</link>></span>|<<print $p_spellname>>|<span class="comUIimg"><<link [img[setup.ui.icons.ui_mov]]>><<popup "mov_comUI">><</link>></span>|__MOV__:|<<print $mov>>|\n<<if $SpEffEnd gt $round and $spEffDisplay neq "">>''<<print $SpEffDisplay>>''\nRounds remaining: <<print $SpEffEnd-$round>><<endif>></span></center></div>\n\n</div></div><<endif>><<endif>>
<<combat "rank3lvl5_soldier_akatosh" "combat_intro_0_1" "combat_outro_0_1">>
<<combat "rank3lvl3_assassin" "combat_intro_0_2" "combat_outro_0_2">>
<<combat "rank5lvl3_witch" "combat_intro_0_3" "combat_outro_0_3">>
Dispel gives a massive boost to your chance to dispel enemy magic and a small boost to dodge chance.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
You’re about to fight <<print $enemyname>>.
postdisplay['combat-ui'] = function (t) {\n\tif ( $('#ui-dialog').hasClass('tutDlg') &&\n\t\t!tags().includes('combat') ) {\n\t\t$('#ui-dialog').removeClass('tutDlg');\n\t}\n\tif ( tags().includes('combat') ) {\n\t\t$('#ui-dialog').addClass('tutDlg');\n\t}\n};\n\n// hookset.js, HLE, chapel\n\n// create namespace\nState.variables.hook = {};\nsetup.hook = {};\nsetup.hook.prot = {};\n\n// list of all hooks\nsetup.hook.list = [\n\t'onCrit', \n\t'onDodge', \n\t'onFirstAtk', \n\t'onEachAtk', \n\t'onHeartDam', \n\t'onGritDam',\n\t'onMov',\n\t'onDef',\n\t'onDespAtk',\n\t'onDispel',\n\t'onNMEatk',\n\t'onNMEspell',\n\t'onRegen',\n\t'onHeal',\n\t'onFightEnd',\n\t'onTransform',\n\t'onRevert',\n\t'onNMEheartDam',\n\t'onNMEgritDam'\n];\n\n// initialize all hooks\n(function () {\n\tvar task = State.variables.hook,\n\t\tlist = setup.hook.list,\n\t\thook,\n\t\ti;\n\t\n\tfor (i = 0; i < list.length; i++) {\n\t\thook = list[i];\n\t\tState.variables.hook[hook] = [];\n\t}\n\t\n}());\n\nsetup.hook.add = function (hookName, passage) {\n\t// create new hook functionality\n\tvar task = State.variables.hook;\n\t\n\tif (typeof task[hookName] == 'undefined') {\n\t\t\ttask[hookName] = [];\n\t}\n\n\tif ( !passage || !Story.has(passage) ) {\n\t\tnew TypeError ('invalid args in setup.hook.add() ' +\n\t\t'function or hook macro');\n\t}\n \n\t// push TwineScript into hook array\n\tvar obj = Story.get(passage).title;\n\tvar txt = Story.get(passage).text;\n\tsetup.hook.prot[obj] = {\n\t\ttitle: obj,\n\t\ttext: txt\n\t}; \n\ttask[hookName].push(clone(setup.hook.prot[obj]));\n\tsetup.hook.prot = {};\n};\n\nsetup.hook.fire = function (hookName) {\n\t// fire hooks code silently\n\tvar task = State.variables.hook;\n\tvar code = '';\n\t\n\tif (task[hookName] != null && task[hookName].length !== 0) {\n\t\ttask[hookName].forEach( function (hook) {\n\t\t\tcode = code + ' \sn\sn ' + hook.text;\n\t\t});\n\t\tnew Wikifier (null, code);\n\t}\n};\n\nsetup.hook.log = function (hookName) {\n\t// log hook's array of code to the console\n\tvar task = State.variables.hook;\n\t\n\tif (task[hookName] != null) {\n\t\tconsole.log(task[hookName]);\n\t}\n};\n\nsetup.hook.strip = function (hookName) {\n\t// delete/initialize hook code\n\tvar task = State.variables.hook;\n\t\n\ttask[hookName] = [];\n};\n\nsetup.hook.del = function (hookName, passage) {\n\tvar task = State.variables.hook;\n\tvar i, hook;\n\t\n\tfor (i = 0; i < task[hookName].length; i++) {\n\t\thook = task[hookName][i];\n\t\tif (hook.title === passage) {\n\t\t\ttask[hookName].deleteAt(i);\n\t\t}\n\t}\n};\n\n// hookset add macros, keyword 'strip' to gut hooks\n// hookset list as macro names and args for function\nMacro.add(setup.hook.list, {\n\thandler: function () {\n\t\t\n\t\tvar psg;\n\t\t\n\t\tif (!this.args[0] || typeof this.args[0] != 'string') {\n\t\t\treturn this.error('invalid args');\n\t\t} else {\n\t\t\tpsg = this.args[0].trim();\n\t\t}\n\t\t\n\t\tif (psg !== 'strip' && psg !== 'init')\t{\t\n\t\t\tsetup.hook.add(this.name, psg);\n\t\t} else {\n\t\t\tsetup.hook.strip(this.name);\n\t\t}\n\t\t\n\t}\n});\n\n// payload: fire hooks on events as an array of TwineScript code\nMacro.add('payload', {\n\thandler: function () {\n\n\t\tvar hook;\n\t\t\n\t\tif (this.args.length !== 1 || typeof this.args[0] != 'string') {\n\t\t\treturn this.error('incorrect args');\n\t\t} else {\n\t\t\thook = this.args[0].trim();\n\t\t}\n\t\t\n\t\tsetup.hook.fire(hook);\n\n\t}\n\t\n});\n\nMacro.add('deleteHook', {\n\thandler: function () {\n\t\tvar hookN, psg;\n\n\t\t/*if (this.args.length !== 2 || \n\t\t\ttypeof this.arg[0] != 'string' || \n\t\t\ttypeof this.arg[1] != 'string') {\n\t\t\treturn this.error('incorrect args');\n\t\t}*/\n\t\thookN = this.args[0].trim();\n\t\tpsg = this.args[1].trim();\n\t\tsetup.hook.del(hookN, psg);\n\t\t\n\t}\n});
Explosion of fire sets the area around <<print $character>> alight, burning her and creating smoke for a time.\n\nMild penalties to defense and damage. Attacks cost more Stamina until the smoke clears.
<<if $rageCurrent lt 5>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-1'])>>\n<<elseif $rageCurrent lt 10>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-5'])>>\n<<elseif $rageCurrent lt 15>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-10'])>>\n<<elseif $rageCurrent lt 20>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-15'])>>\n<<elseif $rageCurrent lt 25>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-20'])>>\n<<elseif $rageCurrent lt 30>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-25'])>>\n<<elseif $rageCurrent lt 35>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-30'])>>\n<<elseif $rageCurrent lt 40>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-35'])>>\n<<elseif $rageCurrent lt 45>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-40'])>>\n<<elseif $rageCurrent lt 50>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-45'])>>\n<<elseif $rageCurrent lt 55>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-50'])>>\n<<elseif $rageCurrent lt 60>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-55'])>>\n<<elseif $rageCurrent lt 65>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-60'])>>\n<<elseif $rageCurrent lt 70>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-65'])>>\n<<elseif $rageCurrent lt 75>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-70'])>>\n<<elseif $rageCurrent lt 80>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-75'])>>\n<<elseif $rageCurrent lt 85>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-80'])>>\n<<elseif $rageCurrent lt 90>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-85'])>>\n<<elseif $rageCurrent lt 95>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-90'])>>\n<<elseif $rageCurrent lt 100>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-95'])>>\n<<elseif $rageCurrent lt 102>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage0-100'])>>\n<<elseif $rageCurrent lt 105>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-1'])>>\n<<elseif $rageCurrent lt 110>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-5'])>>\n<<elseif $rageCurrent lt 115>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-10'])>>\n<<elseif $rageCurrent lt 120>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-15'])>>\n<<elseif $rageCurrent lt 125>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-20'])>>\n<<elseif $rageCurrent lt 130>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-25'])>>\n<<elseif $rageCurrent lt 135>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-30'])>>\n<<elseif $rageCurrent lt 140>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-35'])>>\n<<elseif $rageCurrent lt 145>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-40'])>>\n<<elseif $rageCurrent lt 150>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-45'])>>\n<<elseif $rageCurrent lt 155>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-50'])>>\n<<elseif $rageCurrent lt 160>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-55'])>>\n<<elseif $rageCurrent lt 165>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-60'])>>\n<<elseif $rageCurrent lt 170>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-65'])>>\n<<elseif $rageCurrent lt 175>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-70'])>>\n<<elseif $rageCurrent lt 180>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-75'])>>\n<<elseif $rageCurrent lt 185>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-70'])>>\n<<elseif $rageCurrent lt 190>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-85'])>>\n<<elseif $rageCurrent lt 195>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-90'])>>\n<<elseif $rageCurrent lt 200>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-95'])>>\n<<else>>\n\t<<set $rageDisplay to clone(setup.ui.rage['rage1-100'])>>\n<<endif>>
<<set $gamestart to 2>>\s\n<h1><<print "\su270E">> Journal</h1>\n<<if $chapter is 0>><<display "prologuejournal">><<endif>><<if $chapter is 1>><<display "ch1journal">><<endif>>\n\n<<vowbox>>\n\n@@#journal-menu-buttons;<<button [[View the Codex|codex_menu]]>><</button>>\n\n<<button [[View the Help Menu|helpmenu]]>><</button>>@@\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>\n\nTime: <<playtime>>
Sometimes, all's well that ends well. Sometimes not.\n\nRegardless, the defense of the castle was a success, and a costly one. Elesun doesn't want to dwell on it, though. At the end of the day, the Child of Promise and the King were both safe, and that was enough.
//Holy Land// will run fine on most modern browsers, including most versions of:\n*Google Chrome (and Chromium)\n*Mozilla Firefox\n*Microsoft Edge\n*Apple Safari\n\nLimited support (some visual issues may occur, but nothing game-breaking) is available for:\n*Opera\n*Internet Explorer 9 and 10\n*Mobile browsers of any kind.\n\n//Holy Land// explicitly does not support:\n*Internet Explorer 8 or earlier.\n*Very old/outdated browsers and browser versions.\n\nTo get the most out of //Holy Land//, adjust the following browser settings (the default settings of most browsers should already be fine):\n*Allow local data/cache/cookies.\n*Allow images, sound, and other media/HTML5 features.\n*Allow JavaScript.\n*Allow handlers/handler protocols.\n\nNote: //Holy Land// may require some load time on start-up. If load time seems excessive:\n*Try updating your browser.\n*Try a different browser and see if the problem persists.\n*Confirm that caching and cookies are fully enabled.\n*Download the application version.
The soldier on the floor is unconscious, but alive.\n\nRipley, as a druid, believes that all life is sacred, and that human lives are irreplaceable. Though she never actually took her druidic vows, she does her damnedest not to kill. Kid’s got a real talent for maiming, though.
<<display "focus_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "focs"]]\n[[No|spellswap]]
Probably that witch Elesun had fought--her magic softened stone. Hopefully not too soft...
<<set $statbase to setup.base + Math.trunc($rageCurrent/4)>>\n<<if $formUnlock is 2>>\n\t<<if $statbase gte 100>>\n\t\t<<set $statbase to 100>>\n\t<<endif>>\n<<else>>\n\t<<if $statbase gte 80>>\n\t\t<<set $statbase to 80>>\n\t<<endif>>\n<<endif>>\n\n<<set $strval to ($statbase*($strrank/10+1))+($statbase*($lvl/10))>>\n<<set $agival to ($statbase*($agirank/10+1))+($statbase*($lvl/10))>>\n<<set $endval to ($statbase*($endrank/10+1))+($statbase*($lvl/10))>>\n<<set $wilval to ($statbase*($wilrank/10+1))+($statbase*($lvl/10))>>\n<<set $cngval to ($statbase*($cngrank/10+1))+($statbase*($lvl/10))>>\n\n<<set $atkbase to Math.trunc($strval*0.5+$cngval*0.2)>>\n<<set $atk to Math.trunc($atkbase*$watk*$aatk*$satk*$modeatk)>>\n<<set $defbase to Math.trunc($endval*0.5+$strval*0.2)>>\n<<set $def to Math.trunc($defbase*$wdef*$adef*$sdef)>>\n<<set $movbase to Math.trunc($agival*0.5+$cngval*0.2)>>\n<<set $mov to Math.trunc($movbase*$wmov*$amov*$smov)>>\n\n<<set $critchance to Math.trunc(($agival/10+$cngrank)+$spellcrit)>>\n<<set $critmult to $agival/100+1>>\n<<set $critdam to Math.trunc($atk*$critmult*$spellcritdam)>>\n<<set $dodge to Math.trunc(((5+$agirank*2.5)+$cngrank)+$spelldodge)>>\n\n<<set $maxsta to Math.trunc($endval/10+$wilrank+8)>>\n<<set $sta to $maxsta>>\n<<set $maxgrit to 100+$endval+$spellgrit>>\n<<set $grit to $maxgrit>>\n<<set $maxhealth to Math.trunc(3+$scars/5)>>\n<<if $maxhealth gt 6>><<set $maxhealth to 6>><<endif>>\n\n<<if $bangles eq 1>><<set $regenmult to 1.2>><<set $basedispel to 10>><<endif>>\n\n<<set $dispel to $basedispel+$spelldispel+$wilrank>>\n\n<<set $power to $lvl*$statbase+(($maxhealth*$maxhealth*$maxhealth)+$maxhealth*7)+$lvl+1>>\n<<set $regen to Math.trunc($wilrank/2)>>\n\n<<set $rageBuild to $wilrank + 9>>\n<<set $rageDecay to 20 - $endrank>>\n\n<<display "bal-adjust">>
Exploration:\nE = equipment\nC/shift Space = character\nA = armor\nS = spells\nW = weapons\nJ/Tab = journal\nX/shift S = settings\nZ/shift Tab = codex\nH = help\nM = mute\nF = fullscreen\nD = dismiss pop-up\n\nMenus:\nQ/Esc = return to game from menu\n\nCombat:\n1 = Attack\n2 = Defend\n3 = Move\n4 = End Turn\nSpace = Continue\nSpace = Transform\n\nDev:\nshift ~ = debug tools
Possessed gives a massive increase to attack and critical attack damage, but at a significant cost to grit, defense, and movement.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_down]]|//Large//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_down]]|//Large//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_down]]|//Moderate//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
<<if $choice2 is 0>>Maybe you should say something to her.\n\n<<ctrlClick "Comfort Ripley." "0choice2">><<else>>"I'm with you," Ripley says.<<endif>>
\nTaking health damage in combat has a chance to give <<print $character>> a scar. Gaining a certain number of scars increases her maximum health by one point permanently.\n\n
<<image "RipSmKid">>The <<weak "main hall" "0mainhall1inspect">>. While <<dock "Ripley" "0mainhall1Rip">> and Elesun were <<weak "alone here" "0mainhall1alone">>, it went unused; they never entertained anyone, and had no use of the <<action "throne room" "0mainhall1throne">>.\n\nThe king arrived <<weak "last month" "0mainhall1lastmo">> with an entourage--Folsom and his other advisors--and plans to move the whole court here. <span id="gone"><<weak "Prince Harlaus" "0mainhall1Harl">></span> was to arrive in the coming weeks. Thank God he wasn't here yet.\n\n<<info>>
<<if $process lte 3>><<set $process++>><<endif>>Ripley has her hand on Irelith's shoulder, and tears are streaming down her cheeks--likely as much for concern for Irelith as sadness for the dead all around them. "She needs a healer," Ripley says.\n\n"I know," the king says. "She'll be fine, we'll get her help soon."
<<set $weaponname to "Spear">>\n<<set $weapon_ui to "spr_ui">>\n\n<<set $watk to 1.0>>\n<<set $wdef to 1.3>>\n<<set $wmov to 0.8>>\n<<set $critrange to 100>>\n\n<<set $wStaUse to 6>>\n\n<<if $speartraining is 1>>\n\t<<set $wmov to 0.9>>\n<<elseif $speartraining is 2>>\n\t<<set $wmov to 0.9>>\n\t<<set $watk to 1.1>>\n<<elseif $speartraining is 3>>\n\t<<set $wmov to 0.9>>\n\t<<set $watk to 1.1>>\n\t<<set $wdef to 1.4>>\n<<endif>>
\nRipley has trained endlessly to master magic, combat, and herself. Finally, that training pays off. Fully in control of her rage, Ripley has perfected the devil form, and the upper limit of the bonuses provided by transforming are removed. Ripley must have at least 100% rage to transform.\n\n
<<nobr>><<set _KingChat1 to either(\n"Make sure to see Harlaud if you haven't yet", \n"These are trying times, Elesun. Be careful.",\n"We've got to deal with Aesil soon. He'll be the death of us all.",\n"Ripley needs a break from all this madness and death.",\n"It is good to see you again, Elesun. Ripley has really grown stronger these last few months. You've done very well."\n)>>\n<<endnobr>><<print '"' + _KingChat1 + '"'>>
<<set $devilForm to 1>>\n\n<<payload 'onTransform'>>\n\n<<display "transform_updater">>\n<<replace "#tray">>\n\t<<display "combat_portrait">>\n<</replace>>\n\n<<set $rager to either(1,2,3,4,5,6,7,8,9,10)>>\n<<switch $rager>>\n<<case 1>>\n\t<<audio "rage" play>>\n<<case 2>>\n\t<<audio "rage2" play>>\n<<case 3>>\n\t<<audio "rage3" play>>\n<<case 4>>\n\t<<audio "rage4" play>>\n<<case 5>>\n\t<<audio "rage5" play>>\n<<case 6>>\n\t<<audio "rage6" play>>\n<<case 7>>\n\t<<audio "rage7" play>>\n<<case 8>>\n\t<<audio "rage8" play>>\n<<case 9>>\n\t<<audio "rage9" play>>\n<<case 10>>\n\t<<audio "rage10" play>>\n<<default>>\n\t<<audio "rage" play>>\n<</switch>>\n<<if $characterHide is 0>>\n<<dialog '...'>>\s\n\n\tRipley is losing control!\n\n\tRipley transforms!\n\n<</dialog>>\n<<else>>\n<<dialog '...'>>\n\n\tSomething's happening!\n\n<</dialgo>>\n<<endif>>\n\n<<comUpdate>>\n\n
Unfortunately, this horse isn't one of the strong ones from the royal stables; they sacrificed speed for blending in, after all. It'll do, though.\n\n<<ctrlClick 'Get on the horse and ride.' 'ch1-3'>>
Ripley started collecting rocks a few years ago. The soldiers and courtiers always got a kick out of giving her some strange or pretty rocks they found. <<if $stoneOne.have is 1>>Elesun found a pretty neat looking rock earlier...<<endif>>
<<set $critcheck to random(1, $critrange)>>\n<<if $critcheck lte $critchance>>\n\t<<if $devilForm is 0>>\n\t\t<<set $damagetoNME to $critdam>>\n\t\t<<payload 'onCrit'>>\n\t\t<<if $formUnlock gte 1>>\n\t\t<<set $rage to Math.trunc($rageBuild*0.5)>>\n\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t\t<<set $crityes to 1>>\n\t<<endif>>\n<<endif>>
Head north to Ripley's quarters?\n\n<<ctrlClick "Go to Ripley's quarters." "1RipQuarters" "leave">>
<iframe src="https://drive.google.com/file/d/0BwajEyPGkn0yX1RKdEhLajA2ZDA/preview" width="640" height="480"></iframe>\n\n[[Back|helpmenu]]
Elesun isn't sure what they're going to do about the wall. Or the corpses.\n\nShe frowns. This day hasn't been great.
<<if $courtyardgate is 0>>Elesun steps up to the gate. It's shut.\n\nShe suspects that the lever that controls the gate is nearby.<<else>>The gate is open now.\n\n<<ctrlClick "Go through the gate." "prol2" "leave">><<endif>>
#map-descr {\n\tdisplay: block;\n\tposition: relative;\n\twidth: 100%;\n\tbottom: 0; top: 0; left: 0; right: 0;\n\tbackground-color: #fff;\n\theight: 1em;\n\tcolor: #000;\n\tfont-weight: bold;\n}\n\n#map-descr.ele::after {\n\tpadding: 2em 3em;\n\tcontent: "Elesun's Quarters";\n}\n#map-descr.rip::after {\n\tpadding: 2em 3em;\n\tcontent: "Ripley's Quarters";\n}\n#map-descr.srv::after {\n\tpadding: 2em 3em;\n\tcontent: "Servants' Quarters";\n}\n#map-descr.bly::after {\n\tpadding: 2em 3em;\n\tcontent: "The Bailey";\n}\n#map-descr.mhl::after {\n\tpadding: 2em 3em;\n\tcontent: "The Main Hall";\n}
<span id="info"><center><<if $gamestart is 1>><<closeup>><<else>>Information<<endif>></center></span>
Shadow Veil dramatically increases both dodge and dispel chances, but at the cost of small penalties to <<= setup.words.grit>>, attack, and defense.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_down]]|//Moderate//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_down]]|//Moderate//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_up]]|//Moderate//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_down]]|//Slight//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
To web (devbuild): save to Documents/GitHub/hlproto/index.html\n\t-set variables:\n\t\t$webversion: 1\n\t\t$release: 0\n\t\t$debug: 0\n\nTo web (published): save to Documents/GitHub/holy-land/index.html\n\t-set variables:\n\t\t$webversion: 1\n\t\t$release: 1\n\t\t$debug: 0\n\nTo executable: save to nodebob-master/apps/index.html\n\t-set variables:\n\t\t$webversion: 0\n\t\t$release: 1\n\t\t$debug: 0\n\n
About 16 unique allies.
Elesun steps up to the door. It's open.\n\n<<ctrlClick "Go through the door." "0insidethewall" "leave">>
<<if $vows.broken.length lte 0>>\s\n\tNo broken vows.\s\n<<else>>\s\n\t<<for _i to 0; _i lt $vows.broken.length; _i++>>\s\n\t\t<<set _v to $vows.broken[_i]>>\s\n\t\t<<capture _v>>\s\n\t\t\t<<link setup.vows.list[_v].title>>\n\t\t\t\t<<dialog `'Vow: ' + setup.vows.list[_v].title` 'vow'>>\s\n\t\t\t\t\t<<- setup.vows.list[_v].descr>>\s\n\t\t\t\t\t<<if setup.vows.list[_v].outc>>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<<- setup.vows.list[_v].outc>>\s\n\t\t\t\t\t<<endif>>\s\n\t\t\t\t<</dialog>>\n\t\t\t<</link>>\n\t\t<</capture>>\s\n\t<</for>>\n<<endif>>
Some enemies can use unbound magic to cast powerful spells that have a variety of effects. Some spells simply deal damage, usually in large amounts. Some spells can heal the caster, giving the enemy a large boost to grit regen at the end of the round. Still other spells inflict temporary status effects. You can review the status effects and their associated penalties on <<name>>'s abilities from the ''help menu'' in the ''journal''.\n\nMagic is deadly, but <<name>> has a chance to dispel every spell casted by her enemies. \n\nWhile <<name>> is herself incapable of casting unbound spells, she can equip bound spells that work like charms and enhance her abilities passively. You may want to try equipping the ''Dispel'' spell in the ''Equipment'' menu to make the upcoming fight easier.
\nGrit represents <<print $character>>'s ability to avoid a deadly hit in combat--a combination of luck, skill, and experience. When her grit runs out, she takes a point of health damage, which represents an actual injury. Grit is restored after losing a health point and after every battle. Grit is represented by a bar--that changes color from green to yellow to red--on the combat screen.\n\n
<<set $spellname to "Vital">>\n<<set $schoolname to "Natural">>\n<<set $p_spellname to "Vital">>\n<<set $spell_ui to "vigr_ui">>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 50>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 5>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $naturaltraining is 1>>\n\t<<set $spellgrit to 55>>\n<<elseif $naturaltraining is 2>>\n\t<<set $spellregen to 10>>\n\t<<set $spellgrit to 55>>\n<<elseif $naturaltraining is 3>>\n\t<<set $spellgrit to 60>>\n\t<<set $spellregen to 10>>\n<<endif>>
\nA measure of raw physical power. Strength greatly influences attack, and to a lesser extent defense.\n\n
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<nobr>><<set _IreChat1 to either("Ripley's rock collection is coming on nicely. I found a few more for her.", "I should've said this earlier, Ele, but you did well during the siege. Good work. I know, I know. Just doing your job right?", "How are you? You look tired. Go take a rest in your quarters.", "Harlaus was asking after you. Go see him.", "Ripley's been desperate to go visit the druid grove. I bet you could persuade the King to let you take her. It'd be good to get her out of here for a while...", "Got a nasty scar from that scuffle in the throne room. I'm not back at one-hundred percent yet, but hey, 'that which doesn't kill you,' right?", "It was pretty awesome how Folsom handled Aesil. He's the only one who can hold that bastard off.", "I'm buying tonight, if you're in. We both need to unwind.")>>\n<<endnobr>><<print '"' + _IreChat1 + '"'>>
<<print $sqDone.join("\sn")>>
<<deleteHook 'onNMEgritDam' 'Aesil_phase'>>\n<<deleteHook 'onDespAtk' 'Aesil_phase'>>\n<<deleteHook 'onEachAtk' 'Aesil_phase'>>\n<<deleteHook 'onNMEgritDam' 'Aesil_phase'>>
Choices:\n<<set $gswordhave to 1>>\nHave greatsword: <span class="help" id="p-1">YES</span> \s\n<<button "Toggle Choice">>\n <<if $gswordhave is 1>>\n <<set $gswordhave to 0>>\n <<replace "#p-1">>\s\n NO \s\n <</replace>>\n <<else>>\n <<set $gswordhave to 1>>\n <<replace "#p-1">>\s\n YES \s\n <</replace>>\n <<endif>>\n<</button>>\n<<set $ripFight to 1, _ripscar1 to 1, _riptp1 to 0>>\nLet Rip fight assassin: <span class="help" id="p-2">YES</span> \s\n<<button "Toggle Choice">>\n <<if $ripFight is 1>>\n <<set $ripFight to 0, _ripscar1 to 0, _riptp1 to 1>>\n <<replace "#p-2">>\s\n NO \s\n <</replace>>\n <<else>>\n <<set $ripFight to 1, _ripscar1 to 1, _riptp1 to 0>>\n <<replace "#p-2">>\s\n YES \s\n <</replace>>\n <<endif>>\n<</button>>\n<<set $helpServants to 1, _riptp2 to 1; _ripXP1 to 20, _ripscar2 to 0>>\nHelped servants: <span class="help" id="p-3">YES</span> \s\n<<button "Toggle Choice">>\n <<if $helpServants is 1>>\n <<set $helpServants to 0, _ripscar2 to 1, _riptp2 to 0>>\n <<replace "#p-3">>\s\n NO \s\n <</replace>>\n <<else>>\n <<set $helpServants to 1, _ripscar2 to 0, _riptp2 to 1>>\n <<replace "#p-3">>\s\n YES \s\n <</replace>>\n <<endif>>\n<</button>>\n<<set $comfortRip to 1; _riptp3 to 1, _ripscar3 to 0>>\nComfort Ripley: <span class="help" id="p-4">YES</span> \s\n<<button "Toggle Choice">>\n <<if $comfortRip is 1>>\n <<set $comfortRip to 0, _ripscar3 to 1, _riptp3 to 0>>\n <<replace "#p-4">>\s\n NO \s\n <</replace>>\n <<else>>\n <<set $comfortRip to 1, _ripscar3 to 0, _riptp3 to 1>>\n <<replace "#p-4">>\s\n YES \s\n <</replace>>\n <<endif>>\n<</button>>\n\n<<link "Go to chapter 1.">>\n <<set $ripleyscars += (_ripscar3 + _ripscar2 + _ripscar3)>>\n <<set $ripleytp += (_riptp3 + _riptp2 + _riptp3)>>\n <<set $ripleyxp += (_ripXP1)>>\n <<set $gamestart to 1>>\n <<goto "toch1">>\n<</link>>\n\nGood luck, tester!
<<set $x to 0>>\n/%weapons%/\n<<set $x to parseInt($item[0], 10)>>\n<<set $unarmedtraining to $x-1>>\n<<set $x to parseInt($item[1], 10)>>\n<<set $longswordtraining to $x-1>>\n<<set $x to parseInt($item[2], 10)>>\n<<if $x gte 1>>\n\t<<set $gswordhave to 1>>\n\t<<set $greatswordtraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[3], 10)>>\n<<if $x gte 1>>\n\t<<set $katanahave to 1>>\n\t<<set $katanatraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[4], 10)>>\n<<if $x gte 1>>\n\t<<set $spearhave to 1>>\n\t<<set $speartraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[5], 10)>>\n<<if $x gte 1>>\n\t<<set $sswordhave to 1>>\n\t<<set $sideswordtraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[6], 10)>>\n<<if $x gte 1>>\n\t<<set $gauntletshave to 1>>\n\t<<set $gauntletstraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[7], 10)>>\n<<if $x gte 1>>\n\t<<set $scythehave to 1>>\n\t<<set $scythetraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[8], 10)>>\n<<if $x gte 1>>\n\t<<set $saberhave to 1>>\n\t<<set $sabertraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[9], 10)>>\n<<if $x gte 1>>\n\t<<set $axehave to 1>>\n\t<<set $battleaxetraining to $x-1>>\n<<endif>>\n/%spells%/\n<<set $x to parseInt($item[10], 10)>>\n<<if $x gte 1>>\n\t<<set $neutralhave to 1>>\n\t<<set $neutraltraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[11], 10)>>\n<<if $x gte 1>>\n\t<<set $naturalhave to 1>>\n\t<<set $natrualtraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[12], 10)>>\n<<if $x gte 1>>\n\t<<set $lighthave to 1>>\n\t<<set $lighttraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[13], 10)>>\n<<if $x gte 1>>\n\t<<set $darkhave to 1>>\n\t<<set $darktraining to $x-1>>\n<<endif>>\n<<set $x to parseInt($item[14], 10)>>\n<<if $x gte 1>>\n\t<<set $hellishhave to 1>>\n\t<<set $shellishtraining to $x-1>>\n<<endif>>\n/%armor%/\n<<set $x to parseInt($item[15], 10)>>\n<<if $x gte 1>>\n\t<<set $clothhave to 1>>\n\t<<if $x is 2>>\n\t\t<<set $clothplus to 1>>\n\t<<endif>>\n<<endif>>\n<<set $x to parseInt($item[16], 10)>>\n<<if $x gte 1>>\n\t<<set $leatherhave to 1>>\n\t<<if $x is 2>>\n\t\t<<set $leatherplus to 1>>\n\t<<endif>>\n<<endif>>\n<<set $x to parseInt($item[17], 10)>>\n<<if $x gte 1>>\n\t<<set $chainhave to 1>>\n\t<<if $x is 2>>\n\t\t<<set $chainplus to 1>>\n\t<<endif>>\n<<endif>>\n<<set $x to parseInt($item[18], 10)>>\n<<if $x gte 1>>\n\t<<set $platehave to 1>>\n\t<<if $x is 2>>\n\t\t<<set $plateplus to 1>>\n\t<<endif>>\n<<endif>>\n/%other%/\n<<set $x to parseInt($item[19], 10)>>\n<<set $bangles to $x>>\n\n<<set $x to 0>>
<<link 'Aesil'>><<display 'Aesil-boss-1-1'>><<goto 'combat_test_2'>><</link>>\n\n<<display 'bossAdjust'>>\n\n[[Cancel|debug_features]]
<<if $mode neq 0>>Prepare to fight.\n<<set $playerturn to 1>><<set $round to 1>><<set $despatk to 0>><<set $sta to $maxsta>>\nEnemy: <<print $enemyname>>\n\n<<if $debug is 1>>[[Begin.|highway1][ $battlethemepicker to 0]]<<else>>[[Begin.|highway1][$gamestart to 0; $battlethemepicker to 0]]<<endif>>\n<<anchorswitch>>\n<<else>>You have combat turned off...\n<<anchorswitch>>\n<<name>> defeats $enemyname!\n\n<span id="ctrlClick">[[Continue|combat_end]]</span><<endif>>\n\n''This is an unfinished combat build.''\n*Enemy AI: 85% (playable).\n*Features: 90% (playable).\n*Presentation: 99% (playable).\n*Balance: 50% (playable).\n<<nobr>>\n\t<<display "heartbreaker">>\n\t<<display "gritbar">>\n\t<<display "nmegritbar">>\n\t<<display "nmeheartbreaker">>\n<<if $battlethemepicker is 0>>\n\t<<masteraudio stop>>\n\t<<set $battlethemepicker to 1>>\n\t<<if $bossFight and $theme>>\n\t\t<<display $theme>>\n\t\t<<set $theme to ''>>\n\t<<else>>\n\t\t<<set $battletheme to either(1,2,3,4,5,6,7,8)>>\n\t\t<<switch $battletheme>>\n\t\t<<case 1>>\n\t\t\t<<audio "battle1" loop play>>\n\t\t<<case 2>>\n\t\t\t<<audio "battle2" loop play>>\n\t\t<<case 3>>\n\t\t\t<<audio "battle3" loop play>>\n\t\t<<case 4>>\n\t\t\t<<audio "battle4" loop play>>\n\t\t<<case 5>>\n\t\t\t<<audio "battle5" loop play>>\n\t\t<<case 6>>\n\t\t\t<<audio "battle6" loop play>>\n\t\t<<case 7>>\n\t\t\t<<audio "battle7" loop play>>\n\t\t<<case 8>>\n\t\t\t<<audio "battle8" loop play>>\n\t\t<<default>>\n\t\t\t<<audio "battle9" loop play>>\n\t\t<</switch>>\n\t<<endif>>\n<<endif>>\n<<set $SpEffEnd to -1>>\n<<set $specialOn to 0>>\n<<set $NMESpMov to 1.0>>\n<<set $NMESpDef to 1.0>>\n<<set $NMESpAtk to 1.0>>\n<<set $NMESpDam to 1.0>>\n<<set $NMEStaUse to 0>>\n<<set $NMEStaLmt to 0>>\n<<set $SpEffDisplay to "">>\n<<set $rageCurrent to 0>>\n<<display "rage_unpack">>\n<<display "rabbleRouser">>\n<<set $baseStaggerOdds to Math.trunc((($nmemaxgrit + $nmedef) / 2) * setup.bal.estagger)>>\n<<if $bossFight>>\n\t<<set $baseStaggerOdds to $baseStaggerOdds * setup.bal.ebossSt>>\n<<endif>>\n<<set $staggerOdds to $baseStaggerOdds>>\n<<endnobr>>
/% sound effects %/\n<<set _loader to setup.assets.effects>>\n<<cacheaudio "attack" \n\t`_loader + "attack.ogg"`\n\t`_loader + "attack.mp3"`>>\n<<cacheaudio "fast-atk" \n\t`_loader + "fast-atk.ogg"`\n\t`_loader + "fast-atk.mp3"`>>\n<<cacheaudio "defend" \n\t`_loader + "defend.ogg"`\n\t`_loader + "defend.mp3"`>>\n<<cacheaudio "critical" \n\t`_loader + "critical.ogg"`\n\t`_loader + "critical.mp3"`>>\n<<cacheaudio "equip" \n\t`_loader + "equip.ogg"`\n\t`_loader + "equip.mp3"`>>\n<<cacheaudio "click" \n\t`_loader + "mouseclick.ogg"`\n\t`_loader + "mouseclick.mp3"`>>\n<<cacheaudio "shortclick" \n\t`_loader + "shortclick.ogg"`\n\t`_loader + "shortclick.mp3"`>>\n<<cacheaudio "beep" \n\t`_loader + "yesbeep.ogg"`\n\t`_loader + "yesbeep.mp3"`>>\n<<cacheaudio "steps" \n\t`_loader + "steps.ogg"`\n\t`_loader + "steps.mp3"`>>\n<<cacheaudio "page" \n\t`_loader + "page.ogg"`\n\t`_loader + "page.mp3"`>>\n\n/% voice %/\n<<cacheaudio "hurt1" \n\t`_loader + "hurt1.ogg"`\n\t`_loader + "hurt1.mp3"`>>\n<<cacheaudio "hurt2" \n\t`_loader + "hurt2.ogg"`\n\t`_loader + "hurt2.mp3"`>>\n<<cacheaudio "hurt3" \n\t`_loader + "hurt3.ogg"`\n\t`_loader + "hurt3.mp3"`>>\n<<cacheaudio "damage" \n\t`_loader + "damage.ogg"`\n\t`_loader + "damage.mp3"`>>\n\n<<cacheaudio "rage" \n\t`_loader + "rage.ogg"`\n\t`_loader + "rage.mp3"`>>\n<<cacheaudio "rage2" \n\t`_loader + "rage2.ogg"`\n\t`_loader + "rage2.mp3"`>>\n<<cacheaudio "rage3" \n\t`_loader + "rage3.ogg"`\n\t`_loader + "rage3.mp3"`>>\n<<cacheaudio "rage4" \n\t`_loader + "rage4.ogg"`\n\t`_loader + "rage4.mp3"`>>\n<<cacheaudio "rage5" \n\t`_loader + "rage5.ogg"`\n\t`_loader + "rage5.mp3"`>>\n<<cacheaudio "rage6" \n\t`_loader + "rage6.ogg"`\n\t`_loader + "rage6.mp3"`>>\n<<cacheaudio "rage7" \n\t`_loader + "rage7.ogg"`\n\t`_loader + "rage7.mp3"`>>\n<<cacheaudio "rage-drop1" \n\t`_loader + "rage-drop1.ogg"`\n\t`_loader + "rage-drop1.mp3"`>>\n<<cacheaudio "rage-drop2" \n\t`_loader + "rage-drop2.ogg"`\n\t`_loader + "rage-drop2.mp3"`>>\n<<cacheaudio "rage-drop3" \n\t`_loader + "rage-drop3.ogg"`\n\t`_loader + "rage-drop3.mp3"`>>\n<<cacheaudio "rage-drop4" \n\t`_loader + "rage-drop4.ogg"`\n\t`_loader + "rage-drop4.mp3"`>>\n<<cacheaudio "rage-drop5" \n\t`_loader + "rage-drop5.ogg"`\n\t`_loader + "rage-drop5.mp3"`>>\n<<set _loader to setup.assets.voice>>\n<<cacheaudio "rip-careful" \n\t`_loader + "Rip-careful.ogg"`\n\t`_loader + "Rip-careful.mp3"`>>\n<<cacheaudio "rip-good" \n\t`_loader + "Rip-good.ogg"`\n\t`_loader + "Rip-good.mp3"`>>\n<<cacheaudio "rip-good2" \n\t`_loader + "Rip-good2.ogg"`\n\t`_loader + "Rip-good2.mp3"`>>\n<<cacheaudio "rip-insist" \n\t`_loader + "Rip-insist.ogg"`\n\t`_loader + "Rip-insist.mp3"`>>\n<<cacheaudio "rip-hiyah" \n\t`_loader + "Rip-hiyah.ogg"`\n\t`_loader + "Rip-hiyah.mp3"`>>\n<<cacheaudio "rip-die" \n\t`_loader + "rip-die.ogg"`\n\t`_loader + "rip-die.mp3"`>>\n<<cacheaudio "damage2" \n\t`_loader + "Rip-cant-do-this.ogg"`\n\t`_loader + "Rip-cant-do-this.mp3"`>>\n<<cacheaudio "rage8" \n\t`_loader + "Rip-alright.ogg"`\n\t`_loader + "Rip-alright.mp3"`>>\n<<cacheaudio "rage9" \n\t`_loader + "Rip-easy.ogg"`\n\t`_loader + "Rip-easy.mp3"`>>\n<<cacheaudio "rage10" \n\t`_loader + "Rip-lets-do-this.ogg"`\n\t`_loader + "Rip-lets-do-this.mp3"`>>\n\n/% desperation attack playlists %/\n<<createplaylist "desp-atk-1">>\n <<track "critical" volume 1>>\n <<track "rip-good" volume 1>>\n<</createplaylist>>\n<<createplaylist "desp-atk-2">>\n <<track "critical" volume 1>>\n <<track "rip-good2" volume 1>>\n<</createplaylist>>\n<<createplaylist "desp-atk-3">>\n <<track "critical" volume 1>>\n <<track "rage8" volume 1>>\n<</createplaylist>>\n<<createplaylist "desp-atk-4">>\n <<track "critical" volume 1>>\n <<track "rage9" volume 1>>\n<</createplaylist>>\n<<createplaylist "desp-atk-5">>\n <<track "rip-die" volume 1>>\n <<track "critical" volume 1>>\n<</createplaylist>>\n<<createplaylist "desp-atk-R">>\n <<track "rip-hiyah" volume 1>>\n <<track "critical" volume 1>>\n<</createplaylist>>\n\n/% music initial %/\n<<set _loader to setup.assets.music>>\n<<cacheaudio "anticipation" \n\t`_loader + "anticipation.ogg"`\n\t`_loader + "anticipation.mp3"`>>\n<<cacheaudio "snowfall" \n\t`_loader + "snowfall.ogg"`\n\t`_loader + "snowfall.mp3"`>>\n<<cacheaudio "expressions-of-the-mind" \n\t`_loader + "expressions-of-the-mind.ogg"`\n\t`_loader + "expressions-of-the-mind.mp3"`>>\n<<cacheaudio "herat7" \n\t`_loader + "herat7.ogg"`\n\t`_loader + "herat7.mp3"`>>\n\n/% OST 2 %/\n<<cacheaudio "alhambra" \n\t`_loader + "alhambra.ogg"`\n\t`_loader + "alhambra.mp3"`>>\n<<cacheaudio 'another'\n\t`_loader + "another.ogg"`\n\t`_loader + "another.mp3"`>>\n<<cacheaudio 'asked'\n\t`_loader + "asked.ogg"`\n\t`_loader + "asked.mp3"`>>\n<<cacheaudio "breath" \n\t`_loader + "breath.ogg"`\n\t`_loader + "breath.mp3"`>>\n<<cacheaudio "cell" \n\t`_loader + "cell.ogg"`\n\t`_loader + "cell.mp3"`>>\n<<cacheaudio 'cibelle'\n\t`_loader + "cibelle.ogg"`\n\t`_loader + "cibelle.mp3"`>>\n<<cacheaudio 'desperate'\n\t`_loader + "desperate.ogg"`\n\t`_loader + "desperate.mp3"`>>\n<<cacheaudio 'dope'\n\t`_loader + "dope.ogg"`\n\t`_loader + "dope.mp3"`>>\n<<cacheaudio 'dunno'\n\t`_loader + "dunno.ogg"`\n\t`_loader + "dunno.mp3"`>>\n<<cacheaudio 'escape'\n\t`_loader + "escape.ogg"`\n\t`_loader + "escape.mp3"`>>\n<<cacheaudio 'milan'\n\t`_loader + "milan.ogg"`\n\t`_loader + "milan.mp3"`>>\n<<cacheaudio 'mx'\n\t`_loader + "mx.ogg"`\n\t`_loader + "mx.mp3"`>>\n<<cacheaudio 'oh'\n\t`_loader + "oh.ogg"`\n\t`_loader + "oh.mp3"`>>\n<<cacheaudio 'ophelia'\n\t`_loader + "ophelia.ogg"`\n\t`_loader + "ophelia.mp3"`>>\n<<cacheaudio 'red'\n\t`_loader + "red.ogg"`\n\t`_loader + "red.mp3"`>>\n<<cacheaudio 'rhodes'\n\t`_loader + "rhodes.ogg"`\n\t`_loader + "rhodes.mp3"`>>\n<<cacheaudio 'sleeping'\n\t`_loader + "sleeping.ogg"`\n\t`_loader + "sleeping.mp3"`>>\n<<cacheaudio 'slow'\n\t`_loader + "slow.ogg"`\n\t`_loader + "slow.mp3"`>>\n<<cacheaudio 'space'\n\t`_loader + "space.ogg"`\n\t`_loader + "space.mp3"`>>\n<<cacheaudio 'spin'\n\t`_loader + "spin.ogg"`\n\t`_loader + "spin.mp3"`>>\n<<cacheaudio 'stand'\n\t`_loader + "stand.ogg"`\n\t`_loader + "stand.mp3"`>>\n<<cacheaudio 'summer'\n\t`_loader + "summer.ogg"`\n\t`_loader + "summer.mp3"`>>\n<<cacheaudio 'un'\n\t`_loader + "un.ogg"`\n\t`_loader + "un.mp3"`>>\n<<cacheaudio 'what'\n\t`_loader + "what.ogg"`\n\t`_loader + "what.mp3"`>>\n<<cacheaudio 'you'\n\t`_loader + "you.ogg"`\n\t`_loader + "you.mp3"`>>\n<<cacheaudio 'wa'\n\t`_loader + "wa.ogg"`\n\t`_loader + "wa.mp3"`>>\n\n/% OST 3 %/\n<<cacheaudio "eyes-fire" \n\t`_loader + "eyes-fire.ogg"`\n\t`_loader + "eyes-fire.mp3"`>>\n<<cacheaudio "nothing-left" \n\t`_loader + "nothing-left.ogg"`\n\t`_loader + "nothing-left.mp3"`>>\n\n/% battle themes %/\n<<set _loader to setup.assets.battle>>\n<<cacheaudio "battle1" \n\t`_loader + "battle1.ogg"`\n\t`_loader + "battle1.mp3"`>>\n<<cacheaudio "battle2" \n\t`_loader + "battle2.ogg"`\n\t`_loader + "battle2.mp3"`>>\n<<cacheaudio "battle3" \n\t`_loader + "battle3.ogg"`\n\t`_loader + "battle3.mp3"`>>\n<<cacheaudio "battle4" \n\t`_loader + "battle4.ogg"`\n\t`_loader + "battle4.mp3"`>>\n<<cacheaudio "battle5" \n\t`_loader + "battle5.ogg"`\n\t`_loader + "battle5.mp3"`>>\n<<cacheaudio "battle6" \n\t`_loader + "battle6.ogg"`\n\t`_loader + "battle6.mp3"`>>\n<<cacheaudio "battle7" \n\t`_loader + "battle7.ogg"`\n\t`_loader + "battle7.mp3"`>>\n<<cacheaudio "battle8" \n\t`_loader + "battle8.ogg"`\n\t`_loader + "battle8.mp3"`>>\n<<cacheaudio "battle9" \n\t`_loader + "battle9.ogg"`\n\t`_loader + "battle9.mp3"`>>\n
Continue on?\n\n<<ctrlClick "Proceed along the wall." "0wall2" "leave">>
<div id="crosses">\n<div class="cssload-top">\n\t<div class="cssload-square">\n\t\t<div class="cssload-square">\n\t\t\t<div class="cssload-square">\n\t\t\t\t<div class="cssload-square">\n\t\t\t\t\t<div class="cssload-square"><div class="cssload-square">\n\n\t\t\t\t\t</div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="cssload-bottom">\n\t<div class="cssload-square">\n\t\t<div class="cssload-square">\n\t\t\t<div class="cssload-square">\n\t\t\t\t<div class="cssload-square">\n\t\t\t\t\t<div class="cssload-square"><div class="cssload-square">\n\t\t\t\t\t</div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="cssload-left">\n\t<div class="cssload-square">\n\t\t<div class="cssload-square">\n\t\t\t<div class="cssload-square">\n\t\t\t\t<div class="cssload-square">\n\t\t\t\t\t<div class="cssload-square"><div class="cssload-square">\n\t\t\t\t\t</div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n<div class="cssload-right">\n\t<div class="cssload-square">\n\t\t<div class="cssload-square">\n\t\t\t<div class="cssload-square">\n\t\t\t\t<div class="cssload-square">\n\t\t\t\t\t<div class="cssload-square"><div class="cssload-square">\n\t\t\t\t\t</div></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n</div>
Aesil and Akatosh had been working together for a while now. Before that, Aesil was an ordinary, if not perverted, dark mage. Whatever deal he made with Akatosh turned him into something else.\n\nSomething very hard to kill. Folsom's magic could hold him at bay, though. Maybe even drive him off.
/*! <<bugreport>> macro for SugarCube 2.x */\n#ui-dialog-body.bugreport #bugreport-info{margin-bottom:1em}#ui-dialog-body.bugreport #bugreport-data{display:block;overflow:auto;font-family:monospace,monospace;background-color:transparent;border:1px solid #444;margin:0;padding:6px;height:auto;min-height:200px;white-space:normal}#ui-dialog-body.bugreport .scroll-pad{margin:0;padding:0}\n
<<dialog 'Tutorial' 'tut'>>\s\nWhen <<name>> ends her turn by defending, she gains darmatically increased defense until her next turn. Defending also increases her end-of-round <<= setup.words.grit>> regeneration and causes healing spells to fire.\s\n<</dialog>>\n<<tutorialHook 'tut_onDef'>>
Rest for a bit?\n\n<<ctrlClick 'Rest now.' '1eleqRest'>>
You are using an outdated save game from an early prototype build. It is recommended that you delete your saves and start over. If you do not wish to do so, note that you may encounter odd or game-breaking bugs.\n\nDelete your saves and <<link "restart the game">><<script>>UI.restart();<</script>><</link>>, or [[click here to start the prologue over again|prol1]] and take your chances with your current saved data.
<<display "dispel_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "disp"]]\n[[No|spellswap]]
You've stumbled across the debug tools!\n\nWhile messing with these features can certainly be fun, we can't recommend it. Activation of the debug features will almost certainly break your game, so make sure you have a save to go back to if you decide to risk it.\n\n[[Activate debug tools.|$return][$gamestart to 1, $debug to 1]]\n\n[[Deactivate debug tools.|$return][$gamestart to 1, $debug to 0]]\n\n<span id="return">[[Do nothing.|$return][$gamestart to 1]]</span>
<<if $anchor is 0>> /%anchor always needs to return to 0; the combat flips it to 1 %/\n\t\t<<display “an enemy”>> /%initialize enemy stats%/\n\t\t<<anchor>> /%drops the anchor%/\n\t\tYou’re about to fight <<print $enemyname>>! /%a message before the combat%/\n\t\t[[Continue|combat_init]] /%call the [combat_init] passage%/\n\t<<else>> /%return to the anchor; combat sets the $anchor variable to 1%/\n\t\t<<anchorkill>> /%reset $anchor to 0%/\n\t\tYou defeated $enemyname! /%an exit message%/\n\t\t[[Continue|next_passage]] /%continue the game; remember to reset the anchor%/\n\t<<endif>>\n
Ripley needs {{{100%}}} rage to transform. She can build rage up to {{{200%}}}. The more rage Ripley has when she transforms, the stronger she'll become and the longer she'll be able to maintain the transformation.\n\nRage Build: <<print Math.trunc($rageBuild)>>\nRage Decay: <<print Math.trunc($rageDecay)>>\n\nTransforming dramatically lowers Ripley's defenses, dodge, and dispel.\n\nWhile transformed, Ripley cannot perform Desperation Attacks or Critical Hits.
\nWhen Ripley gets angry, she can tap into her deepest powers and take on a demonic form for a massive boost to almost every attribute and stat. Ripley must have at least 100% Rage to transform.\n\n
// nofity.js\n$(document.body).append("<div id='notify'></div>");\n$(document).on(':notify', function (e) {\n\tif (e.message && typeof e.message === 'string') {\n\t\t// trim message\n\t\te.message.trim();\n\t\t// classes\n\t\tif (e.class) {\n\t\t\tif (typeof e.class === 'string') {\n\t\t\t\te.class = 'open ' + e.class;\n\t\t\t} else if (Array.isArray(e.class)) {\n\t\t\t\te.class = 'open macro-notify ' + e.class.join(' ');\n\t\t\t} else {\n\t\t\t\te.class = 'open macro-notify';\n\t\t\t}\n\t\t} else {\n\t\t\te.class = 'open macro-notify';\n\t\t}\n\t\t\n\t\t// delay\n\t\tif (e.delay) {\n\t\t\tif (typeof e.delay !== 'number') {\n\t\t\t\te.delay = Number(e.delay)\n\t\t\t}\n\t\t\tif (Number.isNaN(e.delay)) {\n\t\t\t\te.delay = 2000;\n\t\t\t}\n\t\t} else {\n\t\t\te.delay = 2000;\n\t\t}\n\t\t\n\t\tpostdisplay['notification-task'] = function (t) {\n\t\t\tdelete postdisplay[t];\n\t\t\tconsole.log(e);\n\t\t\t$('#notify')\n\t\t\t\t.empty()\n\t\t\t\t.wiki(e.message)\n\t\t\t\t.addClass(e.class)\n\t\t\t\t\n\t\t\tsetTimeout(function () {\n\t\t\t\t$('#notify').removeClass();\n\t\t\t}, e.delay);\n\t\t};\n\t}\n});\n\n// <<notify delay 'classes'>> message <</notify>>\nMacro.add('notify', {\n\t tags : null,\n\thandler : function () {\n\t\t\n\t\t// set up\n\t\tvar msg = this.payload[0].contents, \n\t\t\ttime = false, \n\t\t\tclasses = false, i;\n\t\t\n\t\t// arguments\n\t\tif (this.args.length > 0) {\n\t\t\tif (typeof this.args[0] === 'number') {\n\t\t\t\ttime = this.args[0];\n\t\t\t\tclasses = (this.args.length > 1) ? this.args.slice(1).flatten() : false;\n\t\t\t} else {\n\t\t\t\tclasses = this.args.flatten().join(' ');\n\t\t\t}\n\t\t}\n\t\t\n\t\t// fire event\n\t\t$(document).trigger({\n\t\t\ttype : ':notify',\n\t\t\tmessage : msg,\n\t\t\tdelay : time,\n\t\t\tclass : classes\n\t\t});\n\t\t\n\t}\n});
"So," Elesun says. "How are you holding up."\n\nRipley's jaw gets a little tighter, and she doesn't make eye contact with Elesun. "I just keep reminding myself like you told me to."\n\n"Let me hear it then."\n\n"It's not my fault."\n\n"That's right. Whose fault is it?"\n\n"Akatosh."\n\n"Good girl."
Current <<= setup.words.spell.toUpperFirst()>>: <<print $p_spellname>>\n\nSelect a <<= setup.words.spell>>:\n\n<<if $neutralhave is 1>>Neutral Magic: (Level <<print $neutraltraining>>)\n[[Protect]]\n[[Rage]]\n[[Dispel]]<<endif>>\n\n<<if $naturalhave is 1>>Natural Magic: (Level <<print $naturaltraining>>)\n[[Focus]]\n[[Vital]]\n[[Keen]]<<endif>>\n\n<<if $lighthave is 1>>Light Magic: (Level <<print $lighttraining>>)\n[[Regeneration]]\n[[Healing]]\n[[Blessing]]<<endif>>\n\n<<if $darkhave is 1>>Dark Magic: (Level <<print $darktraining>>)\n[[Ghost]]\n[[Possessed]]\n[[Shadow Veil]]<<endif>>\n\n<<if $hellishhave is 1>>Hellish Magic: (Level <<print $hellishtraining>>)\n[[Flame Shroud]]\n[[Explosion]]\n[[Inferno]]<<endif>>\n\n[[Back|equipmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>
\n<<dock "Give me a little bit of text." "dock1">>\n\n<<dock "Give me a whole lot of text." "dock2">>\n\n<<dock "Give me a normal amount of text." "dock3">>\n\n<<info>>\n\n[[Back|debug_features]]
Desperation attacks tringerring one turn late-Fixed\n\nEnemy attacks still not truncating-Fixed\n\nNeed critical alert box-Fixed\n\nUpdated character elements-Added\n\nStatus display sometimes shits itself-Fixed\n\nAdd rage/transform mechanic-Done
"Hey, Ripley," Elesun says.\n\n"What?"\n\n"Do you fancy Harlaus? I think he might fancy you."\n\n"We're practically siblings," Ripley says.\n\n"Fair point. You didn't answer the question, though."\n\n"Shut up."<<timed 500ms>><<replace "#gone">>Prince Harlaus<</replace>><</timed>>
<<set $gamestart to 2>>{{{<Searching for object $character.Elesun[...]>}}}\n\n<div class="time-bar"><span class="w0"></span></div>\n<<timed 4500ms>>\n{{{<Error: Not found. !Redirecting>}}}<<next 1s>>\n\n{{{<}}}<span id="cutebar">{{{-------------}}}</span>{{{>}}}<<next 100ms>><<replace "#cutebar">>{{{=------------}}}<</replace>><<next 100ms>><<replace "#cutebar">>{{{==-----------}}}<</replace>><<next 300ms>><<replace "#cutebar">>{{{===----------}}}<</replace>><<next 500ms>><<replace "#cutebar">>{{{====---------}}}<</replace>><<next 200ms>><<replace "#cutebar">>{{{=====--------}}}<</replace>><<next 400ms>><<replace "#cutebar">>{{{======-------}}}<</replace>><<next 500ms>><<replace "#cutebar">>{{{=======------}}}<</replace>><<next 500ms>><<replace "#cutebar">>{{{========-----}}}<</replace>><<next 100ms>><<replace "#cutebar">>{{{============-}}}<</replace>><<next 500ms>><<replace "#cutebar">>{{{=============}}}<</replace>><<next 500ms>>\n\n{{{<Fatal Error> !Catch.error.return(@@$character.Elesun[] is dead)();}}}<<next 1s>>\n\n<span id="scaryCode">{{{al-error",function(t){i("ierr",[t,(new Date).getTime(),!0])})},{}],3:[function(t,e,n){t("loader").features.ins=!0},{}],4:[function(t,e,n){function r(){j++,S=y.hash,this[u]=Date.now()}function o(){j--,y.hash!==S&&i(0,!0);var t=Date.now();this[l]=~~this[l]+t-this[u],this[h]=t}function i(t,e){x.emit("newURL",[""+y,e])}function a(t,e){t.on(e,function(){this[e]=Date.now()})}var c="-start",s="-end",f="-body",u="fn"+c,h="fn"+s,d="cb"+c,p="cb"+s,l="jsTime",m="fetch",v="addEventListener",w=window,y=w.location;if(w[v]){var g=t(9),b=t(10),x=t(8),E=t(6),T=t(12),O=t(7),R=t(13),P=t("ee"),D=P.get("tracer");t(14),t("loader").features.spa=!0;var S,N=w[v],j=0;P.on(u,r),P.on(d,r),P.on(h,o),P.on(p,o),P.buffer([u,h,"xhr-done","xhr-resolved"]),E.buffer([u]),T.buffer(["setTimeout"+s,"clearTimeout"+c,u]),R.buffer([u,"new-xhr","send-xhr"+c]),O.buffer([m+c,m+"-done",m+f+c,m+f+s]),x.buffer(["newURL"]),g.buffer([u]),b.buffer(["propagate",d,p,"executor-err","resolve"+c]),D.buffer([u,"no-"+u]),a(R,"send-xhr"+c),a(P,"xhr-resolved"),a(P,"xhr-done"),a(O,m+c),a(O,m+"-done"),x.on("pushState-end",i),x.on("replaceState-end",i),N("hashchange",i,!0),N("load",i,!0),N("popstate",function(){i(0,j>1)},!0)}},{}],5:[function(t,e,n){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t("ee"),i=t("handle"),a=t(12),c=t(11),s="learResourceTimings",f="addEventListener",u="resourcetimingbufferfull",h="bstResource",d="resource",p="-start",l="-end",m="fn"+p,v="fn"+l,w="bstTimer",y="pushState";t("loader").features.stn=!0,t(8);var g=NREUM.o.EV;o.on(m,function(t,e){var n=t[0];n instanceof g&&(this.bstStart=Date.now())}),o.on(v,function(t,e){var n=t[0];n instanceof g&&i("bst",[n,e,this.bstStart,Date.now()])}),a.on(m,function(t,e,n){this.bstStart=Date.now(),this.bstType=n}),a.on(v,function(t,e){i(w,[e,this.bstStart,Date.now(),this.bstType])}),c.on(m,function(){this.bstStart=Date.now()}),c.on(v,function(t,e){i(w,[e,this.bstStart,Date.now(),"requestAnimationFrame"])}),o.on(y+p,function(t){this.time=Date.now(),this.startPath=location.pathname+location.hash}),o.on(y+l,function(t){i("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance["c"+s]?window.performance[f](u,function(t){i(h,[window.performance.getEntriesByType(d)]),window.performance["c"+s]()},!1):window.performance[f]("webkit"+u,function(t){i(h,[window.performance.getEntriesByType(d)]),window.performance["webkitC"+s]()},!1)),document[f]("scroll",r,{passive:!0}),document[f]("keypress",r,!1),document[f]("click",r,!1)}},{}],6:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){c.inPlace(t,[u,h],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),c=t(21)(a,!0),s=t("gos"),f=XMLHttpRequest,u="addEventListener",h="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1],r=s(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?c(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}),a.on(h+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],7:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=r.apply(this,arguments);return o.emit(n+"start",arguments,t),t.then(function(e){return o.emit(n+"end",[null,e],t),e},function(e){throw o.emit(n+"end",[e],t),e})})}var o=t("ee").get("fetch"),i=t(19);e.exports=o;var a=window,c="fetch-",s=c+"body-",f=["arrayBuffer","blob","json","text","formData"],u=a.Request,h=a.Response,d=a.fetch,p="prototype";u&&h&&d&&(i(f,function(t,e){r(u[p],e,s),r(h[p],e,s)}),r(a,"fetch",c),o.on(c+"end",function(t,e){var n=this;e?e.clone().arrayBuffer().then(function(t){n.rxSize=t.byteLength,o.emit(c+"done",[null,e],n)}):o.emit(c+"done",[t],n)}))},{}],8:[function(t,e,n){var r=t("ee").get("history"),o=t(21)(r);e.exports=r,o.inPlace(window.history,["pushState","replaceState"],"-")},{}],9:[function(t,e,n){var r=t("ee").get("mutation"),o=t(21)(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],10:[function(t,e,n){function r(t){var e=a.context(),n=c(t,"executor-",e),r=new f(n);return a.context(r).getCtx=function(){return e},a.emit("new-promise",[r,e],e),r}function o(t,e){return e}var i=t(21),a=t("ee").get("promise"),c=i(a),s=t(19),f=NREUM.o.PR;e.exports=a,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){a.emit("propagate",[null,!o],i),o=o||!t}}var o=!1;s(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var i=e.apply(f,arguments),c=f.resolve(i);return c}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&a.emit("propagate",[t,!0],n),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),s(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),a.on("executor-start",function(t){t[0]=c(t[0],"resolve-",this),t[1]=c(t[1],"resolve-",this)}),a.on("executor-err",function(t,e,n){t[1](n)}),c.inPlace(f.prototype,["then"],"then-",o),a.on("then-start",function(t,e){this.promise=e,t[0]=c(t[0],"cb-",this),t[1]=c(t[1],"cb-",this)}),a.on("then-end",function(t,e,n){this.nextPromise=n;var r=this.promise;a.emit("propagate",[r,!0],n)}),a.on("cb-end",function(t,e,n){a.emit("propagate",[n,!0],this.nextPromise)}),a.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=a.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],11:[function(t,e,n){var r=t("ee").get("raf"),o=t(21)(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],12:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration="number"==typeof t[1]?t[1]:0,t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t(21)(i),c="setTimeout",s="setInterval",f="clearTimeout",u="-start",h="-";e.exports=i,a.inPlace(window,[c,"setImmediate"],c+h),a.inPlace(window,[s],s+h),a.inPlace(window,[f,"clearImmediate"],f+h),i.on(s+u,r),i.on(c+u,o)},{}],13:[function(t,e,n){function r(t,e){h.inPlace(e,["onreadystatechange"],"fn-",c)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),h.inPlace(t,v,"fn-",c)}function i(t){w.push(t),l&&(g=-g,b.data=g)}function a(){for(var t=0;t<w.length;t++)r([],w[t]);w.length&&(w=[])}function c(t,e){return e}function s(t,e){for(var n in t)e[n]=t[n];return e}t(6);var f=t("ee"),u=f.get("xhr"),h=t(21)(u),d=NREUM.o,p=d.XHR,l=d.MO,m="readystatechange",v=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],w=[];e.exports=u;var y=window.XMLHttpRequest=function(t){var e=new p(t);try{u.emit("new-xhr",[e],e),e.addEventListener(m,o,!1)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(s(p,y),y.prototype=p.prototype,h.inPlace(y.prototype,["open","send"],"-xhr-",c),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),l){var g=1,b=document.createTextNode(g);new l(a).observe(b,{characterData:!0})}else f.on("fn-end",function(t){t[0]&&t[0].type===m||a()})},{}],14:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<h;r++)t.removeEventListener(u[r],this.listener,!1);if(!e.aborted){if(n.duration=(new Date).getTime()-this.startTime,4===t.readyState){e.status=t.status;var i=o(t,this.lastSize);if(i&&(n.rxSize=i),this.sameOrigin){var a=t.getResponseHeader("X-NewRelic-App-Data");a&&(e.cat=a.split(", ").pop())}}else e.status=0;n.cbTime=this.cbTime,f.emit("xhr-done",[t],t),c("xhr",[e,n,this.startTime])}}}function o(t,e){var n=t.responseType;if("json"===n&&null!==e)return e;var r="arraybuffer"===n||"blob"===n||"json"===n?t.response:t.responseText;return l(r)}function i(t,e){var n=s(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.sameOrigin=n.sameOrigin}var a=t("loader");if(a.xhrWrappable){var c=t("handle"),s=t(15),f=t("ee"),u=["load","error","abort","timeout"],h=u.length,d=t("id"),p=t(18),l=t(17),m=window.XMLHttpRequest;a.features.xhr=!0,t(13),f.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,p&&(p>34||p<10)||window.opera||t.addEventListener("progress",function(t){e.lastSize=t.loaded},!1)}),f.on("open-xhr-start",function(t){this.params={method:t[0]},i(this,t[1]),this.metrics={}}),f.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid)}),f.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=l(r);i&&(n.txSize=i)}this.startTime=(new Date).getTime(),this.listener=function(t){try{"abort"===t.type&&(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{f.emit("internal-error",[n])}catch(r){}}};for(var a=0;a<h;a++)e.addEventListener(u[a],this.listener,!1)}),f.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),f.on("xhr-load-added",function(t,e){var n=""+d(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),f.on("xhr-load-removed",function(t,e){var n=""+d(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),f.on("addEventListener-end",function(t,e){e instanceof m&&"load"===t[0]&&f.emit("xhr-load-added",[t[1],t[2]],e)}),f.on("removeEventListener-end",function(t,e){e instanceof m&&"load"===t[0]&&f.emit("xhr-load-removed",[t[1],t[2]],e)}),f.on("fn-start",function(t,e,n){e instanceof m&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=(new Date).getTime()))}),f.on("fn-end",function(t,e){this.xhrCbStart&&f.emit("xhr-cb-time",[(new Date).getTime()-this.xhrCbStart,this.onload,e],e)})}},{}],15:[function(t,e,n){e.exports=function(t){var e=document.createElement("a"),n=window.location,r={};e.href=t,r.port=e.port;var o=e.href.split("://");!r.port&&o[1]&&(r.port=o[1].split("/")[0].split("@").pop().split(":")[1]),r.port&&"0"!==r.port||(r.port="https"===o[0]?"443":"80"),r.hostname=e.hostname||n.hostname,r.pathname=e.pathname,r.protocol=o[0],"/"!==r.pathname.charAt(0)&&(r.pathname="/"+r.pathname);var i=!e.protocol||":"===e.protocol||e.protocol===n.protocol,a=e.hostname===document.domain&&e.port===n.port;return r.sameOrigin=i&&(!e.hostname||a),r}},{}],16:[function(t,e,n){function r(){}function o(t,e,n){return function(){return i(t,[(new Date).getTime()].concat(c(arguments)),e?null:this,n),e?void 0:this}}var i=t("handle"),a=t(19),c=t(20),s=t("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var u=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],h="api-",d=h+"ixn-";a(u,function(t,e){f[e]=o(h+e,!0,"api")}),f.addPageAction=o(h+"addPageAction",!0),f.setCurrentRouteName=o(h+"routeName",!0),e.exports=newrelic,f.interaction=function(){return(new r).get()};var p=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(d+"tracer",[Date.now(),t,n],r),function(){if(s.emit((o?"":"no-")+"fn-}}}</span>\n<<next 500ms>><<replace "#scaryCode">><span id="return">[[Return to Game.|$return][$gamestart to 1]]</span><</replace>><</timed>>\n\n
Most of the castle's servants are amateurs and refugees. The King had a habit of staffing his needs with people who had otherwise run out of luck. The desperate were often easily inspired to loyalty, sure, but she suspected the King hadn't even realized how wise a choice it truly was; that it was kind was likely enough for him.
<<set $armorname to "Chain Armor">>\n<<set $armor_ui to "chain_ui">>\n\n<<set $aatk to 1.0>>\n<<set $adef to 1.1>>\n<<set $amov to 0.9>>\n\n<<if $chainplus eq 1>>\n\t<<set $adef to 1.2>>\n\t<<set $amov to 1.0>>\n\t<<set $armorname to "Chain Armor+">>\n<<endif>>
^\n|_-armor\n\n<-character\n\nequipment->
/*! <<numberpool>> macro set for SugarCube 2.x */\ndiv[id|="numberbox-body"] {\n\tdisplay: inline-block;\n}\ndiv[id|="numberbox-body"] input {\n\tmin-width: 3em;\n\twidth: 3em;\n\ttext-align: center;\n}\ndiv[id|="numberbox-body"] button {\n\tfont-family: "tme-fa-icons";\n\tfont-style: normal;\n\tfont-weight: normal;\n\tfont-variant: normal;\n\ttext-transform: none;\n\tline-height: normal;\n\tspeak: none;\n\tpadding: 0.4em 0.6em;\n}\ndiv[id|="numberbox-body"] button[id|="numberbox-minus"] {\n\tmargin-right: 0.4em;\n}\ndiv[id|="numberbox-body"] button[id|="numberbox-plus"] {\n\tmargin-left: 0.4em;\n}\n\ndiv[id|="numberslider-body"] {\n\tdisplay: inline-block;\n}\ndiv[id|="numberslider-body"] span {\n\tdisplay: inline-block;\n\t/*font-size: 1.25em;*/\n\tmargin-left: 0.25em;\n\tmin-width: 3em;\n\ttext-align: center;\n\tvertical-align: middle;\n}\ndiv[id|="numberslider-body"] input {\n\t-webkit-appearance: none;\n\tcursor: pointer;\n\theight: 1.25em;\n\tmin-width: 20em;\n\tvertical-align: middle;\n}\ndiv[id|="numberslider-body"] input:focus {\n\toutline: none;\n}\ndiv[id|="numberslider-body"] input::-webkit-slider-runnable-track {\n\tbackground: #222;\n\tborder: 1px solid #444;\n\tborder-radius: 0;\n\tcursor: pointer;\n\theight: 10px;\n\twidth: 100%;\n}\ndiv[id|="numberslider-body"] input::-webkit-slider-thumb {\n\t-webkit-appearance: none;\n\tbackground: #35a;\n\tborder: 1px solid #57c;\n\tborder-radius: 0;\n\tcursor: pointer;\n\theight: 18px;\n\tmargin-top: -5px;\n\twidth: 33px;\n}\ndiv[id|="numberslider-body"] input:focus::-webkit-slider-runnable-track {\n\tbackground: #222;\n}\ndiv[id|="numberslider-body"] input::-moz-range-track {\n\tbackground: #222;\n\tborder: 1px solid #444;\n\tborder-radius: 0;\n\tcursor: pointer;\n\theight: 10px;\n\twidth: 100%;\n}\ndiv[id|="numberslider-body"] input::-moz-range-thumb {\n\tbackground: #35a;\n\tborder: 1px solid #57c;\n\tborder-radius: 0;\n\tcursor: pointer;\n\theight: 18px;\n\twidth: 33px;\n}\ndiv[id|="numberslider-body"] input::-ms-track {\n\tbackground: transparent;\n\tborder-color: transparent;\n\tcolor: transparent;\n\tcursor: pointer;\n\theight: 10px;\n\twidth: 99%; /* fallback for MS browsers without support for calc() */\n\twidth: calc(100% - 1px);\n}\ndiv[id|="numberslider-body"] input::-ms-fill-lower {\n\tbackground: #222;\n\tborder: 1px solid #444;\n\tborder-radius: 0;\n}\ndiv[id|="numberslider-body"] input::-ms-fill-upper {\n\tbackground: #222;\n\tborder: 1px solid #444;\n\tborder-radius: 0;\n}\ndiv[id|="numberslider-body"] input::-ms-thumb {\n\tbackground: #35a;\n\tborder: 1px solid #57c;\n\tborder-radius: 0;\n\tcursor: pointer;\n\theight: 16px;\n\twidth: 33px;\n}\n
Elesun takes a quick look around.\n\nThe courtyard is strangely removed from what's happening in the rest of the castle--it looks the same as it always does. It's grassy and populated by squat trees, with a dirt pathway leading from the door in the wall behind her to the gate.
<<image "RipPtKid">>"How are you holding up?" Elesun asks, sitting on the floor next to Ripley.\n<<set $comfortRip to 1>>\nShe doesn't reply.\n\n"You don't have to talk to me. I just want to tell you that I'm impressed with how you handled yourself out there. I don't give you enough credit."\n\nElesun sits there for a while in silence, and Ripley finally speaks up. "I thought you were going to die, too," she whispers.\n\n"I'm not going anywhere," Elesun says, putting an arm around her and squeezing her. "I need to go talk to the king. Hang in there, girl."\n\nRipley nods, and Elesun stands up and head back to the throne room.\n\n<<ctrlClick "Continue." "prol6">>
September 16, 1101: ''Two day later.''\n<<set $drawOrNot to 0>>\n"We're here," one of the guards says.\n\nIt's late in the evening, and the grove is dark save for a fire burning in its senter, though Elesun can't see anyone tending it from where she is. The Druids were particular, and wouldn't have appreciated the horses and wagon trampling too much closer.\n\nAll things considered, they made pretty good time. Stops to water, rest, and feed the horses went by without a hitch, and they only passed the ocassional traveler or caravan on the road. No one paid them any mind.\n\n"I'll tie up the horses," the driver says, climbing down. Elesun, Ripely, and the guards step out, stretching. "Should we unload now, Lady Elesun?" one of the guards asks.\n\n"Yes, thanks. Ripley and I will go and let the Druids know we're here then come back to help.\n\n"Let's go," Ripley says, jogging toward the grove.\n\nElesun follows behind.\n\n<<ctrlCon '1tocamp1'>>
<<set $allyname to "Irelith">>\n<<set $allynumber to 2.2>>\n\n<<set $allylvl to 15>>\n<<set $allymaxhealth to 4>>\n<<set $allymaxgrit to 275>>\n<<set $allyatk to 101>>\n<<set $allydef to 117>>\n<<set $allymov to 91>>\n<<set $allymagic to 91>>\n\n<<set $allyspecial to "guard">>\n<<set $specialname "Guard">>\n<<set $allyspec to 1>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<if $helpServants is 0>>No doubt the work of that witch. No need for the gate.<<else>>Elesun has seen magic like this before--it turns stone to mud. That woman in black she saw on the wall must've been a witch.<<endif>>
\nWhen grit is reduced to 0, you lose a health point (represented by a heart on the combat screen) and grit is refilled. Unlike grit, which heals after every combat, health can only be restored by resting.\n\n
Elesun sits down on the grass and relaxes for a few minutes. The breeze feels nice, and she can smell the trees and the grass. She shuts her eyes, feels the warm sun on her skin.\n\nShe stands back up feeling refreshed.\n<<set $relax to 1>>\n<<ctrlCon "1courtyard">>
<<link "Attack">><<masteraudio stop>><<audio "attack" play>><</link>>\n\n<<link "Critical Hit">><<masteraudio stop>><<audio "critical" play>><</link>>\n\n<<link "Damage 1">><<masteraudio stop>><<audio "hurt1" play>><</link>>\n\n<<link "Damage 2">><<masteraudio stop>><<audio "hurt2" play>><</link>>\n\n<<link "Damage 3">><<masteraudio stop>><<audio "hurt3" play>><</link>>\n\n<<link "Health Damage 1">><<masteraudio stop>><<audio "damage" play>><</link>>\n\n<<link "Health Damage 2">><<masteraudio stop>><<audio "damage2" play>><</link>>\n\n<<link "Interact">><<masteraudio stop>><<audio "equip" play>><</link>>\n\n<<link "Walking">><<masteraudio stop>><<audio "steps" play>><</link>>\n\n<<link "Beep">><<masteraudio stop>><<audio "beep" play>><</link>>\n\n<<link "Turn Page">><<masteraudio stop>><<audio "page" play>><</link>>\n\n<<link "Transform 1">><<masteraudio stop>><<audio "rage" play>><</link>>\n\n<<link "Transform 2">><<masteraudio stop>><<audio "rage2" play>><</link>>\n\n<<link "Transform 3">><<masteraudio stop>><<audio "rage3" play>><</link>>\n\n<<link "Transform 4">><<masteraudio stop>><<audio "rage4" play>><</link>>\n\n<<link "Transform 5">><<masteraudio stop>><<audio "rage5" play>><</link>>\n\n<<link "Transform 6">><<masteraudio stop>><<audio "rage6" play>><</link>>\n\n<<link "Transform 7">><<masteraudio stop>><<audio "rage7" play>><</link>>\n\n<<link "Transform 8">><<masteraudio stop>><<audio "rage8" play>><</link>>\n\n<<link "Transform 9">><<masteraudio stop>><<audio "rage9" play>><</link>>\n\n<<link "Transform 10">><<masteraudio stop>><<audio "rage10" play>><</link>>\n\n<<link "Lose Rage 1">><<masteraudio stop>><<audio "rage-drop1" play>><</link>>\n\n<<link "Lose Rage 2">><<masteraudio stop>><<audio "rage-drop2" play>><</link>>\n\n<<link "Lose Rage 3">><<masteraudio stop>><<audio "rage-drop3" play>><</link>>\n\n<<link "Lose Rage 4">><<masteraudio stop>><<audio "rage-drop4" play>><</link>>\n\n<<link "Lose Rage 5">><<masteraudio stop>><<audio "rage-drop5" play>><</link>>\n\n<<link "Line: Good">><<masteraudio stop>><<audio "rip-good" play>><</link>>\n\n<<link "Line: Good (Alt)">><<masteraudio stop>><<audio "rip-good2" play>><</link>>\n\n<<link "Line: Careful!">><<masteraudio stop>><<audio "rip-careful" play>><</link>>\n\n<<link "Line: If you insist.">><<masteraudio stop>><<audio "rip-insist" play>><</link>>\n\n<<link "Line: Die!">><<masteraudio stop>><<audio "rip-die" play>><</link>>\n\n<<link "Desperation Attack 1">><<masteraudio stop>><<playlist "desp-atk-1" stop>><<playlist "desp-atk-1" unloop play>><</link>>\n\n<<link "Desperation Attack 2">><<masteraudio stop>><<playlist "desp-atk-2" stop>><<playlist "desp-atk-2" unloop play>><</link>>\n\n<<link "Desperation Attack 3">><<masteraudio stop>><<playlist "desp-atk-3" stop>><<playlist "desp-atk-3" unloop play>><</link>>\n\n<<link "Desperation Attack 4">><<masteraudio stop>><<playlist "desp-atk-4" stop>><<playlist "desp-atk-4" unloop play>><</link>>\n\n<<link "Desperation Attack 5">><<masteraudio stop>><<playlist "desp-atk-5" stop>><<playlist "desp-atk-5" unloop play>><</link>>\n\n<<link "Desperation Attack (Ripley special)">><<masteraudio stop>><<playlist "desp-atk-R" stop>><<playlist "desp-atk-R" unloop play>><</link>>\n\n[[Music|musictester]]\n\n[[Back|debug_features]]\n\n\n\n\n\n\n
/%<<set $strtrue to $strrank + "">>\n<<if $strrank is 10>>\n\t<<set $strtrue to "10">>\n<<else>>\n\t<<set $strtrue to "0" + $strrank>>\n<<endif>>\n\n<<set $agitrue to $agirank + "">>\n<<if $agirank is 10>>\n\t<<set $agitrue to "10">>\n<<else>>\n\t<<set $agitrue to "0" + $agirank>>\n<<endif>>\n\n<<set $endtrue to $endrank + "">>\n<<if $endrank is 10>>\n\t<<set $endtrue to "10">>\n<<else>>\n\t<<set $endtrue to "0" + $endrank>>\n<<endif>>\n\n<<set $wiltrue to $wilrank + "">>\n<<if $wilrank is 10>>\n\t<<set $wiltrue to "10">>\n<<else>>\n\t<<set $wiltrue to "0" + $wilrank>>\n<<endif>>\n\n<<set $cngtrue to $cngrank + "">>\n<<if $cngrank is 10>>\n\t<<set $cngtrue to "10">>\n<<else>>\n\t<<set $cngtrue to "0" + $cngrank>>\n<<endif>>\n\n<<set $lvltrue to $lvl + "">>\n<<if $lvl lt 10>>\n\t<<set $lvltrue to "0" + $lvltrue>>\n<<else>>\n\t<<set $lvltrue to "" + $lvltrue>>\n<<endif>>\n\n<<set $xptrue to $xp + "">>\n<<if $xp lt 100 and $xp gte 10>>\n\t<<set $xptrue to "0" + $xptrue>>\n<<elseif $xp lt 10 and $xp gte 1>>\n\t<<set $xptrue to "00" + $xptrue>>\n<<elseif $xp is 0>>\n\t<<set $xptrue to "000">>\n<<endif>>\n\n<<set $tptrue to $tp + "">>\n<<if $tp gt 100>>\n\t<<set $tptrue to "0" + $tptrue>>\n<<elseif $tp lt 100 and $tp gte 10>>\n\t<<set $tptrue to "00" + $tptrue>>\n<<elseif $tp lt 10 and $tp gte 1>>\n\t<<set $tptrue to "000" + $tptrue>>\n<<else>>\n\t<<set $tptrue to "0000">>\n<<endif>>\n\n<<set $scarstrue to $scars + "">>\n<<if $scars gte 100>>\n\t<<set $scarstrue to 99>>\n<<elseif $scars lt 100 and $scars gte 10>>\n\t<<set $scarstrue to $scarstrue>>\n<<elseif $scars lt 10 and $scars gte 1>>\n\t<<set $scarstrue to "0" + $scarstrue>>\n<<else>>\n\t<<set $scarstrue to "00">>\n<<endif>>\n\n<<if $character is "Elesun">>\n\t<<set $chartrue to "Ele">>\n<<elseif $character is "Ripley">>\n\t<<set $chartrue to "Rip">>\n<<else>>\n\t<<set $chartrue to "Unk">>\n<<endif>>\n\n<<set $statstrue to "." + $strtrue + $agitrue + $endtrue + $wiltrue + $cngtrue + $statbase>>\n\n<<set $unarmedtrue to 1 + $unarmedtraining>>\n<<set $longswordtrue to 1 + $longswordtraining>>\n<<set $greatswordtrue to $gswordhave + $greatswordtraining>>\n<<set $katanatrue to $katanahave + $katanatraining>>\n<<set $speartrue to $spearhave + $speartraining>>\n<<set $sideswordtrue to $sswordhave + $sideswordtraining>>\n<<set $gauntletstrue to $gauntletshave + $gauntletstraining>>\n<<set $scythetrue to $scythehave + $scythetraining>>\n<<set $sabertrue to $saberhave + $sabertraining>>\n<<set $axetrue to $axehave + $battleaxetraining>>\n\n<<set $weaponstrue to $unarmedtrue + "." + $longswordtrue + "." + $greatswordtrue + "." + $katanatrue + "." + $speartrue + "." + $sideswordtrue + "." + $gauntletstrue + "." + $scythetrue + "." + $sabertrue + "." + $axetrue>>\n\n<<set $neutraltrue to $neutralhave + $neutraltraining>>\n<<set $naturaltrue to $naturalhave + $naturaltraining>>\n<<set $lighttrue to $lighthave + $lighttraining>>\n<<set $darktrue to $darkhave + $darktraining>>\n<<set $hellishtrue to $hellishhave + $hellishtraining>>\n\n<<set $spellstrue to $neutraltrue + "." + $naturaltrue + "." + $lighttrue + "." + $darktrue + "." + $hellishtrue>>\n\n<<set $clothtrue to $clothhave + $clothplus>>\n<<set $leathertrue to $leatherhave + $leatherplus>>\n<<set $chaintrue to $chainhave + $chainplus>>\n<<set $platetrue to $platehave + $plateplus>>\n\n<<set $armortrue to $clothtrue + "." + $leathertrue + "." + $chaintrue + "." + $platetrue>>\n\n<<set $banglestrue to $bangles + "">>\n\n<<set $inventorytrue to $weaponstrue + "-" + $spellstrue + "-" + $armortrue + "-" + $banglestrue>>\n\n<<set $bugcode to $versionnumber + "c" + $chapter + "." + $storystage + ":" + $dockmode + $mobile + $combatimages + $audioswitch + $masteraudioswitch + $demomode + $debug + ":" + $lvltrue + "-" + $xptrue + "-" + $tptrue + "-" + $scarstrue + "." + $chartrue + $statstrue + ":" + $inventorytrue + ":" + $return>>%/\n\n\n\n\n\n\n\n\n
Elesun picks up the stone.<<set $stoneOne.have to 1>>\n\n<<message>><<display "helpstones">><</message>>\n\n<<ctrlCon "1courtyard">>
<<set $truegrit to Math.trunc(($grit/$maxgrit)*100)>>\n\n<<if $truegrit lt 5>>\n\t<<set $gritdisplay to clone(setup.ui.grit['0grit'])>>\n<<elseif $truegrit lt 10>>\n\t<<set $gritdisplay to clone(setup.ui.grit['5grit'])>>\n<<elseif $truegrit lt 15>>\n\t<<set $gritdisplay to clone(setup.ui.grit['10grit'])>>\n<<elseif $truegrit lt 20>>\n\t<<set $gritdisplay to clone(setup.ui.grit['15grit'])>>\n<<elseif $truegrit lt 25>>\n\t<<set $gritdisplay to clone(setup.ui.grit['20grit'])>>\n<<elseif $truegrit lt 30>>\n\t<<set $gritdisplay to clone(setup.ui.grit['25grit'])>>\n<<elseif $truegrit lt 35>>\n\t<<set $gritdisplay to clone(setup.ui.grit['30grit'])>>\n<<elseif $truegrit lt 40>>\n\t<<set $gritdisplay to clone(setup.ui.grit['35grit'])>>\n<<elseif $truegrit lt 45>>\n\t<<set $gritdisplay to clone(setup.ui.grit['40grit'])>>\n<<elseif $truegrit lt 50>>\n\t<<set $gritdisplay to clone(setup.ui.grit['45grit'])>>\n<<elseif $truegrit lt 55>>\n\t<<set $gritdisplay to clone(setup.ui.grit['50grit'])>>\n<<elseif $truegrit lt 60>>\n\t<<set $gritdisplay to clone(setup.ui.grit['55grit'])>>\n<<elseif $truegrit lt 65>>\n\t<<set $gritdisplay to clone(setup.ui.grit['60grit'])>>\n<<elseif $truegrit lt 70>>\n\t<<set $gritdisplay to clone(setup.ui.grit['65grit'])>>\n<<elseif $truegrit lt 75>>\n\t<<set $gritdisplay to clone(setup.ui.grit['70grit'])>>\n<<elseif $truegrit lt 80>>\n\t<<set $gritdisplay to clone(setup.ui.grit['75grit'])>>\n<<elseif $truegrit lt 85>>\n\t<<set $gritdisplay to clone(setup.ui.grit['80grit'])>>\n<<elseif $truegrit lt 90>>\n\t<<set $gritdisplay to clone(setup.ui.grit['85grit'])>>\n<<elseif $truegrit lt 95>>\n\t<<set $gritdisplay to clone(setup.ui.grit['90grit'])>>\n<<elseif $truegrit lt 100>>\n\t<<set $gritdisplay to clone(setup.ui.grit['95grit'])>>\n<<else>>\n\t<<set $gritdisplay to clone(setup.ui.grit['100grit'])>>\n<<endif>>\n\n\n\n
<<image "AesSm3">><<image "RipSmKid">>Ripley lunges at Aesil with a punch as Elesun climbs back to her feet.\n\nRipley's arm sinks into Aesil's chest and keeps going, tearing through it until her fist explodes out the other side. Aesil screams and starts swinging, and manages to knock Ripley to the ground.\n\n<<journallink "The king" "codex_King">> and Folsom rush from the throne room next. Folsom hits Aesil with a beam of hellish energy, sending him flying back, and the king rushes to Ripley, scoops her up, and takes her back inside.\n\nElesun stands still, amazed at Ripley's strength.\n\n"She managed to hurt him," <<journallink "Folsom" "codex_Folsom">> says. "He may not come back. And the sell swords are fleeing. The day is ours."\n\n"I don't believe it," Elesun says.\n\n"Guard them. I'll make sure we've driven <<journallink "Aesil" "codex_Aesil">> away."\n\n"Yeah, you got it."\n\n<<ctrlClick "Continue." "0backtothrone" "leave">>\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set $enemyname to "Wicked Witch">>\n<<set $enemynumber to 5>>\n<<set $enemypower to 275>>\n<<set $enemyimg to setup.nme["ghostwoman"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 180>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 2>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 50>>\n<<set $nmedef to 56>>\n<<set $nmemov to 51>>\n<<set $nmemagic to 54>>\n\n<<set $enemyspecialname to "swamp">>\n<<set $enemyspecial to 1>>\n\n<<set $nmecritchance to 8>>\n<<set $nmecritdam to 1.75>>\n<<set $nmespellpower to 85>>\n<<set $nmeacc to 80>>\n<<set $nmebaseregen to 7>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 3>>\n\n<<set $nmexp to 20>>\n\n<<display "bal-adj-nme">>
/%open as alert/popup%/<<if $sq1.progress lt 9>>\s\nThe castle's head blacksmith needs more time to complete his repairs of the soldiers' equipment, and isn't quite sure how to bring it up to his Majesty. Maybe Elesun could talk to the king on his behalf?\n<<else>>\s\n/%open as alert/popup%/Elesun convinced the king to give the head blacksmith more time. Visit the journal to complete this quest!\s\n<<endif>>
Folsom was the king's court sorcerer and most trusted advisor. He taught crown prince Harlaus and Ripley law, bound magic, and mathematics. He was getting older now, but in his younger days, he apparently used to be quite dashing.\n\nHe was kind, but also a master of hellish magic and by far the most powerful wizard Elesun had ever met.
<<display "shad_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "shad"]]\n[[No|spellswap]]
<<display "baxe_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "axe"]]\n[[No|weaponswap]]
/% Aesil's stats %/\n<<set $enemyname to "Dark Mage Aesil">>\n<<set $enemynumber to 6>>\n<<set $enemypower to 1366>>\n<<set $enemyimg to setup.nme["NME_aes2"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 250>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 10>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 63>>\n<<set $nmedef to 62>>\n<<set $nmemov to 58>>\n<<set $nmemagic to 65>>\n\n<<set $enemyspecialname to "break">>\n<<set $enemyspecial to 7>>\n\n<<set $nmecritchance to 9>>\n<<set $nmecritdam to 1.9>>\n<<set $nmespellpower to 100>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 17>>\n\n<<set $nmemoveset to 5>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 100>>\n\n<<set $bossFight to true>>\n<<set $theme to 'AesBossTheme'>>\n<<set $hookPull to 'Aesil-hook-pull'>>\n<<set $phase to 0>>\n<<set $bossPoints to 0>>\n\n<<display "bal-adj-nme">>\n\n/% setup hooks for fight %/\n<<onNMEheartDam 'Aesil_phase'>>\n<<onDespAtk 'Aesil_phase'>>\n<<onEachAtk 'Aesil_phase'>>\n<<onNMEgritDam 'Aesil_phase'>>
<<set $tp to 3>>\n<<set $xp to 0>>\n\n<<set $basedispel to 5>>\n<<set $p_spellname to "Protect">>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n\n<<set $spellcrit to 0>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 5>>\n<<set $spellgrit to 10>>\n<<set $spelldispel to 10>>\n\n<<set $spellname to "Protect">>\n<<set $schoolname to "Neutral">>\n\n<<set $scars to 4>>\n\n<<set $regenmult to 1.0>>\n<<set $bangles to 0>>\n\n<<set $wStaUse to 5>>\n<<set $weaponname to "Longsword">>\n<<set $armorname to "Leather Armor">>\n<<set $critrange to 100>>\n\n<<set $armorname to "Leather Armor">>\n\n<<set $character to "Elesun">>\n\n<<set $lvl to 2>>\n\n<<set $firstRest to false>>
Ripley has stopped in the center of the grove. She isn't moving, just standing there, with her back to Elesun.\n\n"Ripley?" Elesun calls.\n\nRipley doesn't move.\n\n[[Draw and run to her side.|1tocamp2][$drawOrNot to 1]]\n\n[[Stay calm, but trot over to her.|1tocamp2][$drawOrNot to 0]]
<<set $enemyname to "Deserter Captain">>\n<<set $enemynumber to 7>>\n<<set $enemypower to 158>>\n<<set $enemyimg to setup.nme["NME_warrior"]>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 148>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 2>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 33>>\n<<set $nmedef to 33>>\n<<set $nmemov to 31>>\n<<set $nmemagic to 0>>\n\n<<set $enemyspecialname to "">>\n<<set $enemyspecial to 0>>\n\n<<set $nmecritchance to 5>>\n<<set $nmecritdam to 1.4>>\n<<set $nmespellpower to 0>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 3>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 15>>\n\n<<display "bal-adj-nme">>
\nA measure of speed and nimbleness. Agility greatly influences movement, as well as critical chance, critical damage, and dodge chance.\n\n
<<if $vows.current.length lte 0>>\s\n\tNo current vows.\s\n<<else>>\s\n\t<<for _i to 0; _i lt $vows.current.length; _i++>>\s\n\t\t<<set _v to $vows.current[_i]>>\s\n\t\t<<capture _v>>\s\n\t\t\t<<link setup.vows.list[_v].title>>\n\t\t\t\t<<dialog `'Vow: ' + setup.vows.list[_v].title` 'vow'>>\s\n\t\t\t\t\t<<- setup.vows.list[_v].descr>>\s\n\t\t\t\t\t<<if setup.vows.list[_v].outc>>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<<- setup.vows.list[_v].outc>>\s\n\t\t\t\t\t<<endif>>\s\n\t\t\t\t<</dialog>>\n\t\t\t<</link>>\n\t\t<</capture>>\s\n\t<</for>>\n<<endif>>
<div id="tutorial">[img[setup.ui.tut.tut3][combatexplanation4menu]]</div>\n<<ctrlCon "combatexplanation4menu">>
Volume: <span id="vol"><<print $volStr>></span> \s\n<<button "-">><<silently>>\n <<if $vol lte 1>>\n <<set $vol to 1>>\n <<masteraudio volume 0.05>>\n <<else>>\n <<set $vol-->>\n <<switch $vol>>\n <<case 1>>\n <<masteraudio volume 0.10>>\n <<case 2>>\n <<masteraudio volume 0.20>>\n <<case 3>>\n <<masteraudio volume 0.30>>\n <<case 4>>\n <<masteraudio volume 0.40>>\n <<case 5>>\n <<masteraudio volume 0.50>>\n <<case 6>>\n <<masteraudio volume 0.60>>\n <<case 7>>\n <<masteraudio volume 0.70>>\n <<case 8>>\n <<masteraudio volume 0.80>>\n <<case 9>>\n <<masteraudio volume 0.90>>\n <<case 10>>\n <<masteraudio volume 1.00>>\n <<default>>\n <<masteraudio volume 1.00>>\n <</switch>>\n <<endif>>\n <<set $volStr to $vol>>\n <<if $vol lt 10>>\n <<set $volStr to "0" + $volStr>>\n <<endif>>\n <<replace "#vol">>\s\n <<print $volStr>>\s\n <</replace>>\n<<endsilently>><</button>> \s\n<<button "+">><<silently>>\n <<if $vol gte 10>>\n <<set $vol to 10>>\n <<masteraudio volume 1.00>>\n <<else>>\n <<set $vol++>>\n <<switch $vol>>\n <<case 1>>\n <<masteraudio volume 0.10>>\n <<case 2>>\n <<masteraudio volume 0.20>>\n <<case 3>>\n <<masteraudio volume 0.30>>\n <<case 4>>\n <<masteraudio volume 0.40>>\n <<case 5>>\n <<masteraudio volume 0.50>>\n <<case 6>>\n <<masteraudio volume 0.60>>\n <<case 7>>\n <<masteraudio volume 0.70>>\n <<case 8>>\n <<masteraudio volume 0.80>>\n <<case 9>>\n <<masteraudio volume 0.90>>\n <<case 10>>\n <<masteraudio volume 1.00>>\n <<default>>\n <<masteraudio volume 1.00>>\n <</switch>>\n <<endif>>\n <<set $volStr to $vol>>\n <<if $vol lt 10>>\n <<set $volStr to "0" + $volStr>>\n <<endif>>\n <<replace "#vol">>\s\n <<print $volStr>>\s\n <</replace>>\n<<endsilently>><</button>> \s
''Defense''\n\nDefense reduces the damage you take. Using the "defend" action ends your turn and increases defense based on, among other things, how much stamina you have left. Your current Defense Rating is <<print $def>>.\n\n[img[setup.ui.icons.ui_dodge]] Your dodge rating is: <<print Math.trunc($dodge)>>\n\n[img[setup.ui.icons.ui_disp]] Your dispel rating is: <<print Math.trunc($dispel)>>\n\n<<name>> will automatically dodge attacks and dispel spells. She will do so with greater frequency the higher the respective rating is.\n
<<set $courtyardgate to 1>>Elesun pulls the lever. It's heavy and hard to pull, but clicks into place. She hears the clicking of a mechanism somewhere inside the stone wall, and then the creaking of the gate in the courtyard.\n\n<<ctrlClick "Okay." "0insidethewall">>
/*! <<shake>> macro set for SugarCube 2.x */\n@-webkit-keyframes shakeanim {\n\t0% { -webkit-transform: translate(2px, 1px) rotate(0deg); }\n\t10% { -webkit-transform: translate(-1px, -2px) rotate(-1deg); }\n\t20% { -webkit-transform: translate(-3px, 0px) rotate(1deg); }\n\t30% { -webkit-transform: translate(0px, 2px) rotate(0deg); }\n\t40% { -webkit-transform: translate(1px, -1px) rotate(1deg); }\n\t50% { -webkit-transform: translate(-1px, 2px) rotate(-1deg); }\n\t60% { -webkit-transform: translate(-3px, 1px) rotate(0deg); }\n\t70% { -webkit-transform: translate(2px, 1px) rotate(-1deg); }\n\t80% { -webkit-transform: translate(-1px, -1px) rotate(1deg); }\n\t90% { -webkit-transform: translate(2px, 2px) rotate(0deg); }\n\t100% { -webkit-transform: translate(1px, -2px) rotate(-1deg); }\n}\n@-o-keyframes shakeanim {\n\t0% { -o-transform: translate(2px, 1px) rotate(0deg); }\n\t10% { -o-transform: translate(-1px, -2px) rotate(-1deg); }\n\t20% { -o-transform: translate(-3px, 0px) rotate(1deg); }\n\t30% { -o-transform: translate(0px, 2px) rotate(0deg); }\n\t40% { -o-transform: translate(1px, -1px) rotate(1deg); }\n\t50% { -o-transform: translate(-1px, 2px) rotate(-1deg); }\n\t60% { -o-transform: translate(-3px, 1px) rotate(0deg); }\n\t70% { -o-transform: translate(2px, 1px) rotate(-1deg); }\n\t80% { -o-transform: translate(-1px, -1px) rotate(1deg); }\n\t90% { -o-transform: translate(2px, 2px) rotate(0deg); }\n\t100% { -o-transform: translate(1px, -2px) rotate(-1deg); }\n}\n@keyframes shakeanim {\n\t0% { transform: translate(2px, 1px) rotate(0deg); }\n\t10% { transform: translate(-1px, -2px) rotate(-1deg); }\n\t20% { transform: translate(-3px, 0px) rotate(1deg); }\n\t30% { transform: translate(0px, 2px) rotate(0deg); }\n\t40% { transform: translate(1px, -1px) rotate(1deg); }\n\t50% { transform: translate(-1px, 2px) rotate(-1deg); }\n\t60% { transform: translate(-3px, 1px) rotate(0deg); }\n\t70% { transform: translate(2px, 1px) rotate(-1deg); }\n\t80% { transform: translate(-1px, -1px) rotate(1deg); }\n\t90% { transform: translate(2px, 2px) rotate(0deg); }\n\t100% { transform: translate(1px, -2px) rotate(-1deg); }\n}\n.shake-block,\n.shake {\n\t-webkit-animation-duration: 0.8s;\n\t -o-animation-duration: 0.8s;\n\t animation-duration: 0.8s;\n\t-webkit-animation-iteration-count: infinite;\n\t -o-animation-iteration-count: infinite;\n\t animation-iteration-count: infinite;\n\t-webkit-animation-name: shakeanim;\n\t -o-animation-name: shakeanim;\n\t animation-name: shakeanim;\n\t-webkit-animation-timing-function: linear;\n\t -o-animation-timing-function: linear;\n\t animation-timing-function: linear;\n\t-webkit-transform-origin: 50% 50%;\n\t -ms-transform-origin: 50% 50%;\n\t -o-transform-origin: 50% 50%;\n\t transform-origin: 50% 50%;\n}\n.shake-block {\n\tdisplay: block;\n}\n.shake {\n\tdisplay: inline-block;\n}\n
"Sleep good?" Irelith asks as Elesun comes to stand next to her and Folsom.\n\n"Well enough. Here to see us off?"\n\n"The King wanted to be here too, but an important report has just come in from one of our scouts."\n\n"Nothing bad?" Elesun asks.\n\n"The word he used was 'unusual,' so I don't so. Nonetheless, stay vigilant."\n\n"Okay," Elesun says.\n\n"Be careful, Elesun," Irelith says. "See you in a few days."
<<set $wounds to $wounds + ($health - $maxhealth)>>\n<<set $health to $maxhealth>>\n<<set $day to $day+1>>\n/%scar calculation%/\n<<set $scarReport to 0>>\n<<if $mode is 3>>\n\t<<set $scarchance to 20>>\n<<elseif $mode is 2>>\n\t<<set $scarchance to 30>>\n<<else>>\n\t<<set $scarchance to 25>>\n<<endif>>\n<<set $scarchance to $scarchance + ($wounds * 5)>>\n<<if $wounds gte 5>>\n\t<<set $scarchancesAmt to 2>>\n<<elseif $wounds gte 1>>\n\t<<set $scarchancesAmt to 1>>\n<<else>>\n\t<<set $scarchancesAmt to 0>>\n<<endif>>\n<<if !$firstRest>>\n\t<<set $scarchance to 100>>\n\t<<set $scarchancesAmt to 1>>\n<<endif>>\n<<display "scar_roulette">>\n\n<<if $scarReport is 0>>\n\t<<set $restScars to "Thankfully, they didn't leave any scars.">>\n<<else>>\n\t<<set $restScars to "You have " + $scarReport + "new scars...">>\n<<endif>>\n\n<<set $restReport to "You " + either("slept well", "didn't sleep so well", "slept poorly", "didn't get much sleep", "wake up feeling great") + ". Some of your wounds have healed! " + $restScars>>\n\n<<stats>>
<<set $helpServants to 0>><<image "RipSmKid">><<thumb>>Elesun grabs Ripley by the hand and drags her away from the storeroom.\n\n"Elesun!" she says. "We can't just leave them!"\n\n"You swore an oath to protect and serve your king. So did I."\n\n"But what if they need us?"\n\nElesun stops and turns to face Ripley, and places places her hands on Ripley's shoulders. "Sometimes we have to make hard decisions. When we can't help everyone, we have to choose who to help. We're losing a lot of people, good people. But each and every one of those people would want us to help the king. Without the king, we have nothing."\n\nRipley is silent for a moment. "I know we can't save everyone," she says, finally.\n\n"Come on, then."\n\nRipley takes one last look at the storeroom door. "Fine."\n\n<<ctrlClick "Continue." "0mainhall" "leave">>\n\n\n\n\n\n\n\n\n
<div id='splash'><span id='splash-title'>\n<h1 class='text-focus-in'>+ Holy Land</h1>\n<<timed 2s t8n>>Make no vows.<</timed>>\n<<display 'custom-load-html'>>\n</span>\n<<nobr>>\n<<script>>\npostdisplay['schlepaudio'] = function (t) {\n\tdelete postdisplay[t];\n\t$.wiki('<<schlepaudio>>');\n\t$(document).on(':schlepaudio', function (e) {\n\t\tvar perc = 100 - Math.trunc((e.leng / 100) * 100);\n\t\tif (perc = 100) {\n\t\t\t$('#load-perc').animate({ 'width' : '100%' }, \n\t\t\t\t5750);\n\t\t\tsetTimeout( function () {\n\t\t\t\t$(document).trigger(':audiofullyloaded');\n\t\t\t}, 6000);\n\t\t} else {\n\t\t\t$('#load-perc').css('width', perc + '%');\n\t\t}\n\t});\n};\n<</script>>\n@@#load-perc;@@@@#load-perc-title;Loading...@@\n<<endnobr>>\n</div>\n<<run $('#splash-title').hide().delay(3000).fadeIn('fast');>>
Elesun takes a look around. This is probably her favorite place in the castle, she decides.<<if $relax is 0>>\n\nRelax here for a few minutes?\n\n<<ctrlClick "Sit down on the grass." "1cyRelax">><<endif>>
<<audio "equip" play>>Equipment changed!\n\n[[Okay.|equipmenu]]\n\n<<if $change eq "bless">>\n\t<<display "spell_blessing">>\n<<elseif $change eq "expl">>\n\t<<display "spell_explosion">>\n<<elseif $change eq "keen">>\n\t<<display "spell_keen">>\n<<elseif $change eq "poss">>\n\t<<display "spell_possessed">>\n<<elseif $change eq "infr">>\n\t<<display "spell_inferno">>\n<<elseif $change eq "shroud">>\n\t<<display "spell_flameshroud">>\n<<elseif $change eq "disp">>\n\t<<display "spell_dispel">>\n<<elseif $change eq "vigr">>\n\t<<display "spell_vigor">>\n<<elseif $change eq "focs">>\n\t<<display "spell_focus">>\n<<elseif $change eq "shad">>\n\t<<display "spell_shadow">>\n<<elseif $change eq "prot">>\n\t<<display "spell_protect">>\n<<elseif $change eq "gho">>\n\t<<display "spell_ghost">>\n<<elseif $change eq "rage">>\n\t<<display "spell_rage">>\n<<elseif $change eq "heal">>\n\t<<display "spell_healing">>\n<<elseif $change eq "regn">>\n\t<<display "spell_regeneration">>\n<<endif>>\n<<stats>>
<<set $enemyname to "Enemy">>\n<<set $enemynumber to 0>>\n<<set $enemypower to 30>>\n<<set $enemyimg to "NME_warrior">>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 100>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 2>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 30>>\n<<set $nmedef to 30>>\n<<set $nmemov to 30>>\n<<set $nmemagic to 0>>\n\n<<set $enemyspecialname to "">>\n<<set $enemyspecial to 0>>\n\n<<set $nmecritchance to 10>>\n<<set $nmecritdam to 1.0>>\n<<set $nmespellpower to 0>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 3>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 15>>\n\n/%balanceObj%/\n<<display "bal-adj-nme">>\n\n
Through the door, the king is alone on his throne. Must've throne out the advisors and attendants again.\n\n<<ctrlClick 'Go in.' '1throne' 'leave'>>
An ordinary steel longsword.\n\nWell-crafted and balanced for all situations, the longsword is versatile and reliable.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Moderate|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Moderate|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Moderate|\n*__Finesse__: Moderate\n*__Stamina__: Moderate
<<set $gswordhave to 1>>Elesun decides to take the great sword with her. It’s better off helping her defend the castle than becoming some sell-sword’s trophy.\n\n<<message>><<display "helpequip">><</message>>\n\n<<ctrlClick "Okay." "0insidethewall">>\n<<notifyInventory 'weapon'>>
This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text. This is a lot of text.
<div id="tutorial">[img[setup.ui.tut.tut1][combatexplanation2menu]]</div>\n<<ctrlCon "combatexplanation2menu">>
<<combat "rank3lvl3_assassin" "combat_intro_1_1" "combat_outro_1_1">>
double check quotation marks--text inside should be green in all code.
#vow-tray {\n\t/* entire box */\n\theight: 15em;\n\twidth: 30em;\n\tborder: 1px #111 solid;\n}\n\n#vow-title {\n\t/* heading */\n\tpadding: 0.5em;\n\tborder-bottom: 1px black solid;\n}\n\n#vow-tabs {\n\t/* the tabbed links box */\n\tpadding: 0.5em 2.5em;\n\tbackground: #111;\n}\n\n.v-tab {\n\t/* each tabbed link */\n\tpadding: 0.5em 2em;\n\tborder: 1px #fafafa solid;\n}\n\n.v-tab a {\n\tdisplay: inline-block;\n\tcolor: #eee !important;\n}\n\n.v-tab a:hover {\n\tcolor: #fff !important;\n}\n\n.v-tab.selected a {\n\tcolor: #111 !important;\n}\n\n.v-tab.selected a:hover {\n\tcolor: #111 !important;\n\ttext-decoration: none;\n}\n\n.v-tab.selected {\n\t/* change color and remove bottom border */\n\tbackground: #eee;\n}\n\n#vow-list {\n\t/* main component, where vows are listed */\n\tmargin: 1em;\n}
As much as Elesun wants to ignore it, she knows that this is the king's fault. All of it. Staying here put Ripley in danger. All the soldiers and servants and villagers that died--all blood on his hands.\n\nAnother part of her knows that isn't fair--he didn't want this, he couldn't have. But coming here was foolish, it put a big target on the castle.
<<set $spellname to "">>\n<<set $spelldamReport to "">>\n<<set $effectReport to "">>\n/%calculate damage%/\n<<set $modifier to either(0.8,0.9,1.1,1.2)>>\n<<set $damagetoplayer to 0>>\n<<set $NMEcritrange to 100>>\n<<set $dodgedatks to 0>>\n<<set $i to 0>>\n<<set $hurtmaker to 0>>\n\n<<if $flinched>>\n\t<<set _flav to either('flinches', 'stumbles', 'staggers', 'is stunned', 'stumbles back', 'nearly falls over')>>\n\t<<set $enemyreport to $enemyname + ' ' + _flav + '.'>>\n<<else>>\n\n<<if $playeraction is 2>>\n\t<<set $reduce to Math.trunc($def*1.5*$NMESpDef)>>\n<<elseif $playeraction is 3>>\n\t<<set $reduce to $mov*$NMESpMov>>\n<<else>>\n\t<<set $reduce to $def*$NMESpDef>>\n<<endif>>\n\n<<set $damagetoplayerPRE to Math.trunc($nmeatk*$modifier)-($reduce*0.5)>>\n\n<<if $damagetoplayerPRE lt $nmeatk*0.4>>\n\t<<if $playeraction is 2>>\n\t\t<<if $damagetoplayerPRE lt $nmeatk*0.2>>\n\t\t\t<<set $damagetoplayerPRE to Math.trunc($nmeatk*0.2)>>\n\t\t<<else>>\n\t\t\t<<set $damagetoplayerPRE to Math.trunc($damagetoplayerPRE)>>\n\t\t<<endif>>\n\t<<else>>\n\t\t<<if $damagetoplayerPRE lt $nmeatk*0.4>>\n\t\t\t<<set $damagetoplayerPRE to Math.trunc($nmeatk*0.4)>>\n\t\t<<else>>\n\t\t\t<<set $damagetoplayerPRE to Math.trunc($damagetoplayerPRE)>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>\n\n\n<<if $nmeaction is 3 and $enemyspecial is 0>>\n\t<<set $nmeaction to 1>>\n\t<<set $NMEcritrange to 90>>\n<<endif>>\n\n\n\n/%action resolution%/\n<<if $nmeaction lt 2>>\n\n\t<<if $nmeaction is 1>>\n\t\t<<set $atkcount to $nmemoveset>>\n\t<<elseif $nmeaction is 1.1>>\n\t\t<<set $atkcount to $nmemoveset-1>>\n\t<<elseif $nmeaction is 1.2>>\n\t\t<<set $atkcount to 1>>\n\t<<elseif $nmeaction is 1.3>>\n\t\t<<set $atkcount to 2>>\n\t<<endif>>\n\n\t<<if $atkcount gt 0>>\n\t\t<<set $hurtmaker to either(1,2,3)>>\n\t<<endif>>\n\n\t<<for $i to 0; $i lte $atkcount; $i++>>\n\t\t<<set $dodgecheck to random(1, $nmeacc)>>\n\t\t<<payload 'onNMEatk'>>\n\t\t<<set $damagetoplayerPOST to $damagetoplayerPRE>>\n\n\t\t<<if $enemyspecial is 0>>\n\t\t\t<<set $nmecritcheck to random(1, $NMEcritrange)>>\n\t\t\t<<if $nmecritcheck lte $nmecritchance>>\n\t\t\t\t<<set $damagetoplayerPOST to Math.trunc($damagetoplayerPOST*$nmecritdam)>>\n\t\t\t\t/%<<set alert("The enemy scored a critical hit against you...")>>%/\n\t\t\t\t<<dialog 'That hurt...'>>\n\nThe enemy scored a critical hit...\n\n<</dialog>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\n\t\t<<if $dodgecheck lte $dodge>>\n\t\t\t<<set $dodgedatks to $dodgedatks+1>>\n\t\t\t<<set $damagetoplayerPOST to 0>>\n\t\t<<else>>\n\t\t\t<<set $grit to Math.trunc($grit-$damagetoplayerPOST)>>\n\t\t\t<<if $devilForm is 0 and $formUnlock gte 1>>\n\t\t\t<<set $rage to Math.trunc($rageBuild*$modifier*0.5)>>\n\t\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t\t<<set $damagetoplayer to $damagetoplayer+$damagetoplayerPOST>>\n\t\t\t<<if $grit lte 0>>\n\t\t\t\t<<set $grit to $maxgrit>>\n\t\t\t\t<<set $health to $health-1>>\n\t\t\t\t<<set $hurtmaker to 4>>\n\t\t\t\t<<if $health lte 0>>\n\t\t\t\t\t<<set $health to 0>>\n\t\t\t\t\t<<display "health_checker">>\n\t\t\t\t<<endif>>\n\t\t\t\t<<if $devilForm is 0>>\n\t\t\t\t\t<<display "desperation_atk">>\n\t\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endfor>>\n\n\t<<if $atkcount is 1>>\n\t\t<<set $words to " attack ">>\n\t<<else>>\n\t\t<<set $words to " attacks ">>\n\t<<endif>>\n\n\t<<if $dodgedatks gte $atkcount>>\n\t\t<<set $dodgereport to ", and " + $character + " dodged them all.">>\n\t<<elseif $dodgedatks gt 0>>\n\t\t<<set $dodgereport to ". " + $character + " managed to dodge " + $dodgedatks + " of them. However, the enemy still hits for " + Math.trunc($damagetoplayer) + " damage.">>\n\t<<else>>\n\t\t<<set $dodgereport to " and hits for " + Math.trunc($damagetoplayer) + " damage in total.">>\n\t<<endif>>\n\t<<set $enemyreport to $enemyname + " performed " + $atkcount + " " + $words + $dodgereport>>\n\n\t<<if $nmeaction is 1.2 or $nmeaction is 1.3>>\n\t\t<<set $enemyreport to $enemyreport + " Enemy defends.">>\n\t<<endif>>\n<<endif>>\n\n<<if $nmeaction is 1.1>>\n\t<<set $nmedefboost to 1.1>>\n\t<<set $nmeregen to $nmebaseregen>>\n<<elseif $nmeaction is 1.2>>\n\t<<set $nmedefboost to 1.3>>\n\t<<set $nmeregen to $nmebaseregen+1>>\n<<elseif $nmeaction is 1.3>>\n\t<<set $nmedefboost to 1.2>>\n\t<<set $nmeregen to $nmebaseregen>>\n<<elseif $nmeaction is 2>>\n\t<<set $nmedefboost to 1.5>>\n\t<<set $nmeregen to $nmebaseregen+3>>\n\t<<set $enemyreport to $enemyname + " defends.">>\n<<endif>>\n\n<<if $nmeaction is 3 and $enemyspecial gt 0>>\n\t/%spell damage calc%/\n\t<<display $enemyspecialname>>\n\n\t<<set $dispSuccess to 0>>\n\n\t<<set $specialFloor to Math.trunc($nmemagic/2)>>\n\t<<set $specialTop to Math.trunc($nmemagic*1.0)>>\n\t<<set $specialRoll to random($specialFloor, $specialTop)>>\n\t<<set $specialDam1 to $nmespellpower-50>>\n\t<<set $specialDam2 to Math.trunc($nmespellpower/6)>>\n\t<<set $specialDam1 to $specialDam2*$specialDam1>>\n\t<<set $specialDam1 to $spBase + $specialDam1>>\n\t<<set $specialDam1 to $specialDam1 - $wilval>>\n\t<<set $specialDam1 to $specialDam1 - Math.trunc($def/2)>>\n\t<<set $specialDam1 to Math.trunc($specialDam1/10)>>\n\t<<set $specialBase to $specialDam1 + $specialRoll>>\n\t<<set $specialDam to Math.trunc($specialBase * $specialMult)>>\n\n\t<<set $dispCheck to random(1, $nmespellpower)>>\n\t<<payload 'onNMEspell'>>\n\t<<if $dispCheck lte $dispel>>\n\t\t<<payload 'onDispel'>>\n\t\t<<set $specialDam to 0>>\n\t\t<<set $dispSuccess to 1>>\n\t\t<<set $effectReport to "">>\n\t\t<<set $specialOn to 0>>\n\t\t<<set $NMESpMov to 1.0>>\n\t\t<<set $NMESpDef to 1.0>>\n\t\t<<set $NMESpAtk to 1.0>>\n\t\t<<set $NMESpDam to 1.0>>\n\t\t<<set $NMEStaUse to 0>>\n\t\t<<set $NMEStaLmt to 0>>\n\t<<endif>>\n\n\t<<if $enemyspecialname neq "heal">>\n\t\t<<set $grit to Math.trunc($grit-$specialDam)>>\n\t\t<<set $hurtmaker to either(1,2,3)>>\n\t\t<<if $grit lte 0>>\n\t\t\t<<set $grit to $maxgrit>>\n\t\t\t<<set $health to $health-1>>\n\t\t\t<<set $hurtmaker to 4>>\n\n\t\t\t<<if $health lte 0>>\n\t\t\t\t<<set $health to 0>>\n\t\t\t\t<<display "health_checker">>\n\t\t\t<<endif>>\n\t\t\t<<if $devilForm is 0>>\n\t\t\t\t<<display "desperation_atk">>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<else>>\n\t\t<<set $nmeregen to $nmebaseregen+$specialDam>>\n\t<<endif>>\n\n\t<<if $specialDam gte 1 and $enemyspecialname neq "heal">>\n\t\t<<set $spelldamReport to $character + " took " + $specialDam + " damage. ">>\n\t\t<<if $devilForm is 0 and $formUnlock gte 1>>\n\t\t<<set $rage to Math.trunc($rageBuild*$modifier*1.5)>>\n\t\t<<set $rageCurrent to $rageCurrent + $rage>>\n\t\t\t<<if $rageCurrent gt 200>>\n\t\t\t\t<<set $rageCurrent to 200>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<elseif $specialDam gte 1 and $enemyspecialname is "heal">>\n\t\t<<set $spelldamReport to $enemyname + " casts a healing spell and begins to recover grit. ">>\n\t<<else>>\n\t\t<<set $spelldamReport to "But " + $character + " dispelled it! The spell does nothing. ">>\n\t<<endif>>\n\t\t/%spell effect%/\n\t<<if $specialOn is 0>>\n\t\t<<if $SpEffName neq "" and $dispSuccess is 0>>\n\t\t\t<<set $SpEffTime to either(2,2,2,2,3,3,3,4,4,5)>>\n\t\t\t<<set $SpEffTime to $SpEffTime + $TimeAdj + 1>>\n\t\t\t<<set $SpEffDisplay to $SpEffName>>\n\t\t\t<<set $specialOn to 1>>\n\t\t\t<<set $SpEffStart to $round>>\n\t\t\t<<set $SpEffEnd to $round + $SpEffTime>>\n\t\t\t<<set $effectReport to $character + " has been " + $SpEffName + ".">>\n\t\t<<else>>\n\t\t\t<<set $effectReport to "">>\n\t\t<<endif>>\n\t<<elseif $specialOn is 1 and $dispSuccess is 0>>\n\t\t<<set $SpEffEnd to $SpEffEnd + either(1,1,2) + $TimeAdj>>\n\t\t<<set $effectReport to $character + " is further " + $SpEffName + ".">>\n\t<<endif>>\n<<set $enemyreport to "Enemy casted " + $specialname + ". " + $spelldamReport + $effectReport>>\n<<endif>>\n\n<<if $hurtmaker>>\n\t<<if $hurtmaker lt 4>>\n\t\t<<payload 'onGritDam'>>\n\t<<elseif $hurtmaker is 4>>\n\t\t<<payload 'onHeartDam'>>\n\t<<endif>>\n<<endif>>\n\n<<if $hurtmaker is 1>>\n\t<<audio "hurt1" play>>\n<<elseif $hurtmaker is 2>>\n\t<<audio "hurt2" play>>\n<<elseif $hurtmaker is 3>>\n\t<<audio "hurt3" play>>\n<<elseif $hurtmaker is 4>>\n <<set _damSel to random(1,100)>>\n <<if _damSel lte 15 and $character is "Ripley">>\n <<audio "damage2" play>>\n <<else>>\n <<audio "damage" play>>\n <<endif>>\n<<endif>>\n\n<<endif>>
\n<<set $atk to Math.trunc($atkbase*$watk*$aatk*$satk*$modeatk)>>\n<<set $def to Math.trunc($defbase*$wdef*$adef*$sdef)>>\n<<set $mov to Math.trunc($movbase*$wmov*$amov*$smov)>>\n\n<<if $bangles eq 1>><<set $regenmult to 2.0>><<set $basedispel to 20>><<endif>>\n\n<<set $critchance to Math.trunc(($agival/10+$cngrank)+$spellcrit)>>\n<<set $critdam to Math.trunc($atk*$critmult*$spellcritdam)>>\n<<set $dodge to Math.trunc(((5+$agirank*2.5)+$cngrank)+$spelldodge)>>\n<<set $maxgrit to 100+$endval+$spellgrit>>\n\n/%regen and healing calculated on the fly in combat--no need to change here%/\n<<display "bal-adjust">>
<<nobr>><<set $gamestart to 2>><<endnobr>><<if $characterHide is 0>>\n!!<<print "\su2694">> Current Equipment:\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_weapon]]>><<replace "#info">><<display "wpninfo">><</replace>><</link>></span>|<<link $weaponname>><<popup "wpn_comUI">><</link>>|<<button [[Change|weaponswap]]>><</button>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_armor]]>><<replace "#info">><<display "armrinfo">><</replace>><</link>></span>|<<link $armorname>><<popup "arm_comUI">><</link>>|<<button [[Change|armorswap]]>><</button>>|\n|<span class="comUIimg"><<link [img[setup.ui.icons.ui_spell]]>><<replace "#info">><<display "splinfo">><</replace>><</link>></span>|<<link $p_spellname>><<popup "spl_comUI">><</link>>|<<button [[Change|spellswap]]>><</button>>|\n\n<span id ="return">[[Go back.|$return][$gamestart to 1]]</span>\n\n<<display "infobox">><<else>>Nothing here right now...<<endif>>
/% 4 %/\n<<if $NMEgrit gte 0.5*$NMEmaxgrit>>\n\t<<set $specialMult to 1.5>>/%damage of spell%/\n<<else>>\n\t<<set $specialMult to 1.0>>\n<<endif>>\n<<set $NMEgrit to Math.trunc($NMEgrit/2)>>\n\n<<set $SpEffName to "">>/%display on chracter sheet%/\n<<set $TimeAdj to either(0,0,0,0)>>/%time adjustment%/\n\n<<set $NMESpMov to 1.0>>/%mov debuff%/\n<<set $NMESpDef to 1.0>>/%def debuff%/\n<<set $NMESpAtk to 1.0>>/%atk debuff%/\n<<set $NMESpDam to 1.0>>/%damage debuff%/\n<<set $NMEStaUse to 0>>/%additional sta usage%/\n<<set $NMEStaLmt to 0>>/%subtract from sta at top of each turn%/\n\n<<set $specialname to "Death Knell">>\n\n<<set $specialMult to $specialMult * setup.bal.espell>>
It's exactly as bad as it looks.
"She's still a child. She can't face Akatosh yet, not until she's ready. We need to protect her until then."\n\nElesun looks away.\n\n"You disapprove? Should we send her to her death now?"\n\n"I don't want her to ever--" Elesun stops short. "That's not what I want."\n\nThe King sighs. "Of course, I'm sorry. I feel a great pressure; the world demands its hero."
<<display "sbr_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "sabr"]]\n[[No|weaponswap]]
Ripley was a druid--to some extent she still is.\n\nWhen the oracles of her tribe discovered what Ripley was, they made the decision to hand her over to the king of Juno, Elesun’s king. The king, clever as always, engineered a claim to nobility for her by coaxing the druids into naming Ripley a princess. As she was royalty, the king was able to fund a great deal of schooling, protection, and training for her, with or without the approval of his court.
<<set $dodgecheck to random(1, $nmeacc)>>\n\n<<if $dodgecheck lte $dodge>>\n\t<<set $damagetoplayerPOST to 0>>\n\t<<set $dodgedatks to $dodgedatks+1>>\n\t<<payload 'onDodge'>>\n<<endif>>
/*\n\t<<schlepaudio>>\n*/\nMacro.add('schlepaudio', {\n\tskipArgs : true,\n\tqueue : [],\n\thandler : function () {\n\t\tvar queue = this.self.queue;\n\t\tvar name = this.name;\n\t\tif (queue.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction processQueue() {\n\t\t\tif (queue.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar nextTrack = queue.shift();\n\n\t\t\tjQuery.event.trigger({\n type : ':' + name,\n leng : queue.length\n });\n\n\t\t\tif (nextTrack.hasData()) {\n\t\t\t\treturn processQueue();\n\t\t\t}\n\n\t\t\tnextTrack\n\t\t\t\t.one('canplay.' + name + ' error.' + name, function () { // do not use an arrow function\n\t\t\t\t\tjQuery(this).off(':' + name);\n\t\t\t\t\tprocessQueue();\n\t\t\t\t})\n\t\t\t\t.load();\n\t\t}\n\n\t\tthis.self.fillQueue(queue);\n\n\t\tif (queue.length > 0) {\n\t\t\tprocessQueue();\n\t\t}\n\t},\n\tfillQueue : function (queue) {\n\t\t// Gather all tracks from `<<cacheaudio>>`.\n\t\tvar tracks = Macro.get('cacheaudio').tracks;\n\t\tObject.keys(tracks).forEach(function (id) { queue.push(tracks[id]); });\n\n\t\t// Gather copied tracks from `<<createplaylist>>`.\n\t\tvar lists = Macro.get('createplaylist').lists;\n\t\tObject.keys(lists)\n\t\t\t.map(function (id) { return lists[id].tracks; })\n\t\t\t.flatten()\n\t\t\t.filter(function (trackObj) { return trackObj.copy; })\n\t\t\t.forEach(function (trackObj) { queue.push(trackObj.track); });\n\n\t\t/*\n\t\t\tGather all tracks from `<<setplaylist>>`, since they're all copies.\n\t\t\tNOTE: `<<setplaylist>>` is deprecated, so don't assume that it exists.\n\t\t*/\n\t\tif (Macro.has('setplaylist')) {\n\t\t\tvar list = Macro.get('setplaylist').list;\n\n\t\t\tif (list !== null) {\n\t\t\t\tlist.tracks.forEach(function (trackObj) { queue.push(trackObj.track); });\n\t\t\t}\n\t\t}\n\t}\n});
<<nobr>><<set $gamestart to 2>><<endnobr>>
<span id="portrait"><<if $character is "Elesun">>[img[setup.img.EleSm]]<<else>>[img[setup.img.RipSm]]<<endif>></span>
<<image "AesSm3">><<thumb>><<if $def_success>>\s\n\t<<nobr>>\s\n\t\t<<set $bossPoints++>>\n\t\t<<set _next to 'attack-bar'>>\n\t\t<<set $nextBoss to 'Aes-boss-attack-1'>>\n\t\t<<if $grit lt $maxgrit>>\n\t\t\t<<set $grit to $maxgrit>>\n\t\t<<endif>>\s\n\t<<endnobr>>\n''Defend Event Successful''\n\nAesil throws himself at <<name>>, but she stops him mid-stride with a powerful kick to his chest, and he stumbles back.\n\n<<if $character is 'Elesun'>>"You won't hurt her," <<name>> says. "You won't hurt anyone anymore. You're going to die here today."<<else>>"I'm stronger than you, Aesil!" <<name>> shouts. "You're going to pay!"<<endif>>\n<<else>>\s\n\t<<nobr>>\s\n\t\t<<set _next to 'highway1'>>\n\t\t<<set $grit to $grit - 30>>\n\t\t<<if $grit lt 1>>\n\t\t\t<<set $grit to 1>>\n\t\t<<endif>>\s\n\t<<endnobr>>\n''Defend Event Failed''\n\n<<name>> tries to slip under Aesil's attack, but he hits her with a glancing blow, and she reels back.\n\n"Damn it," <<name>> spits.\n<<endif>>\s\n\n[[Get Ready!|_next]]
<<image "AesSm3">><<thumb>><<if $def_success>>\s\n\t<<nobr>>\s\n\t\t<<set $bossPoints++>>\n\t\t<<set _next to 'attack-bar'>>\n\t\t<<if $grit lt $maxgrit>>\n\t\t\t<<set $grit to $maxgrit>>\n\t\t<<endif>>\s\n\t<<endnobr>>\n''Defend Event Successful''\n\nAesil unleashes a blast of energy--it passes trees and grass on the way to <<name>>; leaves rain to the ground, the grass dries and browns. An attack like this could destory the whole forest.\n\n<<if $character is 'Elesun'>>"Fine!" Elesun brings her sword back and follows through with a mighty swing. Her blade meets the blast, and for an instant, both stop still. Elesun yells out and brings her sword the rest of the way around.\n\nThe blast sails into the sky and explodes, spreading a dark haze into the sky and casting a gray shadow over the battlefield.\n\nShe feels her shoulder grow lighter and lets out a gasp. Her right arm, sword and all, drop unceremoniously to the ground, and her skin tears like fabric.\n\nAesil laughs; it's a loud, haughty laugh. Elesun reaches down with her other hand and takes up her sword as best she can in her broken fingers. Aesil is still laughing.\n\n"I'm not dead yet," she says softly.<<else>>Elesun extends her hands, and her bangles flash with light. "You're nothing!" she shouts. The instant the blast touches her hands, the blast of energy dissapates in smoke and floats away on the wind.<<endif>>\s\n<<else>>\s\n\t<<nobr>>\s\n\t\t<<set _next to 'highway1'>>\n\t\t<<set $grit to $grit - 30>>\n\t\t<<if $grit lt 1>>\n\t\t\t<<set $grit to 1>>\n\t\t<<endif>>\s\n\t<<endnobr>>\n''Defend Event Failed''\n\nAesil unleashes a blast of energy--it passes trees and grass on the way to <<name>>; leaves rain to the ground, the grass dries and browns. An attack like this could destory the whole forest.\n\n<<name>> can't stop it, though. She contiplates the attempt, but ultimately dives out of the way at the last moment as the blast continues on, drawing the life from everything in its wake.<<if $character is 'Elesun'>>\n\nElesun tries to climb back up off the ground, but when she puts her weight on her right arm, she hears her bones crack, and pain shoots through her. Her arm splits outword, her bones paring through flesh, and as she rises, the weight of her sword strains against her weakening muscles. It falls, taking her arm with it at the elbow, her skin ripping like fabric.\n\n"Damn it," she breathes. \n\nAesil laughs--a haughty, mocking laugh. Elesun takes up her sword in the shattered bones of her left hand and rises. Aesil is still laughing.\n\n"I'm not dead yet," she says softly.<<endif>>\s\n<<endif>>\s\n\n<<ctrlCon 'highway1'>>
<<if $def_success>>\n\t<<set $defCon++>>\n<<endif>>\n\n<<set $defCount++>>\n<<if $defCount lt 2>>\n\t<<set $nextBoss to 'Aes-boss-defend-3'>>\n\t<<goto 'defend-bar'>>\n<<else>>\n\t<<set $nextBoss to 'Aes-boss-defend-4'>>\n\t<<goto 'defend-bar'>>\n<<endif>>
<<image "AesSm3">><<thumb>><<nobr>>\n<<if $defCon gte 2>>\n\t<<set $grit to $maxgrit>>\n\t<<if $defCon gte 3 and $health lt $maxhealth>>\n\t\t<<set $health++>>\n\t<<endif>>\n<<else>>\n\t<<set $grit -= 50>>\n\t<<if $defCon is 0>>\n\t\t<<set $grit -= 100>>\n\t<<endif>>\n\t<<if $grit lt 1>>\n\t\t<<set $grit to 1>>\n\t<<endif>>\n<<endif>>\n<<set $bossPoints += $defCon>>\n<<unset $defCon, $defCount>>\n<<endnobr>>\s\nAesil seems to run out of power, as his final attack sends him clattering to the ground. He rises quickly, terror drawn on his face.\n\n"I can't lose can't lose, must kill," he rasps.\n\n<<if $character is 'Elesun'>>Elesun stumbles back, feeling her legs weakening. "Damn it all!" she cries. "Keep it together, just a little more."<<else>>Ripley stands over him. She lets him rise. He slowly begins to back away. He breaks out into a run, but she pounces on him, sending him clattering to the ground.\n\n"You'll stand and fight, like she did," Ripley spits. "Now die!"<<endif>>\n\n<<ctrlCon 'highway1'>>
Vital dramatically increases <<= setup.words.grit>> and provides a bonus to <<= setup.words.grit>> regeneration.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
"You may take your leave, then."\n\n<<ctrlClick '"Thank you, Prince."' '1mainhall'>>
"How is Folsom?"\n\n"He insists he's fine," Elesun replies.\n\n"Yes, but how is he?"\n\n"He looks weak, frail."
<<set $helpServants to 1>><<set $ripleytp++>><<image "RipSmKid">><<thumb>>"We really don't have time for this," Elesun says. "Let's hurry up and make sure they're okay."\n\n"We can't leave them," Ripley replies. She opens the door. The odor hits them hard--smells of blood, urine, rotted flesh, sick. Ripley turns away and gags--her eyes water. Still, she gathers herself and stakes a step.\n\n"Wait," Elesun says, pulling her scarf up to cover her nose and mouth. It smells of spice, to protect against such foul uses of dark magic. "Bodies don't decay that fast."\n\n"Dark magic," Ripley says.\n\n"Let me go first, and if I say run, run."\n\n"No promises."\n\nElesun smirks. When it came to Ripley, there never were, not with this sort of thing. Her greatest strength and greatest weakness is her heart.\n\nElesun steps into the storeroom. The moaning is louder in here--whimpering and crying. It seems to be made up of a handful of voices, both male and female.\n\nIn the storeroom, everything appears in order; it's unmolested, aside from the odor.\n\nBut down below...\n\nA stone staircase leads down into the dark. Behind Elesun, Ripley whispers a word, and casts a small white light in her hand using bound magic.\n\nThe darkness below is unimpressed, however, swallowing the edges of the her light. They'll need to go down there to find the source of the sounds.\n\n<<ctrlClick "Go deeper." "0aesil1" "leave">>\n\n\n\n\n\n\n\n\n
"We're going to get through this, kid," Elesun says.\n\nRipley glances back over her shoulder at the village. "It's not us I'm worried about."\n\nElesun sighs. "Fair enough."<<timed 1s>><<replace "#gone">>Ripley<</replace>><</timed>>
.cssload-square {\n\twidth: 8px;\n\theight: 29px;\n\tbackground: rgb(238,238,238);\n\tborder-radius: 10px;\n\tdisplay: block;\n\tanimation: cssload-turn 2.88s ease infinite;\n\t\t-o-animation: cssload-turn 2.88s ease infinite;\n\t\t-ms-animation: cssload-turn 2.88s ease infinite;\n\t\t-webkit-animation: cssload-turn 2.88s ease infinite;\n\t\t-moz-animation: cssload-turn 2.88s ease infinite;\n}\n.cssload-top {\n\tposition: absolute;\n\tleft: 40%;\n\ttop: 50%;\n\ttransform: rotate(90deg);\n\t\t-o-transform: rotate(90deg);\n\t\t-ms-transform: rotate(90deg);\n\t\t-webkit-transform: rotate(90deg);\n\t\t-moz-transform: rotate(90deg);\n}\n.cssload-bottom {\n\tposition: absolute;\n\tleft: 40%;\n\ttop: 50%;\n\ttransform: rotate(-90deg);\n\t\t-o-transform: rotate(-90deg);\n\t\t-ms-transform: rotate(-90deg);\n\t\t-webkit-transform: rotate(-90deg);\n\t\t-moz-transform: rotate(-90deg);\n}\n.cssload-left {\n\tposition: absolute;\n\tleft: 40%;\n\ttop: 50%;\n}\n.cssload-right {\n\tposition: absolute;\n\tleft: 40%;\n\ttop: 50%;\n\ttransform: rotate(-180deg);\n\t\t-o-transform: rotate(-180deg);\n\t\t-ms-transform: rotate(-180deg);\n\t\t-webkit-transform: rotate(-180deg);\n\t\t-moz-transform: rotate(-180deg);\n}\n\n\n@keyframes cssload-turn {\n\t0% {\n\t\ttransform: translateX(0) translateY(0) rotate(0);\n\t}\n\t50% {\n\t\ttransform: translateX(400%) translateY(100%) rotate(90deg);\n\t}\n\t100% {\n\t\ttransform: translateX(0) translateY(0) rotate(0);\n\t}\n}\n\n@-o-keyframes cssload-turn {\n\t0% {\n\t\t-o-transform: translateX(0) translateY(0) rotate(0);\n\t}\n\t50% {\n\t\t-o-transform: translateX(400%) translateY(100%) rotate(90deg);\n\t}\n\t100% {\n\t\t-o-transform: translateX(0) translateY(0) rotate(0);\n\t}\n}\n\n@-ms-keyframes cssload-turn {\n\t0% {\n\t\t-ms-transform: translateX(0) translateY(0) rotate(0);\n\t}\n\t50% {\n\t\t-ms-transform: translateX(400%) translateY(100%) rotate(90deg);\n\t}\n\t100% {\n\t\t-ms-transform: translateX(0) translateY(0) rotate(0);\n\t}\n}\n\n@-webkit-keyframes cssload-turn {\n\t0% {\n\t\t-webkit-transform: translateX(0) translateY(0) rotate(0);\n\t}\n\t50% {\n\t\t-webkit-transform: translateX(400%) translateY(100%) rotate(90deg);\n\t}\n\t100% {\n\t\t-webkit-transform: translateX(0) translateY(0) rotate(0);\n\t}\n}\n\n@-moz-keyframes cssload-turn {\n\t0% {\n\t\t-moz-transform: translateX(0) translateY(0) rotate(0);\n\t}\n\t50% {\n\t\t-moz-transform: translateX(400%) translateY(100%) rotate(90deg);\n\t}\n\t100% {\n\t\t-moz-transform: translateX(0) translateY(0) rotate(0);\n\t}\n}\n\n#load-perc {\n\tdisplay: block;\n\tposition: fixed;\n\tbottom: 0;\n\tleft: 0;\n\twidth: 1%;\n\theight: 3em;\n\tbackground: #fff;\n}\n#load-perc-title {\n\tdisplay: block;\n\tposition: fixed;\n\tbottom: 0;\n\tleft: 0;\n\twidth: 100%;\n\tcolor: #111;\n\ttext-align: center;\n\tfont-size: 1.5em;\n\tmargin: 0.5em auto;\n\ttext-shadow: 0px 0px 1px #eee;\n}
<<set $weaponname to "Katana">>\n<<set $weapon_ui to "kata_ui">>\n\n<<set $watk to 1.0>>\n<<set $wdef to 0.6>>\n<<set $wmov to 1.0>>\n<<set $critrange to 90>>\n\n<<set $wStaUse to 5>>\n\n<<if $katanatraining is 1>>\n\t<<set $wdef to 0.7>>\n<<elseif $katanatraining is 2>>\n\t<<set $wdef to 0.7>>\n\t<<set $critrange to 88>>\n<<elseif $katanatraining is 3>>\n\t<<set $wdef to 0.7>>\n\t<<set $critrange to 88>>\n\t<<set $wmov to 1.1>>\n<<endif>>
Head north to the servants' quarters?\n\n<<ctrlClick "Go to the servants' quarters." "1servQuarters" "leave">>
<<image "KingSm">>Elesun is standing in the <<weak "throne room" "0throneroomInspect">>.\n\nThe <<dock "king" "0throneroomKing">> is sitting on his throne. <<weak "Irelith" "0throneroomIre">> is slumped in the corner.\n\n<span id="gone"> </span>\n\n<<info>>\n\n\n\n\n\n\n\n
<<image "RipPtKid">><<set $gamestart to 2>>''Ripley''\n\nLady Ripley, "princess" of the Druids and ward of King Harmon of Juno. Like Irelith and Elesun, Ripley is demonkin--and the Child of Promise, destined to face the monstrous Akatosh.\n\nAs a child, Ripley was born and raised as a druid, but when the oracles of her tribe discovered what she was, they placed her in the care of King Harmon. The King manufactured her a claim to royalty and raised her alongside his son, Harlaus.\n\nThough still young, Ripley is incredibly strong, stronger even than Irelith and Elesun.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<combat "rank3lvl5_soldier_akatosh" "combat_intro_1_1" "combat_outro_1_1">>
A small thrusting sword with an intricate guard.\n\nIt's sharp, and ideal for making repeated attacks. It's thursting attacks allow for deadly accuracy.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Low|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Low|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Very High|\n*__Finesse__: High\n*__Stamina__: Low
It's a simple-looking wagon, tied up to rather average-looking horses. It's a wise choice; it's best not to draw attention.\n\n<<ctrlClick 'Get ready to leave.' '1wagon'>>
<<onCrit 'tut_onCrit'>>\n<<onNMEspell 'tut_onNMEspell'>>\n<<onFirstAtk 'tut_onFirstAtk'>>\n<<onDespAtk 'tut_onDespAtk'>>\n<<onGritDam 'tut_onGritDam'>>\n<<onHeartDam 'tut_onHeartDam'>>\n<<onMov 'tut_onMov'>>\n<<onNMEheartDam 'tut_onNMEheartDam'>>\n<<onDef 'tut_onDef'>>\n<<onDispel 'tut_onDispel'>>\n<<onDodge 'tut_onDodge'>>\n<<onTransform 'tut_onTransform'>>\n<<onRevert 'tut_onRevert'>>\n<<onFightEnd 'tut_onFightEnd'>>
<<set $statbase to setup.base + Math.trunc($rageCurrent/4)>>\n<<if $formUnlock is 2>>\n\t<<if $statbase gte 100>>\n\t\t<<set $statbase to 100>>\n\t<<endif>>\n<<else>>\n\t<<if $statbase gte 80>>\n\t\t<<set $statbase to 80>>\n\t<<endif>>\n<<endif>>\n\n<<set $strval to ($statbase*($strrank/10+1))+($statbase*($lvl/10))>>\n<<set $agival to ($statbase*($agirank/10+1))+($statbase*($lvl/10))>>\n<<set $endval to ($statbase*($endrank/10+1))+($statbase*($lvl/10))>>\n<<set $wilval to ($statbase*($wilrank/10+1))+($statbase*($lvl/10))>>\n<<set $cngval to ($statbase*($cngrank/10+1))+($statbase*($lvl/10))>>\n\n<<set $atkbase to Math.trunc($strval*0.5+$cngval*0.2)>>\n<<set $atk to Math.trunc($atkbase*$watk*$aatk*$satk*$modeatk)>>\n<<set $defbase to Math.trunc($endval*0.5+$strval*0.2)>>\n<<set $def to Math.trunc($defbase*$wdef*$adef*$sdef)>>\n<<set $movbase to Math.trunc($agival*0.5+$cngval*0.2)>>\n<<set $mov to Math.trunc($movbase*$wmov*$amov*$smov)>>\n\n<<set $critchance to Math.trunc(($agival/10+$cngrank)+$spellcrit)>>\n<<set $critmult to $agival/100+1>>\n<<set $critdam to Math.trunc($atk*$critmult*$spellcritdam)>>\n<<set $dodge to Math.trunc(((5+$agirank*2.5)+$cngrank)+$spelldodge)>>\n\n<<set $maxsta to Math.trunc($endval/10+$wilrank+8)>>\n<<set $sta to $maxsta>>\n\n<<if $bangles eq 1>><<set $regenmult to 1.2>><<set $basedispel to 10>><<endif>>\n\n<<set $dispel to $basedispel+$spelldispel+$wilrank>>\n\n<<set $power to $lvl*$statbase+(($maxhealth*$maxhealth*$maxhealth)+$maxhealth*7)+$lvl+1>>\n<<set $regen to Math.trunc($wilrank/2)>>\n\n<<set $rageBuild to $wilrank + 9>>\n<<set $rageDecay to 20 - $endrank>>\n\n<<if $devilForm is 1>>\n\t<<set $dispel to Math.trunc($dispel*0.7)>>\n\t<<set $dodge to Math.trunc($dodge*0.7)>>\n<<endif>>\n\n<<display "bal-adjust">>
<<image "RipSmKid">><<thumb>>"What's that?" Ripley asks.\n\n"I found it in the courtyard," Elesun says. She hands Ripley the stone.\n\nRipley looks at it and turns it over in her hands. "It's so smooth. Thanks, Elesun, it's perfect for my collection."\n<<set $stoneOne.have to 2>>\n<<ctrlClick "You're welcome." "1RipQuarters">>
Elesun heads to the courtyard after getting herself together. The sun is barely up, and its light is still gray this early.\n<<first>><<masteraudio stop>><<audio 'un' loop play>><</first>>\n<<dock 'Three guards' '1arGuards'>> are loading a <<action 'wagon' '1arWagon'>> when Elesun arrives in the courtyard.\n<<set $xpearned to $xpearned + 30>>\n<<dock 'Ripley and Harlaus' '1arRip'>> are standing a few dozen feet away talking quietly. <<dock 'Irelith and Folsom' '1arIre'>> are also there. <<weak 'The King' '1arKing'>> is conspicuously missing.\n\n<<message>>This is the real beginning of your adventure, and you won't be recieving any more hints or help for quite a while. Remember, if you're lost or confused, or need to refresh your memory on some of the mechanics or systems, you can check your journal for tips on what to do next, and get to the help menu from your journal to review information on how to play the game.\n\nGet on the wagon to start your journey.\n\nGood luck!<</message>>\n\n\n<<info>>\n\n\n\n\n\n\n
-> Properties Key for Balance Object:\n---------------------------------------\nPlayer (General)\n---------------------------------------\npgrit -player grit\npatk -player attack\npdef -player defense\npmov -player move\n---------------------------------------\nPlayer (Special)\n---------------------------------------\ndesp -desperation attack damage\ncritOdds -critical chance\ncritical -critical damage\nddgOdds -dodge chance\ndispOdds -dispel chance\n---------------------------------------\nPlayer (Transformation)\n---------------------------------------\nrageB -rage build-up\nrageD -rage decay\n---------------------------------------\nEnemy\n---------------------------------------\negrit -enemy grit\neatk -enemy attack\nedef -enemy defense\nemov -enemy move\nespell -enemy special damage\n---------------------------------------\nGrowth\n---------------------------------------\nxpEarn -XP earned from enemy kill\nxpNeed -XP required for level up\n---------------------------------------
<<image 'RipSmKid'>><<thumb>>//Journal updated.//<<set $storystage to 3>>\n\nSoon after Elesun steps into the wagon and gets settled, Ripley comes in and sits down next to her. The three guards also file in and take their seats.\n\n"I've never been to Druid grove" one of the guards says, "but I'm excited to see it. Irelith's said it's lovely."\n\n"I think you'll like it," Ripley says. "I'm excited to see everyone again."\n\n"It's a two-day journey," Elesun says. "Once we're there we'll be able to relax. Let's keep our wits about us until then. That means you too, Ripley."\n\n"Know something we don't?" another of the guard's asks.\n\n"The King apparently had an urgent meeting with a scout. Something unusual was found; unusual enough that he didn't see Ripley off."\n\n"He wouldn't let us go if he thought it might be a problem," Ripley says.\n\nElesun shoots Ripley a scowl.\n\n"Not that caution ever hurt anyone," Ripley replies.\n\n"Elesun's right," one of the guards says. "Stay sharp until we're in the grove."\n\n<<ctrlCon 'ch1-2'>>
<<set $weaponname to "Scythe">>\n<<set $weapon_ui to "scyt_ui">>\n\n<<set $watk to 1.1>>\n<<set $wdef to 1.1>>\n<<set $wmov to 0.8>>\n<<set $critrange to 105>>\n\n<<set $wStaUse to 6>>\n\n<<if $scythetraining is 1>>\n\t<<set $wmov to 0.9>>\n<<elseif $scythetraining is 2>>\n\t<<set $wmov to 0.9>>\n\t<<set $watk to 1.2>>\n<<elseif $scythetraining is 3>>\n\t<<set $critrange to 100>>\n\t<<set $wmov to 0.9>>\n\t<<set $watk to 1.2>>\n<<endif>>
<<image "RipSmKid">><<thumb>>"Ripley," Elesun says.\n\nRipley opens her eyes and turns her head. "Hi, Elesun."\n\n"Everyone seems to think it'd be a good idea for us to get out of here for a few days. What do you think? Want to go visit the grove?"\n\n"That sounds wonderful," Ripley says. "You always hated that place, though."\n\n"I don't hate it, I just don't understand your customs and your people are--they can be pushy."\n\nRipley grins. "You're always so out of balance, Elesun, that balance seems alien to you."\n\n"I'll smack you."\n\nRipley laughs. "Well, they like you, trust me."\n\n"I'll behave. And the grove is beautiful, I think we've both earned a chance to relax."\n\n"When do we leave?"\n\n"A carriage will take us in the morning. Get some rest."\n\n<<ctrlClick "Continue." "1RipQuarters">>
\nA measure of wellness and conditioning. Endurance greatly influences defense, and also influences grit and stamina. <<if $character is "Ripley">>It also determines how long Ripley can maintain her transformations.<<endif>>\n\n
A strong steel battleaxe.\n\nHits hard, but requires a great deal of energy to swing.\n\n|[img[setup.ui.icons.ui_atk]]|Attack Rating:|Very High|\n|[img[setup.ui.icons.ui_def]]|Defense Rating:|Low|\n|[img[setup.ui.icons.ui_mov]]|Move Rating:|Very Low|\n*__Finesse__: Very Low\n*__Stamina__: Very High
<<if $choice2 is 0>>The throne room is close.\n\nElesun can't leave without Ripley, though.<<else>>Not much farther now.\n\n<<ctrlClick "Head to the throne room." "0transition1" "leave">><<endif>>
<<set $enemyname to "Soldier of Fortune">>\n<<set $enemynumber to 1>>\n<<set $enemypower to 158>>\n<<set $enemyimg to setup.nme['NME_warrior']>>\n\n/%stats for active enemies%/\n<<set $nmemaxgrit to 148>>\n<<set $nmegrit to $nmemaxgrit>>\n<<set $nmemaxhealth to 2>>\n<<set $nmehealth to $nmemaxhealth>>\n\n<<set $nmeatk to 33>>\n<<set $nmedef to 33>>\n<<set $nmemov to 31>>\n<<set $nmemagic to 0>>\n\n<<set $enemyspecialname to "">>\n<<set $enemyspecial to 0>>\n\n<<set $nmecritchance to 5>>\n<<set $nmecritdam to 1.4>>\n<<set $nmespellpower to 0>>\n<<set $nmeacc to 100>>\n<<set $nmebaseregen to 3>>\n\n<<set $nmemoveset to 3>>\n<<set $nmetype to 1>>\n\n<<set $nmexp to 15>>\n\n<<display "bal-adj-nme">>\n
<<display "combat_init">>
Ripley doesn't appear to notice Elesun.\n\n<<if !$RipScene and $HarlScene>><<ctrlClick 'Get her attention.' '1RipScene'>><<else>><<ctrlClick 'Get her attention.' '1RipTalk'>><<endif>>
Head downstairs?\n\n<<ctrlClick "Proceed." "0transition2" "leave">>
!Places\n\n<span id="codexpla">Description of Places</span>\n\n<<link "The Planet">>\n\t<<replace "#codexpla">>Earth<</replace>>\n<</link>>\n<<link "The Cosmos">>\n\t<<replace "#codexpla">>Space<</replace>>\n<</link>>\n<<link "The Other World">>\n\t<<replace "#codexpla">>Elysium<</replace>>\n<</link>>\n<<link "Juno">>\n\t<<replace "#codexpla">>Juno<</replace>>\n<</link>>\n<<link "Valne">>\n\t<<replace "#codexpla">>Valne<</replace>>\n<</link>>\n<<link "The Northern Mountains">>\n\t<<replace "#codexpla">>North<</replace>>\n<</link>>\n<<link "The Stalm Sea">>\n\t<<replace "#codexpla">>South<</replace>>\n<</link>>\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/%[["\su00A0\su00A0\su00A0\su00A0\su00A0"|debug_mode_activation]]%/\n
<<if $stoneLoc is 1 and $stoneOne.have is 0>>Elesun spots a small, boxy black stone near the base of the well. Ripley might like it.\n\n<<ctrlClick "Pick up the stone." "1cyStone" "interact">><<else>>This well serves the whole castle. <<print either("Elesun draws up some water and has a drink. She feels refreshed.", "Elesun isn't thirsty right now.")>><<endif>>
<<set $allyname to "Irelith">>\n<<set $allynumber to 2.3>>\n\n<<set $allylvl to 18>>\n<<set $allymaxhealth to 5>>\n<<set $allymaxgrit to 290>>\n<<set $allyatk to 112>>\n<<set $allydef to 128>>\n<<set $allymov to 101>>\n<<set $allymagic to 101>>\n\n<<set $allyspecial to "guard">>\n<<set $specialname "Guard">>\n<<set $allyspec to 1>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<display "sswd_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "side"]]\n[[No|weaponswap]]
<<set $spellname to "Keen">>\n<<set $schoolname to "Natural">>\n<<set $p_spellname to "Keen">>\n<<set $spell_ui to "keen_ui">>\n\n<<set $spellcrit to 10>>\n<<set $spellcritdam to 1.5>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $naturaltraining is 1>>\n\t<<set $spellcrit to 15>>\n<<elseif $naturaltraining is 2>>\n\t<<set $spellcrit to 15>>\n\t<<set $spellcritdam to 1.8>>\n<<elseif $naturaltraining is 3>>\n\t<<set $spellcrit to 20>>\n\t<<set $spellcritdam to 1.8>>\n<<endif>>
<<set $spellname to "Possessed">>\n<<set $schoolname to "Dark">>\n<<set $p_spellname to "Possessed">>\n<<set $spell_ui to"poss_ui">>\n\n<<set $spellcrit to -10>>\n<<set $spellcritdam to 1.5>>\n<<set $spelldodge to 0>>\n<<set $spellgrit to -30>>\n\n<<set $satk to 1.3>>\n<<set $sdef to 0.6>>\n<<set $smov to 0.6>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 0>>\n\n<<if $darktraining is 1>>\n\t<<set $spellcrit to -5>>\n<<elseif $darktraining is 2>>\n\t<<set $spellcrit to -5>>\n\t<<set $spellgrit to -20>>\n<<elseif $darktraining is 3>>\n\t<<set $spellcrit to 0>>\n\t<<set $spellgrit to -20>>\n<<endif>>
!Game Over\n<<masteraudio stop>><<set $gamestart to 0>>/%Standard game over.%/\n<<print $character>> has died.\n\n<<link "Reload a saved game.">><<script>>UI.saves();<</script>><</link>>\n\n<<link "Restart the game.">><<script>>UI.restart();<</script>><</link>>\n\n[>img[setup.ui.gover]]\n\n
!!!Characters\n<center>\n|<<link "Elesun">><<replace "#codexchar">><<display "codex_Elesun">><</replace>><</link>>|<<link "Ripley">><<replace "#codexchar">><<display "codex_Ripley">><</replace>><</link>>|<<link "Irelith">><<replace "#codexchar">><<display "codex_Irelith">><</replace>><</link>>|<<link "Folsom">><<replace "#codexchar">><<display "codex_Folsom">><</replace>><</link>>|\n|<<link "The King">><<replace "#codexchar">><<display "codex_King">><</replace>><</link>>|<<link "Akatosh">><<replace "#codexchar">><<display "codex_Akatosh">><</replace>><</link>>|<<link "Aesil">><<replace "#codexchar">><<display "codex_Aesil">><</replace>><</link>>|<<link "Harlaus">><<replace "#codexchar">><<display "codex_Harlaus">><</replace>><</link>>|\n</center>\n\n<span id="codexchar"> \n</span>\n\n\n[[Back|codex_menu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<if $titles.has('Dungeon Master')>>\n\t<<set _max to $maxgrit>>\n\t<<set _curr to $grit>>\n\t<<if _curr lt _max>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 30>>\n\t\t\t<<set _reg to 30 + ($lvl * 5)>>\n\t\t\t<<set _reg to _reg - _odds>>\n\t\t\t<<set $grit to Math.trunc($grit + _reg)>>\n\t\t\t<<if $grit gte $maxgrit>>\n\t\t\t\t<<set $grit to $maxgrit>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
<<audio 'nothing-left' loop play>>
The battle sounds close.\n\nThe king is probably holed up in the throne room to the south. Akatosh’s men--scum and sellswords--they must be well inside the castle by now.\n\nIrelith went to protect the king, but she alone may not be enough. Elesun knows she needs to hurry.
/% widgets for interfacing with the vow system %/\n\n/% <<addvow 'id'>> --- add to current / make a vow %/\n<<widget 'addvow'>>\n\t<<set _id to $args[0]>>\n\t<<if setup.vows.list[_id]>>\n\t\t<<run $vows.current.push(_id)>>\n\t<<endif>>\n\t<<vowpoints 5>>\n<</widget>>\n\n/% <<boost 'stat' 'val (defaults to 1)'>> --- add to stats %/\n<<widget 'boost'>>\n\t<<set _arrA to ['strict', 'letter', 'honor']>>\n\t<<set _arrB to ['loose', 'spirit', 'clever']>>\n\t<<set _arrC to _arrA.concat(_arrB)>>\n\t<<set _stat to $args[0]>>\n\t<<set _val to 1>>\n\t<<if $args[1]>>\n\t\t<<set _val to $args[1]>>\n\t<<endif>>\n\n\t<<if _arrC.includes(_stat)>>\n\t\t<<if _arrA.includes(_stat)>>\n\t\t\t<<set _i to _arrA.indexOf(_stat)>>\n\t\t\t<<set $vows.stats[_arrA[_i]] to Math.clamp($vows.stats[_arrA[_i]] + _val, -10, 10)>>\n\t\t\t<<set $vows.stats[_arrB[_i]] to Math.clamp($vows.stats[_arrB[_i]] - _val, -10, 10)>>\n\t\t<<elseif _arrB.includes(_stat)>>\n\t\t\t<<set _i to _arrB.indexOf(_stat)>>\n\t\t\t<<set $vows.stats[_arrB[_i]] to Math.clamp($vows.stats[_arrB[_i]] + _val, -10, 10)>>\n\t\t\t<<set $vows.stats[_arrA[_i]] to Math.clamp($vows.stats[_arrA[_i]] - _val, -10, 10)>>\n\t\t<<endif>>\n\t<<endif>>\n<</widget>>\n\n/% <<vowpoints value>> --- add or remove vp %/\n<<widget 'vowpoints'>>\n\t<<set $vows.points to Math.clamp($vows.points + $args[0], -40, 100)>>\n<</widget>>\n\n/% <<upholdvow 'id'>> --- complete a vow %/\n<<widget 'upholdvow'>>\n\t<<set _id to $args[0]>>\n\n\t<<if $vows.current.includes(_id)>>\n\t\t<<run $vows.complete.push(_id)>>\n\t\t<<set _del to $vows.current.indexOf(_id)>>\n\t\t<<run $vows.current.deleteAt(_del)>>\n\t\t<<vowpoints 10>>\n\t<<endif>>\n<</widget>>\n\n/% <<failvow 'id'>> --- break a vow %/\n<<widget 'failvow'>>\n\t<<set _id to $args[0]>>\n\n\t<<if $vows.current.includes(_id)>>\n\t\t<<run $vows.broken.push(_id)>>\n\t\t<<set _del to $vows.current.indexOf(_id)>>\n\t\t<<run $vows.current.deleteAt(_del)>>\n\t\t<<vowpoints -15>>\n\t<<endif>>\n<</widget>>\n\n/% <<getvow>> --- return vow object as _vow %/\n<<widget 'getvow'>>\n\t<<set _id to $args[0]>>\n\t<<if setup.vows.list[_id]>>\n\t\t<<set _vow to setup.vows.list[_id]>>\n\t<<endif>>\n<</widget>>\n\n/% <<outcome 'id' 'outcome'>> --- updates vow outcome %/\n<<widget 'outcome'>>\n\t<<set _id to $args[0]>>\n\t<<set _outc to $args[1]>>\n\t<<getvow _id>>\n\t<<set _vow.outc to _outc>>\n<</widget>>\n\n/% <<orderstats>> --- return stats ordered highest to lowest %/\n<<widget 'orderstats'>>\n\t<<set _arr to clone(Object.keys($vows.stats))>>\n\t<<set _highest to ''>>\n\t<<set _ordered to []>>\n\t<<for _arr.length gt 0>>\n\t\t<<set _check to -11>>\n\t\t<<for _i to 0; _i < _arr.length; _i++>>\n\t\t\t<<if $vows.stats[_arr[_i]] >= _check>>\n\t\t\t\t<<if _check is $vows.stats[_arr[_i]]>>\n\t\t\t\t\t<<set _highest to either(_highest, _arr[_i])>>\n\t\t\t\t<<else>>\n\t\t\t\t\t<<set _check to $vows.stats[_arr[_i]]>>\n\t\t\t\t\t<<set _highest to _arr[_i]>>\n\t\t\t\t<<endif>>\n\t\t\t<<endif>>\n\t\t<</for>>\n\t\t/% delete highest and find next highest, etc %/\n\t\t<<run _ordered.push(_highest)>>\n\t\t<<set _del to _arr.indexOf(_highest)>>\n\t\t<<run _arr.deleteAt(_del)>>\n\t<</for>>\n\t<<set $vows.ordered to _ordered>>\n<</widget>>\n\n/% <<getname>> --- return the current vp name based on the list %/\n<<widget 'getname'>>\n\t<<if $vows.points is 0>>\n\t\t<<set $vows.name to setup.vows.names[3]>>\n\t<<elseif $vows.points gt 75>>\n\t\t<<set $vows.name to setup.vows.names[7]>>\n\t<<elseif $vows.points gt 60>>\n\t\t<<set $vows.name to setup.vows.names[6]>>\n\t<<elseif $vows.points gt 30>>\n\t\t<<set $vows.name to setup.vows.names[5]>>\n\t<<elseif $vows.points gt 0>>\n\t\t<<set $vows.name to setup.vows.names[4]>>\n\t<<elseif $vows.points gt -10>>\n\t\t<<set $vows.name to setup.vows.names[3]>>\n\t<<elseif $vows.points gt -20>>\n\t\t<<set $vows.name to setup.vows.names[2]>>\n\t<<else>>\n\t\t<<set $vows.name to setup.vows.names[1]>>\n\t<<endif>>\n<</widget>>\n\n/% <<gettier>> --- return tier based on list %/\n<<widget 'gettier'>>\n\t<<orderstats>> /% refresh the list %/\n\t<<set _t to [$vows.ordered[0], $vows.ordered[1]]>>\n\t<<if _t.includesAll('clever', 'strict')>>\n\t\t<<set $vows.tier to setup.vows.tiers[1]>>\n\t<<elseif _t.includesAll('clever', 'loose')>>\n\t\t<<set $vows.tier to setup.vows.tiers[2]>>\n\t<<elseif _t.includesAll('clever', 'letter')>>\n\t\t<<set $vows.tier to setup.vows.tiers[3]>>\n\t<<elseif _t.includesAll('clever', 'spirit')>>\n\t\t<<set $vows.tier to setup.vows.tiers[4]>>\n\t<<elseif _t.includesAll('honor', 'strict')>>\n\t\t<<set $vows.tier to setup.vows.tiers[5]>>\n\t<<elseif _t.includesAll('honor', 'loose')>>\n\t\t<<set $vows.tier to setup.vows.tiers[6]>>\n\t<<elseif _t.includesAll('honor', 'letter')>>\n\t\t<<set $vows.tier to setup.vows.tiers[7]>>\n\t<<elseif _t.includesAll('honor', 'spirit')>>\n\t\t<<set $vows.tier to setup.vows.tiers[8]>>\n\t<<elseif _t.includesAll('strict', 'letter')>>\n\t\t<<set $vows.tier to setup.vows.tiers[9]>>\n\t<<elseif _t.includesAll('strict', 'spirit')>>\n\t\t<<set $vows.tier to setup.vows.tiers[10]>>\n\t<<elseif _t.includesAll('loose', 'letter')>>\n\t\t<<set $vows.tier to setup.vows.tiers[11]>>\n\t<<elseif _t.includesAll('loose', 'spirit')>>\n\t\t<<set $vows.tier to setup.vows.tiers[12]>>\n\t<<else>>\n\t\t<<set $vows.tier to setup.vows.tiers[0]>>\n\t<<endif>>\n<</widget>>\n\n/% <<processvows>> --- process all vow stats %/\n<<widget 'processvows'>>\n\t<<getname>>\n\t<<gettier>>\n\t<<set $vows.str to $vows.tier + ' ' + $vows.name>>\n<</widget>>\n\n/% <<getstring (format)>> --- gets and prints vow string %/\n<<widget 'getstring'>>\n\t<<processvows>>\n\t<<if $args[0]>>\n\t\t<<= $vows.str.toUpperFirst()>>\n\t<<else>>\n\t\t<<= $vows.str>>\n\t<<endif>>\n<</widget>>\n\n/% <<vowbox>> --- display the vow log: for the journal %/\n<<widget 'vowbox'>> /% need some serious CSS... %/\n\t<div id='vow-tray'>\n\t\t<div id='vow-title'><<include 'vow-title'>></div>\n\t\t<div id='vow-tabs'>\n\t\t\t<span class='v-tab selected' id='vow-current'>\n\t\t\t\t<<link 'Current'>>\n\t\t\t\t\t<<replace '#vow-list'>><<include 'vow-list-current'>><</replace>>\n\t\t\t\t\t<<addclass '#vow-current' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-completed' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-broken' 'selected'>>\n\t\t\t\t<</link>>\n\t\t\t</span>\n\t\t\t<span class='v-tab' id='vow-completed'>\n\t\t\t\t<<link 'Completed'>>\n\t\t\t\t\t<<replace '#vow-list'>><<include 'vow-list-completed'>><</replace>>\n\t\t\t\t\t<<addclass '#vow-completed' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-current' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-broken' 'selected'>>\n\t\t\t\t<</link>>\n\t\t\t</span>\n\t\t\t<span class='v-tab' id='vow-broken'>\n\t\t\t\t<<link 'Broken'>>\n\t\t\t\t\t<<replace '#vow-list'>><<include 'vow-list-broken'>><</replace>>\n\t\t\t\t\t<<addclass '#vow-broken' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-completed' 'selected'>>\n\t\t\t\t\t<<removeclass '#vow-current' 'selected'>>\n\t\t\t\t<</link>>\n\t\t\t</span>\n\t\t</div>\n\t\t<div id='vow-list'>\n\t\t\t<<include 'vow-list-current'>>\n\t\t</div>\n\t</div>\n<</widget>>
$(document).on('click', '.atk-bar button', function () {\n\tvar rnd = 'slash-' + random(1, 6);\n\t$('#slashes')\n\t\t.hide()\n\t\t.removeClass()\n\t\t.fadeIn(100)\n\t\t.addClass(rnd);\n});
<<set $scars to $scars+1>>\n<<set $maxhealth to trunc(3+$scars/5)>>\n<<if $maxhealth gt 6>><<set $maxhealth to 6>><<endif>>
<<nobr>><<set _FolsomChat1 to either(\n"I'm fine, really. You're looking at me like I'm a sick child.", \n"Irelith ought to be resting still. Damn her pride.",\n"You've really taken to magic Elesun, but you still have much to learn. When things settle down, let's practice some.",\n"The king is in a foul mood. Go easy on him.",\n"Let me know if you need anything."\n)>>\n<<endnobr>><<print '"' + _FolsomChat1 + '"'>>
<<display "bless_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "bless"]]\n[[No|spellswap]]
Head south to the main hall?\n\n<<ctrlClick "Go to the main hall." "1mainhall" "leave">>
<<set $sq1.progress to 10>>\n<<run $sq.pop($sq1), $sq.push($sq1)>>
"Are you okay?" Elesun asks.\n\n"Yeah, I'm fine," the king says. "So is Irelith--she'll survive anyway."\n\n"Where's Ripley?"\n\n"Out in the main hall."<<timed 500ms>><<replace "#gone">>The <<action "door" "0throneroomDoor">> to the main hall is cracked.<</replace>><</timed>>
This door leads back out to the courtyard.\n\n<<ctrlClick "Go through the door." "0courtyard" "leave">>
// insert macro set, by chapel; for sugarcube 2\n// version 1.0\n// see the documentation: https://github.com/ChapelR/custom-macros-for-sugarcube-2#insert-macros\n\n// <<insert>> macro\nMacro.add('insert', {\n\t tags : null,\n\thandler : function () {\n\t\t\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar content = this.payload[0].contents;\n\t\tvar className = 'macro-' + this.name;\n\t\tvar el;\n\t\t\n\t\t// check args\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t} else {\n\t\t\tel = this.args[0].trim();\n\t\t}\n\t\t\n\t\t// use a postdisplay to get at the fully-rendered DOM\n\t\tpostdisplay['insert-task-' + el] = function (taskName) {\n\t\t\t$(el).empty(); // clear target element\n\t\t\t\n\t\t\t// append payload\n\t\t\t$wrapper\n\t\t\t\t.wiki(content)\n\t\t\t\t.addClass(className)\n\t\t\t\t.appendTo(el);\n\t\t\t\t\n\t\t\tdelete postdisplay[taskName]; // single-use task\n\t\t};\n\t\n\t}\n});\n\n// <<insertappend>> macro\nMacro.add('insertappend', {\n\t tags : null,\n\thandler : function () {\n\t\t\n\t\tvar $wrapper = $(document.createElement('span'));\n\t\tvar content = this.payload[0].contents;\n\t\tvar className = 'macro-' + this.name;\n\t\tvar el;\n\t\t\n\t\t// check args\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t} else {\n\t\t\tel = this.args[0].trim();\n\t\t}\n\t\t\n\t\t// use a postdisplay to get at the fully-rendered DOM\n\t\tpostdisplay['insert-append-' + el] = function (taskName) {\n\t\t\t\n\t\t\t// append payload\n\t\t\t$wrapper\n\t\t\t\t.wiki(content)\n\t\t\t\t.addClass(className)\n\t\t\t\t.appendTo(el);\n\t\t\t\t\n\t\t\tdelete postdisplay[taskName]; // single-use task\n\t\t};\n\t\n\t}\n});\n\n// <<clearelement>> macro\nMacro.add('clearelement', {\n\thandler : function () {\n\n\t\tvar el;\n\t\t\n\t\t// check args\n\t\tif (this.args.length !== 1) {\n\t\t\treturn this.error('incorrect number of arguments');\n\t\t} else {\n\t\t\tel = this.args[0].trim();\n\t\t}\n\t\t\n\t\t// use a postdisplay to get at the fully-rendered DOM\n\t\tpostdisplay['clear-element-' + el] = function (taskName) {\n\t\t\t$(el).empty(); // clear target element\n\t\t\t\t\n\t\t\tdelete postdisplay[taskName]; // single-use task\n\t\t};\n\t\n\t}\n});
The guards are making the rounds, but they look sicker with each place they check--Aesil probably got to all of them.
<<display "poss_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "poss"]]\n[[No|spellswap]]
Thank you for playing this prototype version of Holy Land!\n\nPlease take a moment to fill out the form below and give us your feedback on the game.\n\n[[Give feedback.|https://docs.google.com/forms/d/e/1FAIpQLSezVS5I1fDT_jRFrCi0Qp5-RPJWL3e_CjuGE975CiWzqOoNHw/viewform]]\n\n<<link "Restart the game.">><<script>>UI.restart();<</script>><</link>>\n\nThanks again for playing!
<<image 'KingSm'>><<thumb>><<set $KingScene to 1>>"Have you spoken to Harlaus?" the King asks.\n\n<<if $HarlScene>>"I have."\n\n"Get her away from here for a few days."\n\n"Understood."<<else>>"Not yet."\n\n"He wants to talk to you. He feels that Ripley needs to get out of the castle for a few days, and I agree."<<endif>>\n\n"Your majesty," Elesun says. "Are you alright?"\n\nThe King grins. "Are you worried about me?" He stands and walks over to her. "This is a rare day indeed."\n\n"Normally you'd be swimming in advisors."\n\n"I sent them away. I think right now the most kingly thing I can do is mourn the men who fell. So that's what I'm doing. I'm sitting here thinking about them."\n\n"What I said didn't come out right," Elesun says.\n\n"But it did come out. And it was right. Make no mistake, I value your candor, I always have and always will. I just wish you had better bedside manor."\n\n<<ctrlCon '1throne'>>
<<set $allyname to "Irelith">>\n<<set $allynumber to 2.1>>\n\n<<set $allylvl to 10>>\n<<set $allymaxhealth to 4>>\n<<set $allymaxgrit to 225>>\n<<set $allyatk to 83>>\n<<set $allydef to 87>>\n<<set $allymov to 73>>\n<<set $allymagic to 73>>\n\n<<set $allyspecial to "guard">>\n<<set $specialname "Guard">>\n<<set $allyspec to 1>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<button "View List">><<replace "#navbox">><<mapHarlan $now>><</replace>><</button>><div id='map-descr'></div>\s\n<img src="assets/img/maps/map_1_1.jpg" alt="" usemap="#Map" /><map name="Map" id="Map">\s\n<area id='map1-1-bly' alt="" title="Bailey" data-passage="" shape="poly" coords="105,92,105,121,135,121,134,94" />\s\n<area id='map1-1-ele' alt="" title="Elesun's Quarters" data-passage="" shape="poly" coords="72,180,95,180,96,202,72,203" />\s\n<area id='map1-1-mhl' alt="" title="Main Hall" data-passage="" shape="poly" coords="132,237,159,237,158,259,133,259" />\s\n<area id='map1-1-srv' alt="" title="Servant's Quarters" data-passage="" shape="poly" coords="207,175,226,175,226,194,204,194" />\s\n<area id='map1-1-rip' alt="" title="Ripley's Quarters" data-passage="" shape="poly" coords="207,76,226,77,224,94,205,95" />\s\n</map>
<<if $titles.has('Dragon Slayer')>>\n\t<<set $movbonus += Math.trunc($maxsta / 2)>>\n<<endif>>
<<if $titles.has('True Druid')>>\n\t<<if $health lt $maxhealth>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 25>>\n\t\t\t<<set $health++>>\n\t\t\t<<if $health gte $maxhealth>>\n\t\t\t\t<<set $health to $maxhealth>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
"You mean //my// queen when you say that, don't you? I suppose it's true enough. I mean that she'd make a good queen. An excellent one, I'm sure.\n\n"...Stop grinning at me like that."\n
Version 0.7.3 <<if $webversion is 1>>(Web)<<endif>> <<if $return is "main menu">><<link "Update History">>\n<<script>>\nDialog.setup("Version History");\nDialog.wiki(Story.get("Update History").processText());\nDialog.open();\n<</script>>\n<</link>><<endif>>\n\n//Holy Land// was written, designed, and programmed by ChapelR.\n\n<iframe src="A_hlCred.html" width="900" height="500">Loading ... </iframe>\n\n
It's fresh stonework--clean and off-color. It's solid though.
<center>\n<div id='slash'>\s\n\t<div id='slashes'><div class='internal-slash'></div></div>\s\n</div>\n<div class="battle-bar"><span class="w1"></span></div>\n<div class="time-btn atk-bar"><<button "Attack!">><<audio "fast-atk" stop>><<audio "fast-atk" play>><<set $QTEatk++>><</button>></div>\n<<script>>\npostdisplay['attack-timer'] = function (taskName) {\n\tdelete postdisplay[taskName];\n\t$('.battle-bar .w1').animate({ width : '0%' }, {\n\t\tduration : State.variables.attackSec * 1000,\n\t\teasing : 'linear',\n\t\tcomplete : function () {\n\t\t\t$('.time-btn').hide();\n\t\t\tEngine.play(State.variables.nextBoss);\n\t\t}\n\t});\n};\n<</script>>\n</center>
<<portrait>>Elesun can see her reflection in the mirror. She's fairly happy with what she sees. Sure she's getting older, and her eyes look more tired every passing year, but
Some scenes include ''important decisions'' for you to make. Decisions have far-reaching consequences, and they aren't always obvious. You can use the links in the text to see Elesun's thoughts and make a better-informed choice.\n\nThere are no wrong choices, but keep in mind that Elesun is training Ripley--she needs to become a great warrior to achieve her destiny. That said, if she gets wounded or killed, there won't be much of a destiny at all.\n\nHint: If you don’t see any links, try changing your dock mode in the settings menu.
Elesun decides not to think about it. Ever.
\nFighthing power represents a given character's strength in combat.\n\n
!Prologue: Child of Promise<<portrait>>\nJune 5, 1101<<display "spell_protect">>\n<<set $gamestart to 1>><<if visited() is 1>><<masteraudio stop>><<audio "oh" loop play>><<endif>>\nElesun wasn't surprised they attacked the castle. In fact, she had been against housing Ripley and the King in the same place from the start--it was too big of a target--no matter how strong the walls, no matter how many guards. The enemy knew that with just one battle, no matter how difficult, they could win this war.\n\nAnd lo and behold.\n\nThere was no siege--not really. Their attacks on the outer walls happened fast, with overwhelming numbers. The walls fell in hours. But the enemy was losing many men and weakening as the battle dragged on. Their morale was failing.\n\nHere in the inner walls, Elesun knew she could win this fight.\n\n<<ctrlClick "Start" "prol1">>\n\n<<run $('#ui-bar').hide().delay(1000).fadeIn();>>\n<<display 'content-warning'>>\n<<run $('#splash h1').hide().fadeIn();>>\n<<run $('#splash span').hide().fadeIn();>>\n\n\n
<<if $scarchance gt 0 and $scatchancesAmt gt 0>>\n\t<<for _x to 0; _x lt $scarchancesAmt; _x++>>\n\t\t<<set $scartest to random(100)>>\n\t\t<<if $scartest is lte $scarchance>>\n\t\t\t<<set $scars++>>\n\t\t\t<<set $scarReport++>>\n\t\t<<endif>>\n\t\t<<set $scarchance to $scarchance + 10>>\n\t<</for>>\n\t<<if $scarReport gt 0>>\n\t\t<<set $wounds to 0>>\n\t<<endif>>\n<<endif>>\n<<if !$firstRest>>\n\t<<set $firstRest to true>>\n<<endif>>\n\t
<<set $gamestart to 0>>TP: <<print $tp>>\n\nSelect a weapon to practice with:\n\nUnarmed: Current Level <<print $unarmedtraining>> <<if $unarmedtraining lt 3>>[[Train|combat_trainer2][$choice to "unarm"; $tpcost to ($unarmedtraining+1)*3]] (<<print ($unarmedtraining+1)*3>> TP)<<else>>Cannot train further.<<endif>>\nLongsword: Current Level <<print $longswordtraining>> <<if $longswordtraining lt 3>>[[Train|combat_trainer2][$choice to "lsword"; $tpcost to ($longswordtraining+1)*3]] (<<print ($longswordtraining+1)*3>> TP)<<else>>Cannot train further.<<endif>>\n<<if $gswordhave is 1>>Great Sword: Current Level <<print $greatswordtraining>> <<if $greatswordtraining lt 3>>[[Train|combat_trainer2][$choice to "gsword"; $tpcost to ($greatswordtraining+1)*3]] (<<print ($greatswordtraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $katanahave is 1>>Katana: Current Level <<print $katanatraining>> <<if $katanatraining lt 3>>[[Train|combat_trainer2][[$choice to "katana"; $tpcost to ($katanatraining+1)*3]] (<<print ($katanatraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $spearhave is 1>>Spear: Current Level <<print $speartraining>> <<if $speartraining lt 3>>[[Train|combat_trainer2][$choice to "spear"; $tpcost to ($speartraining+1)*3]] (<<print ($speartraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $sswordhave is 1>>Side Sword: Current Level <<print $sideswordtraining>> <<if $sideswordtraining lt 3>>[[Train|combat_trainer2][$choice to "ssword"; $tpcost to ($sideswordtraining+1)*3]] (<<print ($sideswordtraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $gauntlethave is 1>>Clawed Gauntlets: Current Level <<print $gauntletstraining>> <<if $gauntletstraining lt 3>>[[Train|combat_trainer2][$choice to "gaunt"; $tpcost to ($gauntletstraining+1)*3]] (<<print ($gauntletstraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $scythehave is 1>>Scythe: Current Level <<print $scythetraining>> <<if $scythetraining lt 3>>[[Train|combat_trainer2][$choice to "scythe"; $tpcost to ($scythetraining+1)*3]] (<<print ($scythetraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $saberhave is 1>>Saber: Current Level <<print $sabertraining>> <<if $sabertraining lt 3>>[[Train|combat_trainer2][$choice to "saber"; $tpcost to ($sabertraining+1)*3]] (<<print ($sabertraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $axehave is 1>>Battle Axe: Current Level <<print $battleaxetraining>> <<if $battleaxetraining lt 3>>[[Train|combat_trainer2][$choice to "axe"; $tpcost to ($battleaxetraining+1)*3]] (<<print ($battleaxetraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n\n[[Cancel|$exitpassage][$gamestart to 1]]
!!!Ripley's Stone Collection\n<<set $gamestart to 2>>\n<<if $stoneOne.have is 1>><<print $stoneOne.num + ". ">><<link $stoneOne.name>><<replace "#info">><<print $stoneOne.descr>><</replace>><</link>><<endif>>\n<<if $stoneTwo.have is 1>><<print $stoneTwo.num + ". ">><<link $stoneTwo.name>><<replace "#info">><<print $stoneTwo.descr>><</replace>><</link>><<endif>>\n<<if $stoneThree.have is 1>><<print $stoneThree.num + ". ">><<link $stoneThree.name>><<replace "#info">><<print $stoneThree.descr>><</replace>><</link>><<endif>>\n<<if $stoneFour.have is 1>><<print $stoneFour.num + ". ">><<link $stoneFour.name>><<replace "#info">><<print $stoneFour.descr>><</replace>><</link>><<endif>>\n<<if $stoneFive.have is 1>><<print $stoneFive.num + ". ">><<link $stoneFive.name>><<replace "#info">><<print $stoneFive.descr>><</replace>><</link>><<endif>>\n<<if $stoneSix.have is 1>><<print $stoneSix.num + ". ">><<link $stoneSix.name>><<replace "#info">><<print $stoneSix.descr>><</replace>><</link>><<endif>>\n<<if $stoneSeven.have is 1>><<print $stoneSeven.num + ". ">><<link $stoneSeven.name>><<replace "#info">><<print $stoneSeven.descr>><</replace>><</link>><<endif>>\n<<if $stoneEight.have is 1>><<print $stoneEight.num + ". ">><<link $stoneEight.name>><<replace "#info">><<print $stoneEight.descr>><</replace>><</link>><<endif>>\n<<if $stoneNine.have is 1>><<print $stoneNine.num + ". ">><<link $stoneNine.name>><<replace "#info">><<print $stoneNine.descr>><</replace>><</link>><<endif>>\n<<if $stoneTen.have is 1>><<print $stoneTen.num + ". ">><<link $stoneTen.name>><<replace "#info">><<print $stoneTen.descr>><</replace>><</link>><<endif>>\n\n[[Return to game.|$return]]\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
It’s getting on evening, and in the twilight, Elesun can see orange light--flames--coming from the <<weak "village" "0byvillage">> just beyond the inner wall. There won’t be much left to protect here soon; the <<weak "enemy" "0byenemy">> is attacking in full force.\n\nRipley’s chambers will be to the <<action "north" "0bynorth">>, and the path looks clear for now.\n\nThe battle is still raging on in the <<dock "south" "0bysouth">>.\n\n<<info>>\n\n\n\n\n\n\n
<<image "manSm">><<thumb>><<first>>"What do you need?" Elesun asks.\n\n"Well, in the full version of the game, I'll be giving you a side quest. You know, to introduce you to the concept. Then I'd give you a reward afterward."\n\n"Are you...what? What does that mean?"\n\n"Well you see, dear, the creator of this game is still in the process of fully testing and implementing the side quest system. So that really won't work, now will it?"\n\n"Don't call me 'dear.'"\n\n"The answer is no. And it was a rhetorical question."\n\n"Are you feeling alright, Andre?"\n\n"Anyway, I figure we could just cut out the middleman and go straight for that reward. What do you say?"\n\n"What the hell is a 'side quest?'"\n\n"Her you go!"\n\nAndre hands Elesun a beautifully forged spear, probably one of the King's own weapons.<<set $spearhave to 1>>\n\n//Recieved a new weapon//\n\n"Why are you giving me a spear?"\n\n"You don't like it?"\n\n"I love it," Elesun says.\n\n"Then what's wrong?"\n\n"Why does it seem like you're talking past me instead of to me. Are you gaslighting me?"\n\n"I don't think so, no. What does that mean?"\n\n"You know what, Andre. Just sit back down. Thank you for the spear."\n\n"Anytime, dear."\n\n"Don't call me 'dear.'"<<finally>>"How do you like the demo?" Andre asks.\n\n"You're really starting to freak me out. Please stop."<</first>>\n\n<<ctrlCon '1servQuarters'>>
From here on out, you'll be given a lot more freedom in how and when to do things. When you find yourself able to access multiple spaces, you'll see a small navigation box that can help you get around.\n\nRemember, you can talk to people or inspect the environment multiple times to find new things to interact with. And don't forget that you can press CTRL to quickly activate any links that appear in the dock.
<<image "IreSm">><<thumb>>The soldiers leave disappointed when Elesun and Irelith practice drills and give each other pointers instead of having a no-holds-barred contest.\n\nAll the same, Elesun feels stronger for it.\n\n<<ctrlClick "Continue." "1IreTalk">>
<<image "IrePt">>Elesun approaches Irelith.\n\n"What is it, Elesun?"\n\n<<dock "Chit-chat." "IrelithChat1">>\n\n<<dock "Train with Irelith." "1IreTrainerPre">>\n\n<<dock "Never mind." "1IreNVM">>\n\n\n<<message>><<display "helpTalking">><</message>>\n\n<<info>>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<portrait>>Elesun opens the door to the throneroom. It's not locked, which is never a good sign...\n\n<<ctrlClick "Continue." "0protectking2">>
The ground beneath <<name>> becomes moist and swamp like, hampering footing.\n\nLarge penalty to Move actions, along with a mild penalty to Defense and Defense actions.
<<image "IreSm">><<thumb>>"I'll go check it out," Elesun says.\n\n"Careful," <<journallink "Irelith" "codex_Irelith">> replies.\n\n"Stay here and protect them, Ripley," Elesun says.\n\n<<journallink "Ripley" "codex_Ripley">> nods.\n\n<<journallink "Elesun" "codex_Elesun">> steps out through the wall. Just down the hillside she can see the village--the fires are going out now, and it's evening--the sky is darkenening by the minute.\n\n<<if $helpServants is 0>>A sellsword knight, his armor adorned with Akatosh's coat-of-arms, is heading up the hill towards her, sword drawn.\n\n<<ctrlClick "Fight him." "combat_call_0_4">><<else>>A woman in black is heading up the hill towards her--the witch.\n\n"Hello, demonkin" she says, drawing her sword.\n\n<<ctrlClick "Fight her." "combat_call_0_5">><<endif>>\n\n\n
<<image "IreSm">><<image "KingSm">><<action "Irelith" "0protectking2Ire">> is sitting in the corner, her sword is on the floor next to her. She's got a nasty <<weak "gash" "0protectking2wound">> across her gut, and the <<dock "king" "0protectking2king">> is leaning over her, trying to keep pressure on the wound. The corpses of several <<weak "soldiers" "0protectking2soldier">> and <<weak "sellswords" "0protectking2sellswords">> alike litter the room. The wall behind the throne is <<weak "melted" "0protectking2wall">>.\n\n<<dock "Ripley" "0protectking2Rip">> steps in after Elesun, and gasps upon seeing Irelith and rushes to her.\n\n"Hey kid," Irelith says. "It's <<weak "not as bad as it looks" "0protectking2lie">>."\n\n<<message>><<display "helpspaces">><</message>>\n\n<<info>>
/%<<emote "emote code" "size">>%/\n/%example: <<emote "grin" "pt">>%/\n<<widget "emote">>\n\t<<set _imageSize to $args[1].toUpperFirst()>>\n\t<<set _emoteSubj to "Rip" + _imageSize + "_" + $args[0]>>\n\t<<set _emoteSubj to setup.img[_emoteSubj]>>\n\t<span id="portrait">[img[_emoteSubj]]</span>\n<</widget>>\n/%shortcuts:%/\n<<widget "masked">><<emote "mask" "pt">><<endwidget>>\n<<widget "happy">><<emote "hapy" "pt">><<endwidget>>\n<<widget "confused">><<emote "conf" "pt">><<endwidget>>\n<<widget "determined">><<emote "detr" "pt">><<endwidget>>\n<<widget "grinning">><<emote "grin" "pt">><<endwidget>>\n<<widget "excited">><<emote "exct" "pt">><<endwidget>>\n<<widget "sad">><<emote "sadd" "pt">><<endwidget>>\n<<widget "dolled-up">><<emote "doll" "pt">><<endwidget>>\n<<widget "surprised">><<emote "surp" "pt">><<endwidget>>\n<<widget "excited">><<emote "exct" "pt">><<endwidget>>\n<<widget "dolled-up-angry">><<emote "dola" "pt">><<endwidget>>\n<<widget "dolled-up-neutral">><<emote "doln" "pt">><<endwidget>>\n<<widget "beatup">><<emote "beat" "pt">><<endwidget>>\n<<widget "beatup-happy">><<emote "bthp" "pt">><<endwidget>>\n<<widget "eating-dismissive">><<emote "edis" "pt">><<endwidget>>\n<<widget "laughing">><<emote "lagh" "pt">><<endwidget>>\n<<widget "hoping">><<emote "hope" "pt">><<endwidget>>\n<<widget "eating">><<emote "eatn" "pt">><<endwidget>>\n<<widget "toasting">><<emote "toas" "pt">><<endwidget>>\n<<widget "eating-happy">><<emote "ehap" "pt">><<endwidget>>\n<<widget "joyous">><<emote "joys" "pt">><<endwidget>>\n<<widget "what">><<emote "what" "pt">><<endwidget>>\n<<widget "sigh">><<emote "sigh" "pt">><<endwidget>>\n<<widget "worried">><<emote "worr" "pt">><<endwidget>>\n<<widget "devil-form">><<emote "devl" "pt">><<endwidget>>\n<<widget "final-form">><<emote "finl" "pt">><<endwidget>>\n\t/%shortcuts for "thumbs"%/\n<<widget "th-masked">><<emote "mask" "sm">><<endwidget>>\n<<widget "th-happy">><<emote "hapy" "sm">><<endwidget>>\n<<widget "th-confused">><<emote "conf" "sm">><<endwidget>>\n<<widget "th-determined">><<emote "detr" "sm">><<endwidget>>\n<<widget "th-grinning">><<emote "grin" "sm">><<endwidget>>\n<<widget "th-excited">><<emote "exct" "sm">><<endwidget>>\n<<widget "th-sad">><<emote "sadd" "sm">><<endwidget>>\n<<widget "th-dolled-up">><<emote "doll" "sm">><<endwidget>>\n<<widget "th-surprised">><<emote "surp" "sm">><<endwidget>>\n<<widget "th-excited">><<emote "exct" "sm">><<endwidget>>\n<<widget "th-dolled-up-angry">><<emote "dola" "sm">><<endwidget>>\n<<widget "th-dolled-up-neutral">><<emote "doln" "sm">><<endwidget>>\n<<widget "th-beatup">><<emote "beat" "sm">><<endwidget>>\n<<widget "th-beatup-happy">><<emote "bthp" "sm">><<endwidget>>\n<<widget "th-eating-dismissive">><<emote "edis" "sm">><<endwidget>>\n<<widget "th-laughing">><<emote "lagh" "sm">><<endwidget>>\n<<widget "th-hoping">><<emote "hope" "sm">><<endwidget>>\n<<widget "th-eating">><<emote "eatn" "sm">><<endwidget>>\n<<widget "th-toasting">><<emote "toas" "sm">><<endwidget>>\n<<widget "th-eating-happy">><<emote "ehap" "sm">><<endwidget>>\n<<widget "th-joyous">><<emote "joys" "sm">><<endwidget>>\n<<widget "th-what">><<emote "what" "sm">><<endwidget>>\n<<widget "th-sigh">><<emote "sigh" "sm">><<endwidget>>\n<<widget "th-worried">><<emote "worr" "sm">><<endwidget>>\n<<widget "th-devil-form">><<emote "devl" "sm">><<endwidget>>\n<<widget "th-final-form">><<emote "finl" "sm">><<endwidget>>
<<if not $gamestart is 0>><div id="tutorial">[img[setup.ui.tut.tut7][helpmenu]]</div>\n<<ctrlCon "helpmenu">><<else>><div id="tutorial">[img[setup.ui.tut.tut7][newgame3]]</div>\n<<ctrlCon "newgame3">><<endif>>
// <<fullscreenNW>> -- for NW.js\nMacro.add('fullscreenNW', {\n handler : function() { \n\n\t\tvar bg = $('body').css('background-color');\n $('html').css('background-color', bg);\n\n\t\tvar ngui = require('nw.gui');\n\t\tvar nwin = ngui.Window.get();\n\t\tnwin.toggleFullscreen();\n\n }\n});
"What about him?"\n\n"I figured you two would be together," Elesun says. "It's been months."\n\n"He's been a bit distant lately." Ripley shrugs. "Did you know the King told him to marry me?"\n\n"I didn't know that."\n\n"I think he's just freaked out by it."\n\n"Do you want to marry him?"\n\n"I don't want to plan too far ahead until I deal with Akatosh," Ripley says softly.\n\n"Hey, we'll do it together. I'll be right there with you every step of the way. You're not going to die. You have a bright, long future ahead of you."\n\n"I know. I might not die, but people are dying every day, waiting on me to be ready--"\n\n"I know. But this is bigger than them--or even you. We only get one chance to do this right. And you're a person, Ripley. You get to have a life, friends, family. You're not just some world-saving tool."\n\n"Yeah..."\n\n"According to Folsom, the last child of promise was pushing thirty when she fought Akatosh. You're sixteen. You're making excellent time, trust me."
<<display "scyt_ui">>\nEquip this weapon?\n\n[[Yes|changeweapon][$change to "scyt"]]\n[[No|weaponswap]]
If the enemy didn't attack Ripley in force, then they must be after the king. Irelith is strong and skilled, but she wouldn't last long.
<<image "HarlPtKid">><<set $gamestart to 2>>''Harlaus''\n\nPrince Harlaus is heir to the thrown of Juno and son of His Majesty King Harmon. Harlaus is strong and smart, and popular with the people. Some claim his wisdom rivals his father's.\n\nWhen Ripley was brought in to the King's house, she became fast friends with the Prince, and the two were raised, trained, and educated together.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<image "FolsomPt">><<set $gamestart to 2>>''Folsom''\n\nLord Folsom is King Harmon's court wizard, most-trusted advisor, and closest friend. Though now an old man, Folsom's mastery over many kinds of magic, expecially hellish magic, has made him a powerful ally.\n\nFolsom educated Prince Harlaus and Lady Ripley in politics, law, and mathematics, and has grown fond of the children.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<set $weaponname to "Clawed Gauntlets">>\n<<set $weapon_ui to "gaun_ui">>\n\n<<set $watk to 0.8>>\n<<set $wdef to 0.8>>\n<<set $wmov to 1.0>>\n<<set $critrange to 90>>\n\n<<set $wStaUse to 3>>\n\n<<if $gauntletstraining is 1>>\n\t<<set $wdef to 0.9>>\n<<elseif $gauntletstraining is 2>>\n\t<<set $wdef to 0.9>>\n\t<<set $wmov to 1.1>>\n<<elseif $gauntletstraining is 3>>\n\t<<set $wdef to 0.9>>\n\t<<set $wmov to 1.1>>\n\t<<set $watk to 0.9>>\n<<endif>>
<<set $gamestart to 0>>TP: <<print $tp>>\n\nSelect a school of magic to practice:\n\n<<if $neutralhave is 1>>Neutral: Current Level <<print $neutraltraining>> <<if $neutraltraining lt 3>>[[Train|magic_trainer2][$choice to "neut"; $tpcost to ($neutraltraining+1)*3]] (<<print ($neutraltraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $naturalhave is 1>>Natural: Current Level <<print $naturaltraining>> <<if $naturaltraining lt 3>>[[Train|magic_trainer2][$choice to "nat"; $tpcost to ($naturaltraining+1)*3]] (<<print ($naturaltraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $lighthave is 1>>Light: Current Level <<print $lighttraining>> <<if $lighttraining lt 3>>[[Train|magic_trainer2][$choice to "lt"; $tpcost to ($lighttraining+1)*3]] (<<print ($lighttraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $darkhave is 1>>Dark: Current Level <<print $darktraining>> <<if $darktraining lt 3>>[[Train|magic_trainer2][[$choice to "dk"; $tpcost to ($darktraining+1)*3]] (<<print ($darktraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n<<if $hellishhave is 1>>Hellish: Current Level <<print $hellishtraining>> <<if $hellishtraining lt 3>>[[Train|magic_trainer2][$choice to "hell"; $tpcost to ($hellishtraining+1)*3]] (<<print ($hellishtraining+1)*3>> TP)<<else>>Cannot train further.<<endif>><<endif>>\n\n[[Cancel|$exitpassage][$gamestart to 1]]
<<if $storystage lt 1>>Nothing here yet.<<else>>''Prologue: Child of Promise''\n\nBreak the siege and protect the castle.\n\n<<if $storystage is 1>>Locate Ripley.<<elseif $storystage is 2>>Regroup with Irelith and the king.<<elseif $storystage is 3>>Protect the king.<<endif>>\n<<endif>>
Ripley had a great view of the village from here; it's not such a nice view anymore. There are some burned out homes and buildings down there, and more gravestones than before. But the sun is still shinging, and the villagers are still out--working, walking, living.
Clicking on information dock links will sometimes make new links available and make old ones change or vanish. Explore carefully.\n\nAlso, note that not all decisions happen in scenes, and not all decisions are accompanied by an obvious fanfare.\n\nJust remember, there are no right and wrong choices.
<<if $titles.has('Village Hero')>>\n\t<<set _max to $maxgrit>>\n\t<<set _curr to $grit>>\n\t<<if _curr lt _max>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 30>>\n\t\t\t<<set _reg to 30 + ($lvl * 5)>>\n\t\t\t<<set _reg to _reg - _odds>>\n\t\t\t<<set $grit to Math.trunc($grit + _reg)>>\n\t\t\t<<if $grit gte $maxgrit>>\n\t\t\t\t<<set $grit to $maxgrit>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
<<print $versionnumber>>
/*! <<checkvars>> macro for SugarCube 2.x */\n!function(){"use strict";if("undefined"==typeof version||"undefined"==typeof version.title||"SugarCube"!==version.title||"undefined"==typeof version.major||version.major<2)throw new Error("<<checkvars>> macro requires SugarCube 2.0 or greater, aborting load");Macro.add("checkvars",{handler:function(){function toString(value,indent){var baseType=typeof value;switch(baseType){case"number":return isNaN(value)?"NaN":isFinite(value)?String(value):"Infinity";case"string":return JSON.stringify(value);case"function":return"(function)";default:if("object"!==baseType||null==value)return String(value);var objType=Object.prototype.toString.call(value);if("[object Date]"===objType)return'(object: Date, value: "'+value.toISOString()+'")';if("[object RegExp]"===objType)return"(object: RegExp, value: "+value.toString()+")";var opener,closer,result=[],indentText=" ";return indent||(indent=""),("[object Set]"===objType||value instanceof Set)&&(value=Array.from(value)),Array.isArray(value)?(opener="[\sn",closer="\sn"+indent+"]",value.forEach(function(p,i){result.push(indent+indentText+i+" ⇒ "+toString(value[i],indent+indentText))}),Object.keys(value).forEach(function(p){/^\sd+$/.test(p)||result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})):"[object Map]"===objType||value instanceof Map?(opener="{\sn",closer="\sn"+indent+"}",Array.from(value).map(function(kv){result.push(indent+indentText+toString(kv[0],indent+indentText)+" ⇒ "+toString(kv[1],indent+indentText))})):(opener="{\sn",closer="\sn"+indent+"}",Object.keys(value).forEach(function(p){result.push(indent+indentText+toString(p)+" ⇒ "+toString(value[p],indent+indentText))})),opener+result.join(",\sn")+closer}}var dialog,sv=State.variables,names=Object.keys(sv);if(dialog=UI.setup("Story $variables","checkvars"),0===names.length)return dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><p><em>No $variables currently set…</em></p>",void UI.open();dialog.innerHTML="<h1>Story $variables (<code>State.variables</code>):</h1><table><thead><tr><th>Name</th><th>Value</th></tr></thead><tbody></tbody></table>"+(/applewebkit|chrome/.test(Browser.userAgent)?"":'<div class="scroll-pad"> </div>');var tbody=dialog.querySelector("tbody");names.sort(function(a,b){return Util.isNumeric(a)&&Util.isNumeric(b)?Number(a)-Number(b):a.localeCompare(b)});for(var i=0;i<names.length;i++){var tr=document.createElement("tr"),tdName=document.createElement("td"),tdValue=document.createElement("td");tdName.textContent="$"+names[i],tdValue.textContent=toString(sv[names[i]]),tr.appendChild(tdName),tr.appendChild(tdValue),tbody.appendChild(tr)}UI.open()}})}();\n
Explosion grants a mild increase to attack power and critical attack chance, and a large boost to critical attack damage.\n\n|[img[setup.ui.icons.ui_atk]]|Attack:|[img[setup.ui.icons.ui_up]]|//Slight//|\n|[img[setup.ui.icons.ui_def]]|Defense:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_mov]]|Move:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_crit]]|Criticals:|[img[setup.ui.icons.ui_up]]|//Large//|\n|[img[setup.ui.icons.ui_dodge]]|Dodge:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_disp]]|Dispel:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_grit]]|<<= setup.words.grit.toUpperFirst()>>:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_regen]]|Regen:|[img[setup.ui.icons.ui_same]]|//None//|\n|[img[setup.ui.icons.ui_heal]]|Healing:|[img[setup.ui.icons.ui_same]]|//None//|
Ripley’s chambers are to the north.\n\n<<ctrlClick "Proceed." "0choice1" "leave">>
main:\n0.4.1c0.1:1011101:02-000-0003-04.Ele.020101010150\n0000000000111111111122222222223333333333444444444\n0123456789012345678901234567890123456789012345678\n\nitems:\n1.1.0.0.0.0.0.0.0.0-1.0.0.0.0-0.1.0.0-0\n000000000011111111112222222222333333333\n012345678901234567890123456789012345678\n\ncomplete code:\n0.4.1c0.1:1011101:02-000-0003-04.Ele.020101010150:1.1.1.0.0.0.0.0.0.0-1.0.0.0.0-0.1.0.0-0:0insidethewall\n\nOLD CSS\n\n#info a {\n\tcolor: #ff82ff;\n\tfont-weight: bold;\n}\n\n.combat #info a {\n\tcolor: 68d;\n\tfont-weight: normal;\n}\n
<<thumb>>Elesun's quarters are simple and small. In the far corner of the room is her <<action 'bed' '1eleqBed'>>. There's a dresser and a <<dock 'mirror' '1eleqMirror'>> along the wall nearby, and in the room's corner, a <<weak 'closet' '1eleqCloset'>>.\n\n<<message 'About resting.'>>If Elesun can find a place to rest, she'll restore her health fully. Additionally, resting gives her a chance to earn new ''scars''.\n\nResting may occasionally cause the story to move forward, so it's a good idea to do everything you can before resting.<</message>>\n\n<span id="navbox"><<mapHarlan $now>></span>\n\n<<info>>
Story event.\n\n<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
"Oh my God." Ripley's voice is a sharp whisper. "What's wrong with them?"\n\nThey're melted, for lack of a better turn--it's impossible to tell anymore where one starts and another begins. A mass of flesh and skin and blood and bone and organs, all spilled on the floor, all unmade.\n\nElesun can't look away from it. She can hear Ripley gasping and retching and gagging.\n\nIt's a mess. Some of them are still alive, dying slowly, writhing with what little strength they have and crying and moaning and pleading. And every time they move, something somewhere in the pile snaps or tears or--\n\n<<timed 2s t8n>><span id="ctrlClick"><<link "...Someone else is here.">><<append "#gone">><<display "0aesHere">><</append>><</link>></span><</timed>>\n\n
<<image "AkaPt_grin">><<set $gamestart to 2>>''Akatosh''\n\nAkatosh, sometimes called the Demon, arrives in the world every few centuries to destroy an apocolyptic number of people. Though his motives and origin are unlcear, his nature is better understood.\n\nAkatosh indwells the body of a living human; gender, race, and age seem to mean little to him. He then sets about gathering an army to himself, and uses his considerable power to bring war and death to the world.\n\nThe Child of Promise is born sometime after his arrival, and destined to face him. The Child of Promise is as often successful as not.\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>
<<if !$demomode>>!The Codex\n\n[[Characters|codex_characters]]\n[[People|codex_menu_people]]\n[[Places|codex_menu_places]]\n[[History|codex_menu_history]]\n[[Creatures|codex_menu_creatures]]\n[[Magic|codex_menu_magic]]\n\n\n[[Return to Journal|journalmenu]]\n\n<span id="return">[[Return to Game|$return][$gamestart to 1]]</span>\n\n''Note:'' The Codex is not yet complete as of this prototype.<<else>>The Codex is not available in this demo.<<endif>>
<<dialog 'Tutorial' 'tut'>>\s\n<<name>> has the ability to transform. You can trigger her transformation when her rage is over 100% by clicking the appropriate link, or by pressing space.\n\nIn her transformed state, <<name>> has dramatically increased power, but she can no longer score critical hits, dodge, dispel, or perform desperation attacks. While she remains transformed, her rage will drop every round. When it reaches 0%, she will revert to her base form.\n\n<<name>> can gain up to 200% rage. Having more rage when she transforms will make the transformation more powerful and longer-lasting. After combat ends, <<name>> will revert to her normal form, regardless of remaining rage. Rage levels decrease when out of combat.\s\n<</dialog>>\n<<tutorialHook 'tut_onTransfrom'>>
<center><<display $spell_ui>></center>
There are a few paintings on the wall. There's one of the king himself, and another of his late wife. There's also a portrait of Harlaus, and next to it a portrait of Ripley.\n\nThe king loved Ripley like a daughter, and had her wear a cloak and circlet similar to his own son's.
<<set $spellname to "Flame Shroud">>\n<<set $schoolname to "Hellish">>\n<<set $p_spellname to "Flame Shroud">>\n<<set $spell_ui to "fshr_ui">>\n\n<<set $spellcrit to -10>>\n<<set $spellcritdam to 1.0>>\n<<set $spelldodge to 10>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.3>>\n<<set $smov to 1.0>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 10>>\n\n<<if $hellishtraining is 1>>\n\t<<set $spellcrit to -5>>\n<<elseif $hellishtraining is 2>>\n\t<<set $sdef to 1.5>>\n\t<<set $spellcrit to -5>>\n<<elseif $hellishtraining is 3>>\n\t<<set $spelldispel to 15>>\n\t<<set $sdef to 1.5>>\n\t<<set $spellcrit to -5>>\n<<endif>>
<<dialog 'Tutorial' 'tut'>>\n<<name>> has dispelled an enemy spell.\n\nCertain enemies can cast spells. Spells are incredibly dangerous, but <<name>> has a chance to dispel each one, based on her Will and equipment. Dispelling an enemy spell causes it to have no effect.\s\n<</dialog>>\n<<tutorialHook 'tut_onDispel'>>
Elesun stands in a courtyard, surrounded by the inner walls of the castle. She can <<weak "hear" "0cylisten">> the sounds of battle nearby, but the <<weak "courtyard" "0cyinspect">> itself remains eerily peaceful.\n\nA <<action "gate" "0cygate">> on the far side of the courtyard <<if $courtyardgate is 0>>is closed<<else>>hangs open<<endif>>. A <<action "door" "0cydoor">> behind her leads inside the walls.\n\n<<message>><<display "helpdock">><</message>>\n\n<<info>>
<<timed 500ms>><<image "AesSm3">><</timed>>Elesun senses the movement before he speaks.\n\n"Demonkin," he hisses.\n\nShe'd know that face anywhere. \n\n"Aesil."\n\n<<timed 2s t8n>><<ctrlClick "Continue." "0aesil2">><</timed>>\n\n
<<if $anchor is 0>>\n\t<<display $args[0]>>\n\t<<anchor>>\n\t<<display $args[1]>>\n\t[[Continue|combat_init]] \n<<else>>\n\t<<snchorkill>>\n\t<<display $args[2]>>\n<<endif>>\n
A fight is about to begin. <<if $mode is 0>>//We see that you have turned combat off. If you'd like to try a fight, you can pick one of the links below to turn it on and try a fight. You'll have the opportunity to turn it off again after the prologue ends.//<<endif>>\n\nTo see a brief explanation of combat, go to the journal and click on help.\n\n<<if $mode is 0>><<link "Try combat in easy mode.">><<set $mode to 2>><<display "easy-bal-adj">><<stats>><<goto "combat_call_0_1">><</link>>\n[[Try combat in normal mode.|combat_call_0_1][$mode to 1;$modeatk to 1.0]]\n[[Leave combat off.|combat_call_0_1]]<<else>><span id="ctrlClick">[[I'm ready.|combat_call_0_1]]</span><<endif>>
Head to the courtyard?\n\n<<ctrlClick "Proceed." "1courtyard" "leave">>
<<if $vol lte 1>>\n <<masteraudio volume 0>>\n<<elseif $vol lte 2>>\n <<masteraudio volume 0.20>>\n<<elseif $vol lte 3>>\n <<masteraudio volume 0.30>>\n<<elseif $vol lte 4>>\n <<masteraudio volume 0.40>>\n<<elseif $vol lte 5>>\n <<masteraudio volume 0.50>>\n<<elseif $vol lte 6>>\n <<masteraudio volume 0.60>>\n<<elseif $vol lte 7>>\n <<masteraudio volume 0.70>>\n<<elseif $vol lte 8>>\n <<masteraudio volume 0.80>>\n<<elseif $vol lte 9>>\n <<masteraudio volume 0.90>>\n<<elseif $vol lte 10>>\n <<masteraudio volume 1.00>>\n<<endif>>\n<<if $vol lt 10>>\n <<set $volStr to "0" + $vol>>\n<<else>>\n <<set $volStr to $vol>>\n<<endif>>\n<<replace "#vol">>\s\n <<print $volStr>>\s\n<</replace>>
<<set $allyname to "Ripley">>\n<<set $allynumber to 3.1>>\n\n<<set $allylvl to 15>>\n<<set $allymaxhealth to 3>>\n<<set $allymaxgrit to 230>>\n<<set $allyatk to 114>>\n<<set $allydef to 100>>\n<<set $allymov to 99>>\n<<set $allymagic to 92>>\n\n<<set $allyspecial to "chain">>\n<<set $specialname "Co-op Attack">>\n<<set $allyspec to 2>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<if $dockdisp is 2>><span id="info3close"><<button "Close All Links">><<script>>state.display(state.active.title, null, "back")<</script>><</button>>\n\n</span><<endif>><<set $now to passage()>>\s\n<<if tags().includes("char") and $characterHide is 1>><<goto "NoCharacter">><<endif>>\s
<<display "expl_ui">>\nEquip this <<= setup.words.spell>>?\n\n[[Yes|changespell][$change to "expl"]]\n[[No|spellswap]]
The closet is small, but has just enough room to house Elesun's clothes; a handful of nice dresses are pushed off to the right, and the rest of the closet is full of traveling clothes and other garments more suited to her day job. Her eyes stop as they scan across the closet, hanging for a moment on a violet dress she hasn't worn in almost two years now. She reaches out and touches the soft fabric gently. Maybe she'll get a chance to wear it again soon.\n\nElesun shuts the door to the closet.
"I'll be around if you need me," Irelith says.\n\n<<set $need to '"See you around."'>><<ctrlClick $need "1bailey">>
The witch's spell softened the stone, causing Elesun to sink right through it. She probably placed a charm on the door and set herself up here to catch intruders. The second Elesun touched it, the spell triggered.\n\n"How did you know about the spell?" Elesun asks.\n\n"I could feel it," Ripley replied.\n\n"How?"\n\n"Do you think I don't wear shoes because I love to hurt my feet?"\n\nElesun laughs. "Of course not."\n\n
\n\n\n\n\n\n\nYour autosave will be overwritten.\n\nStart a new game?\n\n<<if $webversion is 1>>[[Yes|newgame2]]<<else>>[[Yes|newgame3]]<<endif>>\n\n[[No|main menu]]
You found a new weapon. You can change Elesun's equipment from the equipment menu on the left, or by pressing E on the keyboard. She has three pieces of equipment: a weapon, a suit of armor, and a bound spell. Changing equipment provides various bonuses and penalties to Elesun's stats. You can use the keys W (for weapons), A (for armor), and S (for spells) to bring up the appropriate menus quickly.
Elesun steps through the door, and finds herself inside the wall, in a <<weak "torch-lit" "0iwinspect">> hallway. <<if $gswordhave is 0>>There's a <<action "great sword" "0iwgreatsword1">> resting against the wall, but no sign of its owner.<<endif>>\n\nOn the far side of the room is a <<if $courtyardgate is 0>><<action "lever" "0iwlever1">><<else>><<dock "lever" "0iwlever3">><<endif>>.\n\nBehind her is the <<action "door" "0iwdoor">> to the courtyard.\n\n<<info>>
The assasin falls.<<masteraudio stop>>\n\nElesun sheathes her sword and trots to Merac's gates.\n\n<span id="ctrlClick">[[Continue|ch1-5][$gamestart to 1]]</span>
The <<dock 'grove' '1dcGrove'>> is eerily quiet.\n\n<<dock 'The guards' '1dcGuards'>> are searching the nearby tents and huts for <<weak 'survivors' '1dcSurvivors'>>.\n\n<<action 'The remaining horse' '1dcHorse'>> is tied to a tree not far away.\n\n<<info>>
<<set $song to -2>><<masteraudio stop>><<audio "expressions-of-the-mind" loop play>><<set $xpearned to $xpearned+75>><<image "IreSm">><<image "KingSm">>Elesun heads back into the throne room.<<set $comfortRip to 0>>\n\n<<journallink "Irelith" "codex_Irelith">> is unconscious, propped up against the wall. Her abdomen is wrapped in a bandage, and her breathing is even.\n\n<<journallink "The king" "codex_King">> is sitting on his throne.\n\n<<journallink "Elesun" "codex_Elesun">> doesn't see <<journallink "Ripley" "codex_Ripley">> anywhere.\n\n<<ctrlClick "Continue." "0throneroom">>
<<set $gamestart to 0>>You gained <<print $xpearned>> experience points.\n<<if $lvl lt setup.lvlcap>><<if $xpearned gte setup.xpreq-$xp>>\nYou leveled up!\n\n<span id="ctrlClick">[[Continue|levelup]]</span>\n\t<<set $xptemp to $xpearned-(setup.xpreq-$xp)>>\n\t<<set $xp to $xptemp>>\n<<else>>\n\t<<set $xp to $xp+$xpearned>>\nYou need <<print setup.xpreq-$xp>> experience points to reach the next level.\n\n<span id="ctrlClick">[[Continue|$exitpassage]]</span>\n<<endif>>\n<<else>>You have already reached the level cap of <<print setup.lvlcap>>.\n\n<span id="ctrlClick">[[Continue|$exitpassage]]</span><<endif>>\n\n<<set $xpearned to 0>>
<<set $spellname to "Ghost">>\n<<set $schoolname to "Dark">>\n<<set $p_spellname to "Ghost">>\n<<set $spell_ui to "ghst_ui">>\n\n<<set $spellcrit to 15>>\n<<set $spellcritdam to 0.5>>\n<<set $spelldodge to 10>>\n<<set $spellgrit to 0>>\n\n<<set $satk to 1.0>>\n<<set $sdef to 1.0>>\n<<set $smov to 1.1>>\n\n<<set $spellregen to 0>>\n<<set $spellhealing to 0>>\n<<set $spelldispel to 10>>\n\n<<if $darktraining is 1>>\n\t<<set $spellcritdam to 0.6>>\n<<elseif $darktraining is 2>>\n\t<<set $spellcritdam to 0.7>>\n<<elseif $darktraining is 3>>\n\t<<set $spellcritdam to 0.8>>\n<<endif>>
<span id="trainingdummy">Current TP: <<print $tp>></span>\n[[Combat training|combat_trainer]]\n[[Magic training|magic_trainer]]\n[[Armorer|armorsmith]]\n<<click "Give TP">><<set $tp++>><<replace "#trainingdummy">>Current TP: <<print $tp>><</replace>><</click>>
<<image "IreSm">><<thumb>>//The following scenes are accompanied by a tutorial to help you learn the basics of the game. Click on the links labeled "help" to see various information and explanations.//\n\n<<set $storystage to 1>>"Elesun!" Irelith is standing up on the wall above. "Where's <<journallink "Ripley" "codex_Ripley">>?"\n\n"I thought she was with you," <<journallink "Elesun" "codex_Elesun">> calls.\n\n"Damn it. I got separated from the king. Find Ripley and regroup with us."\n\n"All right, be careful."\n\n<<journallink "Irelith" "codex_Irelith">> just smiles her fakest smile and runs off.\n\nElesun is standing in the courtyard. She can hear the sounds of battle all around. The air is full of the sounds of sharp metal clashing into steel and paring flesh. Shouts and screams. War cries. She smells smoke and the salt-metal scent of blood.\n\nShe takes off toward the northern side of the castle, where Ripley's quarters are.\n\n<<message>><<display "helpjournal">><</message>>\n\n<<ctrlClick "Continue" "0courtyard">>\n<<notifyJournal>>\n\n\n\n\n\n\n\n\n\n\n\n\n
<<journallink "Elesun" "codex_Elesun">> steps through the gate. The sounds of battle are growing louder.\n\nA man runs toward her, sword drawn. He's bloody, but it's not his own. He smells of death.\n\nHe raises his sword, and with a yell, charges. Elesun doesn't bother to draw; she sees his attack coming and dodges it easily.\n\nThe soldier steps back and raises his blade again.\n\n<<ctrlClick "Continue." "combatexplanation">>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
//The game autosaves after every handful of scenes.//\n\n<<message>><<display "helpautosaves">><</message>>\n\n<<message "Help: Game Flow">><<display "helpgameflow">><</message>>\n\n<<journallink "Elesun" "codex_Elesun">> steps out into the bailey.\n\nShe can hear screams and shouts. The battle isn’t going well in the south.\n\nFortunately, <<journallink "Ripley" "codex_Ripley">>’s chambers are to the north.\n<<set $ripFight to 0>>\n<<ctrlClick "Continue." "0bailey">>\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set $gamestart to 1>><<set $helpServants to 0>><<set $choice2 to 0>><<set $song to -1>><<if visited() is 1>><<masteraudio stop>><<audio "herat7" loop play>><<endif>><<image "RipSmKid">><<thumb>><<journallink "Ripley" "codex_Ripley">> takes Elesun by the hand and leads her through the antechamber to a door, and the two go through it and out onto the wall. When they step out, Ripley can see the village burning down below, firelight staining the gray-dusk sky.\n\n"Oh no," she says, stepping to the edge. "Oh no."\n\n<<journallink "Elesun" "codex_Elesun">> puts her hand on Ripley’s shoulder. Ripley stands there quietly, taking it in. In the silence, Elesun begins to hear the screams rising in the distance, just barely audible over Ripley’s staggered breathing and her own soft heartbeat.\n\n"We've got to go," Elesun says. She pulls Ripley's shoulder gently. Ripley doesn’t move.\n\nElesun steps to her side. She's not crying, but her eyes are wide.\n\n"We've got to go, girl."\n\nRipley looks Elesun dead in the eyes. She’s standing up as straight as she can--shoulders squared, chin up--and forcing her face to be neutral and her eyes to stay dry. The way she looks chills Elesun to the bone.\n\n"Lead the way," she says.\n\n<<ctrlClick "Lead the way." "0wall">>\n\n\n\n\n\n\n
<<set $process to 0>><<set $gamestart to 1>><<image "RipSmKid">><<thumb>>\n\nFinally, <<journallink "Elesun" "codex_Elesun">> and <<journallink "Ripley" "codex_Ripley">> find themselves in the main hall. The throne room is just ahead.\n\n"I don't hear anything," Ripley says.\n\n"Stay focused."\n\n<<ctrlClick "Continue." "0mainhall1">>\n<<notifyJournal>>
<<image "KingSm">><<thumb>>"How is she?" the king asks.\n\n"Awful."\n\n"I see."\n\n"A lot of people died. I bet she knew every one of their names."\n\n"She's always made friends easily," the king says.\n\n"You put her through this. You put everyone through this."\n\n"And there it is. Anyone else and I'd swear it was treachery. You're fortunate I know how loyal you are."\n\n"You don't have anything else to say?" Elesun asks.\n\n"No. I don't have to explain myself to you."\n\n"No, you don't. But do it anyway. Was all this just so you could be near her again?"\n\n"If I miss my child," the king says, "I'll go and see her."\n\nElesun falls silent.\n\nThe king stands and takes off his crown and holds it out toward Elesun. "This crown bears the weight of death. Every time I move, look, speak, do, remain still--thousands die." He puts it back on his head. "I live with the weight, and neither you nor Ripley will ever strip it from me. Do what you can to protect those who break beneath me when I move, and leave the weight to me."\n\n<<ctrlClick "Elesun bows and takes her leave." "toch1">>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
<<set _despSel to either(1, 2, 3)>>\n<<switch _despSel>>\n<<case 1>>\n\t<<audio 'rage' play>>\n<<case 2>>\n\t<<audio 'rage6' play>>\n<<case 3>>\n\t<<audio 'rage7' play>>\n<<default>>\n\t<<audio 'rage6' play>>\n<</switch>>
Current Armor: <<print $armorname>>\n\nSelect a set of armor:\n[[No Armor]]\n<<if $clothhave is 1>><<if $clothplus is 1>>[[Cloth Armor+|Cloth Armor]]<<else>>[[Cloth Armor]]<<endif>><<endif>>\n<<if $leatherhave is 1>><<if $leatherplus is 1>>[[Leather Armor+|Leather Armor]]<<else>>[[Leather Armor]]<<endif>><<endif>>\n<<if $chainhave is 1>><<if $chainplus is 1>>[[Chain Armor+|Chain Armor]]<<else>>[[Chain Armor]]<<endif>><<endif>>\n<<if $platehave is 1>><<if $plateplus is 1>>[[Plate Armor+|Plate Armor]]<<else>>[[Plate Armor]]<<endif>><<endif>>\n\n[[Back|equipmenu]]\n\n<span id ="return">[[Return to game.|$return][$gamestart to 1]]</span>
<<if $titles.has('Vampire Touched')>>\n\t<<if $health lt $maxhealth>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 30>>\n\t\t\t<<set $health++>>\n\t\t\t<<if $health gte $maxhealth>>\n\t\t\t\t<<set $health to $maxhealth>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>
<span id="mutebutton"><<display "audiomute">></span>\n<span id="fscreenbutton"><<display "fullscreen_toggler">></span>
<<audio "equip" play>>Equipment changed!\n\n[[Okay.|equipmenu]]\n\n<<if $change eq "cloth">>\n\t<<display "clotharmor">>\n<<elseif $change eq "leath">>\n\t<<display "leatherarmor">>\n<<elseif $change eq "chain">>\n\t<<display "chainarmor">>\n<<elseif $change eq "plate">>\n\t<<display "platearmor">>\n<<elseif $change eq "no">>\n\t<<display "noarmor">>\n<<endif>>\n<<stats>>
<<image "RipSmKid">><<thumb>>"Listen to me," Elesun says, resting a hand on Ripley's shoulder. "We're going to make it through this, and we're going to find a way to make this right."\n\n"We can't make it right, not this much wrong," Ripley says. Her voice sounds flat, dead. "We can't."\n\n"I need you to be strong."\n\n"I'm trying," Ripley whispers.\n\n"I know. And it's not fair for me to ask for more. But we need to keep going."\n\nRipley dries her eyes and Elesun helps her to her feet.\n\n<<ctrlClick "Continue." "0wall3">>
<<set $weaponname to "Side Sword">>\n<<set $weapon_ui to "sswd_ui">>\n\n<<set $watk to 0.8>>\n<<set $wdef to 0.9>>\n<<set $wmov to 1.5>>\n<<set $critrange to 90>>\n\n<<set $wStaUse to 3>>\n\n<<if $sideswordtraining is 1>>\n\t<<set $watk to 0.9>>\n<<elseif $sideswordtraining is 2>>\n\t<<set $watk to 0.9>>\n\t<<set $wdef to 1.0>>\n<<elseif $sideswordtraining is 3>>\n\t<<set $watk to 0.9>>\n\t<<set $wdef to 1.0>>\n\t<<set $critrange to 88>>\n<<endif>>
<<if $webversion is 1>><<button "Fullscreen mode.">><<fullscreen>><</button>><<else>><<button "Toggle Fullscreen Mode.">><<fullscreenNW>><</button>><<endif>>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
<<set $allyname to "">>\n<<set $allynumber to 0>>\n\n<<set $allylvl to 0>>\n<<set $allymaxhealth to 0>>\n<<set $allymaxgrit to 0>>\n<<set $allyatk to 0>>\n<<set $allydef to 0>>\n<<set $allymov to 0>>\n<<set $allymagic to 0>>/%used to cast%/\n\n<<set $allyspecial to "watchback">>\n<<set $specialname "Watch my back!">>\n<<set $allyspec to 0>>\n<<set $allyneutral to 0>>\n<<set $allynatural to 0>>\n<<set $allylight to 0>>\n<<set $allydark to 0>>\n<<set $allyhellish to 0>>\n\n<<set $allyAIbase to 0>>\n<<set $allymovest to 0>>
It was crazy, the process of moving a king. Harlan did provide some tactical benefits for the campaign against Akatosh, and moving here was maybe, on paper--very shitty paper--more sensible than moving Ripley. Still, Elesun wished then--and still does now--that someone had consulted her beforehand. This whole thing was avoidable.
Stay safe, Elesun.\n\n<<ctrlClick '"You too."' '1mainhall'>>
Normal Mode is recommended for most players.\n\nIn Easy Mode, <<name>>'s attacks deal more damage and enemy attacks deal less compared to Normal Mode. Additionally:\n*Enemy spell damage is severely reduced.\n*Enemy grit is reduced.\n*<<name>>'s grit is increased.\n*Desperation attack damage is dramatically increased.\n*Enemies are less agressive.\n\nIn Intense Mode, <<name>> gains a few bonuses, including some additional gear, a large amount of training points to spend, and increased experience rewards, but combat is faster-paced and more deadly:\n*<<name>> and her opponents both have less grit.\n*Critical hits are more frequent for all combatants, but their damage is reduced.\n*Desperation attacks deal far less damage than normal.\n*Some secret mechanic you'll unlock later is less effective and harder to use.\n*Enemies hit harder and are more agressive.\n\nWith combat turned off, <<name>> automatically wins most fights, though some fights with important consequences will be simulated based on your character's stats and loadout. Regardless, <<name>> cannot die in this mode.
<span id="subj">[img[$subj]]</span>/%top%/
blah
<<if $playerturn is 1>>Nothing to report.<<elseif $playerturn is 2>>''<<print $enemyreport>>''<<endif>>
<<if $titles.has('Treasure Hunter')>>\n\t<<if $health lt $maxhealth>>\n\t\t<<set _odds to random(1, 100)>>\n\t\t<<if _odds lt 25>>\n\t\t\t<<set $health++>>\n\t\t\t<<if $health gte $maxhealth>>\n\t\t\t\t<<set $health to $maxhealth>>\n\t\t\t<<endif>>\n\t\t<<endif>>\n\t<<endif>>\n<<endif>>