Tower of Triumph

Browser lacks capabilities required to play.

Upgrade or switch to another browser.

Loading…
<<run UIBar.unstow()>>\ <<PlayBGM "menu">>\ \ <<SimplePic "title.png">>\ \ <<set $GameState to "menu">>\ \ <hr> <<set $ReturnFromMenu to passage()>>\ @@color:Gold;An Humble Pilgrimage to the Shrine of the Goddess of Primal Darkness@@ <hr>\ @@color:Gold;Character Roster@@\ <table><tr><td>\ <table><tr>\ <td>\ <<PreambleShowCharacterInterface 0>>\ </td>\ <td>\ <<PreambleShowCharacterInterface 1>>\ </td>\ <td>\ <<PreambleShowCharacterInterface 2>>\ </td>\ </tr>\ </table>\ </td>\ <td>\ <span id="CharInfo"></span> </td>\ </tr>\ </table>\ <hr>\ @@color:Gold;World status@@ <<set $AD to setup.AD()>>\ <<if $AD.includes("file") or $AD.includes("rcdra")>>\ <<Bullet>>Highest tower level: <<if $WORLD.HTZE is 0>>Never visited<<else>><<print $WORLD.HTZE>><<endif>> <<Bullet>>Highest forest level: <<if $WORLD.HFZE is 0>>Never visited<<else>><<print $WORLD.HFZE>><<endif>> <<Bullet>>Highest desert level: <<if $WORLD.HFDE is 0>>Never visited<<else>><<print $WORLD.HFDE>><<endif>> <<Bullet>>Tutorial progress: <<ShowTutorialProgress>> <<Bullet>>Blacksmith metallurgy: <<ShowBlacksmithProgress>> <<Bullet>>Selene progress: <<ShowSeleneProgress>> <<Bullet>>Daphne progress: <<ShowDaphneProgress>>\ <<else>>\ @@color:Yellow;You appear to be playing Tower of Triumph on an unaffiliated website.@@ The development home and current version of Tower of Triumph may be found at <a href="https://arcdragon.com" rel="noopener noreferrer">arcdragon.com</a>. <<endif>>\ <<unset $AD>>\ <hr>\ @@color:Gold;Controls@@ <<button "Media location">><</button>>: \ <<textbox "$ImgPath" $ImgPath>> <<button "[Silent mode]">><<ToggleSilent>><</button>>: \ <span id="SpanToggleSilent">@@color:LightGreen;Music is ON@@</span> \ <<link "Force generation of new Tower, Forest, and desert" "Preamble">> <<ResetTower>> <<set _throwaway to setup.InitForestCaves()>>\ <<set _throwaway to setup.InitDesertCaves()>>\ <<for _R to 0; _R < 3; _R++>>\ <<if $PC[_R][$PCstate] is "dead">>\ <<set $PC[_R][$PCstate] to "lost">>\ <<endif>>\ <</for>>\ <</link>> - Reset location maps, but you'll keep characters and story/quest progress <<link "Reset world data" "Preamble">> <<ResetWorld>> <</link>> - This will reset all story quests and game progress, but you'll keep your characters <<link "Clear the graveyard" "Preamble">> <<ResetGraveyard>> <</link>> - Erase the history of your ancestors, but retain reincarnation bonuses and achievements <<link "Force version update check" "Update">><</link>> - If you have savefile problems this might fix them. Backup your save first. <hr>\ @@color:Gold;Clean start@@ <<link "Unconditional full reset">> <<AutoSaveLoad "wipe">> <<script>>Engine.restart()<</script>>\ <</link>> - This will reset the world, remove all achievements, and delete your characters. //Cannot be undone// <hr> <!-- <<link "Enable Debug Mode">> <<set $DebugMode to true>> <</link>> <hr>\ @@color:Gold;High priorityg@@ * magic/fire resist potions * Finalize current event set * implement or lock all achievements * Defeat dialogue for minotaur, horse, slime, spider * Victory sex events for: (wolf) and (naga, spider, minotaur) * more textual varity in monster attack types and descriptions * clean up right-images @@color:Gold;Moderate priority@@ * The morphology system needs a complete rewrite to accomodate body attacks, display names, combat verbage, and equippableness * need a way to delete items besides pawnshop * Show per-weapon damage and to-hit on stats screen * Possible new spells: passwall, cure, detect traps @@color:Gold;Other to do@@ * Forest should maybe go to perma-save like tower * Dialogue alterations for if player wins by flirt? * reverse color bars for hunger and arousal * adjust flirts to handle sex * flirt power from clothes * item descs should move to JS * setup updateflirt from equipment * salon, clothing store * char sheet perks should show what they do * Earning the Priest acheivement while casting from the spellbook does not inform the players * Resolve English language issues surrounding bovine transformations "cow penis" etc * Rina should notice when you show up at her door with a dead body * It's not currently possible to starve to death in town * Player dialogue with Gerard about people seeming normal should reflect if they've already met Skitters -->\ <<set $ImgPath to "C:/Users/lordb/Desktop/twine/TransformationDungeon/media/">> <<set _musicpath to "C:/Users/lordb/Desktop/twine/TransformationDungeon/media/">> <<set $AvatarPath to "C:/Users/lordb/Desktop/twine/TransformationDungeon/media/avatars/">> <<set $ImgPath to "./media/">> <<set $AvatarPath to "./media/avatars/">>/ <<set _musicpath to "./media/">> <<set $NoDoubleKeypress to 0>> <<set $PC to []>> <<set $PC[0] to []>> <<set $PC[1] to []>> <<set $PC[2] to []>> <<set $CC to 0>> <<set $PCstate to 0>> <<set $PCname to 1>> <<set $PCsex to 2>> <<set $PCgen to 3>> <<set $PCcoins to 4>> <<set $PChpcur to 5>> <<set $PChpmax to 6>> <<set $PCstr to 7>> <<set $PCdex to 8>> <<set $PCcon to 9>> <<set $PCint to 10>> <<set $PCwil to 11>> <<set $PCx to 12>> <<set $PCy to 13>> <<set $PCz to 14>> <<set $PCxp to 15>> <<set $PClevel to 16>> <<set $PCclass to 17>> <<set $PCmaxinven to 18>> <<set $PCinven to 19>> <<set $PCmorph to 20>> <<set $PCbp to 21>> <<set $PCac to 22>> <<set $PCabsorb to 23>> <<set $PCtohit to 24>> <<set $PCperks to 25>> <<set $PChornycur to 26>> <<set $PChornymax to 27>> <<set $PChunger to 28>> <<set $PCsexACTS to 29>> <<set $PCmisc to 30>> <<set $PCspellbook to 31>> <<set $PClocation to 32>> <<set $PCavatar to 33>> <<set $PCunspentPoints to 34>> <<set $PCpregnant to 35>> <<set $PCfx to 36>> <<set $PCfy to 37>> <<set $PCfz to 38>> <<set $PCmanacur to 39>> <<set $PCmanamax to 40>> <<set $PChtze to 41>> <<set $PChfze to 42>> <<set $PCkills to 43>> <<set $PCchurchstate to 44>> <<set $PCancestor to 45>> <<set $PCancestraldeath to 46>> <<set $PCretirementcap to 47>> <<set $PCicon to 48>> <<set $PCSeleneChat to 49>> <<set $PCmorphQTY to 50>> <<set $PCmorphBONI to 51>> <<set $PCGerardChat to 52>> <<set $PCeffects to 53>> <<set $PCSmithDemonChat to 54>> <<set $PCSkittersChat to 55>> <<set $PCBoltmanChat to 56>> <<set $PCDaphneChat to 57>> <<set $PCdx to 58>>\ <<set $PCdy to 59>>\ <<set $PCdz to 60>>\ <<set $PChdze to 61>> <<set $PCFlirtFromEquip to 62>> <<set $BPhead to 100>> <<set $BPneck to 101>> <<set $BPback to 102>> <<set $BPchest to 103>> <<set $BPwield to 104>> <<set $BPhands to 105>> <<set $BPring to 106>> <<set $BPwaist to 107>> <<set $BPlegs to 108>> <<set $BPfeet to 109>> <<set $BPtail to 110>> <<set $BPhorn to 111>> <<set $BPwings to 112>> <<set $BPpenis to 113>> <<set $BPboobs to 114>> <<set $BPpussy to 115>> <<set $BPtentacle to 116>> <<set $BPstinger to 117>> <<set $BPpincer to 118>> <<set $PC[0][$PCstate] to "none">>\ <<set $PC[1][$PCstate] to "none">> <<set $PC[2][$PCstate] to "none">> <<InitPC 0>> <<set $ItemPoke to {}>> <<set $MiscPoke to 0>> <<set $RETIREES to []>> <<for _i to 0; _i < 10; _i++>> <<set $RETIREES[_i] to { name: "none", gen: 0, level: 0, class: "none", gold: 0, maxforest: 0, maxtower: 0, year: 0, day: 0, won: 0, death: "" }>> <</for>>\ <<ResetWorld>> <<set $GameState to "menu">> <<set $RoomPTR to "none">> <<set $AllowNav to true>> <<set $ReturnFromMenu to "Preamble">> <<set $DisableMenu to false>> <<set $ForestMap to []>>\ <<set $DesertMap to []>>\ <<set $Dungeon to []>> set $Achievements to [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]>> <<set $Achievements to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]>> ----------------- <<set $GameLog to "">> <<set $ComLog to []>> <<for _i to 0; _i < 16; _i++>> <<set $ComLog[_i] to "">> <</for>>\ ----------------- <<set $ForceMon to ["random","random", 0]>> <<set $Mon to {}>> <<set $RCHelper to "">> <<set $LogKills to 0>> <<set $poisoned to 0>> <<if recall('EXISTS') is true>>\ <<AutoSaveLoad "get">> <<else>>\ <!-- first play, nothing to get --> <<endif>>\ ************* *** Music *** ************* <<set _a to _musicpath + "menu.mp3">> <<set _b to _musicpath + "town.mp3">> <<set _c to _musicpath + "explore.mp3">> <<set _d to _musicpath + "combat.mp3">> <<set _e to _musicpath + "boss.mp3">> <<cacheaudio "menu_bgm" _a>> <<cacheaudio "town_bgm" _b>> <<cacheaudio "explore_bgm" _c>> <<cacheaudio "combat_bgm" _d>> <<cacheaudio "boss_bgm" _e>> <<createaudiogroup ":ui">> <<track "menu_bgm">> <<track "town_bgm">> <<track "explore_bgm">> <<track "combat_bgm">> <<track "boss_bgm">> <</createaudiogroup>> ***************** *** End Music *** *****************<<set _throwaway to setup.HideElement("menu-item-saves")>>\ <<set _throwaway to setup.HideElement("menu-item-settings")>>\ \ <<if $GameState is "menu">>\ <!-- MENU STATE -->\ @@color:Gold;Tower of Triumph@@ <<print $WORLD.GameVersion>> <hr>\ <a href="https://subscribestar.adult/arcdragon" target="_blank" rel="noopener noreferrer">SubscribeStar</a> <a href="https://arcdragon.com" target="_blank" rel="noopener noreferrer">arcdragon.com</a> <a href="https://arcdragon.com/forum" target="_blank" rel="noopener noreferrer">Discussion Forums</a> <a href="https://arcdragon.com/toweroftriumph/versions/" target="_blank" rel="noopener noreferrer">Download prior versions</a> <a href="https://arcdragon.com/forum/viewtopic.php?t=8" target="_blank" rel="noopener noreferrer">Discussion for this update</a> @@color:Yellow;New!@@ <a href="https://discord.gg/AvbCAFKfzY" target="_blank" rel="noopener noreferrer">Discord</a> <hr>\ <<link "Change Log">> <<script>> Dialog.setup("Change Log"); Dialog.wiki(Story.get("ChangeLog").processText()); Dialog.open(); <</script>> <</link>> <hr>\ <<link "Save to Disk">>\ <<set _throwaway to setup.ExportSave()>> <</link>> <<link "Load From Disk">> <<script>> jQuery(document.createElement('input')) .prop('type', 'file') .on('change', Save.import) .trigger('click'); <</script>> <</link>> <hr>\ \ <<elseif ($GameState is "dungeon") or ($GameState is "forest") or ($GameState is "desert") or ($GameState is "combat") or ($GameState is "main")>>\ @@color:Gold;Tower of Triumph@@ <<set _throwaway to setup.ShowElement("menu-item-restart")>>\ <!-- ADVENTURE STATE -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _p to $AvatarPath + $PC[$CC][$PCavatar][0] + $PC[$CC][$PCavatar][1] +".png">>\ <span id="CapAvatar"><img @src="_p" style="width:200px"></span> @@color:Green;<<print $PC[$CC][$PCname]>>@@ <<if $PC[$CC][$PCsex] is "male">>\ @@color:DeepSkyBlue;Male <<print $PC[$CC][$PCmorph]>>@@ <<elseif $PC[$CC][$PCsex] is "female">>\ @@color:Pink;Female <<print $PC[$CC][$PCmorph]>>@@ <<else>>\ @@color:DarkOrchid;<<print $PC[$CC][$PCsex].toUpperFirst()>> <<print $PC[$CC][$PCmorph]>>@@ <<endif>>\ <hr>\ \ \ \ @@color:LightGreen;Health@@: <span id ="caphealth"><<print $PC[$CC][$PChpcur]>>/<<print $PC[$CC][$PChpmax]>></span> <div id="hpbarbkg" class="hzbarbkg"><div id="hpbar" class="hzbar"></div></div>\ <<script>>$(document).one(':passagerender', function (ev) { Health2(100, 100, "hpbar", true, ev.content);});<</script>>\ <<run Health2($PC[$CC][$PChpcur], $PC[$CC][$PChpmax], "hpbar", true)>>\ \ @@color:LightGreen;Mana@@: <span id ="capmana"><<print $PC[$CC][$PCmanacur]>>/<<print $PC[$CC][$PCmanamax]>></span> <div id="manabarbkg" class="hzbarbkg"><div id="manabar" class="hzbar"></div></div>\ <<script>>$(document).one(':passagerender', function (ev) { Health2(100, 100, "manabar", true, ev.content);});<</script>>\ <<run Health2($PC[$CC][$PCmanacur], $PC[$CC][$PCmanamax], "manabar", true)>>\ \ @@color:LightGreen;Arousal@@: <span id ="caphorny"><<print $PC[$CC][$PChornycur]>>/<<print $PC[$CC][$PChornymax]>></span> <div id="hornybarbkg" class="hzbarbkg"><div id="hornybar" class="hzbar"></div></div>\ <<script>>$(document).one(':passagerender', function (ev) { Health2(100, 100, "hornybar", true, ev.content);});<</script>>\ <<run Health2($PC[$CC][$PChornycur], $PC[$CC][$PChornymax], "hornybar", true)>>\ \ <span id="capstaminatext"><<if $PC[$CC][$PChunger] < 2>>@@color:Red;EXHAUSTED <<elseif $PC[$CC][$PChunger] < 100>>@@color:Yellow;Tired <<else>>@@color:LightGreen;Stamina@@ <<endif>></span>\ <div id="hungerbarbkg" class="hzbarbkg"><div id="hungerbar" class="hzbar"></div></div>\ <<script>>$(document).one(':passagerender', function (ev) { Health2(100, 100, "hungerbar", true, ev.content);});<</script>>\ <<run Health2($PC[$CC][$PChunger], 500, "hungerbar", true)>>\ \ @@color:LightGreen;Coins@@: <span id="capcoins"><<print $PC[$CC][$PCcoins]>></span> <span id="capinvwarning"></span> <span id="time"><<ShowTime>></span> <span id="capdebuginfo"></span>\ <<link "Stats">> <<script>> Dialog.setup("Character statistics"); Dialog.wiki(Story.get("ViewStats").processText()); Dialog.open(); <</script>> <</link>> <<link "Inventory">> <<script>> Dialog.setup("Inventory"); Dialog.wiki(Story.get("Inventory").processText()); Dialog.open(); <</script>> <</link>> <<link "Examine self">> <<script>> Dialog.setup("Body"); Dialog.wiki(Story.get("Body").processText()); Dialog.open(); <</script>> <</link>> <<link "Spellbook">> <<script>> Dialog.setup("Spellbook"); Dialog.wiki(Story.get("Spellbook").processText()); Dialog.open(); <</script>> <</link>> <<else>>\ caption state??? <<endif>>\ \ <!-- ALWAYS SHOW -->\ <<link "Unlockables">> <<script>> Dialog.setup("Unlockables"); Dialog.wiki(Story.get("Unlocks").processText()); Dialog.open(); <</script>> <</link>> <<link "Help">> <<script>> Dialog.setup("Help"); Dialog.wiki(Story.get("Help").processText()); Dialog.open(); <</script>> <</link>> <hr>\ <span id="capeffects"></span>\ <<set _Pass to passage()>>\ <<if ($GameState is "combat")>>\ Cannot save during combat <hr>\ <<elseif (_Pass is "Intro") or (_Pass is "Preamble") or (_Pass is "CharGen")>>\ <<else>>\ <<link "Save and exit to menu" "Preamble">><<AutoSaveLoad "set">><</link>> <hr>\ <<endif>>\ <<if $WORLD.MusicEnabled is true>>\ Volume: <<volume>>\ <<endif>>\ \ <<if $DebugMode is true>>\ <!-- DEBUG ONLY -->\ <hr>\ <<link "View Error Log">> <<script>> Dialog.setup("Error log"); Dialog.wiki(Story.get("ViewLog").processText()); Dialog.open(); <</script>> <</link>> <<link "Toggle Debug">> <<if $DebugMode is false>> <<set $DebugMode to true>> <<else>> <<set $DebugMode to false>> <<endif>>\ <<replace "#capdebugmode">>$DebugMode<</replace>> <</link>> <span id="capdebugmode"></span> <<link "Map Dungeon">> <<for _ii to 0; _ii < 14; _ii++>>\ <<for _jj to 0; _jj < 7; _jj++>>\ <<set $Dungeon[$PC[$CC][$PCz]][_ii][_jj][15] to 1>>\ <</for>>\ <</for>>\ <<set _throwaway to setup.DrawMap64(_px, _py, _pz, 64)>>\ <</link>> <<link "Gain Levels">> <<set $PC[$CC][$PClevel] to 6>> <<set $PC[$CC][$PCxp] to 6000>> <</link>> <<link "Gain 10 XP">> <<set $PC[$CC][$PCxp] to $PC[$CC][$PCxp] +10>> <</link>> <<link "Wizard">>\ set $PC[$CC][$PCstr] to 200 <<set $PC[$CC][$PCdex] to 100>> <<set $PC[$CC][$PCcon] to 100>> <<set $PC[$CC][$PCcoins] to 100000>> <<set $PC[$CC][$PChpcur] to 1>>\ <<set $PC[$CC][$PChpmax] to 1000>>\ <<set $PC[$CC][$PCmanacur] to 1000>>\ <<set $PC[$CC][$PCmanamax] to 1000>>\ <<ShowHealth>> <</link>> <<link "Learn all spells">> <<set $PC[$CC][$PCspellbook].any to true>>\ <<set $PC[$CC][$PCspellbook].firebolt to 1>>\ <<set $PC[$CC][$PCspellbook].armor to 1>>\ <<set $PC[$CC][$PCspellbook].heal to 1>>\ <<set $PC[$CC][$PCspellbook].poison to 1>>\ <<set $PC[$CC][$PCspellbook].up to 1>>\ <<set $PC[$CC][$PCspellbook].down to 1>>\ <<set $PC[$CC][$PCspellbook].portal to 1>>\ <<set $PC[$CC][$PCspellbook].light to 1>>\ <<set $PC[$CC][$PCspellbook].map to 1>>\ <<set $PC[$CC][$PCspellbook].soultrap to 1>>\ <<set $PC[$CC][$PCspellbook].q to "firebolt">>\ <<set $PC[$CC][$PCspellbook].w to "heal">>\ <<set$PC[$CC][$PCspellbook].e to "poison">>\ <</link>> <<link "Restock stores">> <<Restock "all">>\ <</link>> <<link "Transform">>\ <<set $PC[$CC][$PCbp][10].morph to "horse">>\ <<set $PC[$CC][$PCbp][10].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][10].attackdesc to "kick">>\ <<set $PC[$CC][$PCbp][10].mindam to 1>>\ <<set $PC[$CC][$PCbp][10].maxdam to 6>>\ <<set $PC[$CC][$PCbp][4].morph to "cat">>\ <<set $PC[$CC][$PCbp][4].attacktype to "cut">>\ <<set $PC[$CC][$PCbp][4].attackdesc to "claw">>\ <<set $PC[$CC][$PCbp][4].mindam to 1>>\ <<set $PC[$CC][$PCbp][4].maxdam to 6>>\ <<set $PC[$CC][$PCbp][0].morph to "spider">>\ <<set $PC[$CC][$PCbp][0].attacktype to "poison bite">>\ <<set $PC[$CC][$PCbp][0].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][0].mindam to 1>>\ <<set $PC[$CC][$PCbp][0].maxdam to 1>>\ <</link>> <<link "AddBodyPart">>\ <<set _foo to setup.AddBodyPart($CC, $BPchest)>> <</link>> <<link "Tails">>\ <<set _Anatomy to []>>\ <<set _Anatomy[0] to { type: $BPtail, morph: "cat" }>>\ <<set _Anatomy[1] to { type: $BPtail, morph: "cat" }>>\ <<DoTransform _Anatomy>> <</link>> <<link "GainAxe">> <<set _ads to setup.addtoinven([220,107,0,0])>><!-- hatchet --> <</link>> <<endif>> <<if $GameState neq "menu">>\ <<link "I'm stuck!">> <<set $DisableMenu to true>>\ <<set $Glinda to 0>> <<script>> Dialog.setup("Rescue"); Dialog.wiki(Story.get("Rescue").processText()); Dialog.open(); <</script>> <</link>>\ <<StandardKeyboardShortcuts>>\ <<endif>>\ <<InitPC $CC>>\ <<set _availperks to 1>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCretirementcap]>>\ <<if setup.AchievementHandler("Jack of All Stats", "HAS?", -1)>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] + 1>>\ <<endif>>\ <<set _MaxSpread to 8>>\ <<if setup.AchievementHandler("Guildmaster", "HAS?", -1)>>\ <<set _MaxSpread to _MaxSpread +1>>\ <<endif>>\ <<if setup.AchievementHandler("Gamemaster", "HAS?", -1)>>\ <<set _MaxSpread to _MaxSpread +1>>\ <<endif>>\ <<if setup.AchievementHandler("Potionmaster", "HAS?", -1)>>\ <<set _MaxSpread to _MaxSpread +1>>\ <<endif>>\ <<if setup.AchievementHandler("Metal master", "HAS?", -1)>>\ <<set _MaxSpread to _MaxSpread +1>>\ <<endif>>\ \ <<set $PC[$CC][$PCsex] to either("male","female")>>\ <<set $PC[$CC][$PCname] to setup.GenName($PC[$CC][$PCsex])>>\ \ <<set _statnames to ["Strength","Dexterity","Toughness","Intellect","Willpower"]>>\ @@color:LightGreen;Name:@@ <<textbox "$PC[$CC][$PCname]" $PC[$CC][$PCname]>> <<button "[Random]">>\ <<set $PC[$CC][$PCname] to setup.GenName($PC[$CC][$PCsex])>>\ <<set _throwaway to setup.updatenametextbox()>>\ <</button>> &nbsp;&nbsp;|&nbsp;&nbsp; \ \ <<set _AllowHerm to false>>\ <<if setup.AchievementHandler("Playing both sides", "HAS?", -1) > 0>>>\ <<set _AllowHerm to true>>\ <<endif>>\ \ @@color:LightGreen;Sex:@@ <span id ="sex"><<print $PC[$CC][$PCsex].toUpperFirst()>></span> \ <<button "[Male]">>\ <<replace "#sex">>Male<</replace>>\ <<set $PC[$CC][$PCsex] to "male">>\ <</button>> \ <<button "[Female]">>\ <<replace "#sex">>Female<</replace>>\ <<set $PC[$CC][$PCsex] to "female">>\ <</button>> \ <<if _AllowHerm is true>>\ <<button "[Hermaphrodite]">>\ <<replace "#sex">>Hermaphrodite<</replace>>\ <<set $PC[$CC][$PCsex] to "hermaphrodite">>\ <</button>> <<endif>> &nbsp;&nbsp;|&nbsp;&nbsp; @@color:LightGreen;Generation:@@ <<print $PC[$CC][$PCgen]>>\ \ <<if $PC[$CC][$PCsex] is "male">>\ <<set $PC[$CC][$PCavatar] to ["Human", random(100,103)]>>\ <<set _p to $ImgPath + $PC[$CC][$PCavatar][0] + $PC[$CC][$PCavatar][1] + ".png">>\ <<set $PC[$CC][$PCicon] to random(4,6)>>\ <<elseif $PC[$CC][$PCsex] is "female">>\ <<set $PC[$CC][$PCavatar] to ["Human", random(104,107)]>>\ <<set _p to $ImgPath + $PC[$CC][$PCavatar][0] + $PC[$CC][$PCavatar][1] + ".png">>\ <<set $PC[$CC][$PCicon] to random(1,3)>>\ <<else>>\ <<set $PC[$CC][$PCavatar] to ["Human", random(100,107)]>>\ <<set _p to $ImgPath + $PC[$CC][$PCavatar][0] + $PC[$CC][$PCavatar][1] + ".png">>\ <<set $PC[$CC][$PCicon] to random(0,7)>>\ <<endif>>\ <table><tr><td>\ <span id="CharGenICONS"><<CharGenShowIcons>></span>\ @@color:Gold;Choose a map avatar@@ @@color:Gold;and character portrait@@\ </td><td>\ <span id="CharGenAVATARS"><<CharGenShowAvatars>></span>\ </td></tr></table><hr>\ \ @@color:Yellow;Attribute points available@@: <span id="avail"><<print $PC[$CC][$PCunspentPoints]>></span>, @@color:Yellow;Maximum spread:@@ _MaxSpread <<if $PC[$CC][$PCgen] is 1>>(Tip: You can subtract points to spend them elsewhere!)<<endif>> <<for _i to 7; _i < 12; _i++>>\ <<capture _i>>\ <<button "[-]">>\ <<set _StatBlock to [$PC[$CC][$PCstr], $PC[$CC][$PCdex], $PC[$CC][$PCcon], $PC[$CC][$PCint], $PC[$CC][$PCwil]]>>\ <<set _lowest to setup.LowestIn(_StatBlock)>>\ <<set _highest to setup.HighestIn(_StatBlock)>>\ <<set _MinAllow to _highest - _MaxSpread>>\ <<set _MaxAllow to _lowest + _MaxSpread>>\ <<if _MinAllow < 1>>\ <<set _MinAllow to 1>>\ <<endif>>\ \ <<set _bar to "#" + "stat_" + _i>>\ <<if ($PC[$CC][_i] > _MinAllow)>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] + 1>>\ <<set $PC[$CC][_i] to $PC[$CC][_i] - 1>>\ <<endif>>\ <<replace "#avail">>\ <<print $PC[$CC][$PCunspentPoints]>>\ <</replace>>\ <<replace _bar>>\ <<print $PC[$CC][_i]>>\ <</replace>>\ <<set _descstat to "#descstat" + _i>>\ <<replace _descstat>>\ <<DescribeStat _i>>\ <</replace>>\ <</button>> \ <<button "[+]">>\ <<set _StatBlock to [$PC[$CC][$PCstr], $PC[$CC][$PCdex], $PC[$CC][$PCcon], $PC[$CC][$PCint], $PC[$CC][$PCwil]]>>\ <<set _lowest to setup.LowestIn(_StatBlock)>>\ <<set _highest to setup.HighestIn(_StatBlock)>>\ <<set _MinAllow to _highest - _MaxSpread>>\ <<set _MaxAllow to _lowest + _MaxSpread>>\ \ <<set _bar to "#" + "stat_" + _i>>\ <<if ($PC[$CC][$PCunspentPoints] > 0) and ($PC[$CC][_i] < _MaxAllow)>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][_i] to $PC[$CC][_i] + 1>>\ <<endif>>\ <<replace "#avail">>\ <<print $PC[$CC][$PCunspentPoints]>>\ <</replace>>\ <<replace _bar>>\ <<print $PC[$CC][_i]>>\ <</replace>>\ <<set _descstat to "#descstat" + _i>>\ <<replace _descstat>>\ <<DescribeStat _i>>\ <</replace>>\ <</button>> \ <<set _foo to "stat_" + _i>>\ <span @id =_foo><<print $PC[$CC][_i]>></span> | \ <<print _statnames[_i -7]>> \ <<set _descstat to "descstat" + _i>>\ (<span @id="_descstat"><<DescribeStat _i>></span>)\ <</capture>>\ <br>\ <</for>>\ <hr> <<set $PC[$CC][$PCclass] to 0>>\ \ <<set _classes to []>>\ <<set _classes[0] to {allow: true, name: "Peasant",show: "An unremarkable nobody from the lower class, with no particular skills or abilities. Starts with a pitchfork and ambition.",hint: "",spoil: "You start as this"}>>\ <<set _classes[1] to {allow: false, name: "Lumberjack",show: "Good with an axe, which conveniently they start with.",hint: "",spoil: "Complete a construction project"}>>\ <<set _classes[2] to {allow: false, name: "Prostitute",show: "Good at seduction. Starts with stripper gear.",hint: "",spoil: "Win 5 victories by flirting"}>>\ <<set _classes[3] to {allow: false, name: "Warrior",show: "To-hit bonuses with weapons. Starts with a weapon, armor, and shield.",hint: "",spoil: "Hit for 20+ damage with a weapon"}>>\ <<set _classes[4] to {allow: false, name: "Scholar",show: "Levels quickly.",hint: "",spoil: "Learn any spell"}>>\ <<set _classes[5] to {allow: false, name: "Priest",show: "Extra healing. Holy symbols are twice as effective. Starts with a holy symbol and Heal.",hint: "",spoil: "Accumulate 100 total spell healing"}>>\ <<set _classes[6] to {allow: false, name: "Rogue",show: "Talented against locks and traps, and can evade special attacks.",hint: "",spoil: "Succesfully avoid 3 traps in one life."}>>\ <<set _classes[7] to {allow: false, name: "Mage",show: "Lots of mana. Starts with firebolt.",hint: "",spoil: "Know every spell at once"}>>\ <<set _classes[8] to {allow: false, name: "Barbarian",show: "Bonuses to unarmed combat, plus damage absorbtion.",hint: "",spoil: "Defeat a tower monster while naked"}>>\ <<set _classes[9] to {allow: false, name: "Monk",show: "Dodges attacks when unarmored.",hint: "",spoil: "Defeat a tower monster with empty hands"}>>\ <<set _classes[10] to {allow: false, name: "Ninja",show: "Chance to critical strike with weapons. Starts with ninja uniform and sword.",hint: "",spoil: "As a rogue, one-shot a tower monster before it can attack."}>>\ <<set _classes[11] to {allow: false, name: "Paladin",show: "Immune to transformation. Starts with heal, light, holy symbol, weapon, armor, and shield. ",hint: "",spoil: "Reach level 7 while still a virgin, having previously reached level 7 as both warrior and priest."}>>\ <<set _classes[12] to {allow: false, name: "Guardian",show: "Very durable. Starts with heavy armor",hint: "",spoil: "Reach 200 maximum health"}>>\ \ <!-- assemble list of all? perks -->\ <<set _CharGenPerkList to []>>\ <<set _AllowThatPerk to []>>\ <<set _AllowThatPerk[0] to true>>\ <<set _PerksSelectedDuringGen to []>>\ <<set _CharGenPerkList[0] to { name: "Starter", does: "Start with some slightly better gear", type: "perk", show: "y", hint: "You start with this", clue: "You start with this", spoil: "You start with this", id: 0 }>>\ <<set _ArrayPos to 1>>\ \ <<set _MOO to setup.AchievementHandler(-1, "FETCH ALL DATA", -1)>>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].type is "class">>\ <<for _j to 1; _j < _classes.length; _j++>>\ <<if _classes[_j].name is _MOO[_i].name>>\ <<if $Achievements[_i] > 0>>\ <<set _classes[_j].allow to true>>\ <<endif>>\ <<endif>>\ <</for>>\ <<elseif _MOO[_i].type is "perkpoints">>\ <<if $Achievements[_i] > 0>>\ <<set _availperks to _availperks +1>>\ <<endif>>\ <<elseif _MOO[_i].type is "perk">>\ <<set _CharGenPerkList[_ArrayPos] to _MOO[_i]>>\ <<if $Achievements[_i] is 1>>\ <<set _AllowThatPerk[_ArrayPos] to true>>\ <<else>>\ <<set _AllowThatPerk[_ArrayPos] to false>>\ <<endif>>\ <<set _PerksSelectedDuringGen[_ArrayPos] to false>>\ <<set _ArrayPos to _ArrayPos +1>>\ <<endif>>\ <</for>>\ \ <<button "[Class info]">>\ <<script>> Dialog.setup("Class info"); Dialog.wiki('<<ShowHelpClasses>>'); Dialog.open(); <</script>> <</button>> @@color:Gold;Character class@@: <span id="charclass">None</span> <span id="classdesc">You are an unremarkable nobody from the lower class, with no particular learned skills or abilities.</span> <<for _i to 0; _i < _classes.length; _i++>>\ <<if _classes[_i].allow is true>>\ <<capture _i>>\ <<set _btext to "[" + _classes[_i].name + "]">>\ <<set _spanid to "class" + _i>>\ <span @id="_spanid">\ <<button _btext>> <<set _UnmarkThisButton to "class" + $PC[$CC][$PCclass]>> <<set _asd to setup.ChangeButtonClass(_UnmarkThisButton,"blueb")>> <<set $PC[$CC][$PCclass] to _i>>\ <<set _BlueThisButton to "class" + $PC[$CC][$PCclass]>> <<set _asd to setup.ChangeButtonClass(_BlueThisButton,"highlightb")>> <<replace "#charclass">><<print _classes[_i].name>><</replace>>\ <<replace "#classdesc">><<print _classes[_i].show>><</replace>>\ <<replace "#hint">>@@color:LightGreen;Unlocked by:@@ <<print _classes[_i].spoil>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<else>>\ <<if (_classes[_i].name is "Paladin") or (_classes[_i].name is "Ninja")>>\ <<else>>\ <<capture _i>>\ <<set _btext to "[" + _classes[_i].name + "]">>\ <<set _spanid to "class" + _i>>\ <span class="grayb" @id="_bspanid">\ <<button "_btext">> <<replace "#hint">>@@color:LightGreen;To unlock:@@ <<print _classes[_i].spoil>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<endif>>\ <<endif>>\ <</for>> <span id ="hint"><br></span>\ \ <hr>\ \ @@color:Yellow;Perks@@: <span id="availperks">_availperks</span> <span id="perkdesc"><br></span>\ <!-- display perk list from above-->\ <<for _i to 0; _i < _CharGenPerkList.length; _i++>>\ <<if (_AllowThatPerk[_i] is true) and (_CharGenPerkList[_i].show is "y")>>\ <<capture _i>>\ <<set _btext to "[" + _CharGenPerkList[_i].name + "]">>\ <<set _spanid to "perk" + _i>>\ <span @id="_spanid">\ <<button _btext>> <<set _bID to "perk" + _i>>\ <<if _PerksSelectedDuringGen[_i] is true>> <<set _PerksSelectedDuringGen[_i] to false>>\ <<set _availperks to _availperks +1>>\ <<replace "#perkdesc">><br><</replace>>\ <<replace "#perkhint">><br><</replace>>\ <<set _asd to setup.ChangeButtonClass(_bID, "blueb")>>\ <<elseif _availperks < 1>> <<replace "#perkhint">>You don't have any perk points left<</replace>>\ <<else>> <<set _PerksSelectedDuringGen[_i] to true>>\ <<set _availperks to _availperks -1>> <<replace "#perkdesc">><<print _CharGenPerkList[_i].does>><br><</replace>>\ <<replace "#perkhint">>@@color:LightGreen;Unlocked by:@@ <<print _CharGenPerkList[_i].spoil>><</replace>>\ <<set _asd to setup.ChangeButtonClass(_bID, "highlightb")>> <<endif>> <<replace "#availperks">>_availperks<</replace>>\ <</button>> \ </span>\ <</capture>>\ <<else>>\ <<if _CharGenPerkList[_i].show is "y">>\ <<capture _i>>\ <span class="grayb">\ <<set _btext to "[" + _CharGenPerkList[_i].name + "]">>\ <<button _btext>> <<replace "#perkhint">>@@color:LightGreen;Unlocked by:@@ <<print _CharGenPerkList[_i].spoil>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<endif>>\ <<endif>>\ <</for>>\ <br>\ <span id="perkhint"><br></span>\ <hr>\ <span id="KeypOne">\ <<link "1) Save and continue" "Preamble">> <<set $PC[$CC][$PCperks] to []>> <<set _PutItWhere to 0>>\ <<for _i to 0; _i < _PerksSelectedDuringGen.length; _i++>> <<if _PerksSelectedDuringGen[_i] is true>> <<set $PC[$CC][$PCperks][_PutItWhere] to _CharGenPerkList[_i].name>> <<set _PutItWhere to _PutItWhere +1>> <<endif>>\ <</for>> <!-- sexes --> <<if $PC[$CC][$PCsex] is "male">> <<set _nextbp to setup.getnextbodypart()>>\ <<set _penis to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPpenis, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _penis, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<elseif $PC[$CC][$PCsex] is "female">> <<set _boobs to $PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _boobs to _boobs * 10>> <<set _pussy to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _nextbp to setup.getnextbodypart()>>\ <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPboobs, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: _boobs, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][_nextbp+1] to { type: $BPpussy, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: _pussy, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<else>>\ <<set _nextbp to setup.getnextbodypart()>>\ <<set _penis to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _boobs to 20+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _boobs to _boobs * 100>> <<set _pussy to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _nextbp to setup.getnextbodypart()>>\ <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPpenis, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _penis, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][_nextbp+1] to { type: $BPboobs, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _boobs, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][_nextbp+2] to { type: $BPpussy, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _pussy, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<endif>> <<set $PC[$CC][$PCunspentPoints] to 0>> <<if setup.PlayerHasPerk("Genetic Lottery") is true>>\ <<set $PC[$CC][$PCunspentPoints] to 2>> <<endif>>\ <!-- perms -->\ <<if setup.AchievementHandler("Starve to death", "HAS?", -1) > 0>>>\ <<set _ads to setup.addtoinven([141,0,1,0])>><!-- cheese --> <<endif>>\ <!-- perks --> <<if setup.PlayerHasPerk("Starter") is true>> <!-- starter perk --> <<set _ads to setup.addtoinven([134,0,1,0])>><!-- apple --> <<set _ads to setup.addtoinven([231,160,0,0])>><!-- spear --> <<set _ads to setup.addtoinven([240,160,0,0])>><!-- small shield --> <<endif>>\ <<if setup.PlayerHasPerk("Explorer") is true>> <<set $PC[$CC][$PCspellbook].light to 1>> <<set $PC[$CC][$PCspellbook].any to true>> <<endif>>\ <!-- classes --> <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>> <<if _job is "peasant">>\ <<set _ads to setup.addtoinven([250,160,0,0])>><!-- pitchfork --> <<if $PC[$CC][$PCsex] is "male">> <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([303,160,0,0])>><!-- pants --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<elseif $PC[$CC][$PCsex] is "female">> <<set _ads to setup.addtoinven([301,160,0,0])>><!-- blouse --> <<set _ads to setup.addtoinven([304,160,0,0])>><!-- skirt --> <<set _ads to setup.addtoinven([306,160,0,0])>><!-- boots --> <<else>>\ <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([304,160,0,0])>><!-- skirt --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<endif>>\ <<elseif _job is "lumberjack">>\ <<set _ads to setup.addtoinven([220,160,0,0])>><!-- hatchet --> <<if $PC[$CC][$PCsex] is "male">> <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([303,160,0,0])>><!-- pants --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<elseif $PC[$CC][$PCsex] is "female">> <<set _ads to setup.addtoinven([301,160,0,0])>><!-- blouse --> <<set _ads to setup.addtoinven([304,160,0,0])>><!-- skirt --> <<set _ads to setup.addtoinven([306,160,0,0])>><!-- boots --> <<else>>\ <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([304,160,0,0])>><!-- skirt --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<endif>>\ <<elseif _job is "prostitute">>\ <<if $PC[$CC][$PCsex] is "male">> <<set _ads to setup.addtoinven([314,160,0,0])>><!-- g-string --> <<set _ads to setup.addtoinven([315,160,0,0])>><!-- nipple stickers --> <<set _ads to setup.addtoinven([125,160,1,0])>><!-- penis growth --> <<elseif $PC[$CC][$PCsex] is "female">> <<set _ads to setup.addtoinven([314,160,0,0])>><!-- g-string --> <<set _ads to setup.addtoinven([315,160,0,0])>><!-- nipple stickers --> <<set _ads to setup.addtoinven([316,160,0,0])>><!-- high heels --> <<set _ads to setup.addtoinven([127,160,1,0])>><!-- breast growth --> <<else>>\ <<set _ads to setup.addtoinven([314,160,0,0])>><!-- g-string --> <<set _ads to setup.addtoinven([315,160,0,0])>><!-- nipple stickers --> <<set _ads to setup.addtoinven([316,160,0,0])>><!-- high heels --> <<set _ads to setup.addtoinven([125,160,1,0])>><!-- penis growth --> <<set _ads to setup.addtoinven([127,160,1,0])>><!-- breast growth --> <<endif>>\ <<elseif _job is "warrior">>\ <<set _ads to setup.addtoinven([212,160,0,0])>><!-- claymore --> <<set _ads to setup.addtoinven([241,160,0,0])>><!-- medium shield --> <<set _ads to setup.addtoinven([352,160,0,0])>><!-- hauberk --> <<elseif _job is "scholar">>\ <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([303,160,0,0])>><!-- pants --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<elseif _job is "priest">>\ <<set _ads to setup.addtoinven([104,160,0,0])>><!-- holy symbol --> <<set _ads to setup.addtoinven([317,160,0,0])>><!-- priest robes --> <<set $PC[$CC][$PCspellbook].heal to 1>> <<set $PC[$CC][$PCspellbook].q to "heal">> <<set $PC[$CC][$PCspellbook].any to true>> <<elseif _job is "rogue">>\ <<set _ads to setup.addtoinven([300,160,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([303,160,0,0])>><!-- pants --> <<set _ads to setup.addtoinven([305,160,0,0])>><!-- shoes --> <<set _ads to setup.addtoinven([115,160,3,0])>><!-- lockpicks --> <<elseif _job is "mage">>\ <<set $PC[$CC][$PCspellbook].firebolt to 1>> <<set $PC[$CC][$PCspellbook].q to "firebolt">> <<set $PC[$CC][$PCspellbook].any to true>> <<elseif _job is "barbarian">>\ <<set _foo to setup.additemtoinv($CC, [102, 0, 2, 101, true])>> <<set _foo to setup.additemtoinv($CC, [102, 0, 2, 102, true])>> <<set _foo to setup.additemtoinv($CC, [102, 0, 2, 103, true])>> <<elseif _job is "monk">>\ <<set $PC[$CC][$PCcoins] to 0>> <<elseif _job is "ninja">>\ <<set _ads to setup.addtoinven([252,160,0,0])>><!-- katana --> <<set _ads to setup.addtoinven([319,160,0,0])>><!-- ninja uniform --> <<set _ads to setup.addtoinven([320,160,0,0])>><!-- ninja cowl --> <<set _ads to setup.addtoinven([321,160,0,0])>><!-- ninja pants --> <<set _ads to setup.addtoinven([322,160,0,0])>><!-- black belt --> <<set _ads to setup.addtoinven([323,160,0,0])>><!-- tabi --> <<elseif _job is "paladin">>\ <<set $PC[$CC][$PCwil] to $PC[$CC][$PCwil] +2>> <<set _ads to setup.addtoinven([104,160,0,0])>><!-- holy symbol --> <<set _ads to setup.addtoinven([202,160,0,0])>><!-- warhammer --> <<set _ads to setup.addtoinven([211,160,0,0])>><!-- tower shield --> <<set _ads to setup.addtoinven([352,160,0,0])>><!-- hauberk --> <<set $PC[$CC][$PCspellbook].heal to 1>> <<set $PC[$CC][$PCspellbook].light to 1>> <<set $PC[$CC][$PCspellbook].q to "heal">> <<set $PC[$CC][$PCspellbook].any to true>> <<elseif _job is "guardian">>\ <<set _ads to setup.addtoinven([211,160,0,0])>><!-- tower shield --> <<set _ads to setup.addtoinven([352,160,0,0])>><!-- hauberk --> <<set _ads to setup.addtoinven([311,160,0,0])>><!-- heavy helm --> <<set _ads to setup.addtoinven([353,160,0,0])>><!-- leggings --> <<set $PC[$CC][$PCspellbook].any to true>> <<set $PC[$CC][$PCspellbook].armor to 1>> <<set $PC[$CC][$PCspellbook].q to "armor">> <<endif>>\ <<set $PC[$CC][$PCstate] to "alive">> <<Recalc>> <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>> <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanamax]>> <<set $PC[$CC][$PChornymax] to $PC[$CC][$PCwil] * 10>>\ <<set _th to $PC[$CC][$PCdex] - 10>>\ <<set $PC[$CC][$PCtohit] to _th * 5>> <<set _ScholarHack to setup.AchievementHandler("Best Scholar", "HAS?", -1)>>\ <<if _ScholarHack > 9>>\ <<set $PC[$CC][$PClevel] to 2>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] +1>>\ <<Recalc>>\ <<endif>>\ <<UpdateACandFlirts>>\ <<GetPlayerAbsorption>>\ <<AutoSaveLoad "set">> <</link>>\ </span> <span id="debug"></span><<set $WORLD.CharLocs to []>>\ <<PlaceCharForMultiChar 0>>\ <<PlaceCharForMultiChar 1>>\ <<PlaceCharForMultiChar 2>>\ <<PlayBGM "menu">>\ <<run UIBar.stow()>>\ <<set $ReturnFromMenu to passage()>>\ <<set _pic to $ImgPath + "title.png">>\ <center><img @src="_pic"/> @@color:Gold;An Humble Pilgrimage to the Shrine of the Goddess of Primal Darkness@@</center>\ <hr>\ <center>\ <<if $WORLD.GameVersion is "Build 23.7.05">>\ <span id="KeypOne">\ <<link "1) Continue" "Preamble">> <<set $WORLD.MobileMode to 0>> <</link>>\ </span> <span id="KeypOne">\ <<link "Play in Mobile Compatibilty mode (experimental)" "Preamble">> <<set $WORLD.MobileMode to 1>> <</link>>\ </span> Please post feedback and bug reports for this version <a href="https://arcdragon.com/forum/viewtopic.php?t=7" target="_blank" rel="noopener noreferrer">here</a>. <<else>>\ @@color:Yellow;Old version detected@@ The current version of Tower of Triumph is (Build 23.7.05) but your save file is from version (<<print $WORLD.GameVersion>>) This is a bugfix update. Playing this version is highly recommended. <<link "Run update" "Update">> <</link>>\ <<endif>>\ </center>\ <hr>\ \ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Gold;Legends@@ claim that in times long forgotten, when the Goddess of Primal Darkness gave birth to world, the Tower of Triumph was left as the point of contact forever linking the mortal world with that of the divine. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Gold;Few@@ who enter ever return, but those who do are always changed by their experience. Some become rich beyond all measure, others become learned and filled with great power, while still others escape as twisted wretches with their mind barely intact. But all agree that it is a place wherein great change, whether for good or bad, is possible. It is a place where the hopeful can meet with their dreams, the heroic can prove their worthiness, and the desperate can meet with salvation, or death. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Gold;You@@ have journeyed far from your home to at last reach the fabled village of Crescentheart. Its dilapidated shanties and empty shops fall far short of the grand stories that brought you here. But seeing it now with your own eyes you cannot deny the majesty of the Tower itself: A behemoth of umblemished stone clawing upwards into the sky as far as your eyes can see. And at its apex lay your final destination: the Shrine of the Goddess, the source of all wishes, the fountain of immortality...even to path to godhood. And yet also, the bringer of death and tragedy to all who fail to master its beautiful and treacherous mysteries. <<AddToLog "Arriving in DunGen">>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ \ <<if $WORLD.dungenned[_pz] > 0>>\ @@color:Red;Error: Request to generate a level that already exists@@ Proceeding anyway... <<set _foo to "Requesting regen of zlevel: " + _pz>>\ <<AddToLog _foo>>\ <<endif>>\ \ <<set $WORLD.dungenned[$PC[$CC][$PCz]] to 1>>\ \ <<set $Dungeon[_pz] to []>>\ <!-- assemble rooms here -->\ <<set _WhyIsThisNeeded to setup.Snake()>>\ <<set $Dungeon[_pz] to clone(_WhyIsThisNeeded)>>\ \ <<set _MessageQty to Math.trunc(($WORLD.DunDimX * $WORLD.DunDimY) / 15)>>\ <<set _dgcount to 0>>\ <<for _i to 0; _i < _MessageQty; _i++>>\ <<set _MessX to random(0, ($WORLD.DunDimX -1))>>\ <<set _MessY to random(0, ($WORLD.DunDimY -1))>>\ <<if $Dungeon[_pz][_MessX][_MessY][8] is 0>>\ <<set $Dungeon[_pz][_MessX][_MessY][8] to random(1,48)>>\ <<endif>>\ <</for>>\ \ \ <!-- traps after stairs were overwriting stairs despite the specific -->\ <!-- loopcheck for zeros to place on. Possibly a clone or timing issue? -->\ <<timed 200ms>>\ <<set _throwaway to setup.PlaceDunEvents(_pz)>>\ <</timed>>\ \ <!-- stairs placement is here because snake has three possible exits -->\ <<if _pz is 1>>\ <<set _stairsx to either(0, $WORLD.DunDimX -1)>>\ <<set _stairsy to either(0, $WORLD.DunDimY -1)>>\ <<set $WORLD.TowerOrigin to [_stairsx, _stairsy]>>\ <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsDown">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<set $PC[$CC][$PCx] to _stairsx>>\ <<set $PC[$CC][$PCy] to _stairsy>>\ <<set _stairsx to random(2,11)>>\ <<set _stairsy to random(2,4)>>\ <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsUp">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<elseif _pz is 4>>\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <!-- keep stairs from leading to Zehtalia's room -->\ <<set _StairsX to either(0, $WORLD.DunDimX -1)>>\ <<set _StairsY to either(0, $WORLD.DunDimY -1)>>\ <<set $Dungeon[_pz][_StairsX][_StairsY][11] to "StairsUp">>\ <<set $Dungeon[_pz][_StairsX][_StairsY][12] to 0>>\ <<elseif _pz is 5>>\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<elseif _pz is 6>>\ <!-- level to teach player about levers -->\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <!-- put stairs on left or right sides away from center-top room-->\ <<if random(1,2) is 1>>\ <<set _stairsx to random(0,3)>>\ <<set _stairsy to random(0,6)>>\ <<else>>\ <<set _stairsx to random(11,13)>>\ <<set _stairsy to random(0,6)>>\ <<endif>>\ <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsUp">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<elseif _pz is 9>>\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <!-- keep stairs from leading to Neris' room -->\ <<set _StairsX to either(0, $WORLD.DunDimX -1)>>\ <<set _StairsY to either(0, $WORLD.DunDimY -1)>>\ <<set $Dungeon[_pz][_StairsX][_StairsY][11] to "StairsUp">>\ <<set $Dungeon[_pz][_StairsX][_StairsY][12] to 0>>\ <<elseif _pz is 10>>\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<else>>\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<set _stairsx to _px - random(2,11)>>\ <<set _stairsy to _py - random(2,4)>>\ <<if _stairsx < 0>>\ <<set _stairsx to _stairsx + ($WORLD.DunDimX -1)>>\ <<elseif _stairsx > $WORLD.DunDimX -1>>\ <<set _stairsx to _stairsx - ($WORLD.DunDimX -1)>>\ <<endif>>\ <<if _stairsy < 0>>\ <<set _stairsy to _stairsy + ($WORLD.DunDimY -1)>>\ <<elseif _stairsy > $WORLD.DunDimY -1>>\ <<set _stairsy to _stairsy - ($WORLD.DunDimY -1)>>\ <<endif>>\ <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsUp">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<endif>>\ \ \ \ <<set $WORLD.dungenned[_pz +1] to 0>>\<<widget "SimplePic">>\ <<set _pic to $ImgPath + _args[0]>>\ <div id="right-img"><img @src="_pic"/></div>\ <</widget>>\ <<widget "CenterPic">>\ <<set _pic to $ImgPath + _args[0]>>\ <img @src="_pic"/>\ <</widget>>\ <<widget "ToggleSilent">>\ <<if $WORLD.MusicEnabled is true>>\ <<set $WORLD.MusicEnabled to false>>\ <<masteraudio stop>>\ <<replace "#SpanToggleSilent">>\ @@color:Red;Music is OFF@@\ <</replace>>\ <<else>>\ <<set $WORLD.MusicEnabled to true>>\ <<PlayBGM "menu">>\ <<replace "#SpanToggleSilent">>\ @@color:LightGreen;Music is ON@@\ <</replace>>\ <<endif>>\ <</widget>>\ <<widget "FullyHeal">>\ <!-- debuffs? -->\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>>\ <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanamax]>>\ <<set $PC[$CC][$PChornycur] to 0>>\ <<set $PC[$CC][$PChunger] to 500>>\ <</widget>>\ <<widget "GainGold">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + $args[0]>>\ <<ShowCoins>>\ <<if $PC[$CC][$PCcoins] > 9999>>\ <<AwardAchievement "Greedy">>\ <<elseif $PC[$CC][$PCcoins] > 999>>\ <<AwardAchievement "Rich">>\ <<endif>>\ <</widget>>\ <<widget "Bullet">>\ &#8226; \ <</widget>>\ <<widget "FormatPosNeg">>\ <<if _args[0] < 0>>@@color:Red;-<<print _args[0]>><<if _args[1]>>_args[1]<<endif>>@@\ <<elseif $PC[$CC][$PCac][0] > 0>>@@color:LightGreen;+<<print _args[0]>><<if _args[1]>><<print _args[1]>><<endif>>@@\ <<else>><<print _args[0]>>\ <<endif>>\ <</widget>>\ <<widget "ShowBlacksmithProgress">>\ <<if $WORLD.smith is 0>>Not visited\ <<else>>\ <<if $WORLD.smithLevel is 0>>Brass\ <<elseif $WORLD.smithLevel is 1>>Iron\ <<elseif $WORLD.smithLevel is 2>>Steel\ <<elseif $WORLD.smithLevel is 3>>Mithril\ <<elseif $WORLD.smithLevel is 4>>Scalar\ <<else>> @@color:Red;Error: unrecognized state: ($WORLD.smithLevel)@@\ <<endif>>\ <<endif>>\ <</widget>>\ <<widget "ShowSeleneProgress">>\ <<set _SSPmin to 0>>\ <!-- set _SSPmax to $WORLD.SeleneQuests.length -->\ <<set _SSPmax to 6>>\ <<for _i to 0; _i < 6; _i++>>\ <<if $WORLD.SeleneQuests[_i] is 3>>\ <<set _SSPmin to _SSPmin +1>>\ <<endif>>\ <</for>>\ <<if _SSPmin is 0>>\ None\ <<elseif _SSPmin is _SSPmax>>\ Tier 1 complete!\ <<else>>\ <<set _SSP to Math.trunc(_SSPmin / _SSPmax * 100)>>\ Tier 1: <<print _SSP>>%\ <<endif>>\ <</widget>>\ <<widget "ShowDaphneProgress">>\ <<set _SSPmin to 0>>\ <<set _SSPmax to $WORLD.DaphneQuests.length>>\ <<for _i to 0; _i < 6; _i++>>\ <<if $WORLD.DaphneQuests[_i] is 3>>\ <<set _SSPmin to _SSPmin +1>>\ <<endif>>\ <</for>>\ <<if _SSPmin is 0>>\ None\ <<elseif _SSPmin is _SSPmax>>\ Complete! <<else>>\ <<set _SSP to Math.trunc(_SSPmin / _SSPmax * 100)>>\ Tier 1: <<print _SSP>>%\ <<endif>>\ <</widget>>\ <<widget "ShowTutorialProgress">>\ <<set _STPmin to 0>>\ <<set _STPmax to $WORLD.quests.length>>\ <<for _i to 0; _i < $WORLD.quests.length; _i++>>\ <<if $WORLD.quests[_i].state is "complete">>\ <<set _STPmin to _STPmin +1>>\ <<endif>>\ <</for>>\ <<if _STPmin is 0>>\ None \ <<elseif _STPmin is _STPmax>>\ 100%\ <<else>>\ <<set _STP to Math.trunc(_STPmin / _STPmax * 100)>>\ <<print _STP>>%\ <<endif>>\ <</widget>>\ <<widget "ResetTower">>\ <<for _RT to 0; _RT < 3; _RT++>>\ <<set $PC[_RT][$PChfze] to 0>>\ <<set $PC[_RT][$PChtze] to 0>>\ <<set $PC[_RT][$PChdze] to 0>>\ <<if ($PC[_RT][$PClocation] is "tower")>>\ <<if $PC[_RT][$PCstate] is "alive">>\ <<set $PC[_RT][$PClocation] to "town">>\ <<set $WORLD.CharLocs[_RT][0] to "town">>\ <<elseif $PC[_RT][$PCstate] is "dead">>\ <<set $PC[_RT][$PCstate] to "lost">>\ <<set $WORLD.CharLocs[_RT][0] to "lost">>\ <<endif>>\ <<endif>>\ <</for>>\ <<set $WORLD.HFZE to 0>>\ <<set $WORLD.HTZE to 0>>\ <<set $WORLD.HDZE to 0>>\ <<set $WORLD.DunDims to []>>\ <<set $WORLD.DunDimX = 14>>\ <<set $WORLD.DunDimY = 7>>\ <<set $WORLD.Circle to 0>>\ <<set $WORLD.dungenned to [0,0]>>\ <<set $WORLD.dungeonthemes to []>>\ <<set $WORLD.dungeonthemes[0] to ["Brick","Random"]>>\ <<set $WORLD.dungeonthemes[1] to ["Brick","Random"]>>\ <</widget>>\ <<widget "ResetGraveyard">>\ <<set $RETIREES to []>> <<for _i to 0; _i < 10; _i++>> <<set $RETIREES[_i] to { name: "none", gen: 0, level: 0, class: "none", gold: 0, maxforest: 0, maxtower: 0, year: 0, day: 0, won: 0, death: "" }>> <</for>>\ <<run memorize('RETIREES', $RETIREES)>>\ <</widget>>\ <<widget "AddToLog">>\ <<set $GameLog to $GameLog + $args[0]>>\ <</widget>>\ <<widget "PlaceCharForMultiChar">>\ <<set _PlaceWho to _args[0]>>\ <<set $WORLD.CharLocs[_PlaceWho] to []>>\ <<set $WORLD.CharLocs[_PlaceWho][0] to $PC[_PlaceWho][$PClocation]>>\ <<if $WORLD.CharLocs[_PlaceWho][0] is "forest">>\ <<set $WORLD.CharLocs[_PlaceWho][1] to $PC[_PlaceWho][$PCfx]>>\ <<set $WORLD.CharLocs[_PlaceWho][2] to $PC[_PlaceWho][$PCfy]>>\ <<set $WORLD.CharLocs[_PlaceWho][3] to $PC[_PlaceWho][$PCfz]>>\ <<set $WORLD.CharLocs[_PlaceWho][4] to $PC[_PlaceWho][$PCicon]>>\ <<elseif $WORLD.CharLocs[_PlaceWho][0] is "desert">>\ <<set $WORLD.CharLocs[_PlaceWho][1] to $PC[_PlaceWho][$PCdx]>>\ <<set $WORLD.CharLocs[_PlaceWho][2] to $PC[_PlaceWho][$PCdy]>>\ <<set $WORLD.CharLocs[_PlaceWho][3] to $PC[_PlaceWho][$PCdz]>>\ <<set $WORLD.CharLocs[_PlaceWho][4] to $PC[_PlaceWho][$PCicon]>>\ <<elseif $WORLD.CharLocs[_PlaceWho][0] is "tower">>\ <<set $WORLD.CharLocs[_PlaceWho][1] to $PC[_PlaceWho][$PCx]>>\ <<set $WORLD.CharLocs[_PlaceWho][2] to $PC[_PlaceWho][$PCy]>>\ <<set $WORLD.CharLocs[_PlaceWho][3] to $PC[_PlaceWho][$PCz]>>\ <<set $WORLD.CharLocs[_PlaceWho][4] to $PC[_PlaceWho][$PCicon]>>\ <<elseif $WORLD.CharLocs[_PlaceWho][0] is "town">>\ <<set $WORLD.CharLocs[_PlaceWho][1] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][2] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][3] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][4] to $PC[_PlaceWho][$PCicon]>>\ <<else>>\ <<set $WORLD.CharLocs[_PlaceWho][0] to "lost">>\ <<set $WORLD.CharLocs[_PlaceWho][1] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][2] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][3] to -1>>\ <<set $WORLD.CharLocs[_PlaceWho][4] to 1>>\ <<endif>>\ <</widget>>\ <<widget "AutoSaveLoad">>\ <<if $args[0] is "get">>\ <<set $PC to recall('PC')>>\ <<set $WORLD to recall('WORLD')>>\ <<set $STORE to recall('STORE')>>\ <<set $RETIREES to recall('RETIREES')>>\ <<set $Dungeon to recall('Dungeon')>>\ <<set $Achievements to recall('Achievements')>>\ <<elseif $args[0] is "set">>\ <<PlaceCharForMultiChar 0>>\ <<PlaceCharForMultiChar 1>>\ <<PlaceCharForMultiChar 2>>\ \ <<run memorize('PC', $PC)>>\ <<run memorize('WORLD', $WORLD)>>\ <<run memorize('STORE', $STORE)>>\ <<run memorize('RETIREES', $RETIREES)>>\ <<run memorize('Dungeon', $Dungeon)>>\ <<run memorize('Achievements', $Achievements)>>\ <<run memorize('EXISTS', true)>>\ <<elseif $args[0] is "wipe">>\ <<run forget('PC')>>\ <<run forget('WORLD')>>\ <<run forget('STORE')>>\ <<run forget('RETIREES')>>\ <<run forget('Dungeon')>>\ <<run forget('Achievements')>>\ <<run forget('EXISTS')>>\ <<else>>\ <<AddToLog "@@color:red;ERROR in AutoSaveLoad: are we getting or setting?@@">>\ <<endif>>\ <</widget>>\ <<widget "MaleVirginity">>\ <<set _AchCheck to false>>\ <<if $PC[$CC][$PCsexACTS].malevirgin is true>>\ <br>@@color:Pink;You have given your virginity to <<print $args[0]>>!@@ <<set $PC[$CC][$PCsexACTS].malevirgin to $args[0]>>\ <<set _AchCheck to true>>\ <<endif>>\ <<if (_AchCheck is true) and ($PC[$CC][$PCsexACTS].vaginalreceived > 0)>>\ <<AwardAchievement "Playing both sides">>\ <<endif>>\ <</widget>>\ <<widget "FemaleVirginity">>\ <<set _AchCheck to false>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ @@color:Pink;You have given up your virginity to <<print $args[0]>>!@@ <<set $PC[$CC][$PCsexACTS].femalevirgin to $args[0]>>\ <<set _AchCheck to true>>\ <<endif>>\ <<if (_AchCheck is true) and ($PC[$CC][$PCsexACTS].vaginalgiven > 0)>>\ <<AwardAchievement "Playing both sides">>\ <<endif>>\ <</widget>>\ <<widget "PregnancyTest">>\ <<set _source to $args[0]>>\ <</widget>>\ <<widget "InitPC">>\ <<set _initwho to $args[0]>>\ \ <!-- reincarnation handled here -->\ <<if $PC[_initwho][$PCstate] is "none">>\ <<set $PC[_initwho][$PCgen] to 1>>\ <<set $PC[_initwho][$PCancestor] to "">>\ <<set $PC[_initwho][$PCname] to setup.GenName($PC[_initwho][$PCsex])>>\ <<set $PC[_initwho][$PCsex] to "male">>\ <<set $PC[_initwho][$ancestraldeath] to "">>\ <<set $PC[$CC][$PCretirementcap] to 1>>\ <<elseif $PC[_initwho][$PCstate] is "retired">>\ <<set $PC[_initwho][$PCgen] to $PC[_initwho][$PCgen] +1>>\ <<set $PC[_initwho][$PCancestor] to $PC[_initwho][$PCname]>>\ <<set $PC[_initwho][$ancestraldeath] to "retirement">>\ <<elseif $PC[_initwho][$PCstate] is "dead">>\ <<set $PC[_initwho][$PCgen] to $PC[_initwho][$PCgen] +1>>\ <<set $PC[_initwho][$PCancestor] to $PC[_initwho][$PCname]>>\ <<else>>\ <<script>>UI.alert("InitPC was requested for a character who is neither dead, retired, nor in the 'none' state. Something is probably very wrong.")<</script>>\ <<endif>>\ \ <<set $PC[_initwho][$PCstate] to "none">>\ <!-- name -->\ <!-- sex -->\ <!-- gen handled above -->\ <<set $PC[_initwho][$PCcoins] to 20>>\ <<set $PC[_initwho][$PChpcur] to 10>>\ <<set $PC[_initwho][$PChpmax] to 10>>\ <<set $PC[_initwho][$PCstr] to 12>>\ <<set $PC[_initwho][$PCdex] to 12>>\ <<set $PC[_initwho][$PCcon] to 10>>\ <<set $PC[_initwho][$PCint] to 8>>\ <<set $PC[_initwho][$PCwil] to 8>>\ <<set $PC[_initwho][$PCx] to 0>>\ <<set $PC[_initwho][$PCy] to 0>>\ <<set $PC[_initwho][$PCz] to -1>>\ <<set $PC[_initwho][$PCxp] to 0>>\ <<set $PC[_initwho][$PClevel] to 1>>\ <<set $PC[_initwho][$PCclass] to "peasant">>\ <<set $PC[_initwho][$PCmaxinven] to 10>>\ <<set $PC[_initwho][$PCinven] to []>>\ <<set $PC[_initwho][$PCinven][0] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][1] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][2] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][3] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][4] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][5] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][6] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][7] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][8] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCinven][9] to [0,0,0,0]>>\ <<set $PC[_initwho][$PCmorph] to "human">>\ <<set $PC[_initwho][$PCbp] to []>>\ <<set $PC[_initwho][$PCac] to 0>>\ <<set $PC[_initwho][$PCabsorb] to 0>>\ <<set $PC[_initwho][$PCperks] to []>>\ <<set $PC[$CC][$PCtohit] to $PC[_initwho][$PCdex] - 10>>\ <<set _hcolor to either("red","brown","blonde","black")>>\ <<set _hair to random(2, 6)>>\ <<set $PC[_initwho][$PCbp][0] to { type: $BPhead, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: _hcolor, size: _hair, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][1] to { type: $BPneck, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][2] to { type: $BPback, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][3] to { type: $BPchest, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][4] to { type: $BPwield, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "punch", attacktype: "blunt", mindam: 1, maxdam: 2}>>\ <<set $PC[_initwho][$PCbp][5] to { type: $BPwield, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "punch", attacktype: "blunt", mindam: 1, maxdam: 2}>>\ <<set $PC[_initwho][$PCbp][6] to { type: $BPhands, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][7] to { type: $BPring, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][8] to { type: $BPring, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][9] to { type: $BPwaist, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][10] to { type: $BPlegs, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PCbp][11] to { type: $BPfeet, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: 0, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set $PC[_initwho][$PChornycur] to 0>>\ <<set $PC[_initwho][$PChornymax] to 100>>\ <<set $PC[_initwho][$PChunger] to 500>>\ <<set $PC[_initwho][$PCsexACTS] to { malevirgin: true, femalevirgin: true, bjgiven: 0, bjreceived: 0, pussylickgiven: 0, pussylickreceived: 0, vaginalgiven: 0, vaginalreceived: 0, analgiven: 0, analreceived: 0, semengiven: 0, semenreceived: 0, milked: 0, scissored: 0}>>\ <<set $PC[_initwho][$PCmisc] to { battles: 0, battleslost: 0, battleswon: 0, battlesfled: 0, traptrigger: 0, trapavoid: 0, gold: 0, chests: 0, deaths: 0, flirtvictory: 0}>>\ <<set $PC[_initwho][$PCspellbook] to { any: false, firebolt: 0, heal: 0, armor: 0, poison: 0, up: 0, down: 0, portal: 0, light: 0, map: 0, passwall: 0, soultrap: 0, q: "", w: "", e: "", totalheal: 0 }>>\ <<set $PC[_initwho][$PClocation] to "town">>\ <<set $PC[_initwho][$PCunspentPoints] to 0>>\ <<set $PC[_initwho][$PCpregnant] to [0, ""]>>\ <<set $PC[_initwho][$PChtze] to 0>>\ <<set $PC[_initwho][$PChfze] to 0>>\ <<set $PC[_initwho][$PChdze] to 0>>\ <<set $PC[_initwho][$PCkills] to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]>>\ <<set $PC[_initwho][$PCchurchstate] to 0>>\ \ <<set $PC[_initwho][$PCavatar] to ["male", 0]>>\ <<set $PC[_initwho][$PCicon] to -1>>\ <!-- ancestor handled above -->\ <<set $PC[_initwho][$PCSeleneChat] to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]>>\ <<set $PC[_initwho][$PCGerardChat] to [0,0,0,0,0,0,0,0,0,0,0,0]>>\ <<set $PC[_initwho][$PCSmithDemonChat] to [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]>>\ <<set $PC[_initwho][$PCeffects] to []>>\ <<set $PC[_initwho][$PCSkittersChat] to [0,0,0,0,0,0,0,0,0]>>\ <<set $PC[_initwho][$PCBoltmanChat] to [0,0,0,0,0]>>\ <<set $PC[_initwho][$PCDaphneChat] to [0,0,0,0,0,0,0,0]>>\ \ <<UpdateMorphs>>\ <</widget>>\ <<widget "AdvanceTime">>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] - _args[0]>>\ <<if $PC[$CC][$PChunger] < 1>>\ <<set $PC[$CC][$PChunger] to 0>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] -1>>\ <<ShowHealth>>\ <<else>>\ <<ShowHunger>>\ <<endif>>\ <<set $WORLD.minute to $WORLD.minute + _args[0]>>\ <<for _AdvT to 0; _AdvT < 24; _AdvT++>>\ <<if $WORLD.minute > 59>>\ <<set $WORLD.minute to $WORLD.minute - 60>>\ <<set $WORLD.hour to $WORLD.hour +1>>\ <<else>>\ <<set _AdvT to 99>>\ <<endif>>\ <</for>>\ <<if $WORLD.hour > 24>>\ <<set $WORLD.hour to $WORLD.hour - 24>>\ <<set $WORLD.day to $WORLD.day +1>>\ <<endif>>\ <<if $WORLD.day > 365>>\ <<set $WORLD.day to $WORLD.day - 365>>\ <<set $WORLD.year to $WORLD.year +1>>\ <<set $WORLD.restock to 0>>\ <<endif>>\ <<if $WORLD.restock < $WORLD.day>>\ <<Restock "all">>\ <<endif>>\ <<DecrementEffects _args[0]>>\ <<set _PlagueCurse to setup.GetEffect("plague curse")>>\ <<if _PlagueCurse > 0>>\ <<set _PlagueCurse to (_PlagueCurse * -1)>>\ <<ChangeStat $PChpcur _PlagueCurse>>\ <<endif>>\ <</widget>>\ <<widget "ShowTime">>\ <<set _m to $WORLD.minute>>\ <<set _h to $WORLD.hour>>\ <<set _d to $WORLD.day>>\ <<set _y to $WORLD.year>>\ <<set _ampm to "am">>\ <<if _h > 12>>\ <<set _h to _h - 12>>\ <<set _ampm to "pm">>\ <<endif>>\ <<if _m < 10>>\ <<set _m to "0" + _m>>\ <<endif>>\ <<if _y > 1>>\ Year: <<print _y>>, Day: <<print _d>>, <<print _h>>:<<print _m>> _ampm\ <<elseif _d > 1>>\ Day: <<print _d>>, <<print _h>>:<<print _m>> _ampm\ <<else>>\ _h:_m _ampm\ <<endif>>\ <</widget>>\ <<widget "ShowHunger">>\ <<replace "#capstaminatext">>\ <<if $PC[$CC][$PChunger] < 2>>@@color:Red;EXHAUSTED <<elseif $PC[$CC][$PChunger] < 100>>@@color:Yellow;Tired <<else>>@@color:LightGreen;Stamina@@ <<endif>>\ <</replace>>\ <<run Health2($PC[$CC][$PChunger], 500, "hungerbar", true)>>\ <</widget>>\ <<widget "DescribeStat">>\ <<set _ds to $PC[$CC][$args[0]] -10>>\ <<if $args[0] is $PCstr>>\ <<if _ds > 0>>\ +<<print _ds>> melee damage\ <<elseif _ds < 0>>\ _ds melee damage\ <<else>>\ base damage\ <<endif>>\ <<elseif $args[0] is $PCdex>>\ <<if _ds > 0>>\ +<<print _ds * 5>>% melee evasion, +<<print _ds * 5>>% to hit\ <<elseif _ds < 0>>\ <<print _ds * 5>>% melee evasion, <<print _ds * 5>>% to hit\ <<else>>\ base evasion and to-hit\ <<endif>>\ <<elseif $args[0] is $PCcon>>\ <<print $PC[$CC][$args[0]]>> hp per level \ <<elseif $args[0] is $PCint>>\ <<print $PC[$CC][$args[0]]>> max mana\ <<elseif $args[0] is $PCwil>>\ +<<print $PC[$CC][$args[0]]>> flirt resistence, <<print $PC[$CC][$args[0]] * 10>> max arousal\ <<else>>\ @@color:Red;Error in DescribeStat: <<print $args[0]>>@@\ <<endif>>\ <</widget>>\ <<widget "ChangeStat">>\ <<set _cs to $args[0]>>\ <<set _csamt to $args[1]>>\ <<if setup.IsNan(_cs) is true>>\ @@color:Yellow;Error:@@ ChangeStat received a request to change stat (_cs) by (_csamt), but _csamt is not a number The passage that made the request appears to be: <<print passage()>> <<else>> <<set $PC[$CC][_cs] to $PC[$CC][_cs] + _csamt>>\ <<if $PC[$CC][_cs] < 0>>\ <<set $PC[$CC][_cs] to 0>>\ <<elseif $PC[$CC][$PChpcur] > $PC[$CC][$PChpmax]>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>>\ <<endif>>\ <<endif>>\ <</widget>>\ <<widget "ShowHealth">>\ <<replace "#caphealth">>\ <<if $PC[$CC][$PChpcur] < $PC[$CC][$PChpmax]>>\ @@color:Yellow;\ <<print Health: $PC[$CC][$PChpcur]>> / <<print $PC[$CC][$PChpmax]>>@@\ <<else>>\ @@color:LightGreen;\ <<print Health: $PC[$CC][$PChpcur]>> / <<print $PC[$CC][$PChpmax]>>@@\ <<endif>>\ <</replace>>\ <<run Health2($PC[$CC][$PChpcur], $PC[$CC][$PChpmax], "hpbar", true)>>\ <</widget>>\ <<widget "ShowMana">>\ <<replace "#capmana">>\ <<if $PC[$CC][$PCmanacur] < $PC[$CC][$PCmanamax]>>\ @@color:Yellow;\ <<print Mana: $PC[$CC][$PCmanacur]>> / <<print $PC[$CC][$PCmanamax]>>@@\ <<else>>\ @@color:LightGreen;\ <<print Mana: $PC[$CC][$PCmanacur]>> / <<print $PC[$CC][$PCmanamax]>>@@\ <<endif>>\ <</replace>>\ <<run Health2($PC[$CC][$PCmanacur], $PC[$CC][$PCmanamax], "manabar", true)>>\ <</widget>>\ <<widget "ShowHorny">>\ <<replace "#caphorny">>\ <<if $PC[$CC][$PChornycur] < $PC[$CC][$PChornymax]>>\ @@color:Yellow;\ <<print Arousal: $PC[$CC][$PChornycur]>> / <<print $PC[$CC][$PChornymax]>>@@\ <<else>>\ @@color:LightGreen;\ <<print Arousal: $PC[$CC][$PChornycur]>> / <<print $PC[$CC][$PChornymax]>>@@\ <<endif>>\ <</replace>>\ <<run Health2($PC[$CC][$PChornycur], $PC[$CC][$PChornymax], "hornybar", true)>>\ <</widget>>\ <<widget "ShowCoins">>\ <<replace "#capcoins">>\ @@color:LightGreen;<<print $PC[$CC][$PCcoins]>>\ <</replace>>\ <</widget>>\ <<widget "ShowCapInv">>\ <<replace "#capinvwarning">><</replace>>\ <</widget>>\ \ \ <<widget "UpdateMorphs">>\ <<set _head to setup.getbpqty($CC, $BPhead)>>\ <<set _neck to setup.getbpqty($CC, $BPneck)>>\ <<set _chest to setup.getbpqty($CC, $BPback)>>\ <<set _back to setup.getbpqty($CC, $BPchest)>>\ <<set _arms to setup.getbpqty($CC, $BPwield)>>\ <<set _hands to setup.getbpqty($CC, $BPhands)>>\ <<set _fingers to setup.getbpqty($CC, $BPring)>>\ <<set _waist to setup.getbpqty($CC, $BPwaist)>>\ <<set _legs to setup.getbpqty($CC, $BPlegs)>>\ <<set _feet to setup.getbpqty($CC, $BPfeet)>>\ <<set _tail to setup.getbpqty($CC, $BPtail)>>\ <<set _horns to setup.getbpqty($CC, $BPhorn)>>\ <<set _wings to setup.getbpqty($CC, $BPwings)>>\ <<set _penis to setup.getbpqty($CC, $BPpenis)>>\ <<set _breast to setup.getbpqty($CC, $BPboobs)>>\ <<set _pussy to setup.getbpqty($CC, $BPpussy)>>\ \ <<set _bunny to setup.getparttypeqty($CC, "bunny")>>\ <<set _cat to setup.getparttypeqty($CC, "cat")>>\ <<set _fox to setup.getparttypeqty($CC, "fox")>>\ <<set _wolf to setup.getparttypeqty($CC, "wolf")>>\ <<set _horse to setup.getparttypeqty($CC, "horse")>>\ <<set _human to setup.getparttypeqty($CC, "human")>>\ <<set _goblin to setup.getparttypeqty($CC, "goblin")>>\ <<set _slime to setup.getparttypeqty($CC, "slime")>>\ <<set _spider to setup.getparttypeqty($CC, "spider")>>\ <<set _imp to setup.getparttypeqty($CC, "imp")>>\ <<set _hellhound to setup.getparttypeqty($CC, "hellhound")>>\ <<set _cow to setup.getparttypeqty($CC, "cow")>>\ <<set _drider to setup.getparttypeqty($CC, "drider")>>\ <<set _tentacle to setup.getparttypeqty($CC, "tentacle")>>\ <<set _demon to setup.getparttypeqty($CC, "demon")>>\ <<set _insect to setup.getparttypeqty($CC, "insect")>>\ <<set _snake to setup.getparttypeqty($CC, "snake")>>\ <<set _troll to setup.getparttypeqty($CC, "troll")>>\ <<set _dinosaur to setup.getparttypeqty($CC, "dinosaur")>>\ <<set _ratkin to setup.getparttypeqty($CC, "ratkin")>>\ \ <<set $PC[$CC][$PCmorphQTY] to {human: -1, bunny: -1, cat: -1, fox: -1, wolf: -1, horse: -1, goblin: -1, slime: -1, spider: -1, imp: -1, hellhound: -1, cow: -1, tentacle: -1, demon: -1, insect: -1, snake: -1, dinosaur: -1, ratkin: -1, troll: -1}>>\ <<set $PC[$CC][$PCmorphQTY].human to _human>>\ <<set $PC[$CC][$PCmorphQTY].bunny to _bunny>>\ <<set $PC[$CC][$PCmorphQTY].cat to _cat>>\ <<set $PC[$CC][$PCmorphQTY].fox to _fox>>\ <<set $PC[$CC][$PCmorphQTY].wolf to _wolf>>\ <<set $PC[$CC][$PCmorphQTY].horse to _horse>>\ <<set $PC[$CC][$PCmorphQTY].goblin to _goblin>>\ <<set $PC[$CC][$PCmorphQTY].slime to _slime>>\ <<set $PC[$CC][$PCmorphQTY].spider to _spider>>\ <<set $PC[$CC][$PCmorphQTY].imp to _imp>>\ <<set $PC[$CC][$PCmorphQTY].hellhound to _hellhound>>\ <<set $PC[$CC][$PCmorphQTY].cow to _cow>>\ <<set $PC[$CC][$PCmorphQTY].tentacle to _tentacle>>\ <<set $PC[$CC][$PCmorphQTY].demon to _demon>>\ <<set $PC[$CC][$PCmorphQTY].insect to _insect>>\ <<set $PC[$CC][$PCmorphQTY].snake to _snake>>\ <<set $PC[$CC][$PCmorphQTY].ratkin to _ratkin>>\ <<set $PC[$CC][$PCmorphQTY].dinosaur to _dinosaur>>\ <<set $PC[$CC][$PCmorphQTY].troll to _troll>>\ \ <<set $PC[$CC][$PCmorphBONI] to {ac: 0, hp: 0, th: 0, bodyth: 0, bodydam: 0, flirtth: 0, flirtdam: 0, lessdamage: 0, fireresist: 0}>>\ <<set $PC[$CC][$PCmorphBONI].ac to ($PC[$CC][$PCmorphQTY].insect * 2)>>\ <<set $PC[$CC][$PCmorphBONI].th to ($PC[$CC][$PCmorphQTY].spider * 2)>>\ <<set $PC[$CC][$PCmorphBONI].hp to $PC[$CC][$PCmorphQTY].wolf + ($PC[$CC][$PCmorphQTY].horse * 2) + ($PC[$CC][$PCmorphQTY].cow * 2) + ($PC[$CC][$PCmorphQTY].dinosaur * 2)>>\ <<set $PC[$CC][$PCmorphBONI].bodyth to $PC[$CC][$PCmorphQTY].fox>>\ <<set $PC[$CC][$PCmorphBONI].bodydam to $PC[$CC][$PCmorphQTY].cat>>\ <<set $PC[$CC][$PCmorphBONI].flirtth to $PC[$CC][$PCmorphQTY].bunny>>\ <<set $PC[$CC][$PCmorphBONI].flirtdam to $PC[$CC][$PCmorphQTY].goblin>>\ <<set $PC[$CC][$PCmorphBONI].lessdamage to $PC[$CC][$PCmorphQTY].slime>>\ <<set $PC[$CC][$PCmorphBONI].fireresist to $PC[$CC][$PCmorphQTY].hellhound + $PC[$CC][$PCmorphQTY].demon>>\ \ \ <<set _morph to "misshapen monstrosity">>\ <<set _foundation to false>>\ <<if (_head is 1) and (_neck is 1) and (_chest is 1) and (_waist is 1) and (_legs is 1) and (_arms > 1)>>\ <<set _foundation to true>>\ <<endif>>\ \ \ <!-- EXACTLY HUMAN -->\ <<if (_foundation is true) and (_horns is 0) and (_tail is 0) and (_feet is 1) and (_hands is 1) and (_arms is 2)>>\ <<set _morph to "human">>\ <<if (_wings > 0) and (_demon is 0)>>\ <<set _morph to "angel-morph">>\ <<endif>>\ <<endif>>\ <!-- ANIMAL MORPHS -->\ <<if _foundation is true>>\ <<if _bunny > (_cat + _fox + _wolf + _horse + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "bunny-morph">>\ <<elseif _cat > (_bunny + _fox + _wolf + _horse + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "cat-morph">>\ <<elseif _fox > (_bunny + _cat + _wolf + _horse + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "fox-morph">>\ <<elseif _wolf > (_bunny + _cat + _fox + _horse + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "wolf-morph">>\ <<elseif _horse > (_bunny + _cat + _fox + _wolf + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "horse-morph">>\ <<elseif _ratkin > (_bunny + _cat + _fox + _wolf + _horse + _insect + _dinosaur)>>\ <<set _morph to "rat-morph">>\ <<elseif _insect > (_bunny + _cat + _fox + _wolf + _horse + _ratkin + _dinosaur)>>\ <<set _morph to "insect-morph">>\ <<elseif _dinosaur > (_bunny + _cat + _fox + _wolf + _horse + _ratkin + _insect)>>\ <<set _morph to "dinosaur-morph">>\ <<elseif (_bunny + _cat + _fox + _wolf + _horse + _ratkin + _cow) > 0>>\ <<set _morph to "animal-morph">>\ <<endif>>\ <<endif>>\ <!-- MINOTAUR -->\ <<if (_foundation is true) and _cow > (_bunny + _cat + _fox + _wolf + _horse + _ratkin + _insect + _dinosaur)>>\ <<set _morph to "minotaur">>\ <<endif>>\ <!-- HORSE and CENTAUR-->\ <<if _horse > 3>>\ <<if (_head is 1) and (_neck is 1) and (_chest is 1) and (_waist is 1)>>\ <<if (_legs is 2) and (_insect is 0) and (_spider is 0)>>\ <<if _arms > 0>>\ <<set _morph to "centaur">>\ <<else>>\ <<set _morph to "horse">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ \ <!-- DEMON types -->\ <<if (_foundation is true) and (_demon > 2)>>\ <<if (_breast > 0) and (_pussy is 1) and (_penis is 0)>>\ <<set _morph to "succubus">>\ <<elseif (_penis > 0) and (_pussy is 0) and (_breast is 0)>>\ <<set _morph to "incubus">>\ <<elseif (_penis > 0) and (_breast > 0) and (_pussy > 0)>>\ <<set _morph to "omnibus">>\ <<else>>\ <<set _morph to "demon-morph">>\ <<endif>>\ <<endif>>\ \ <!-- SNAKE and NAGA -->\ <<if (_snake > 2) and (_legs is 0) and (_feet is 0) and (_tail > 0)>>\ <<if (_arms is 0)>>\ <<set _morph to "snake-morph">>\ <<else>>\ <<set _morph to "naga">>\ <<endif>>\ <<endif>>\ <!-- INSECT-->\ <<if (_insect > 2) and (_legs is 3)>>\ <<set _morph to "insect">>\ <<endif>>\ <!-- GOBLIN -->\ <<if (_foundation is true) and (_goblin > _human)>>\ <<set _morph to "goblin">>\ <<endif>>\ <!-- SLIME -->\ <<if (_slime > _human) and (_slime > _bunny + _cow + _cat + _fox + _wolf + _horse + _ratkin + _insect + _dinosaur)>>\ <<if (_foundation is true) >>\ <<set _morph to "slime-morph">>\ <<else>>\ <<set _morph to "slime">>\ <<endif>>\ <<endif>>\ <!-- SPIDER -->\ <<if (_spider > 2) and (_legs > 3)>>\ <<set _morph to "spider-morph">>\ <<if (_head is 0) and (_arms is 0)>>\ <<set _morph to "spider">>\ <<endif>>\ <<endif>>\ \ \ <!-- SEX -->\ <<set _sex to "hermaphrodite">>\ <<if (_penis > 0) and (_breast > 0) and (_pussy is 0)>>\ <<set _sex to "dick-girl">>\ <<elseif (_penis is 0) and (_pussy > 0)>>\ <<set _sex to "female">>\ <<elseif (_penis > 0) and (_pussy is 0)>>\ <<set _sex to "male">>\ <<elseif (_penis + _breast + _pussy) is 0>>\ <<set _sex to "sexless">>\ <<endif>>\ \ <<set $PC[$CC][$PCmorph] to _morph>>\ <<set $PC[$CC][$PCsex] to _sex>>\ <</widget>>\ <<widget "Recalc">>\ <<UpdateMorphs>>\ <<set $PC[$CC][$PChpmax] to ($PC[$CC][$PClevel] * $PC[$CC][$PCcon]) + $PC[$CC][$PCmorphBONI].hp>>\ <<set $PC[$CC][$PCtohit] to 5 *($PC[$CC][$PCdex] - 10)>>\ <<set _ClassName to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<if _ClassName is "peasant">>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + $PC[$CC][$PClevel] >>\ <<endif>>\ <<set _BestPeasant to setup.AchievementHandler("Best Peasant", "HAS?", -1)>>\ <<if _BestPeasant > 0>>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + _BestPeasant>>\ <<endif>>\ <<set _BestGuardian to setup.AchievementHandler("Best Guardian", "HAS?", -1)>>\ <<if _BestGuardian > 0>>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + (_BestGuardian * 2)>>\ <<endif>>\ \ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCint]>>\ <<set _BestMage to setup.AchievementHandler("Best Mage", "HAS?", -1)>>\ <<if _BestMage > 0>>\ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCmanamax] + _BestMage>>\ <<endif>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "mage">>\ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCmanamax] + $PC[$CC][$PClevel]>>\ <<endif>>\ \ <<set _EnchantBonuses to setup.GetEnchantBonuses($CC)>>\ <<if _EnchantBonuses.Health > 0>>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + _EnchantBonuses.Health>>\ <<endif>>\ <<if _EnchantBonuses.ManaBonus > 0>>\ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCmanamax] + _EnchantBonuses.ManaBonus>>\ <<endif>>\ \ <<if $PC[$CC][$PChpmax] > 199>>\ <<AwardAchievement "Guardian">>\ <<endif>>\ <</widget>>\ <<widget "AwardXP">>\ <<set _xpneed to setup.XpNeeded($PC[$CC][$PClevel])>>\ <<set _AXPgain to $args[0]>>\ <<set _AXPsource to $args[1]>>\ <<set $PC[$CC][$PCxp] to $PC[$CC][$PCxp] + _AXPgain>>\ <<if (_AXPsource is "combat") and (setup.PlayerHasPerk("Power Leveler") is true)>>\ <<set $PC[$CC][$PCxp] to $PC[$CC][$PCxp] + 1>>\ @@color:LightGreen;You have gained <<print _AXPgain>>@@ @@color:MediumSlateBlue;(+1)@@ @@color:LightGreen;experience. @@\ <<else>>\ @@color:LightGreen;You have gained <<print _AXPgain>> experience. @@\ <<endif>>\ \ <<set _Leveled to false>>\ <<set _StatGains to 0>>\ <<for _AX to 0; _AX < 3; _AX++>>\ <<if $PC[$CC][$PCxp] >= _xpneed>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] +1>>\ <<set $PC[$CC][$PClevel] to $PC[$CC][$PClevel] +1>>\ <<set $PC[$CC][$PCxp] to $PC[$CC][$PCxp] - _xpneed>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] + $PC[$CC][$PCcon]>>\ <<set _xpneed to setup.XpNeeded($PC[$CC][$PClevel])>>\ <<set _Leveled to true>>\ <<set _StatGains to _StatGains +1>>\ <<endif>>\ <</for>>\ \ <<if _Leveled is true>>\ <<Recalc>>\ @@color:LightGreen;You are now level $PC[$CC][$PClevel]!@@ Maximum health is now $PC[$CC][$PChpmax], and you have gained +<<print _StatGains>> stat point<<if _StatGains > 1>>s<<endif>>. <<if $PC[$CC][$PClevel] > 6>>\ <<set _ClassName to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<set _AchName to "fail">>\ <<if _ClassName is "peasant">>\ <<set _AchName to "Peasant Proficiency">>\ <<elseif _ClassName is "lumberjack">>\ <<set _AchName to "Lumberjacked up!">>\ <<elseif _ClassName is "prostitute">>\ <<set _AchName to "World's Oldest Professon">>\ <<elseif _ClassName is "warrior">>\ <<set _AchName to "Swords and spears">>\ <<elseif _ClassName is "scholar">>\ <<set _AchName to "Scholarly pursuits">>\ <<elseif _ClassName is "priest">>\ <<set _AchName to "Parson">>\ <<elseif _ClassName is "rogue">>\ <<set _AchName to "Sneaky McSneakerson">>\ <<elseif _ClassName is "mage">>\ <<set _AchName to "Magiferous Magery">>\ <<elseif _ClassName is "barbarian">>\ <<set _AchName to "Driven Before You">>\ <<elseif _ClassName is "monk">>\ <<set _AchName to "Peace in the Calm of the Horny">>\ <<elseif _ClassName is "ninja">>\ <<set _AchName to "Stabby Stealther">>\ <<elseif _ClassName is "paladin">>\ <<set _AchName to "Pally Power!">>\ <<elseif _ClassName is "guardian">>\ <<set _AchName to "Panzerheitschaftlichkeit">>\ <<endif>>\ \ <<if _AchName is "fail">>\ @@color:Red;Error in AwardXP achievement check: unrecognized class ID: " + _ClassName@@ <<else>>\ <<AwardAchievement _AchName>>\ <<endif>>\ <<elseif $PC[$CC][$PClevel] > 9>>\ <<AwardAchievement "Power Leveler">>\ <<endif>>\ <<endif>>\ <</widget>>\ <<widget "UpdateACandFlirts">>\ <<set _AcFromDex to ($PC[$CC][$PCdex] - 10) * 5>>\ <<set _AcFromEquip to 0>>\ <<set _AcFromMagic to setup.GetEffect("armor")>>\ <<set _BestMonk to setup.AchievementHandler("Best Monk", "HAS?", -1)>>\ <<if _BestMonk > 0>>\ <<set _AcFromBestMonk to _BestMonk * 5>>\ <<else>>\ <<set _AcFromBestMonk to 0>>\ <<endif>>\ <<set _BestGuardian to setup.AchievementHandler("Best Guardian", "HAS?", -1)>>\ <<if _BestGuardian > 0>>\ <<set _AcFromBestGuardian to _BestGuardian * 5>>\ <<else>>\ <<set _AcFromBestGuardian to 0>>\ <<endif>>\ <<set _AcFromPotions to 0>>\ <<if setup.GetEffect("stoneskin") > 0>>\ <<set _AcFromPotions to $PC[$CC][$PClevel] * 5>>\ <<endif>>\ \ <<set _EnchantBonuses to setup.GetEnchantBonuses($CC)>>\ <<set _AcFromEnchants to _EnchantBonuses.Defense>>\ \ <<set _FlirtFromEquip to 0>>\ \ <<set _MonkArmor to 0>>\ <<set _IsMonk to false>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "monk">>\ <<set _IsMonk to true>>\ <<endif>>\ \ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.equippable is true>>\ <<if $PC[$CC][$PCbp][_i].equip[0] neq 0>>\ <<DescribeItem $PC[$CC][$PCbp][_i].equip>>\ <<set _AcFromEquip to _AcFromEquip + $ItemPoke.armor>>\ <<set _FlirtFromEquip to _FlirtFromEquip + $ItemPoke.flirt>>\ <<elseif _IsMonk is true>>\ <<set _MonkArmor to _MonkArmor + $PC[$CC][$PClevel]>>\ <<endif>>\ <<endif>>\ <</for>>\ <<set $PC[$CC][$PCac] to [_AcFromDex, _AcFromEquip, $PC[$CC][$PCmorphBONI].ac, _AcFromMagic, _AcFromBestMonk, _AcFromPotions, _AcFromEnchants, _MonkArmor, _AcFromBestGuardian]>>\ <<set $PC[$CC][$PCFlirtFromEquip] to _FlirtFromEquip>>\ <</widget>>\ <<widget "GetPlayerAbsorption">>\ <<set _AbsVal to 0>>\ <<set _AbsText to "debug">>\ <<set _AbsCount to 0>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "barbarian">>\ <<set _AbsVal to _AbsVal +1>>\ <<set _AbsText to "Barbarian: (+1)<br>">>\ <<set _AbsCount to _AbsCount +1>>\ <<endif>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "guardian">>\ <<set _AbsVal to _AbsVal + $PC[$CC][$PClevel]>>\ <<set _AbsText to "Guardian: (+" + $PC[$CC][$PClevel] + ")<br>">>\ <<set _AbsCount to _AbsCount +1>>\ <<endif>>\ <<if setup.PlayerHasPerk("Pacifist") is true>>\ <<set _AbsVal to _AbsVal +1>>\ <<set _AbsText to _AbsText + "Perk: Pacifist: (+1)<br>">>\ <<set _AbsCount to _AbsCount +1>>\ <<endif>>\ <<if setup.PlayerHasPerk("Durable") is true>>\ <<set _AbsVal to _AbsVal +1>>\ <<set _AbsText to _AbsText + "Perk: Durable (+1)<br>">>\ <<set _AbsCount to _AbsCount +1>>\ <<endif>>\ <<set $PC[$CC][$PCabsorb] to _AbsVal>>\ <<if _AbsCount > 1>>\ <<set _AbsText to "" + _AbsVal + "<br>" + _AbsText>>\ <<endif>>\ <<if _args[0] is "show">>\ <<if _AbsCount > 0>>\ <<print _AbsText>>\ <<else>>\ None <<endif>>\ <<endif>>\ <<set $PC[$CC][$PCabsorb] to _AbsVal>>\ <</widget>>\ <<widget "PreambleAvatarClick">>\ <<set _Who to $args[0]>>\ <<replace "#CharInfo">>\ <<if $PC[_Who][$PCstate] is "alive">>\ @@color:Yellow;<<print $PC[_Who][$PCname]>>@@ (Alive) Level <<print $PC[_Who][$PClevel]>> <<print setup.PtrToClass($PC[_Who][$PCclass])>>, <<print $PC[_Who][$PCxp]>>/<<print setup.XpNeeded($PC[_Who][$PClevel])>> xp Generation: <<print $PC[_Who][$PCgen]>>, reincarnation bonus: <<print $PC[_Who][$PCretirementcap]>> <<if $PC[_who][$PClocation] is "town">>\ Location: The Town of Crescentheart <<elseif $PC[_who][$PClocation] is "tower">>\ Location: Tower of Triumph, level <<print $PC[_who][$PCz]>> <<elseif $PC[_who][$PClocation] is "forest">>\ Location: Enchanted Forest, level <<print $PC[_who][$PCfz]>> <<elseif $PC[_who][$PClocation] is "desert">>\ Location: Southern desert, level <<print $PC[_who][$PCdz]>> <<else>>\ @@error: unrecognized location: $PC[_who][$PClocation]@@ <<endif>>\ <<elseif $PC[_Who][$PCstate] is "dead">>\ @@color:Yellow;<<print $PC[_Who][$PCname]>>@@ @@color:Red;(Dead)@@ Level <<print $PC[_Who][$PClevel]>> <<print setup.PtrToClass($PC[_Who][$PCclass])>>, <<print $PC[_Who][$PCxp]>>/<<print setup.XpNeeded($PC[_Who][$PClevel])>> xp Generation: <<print $PC[_Who][$PCgen]>>, reincarnation bonus: <<print $PC[_Who][$PCretirementcap]>> <<if $PC[_who][$PClocation] is "town">>\ Location: Church of Immaculate Rebirth, Crescentheart <<elseif $PC[_who][$PClocation] is "tower">>\ Location: Tower of Triumph, level <<print $PC[_who][$PCz]>> <<elseif $PC[_who][$PClocation] is "forest">>\ Location: Enchanted Forest, level <<print $PC[_who][$PCfz]>> <<elseif $PC[_who][$PClocation] is "desert">>\ Location: Southern desert, level <<print $PC[_who][$PCdz]>> <<else>>\ @@error: unrecognized location: $PC[_who][$PClocation]@@ <<endif>>\ <<elseif $PC[_Who][$PCstate] is "retired">>\ @@color:Yellow;Ready to reincarnate!@@ Generation: <<print $PC[_Who][$PCgen] +1>>, reincarnation bonus: <<print $PC[_Who][$PCretirementcap]>> <<elseif $PC[_Who][$PCstate] is "lost">>\ @@color:Yellow;<<print $PC[_Who][$PCname]>>@@ (Lost) Level <<print $PC[_Who][$PClevel]>> <<print setup.PtrToClass($PC[_Who][$PCclass])>>, <<print $PC[_Who][$PCxp]>>/<<print setup.XpNeeded($PC[_Who][$PClevel])>> xp Generation: <<print $PC[_Who][$PCgen]>>, reincarnation bonus: <<print $PC[_Who][$PCretirementcap]>> <<if $PC[_who][$PClocation] is "town">>\ Last known location: Church of Immaculate Rebirth, Crescentheart <<elseif $PC[_who][$PClocation] is "tower">>\ Last known location: Tower of Triumph, level <<print $PC[_who][$PCz]>> <<elseif $PC[_who][$PClocation] is "forest">>\ Last known location: Enchanted Forest, level <<print $PC[_who][$PCfz]>> <<elseif $PC[_who][$PClocation] is "desert">>\ Last known location: Southern desert, level <<print $PC[_who][$PCdz]>> <<else>>\ Last known location @@error: unrecognized location: $PC[_who][$PClocation]@@ <<endif>>\ <<elseif $PC[_Who][$PCstate] is "in transit">>\ @@color:Yellow;<<print $PC[_Who][$PCname]>>@@ (In transit) <<set _PickupPTR to $PC[_Who][$PCz]>>\ This character's body was picked up by <<print $PC[_PickupPTR][$PCname]>>, and is currently in transit. <<else>>\ <<if _Who is 0>>\ @@color:Yellow;Character slot is available!@@ <<elseif _Who is 1>>\ <<if setup.AchievementHandler("I feel your loss", "HAS?", -1) > 0>>\ @@color:Yellow;Character slot is available!@@ <<else>>\ @@color:Yellow;Character slot is locked@@ (Try progressing through the tutorial quests at the guild to unlock it) <<endif>>\ <<elseif _Who is 2>>\ <<if setup.AchievementHandler("Three's Company", "HAS?", -1) > 0>>\ @@color:Yellow;Character slot is available!@@ <<else>>\ @@color:Yellow;Character slot is locked@@ (Try progressing through the tutorial quests at the guild to unlock it) <<endif>>\ <<else>>\ @@color:Interface error: PreambleAvatarClick request for: (_Who)) <<endif>>\ <<endif>>\ <</replace>>\ <</widget>>\ <<widget "PreambleShowCharacterInterface">>\ <<set _who to $args[0]>>\ <<set _action to "default">>\ <<if $PC[_who][$PCstate] is "alive">>\ <<set _p to $AvatarPath + $PC[_who][$PCavatar][0] + $PC[_who][$PCavatar][1] +".png">>\ <<if $PC[_who][$PClocation] is "tower">>\ <<set _LinkText to "Play!">>\ <<set _action to "Dungeon64">>\ <<elseif $PC[_who][$PClocation] is "town">>\ <<set _LinkText to "Play!">>\ <<set _action to "TownSquare">>\ <<elseif $PC[_who][$PClocation] is "forest">>\ <<set _LinkText to "Play!">>\ <<set _action to "Forest">>\ <<elseif $PC[_who][$PClocation] is "desert">>\ <<set _LinkText to "Play!">>\ <<set _action to "Desert">>\ <<endif>>\ <<elseif $PC[_who][$PCstate] is "dead">>\ <<set _p to $ImgPath + "boxdead.jpg">>\ <<set _LinkText to "Reincarnate!">>\ <<set _action to "CharGen">>\ <<elseif $PC[_who][$PCstate] is "lost">>\ <<set _p to $ImgPath + "boxdead.jpg">>\ <<set _LinkText to "Reincarnate!">>\ <<set _action to "CharGen">>\ <<elseif $PC[_who][$PCstate] is "in transit">>\ <<set _p to $ImgPath + "boxavail.jpg">>\ <<set _LinkText to "Body in transit">>\ <<set _action to "none">>\ <<elseif $PC[_who][$PCstate] is "retired">>\ <<set _p to $ImgPath + "boxavail.jpg">>\ <<set _LinkText to "Reincarnate!">>\ <<set _action to "CharGen">>\ <<elseif $PC[_who][$PCstate] is "none">>\ <<if _who is 0>>\ <<set _p to $ImgPath + "boxavail.jpg">>\ <<set _LinkText to "Create">>\ <<set _action to "CharGen">>\ <<elseif _who is 1>>\ <<if setup.AchievementHandler("I feel your loss", "HAS?", -1) > 0>>\ <<set _p to $ImgPath + "boxavail.jpg">>\ <<set _LinkText to "Create">>\ <<set _action to "CharGen">>\ <<else>>\ <<set _p to $ImgPath + "boxlocked.jpg">>\ <<set _LinkText to "(Slot locked)">>\ <<set _action to "none">>\ <<endif>>\ <<elseif _who is 2>>\ <<if setup.AchievementHandler("Three's Company", "HAS?", -1) > 0>>\ <<set _p to $ImgPath + "boxavail.jpg">>\ <<set _LinkText to "Create">>\ <<set _action to "CharGen">>\ <<else>>\ <<set _p to $ImgPath + "boxlocked.jpg">>\ <<set _LinkText to "(Slot locked)">>\ <<set _action to "none">>\ <<endif>>\ <<else>>\ @@color:Error in interface: who is: _who@@ <<endif>>\ <<endif>>\ \ <<capture _who>>\ <span class="PreambleImgWrapper">\ <span id="ReplaceThis">\ <<link [img[_p]]>> <<PreambleAvatarClick _who>> <</link>>\ </span>\ </span>\ <</capture>>\ <<if _action is "none">>\ <<print _LinkText>>\ <<else>>\ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree"]>>\ <<set _KeyChars to ["1","2","3"]>>\ <span @id="_SpanTexts[_who]">\ <<set _LinkText to _KeyChars[_who] + ") " + _LinkText>>\ <<capture _who>>\ <<link _LinkText _action>> <<set $CC to _who>> <</link>> <</capture>>\ </span>\ <<endif>>\ <</widget>>\ <<widget "KickFromTower">>\ <<set $PC[$CC][$PClocation] to "town">>\ <<set $PC[$CC][$PCz] to 0>>\ <<set $PC[$CC][$PCx] to $WORLD.TowerOrigin[0]>>\ <<set $PC[$CC][$Pyx] to $WORLD.TowerOrigin[1]>>\ <</widget>>\ <<widget "AssignHumanoidAnatomyToMon">>\ <<set _Atype to $args[0]>>\ <<set _Asex to $args[1]>>\ <<set _Abonus to $args[2]>>\ <<set $Mon.anatomy to []>>\ <<if _Asex is "male">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: _Atype }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: _Atype }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: _Atype }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: _Atype }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: _Atype }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: _Atype }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: _Atype }>>\ <<set $Mon.anatomy[11] to { type: $BPfeet, morph: _Atype }>>\ <<set $Mon.anatomy[12] to { type: $BPpenis, morph: _Atype }>>\ <<elseif _Asex is "female">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: _Atype }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: _Atype }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: _Atype }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: _Atype }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: _Atype }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: _Atype }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: _Atype }>>\ <<set $Mon.anatomy[11] to { type: $BPfeet, morph: _Atype }>>\ <<set $Mon.anatomy[12] to { type: $BPboobs, morph: _Atype }>>\ <<set $Mon.anatomy[13] to { type: $BPpussy, morph: _Atype }>>\ <<elseif _Asex is "herm">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: _Atype }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: _Atype }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: _Atype }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: _Atype }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: _Atype }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: _Atype }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: _Atype }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: _Atype }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: _Atype }>>\ <<set $Mon.anatomy[11] to { type: $BPfeet, morph: _Atype }>>\ <<set $Mon.anatomy[12] to { type: $BPpenis, morph: _Atype }>>\ <<set $Mon.anatomy[13] to { type: $BPboobs, morph: _Atype }>>\ <<set $Mon.anatomy[14] to { type: $BPpussy, morph: _Atype }>>\ <<else>>\ @@color:Red;Error in AssignHumanoidAnatomyToMon: (_Atype, _Asex) <<endif>>\ <<if _Abonus is "tail">>\ <<set $Mon.anatomy[$Mon.anatomy.length] to { type: $BPtail, morph: _Atype }>>\ <<endif>>\ <</widget>>\ <<widget "AddToGraveyard">>\ <<for _i to 9; _i > 0; _i-->> <<set $RETIREES[_i] to $RETIREES[_i -1]>>\ <</for>>\ <<set $RETIREES[0] to { name: $PC[$CC][$PCname], gen: $PC[$CC][$PCgen], level: $PC[$CC][$PClevel], class: setup.PtrToClass($PC[$CC][$PCclass]), gold: $PC[$CC][$PCcoin], maxforest: $PC[$CC][$PChfze], maxtower: $PC[$CC][$PChtze], maxdesert: $PC[$CC][$PChdze], year: $WORLD.year, day: $WORLD.day, won: $PC[$CC][$PCmisc].battleswon, death: "retired" }>>\ <</widget>>\ <<widget "PlayBGM">>\ <<if $WORLD.MusicEnabled is false>>\ <<masteraudio stop>>\ <<else>>\ <<if $args[0] is $WORLD.music>>\ <<else>>\ <<set $WORLD.music to $args[0]>>\ <<if $args[0] is "menu">>\ <<masteraudio stop>>\ <<audio "menu_bgm" volume 0.4 play loop>>\ <<elseif $args[0] is "town">>\ <<masteraudio stop>>\ <<audio "town_bgm" volume 0.4 play loop>>\ <<elseif $args[0] is "explore">>\ <<masteraudio stop>>\ <<audio "explore_bgm" volume 0.4 play loop>>\ <<elseif $args[0] is "combat">>\ <<masteraudio stop>>\ <<audio "combat_bgm" volume 0.4 play loop>>\ <<elseif $args[0] is "boss">>\ <<masteraudio stop>>\ <<audio "boss_bgm" volume 0.4 play loop>>\ <<else>>\ <<masteraudio stop>>\ <<endif>>\ <<endif>>\ <<endif>>\ <</widget>>\ <<widget "SpellbookQWE">>\ <<set _Spell = $args[0]>>\ <<set _QWE to $args[1]>>\ <<set _CssStuff to "grayb">>\ <<set _ButtonText to "[" + _QWE + "]">>\ <<set _SpanID to _QWE + _Spell>>\ <<if $PC[$CC][$PCspellbook][_QWE] is _Spell>>\ <<set _CssStuff to "blueb">>\ <<endif>>\ <span @class="_CssStuff" @id="_SpanID">\ <<capture _Spell, _QWE>>\ <<button _ButtonText>>\ <<set _SpellSpans to ["firebolt","heal","armor","poison","soultrap"]>>\ <<for _SBI to 0; _SBI < _SpellSpans.length; _SBI++>>\ <<set _SpellKey to _SpellSpans[_SBI]>>\ <<if $PC[$CC][$PCspellbook][_SpellKey] > 0>> <<set _GrayThisButton to _QWE + _SpellSpans[_SBI]>>\ <<set _asd to setup.ChangeButtonClass(_GrayThisButton,"grayb")>> <<endif>> <</for>>\ <<if $PC[$CC][$PCspellbook][_QWE] is _Spell>>\ <<set $PC[$CC][$PCspellbook][_QWE] to "">>\ <<else>>\ <<set _BlueThisButton to _QWE + _Spell>>\ <<set _asd to setup.ChangeButtonClass(_BlueThisButton,"blueb")>> <<set $PC[$CC][$PCspellbook][_QWE] to _Spell>>\ <<endif>>\ <</button>>\ <</capture>>\ </span>\ <</widget>>\ <<widget "ClearTemporaryEffects">>\ <<for _CBE to $PC[$CC][$PCeffects].length -1; _CBE > -1; _CBE-->>\ <<if $PC[$CC][$PCeffects][_CBE][0].includes("ebbed")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("oison")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("rmor")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("raying")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("soul")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("toneskin")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<elseif $PC[$CC][$PCeffects][_CBE][0].includes("esist")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "DecrementEffects">>\ <<for _DE to $PC[$CC][$PCeffects].length -1; _DE > -1; _DE-->>\ <<if $PC[$CC][$PCeffects][_DE][0].includes("ight")>>\ <<set $PC[$CC][$PCeffects][_DE][1] to $PC[$CC][$PCeffects][_DE][1] - _args[0]>>\ <<elseif $PC[$CC][$PCeffects][_DE][0].includes("roused")>>\ <<set $PC[$CC][$PCeffects][_DE][1] to $PC[$CC][$PCeffects][_DE][1] - _args[0]>>\ <<elseif $PC[$CC][$PCeffects][_DE][0].includes("ttract")>>\ <<set $PC[$CC][$PCeffects][_DE][1] to $PC[$CC][$PCeffects][_DE][1] - _args[0]>>\ <<elseif $PC[$CC][$PCeffects][_DE][0].includes("ertile")>>\ <<set $PC[$CC][$PCeffects][_DE][1] to $PC[$CC][$PCeffects][_DE][1] - _args[0]>>\ <<endif>>\ <<if $PC[$CC][$PCeffects][_DE][1] < 1>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_DE)>>\ <<endif>>\ <</for>>\ <<ShowActiveEffects>>\ <</widget>>\ <<widget "ShowActiveEffects">>\ <<if $PC[$CC][$PCeffects].length > 0>>\ <<replace "#capeffects">>\ @@color:Gold;Active effects@@ <<for _SAE to 0; _SAE < $PC[$CC][$PCeffects].length; _SAE++>>\ <<print $PC[$CC][$PCeffects][_SAE][0]>>: <<print $PC[$CC][$PCeffects][_SAE][1]>> <</for>>\ <hr>\ <</replace>>\ <<else>>\ <<replace "#capeffects">><</replace>>\ <<endif>>\ <</widget>>\ <<widget "ApplyEffect">>\ <<set _AEwhich to $args[0]>>\ <<set _AEweight to $args[1]>>\ <<set _AEtarget to -1>>\ <<set _AElength to $PC[$CC][$PCeffects].length>>\ <<for _AEi to 0; _AEi < _AElength; _AEi++>>\ <<if $PC[$CC][$PCeffects][_AEi][0] is _AEwhich>>\ <<set _AEtarget to _AEi>>\ <<set _AEi to 999>>\ <<endif>>\ <</for>>\ <<if _AEtarget > -1>>\ <<set $PC[$CC][$PCeffects][_AEtarget][1] to $PC[$CC][$PCeffects][_AEtarget][1] + _AEweight>>\ <<else>>\ <<set $PC[$CC][$PCeffects][_AElength] to [_AEwhich, _AEweight]>>\ <<endif>>\ <</widget>>\ <<widget "SpellAchieveCheck">>\ <<AwardAchievement "Scholar">>\ <<set _SAC to 0>>\ <<set _MageReady to true>>\ <<set _SpellList to ["firebolt","armor","poison","heal","up","down","portal","map","light","soultrap"]>>\ <!-- cure? -->\ <!-- passwall? --> <<for _SACi to 0; _SACi < _SpellList.length; _SACi++>>\ <<set _key to _SpellList[_SACi]>>\ <<if $PC[$CC][$PCspellbook][_key] is 0>>\ <<set _MageReady to false>>\ <<endif>>\ <</for>>\ <<if _MageReady is true>>\ <<AwardAchievement "Mage">>\ <<endif>>\ <</widget>>\ <<widget "ResetWorld">>\ <<set $WORLD to {}>> <<set $WORLD.GameVersion to "Build 23.7.05">> <<set $WORLD.MusicEnabled to true>> <<set $WORLD.intro to 0>> <<set $WORLD.selene to 0>> <<set $WORLD.SeleneQuests to [0,0,0,0,0,0,0,0,0,0]>>\ <<set $WORLD.DaphneQuests to [0,0,0,0,0,0,0,0,0,0]>>\ <<set $WORLD.smith to 0>> <<set $WORLD.smithLevel to 0>> <<set $WORLD.SmithQuests to [either(0,1),0]>> <<set $WORLD.market to 0>> <<set $WORLD.gstore to 0>> <<set $WORLD.pawn to 0>> <<set $WORLD.house to {state: 0, piggybank: -1, bed: 0, storage: 0}>>\ <<set $WORLD.guild to 0>> <<set $WORLD.tsquare to 0>> <<set $WORLD.bridge to 0>> <<set $WORLD.MobileMode to 0>> <<set $WORLD.CombatInterrupt to "">>\ <<set $WORLD.quests to []>> <<set $WORLD.quests[0] to { state: "avail" }>> <<set $WORLD.quests[1] to { state: "avail", target: "bunny", startat: 0 }>> <<set $WORLD.quests[2] to { state: "avail", target: "bunny", progress: 0 }>> <<set $WORLD.quests[3] to { state: "inactive" }>> <<set $WORLD.quests[4] to { state: "inactive" }>> <<set $WORLD.quests[5] to { state: "inactive", reward: 50, gen: 1 }>> <<set $WORLD.quests[6] to { state: "inactive" }>> <<set $WORLD.quests[7] to { state: "inactive", harmony: -1 }>> <<set $WORLD.MainQuest to []>> <<set $WORLD.MainQuest[0] to { state: "inactive" }>> <<set $WORLD.MainQuest[1] to { state: "inactive" }>> <<set $WORLD.MainQuest[2] to { state: "inactive" }>> <<set $WORLD.MainQuest[3] to { state: "inactive" }>> <<set $WORLD.MainQuest[4] to { state: "inactive" }>> <<set $WORLD.MainQuest[5] to { state: "inactive" }>> <<set $WORLD.MainQuest[6] to { state: "inactive" }>> <<set $WORLD.MainQuest[7] to { state: "inactive" }>> <<set $WORLD.datapasser to 0>> <<set $WORLD.charslots to 1>> <<set $WORLD.turnssincecombat to 0>> <<set $WORLD.Bodyview to 0>> <<set $WORLD.minute to 0>> <<set $WORLD.hour to 8>> <<set $WORLD.day to 1>> <<set $WORLD.year to 1>> <<set $WORLD.dundim to 6>> <<set $WORLD.DunDims to []>> <<set $WORLD.DunDimX = 14>> <<set $WORLD.DunDimY = 7>> <<set $WORLD.dungenned to [0,0]>> <<set $WORLD.dungeonthemes to []>> <<set $WORLD.dungeonthemes[0] to ["Brick","Random"]>> <<set $WORLD.dungeonthemes[1] to ["Brick","Random"]>> <<set $WORLD.Circle to 0>>\ <<set $WORLD.restock to 0>> <<set _a to either("The Barfing ", "The Irresponsible ", "The Lethargic ", "The Irreverent ", "The Peppy ")>> <<set _b to either("Yak ","Pangolin ","Shrew ","Wombat ","Porpoise ")>> <<set _c to either("Tavern","Inn","Inn and Tavern")>> <<set $WORLD.tavernname to _a + _b + _c>> <<set $WORLD.tavern to 0>> <<set $WORLD.diedby to "">> <<set $WORLD.dialogue to 0>> <<set $WORLD.HTZE to 0>>\ <<set $WORLD.HFZE to 0>>\ <<set $WORLD.HDZE to 0>>\ <<set $WORLD.Piggybank to 0>> <<set $WORLD.ForestTheme to 1>> <<set $WORLD.ForestDims to []>> <<set $WORLD.ForestDims[0] to 14>> <<set $WORLD.ForestDims[1] to 7>> <<set $WORLD.TreeCutter to false>> <<set $WORLD.LightRadius to 1>> <<set $WORLD.TowerOrigin to [1,1]>> <<set $WORLD.DesertDims to []>> <<set $WORLD.DesertDims[0] to 14>> <<set $WORLD.DesertDims[1] to 14>> <<set $WORLD.CharLocs to []>> <<for _i to 0; _i < 3; _i++>> <<set $WORLD.CharLocs[_i] to []>> <<set $WORLD.CharLocs[_i][0] to "lost">> <<set $WORLD.CharLocs[_i][1] to -1>> <<set $WORLD.CharLocs[_i][2] to -1>> <<set $WORLD.CharLocs[_i][3] to -1>> <<set $WORLD.CharLocs[_i][4] to 1>> <</for>> <<set $STORE to []>> <<set $Selene to 0>> <<set $Smith to 1>> <<set $GStore to 2>> <<set $Tavern to 3>> <<set $Pawn to 4>> <<set $House to 5>> <<set $LumberMill to 6>> <<set $Daphne to 7>> <<set $STORE[$Selene] to []>> <<set $STORE[$Smith] to []>> <<set $STORE[$GStore] to []>> <<set $STORE[$Tavern] to []>> <<set $STORE[$Pawn] to []>> <<set $STORE[$House] to []>> <<set $STORE[$LumberMill] to []>> <<set $STORE[$Daphne] to []>> <<for _i to 0; _i < 10; _i++>> <<set $STORE[$Selene][_i] to [0,0,0,0]>>\ <<set $STORE[$Smith][_i] to [0,0,0,0]>>\ <<set $STORE[$GStore][_i] to [0,0,0,0]>>\ <<set $STORE[$Tavern][_i] to [0,0,0,0]>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>>\ <<set $STORE[$LumberMill][_i] to [0,0,0,0]>>\ <<set $STORE[$Daphne][_i] to [0,0,0,0]>>\ <</for>> <<for _i to 0; _i < 5; _i++>> <<set $STORE[$House][_i] to [0,0,0,0]>>\ <</for>>\ <<Restock "all">> <</widget>> <<widget "StandardKeyboardShortcuts">>\ <span id="KeypZ">\ <<link "">>\ <<script>> Dialog.setup("Character statistics"); Dialog.wiki(Story.get("ViewStats").processText()); Dialog.open(); <</script>> <</link>>\ </span>\ <span id="KeypI">\ <<link "">>\ <<script>> Dialog.setup("Inventory"); Dialog.wiki(Story.get("Inventory").processText()); Dialog.open(); <</script>>\ <</link>>\ </span>\ <span id="KeypX">\ <<link "">>\ <<script>> Dialog.setup("Body"); Dialog.wiki(Story.get("Body").processText()); Dialog.open(); <</script>>\ <</link>>\ </span>\ <span id="KeypB">\ <<link "">>\ <<script>> Dialog.setup("Spellbook"); Dialog.wiki(Story.get("Spellbook").processText()); Dialog.open(); <</script>> <</link>>\ </span>\ <span id="KeypU">\ <<link "">>\ <<script>> Dialog.setup("Unlocks"); Dialog.wiki(Story.get("Unlocks").processText()); Dialog.open(); <</script>> <</link>>\ </span>\ <</widget>>\ <<widget "CharGenShowIcons">>\ <table><tr>\ <<for _ShowAVS to 1; _ShowAVS < 5; _ShowAVS++>>\ <<capture _ShowAVS>>\ <td>\ <<if $PC[$CC][$PCicon] is _ShowAVS>>\ <span style = ""><<set _q to $ImgPath + "icon" + _ShowAVS + ".png">><<link [img[_q]]>><</link>></span>\ <<else>>\ <span style = "filter: grayscale(100%)">\ <<set _q to $ImgPath + "icon" + _ShowAVS + ".png">>\ <<link [img[_q]]>>\ <<set $PC[$CC][$PCicon] to _ShowAVS>>\ <<replace "#CharGenICONS">><<CharGenShowIcons>><</replace>>\ <</link>>\ </span>\ <<endif>>\ </td>\ <</capture>>\ <</for>>\ </tr></table>\ <br>\ <table><tr>\ <<for _ShowAVS to 5; _ShowAVS < 9; _ShowAVS++>>\ <<capture _ShowAVS>>\ <td>\ <<if $PC[$CC][$PCicon] is _ShowAVS>>\ <span style = ""><<set _q to $ImgPath + "icon" + _ShowAVS + ".png">><<link [img[_q]]>><</link>></span>\ <<else>>\ <span style = "filter: grayscale(100%)">\ <<set _q to $ImgPath + "icon" + _ShowAVS + ".png">>\ <<link [img[_q]]>>\ <<set $PC[$CC][$PCicon] to _ShowAVS>>\ <<replace "#CharGenICONS">><<CharGenShowIcons>><</replace>>\ <</link>>\ </span>\ <<endif>>\ </td>\ <</capture>>\ <</for>>\ </tr></table>\ <</widget>>\ <<widget "CharGenShowAvatars">>\ <<if $WORLD.MobileMode is 1>>\ <table><tr><td>\ <span id="CapAvatar">\ <<set _q to $AvatarPath + "Human100.png">>\ <<link [img[_q]]>>\ <</link>>\ </span>\ </td></tr><tr><td> <<button "[Change Avatar]">> <<script>> Dialog.setup("Avatar configuration"); Dialog.wiki(Story.get("AvatarChooser").processText()); Dialog.open(); <</script>> <</button>> </td></tr></table>\ <<else>>\ <table><tr>\ <<for _ShowAVS to 100; _ShowAVS < 106; _ShowAVS++>>\ <<capture _ShowAVS>>\ <td>\ <<if $PC[$CC][$PCavatar][1] is _ShowAVS>>\ <span style = "filter: grayscale(0%)"><<set _q to $AvatarPath + $PC[$CC][$PCavatar][0] + _ShowAVS + ".png">><<link [img[_q]]>><</link>></span>\ <<else>>\ <span style = "filter: grayscale(100%)">\ <<set _q to $AvatarPath + $PC[$CC][$PCavatar][0] + _ShowAVS + ".png">>\ <<link [img[_q]]>>\ <<set $PC[$CC][$PCavatar][1] to _ShowAVS>>\ <<replace "#CharGenAVATARS">><<CharGenShowAvatars>><</replace>>\ <</link>>\ </span>\ <<endif>>\ <<if _ShowAVS is 105>><br><<endif>>\ </td>\ <</capture>>\ <</for>>\ </tr></table>\ <<endif>>\ <</widget>>\ <<set _MOO to setup.AchievementHandler(-1, "FETCH ALL DATA", -1)>>\ \ <span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span> <<button "[Perms]">> <<replace "#AchievementPortal">><<ShowAchPerms>><</replace>>\ <</button>> | \ <<button "[New character unlocks]">> <<replace "#AchievementPortal">><<ShowAchChargen>><</replace>>\ <</button>> | \ <<button "[Perks]">> <<replace "#AchievementPortal">><<ShowAchPerks>><</replace>>\ <</button>> | \ <<button "[Perk points]">> <<replace "#AchievementPortal">><<ShowAchPerkPoints>><</replace>>\ <</button>> | \ <<button "[Highest level as class]">> <<replace "#AchievementPortal">><<ShowAchHighestLevels>><</replace>>\ <</button>> <hr>\ <span id="AchievementPortal"></span> <span id="debuginfo">\ <<if $DebugMode>>\ Achievements array: <<print $Achievements>> <<print _MOO.length>> <<print $Achievements.length>> <<for _i to 0; _i < _MOO.length; _i++>>\ _i) <<print _MOO[_i].name>><br> <</for>>\ <<endif>>\ </span>\<span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span>\ \ <hr>\ \ <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>>\ \ <<UpdateMorphs>>\ <table>\ <tr >\ <td style="vertical-align: top;border: 20px solid #111111;">\ \ <<set _p to $AvatarPath + $PC[$CC][$PCavatar][0] + $PC[$CC][$PCavatar][1] +".png">>\ <img @src="_p" style="width:200px"> <<link "Change Avatar">> <<script>> Dialog.setup("Avatar configuration"); Dialog.wiki(Story.get("AvatarChooser").processText()); Dialog.open(); <</script>> <</link>> <hr>\ @@color:Gold;<<print $PC[$CC][$PCname]>>@@ <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<print $PC[$CC][$PCsex]>> <<print $PC[$CC][$PCmorph]>> _job <<set _lev to $PC[$CC][$PClevel]>>\ <<set _xp to $PC[$CC][$PCxp]>>\ <<set _xpneed to setup.XpNeeded($PC[$CC][$PClevel])>>\ Level: _lev, _xp/_xpneed experience <hr>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ @@color:Gold;Attributes@@ <span id="unspentpoints">Available points: <<print $PC[$CC][$PCunspentPoints]>></span> <<button "[+]">>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCstr] to $PC[$CC][$PCstr] + 1>>\ <<replace "#unspentpoints">>Available points: <<print $PC[$CC][$PCunspentPoints]>><</replace>> <<replace "#str">><<print $PC[$CC][$PCstr]>> (<<DescribeStat $PCstr>>)<</replace>> <<StatsScreenAchievementCheck>>\ <<endif>>\ <</button>> @@color:LightGreen;Strength :@@ <span id="str"><<print $PC[$CC][$PCstr]>> (<<DescribeStat $PCstr>>)</span> <<button "[+]">>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCdex] to $PC[$CC][$PCdex] + 1>>\ <<replace "#unspentpoints">>Available points: <<print $PC[$CC][$PCunspentPoints]>><</replace>> <<replace "#dex">><<print $PC[$CC][$PCdex]>> (<<DescribeStat $PCdex>>)<</replace>> <<StatsScreenAchievementCheck>>\ <<endif>>\ <</button>> @@color:LightGreen;Dexerity :@@ <span id="dex"><<print $PC[$CC][$PCdex]>> (<<DescribeStat $PCdex>>)</span> <<button "[+]">>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCcon] to $PC[$CC][$PCcon] + 1>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + $PC[$CC][$PClevel]>>\ <<run Health2($PC[$CC][$PChpcur], $PC[$CC][$PChpmax], "hzhealthbar", true)>>\ <<replace "#unspentpoints">>Available points: <<print $PC[$CC][$PCunspentPoints]>><</replace>> <<replace "#con">><<print $PC[$CC][$PCcon]>> (<<DescribeStat $PCcon>>)<</replace>> <<StatsScreenAchievementCheck>>\ <<endif>>\ <</button>> @@color:LightGreen;Toughness :@@ <span id="con"><<print $PC[$CC][$PCcon]>> (<<DescribeStat $PCcon>>)</span> <<button "[+]">>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCint] to $PC[$CC][$PCint] + 1>>\ <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanacur] + 1>>\ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCmanamax] + 1>>\ <<replace "#unspentpoints">>Available points: <<print $PC[$CC][$PCunspentPoints]>><</replace>> <<replace "#int">><<print $PC[$CC][$PCint]>> (<<DescribeStat $PCint>>)<</replace>> <<StatsScreenAchievementCheck>>\ <<endif>>\ <</button>> @@color:LightGreen;Intellect :@@ <span id="int"><<print $PC[$CC][$PCint]>> (<<DescribeStat $PCint>>)</span> <<button "[+]">>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCwil] to $PC[$CC][$PCwil] + 1>>\ <<set $PC[$CC][$PChornycur] to $PC[$CC][$PChornycur] + 10>>\ <<set $PC[$CC][$PChornymax] to $PC[$CC][$PChornymax] + 10>>\ <<run Health2($PC[$CC][$PChornycur], $PC[$CC][$PChornymax], "hzhornybar", true)>>\ <<replace "#unspentpoints">>Available points: <<print $PC[$CC][$PCunspentPoints]>><</replace>> <<replace "#wil">><<print $PC[$CC][$PCwil]>> (<<DescribeStat $PCwil>>)<</replace>> <<StatsScreenAchievementCheck>>\ <<endif>>\ <</button>> @@color:LightGreen;Willpower :@@ <span id="wil"><<print $PC[$CC][$PCwil]>> (<<DescribeStat $PCwil>>)</span> <<else>>\ @@color:Gold;Attributes@@ @@color:LightGreen;Strength :@@ <<print $PC[$CC][$PCstr]>> (<<DescribeStat $PCstr>>) @@color:LightGreen;Dexterity:@@ <<print $PC[$CC][$PCdex]>> (<<DescribeStat $PCdex>>) @@color:LightGreen;Toughness:@@ <<print $PC[$CC][$PCcon]>> (<<DescribeStat $PCcon>>) @@color:LightGreen;Intellect:@@ <<print $PC[$CC][$PCint]>> (<<DescribeStat $PCint>>) @@color:LightGreen;Willpower:@@ <<print $PC[$CC][$PCwil]>> (<<DescribeStat $PCwil>>) <<endif>>\ <hr>\ @@color:Gold;Perks@@ <<if $PC[$CC][$PCperks].length <1>>\ None <<else>>\ <<for _i to 0; _i < $PC[$CC][$PCperks].length; _i++>>\ [<<print $PC[$CC][$PCperks][_i]>>] \ <</for>> <<endif>> <span id="statsinfo"></span>\ \ </td>\ <td style="vertical-align: top;border: 8px solid #111111;">\ \ <<set _CurrentClass to setup.PtrToClass($PC[$CC][$PCclass])>>\ \ <<set _BestPeasant to setup.AchievementHandler("Best Peasant", "HAS?", -1)>>\ <<set _BestLumberjack to setup.AchievementHandler("Best Lumberjack", "HAS?", -1)>>\ <<set _BestBarbarian to setup.AchievementHandler("Best Barbarian", "HAS?", -1)>>\ <<set _BestMonk to setup.AchievementHandler("Best Monk", "HAS?", -1)>>\ <<set _BestPaladin to setup.AchievementHandler("Best Paladin", "HAS?", -1)>>\ <<set _BestWarrior to setup.AchievementHandler("Best Warrior", "HAS?", -1)>>\ <<set _BestProstitute to setup.AchievementHandler("Best Prostitute", "HAS?", -1)>>\ <<set _BestGuardian to setup.AchievementHandler("Best Guardian", "HAS?", -1)>>\ \ <<set _EnchantBonuses to setup.GetEnchantBonuses($CC)>>\ \ @@color:Gold;Weapon attacks@@ To-hit bonus from dexterity: <<FormatPosNeg $PC[$CC][$PCtohit] "%">> <<if $PC[$CC][$PCmorphBONI].th > 0>>\ To-hit bonus from morphs: <<FormatPosNeg $PC[$CC][$PCmorphBONI].th "%">> <<endif>>\ <<if _EnchantBonuses.Accuracy > 0>>\ To-hit bonus from enchants: @@color:LightGreen;+<<print _EnchantBonuses.Accuracy>>%@@ <<endif>>\ <<set _str_mod to $PC[$CC][$PCstr] -10>>\ <<if _CurrentClass is "warrior">>\ Warrior class bonus: @@color:LightGreen;+<<print $PC[$CC][$PClevel] * 10>>%@@ <<endif>>\ <<if _BestWarrior > 0>>\ Best Warrior to-hit bonus: @@color:LightGreen;+<<print _BestWarrior * 5>>%@@ <<endif>>\ <<if _BestLumberjack > 0>>\ Best Lumberjack axe bonus: @@color:LightGreen;+<<print _BestLumberjack * 5>>%@@ <<endif>>\ <<if _CurrentClass is "lumberjack">>\ +<<print $PC[$CC][$PClevel]>> axe damage from lumberjack class bonus <<endif>>\ Damage from strength: <<FormatPosNeg _str_mod>> <<if _BestPaladin > 0>>\ Best Paladin damage bonus: @@color:LightGreen;+<<print _BestPaladin>>@@ <<endif>>\ @@color:Gold;Body attacks@@ To-hit bonus from dexterity: <<FormatPosNeg $PC[$CC][$PCtohit] "%">> <<set _THFM to $PC[$CC][$PCmorphBONI].th + $PC[$CC][$PCmorphBONI].bodyth>>\ To-hit bonus from morphs: <<FormatPosNeg _THFM "%">> <<if _EnchantBonuses.Accuracy > 0>>\ To-hit bonus from enchants: @@color:LightGreen;+<<print _EnchantBonuses.Accuracy>>%@@ <<endif>>\ <<if _BestBarbarian > 0>>\ Best barbarian to-hit bonus: @@color:LightGreen;+<<print _BestBarbarian * 5>>@@ <<endif>>\ <<set _str_mod to $PC[$CC][$PCstr] -10>>\ Damage from strength: <<FormatPosNeg _str_mod>> Damage from morphs: <<FormatPosNeg $PC[$CC][$PCmorphBONI].bodydam>> <<if _CurrentClass is "barbarian">>\ Barbarian damage bonus: @@color:LightGreen;+<<print $PC[$CC][$PClevel]>>@@ <<endif>>\ <<UpdateACandFlirts>>\ <<set _AcTotal to 0>>\ <<for _AcCycle to 0; _AcCycle < $PC[$CC][$PCac].length; _AcCycle++>>\ <<set _AcTotal to _AcTotal + $PC[$CC][$PCac][_AcCycle]>>\ <</for>>\ @@color:Gold;Defense@@ Defense from armor: <<FormatPosNeg $PC[$CC][$PCac][1] "%">> Defense from stats: <<FormatPosNeg $PC[$CC][$PCac][0] "%">> Defense from morphs: <<FormatPosNeg $PC[$CC][$PCac][2] "%">> <<if $PC[$CC][$PCac][4] > 0>>\ Defense from Best Monk: <<FormatPosNeg $PC[$CC][$PCac][4] "%">> <<endif>>\ <<if $PC[$CC][$PCac][3] > 0>>\ Defense from magic: <<FormatPosNeg $PC[$CC][$PCac][3] "%">> <<endif>>\ <<if $PC[$CC][$PCac][5] > 0>>\ Defense from potions: <<FormatPosNeg $PC[$CC][$PCac][5] "%">> <<endif>>\ <<if $PC[$CC][$PCac][6] > 0>>\ Defense from enchants: <<FormatPosNeg $PC[$CC][$PCac][6] "%">> <<endif>>\ <<if $PC[$CC][$PCac][7] > 0>>\ Unencumbered monk bonus: <<FormatPosNeg $PC[$CC][$PCac][7] "%">> <<endif>>\ Total melee defense: <<FormatPosNeg _AcTotal "%">> Damage absorption: <<GetPlayerAbsorption "show">>\ <<Recalc>>\ @@color:Gold;Maximum Health@@ (Level * toughness) = <<print $PC[$CC][$PClevel]>> * <<print $PC[$CC][$PCcon]>> = <<print $PC[$CC][$PClevel] * $PC[$CC][$PCcon]>> <<if $PC[$CC][$PCmorphQTY].wolf > 0>>\ +<<print $PC[$CC][$PCmorphQTY].wolf>> from wolf morphs <<endif>>\ <<if $PC[$CC][$PCmorphQTY].horse > 0>>\ +<<print $PC[$CC][$PCmorphQTY].horse * 2>> from horse morphs <<endif>>\ <<if $PC[$CC][$PCmorphQTY].cow > 0>>\ +<<print $PC[$CC][$PCmorphQTY].cow * 2>> from cow morphs <<endif>>\ <<if _EnchantBonuses.Health > 0>>\ +<<print _EnchantBonuses.Health>> from enchantments <<endif>>\ <<if _CurrentClass is "peasant">>\ +<<print $PC[$CC][$PClevel]>> from peasant class bonus <<endif>>\ <<if _BestPeasant > 0>>\ +<<print _BestPeasant>> from Best Peasant level <<endif>>\ <<if _BestGuardian > 0>>\ +<<print _BestGuardian * 2>> from Best Guardian level <<endif>>\ Total maximum health: <<print $PC[$CC][$PChpmax]>> @@color:Gold;Flirt power@@ <<set _gfp to setup.GetFlirtPower("none")>>\ <<if _gfp[1] > 0>>\ @@color:LightGreen;From penis:@@ <<print _gfp[1]>> <<endif>>\ <<if _gfp[2] > 0>>\ @@color:LightGreen;From boobs:@@ <<print _gfp[2]>> <<endif>>\ <<if _gfp[3] > 0>>\ @@color:LightGreen;From pussy:@@ <<print _gfp[3]>> <<endif>>\ <<if $PC[$CC][$PCFlirtFromEquip] neq 0>>\ @@color:LightGreen;From equipment:@@ <<print $PC[$CC][$PCFlirtFromEquip]>> <<endif>>\ <<if $PC[$CC][$PCmorphBONI].flirtth > 0>>\ @@color:LightGreen;From morphs:@@ <<print $PC[$CC][$PCmorphBONI].flirtth>> <<endif>>\ <<if _BestProstitute > 0>>\ @@color:LightGreen;Best Prostitute:@@ +<<print _BestProstitute>> <<endif>>\ \ <<set _tvM to (_gfp[2] * 10) + (_gfp[3] * 10) + ($PC[$CC][$PCFlirtFromEquip] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10) + (_BestProstitute * 10)>>\ <<set _tvF to (_gfp[1] * 10) + ($PC[$CC][$PCFlirtFromEquip] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10) + (_BestProstitute * 10)>>\ <<set _tvH to (_gfp[1] * 10) + (_gfp[2] * 10) + (_gfp[3] * 10) + ($PC[$CC][$PCFlirtFromEquip] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10) + (_BestProstitute * 10)>>\ <<set _tvM to Math.trunc(_tvM) / 10>>\ <<set _tvF to Math.trunc(_tvF) / 10>>\ <<set _tvH to Math.trunc(_tvH) / 10>>\ @@color:LightGreen;Total vs males:@@ _tvM @@color:LightGreen;Total vs females:@@ _tvF @@color:LightGreen;Total vs herms:@@ _tvH <<if $PC[$CC][$PCmorphBONI].flirtdam > 0>>\ @@color:LightGreen;Damage from morphs:@@ +<<print $PC[$CC][$PCmorphBONI].flirtdam>> <<endif>>\ <<if _job is "prostitute">>\ @@color:LightGreen;Damage from class level:@@ +<<print $PC[$CC][$PClevel]>> <<endif>>\ \ </td>\ <td style="vertical-align: top;border: 8px solid #111111;">\ \ @@color:Gold;Sex stats@@ <<set _vstats to 0>>\ <<if $PC[$CC][$PCsexACTS].malevirgin is true>>\ <<else>>\ <<set _vstats to 1>>\ <<endif>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<else>>\ <<set _vstats to _vstats +1>>\ <<endif>>\ <<set _f to $PC[$CC][$PCsexACTS]>>\ <<set _TechVirgin to _f.bjgiven + _f.bjreceived + _f.pussylickgiven + _f.pussylickreceived + _f.analgiven + _f.analreceived>>\ <<set _ShowFullStats to true>>\ <<if (_vstats is 0) and _TechVirgin is 0>>\ You are a beautiful, pristine virgin <<set _ShowFullStats to false>>\ <<elseif (_vstats is 0)>>\ You are still //technically// a virgin <<else>>\ <<if _vstats is 2>>\ You gave your male virginity to a $PC[$CC][$PCsexACTS].malevirgin You female virginity was taken by $PC[$CC][$PCsexACTS].femalevirgin <<else>>\ <<if $PC[$CC][$PCsexACTS].malevirgin neq true>>\ You gave your virginity to $PC[$CC][$PCsexACTS].malevirgin <<endif>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin neq true>>\ Your virginity was taken by $PC[$CC][$PCsexACTS].femalevirgin <<endif>>\ <<endif>>\ <<endif>>\ <<if _ShowFullStats is true>>\ <<if $PC[$CC][$PCsexACTS].bjgiven > 0>>\ Blowjobs given: <<print $PC[$CC][$PCsexACTS].bjgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].bjreceived > 0>>\ Blowjobs received: <<print $PC[$CC][$PCsexACTS].bjreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].pussylickgiven > 0>>\ Pussies licked: <<print $PC[$CC][$PCsexACTS].pussylickgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].pussylickreceived > 0>>\ Times your pussy has been licked: <<print $PC[$CC][$PCsexACTS].pussylickreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].vaginalreceived > 0>>\ Fucked in the pussy: <<print $PC[$CC][$PCsexACTS].vaginalreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].vaginalgiven > 0>>\ Cummed in a pussy: <<print $PC[$CC][$PCsexACTS].vaginalgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].analgiven > 0>>\ Asses fucked: <<print $PC[$CC][$PCsexACTS].analgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].analreceived > 0>>\ Fucked in the ass: <<print $PC[$CC][$PCsexACTS].analreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].semengiven > 0>>\ Total semen delivered: <<print $PC[$CC][$PCsexACTS].semengiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].semenreceived > 0>>\ Total semen received: <<print $PC[$CC][$PCsexACTS].semenreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].milked > 0>>\ Total milked volume: <<print $PC[$CC][$PCsexACTS].milked>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].scissored > 0>>\ Total vaginal scissoring: <<print $PC[$CC][$PCsexACTS].scissored>> <<endif>>\ <<endif>>\ @@color:Gold;Miscellaneous stats@@ @@color:LightGreen;Battles fought@@: $PC[$CC][$PCmisc].battles @@color:LightGreen;Battles lost@@: $PC[$CC][$PCmisc].battleslost @@color:LightGreen;Battles won@@: $PC[$CC][$PCmisc].battleswon @@color:LightGreen;Battles fled@@: $PC[$CC][$PCmisc].battlesfled @@color:LightGreen;Traps triggered@@: $PC[$CC][$PCmisc].traptrigger @@color:LightGreen;Traps avoided@@: $PC[$CC][$PCmisc].trapavoid @@color:LightGreen;Total healing@@: $PC[$CC][$PCspellbook].totalheal @@color:LightGreen;Gold earned@@: $PC[$CC][$PCmisc].gold @@color:LightGreen;Deaths@@: $PC[$CC][$PCmisc].deaths @@color:Gold;Adventuring stats@@ @@color:LightGreen;Highest tower level@@: $PC[$CC][$PChtze] @@color:LightGreen;Highest forest level@@: $PC[$CC][$PChfze] @@color:LightGreen;Highest desert level@@: $PC[$CC][$PChdze] @@color:LightGreen;Flirt victories@@: <<print $PC[$CC][$PCmisc].flirtvictory>> <<set _NameList to ["bunny","cat","fox","wolf","horse","ant","scorpion","centaur","human","goblin","slime","spider","imp","hellhound","cow","minotaur","drider","tentacle","naga","demon","Zehtalia","harpy","troll","ratkin","hydra","dinosaur","Neris","Charyss","wolfquad"]>>\ <<for _i to 0; _i < _NameList.length; _i++>>\ <<if $PC[$CC][$PCkills][_i] > 0>>\ @@color:LightGreen;<<print _NameList[_i].toUpperFirst()>> kills@@: <<print $PC[$CC][$PCkills][_i]>> <<endif>>\ <</for>> \ </td>\ </tr>\ </table>\<<if $PC[$CC][$PCz] < 0>>\ <<set $PC[$CC][$PCz] to 0>>\ <<endif>>\ \ <<if $WORLD.dungenned[$PC[$CC][$PCz]] < 1>>\ <<include "DunGen">>\ <<endif>>\ \ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "dungeon">>\ <<set $WORLD.dialogue to 0>> <<set $Dungeon[_px][_py][15] to 1>>\ \ @@color:LightGreen;Tower of Triumph, Shrine of the Goddess @@ \ <<if _pz is 0>>\ Ground floor\ <<else>>\ Level _pz\ <<endif>>\ <hr>\ @@color:LightGreen;Map@@ <canvas id="myCanvas" width="226" height="226" style="border:1px solid #d3d3d3;"> Your browser does not support the HTML canvas tag. </canvas> <hr>\ <span id ="roomdesc"></span>\ <span id ="eventtext"></span> <hr>\ <span id="navcontrols">\ @@color:LightGreen;Navigation@@ <<ShowNavControls>>\ </span> \ <<set _tempname to "Map-Blank">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-E">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-ES">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-ESW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-EW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-N">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NE">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NES">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NESW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NEW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NS">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NSW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-NW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-S">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-SW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "Map-W">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "UpStairsTop">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "UpStairsBottom">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "DownStairs">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="30" style="visibility: hidden;" img @src="_pic"/>\ <span id="debug"></span>\ <<timed 200ms>>\ <<MoveRefresh>>\ <<set _throwaway to setup.DrawMap(_px, _py)>>\ <</timed>>\ <!-- magic fountain -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventfountain.jpg">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ <<set $Dungeon[_pz][_px][_py][12] to random(1,3)>>\ <<endif>>\ <<if $Dungeon[_pz][_px][_py][12] is 1>>\ <!-- heal -->\ @@color:LightGreen;Bubbling fountain@@ The centerpiece of this room is a large bubbling fountain of what looks like pure water. Of course, looks can be deceiving. <span id="KeypOne">\ <<link "1) Drink from the fountain">> <<set $Dungeon[_pz][_px][_py][12] to 201>>\ <<replace "#eventtext">>\ @@color:LightGreen;Fountain of healing@@ <<if $PC[$CC][$PChpcur] < $PC[$CC][$PChpmax]>>\ You drink deeply from the fountain, feeling refreshed as the water restores your body and heals all injuries. <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>>\ <<ShowHealth>>\ <br>\ @@color:LightGreen;Health restored to full!@@ <br>\ As you breath a refreshing sigh, the water of the fountain slows to a trickle, and then stops. It seems that the fountain's magic is now depleted. <<else>>\ You drink from the fountain. The water is clean and refreshing, but you don't feel any differently. <<endif>>\ <</replace>>\ <</link>>\ </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ <!-- gender bender -->\ @@color:LightGreen;Bubbling fountain@@ The centerpiece of this room is a large bubbling fountain of what looks like pure water. Of course, looks can be deceiving. <span id="KeypOne">\ <<link "1) Drink from the fountain">> <<set $Dungeon[_pz][_px][_py][12] is 202>>\ <<set _Target to []>>\ <<if $PC[$CC][$PCsex] is "male">> <<set _Target[0] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[1] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[2] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[3] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[4] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[5] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[6] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[7] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[8] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[9] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[10] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[11] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[12] to { type: $BPpussy, morph: either("cow","slime","snake") }>>\ <<set _Target[13] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[14] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<set _Target[15] to { type: $BPboobs, morph: either("cow","slime","snake") }>>\ <<elseif $PC[$CC][$PCsex] is "female">> <<set _Target[0] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[1] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[2] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[3] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[4] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[5] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[6] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[7] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[8] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[9] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[10] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[11] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[12] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[13] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[14] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<set _Target[15] to { type: $BPpenis, morph: either("cow","horse","tentacle","spider") }>>\ <<else>>\ <<set _Target[0] to { type: $BPpussy, morph: either("spider","slime","tentacle") }>>\ <<set _Target[1] to { type: $BPboobs, morph: either("cow","horse") }>>\ <<set _Target[2] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<set _Target[3] to { type: $BPpussy, morph: either("spider","slime","tentacle") }>>\ <<set _Target[4] to { type: $BPboobs, morph: either("cow","horse") }>>\ <<set _Target[5] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<set _Target[6] to { type: $BPpussy, morph: either("spider","slime","tentacle") }>>\ <<set _Target[7] to { type: $BPboobs, morph: either("cow","horse") }>>\ <<set _Target[8] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<set _Target[9] to { type: $BPpussy, morph: either("spider","slime","tentacle") }>>\ <<set _Target[10] to { type: $BPboobs, morph: either("cow","horse") }>>\ <<set _Target[11] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<set _Target[12] to { type: $BPpussy, morph: either("spider","slime","tentacle") }>>\ <<set _Target[13] to { type: $BPboobs, morph: either("cow","horse") }>>\ <<set _Target[14] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<set _Target[15] to { type: $BPpenis, morph: either("cow","slime","tentacle") }>>\ <<endif>>\ <<replace "#eventtext">>\ @@color:LightGreen;Fountain of gender-bending@@ You drink from the fountain and immediately transform: <<DoTransform _Target "fountain">>\ <</replace>>\ <</link>>\ </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 3>>\ <!-- gain stat -->\ @@color:LightGreen;Bubbling fountain@@ The centerpiece of this room is a large bubbling fountain of what looks like pure water. Of course, looks can be deceiving. <span id="KeypOne">\ <<link "1) Drink from the fountain">> <<set $Dungeon[_pz][_px][_py][12] to 203>>\ <<set _Target to either($PCstr, $PCdex, $PCcon, $PCint, $PCwil)>>\ <<set $PC[$CC][_Target] to $PC[$CC][_Target] +1>>\ <<replace "#eventtext">>\ <<if _Target is $PCstr>>\ @@color:LightGreen;Fountain of Strength@@: +1 strength You drink from the fountain and are immediately filled with a sense of strength. Looking yourself over you have become visibly more muscled. \ <<elseif _Target is $PCdex>>\ @@color:LightGreen;Fountain of Dexterity@@: +1 dexterity You drink from the fountain and immediately feel more fleet of foot and coordinated. \ <<elseif _Target is $PCcon>>\ @@color:LightGreen;Fountain of Toughness@@: +1 toughness You drink from the fountain and feel like you could take on the world. Looking yourself over, you seem to be a bit thicker than before.\ <<elseif _Target is $PCint>>\ @@color:LightGreen;Fountain of Intellect@@: +1 intellect Visions of equations and spiraling galaxies fill your mind. You have become more intelligent.\ <<else>>\ @@color:LightGreen;Fountain of Willpower@@: +1 willpower @@color:Red;"Come, join the dark side!"@@ you hear a voice beckon in your mind. You tell it no. The experience has improved your strength of will. You are now better able to resist the influence of others.\ <<endif>>\ <</replace>>\ <</link>>\ </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 201>>\ @@color:LightGreen;Dried up fountain@@ The healing waters have gone dry.\ <<elseif $Dungeon[_pz][_px][_py][12] is 202>>\ @@color:LightGreen;Dried up fountain@@ The gender-bending waters have gone dry.\ <<elseif $Dungeon[_pz][_px][_py][12] is 203>>\ @@color:LightGreen;Dried up fountain@@ The powerful water has gone dry.\ <<else>>\ @@color:Red;Error in Event100: unrecognized state: <<print $Dungeon[_pz][_px][_py][12]>>@@ <<endif>>\ <</replace>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventpuddle.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Strange puddle@@ <<if $Dungeon[_pz][_px][_py][12] is 0>><!-- start state-->\ The tile floor here is heavily eroded and gives way to a puddle of murky green liquid near the center of the room. <hr>\ <span id="KeypOne">\ <<link "1) Inspect the puddle" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 1>>\ <</link>>\ </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 1>><!-- inspect-->\ <<set $Dungeon[_pz][_px][_py][12] to 99>> <<set _result to random(1,4)>>\ <<if _result is 1>>\ You fish around through the puddle, half expecting it to turn into a slime monster or something. Fortunately luck is with you and instead you simply find some money somebody dropped. <<set _c to 20 + random(0,10)>>\ @@color:Yellow;You find _c gold coins!@@ <<GainGold _c>>\ <<elseif _result is 2>>\ You reach into the puddle and immediately jump back in pain. Apparently it's not water. It's @@color:Green;acid@@. <<set _evdam to random(5,10)>>\ @@color:Yellow;You take _evdam points of damage!@@ <<ChangeStat $PChpcur _evdam>>\ <<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set $AllowNav to false>>\ <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Touched an acid puddle">> <</link>>\ </span>\ <<else>>\ <<endif>>\ <<elseif _result is 3>>\ You reach into the puddle, hoping it isn't harboring some sort of slime monster. <<set $ForceMon to ["slime", setup.GetStandardSex()]>>\ @@color:Red;You are attacked by a slime!@@ <span id="KeypOne">\ <<link "1) Fight" "Combat">> <</link>>\ </span>\ <<elseif _result is 4>>\ <<set $Dungeon[_pz][_px][_py][12] to 98>>\ You reach into the puddle, hoping it isn't harboring some sort of slime monster. On the bright side, it isn't. On the not-so-bright side, there doesn't seem to be much of anything in there except murky water, plus whatever is in it that's making it green. \ <<set _BottleSlot to setup.HasBottle()>>\ <<if _BottleSlot > -1>>\ <<set _PutItHere to setup.getnextinvslot($CC)>>\ <<if (_PutItHere < 0) and ($PC[$CC][$PCinven][_BottleSlot][2] > 1)>>\ You're pretty sure you could scoop it up and put it in a bottle, but you should probably clear some inventory space first. <<else>>\ If you'd like, you could probably scoop up a sample of the liquid in an empty bottle. @@color:Gold;Options@@ <span id="KeypT">\ <<link "t) take some liquid">> <<set $Dungeon[_pz][_px][_py][12] to 99>> <<set _throwaway to setup.RemoveOneItemFromInv($CC, _BottleSlot)>>\ <<set _Liquid to [136,0,1,0]>> <<set _foo to setup.additemtoinv($CC, _Liquid, true)>>\ <<replace "#eventtext">>You scoop up the liquid into a bottle.<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<else>>\ Unfortunately you don't have anything suitabe for carrying liquid. <<endif>>\ <<else>>\ Error in event 101: random out of bounds <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 98>><!-- perma murky water -->\ The pool of murky water you found earlier is still here. Still murky and still green. \ <<set _BottleSlot to setup.HasBottle()>>\ <<if _BottleSlot > -1>>\ <<set _PutItHere to setup.getnextinvslot($CC)>>\ <<if (_PutItHere < 0) and ($PC[$CC][$PCinven][_BottleSlot][2] > 1)>>\ You're pretty sure you could scoop it up and put it in a bottle, but you should probably clear some inventory space first. <<else>>\ If you'd like, you could probably scoop up a sample of the liquid in an empty bottle. @@color:Gold;Options@@ <span id="KeypT">\ <<link "t) take some water">> <<set $Dungeon[_pz][_px][_py][12] to 99>> <<set _throwaway to setup.RemoveOneItemFromInv($CC, _BottleSlot)>>\ <<set _Liquid to [136,0,1,0]>> <<set _foo to setup.additemtoinv($CC, _Liquid, true)>>\ <<replace "#eventtext">>You scoop up the liquid into a bottle.<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<else>>\ Unfortunately you don't have anything suitabe for carrying liquid. <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 99>><!-- used-->\ The tile floor here is heavily eroded, with a few moist traces of liquid. <<else>>\ @@color:Red;Error in Event101: state <<print $Dungeon[_pz][_px][_py][12]>> is not recognized@@ <<endif>>\ <</replace>>\<!-- Found this in an obsolete widget, hopefully still correct: x,y defintions 0,1,2,3 = n,e,s,w exit id 4,5,6,7 = exit special attributes 8,9,10= room descriptions/traits 11,12= encounter id, state 13,14= loot id, state 15=visited -->\ <<widget "ShowNavControls">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _PlagueCurse to setup.GetEffect("plague curse")>>\ <<if _PlagueCurse > 0>>\ <<set $WORLD.diedby to "Plague Curse">>\ @@color:Purple;You have died from the plague curse!@@ Congrats an beating Neris, but unfortunately that curse doesn't just go away.\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) continue" "Death">> <<AutoSaveLoad "set">> <</link>> </span>\ <<elseif $PC[$CC][$PChunger] < 1>>\ <<set $WORLD.diedby to "Starved to death">>\ @@color:Red;You have starved to death!@@ It's unfortunate, but you do need to eat. If food is too expensive, you could try carrying around a butcher knife to carve up some of those monsters you keep fighting. Of course, that probably has side effects.\ <<AwardAchievement "Starve to death">>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) continue" "Death">> <<AutoSaveLoad "set">> <</link>> </span>\ <<else>>\ <!-- note: trap deaths will fall through to here-->\ <<endif>>\ <<elseif $AllowNav is true>>\ @@color:LightGreen;Navigation@@ <<set _n to $Dungeon[_pz][_px][_py][0]>>\ <<set _e to $Dungeon[_pz][_px][_py][1]>>\ <<set _s to $Dungeon[_pz][_px][_py][2]>>\ <<set _w to $Dungeon[_pz][_px][_py][3]>>\ \ <<if _n > 0>>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) North">> <<AdvanceTime 1>> <<PressurePlateStepOffCheck>> <<set _py to _py -1>> <<set $PC[$CC][$PCy] to _py>>\ <<set $Dungeon[_pz][_px][_py][15] to 1>>\ <<set _CanBeExplorer to setup.DrawMap64(_px, _py, _pz, 64)>>\ <<MoveRefresh>> <</link>>\ </span></span> <<else>>\ North - blocked <<endif>>\ <<if _e > 0>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) East">> <<AdvanceTime 1>> <<PressurePlateStepOffCheck>> <<set _px to _px + 1>> <<set $PC[$CC][$PCx] to _px>>\ <<set $Dungeon[_pz][_px][_py][15] to 1>>\ <<set _CanBeExplorer to setup.DrawMap64(_px, _py, _pz, 64)>>\ <<MoveRefresh>> <</link>>\ </span></span> <<else>>\ East - blocked <<endif>>\ <<if _s > 0>>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) South">>\ <<AdvanceTime 1>>\ <<PressurePlateStepOffCheck>> <<set _py to _py + 1>>\ <<set $PC[$CC][$PCy] to _py>>\ <<set $Dungeon[_pz][_px][_py][15] to 1>>\ <<set _CanBeExplorer to setup.DrawMap64(_px, _py, _pz, 64)>>\ <<MoveRefresh>>\ <</link>>\ </span></span> <<else>>\ South - blocked <<endif>>\ <<if _w > 0>>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) West">> <<AdvanceTime 1>> <<PressurePlateStepOffCheck>> <<set _px to _px - 1>> <<set $PC[$CC][$PCx] to _px>>\ <<set $Dungeon[_pz][_px][_py][15] to 1>>\ <<set _CanBeExplorer to setup.DrawMap64(_px, _py, _pz, 64)>>\ <<MoveRefresh>> <</link>>\ </span></span> <<else>>\ West - blocked <<endif>>\ <<endif>>\ <</widget>>\ <<widget "MoveRefresh">>\ <<set $WORLD.turnssincecombat to $WORLD.turnssincecombat +1>>\ <<replace "#time">>\ <<ShowTime>>\ <</replace>>\ <<ShowHunger>>\ <<ShowHealth>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<set _market to "">>\ <<set _marker to "" + $Dungeon[_pz][_px][_py][11]>>\ \ <<if $DebugMode is true>>\ <<replace "#capdebuginfo">>\ @@color:Gold;Debug info@@ x,y,z: <<print $PC[$CC][$PCx]>>, <<print $PC[$CC][$PCy]>>, <<print $PC[$CC][$PCz]>> 0: <<print $Dungeon[_pz][_px][_py][0]>> 1: <<print $Dungeon[_pz][_px][_py][1]>> 2: <<print $Dungeon[_pz][_px][_py][2]>> 3: <<print $Dungeon[_pz][_px][_py][3]>> 4: <<print $Dungeon[_pz][_px][_py][4]>> 5: <<print $Dungeon[_pz][_px][_py][5]>> 6: <<print $Dungeon[_pz][_px][_py][6]>> 7: <<print $Dungeon[_pz][_px][_py][7]>> 8: <<print $Dungeon[_pz][_px][_py][8]>> 11: <<print $Dungeon[_pz][_px][_py][11]>> 12: <<print $Dungeon[_pz][_px][_py][12]>> marker: <<print _marker>> Theme: <<print $WORLD.dungeonthemes[_pz]>> Since Last combat: <<print $WORLD.turnssincecombat>> <</replace>>\ <<endif>>\ \ <<if _marker.includes("StairsUp")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "towerstairs.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<include "StairsUp">>\ <<elseif _marker.includes("StairsDown")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "towerstairs.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<include "StairsDown">>\ <<elseif _marker.includes("Trap")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "towercorridor.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<include "Trap">>\ <<elseif _marker is "Landing">>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<replace "#right-img">><</replace>>\ <<include "Landing">>\ <<elseif _marker.includes("Monster")>>\ <<set $AllowNav to false>>\ <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">>\ <<set $ForceMon to [$Dungeon[_pz][_px][_py][12], "random"]>>\ @@color:Gold;Monster encounter: <<print $Dungeon[_pz][_px][_py][12]>>!@@ <span id="KeypOne">\ <<link "1) Fight" "Combat">> <<set $DisableMenu to true>>\ <</link>>\ </span>\ <<if $DebugMode is true>>\ <hr>\ @@color:Gold;Debug info@@ (Fixed encounter) Turns since last combat: <<print $WORLD.turnssincecombat>> Forcing monster type: $ForceMon <<endif>>\ <</replace>>\ <<elseif _marker.includes("Zehtalia")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "Zehtalia.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<include "Zehtalia">>\ <<elseif _marker.includes("Neris")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "Neris.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<include "Neris">>\ <<elseif _marker is "Magic Circle">>\ <<if $WORLD.datapasser is "Don't auto-teleport back">>\ <<set $WORLD.datapasser to "">>\ <<else>>\ <<set $NoSuffixBecauseCircle to true>>\ <<include "MagicCircle">>\ <<endif>>\ <<elseif _marker.includes("PlayerCorpse")>>\ <<include "PlayerCorpse">>\ <<elseif _marker.includes("StatueDemon")>>\ <<set $AllowNav to true>>\ <!-- Zehtalia room hack: where is this globally reset and why isn't it working here? Problem probably will occur elsewhere. -->\ <<replace "#eventtext">><</replace>>\ \ <<replace "#roomdesc">>@@color:LightGreen;Statue of a demon@@<br>The statue of a demon. At its base is a plaque bearing words in a language you don't recognize.<</replace>>\ <<elseif _marker.includes("StatueKnight")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">>@@color:LightGreen;Statue of an angel@@<br>A statue of an armored knight.<</replace>>\ <<elseif _marker.includes("StatueAngel")>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">>@@color:LightGreen;Statue of a knight@@<br>A beautiful statue of a stone angel. The angel is weeping.<</replace>>\ <<elseif _marker.includes("Event")>>\ <<replace "#roomdesc">><</replace>>\ <<include _marker>>\ <<elseif _marker.includes("Lever")>>\ <<replace "#roomdesc">><</replace>>\ <<include "Lever">>\ <<elseif _marker.includes("Plate")>>\ <<replace "#roomdesc">><</replace>>\ <<include "PressurePlate">>\ <<elseif _marker is "0">>\ <<if $WORLD.turnssincecombat > 20>>\ <<if random(20,50) < $WORLD.turnssincecombat>>\ <<set $AllowNav to false>>\ <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">>\ <<set $ForceMon to ["random", "random"]>>\ @@color:Gold;Monster encounter!@@ <span id="KeypOne">\ <<link "1) Fight" "Combat">> <<set $WORLD.turnssincecombat to 0>> <<set $DisableMenu to true>> <</link>>\ </span>\ <<if $DebugMode is true>>\ <hr>\ @@color:Gold;Debug info@@ (Random encounter) Turns since last combat: <<print $WORLD.turnssincecombat>> 'Force' data being set: $ForceMon <<endif>>\ <</replace>>\ <<else>>\ <<set $AllowNav to true>>\ <<replace "#eventtext">><</replace>>\ <<ShowRoomDesc>>\ <<endif>>\ <<else>>\ <<set $AllowNav to true>>\ <<replace "#roomdesc">><</replace>>\ <<set _RightPic to $ImgPath + "towercorridor.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<replace "#eventtext">><</replace>>\ <<ShowRoomDesc>>\ <<endif>>\ <<else>>\ <<replace "#eventtext">>@@color:Yellow;Error in MoveRefresh: I don't know what this dungeon tile is (_px, _py, _pz): _marker@@ Dungeon array for this xyz is: <<print $Dungeon[_pz][_px][_py]>> <</replace>>\ <<endif>>\ <<if $NoSuffixBecauseCircle>>\ <<unset $NoSuffixBecauseCircle>>\ <<else>>\ <<replace "#navcontrols">><<ShowNavControls>><</replace>>\ <<endif>>\ <</widget>>\ <<widget "ShowRoomDesc">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _srm to $Dungeon[_pz][_px][_py][8]>>\ <<set _srmtxt to "">>\ <<if _srm is 0>>\ <<elseif _srm is 1>>\ <<set _srmtxt to "The floor here is covered in rat droppings. But strangely, you don't see any rats.">>\ <<elseif _srm is 2>>\ <<set _srmtxt to "A small trickle of water flows from the ceiling here.">>\ <<elseif _srm is 3>>\ <<set _srmtxt to "Several of the floor tiles here are broken, as if shattered by a tremendous force.">>\ <<elseif _srm is 4>>\ <<set _srmtxt to "Dusty cowwebs adorn the walls here.">>\ <<elseif _srm is 5>>\ <<set _srmtxt to "The air here is clear, and there is a slight breeze.">>\ <<elseif _srm is 6>>\ <<set _srmtxt to "The air here is foggy and cold.">>\ <<elseif _srm is 7>>\ <<set _srmtxt to "A few scattered bones litter the floor here.">>\ <<elseif _srm is 8>>\ <<set _srmtxt to "The air here is slightly smoky, lit by a small basin of hot coals burning in one corner, illuminating everything in a spookly red light.">>\ <<elseif _srm is 9>>\ <<set _srmtxt to "This corridor is lit by a small torch hanging from a wall sconce, casting irregular shadows across all it sees.">>\ <<elseif _srm is 10>>\ <<set _srmtxt to "The floor here is slightly angled towards the center, leading to a foot-deep crater of shattered stone.">>\ <<elseif _srm is 11>>\ <<set _srmtxt to "A few rats scurry about the edges of this chamber.">>\ <<elseif _srm is 12>>\ <<set _srmtxt to "The air here is dry and stagnant.">>\ <<elseif _srm is 13>>\ <<set _srmtxt to "This corridor smells slightly of decay, and you think you see some old, blackened blood splatters on one of the walls.">>\ <<elseif _srm is 14>>\ <<set _srmtxt to "An old tapestry adorns the eastern wall here. It is heavily frayed, but appears to depict a man on horseback riding into a forest.">>\ <<elseif _srm is 15>>\ <<set _srmtxt to "An empty wall sconce sits on the far wall, its shallow candle wick long since depleted.">>\ <<elseif _srm is 16>>\ <<set _srmtxt to "There is a tile mosiac stretching in a simple pattern across half the floor here, and a few spare tiles rest near a wall. It seems whatever renovation was intended here, it was never finished.">>\ <<elseif _srm is 17>>\ <<set _srmtxt to "There is a small, abandoned firepit here.">>\ <<elseif _srm is 18>>\ <<set _srmtxt to "A small, rocky outcrop pokes through the floor here.">>\ <<elseif _srm is 19>>\ <<set _srmtxt to "The wall in one corner of this room lays shattered as if from a tremendous blow, with jagged chunks of rock left spread from the impact.">>\ <<elseif _srm is 20>>\ <<set _srmtxt to "This room is full of spiderwebs, with a few black spiders nearly as big as your hand scattered across.">>\ <<elseif _srm is 21>>\ <<set _srmtxt to "A glowing green moss adorns the walls here, lighting the room reasonably well but also giving the air an unhealthy moistness.">>\ <<elseif _srm is 22>>\ <<set _srmtxt to "This corridor is brightly lit by a single lantern hanging from the ceiling. While its oil is low, the fact that it is burning at all suggests that someone must have passed through here.">>\ <<elseif _srm is 23>>\ <<set _srmtxt to "This corridor is in better condition than most, with a few brightly-lit wall sconces illuminating a floral pattern engraved directly into the stone floor. The craftsmanship is quite good, and leaves you wondering about its engraver.">>\ <<elseif _srm is 24>>\ <<set _srmtxt to "The floor here is covered in a fine black dust, and the room is filled with an overpowering scent of rotting vegetation.">>\ <<elseif _srm is 25>>\ <<set _srmtxt to "Half of what appears to have once been an astrological chart adorns the northern wall, with tattered strips of cloth and leather dangling from its torn edges.">>\ <<elseif _srm is 26>>\ <<set _srmtxt to "This room glows with an ambient light from an unidentifiable source.">>\ <<elseif _srm is 27>>\ <<set _srmtxt to "A few bats hang from the ceiling here.">>\ <<elseif _srm is 28>>\ <<set _srmtxt to "Hanging from the center of this room is what appears to be the shattered remains of what was once a large glass chandelier, with a few of its fallen pieces strewn across the room.">>\ <<elseif _srm is 29>>\ <<set _srmtxt to "The floor here is obscured by several inches of rolling mist.">>\ <<elseif _srm is 30>>\ <<set _srmtxt to "The air here is dusty and hot, making it uncomfortable to breathe.">>\ <<elseif _srm is 31>>\ <<set _srmtxt to "This room smells faintly of lavender.">>\ <<elseif _srm is 32>>\ <<set _srmtxt to "Water trickles from the ceiling here, collecting on the damp ground.">>\ <<elseif _srm is 33>>\ <<set _srmtxt to "This room is filled with the overpowering smell of chlorine.">>\ <<elseif _srm is 33>>\ <<set _srmtxt to "The faint remains of some sort of magical circle drawn in chalk are apparent, with what appear to be little melted bits of wax at regular intervals.">>\ <<elseif _srm is 34>>\ <<set _srmtxt to "You're not completely certain, but if you're very quiet, you can faintly hear what sounds like a cow mooing in the distance.">>\ <<elseif _srm is 35>>\ <<set _srmtxt to "Bits of dust descend from a small hole in the ceiling here.">>\ <<elseif _srm is 36>>\ <<set _srmtxt to "You can hear the sound of something very large moving around on the floor above you.">>\ <<elseif _srm is 37>>\ <<set _srmtxt to "The air is noticeably cold here.">>\ <<elseif _srm is 38>>\ <<set _srmtxt to "The air is noticeable warm here">>\ <<elseif _srm is 39>>\ <<set _srmtxt to "A scattering of ash covers the floor here, as if a large bonfire was allowed to burn down to nothing.">>\ <<elseif _srm is 40>>\ <<set _srmtxt to "A set of chains are attached to the walls here, with broken manacles dangling from them.">>\ <<elseif _srm is 41>>\ <<set _srmtxt to "This room smells faintly of wine.">>\ <<elseif _srm is 42>>\ <<set _srmtxt to "A large boulder lies at the center of this room. It is several feet wider than the corridors, so it's unclear how it came to be here.">>\ <<elseif _srm is 43>>\ <<set _srmtxt to "This room smells strongly of horse urine.">>\ <<elseif _srm is 44>>\ <<set _srmtxt to "Small spiders adorn the walls and ceiling here. It makes your skin crawl just to be here.">>\ <<elseif _srm is 45>>\ <<set _srmtxt to "The walls here are coated with a layer of foul-smelling black moss. You probably shouldn't linger.">>\ <<elseif _srm is 46>>\ <<set _srmtxt to "This room has a small pile of debris in one corner, with little bits of splintered wood and stone messily strewn about.">>\ <<elseif _srm is 47>>\ <<set _srmtxt to "The smell of rotting wood fills your nostrils, and you see the splintered remains of what might once have been some sort of furniture.">>\ <<elseif _srm is 48>>\ <<set _srmtxt to "The stone walls here have been heavily sanded down to a fine smoothness.">>\ <<elseif _srm is 100>>\ <<set _srmtxt to "There are a few fresh splatters of blood here, as if a battle happened recently.">>\ <<elseif _srm is 101>>\ <<set _srmtxt to "There is a small hole bored into a wall here, just large enough for a crossbow bolt to pass through.">>\ <<elseif _srm is 102>>\ <<set _srmtext to "There is a small bit of cut string anchored to the walls the door here, possibly once connected to a trap of some kind.">>\ <<elseif _srm is 103>>\ <<set _srmtxt to "There is an open pit trap here, which you carefully avoid.">>\ <<elseif _srm is 104>>\ <<set _srmtxt to "There are a few splatters of fluid on the floor here.">>\ <<elseif _srm is 105>>\ <<set _srmtxt to "There's a small pile of dust here that smells faintly of ozone.">>\ <<endif>>\ <<replace "#roomdesc">><<print _srmtxt>><<if _CanBeExplorer is true>><<AwardAchievement "Explorer">><<endif>><</replace>>\ <</widget>>\ <<widget "ProcessLever">>\ <<set _LeverActions to _args[0]>>\ <<for _PL to 0; _PL < _LeverActions.length; _PL++>>\ <<set _DunXtoChange to _LeverActions[_PL][0]>>\ <<set _DunYtoChange to _LeverActions[_PL][1]>>\ <<set _ArrayPosToChange to _LeverActions[_PL][2]>>\ <<set _NewValue to _LeverActions[_PL][3]>>\ <<set $Dungeon[_pz][_DunXtoChange][_DunYtoChange][_ArrayPosToChange] to clone(_NewValue)>>\ <</for>>\ <</widget>>\ <<widget "ShowLever">>\ <<set _WhichLever to _args[0]>>\ <<if _args[0] is "LeverLeftUp">>\ <<set _CurrentState to "'up'">>\ <<set _ChangeTo to "LeverLeftDown">>\ <<set _WhichTwelveArrayToProcess to 1>>\ <<elseif _args[0] is "LeverLeftDown">>\ <<set _CurrentState to "'down'">>\ <<set _ChangeTo to "LeverLeftUp">>\ <<set _WhichTwelveArrayToProcess to 0>>\ <<elseif _args[0] is "LeverRightUp">>\ <<set _CurrentState to "'up'">>\ <<set _ChangeTo to "LeverRightDown">>\ <<set _WhichTwelveArrayToProcess to 1>>\ <<elseif _args[0] is "LeverRightDown">>\ <<set _CurrentState to "'down'">>\ <<set _ChangeTo to "LeverRightUp">>\ <<set _WhichTwelveArrayToProcess to 0>>\ <<else>> <<endif>>\ @@color:LightGreen;Lever@@ There is a lever here. It is currently in the <<print _CurrentState>> position. <span id="KeypOne">\ <<link "1) Pull the lever">> <<set $Dungeon[_pz][_px][_py][11] to _ChangeTo>>\ <<set _LeverAction to $Dungeon[_pz][_px][_py][12][_WhichTwelveArrayToProcess]>>\ <<ProcessLever _LeverAction>>\ <<replace "#eventtext">>\ <<ShowLever _ChangeTo>>\ <</replace>>\ <<set _throwaway to setup.DrawMap64(_px, _py, _pz, 64)>>\ <</link>>\ </span>\ <</widget>>\ <<widget "TogglePressurePlate">>\ <<set _PlateActions to _args[0]>>\ <<for _PL to 0; _PL < _PlateActions.length; _PL++>>\ <<set _DunXtoChange to _PlateActions[_PL][0]>>\ <<set _DunYtoChange to _PlateActions[_PL][1]>>\ <<set _ArrayPosToChange to _PlateActions[_PL][2]>>\ <<set _NewValue to 0>>\ <<if $Dungeon[_pz][_DunXtoChange][_DunYtoChange][_ArrayPosToChange] is 0>>\ <<set _NewValue to 1>>\ <<endif>>\ <<set $Dungeon[_pz][_DunXtoChange][_DunYtoChange][_ArrayPosToChange] to clone(_NewValue)>>\ <</for>>\ \ <<set _throwaway to setup.DrawMap64(_px, _py, _pz, 64)>>\ \ @@color:LightGreen;Pressure plate@@ You hear the sound of stone sliding on stone. <</widget>>\ <<widget "PressurePlateStepOffCheck">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _StandingOn to $Dungeon[_pz][_px][_py]>>\ <<if _StandingOn[11] is "PressurePlate">>\ <<TogglePressurePlate _StandingOn[12]>>\ <<endif>>\ <</widget>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ <<set $AllowNav to true>>\ \ <<set _RightPic to $ImgPath + "eventbed.jpg">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Shattered bedroom@@ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ You're in the remains of what appears to have once been an elegant bedroom, but that has fallen into extreme disrepair. Yet while the stone walls of this room are shattered and full of holes, the linens on the bed look clean and inviting, and the pillow appears to have been recently fluffed. <hr>\ <span id="KeypOne">\ <<link "1) Take a nap" $RoomPTR>> <<if $PC[$CC][$PCsex] is "female">>\ <<set $Dungeon[_pz][_px][_py][12] to 1>> <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to 2>> <<endif>>\ <</link>>\ </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 1>><!-- female sleep request-->\ <<if random(0,4) < $PC[$CC][$PCz]>>\ <<set _whichmon to either("goblin","slime","hellhound","minotaur", "spider")>>\ <<if _whichmon.includes("goblin")>>\ You curl up under the covers to take a refreshing nap, but your sleep is disturbed by a a dream that is somehow both erotic...and yet also strangely uncomfortable. It's the scent that really gets to you though. You've never smelled something so intensely in a dream before. That's when you wake up to see your legs spread wide and a goblin already balls deep inside you with a long line of drool hanging from his tongue. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<elseif _whichmon.includes("hellhound")>>\ You curl up under the covers to take a refreshing nap, quickly falling into a peculiar dream about sinking into lava. You're completely submerged up to the waist, and wisply bits of smoke and heat roll across your face. And yet somehow despite the heat, the smoky bits seems strangely wet. Bursting suddenly to full awareness, you find yourself with a fiery red hellhound clamped onto your hips and hammering into your pussy with a cock literally on fire while he happily licks your face. <<FemaleVirginity _whichmon>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ Seeing that you're now awake, the hellhound tightens his grip on your hips even as his tongue lols out the side of his mouth and his head arches upwards in pleasure. <<elseif _whichmon.includes("slime")>>\ Resting down into the covers for a nice nap, you find your sleep disturbed by a strange dream. You're riding a sailboat in choppy waters, and every time you roll over a wave, the boat violently splashes into the water. Over and over this happens, until finally you wake up to discover that a slime has slipped beneath the covers and is fucking both your ass and pussy together. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<elseif _whichmon.includes("spider") or _whichmon.includes("drider")>>\ You quickly fall alseep into a dream about being erapped so tightly in blankets that you can barely breath. Shifting uncomfortably, you open your eyes to the sight of a giant spider above you, in the process of werapping your torso in webbing while an evil=looking cock dangles beneath it. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<elseif _whichmon.includes("tentacle")>>\ Mere moments after curling up under the covers to take a refreshing nap, you begin to feel movement at the foot of the bed. Sitting up, you see nothing at first, but then notice the delicate movement of the bedsheets as something in sliding around inside them. With images of snakes in your head, you leap to your feet and toss the sheets away only to feel something grab you by both ankles and sweep you off your feet. Bouncing harmlessly on your back, you gasp as your lower half is then engulfed in a writhing mass of tentacles. The creature ignores your efforts as you struggle to punch and kick, feeling an uncertain number of tenatcle probing experimentally at your pussy folds, then suddenly thrusting deeply inside you on the sticky mass of fluids that completely cover its exterior. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ Gasping at the sensation, you feel your desire to resist waning as half a dozen tenatcles begin to fight each other to take their turn inside both of your now-dripping holes. <<elseif _whichmon.includes("imp")>>\ Curling up under the covers to take a refreshing nap, you quickly drift off to sleep. Before long a strange dream overtakes you, in which the bedsheets are pulled slowly off of you, their gentle texture sliding erotically across your nipples and then left bare. Moment later, a small red creature but no more than two feet tall climbs up onto the bed and between your legs. Pushing your knees apart to make room, he plants his hands on each side of your hips and leers at you. Growing dimly alarmed, you open your eyes to see an imp with a grotesquely large cock positioning himself between your thighs. Seeing you awake, he grins, then ''thrusts'' his entire length halway up your torso, carried easily through your unprepared vaginal walls on a prependerous of his fluids. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ Too shocked to imediately fight him off, you gasp as he grabs your bouncing tits like handles and begins furiously humping a cock as big as your forearm in and out of you. <<elseif _whichmon.includes("minotaur") or _whichmon.includes("cow")>>\ Curling up under the covers to take a refreshing nap, it's not long before you're awaked by the sensation of the bedsheets being yanked off the bed. Jolting upright, the first thing you see is a massive horse cock whacking you across the face and knocking you back down. Moments later a meaty minotaur hand engulfs your face and forces you head dow onto a pillow and you feel that same impossibly large horse cock banging its way up your thighs. Too drowsy to struggle, the minotaur tosses one of your ankles up over his shoulders and begins probing his cock into your pelvis, trying to squeeze it inside. You almost want to try to rationally explain to him that it can't possibly fit, and yet to your growing dread his pre-cum moistens your pussy folds and slowly begins to make headway. <<FemaleVirginity _whichmon>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ Unable to see, but feeling every inch of his two foot long member now sliding its length up and down your pussy, you can't help but wonder at the mechanics involved if a creature this large somehow makes you pregnant. <<else>>\ bed event, implement whatever monster this is: _whichmon <<endif>>\ \ <<set $AllowNav to false>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Struggle" "Combat">> <<set $ForceMon[0] to _whichmon>> <<set $ForceMon[1] to "male">> <</link>> </span>\ <<if $PC[$CC][$PCsex] is "female">>\ <span id="KeypTwo">\ <<link "2) Ride it out" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 3>> <<set $WORLD.datapasser to _whichmon>> <</link>> </span>\ <<endif>>\ <<else>>\ You curl up under the covers and take a refreshing nap, disturbed only slighly by an erotic dream you only dimly recall. @@color:LightGreen;Health restored!@@ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>>\ <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanamax]>>\ <<ShowHealth>><<ShowMana>>\ <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 2>><!-- sleep request-->\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpmax]>>\ <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanamax]>>\ <<ShowHealth>><<ShowMana>>\ You curl up under the covers and take a refreshing nap, disturbed only slighly by an erotic dream you only dimly recall. @@color:LightGreen;Health restored!@@ <<elseif $Dungeon[_pz][_px][_py][12] is 3>><!-- ride it out-->\ <<set _whichmon to $WORLD.datapasser>>\ <<set $PC[$CC][$PChornycur] to 0>>\ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<if _whichmon is "goblin">>\ Relaxing and pushing your hips up against the goblin, you're disappointed when he quickly ejaculates then collpases in a sleeping heap on top of you. His cock cock is still inside you however, and despite your growing concern over its presence holding a pool of warm, virile semen inside you, it neverthless takes you a couple minutes to manouver his bulk off of you. You do the best you can to clean the mess now dripping down your thighs, but if his seed was going to take, surely by now it's already done so. <<elseif _whichmon.includes("hellhound")>>\ Relaxing into the sex, the hellhouns seems to accept your submission as a cue to breed you. Forcing his thick next downa cross yours, you feel the large bulb at the base of his cock struggling to fit inside you. Widenign your legs sligthly to give him bette access, you're rewarded with a massive bulb, easily the size of your cortinginside you and solidly locking you in coitus. Now with no possibilit of escape, the hellhound gleefully fucks you on the single inch or two of play he has, his knot dancing across the inside of your vaginal walls. You instantly climax, but he doesn't let up. now licking your face and neck with a trail of slobber, you fel a growing heat deep inside you and the frantic jumping of his enormous cock tickles maddeningly just barely at your cervix. When at last his climax cums it's like a gallon of lava from your dream filling and warming your insides with a tingy sensation that spreads throughout your entire body. Finally he collapses on top of you, but still knotted tightly togetehr you can do nothing but carry his bulk for another 20 minutes while he tenderly licks your face. At some point you pass out, and when you awaken, you are alone in the bed with a pool of reddish semen dripping out from betwen your legs. <<elseif _whichmon.includes("slime")>>\ Having had worse dreams you try to go back to sleep, but the slime continued unabated. Eventually he ejaculates in both your holes, then slips away. Your thighs and the bedsheets are now messily drenched in slime semen. <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + (_pz * 2)>>\ <<elseif _whichmon.includes("spider") or _whichmon.includes("drider")>>\ Hardly able to move already, you're unsurprised when the _whichmon_ secrets webbing on your ankles. You ''are''surprised that it does this with your legs wrapped around its body to anchor you in place around it. Now webbed securely in place, there's little you can do but take his cock as he slips it slowly inside you and immediately begins a long, slow ejaculation. There is no thrusting, no heavy breathing or cries of pleasure, only calm silence with intent to 'breed' you. The slow of semen is slow and steady, a constant trickle drawn out over minutes as you feel a warm pool of it growing inside you. At first there is no pleasure, but the before long the calm, calculating nature of the act intended only to 'breed' you overwhelms you and you can't help but climax. The _whichmon_ looks at you with amusement, then secretes a fluid to dissolve the webbing from your ankles which fall unceremoniously to the bed between his legs. At last slipping his cock out, he then applies a fliud to your pussy which quickly hardens, locking his semen inside you for a short but crucial time until it dissolves. And then he leaves, silently as he came. <<elseif _whichmon.includes("tentacle")>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven +1>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + _pz>>\ As if you had much choice, you close your eyes and relax into the writhing mass of tentacles. as if sensing your cooperation, a few of the tenatcles holding yor wrists and ankles take the opportunity to slip and slide their way across your toso, wriggling against every part of you as they do. Meanwhile, the pair of tenatcles at your vagina are joined by several more. Unsure how many slippery cocks and now taking their turns thrusting inside you, you gasp in pleasure only to have yet another tentacles slide quickly past your lips and deeply down your throat. You can't help but try to bit down on it, but its blubbery mass is so moistened that it makes no difference as it slides effortlessly across your teeth, down the entire lengvth of your throat and begins enjulacating into your stomach. Its brother at your pussy do the same, one one thrusting in turn inside you and spraying for but an instant before another takes its place and does the same. Minutes pass, but there is no relenting as an endless stream of lusty tenatacles each take their turn on all three of your orifices. Whether from pleasure or lack of oxygen you cannot say, but you pass out long before the creature has had it sfill of you. When you awake, the bed sheets are a stikcy mess of the creature's semen, and it takes you nearly half an hour to wipe your body at least passably dry. <<elseif _whichmon.includes("imp")>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + _pz>>\ Strangely ok with this turn of events, you spread your knees and slide your ankles in close to your butt. Needing no further encouragement, the small creature tightens his grip on your boobs and continues furiously pumping his nearly foot-long rod in and out of you as your pussy involuntarily clenches around it, removing any last bit of wiggle room from an already tight fit. He cums immediately, and you not long after, and yet his pace only hastens. "Yes!" he screams, climaxing a second time mere seconds after the first, prompting spasms up and down your torso as you ride the impossibly large cock of this tiny creature. Eventually he slows, but his grip on your tits remains until the very last moment his sticky member plops out of you with a sticky flow. Gazing at it in awe, he then sits on your ncek and forces his cock down your throat, commanding you to lick it clean. Unable to do anything but obey, you swallow every bit of his and your mixed fluids from it then lick its tip in a daze. At last satisfied, he gives your left boob one last squeeze then hops down from the bed and leaves you alone in the bed, now a sticky mess from his semen pouring out of you. <<elseif _whichmon.includes("minotaur") or _whichmon.includes("cow")>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + _pz>>\ Feeling it would be hopeless to try to resist such a massive beast, you relax and try to be as compliant as possible. It makes no difference though, as the minotaur simply continues plowing away with a massively flared horse cock between your increasingly bruised thighs. Struggling to breath around his hand on your face, you're surprised when he cums almost immediately, your stomach bulging with the massive spray of semen now painted across your insides. Then without so much as a grunt, he gets up off you and walks away, leaving you bewildered and shocked at the backwards stream on his semen sprayed across the sheets fully two feet away from your battered pussy. <<else>>\ implement whichever sex event this is: _whichmon <<endif>>\ On the bright side, your arousal has been thoroughly sated. <<elseif $Dungeon[_pz][_px][_py][12] is 99>><!-- struggled-->\ The bed here is messy and unkept, not having been made since your last somewhat sketchy attempt at sleep. You're reluctant to sleep here again given how the last attempt ended with a monster between your thighs, but surely it wouldn't happen again, would it? <span id="KeypOne">\ <<link "1) Risk it" $RoomPTR>> <<if $PC[$CC][$PCsex] is "female">>\ <<set $Dungeon[_pz][_px][_py][12] to 1>> <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to 2>> <<endif>>\ <</link>>\ </span>\ <<else>>\ Error in event 102: unrecognized state: $Dungeon[_pz][_px][_py][12] <<endif>>\ <</replace>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ <<set _AllowGenericLinks to false>>\ \ <<set _RightPic to $ImgPath + "eventchest.jpg">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ @@color:LightGreen;Treasure chest!@@ Prominently placed in the center of this room is a large wooden chest. Surely that's not suspicious at all, right? Still, what valuable and useful goodies might be inside?\ <<set _AllowGenericLinks to true>>\ <<elseif $Dungeon[_pz][_px][_py][12] < 5>>\ <<set _GiveLoot to false>>\ <<set _DoTrap to false>>\ <<set _LockDiff to _pz + 13>>\ \ <<if $Dungeon[_pz][_px][_py][12] is 1>>\ <<if $PC[$CC][$PCstr] gte _LockDiff>>\ <<set _GiveLoot to true>>\ <<set _DoTrap to true>>\ @@color:Yellow;Success!@@ You jam your fingers into the slit between the base and lid of the chest and pry them apart with such force that the lock is ripped out from its mounting in the wood. \ <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ @@color:Yellow;Failed to open the chest!@@ You jam your fingers into the slit between the base and lid of the chest, but you're not strong enough to pry it open. \ <<set _AllowGenericLinks to true>>\ <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ <<set _GiveLoot to true>>\ <<set _DoTrap to true>>\ You smash the lock with your hammer and open the chest. \ <<elseif $Dungeon[_pz][_px][_py][12] is 3>>\ <<set _PickPower to 0>>\ <<set _PickPowerWithPick to 0>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "Rogue">> <<set _PickPower to $PC[$CC][$PClevel]>>\ <<endif>>\ <<set _PickInvLoc to setup.HasPick()>>\ <<if _PickInvLock > -1>>\ <<set _PickPowerWithPick to _PickPower +3>>\ <<endif>>\ \ <<if _PickPower > _LockDiff >>\ @@color:Yellow;Success!@@ You manage to pick the lock pretty easily. \ <!-- TrapAchieveTester -->\ <!-- implement lockpick destruction-->\ <<elseif _PickPowerWithPick > _LockDiff>>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ @@color:Yellow;Success!@@ It takes some effort, and you grind your pick down in the process, but you do manage to pick the lock. \ <<elseif _PickInvLock is _PickPowerWithPick>>\ @@color:Yellow;Failed!@@ You try to jiggle the lock open with your fingers, but without a lockpick it's very difficult. \ <<set _AllowGenericLinks to true>>\ <<else>>\ @@color:Yellow;Failed!@@ You burn through a pick in the attempt, but it seems you're simply not skilled enough to pick this lock. \ <<set _AllowGenericLinks to true>>\ <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 4>>\ The chest is sitting open, and thankfully the treasure is still inside. \ <<set _GiveLoot to true>>\ <<set _DoTrap to false>>\ <<endif>>\ <<if _DoTrap is true>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "Rogue">>\ The chest is trapped, but as a rogue you manage to disarm it without difficulty. \ <<else>>\ <<set _WhichTrap to random(1,3)>>\ <<if _WhichTrap is 1>>\ You're feeling pretty good about yourself when the trap mechanism suddenly sprays your face with acid. \ <<set _InCaseofDeath to "an acid-trapped chest">>\ <<set _Damage to random(_pz, _pz * 5)>>\ <<set _Damage to _Damage * -1>>\ <<ChangeStat $PChpcur _Damage>>\ <<ShowHealth>>\ <<elseif _WhichTrap is 2>>\ That's when a burst of magic discharges from the trap mechanic, and draining your mana reserves. \ <<set _Damage to random(_pz, _pz * 5)>>\ <<set _Damage to _Damage * -1>>\ <<ChangeStat $PCmanacur _Damage>>\ <<ShowMana>>\ <<else>>\ <<set _Target to []>>\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _Target[0] to { type: $BPpussy, morph: "human" }>>\ <<set _Target[1] to { type: $BPboobs, morph: "human" }>>\ <<set _Target[2] to { type: either($BPtail, $BPhorns, $BPfeet) morph: "demon" }>>\ <<elseif $PC[$CC][$PCsex] is "female">>\ <<set _Target[0] to { type: $BPpenis, morph: "human" }>>\ <<set _Target[1] to { type: either($BPtail, $BPhorns, $BPfeet) morph: "demon" }>>\ <<else>>\ <<set _Target[0] to { type: $BPpussy, morph: either("spider","horse") }>>\ <<set _Target[1] to { type: $BPboobs, morph: either("spider","horse") }>>\ <<set _Target[2] to { type: $BPpenis, morph: either("spider","horse") }>>\ <<set _Target[3] to { type: either($BPtail, $BPhorns, $BPfeet), morph: "demon" }>>\ <<endif>>\ Unfortunately, right as you're about to check out the loot a small needle you missed injects you with a strange transformative liquid: <<DoTransform _Target "chest">> \ <<endif>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _GiveLoot to false>>\ <<set $AllowMove to false>>\ <br><br>\ @@color:Red;You have died!@@ <<set $WORLD.diedby to _InCaseOfDeath>>\ <span id="KeypSpace">\ <<link "space) Continue" "Death">> <<set $Dungeon[_pz][_px][_py][12] to 4>> <</link>> </span>\ <<else>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<if _GiveLoot is true>>\ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <br><br>\ @@color:Yellow;Chest opened!@@ <<set $PC[$CC][$PCmisc].chests to $PC[$CC][$PCmisc].chests +1>>\ <<if $PC[$CC][$PCmisc].chests > 3>>\ <<AwardAchievement "Archeologist">>\ <<endif>>\ <<set _evgold to random(99, _pz * 100)>>\ <<set _Loot to [0,0,0,0]>>\ <<if random(1,3) is 1>>\ <<set _Loot to setup.GenLoot("adventurer", "male", _pz, "tower")>> <<elseif setup.PlayerHasPerk("Archeologist") is true>>\ <<set _Loot to setup.GenLoot("adventurer", "male", _pz, "tower")>> <<endif>>\ <<if _Loot[0] is 0>>\ Inside the chest you find _evgold gold!\ <<GainGold _evgold>>\ <<else>>\ <<DescribeItem _Loot>>\ Inside you find _evgold gold and a <<print $ItemPoke.fullname>>!\ <<GainGold _evgold>>\ <<set _foo to setup.additemtoinv($CC, _Loot, false)>>\ <<endif>>\ <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 99>>\ There is an empty chest here.\ <<else>>\ @@color:Red;Error in room: unrecognized state@@\ <<endif>>\ \ <<if _AllowGenericLinks is true>>\ <<if setup.getnextinvslot($CC) < 0>>\ Unfortunately your inventory is full, so you decide to leave it alone for now. It would be a shame to find something amazing only to have to leave it here where any wandering monster might take it.\ <<else>>\ <hr>\ <span id="KeypOne">\ <<link "1) Try to force it open" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 1>> <</link>> </span>\ <<if setup.HasHammer() > -1>>\ <span id="KeypTwo">\ <<link "2) Smash the lock with your hammer" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 2>> <</link>> </span>\ <<else>>\ 2) No hammer to smash the lock with <<endif>>\ <<if ($PC[$CC][$PCclass] is "rogue") or (setup.HasPick() > -1)>> <span id="KeypThree">\ <<link "3) Pick the lock" $RoomPTR>>\ <<set $Dungeon[_pz][_px][_py][12] to 3>> <</link>>\ </span>\ <<else>>\ 3) Cannot pick the lock\ <<endif>>\ <<endif>>\ <<endif>>\ <</replace>>\<!-- food barrel -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventbarrel.jpg">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ <<set $Dungeon[_pz][_px][_py][12] to random(1,3)>>\ <<endif>>\ <<if $Dungeon[_pz][_px][_py][12] < 10>>\ @@color:LightGreen;Wooden barrel@@ <<if setup.getnextinvslot($CC) < 0>>\ This room appears to be be an old, mostly abandoned pantry. You find a sealed barrel that migth have some goodies in it, but your inventory is full. <<else>>\ This room appears to be be an old, mostly abandoned pantry. However, one prominent barrel is sealed, and looks like it might contains some goodies. <span id="KeypOne">\ <<link "1) Open it">> <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<replace "#eventtext">>\ @@color:LightGreen;Raiding the pantryg@@ <<if $Dungeon[_pz][_px][_py][12] is 1>>\ <<set _Item to [102,199,(random(2,4),0]>>\ <<set _foo to setup.additemtoinv($CC, _Item, true)>>\ You find a couple chunks of unidentifiable meat. No idea what they're from, but at least they smell ok. <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ <<set _Item to [109,400,1,0]>>\ <<set _foo to setup.additemtoinv($CC, _Item, true)>>\ You find an unlabeled bottle containing some sort of greenish-blue liquid. No idea what it is. <<else>>\ <<set _Item to [107,0,1,0]>>\ <<set _foo to setup.additemtoinv($CC, _Item, true)>>\ You find a roll of cheese wrapped in wax. It seems to be seemed well enough, so it's probably safe to eat. <<endif>>\ <</replace>>\ <</link>>\ </span>\ <<endif>>\ <<else>>\ @@color:LightGreen;Wooden barrel@@ There is an old, empty barrel here. <<endif>>\ <</replace>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<replace "#eventtext">>\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ <<set _PickFrom to ["bunnyF","bunnyM","catF","catM","foxF","foxM","wolfM"]>>\ <<set _Picked to _PickFrom[random(0, PickFrom.length]>>\ <<if _Picked is "bunnyF">>\ <<set _next to { which: "bunny", sex: "boy", answer: 0, img: "bunnyF.jpg" }>>\ <<elseif _Picked is "bunnyM">>\ <<set _next to { which: "bunny", sex: "boy", answer: 0, img: "bunnyM.jpg" }>>\ <<elseif _Picked is "catF">>\ <<set _next to { which: "cat", sex: "boy", answer: 0, img: "catF.jpg" }>>\ <<elseif _Picked is "catM">>\ <<set _next to { which: "cat", sex: "boy", answer: 0, img: "catM.jpg" }>>\ <<elseif _Picked is "foxF">>\ <<set _next to { which: "fox", sex: "boy", answer: 0, img: "foxF.jpg" }>>\ <<elseif _Picked is "foxM">>\ <<set _next to { which: "fox", sex: "boy", answer: 0, img: "foxM.jpg" }>>\ <<else>>\ <<set _next to { which: "wolf", sex: "man", answer: 0, img: "wolfM.jpg" }>>\ <<endif>>\ @@color:LightGreen;Friendly <<print _next.which>>-<<print _next.sex>>!@@ <<set $AllowNav to false>>\ \ <<SimplePic _next.img>>\ \ <hr> <<set _npc to _next.which + "-" + _next.sex>>\ <<if _next.sex is "girl">>\ As you enter this room you're surprised to see a half-naked _npc on her knees, desperately clutching at her bare breasts. When she sees you, her eyes light up in hope. "Please help me!" she cries, clearly in pain. "I triggered a breast-growth trap and I desperately need to be milked! Would you suck my <<print either("boobs","tits")>> dry? Do you help? <span id="KeypOne">\ <<link "1) Decline to help" $RoomPTR>> <<set _next.answer to "decline">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span> <span id="KeypTwo">\ <<link "2) Yes, suck her dry" $RoomPTR>> <<set _next.answer to "sucktits">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span> <span id="KeypThree">\ <<link "3) Milk her with your hands only" $RoomPTR>> <<set _next.answer to "milkhands">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span>\ <<else>> As you enter the room, you're surprised to see a _npc with his pants down, <<print either("jacking off","masturbating") freely. "Oh, thank <<print either("goodness","the divines","goddess") someone is here!" he exclaims in relief. "I just beat a <<print either("lusty","horny")>> succubus, but she left me <<print either("horny as hell","like this","with an erection so hige I can barely walk")>>. I need to <<print either("get my rocks off","deal with this","get a handle on this")>> fast or else the next monster I encounter is going to have its way with me. Please, won't you help me?" Do you help him? <span id="KeypOne">\ <<link "1) Decline to help" $RoomPTR>> <<set _next.answer to "decline">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span> <span id="KeypTwo">\ <<link "2) Yes, suck his cock and swallow his load" $RoomPTR>> <<set _next.answer to "suckcock">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span> <span id="KeypThree">\ <<link "3) Suck his dick, but don't swallow" $RoomPTR>> <<set _next.answer to "sucknoswallow">>\ <<set $Dungeon[_pz][_px][_py][12] to _next>>\ <</link>>\ </span>\ <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12].hasOwnProperty("answer") is true>>\ <<set _next to $Dungeon[_pz][_px][_py][12]>>\ <<set _npc to _next.which + _next.sex>>\ debug: npc is _npc <<else>>\ @@color:Red;Something went wrong in Event105, clearing event@@ <<set $AllowNav to true>>\ <<set $Dungeon[_pz][_px][_py][11] to 0>> <<set $Dungeon[_pz][_px][_py][12] to 0>> <<endif>>\ <</replace>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ \ <<set _sb to $PC[$CC][$PCspellbook]>>\ <<set _combat to _sb.firebolt + _sb.armor + _sb.poison + _sb.heal>>\ <<set _transport to _sb.up + _sb.down + _sb.portal>>\ <<set _utility to _sb.map + _sb.light + _sb.passwall>>\ \ <<if _combat is 0>>\ <<set _book to either("firebolt","poison","armor","heal", "soul trap")>>\ <<elseif _utility is 0>>\ <<set _book to either("light","map")>>\ <<elseif _transport is 0>> <<set _book to either("up","down","portal")>>\ <<else>>\ <<set _book to either("firebolt","poison","armor","heal","light","map","up","down","portal")>>\ <<endif>>\ \ <<replace "#eventtext">>\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ @@color:Gold;Abandoned bookcase@@ <hr> You find a small bookshelf with a small book in it <span id="KeypOne">\ <<link "1) Read it" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 1>> <</link>> </span>\ <<if setup.getnextinvslot($CC) < 0>>\ 2) Cannot take it, inventory is full <<else>>\ <span id="KeypTwo">\ <<link "2) Take it" $RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 2>> <</link>>\ </span> <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 1>>\ @@color:LightGreen;Abandoned bookcase@@ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<print setup.LearnSpell(_book)>>\ <<SpellAchieveCheck>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ @@color:LightGreen;Abandoned bookcase@@ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<set _BookD to setup.SpellbookLookup(_book)>>\ <<set _foo to setup.additemtoinv($CC, [111, 0, 0, _BookD], false)>>\ You pick up a spellbook of _book. <<elseif $Dungeon[_pz][_px][_py][12] is 99>>\ @@color:LightGreen;Abandoned bookcase@@ There is an empty bookcase here. <<else>>\ @@Error in event 106: unrecognized state: <<print $Dungeon[_pz][_px][_py][12]>> <<endif>>\ <</replace>>\ <<replace "#eventtext">>\ @@color:Gold;Implement Event 107@@ Cage <hr> <</replace>>\@@color:Gold;Implement Event 108@@ <hr> Statue white marble statue of a shrine maiden fills the center of this room. The statue wears a long skirt and dense robe, and carries a small rectangular piece of paper with characters on it you don't recognize.@@color:Gold;Implement Event 109@@ <hr> Throne<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ \ <<replace "#eventtext">>\ @@color:Gold;Implement Event 110@@ <hr> @@color:LightGreen;Salon@@ <<if $Dungeon[_pz][_px][_py][12] is 0>> initial event state <<elseif $Dungeon[_pz][_px][_py][12] is 1>> <<else>>\ @@color:Red;Error in room: unrecognized state@@ <<endif>>\ <hr>\ <span id="KeypOne">\ <<link "1) Do stuff" $RoomPTR>> <</link>>\ </span>\ <</replace>>\ <<replace "#eventtext">>\ @@color:Gold;Implement Event 111@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 112@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 113@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 114@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 115@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 116@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 117@@ <hr> <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Implement Event 118@@ <hr> <</replace>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ <<set _ExitLinks to "none">> \ <<if $WORLD.SmithQuests[0] is 0>>\ <<set _RightPic to $ImgPath + "auction.png">>\ <<set _SuccessPic to "humanM.jpg">>\ <<set _EventSex to "male">>\ <<set _AdvenHeShe to "he">>\ <<set _AdvenHimHer to "him">>\ <<set _AdvenHisHer to "his">>\ <<set _AdvenGuyGirl to "guy">>\ <<elseif $WORLD.SmithQuests[0] is 1>>\ <<set _RightPic to $ImgPath + "auction.png">>\ <<set _SuccessPic to "humanF.jpg">>\ <<set _EventSex to "female">>\ <<set _AdvenHeShe to "she">>\ <<set _AdvenHimHer to "her">>\ <<set _AdvenHisHer to "her">>\ <<set _AdvenGuyGirl to "girl">>\ <<endif>>\ \ <<set _BeerItemPTR to -1>>\ <<set _BeerQTY to 0>>\ <<for _B to 0; _B < $PC[$CC][$PCinven].length; _B++>>\ <<if ($PC[$CC][$PCinven][_B][0] is 109) and ($PC[$CC][$PCinven][_B][3] is 402)>>\ <<set _BeerItemPTR to _B>>\ <<set _BeerQTY to $PC[$CC][$PCinven][_BeerItemPTR][2]>>\ <<endif>>\ <</for>>\ \ <<if $WORLD.CombatInterrupt is "defeated smith omnibus">>\ <<set _ExitLinks to none">>\ <!-- no: handled below for replace matching: set $WORLD.CombatInterrupt to "" --> <<set $WORLD.datapasser to "">>\ <<set $WORLD.SmithQuests[1] to "success">> <<endif>>\ \ <<if $DebugMode is true>>\ <<replace "#capdebuginfo">>SmithQuest is: <<print $WORLD.SmithQuests[1]>><</replace>>\ <<endif>>\ <<if $WORLD.SmithQuests[1] is 0>>\ <<set $WORLD.datapasser to "">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<replace "#eventtext">>\ @@color:LightGreen;Encounter@@ You find a demon with huge tits and a cock guarding an adventurer in a cage. Seeing you, she glances over at you. @@color:Red;Demon@@: "<<print either("Hey, sexy. You here to buy, or you just here to stare at the merchandise?","Hey, I've got one genuine human adventurer for sale over here. Slightly used though.")>>" \ <span id="KeypT">\ <<link "t) Talk" "EventSmith">> <<AdvanceTime 5>> <<set $WORLD.datapasser to 0>> <<set $WORLD.SmithQuests[1] to "demontalk">> <</link>>\ </span> <span id="KeypF">\ <<link "f) Fight" "Combat">> <<set $DisableMenu to true>>\ <<set $WORLD.CombatInterrupt to "smith quest omnibus", 1>>\ <<set $WORLD.SmithQuests[1] to 98>> <<set $ForceMon to ["Charyss","herm"]>> <<AdvanceTime 5>> <</link>>\ </span>\ <</replace>>\ <<elseif $WORLD.SmithQuests[1] is "demontalk">>\ @@color:LightGreen;Chatting with a demon in the forest@@ <hr>\ <<SimplePic "auction.png">>\ <<set _ExitLinks to "questions">>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ <<if _CurrentQuestion is 0>>\ <<if $Charyss is 1>>\ <<unset $Charyss>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello again, Charyss." @@color:Red;Charyss@@: "Oh, you remembered my name? I'm flattered." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hi, I'm $PC[$CC][$PCname]." @@color:Red;Demon@@: "What, are we on a first name basis already? Usually I fuck first, but if this is how you humans do things, then whatever I guess. I'm Charyss." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Are you a demon?" @@color:Red;Charyss@@: "Well duh, what gave it away?" she laughs. "Was it my outrageously good looks? My lovely hair? The way the sun glints off my cock, maybe? Oh, I don't know...how about the horns and and tail and bright red skin? Yes, I'm an omnibus. What's it to you?" <!-- Unlocks -->\ <<set $PC[$CC][$PCSmithDemonChat][1] to 1>><!-- What are you doing out here in the forest? -->\ <<set $PC[$CC][$PCSmithDemonChat][2] to 1>><!-- Why are you trying to sell an adventurer? -->\ <<set $PC[$CC][$PCSmithDemonChat][3] to 1>><!-- What's an omnibus? -->\ <<if $PC[$CC][$PCGerardChat][4] is 2>>\ <<set $PC[$CC][$PCSmithDemonChat][6] to 1>><!-- Zehtalia, from Gerard (implement should only offer question if she's still alive) -->\ <<endif>>\ <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCSmithDemonChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What are you doing out here in the forest?" @@color:Red;Charyss@@: "I'm hosting a lemonade stand and soliciting donations for blind, orphaned girl scouts," she rolls her eyes. "No seriously, I'm trying to sell a sex slave. What does it look like I'm doing?" @@color:LightGreen;Adventurer@@: "Please help me!" the adventurer begs. @@color:Red;Charyss@@: "Oh shut up, you. You're going to be a sex slave and you're going to like it. Remember when I jammed my cock down your throat and face-fucked you until you passed out? It'll probably be like that every day. If only all humans could be so lucky." @@color:LightGreen;Adventurer@@: *whimpers* <!-- Unlocks -->\ <<set $PC[$CC][$PCSmithDemonChat][5] to 1>><!-- Slavery is wrong! -->\ <<if $PC[$CC][$PCSmithDemonChat][10] is 0>>\ <<set $PC[$CC][$PCSmithDemonChat][10] to 1>><!-- How much? -->\ <<endif>>\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCSmithDemonChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why exactly are you trying to sell an adventurer?" @@color:Red;Charyss@@: "I need beer money," she shrugs. @@color:LightGreen;Adventurer@@: "Please just kill me." <<if _BeerQTY > 0>>\ <<set $PC[$CC][$PCSmithDemonChat][4] to 1>><!-- I have some beer -->\ <<endif>>\ <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCSmithDemonChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's an omnibus?" @@color:Red;Charyss@@: "You ever heard of a succubus?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Of course. That's a kind of female sex demon." @@color:Red;Charyss@@: "You ever heard of an incubus?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's a male sex demon?" @@color:Red;Charyss@@: "Yep. Now, you ever heard of an omnivore?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's something that eats both plants and meat, right?" @@color:Red;Charyss@@: "Exactly. 'Omni' is from the Latin, 'omnis,' meaning 'all' or 'everything.' For example, to be omnipotent means to be all powefrul. To be omniscient means to know everything. But omnivore doesn't usually mean 'eat everything' like you might think. For example, bears are omnivourous but they don't eat pussy. Instead it means, like you said, they eat both plants and meat. Actually, succubus and incubus relate to the Latin, succubare and incubare, meaning to lie underneath, and to lie upon. As in, to have sex with. Me, an omnibus, see my gorgeous tits? See my glistening cock? And if I bend over you'd see that I have a pussy hidden underneath it. I have the parts to sex up just about anybody in any way I want to. Not literally everything, of course. I don't typically fuck rocks just like an omnivore doesn't eat them. But I'll fuck most things that breath, anyway. So, omni-bus from omni-bare, meaning one who lies with anything." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Huh. Thanks for the...surprisingly thorough explanation." <<elseif _CurrentQuestion is 4>>\ <<set _ExitLinks to "none">>\ <<set $PC[$CC][$PCSmithDemonChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I have some beer here," you pull out a bottle. "I'll trade it to you for that _AdvenGuyGirl in the cage." The demoness immediately starts drooling at the sight of it and walking towards you with outstretched hands like a zombie. Before she takes it, however, she stops and frowns as if realizing something. @@color:Red;Charyss@@: "That's a really bad deal," she whines, clearly conflicted, then throws up her hands in frustration. "Arrghh!! I've never been good at this whole delayed gratification thing. I want beer. You have beer. That seems like an easy win. But if I can sell this nitwit for 300 gold, I could buy a //lot// of beer." You glance around at the forest. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And how many offers had you had so far?" @@color:Red;Charyss@@: "Alright, alright," she grumbles. "But the only reason I'm not just killing you and taking it is...uhh, hmm. Actually, now that I think about it...why aren't I doing that?" <hr>\ @@color:Gold;Options@@ <span id="KeypOne"><<link "1) Appeal to her better nature" "EventSmith">> <<set $WORLD.datapasser to 100>> <<set $WORLD.SmithQuests[1] to "demontalk">> <</link>></span> <span id="KeypTwo"><<link "2) Try to outsmart her" "EventSmith">> <<set $WORLD.datapasser to 101>> <<set $WORLD.SmithQuests[1] to "demontalk">> <</link>></span> <span id="KeypThree"><<link "3) Try to intimidate her" "EventSmith">> <<set $WORLD.datapasser to 102>> <<set $WORLD.SmithQuests[1] to "demontalk">> <</link>></span> <<if _BeerQTY > 1>>\ <span id="KeypFour"><<link "4) Offer her ALL your beer" "EventSmith">> <<set $WORLD.datapasser to 103>> <<set $WORLD.SmithQuests[1] to "demontalk">> <</link>></span> <<endif>>\ <<elseif _CurrentQuestion is 5>>\ <<set $PC[$CC][$PCSmithDemonChat][5] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Slavery is wrong!" <<if random(1,2) is 1>>\ @@color:Red;Charyss@@: "...yeah?" she looks at you confused. "So is rape and murder. And those are at least four of my top five favorite things." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Only four? Whats the fifth one?" She frowns for a moment and starts counting on her fingers. @@color:Red;Charyss@@: "No, my bad," she admits. "It's all five." <<else>>\ @@color:Red;Charyss@@: "HELLOOOO!!!!" she waves a hand in front of your face. "Demon, remember? I'm //supposed// to be bad." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Well, yeah," you mumble. "But you still shouldn't." @@color:Red;Charyss@@: "Oh, spare me," she rolls her eyes. "Next you'll be telling me I should kill my puppies before I eat them," she makes air quotes with her fingers... "for 'humane' reasons. Like, seriously, do you have any idea how much their kicking and screeaming on the way down adds to the exprience? I don't even chew. You seriously think I care about a little human trafficking?" The adventurer buries <<print _AdvenHisHer>> face in <<print _AdvenHisHer>> hands. <<endif>>\ <<elseif _CurrentQuestion is 6>>\ <<set $PC[$CC][$PCSmithDemonChat][6] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do you know the Demon Queen of Spiders?" @@color:Red;Charyss@@: "Spiders don't have a demon queen," she frowns for a moment, before the corners of her mouth turn up in amusement. "Wait, you're not talking about Zehtalia, are you? Flat-chested, 8 legs, like to hang out in the tower?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Not sure about the flat-chested part, but I think so, yes?" @@color:Red;Charyss@@: "Zehtalia isn't queen of anything, let alone spiders," she laughs. "That whole 'queen of spiders' thing was a joke after she got so drunk she lost a fight to a drider and gained a bunch of legs. Wow, is she really calling herself that now? That'a hilarious. I can't wait to get back to hell to tell everyone." <<elseif _CurrentQuestion is 7>>\ <<set _ExitLinks to "questions">>\ <<set $PC[$CC][$PCSmithDemonChat][7] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about the tower" @@color:Red;Charyss@@: "The Tower of Triumph?" she blinks. "What makes you think I can tell you anything about it? " @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You seem like you're in the know." @@color:Red;Charyss@@: "Huh. Alirght, well, back in the day the good ol' days before this whole mortal realm nonsense started, everything existed as unmanifest poential. Then one day, and I used the term 'day' loosely since there weren't any planets or stars at the time. And I use the term 'time'loosely because, well...you get it. Anyway, one day Tenebrarius bumped into a...uhh, hmm. And she...uhh, puked? Made love to? Discharged? It's actually kind of hard to explain this to a mortal. You don't have any basis of comparison." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Who's Tenebrarius?" @@color:Red;Charyss@@: "I think you people call her the Goddess of Primal Darkness. It's...not a terrible translation of her name, but it kind of misses the point. When it's dark, you can't see. But this isn't about not being able to see. It's about ''what'' you can't see." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What is it we can't see?" @@color:Red;Charyss@@: "Everything. Atleast, before she puked. After she did, you still couldn't see most things. But you could see some things. And there was a ''you'' to see stuff." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sounds like you're talking about the creation of the world." @@color:Red;Charyss@@: "Ehh, kind of." <!-- Unlocks -->\ <<elseif _CurrentQuestion is 8>>\ <<set $PC[$CC][$PCSmithDemonChat][8] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What does any of that have to do with the tower?" @@color:Red;Charyss@@: "Oh, right. The tower is the...channel? That she puked/gave birth through. Birth canal? Yeah, that's a good way of putting it. Sort of. Anyway, because of that, the tower happens to be an easy away to reach...well, anything that doesn't exist, I guess. For example, I don't have a beer in my hand rigth now. if I climbed the tower, I could, uhh...bring back 'me with a beer in my hand' to the world, and ''POOF!'' I'd have a beer in my hand." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mean it grants wishes?" @@color:Red;Charyss@@: "Ehh, no not exactly. But sort of, yeah. I mean, granting wishes is a thing that it can do, yeah. But anything you wouldn't wish for is possible too, so long as it doesn't already materially exist." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How do you make sure to get a wish you want granted instead of a wish you don't want granted?" @@color:Red;Charyss@@: "Beats me. I'm just a demon in desperate need of a beer." @@color:LightGreen;Adventurer@@: "If you let me go I'll buy you all the beer in town!" @@color:Red;Charyss@@: "Quiet!" she kicks the cage. <<elseif _CurrentQuestion is 9>>\ <<set $PC[$CC][$PCSmithDemonChat][9] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's hell like?" @@color:Red;Charyss@@: "Which part?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hell has different parts?" @@color:Red;Charyss@@: "Oh right," she rolls her eyes. "All of hell is just fire and lava and tortued souls gnashing their teeth. Seriously, what's with you people?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sorry for assuming." @@color:Red;Charyss@@: "Seriously, it's only like 98% of it's like that. The rest of it's actually pretty nice. A little overpopulated though. You have no idea what it's like to listen to some dead guy constantly whining about 'torture' this and 'eternal damnation' that. So everybody wants a place in the city where none of that happens, which drives rent through the ceiling." <<elseif _CurrentQuestion is 10>>\ <<set $PC[$CC][$PCSmithDemonChat][10] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So, how much?" <<set _PCaddress to "good girl">>\ <<if $PC[$CC][$PCsex] is "male">><<set _PCaddress to "proper cumslut">><<endif>>\ @@color:Red;Charyss@@: "How much for what? You mean <<print either("how much to let you suck my dick? That's free. Although if you want to pay me for it, I'll allow it.","how much to let you fondle my tits? Ehh, tell you want...you suck my duck and swallow like a " + _PCaddress + " and I'll toss in some titty fondling for free.","how much for your soul? Doesn't look like it's worth much to me, but I'm feeling generous so if you you suck my dick I'll take it off your hands so you don't have to deal with it anymore.")>>" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, I meant for that adventurer you're selling. How much?" @@color:Red;Charyss@@: "You mean you actually want to buy <<print _AdvenHimHer>>? Wow, ok. That's great! But, uhhh...hmm. Ok look, I'm gonna be honest here. I hadn't actually thought that far ahead. Wasn't really expecting to find a buyer out here in the middle of the forest." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Really? Then why are you even here? This isn't all just some tease to get <<print _AdvenHisHer>> hopes up so you can stomp on them, is it?" @@color:LightGreen;Adventurer@@: "Oh, please no." @@color:Red;Charyss@@: "Look, of course I want to sell <<print _AdvenHimHer>>. And it'd be super convient for me to pawn <<print _AdvenHimHer>> off onto you so I don't have to haul <<print _AdvenHimHer>> all the way down to the slave markets down south. But demons aren't exactly known for long-term planning, alright? So I just haven't come up with a specific number I'm happy with yet. So how about make me an offer, and if I like what I hear maybe two of the three of us can walk away happy." <!-- Unlocks -->\ <<set $PC[$CC][$PCSmithDemonChat][11] to 1>><!-- Slave markets? -->\ <<if $PC[$CC][$PCSmithDemonChat][12] is 0>>\ <<set $PC[$CC][$PCSmithDemonChat][12] to 1>><!-- make an offer -->\ <<endif>>\ <<elseif _CurrentQuestion is 11>>\ <<set $PC[$CC][$PCSmithDemonChat][11] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's this about a slave market?" @@color:Red;Charyss@@: "Yeah, Talven down south has a whole big setup for it. Gladiator pit and everything. Too hot for wheat to grow down there, so no beer, but they make a pretty decent drink out of the cactus. They don't take too kindly to demons though. Or much of anything that isn't completely human, really." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How do you manage it?" @@color:Red;Charyss@@: "Uhh..." she thinks. "Hmm. Now that you mention it, yeah that could be a problem. All the more reason for you to buy cock gobbler here and save me the trouble, right?" <!-- unlocks -->\ <<if $PC[$CC][$PCSmithDemonChat][12] is 0>>\ <<set $PC[$CC][$PCSmithDemonChat][12] to 1>><!-- make an offer -->\ <<endif>>\ <<elseif _CurrentQuestion is 12>>\ <<set _ExitLinks to "questions">>\ <<set $PC[$CC][$PCSmithDemonChat][12] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. I'd like to buy your adventurer." @@color:Red;Charyss@@: "Woo!" she cheers. "How much?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Well, how much do you want?" @@color:Red;Charyss@@: "Are you serious?" her eyes boggle. "I want infinity gold plus a blowjob! Also I want to be ruler of hell and for all humans to worship me. Also I want a pony. With a big dick. No, wait...two dicks! Definitely a pony with two dicks. And they should each be like three feet long, with a double pair of basketball-sized testicles all mounted rotary-cannon style so they can rapid-fire ejaculate half a dozen gallons of tasty horse spunk one after another all in one go. Wow, that would be awesome. Payable immediately, and cock muncher here's all yours." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Let me rephrase the question: how many gold coins can I give you that would be enough for you to give me that adventurer right now?" @@color:Red;Charyss@@: "Oh," she seems disappointed. "Gotta admit, anything you could realistically pay would be a huge letdown after asking me what I want. I don't know, how about make me an offer and if I don't like it, I'll bite your dick off. Or I guess if you don't have enough money you could come back later. I'm not in a big hurry to go anywhere when I have dick munch here to keep my balls dry." @@color:LightGreen;Adventurer@@: *whimpers* <!-- unlocks -->\ <<set $PC[$CC][$PCSmithDemonChat][13] to 1>><!-- Offer 100 gold -->\ <<set $PC[$CC][$PCSmithDemonChat][14] to 1>><!-- Offer 300 gold -->\ <<set $PC[$CC][$PCSmithDemonChat][15] to 1>><!-- Offer 500 gold -->\ <<elseif _CurrentQuestion is 13>>\ <<set $PC[$CC][$PCSmithDemonChat][13] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you take 100 gold?" She frowns and kicks the cage. <<set _PCheshe to "She">>\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _PCheshe to "He">>\ <<endif>>\ @@color:Red;Charyss@@: "Do you hear that, slave?" she shouts. "<<print _PCheshe>> says you're only worth 100 gold! Why did I even waste my time with you!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "It's not a bad deal," you point out. "Beer is only what, 8-10 gold or so? That's ten or twelve beers worth." @@color:Red;Charyss@@: "Math isn't something I've great at," she admits. "But even if you're right, that's still a lot less than I was hoping for." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Well, you asked me to make an offer, so made an offer. If you're going to insist on more, you should have just said so up front. You might have got what you asked for." @@color:Red;Charyss@@: "Maybe," she shrugs. "But I was kinda hoping you'd assume I'd carry through on that dick biting threat if you only offered 100, and that you'd offer me something crazy like 500 instead." <<if $PC[$CC][$PCcoins] < 500>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I don't even have that much. Will you take the 100?" @@color:Red;Charyss@@: "Nahh, I'm not in a hurry. If you're poor, I'll just wait for a better buyer." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I didn't though. So have we got a deal?" @@color:Red;Charyss@@: "Nahh, if that's all <<print _AdvenHeShe>>'s worth to you, I'll wait for a better buyer." <<endif>>\ <<elseif _CurrentQuestion is 14>>\ <<if $PC[$CC][$PCcoins] < 300>>\ <<set _ExitLinks to "force combat">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How does 300 gold sound?" @@color:Red;Charyss@@: "Ehh," she shrugs. "It's not a bad offer, but it's less than I was hoping for." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh good," you mumble, digging through your coinpurse. "Looks like I don't even have that much anyway." @@color:Red;Charyss@@: "...then why did you..." she trails off in annoyance. "You know what? I think I'm going to kill you now." <<else>>\ <<set _ExitLinks to "blind repeat">>\ <<set $WORLD.SmithQuests[1] to "success">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - 300>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How does 300 gold sound?" She thinks it over, then nods. @@color:Red;Charyss@@: "Yeah, I guess that's a fair price for used goods." You hand over the gold. The omnibus lifts the cage off the groudn and casually tosses it aside. You frown and turn to the adventurer. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wait, if it was that easy to get out, why didn't you just run? @@color:Red;Charyss@@: "It's more fun if they try to escape. That way I get to punish them." The adventuerer rubs _AdvenHisHer ass and looks away in shame. @@color:Red;Charyss@@: "Anyway, enjoy your new master, slave," she then turns to you. "And maybe I'll see you around again sometime." <<endif>>\ <<elseif _CurrentQuestion is 15>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How about 500 gold?" you offer. <<if $PC[$CC][$PCcoins] < 500>>\ <<set _ExitLinks to "force combat">>\ @@color:Red;Charyss@@: "500?" she grins. "You've got a deal!" You reach into your coin purse, but quickly realize you don't have that much. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wait, sorry. Turns out I don't have 500." @@color:Red;Charyss@@: "Then why in the blazes did you offer that much?" she seems annoyed. "Now I'll have to kill you. Not that I have anything wrong with killing people. I rather enjoy it, actually. But I'm really in more of a 'get drunk then kill some innocent bystanders and rifle through their pockets' mood than a 'kill somebody then rifle through a corpses pockets to see if there's enough money to get drunk on' mood. Sometimes the order you do these things in makes all the difference." <<if $PC[$CC][$PCcoins] > 99>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wait!" you hand her your coinpurse. "I do have <<print $PC[$CC][$PCcoins]>>! Would you take that instead?" @@color:Red;Charyss@@: "Absolutely I'll take that," she cracks her knuckles. "Just give me a minute to kill you first before I rifle through your pockets for it." <<else>>\ <!-- no action required? -->\ <<endif>>\ <<else>>\ <<set _ExitLinks to "blind repeat">>\ <<set $WORLD.SmithQuests[1] to "success">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - 500>>\ @@color:Red;Charyss@@: "Woo, score!" she cheers. "Do you hear that, slave? You've got a new master!" You count out the coins and hand them over to the omnibus, who lifts the cage off the ground and tosses it aside. Apparently it was simply resting on the ground. You're a bit perplexed at that, but the omnibus is already rushing off in the wrong direction if she wants to go back to town, and you decide to simply let her go rather than ask questions. <<endif>>\ <<elseif _CurrentQuestion is 100>>\ <<set $WORLD.SmithQuests[1] to 98>>\ <<set _ExitLinks to "force combat">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I have faith in you," you smile convincingly. "You're a better person than that." She blinks a couple times. @@color:Red;Charyss@@: "Wait, you're serious?" she starts laughing. "Oh my devil, that's hilarious! I think I'm going to eat you now. And then wash you down with your own beer." <<elseif _CurrentQuestion is 101>>\ <<set $WORLD.SmithQuests[1] to 98>>\ <<if $PC[$CC][$PCint] < 15>>\ <<set _ExitLinks to "force combat">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Because I'm a tactical genius," you tap your head. "And there's no way you could outsmart me." @@color:Red;Charyss@@: "Hmm, now that you point it out," stares at your head where you've tapped it, "that beer would taste a lot better if I drink it out of your skull." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You're not getting my skull without a fight." @@color:Red;Charyss@@: "Your terms are acceptable." <<else>>\ <<set _ExitLinks to "questions">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Look, you want beer, right?" @@color:Red;Charyss@@: "Yes?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And if you sell that adventurer, how much beer could you buy?" @@color:Red;Charyss@@: "Uhh," she starts counting on her fingers. "A lot?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. Now suppose you fight me, and you win. How much beer will you get to drink?" @@color:Red;Charyss@@: "So long as I sell this sex slave, I'll still get to drink all the same beer as if I don't fight you," she points out. "But I'll get to drink all that beer later, //and// I'll get to drink that beer you're holding while I'm waiting for a buyer to show up. A lot of beer plus one, is more than just a lot of beer." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sure," you nod amicably. "But it's not a sure thing. Suppose I beat you in the fight, and take that adventurer with me. Then you won't get any beer at all. True, we dont'know who would win the fight. You might win and get this one extra beer. But you might lose, and miss out completely on that 'lot of beer' you'll have the moment you sell that adventurer. Why take the chance of losing everything to at best maybe gain only a single beer? It's a bad gamble." @@color:Red;Charyss@@: "Hmm," she frowns. "Point taken. So...wanna buy <<print _AdvenHimHer>>?" <<if $PC[$CC][$PCSmithDemonChat][10] is 0>>\ <<set $PC[$CC][$PCSmithDemonChat][10] to 1>><!-- How much? -->\ <<endif>>\ <<endif>>\ <<elseif _CurrentQuestion is 102>>\ <<set $WORLD.SmithQuests[1] to 98>>\ <<if $PC[$CC][$PCstr] < 15>>\ <<set _ExitLinks to "force combat">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Because I'm incredibly strong," you flex your biceps at her. "And there's no way you could overpower me." The omnibus looks at your flex, and her cock visibly hardens. @@color:Red;Charyss@@: "Let's test that, shall we?" she strokes herself off. "Winner gets to fuck the loser. The best part of this is that it doesn't matter whether I win or you lose. Either way, I win." <<else>>\ <<set _ExitLinks to "questions">>\ You glance over the omnibus with an air of casual indifference. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Go and and try if you want," you dismiss. "But I don't think you can beat me." @@color:Red;Charyss@@: "I think you're bluffing," she frowns uncertainly. "But I also think a singlebeer isn't worth taking the chance." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Smart choice." @@color:Red;Charyss@@: "Of course," she continues. "You could make this all of this a whole lot simpler for everybody if you'd buy this cock-gobbler off me yourself." <<if $PC[$CC][$PCSmithDemonChat][10] is 0>>\ <<set $PC[$CC][$PCSmithDemonChat][10] to 1>><!-- How much? -->\ <<endif>>\ <<endif>>\ <<elseif _CurrentQuestion is 103>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What if instead of one beer," you start pulling out more bottles. "What if I offered you _BeerQTY beers?" <<set $PC[$CC][$PCinven][_BeerItemPTR] to [0,0,0,0]>>\ <<if _BeerQTY > random(1,9)>>\ <<set _ExitLinks to "blind repeat">>\ <<set $WORLD.SmithQuests[1] to "success">>\ @@color:Red;Charyss@@: "Where in the nine hells did you get that much beer?" she marvels at your offering. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do you really care?" @@color:Red;Charyss@@: "You know what?" she blinks. "You're absolutely right. I don't. Gimmme!" You start handling bottles over to her, which she immediately starts guzzling. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So...about that adventurer." @@color:Red;Charyss@@: "Hmm? Oh, yeah...here you go. No refunds." With one hand she casually lifts the cage off the ground and tosses it aside. Apparently it wasn't anchored to anything. <<else>>\ <<set $WORLD.SmithQuests[1] to 98>>\ @@color:Red;Charyss@@: "I'm not saying it's a bad deal," she frowns, clearly conflicted. Then she chugs a beer, and instantly cheers up. "But is that really the best you can do? I think you can do better." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "This would be a lot simpler if you'd simply tell me what you want so I could get it for you." @@color:Red;Charyss@@: "We already tried that, but I still don't see a rotary cannon dick pony anywhere." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Point taken." @@color:Red;Charyss@@: "I like what you're doing with this bringing me beer thing though," she opens another bottle. "How about you keep doing it, and I'll let you have the adventurer." You can't but notice that she intends to keep everything you've offered up so far. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How much is enough? I don't want to just keep giving you beer over and over and never get what I want out of it." @@color:Red;Charyss@@: "Wait, you'd do that?" she looks at you incredulously, then turns suspicious. "Ordinarily I'd take that deal in a heartbeat, but it sounds a little too good to be true. So how about this: bring me //ten// more, and you can have cock gobbler here. Probably." <<endif>>\ <<endif>>\ \ \ <<elseif $WORLD.SmithQuests[1] is "success">>\ <<if $WORLD.CombatInterrupt is "defeated smith omnibus">>\ <<replace "#eventtext">>\ <<set _ExitLinks to "none">> <<include "SmithSuccess">>\ <</replace>>\ <<set $WORLD.CombatInterrupt to "">>\ <<else>>\ <<set _ExitLinks to "none">> <<include "SmithSuccess">>\ <<endif>>\ <<elseif $WORLD.SmithQuests[1] is 98>>\ <<set $WORLD.datapasser to "">>\ <<set _ExitLinks to "none">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<replace "#eventtext">>\ @@color:LightGreen;Chatting with a demon in the forest@@ <hr>\ @@color:Red;Charyss@@: <<print either("Hello again.","Hey.")>> <<print ("What bring you here again?","Couldn't stay away, hmm?","You just here to check out the merchandise, or are you buying?","Wanna buy an adventurer?")>> <hr>\ @@color:Gold;Options@@ <span id="KeypT">\ <<link "t) Talk" "EventSmith">> <<AdvanceTime 5>> <<set $WORLD.datapasser to 0>> <<set $WORLD.SmithQuests[1] to "demontalk">> <<set $Charyss to 1>> <</link>>\ </span> <span id="KeypF">\ <<link "f) Fight" "Combat">> <<set $DisableMenu to true>>\ <<set $WORLD.CombatInterrupt to "smith quest omnibus", 1>>\ <<set $WORLD.SmithQuests[1] to 98>> <<set $ForceMon to ["Charyss","herm"]>> <<AdvanceTime 5>> <</link>>\ </span>\ <</replace>>\ <<elseif $WORLD.SmithQuests[1] is 99>>\ <<replace "#eventtext">>\ The cage is now empty. <</replace>>\ <<else>>\ <<if $DebugMode is true>>\ @@color:Yellow;Warning@@ Smith event state is <<print $WORLD.SmithQuests[1]>>. If that's one of the of 'who has it' outcomes, that's probably ok. This check mostly exists to prevent unwanted dead ends. <<endif>>\ <<endif>>\ \ <<if _ExitLinks is "force combat">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypF">\ <<link "f) Fight" "Combat">> <<set $DisableMenu to true>>\ <<set $WORLD.CombatInterrupt to "smith quest omnibus", 1>>\ <<set $ForceMon to ["Charyss","herm"]>> <<set $WORLD.SmithQuests[1] to 98>> <<AdvanceTime 5>> <</link>>\ </span>\ <<elseif _ExitLinks is "none">>\ <<elseif _ExitLinks is "blind repeat">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) continue" "EventSmith">> <</link>>\ </span>\ <<elseif _ExitLinks is "return to forest, clear event">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Forest">> <<set $WORLD.smith to 4>> <<AdvanceTime 5>> <</link>>\ </span>\ <<elseif _ExitLinks is "questions">>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <!-- this is here to handle varying beer durign repeat visits -->\ <<if ($PC[$CC][$PCSmithDemonChat][12] is 2) and (_BeerQTY > 0)>>\ <<set $PC[$CC][$PCSmithDemonChat][4] to 1>><!-- Offer beer -->\ <<endif>>\ \ <<for _i to 0; _i < $PC[$CC][$PCSmithDemonChat].length; _i++>>\ <<if $PC[$CC][$PCSmithDemonChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "start">>\ <<set _QuestionPool[1] to "What are you doing out here in the forest?">>\ <<set _QuestionPool[2] to "Why are you trying to sell an adventurer?">>\ <<set _QuestionPool[3] to "What's an omnibus?">>\ <<set _QuestionPool[4] to "Offer her some beer">>\ <<set _QuestionPool[5] to "Slavery is wrong!">>\ <<set _QuestionPool[6] to "Do you know the Demon Queen of Spiders?">>\ <<set _QuestionPool[7] to "Ask about the tower">>\ <<set _QuestionPool[8] to "What does any of that have to do with the tower?">>\ <<set _QuestionPool[9] to "Ask about hell">>\ <<set _QuestionPool[10] to "So, how much?">>\ <<set _QuestionPool[11] to "What's this about a slave market?">>\ <<set _QuestionPool[12] to "I'm ready to buy the adventurer">>\ <<set _QuestionPool[13] to "Offer 100 gold for the adventurer">>\ <<set _QuestionPool[14] to "Offer 300 gold for the adventurer">>\ <<set _QuestionPool[15] to "Offer 500 gold for the adventurer">>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Leave" "Forest">> <<set $WORLD.SmithQuests[1] to 98>>\ <<AdvanceTime 5>> <</link>> </span>\ <span id="KeypF">\ <<link "f) Fight!" "Combat">> <<set $DisableMenu to true>>\ <<set $WORLD.CombatInterrupt to "smith quest omnibus", 1>>\ <<set $ForceMon to ["Charyss","herm"]>> <<set $WORLD.SmithQuests[1] to 98>> <<AdvanceTime 5>> <</link>> </span>\ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix","KeypSeven","KeypEight"]>>\ <<set _KeyChars to ["1) ","2) ","3) ","4) ","5) ","6) ","7) ","8) "]>>\ \ <hr>\ <<if _AskTheseQuestions.length > 0>>\ @@color:Gold;Conversation@@ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "EventSmith">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<endif>>\ <<else>>\ @@color:Red;Error:@@ unrecognized exitlinks request: _ExitLinks <span id="KeypSpace">\ <<link "space) Continue" "Forest">> <<set $WORLD.SmithQuests[1] to 98>>\ <<AdvanceTime 5>> <</link>>\ </span>\ <<endif>>\ <<if $DebugMode is true>>\ Debug: <<print $PC[$CC][$PCSmithDemonChat]>> <<for _i to 0; _i < $PC[$CC][$PCSmithDemonChat].length; _i++>>\ <<print _i>>) <<print $PC[$CC][$PCSmithDemonChat][_i]>><br>\ <</for>> <<endif>>\<<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _trapmaster to setup.PlayerHasPerk("Trapmaster")>>\ <<set _trapdiff to _pz>>\ <<set _RoomPTR to passage()>>\ <<set _ExitLink to "continue">>\ <<set $AllowNav to false>>\ \ <!-- assign new trap if none present -->\ <<if $Dungeon[_pz][_px][_py][12] is 0>>\ <<if _pz is 1>>\ <<set $Dungeon[_pz][_px][_py][12] to random(1,2)>>\ <<elseif $Dungeon[_pz-1][_px][_py][11] is 0>>\ <<set $Dungeon[_pz][_px][_py][12] to random(1,3)>>\ <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to random(1,2)>>\ <<endif>> <<endif>>\ \ <<set _whichtrap to $Dungeon[_pz][_px][_py][12]>>\ \ <<set _AvoidChance to ($PC[$CC][$PCdex] - 13) - _pz>>\ <<set _RogueMod to 0>> <<if setup.PtrToClass($PC[$CC][$PCclass]) is "rogue">>\ <<set _RogueMod to 3>>\ <<set _AvoidChance to _AvoidChance - $PC[$CC][$PClevel]>>\ <<endif>>\ <<set _PZafterRogue to _pz - _RogueMod>>\ \ <<replace "#eventtext">>\ <<if _whichtrap is "pitfall landing">>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ <<set $Dungeon[_pz][_px][_py][12] to 105>>\ <<set _RogueMod to 0>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "rogue">>\ <<set _RogueMod to 3>>\ <<endif>>\ <<set _TminDam to 5 * (1 + _pz - _RogueMod)>>\ <<set _TmaxDam to 10 * (1 + _pz - _RogueMod)>>\ <<set _TrapDamage to random(_TminDam, _TmaxDam)>>\ @@color:Red;Hard landing@@ You land on the floor below, taking @@color:Yellow;<<print _TrapDamage>> damage@@. \ <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set $AllowNav to false>>\ Unfortunately, that's more health than you have. You die. <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Falling into a pit trap">> <</link>>\ </span>\ <<endif>>\ <<elseif _whichtrap is 1>>\ <<set $AllowNav to false>>\ <<set $Dungeon[_pz][_px][_py][12] to 101>>\ <<if _AvoidChance > 0>>\ @@color:LightGreen;Trap disarmed!@@ While walking through this room, notice a suspicious pressure plate. Standing a safe distance away, you toss a loose rock onto it which causes a crossbow bolt to fire harmlessly against a wall. <<TrapAchieveTester "avoid">>\ <<elseif (_RogueMod is 3) and (_pz < 4)>>\ @@color:Yellow;Trap activated!@@ You carelessly step on a trigger plate which fires a crossbow bolt at your head. However, as a rogue you're experienced with these matters, and instantly duck underneath it. <<TrapAchieveTester "trigger">>\ <<else>>\ @@color:Red;Trap activated!@@ While walking through this room, you step on a pressure plate that triggers a bolt to fly at you from a hidden crossbow. <<set _TrapDamage to random(_PZafterRogue, _PZafterRogue * 5)>>\ <<if _trapmaster is true>>\ <<set _Trapdamage to Math.trunc(_TrapDamage / 2)>>\ <<if _Trapdamage < 1>>\ <<set _TrapDamage to 1>>\ <<endif>>\ Your @@color:LightGreen;Trapmaster perk@@ reduces the damage to only @@color:Red;<<print _TrapDamage>>@@. <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<else>>\ @@color:Red;You are struck for _TrapDamage damage!@@ <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<endif>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _ExitLink to "none">>\ Unfortunately, that's more health than you have. You die. <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Crossbow bolt trap">> <</link>>\ </span>\ <<endif>>\ <<endif>>\ <<elseif _whichtrap is 2>>\ <<if _AvoidChance > 0>>\ <<set $Dungeon[_pz][_px][_py][12] to 120>>\ @@color:LightGreen;Trap avoided!@@ You notice a small tripwire at the entrance to this room. Carefully stepping over it, you make a point to avoid it in the future. <<TrapAchieveTester "avoid">>\ <<elseif (_RogueMod is 3) and (_pz < 4)>>\ <<set $Dungeon[_pz][_px][_py][12] to 121>>\ @@color:Yellow;Tripwire trap activated!@@ You fail to notice a tripwire and carelsesly trip over it. Your rogue instincts kick in however, and you deftly roll out of the fall, avoiding a large rock falling from the ceiling in the process. <<TrapAchieveTester "trigger">>\ <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to 121>>\ @@color:Yellow;Tripwire trap activated!@@ <<if random(1,2) is 1>>\ You trip over a razor-thin wire which shreds into you and causes you to trip and fall on your face \ <<else>>\ You trip over a wire which triggers a large rock to fall from a recess onto your head. \ <<endif>>\ <<set _TrapDamage to random(_PZafterRogue, _PZafterRogue * 5)>>\ <<if _trapmaster is true>>\ <<set _Trapdamage to Math.trunc(_TrapDamage / 2)>>\ <<if _Trapdamage < 1>>\ <<set _TrapDamage to 1>>\ <<endif>>\ Your @@color:LightGreen;Trapmaster perk@@ reduces the damage to only @@color:Red;<<print _TrapDamage>>@@. <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<else>>\ @@color:Red;You are struck for _TrapDamage damage!@@ <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<endif>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _ExitLink to "none">>\ Unfortunately, that's more health than you have. You die. <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Crossbow bolt trap">> <</link>>\ </span>\ <<endif>>\ <<endif>>\ <<elseif _whichtrap is 3>>\ <<if _AvoidChance > 0>>\ @@color:LightGreen;Trap avoided!@@ You notice the peculiar discoloration of a section of tiles that you suspect indicates they were added later. Looking more closely you notice that the entire floor dips towards the middle of the discoloration, as if nothing solid supports it from beneath. <<TrapAchieveTester "avoid">>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Tiptoe around it" _RoomPTR>> <<set $Dungeon[_pz][_px][_py][8] to 103>>\ <<set $Dungeon[_pz][_px][_py][11] to 0>>\ <</link>> </span>\ <<set _ExitLink to "none">>\ <span id="KeypTwo">\ <<link "2) Stomp up and down on it" _RoomPTR>> <<set $Dungeon[_pz][_px][_py][12] to 104>>\ <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<if $Dungeon[_pz][_px][_py][11] is 0>>\ <<set $Dungeon[_pz][_px][_py][11] to "Trap">>\ <<set $Dungeon[_pz][_px][_py][12] to "pitfall landing">>\ <<else>>\ <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>>\ <<set $Dungeon[_pz][_px][_py][12] to 999>>\ <<endif>>\ <</link>>\ </span>\ <<elseif (_RogueMod is 3) and (_pz < 4)>>\ <<set $Dungeon[_pz][_px][_py][12] to 104>>\ @@color:Yellow;Trap activated!@@ You carelessly step on a weak section of the floor which collapses from under your feet. Your rogue skills are sharp, however, and you instantly twist around to grab a still-intact section fo floor behind you and crawl back up. <<TrapAchieveTester "trigger">>\ <<else>>\ <<set $Dungeon[_pz][_px][_py][12] to 104>>\ @@color:Red;Trap activated!@@ You carelessly step on a weak section of the floor which collapses from under your feet, sending you tumbling to the floor below. <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<if $Dungeon[_pz][_px][_py][11] is 0>>\ <<set $Dungeon[_pz][_px][_py][11] to "Trap">>\ <<set $Dungeon[_pz][_px][_py][12] to "pitfall landing">>\ <<else>>\ <<set _ExitLink to "continue">>\ @@color:Red;Error in pit trap@@: landing site cannot be cleared, it is a: <<print $Dungeon[_pz][_px][_py][11]>> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>>\ <<set $Dungeon[_pz][_px][_py][12] to 999>>\ <<endif>>\ <<set _TrapDamage to random(_PZafterRogue, _PZafterRogue * 5)>>\ <<if _trapmaster is true>>\ <<set _Trapdamage to Math.trunc(_TrapDamage / 2)>>\ <<if _Trapdamage < 1>>\ <<set _TrapDamage to 1>>\ <<endif>>\ Your @@color:LightGreen;Trapmaster perk@@ reduces the damage to only @@color:Red;<<print _TrapDamage>>@@. <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<else>>\ @@color:Red;You are struck for _TrapDamage damage!@@ <<set _TrapDamage to (_TrapDamage * -1)>>\ <<ChangeStat $PChpcur _TrapDamage>>\ <<ShowHealth>>\ <<TrapAchieveTester "trigger">>\ <<endif>>\ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _ExitLink to "none">>\ Unfortunately, that's more health than you have. You die. <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Falling into a pit trap">> <</link>>\ </span>\ <<endif>>\ <<endif>>\ <<elseif _whichtrap is 101>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ There is a a depressed pressure plate from a crossbow trap here.\ <<elseif _whichtrap is 103>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ You tiptoe carefully around a weak section of floor.\ <<elseif _whichtrap is 104>>\ <<set _ExitLink to "none">>\ <<set $AllowNav to true>>\ @@color:Gold;Collapsed floor@@ <<set _Rope to setup.HasRope()>>\ <<if _Rope > -1>>\ A huge section of the floor has collapsed here, revealing a way down to the floor below. You have some rope with you. There's a solid-looking chunk of the floor you could probably tie it to if you wanted to get down safely. <<else>>\ A huge section of the floor has collapsed here, revealing a way down to the floor below. Perhaps if you had some rope you could tie it to something make make a safe way down. <<endif>>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Jump down like an idiot" _RoomPTR>> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>>\ <</link>> </span>\ <<if _Rope > -1>>\ <span id="KeypTwo">\ <<link "2) Secure a way down" _RoomPTR>> <<set _throwaway to setup.RemoveOneItemFromInv($CC, _Rope)>> <<set $Dungeon[_pz][_px][_py][12] to 106>>\ <<set $Dungeon[_pz -1][_px][_py][12] to 107>>\ <</link>>\ </span>\ <<endif>>\ <<elseif _whichtrap is 105>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ @@color:Gold;Collapsed ceiling@@ The floor here is littered with rock debris and dust, and there is a clear hole in the ceiling leading to the floor above you.\ <<elseif _whichtrap is 106>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ @@color:Gold;A safe way down@@ A large section of the floor has collapsed here, but there is a secure rope leading to the next floor down. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Climb down" _RoomPTR>> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>>\ <</link>>\ </span>\ <<elseif _whichtrap is 107>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ @@color:Gold;A safe way up@@ A large section of the ceiling has collapsed here, but there is a secure rope leading to the next floor up. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Climb up" _RoomPTR>> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>>\ <</link>>\ </span>\ <<elseif _whichtrap is 120>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ There is a tripwire here which you carefully avoid.\ <<elseif _whichtrap is 121>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ There is a tripwire trap here already torn from previous activation.\ <<elseif _whichtrap is 999>>\ <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ @@color:Red;(Bugged pit trap has been removed)@@\ <<else>>\ Implement trap id: _whichtrap\ <<endif>>\ \ <<if _ExitLink is "continue">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) continue" _RoomPTR>> <</link>>\ </span>\ <<endif>>\ <</replace>>\<<replace "#eventtext">>\ <<if $PC[$CC][$PCz] > 99>>\ @@color:Gold;Stairs Up@@ This is it! The final level! <hr>\ <span id="KeypOne">\ <<link "1) Climb to the roof" "Ascend">> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>> <</link>>\ </span>\ <<elseif $PC[$CC][$PClocation] is "forest">>\ <!-- handled by forest widget -->\ <<else>>\ @@color:Gold;Stairs Up@@ A set of stairs lead up towards harder opponents, but also towards the prize at the top. <hr>\ <span id="KeypOne">\ <<link "1) Go up the stairs" "Dungeon64">> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>> <</link>>\ </span>\ <<endif>>\ <</replace>>\<<replace "#eventtext">>\ @@color:Gold;Stairs Down@@ <<if $PC[$CC][$PCz] > 1>>\ A set of stairs lead downward towards easier opponents, and eventually, back to town.\ <hr>\ <span id="KeypOne">\ <<link "1) Go down the stairs" "Dungeon64">> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>> <</link>>\ </span>\ <<elseif $PC[$CC][$PClocation] is "forest">>\ <!-- handled by forest widget -->\ <<elseif $PC[$CC][$PCz] is 1>>\ The exit stairs are here, leading back to town. <hr>\ <span id="KeypOne">\ <<link "1) Leave the dungeon" "TownSquare">> <<set $PC[$CC][$PCz] to 0>> <<set $PC[$CC][$PClocation] to "town">> <</link>>\ </span>\ <<else>>\ @@color:Red;Error in stairs down: pcz is <<print $PC[$CC][$PCz]>> <<endif>>\ <</replace>>\<span id="KeypESC">\ <<link "esc) close window">> <<unset $InvenMode>> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span>\ <hr>\ <span id="EquipmentGoesHere">\ <<ShowEquipment>>\ </span>\ \ <hr>\ <span id="inverr"><br></span>\ <hr>\ \ <<set $InvenMode to "use">>\ <span id="InventoryGoesHere">\ <<ShowInventory>>\ </span>\ \ <<if $DebugMode is true>>\ <hr> @@color:Gold;debug@@ <<button "[add stackable item]" "Inventory">> <<set _foo to setup.additemtoinv($CC, [109, 0, 1, 301], true)>> <</button>> <<button "[add non-stackable item]" "Inventory">> <<set _foo to setup.additemtoinv($CC, [300, 0, 0, 301], false)>> <</button>>\ <<endif>>\<<set $DisableMenu to true>>\ <<set $GameState to "combat">>\ <<set $WORLD.turnssincecombat to 0>>\ <<set $WORLD.dialogue to 0>>\ <<set $PC[$CC][$PCmisc].battles to $PC[$CC][$PCmisc].battles +1>>\ <<if $RCHelper is "inventory">>\ <!-- combat already started don't initialize -->\ <<else>>\ <<set $m_hp to []>>\ <<GetMon $ForceMon>>\ <<endif>>\ \ <<if $Mon.boss > 0>>\ <<PlayBGM "boss">>\ <<else>>\ <<PlayBGM "combat">>\ <<endif>>\ \ <<ShowActiveEffects>> \ <<if $DebugMode is true>>\ @@color:Red;Debug, forcemon: $ForceMon>>\ <<endif>>\ <<set _monimg to $ImgPath + $Mon.pic>>\ \ <<UpdateACandFlirts>>\ <<GetPlayerAbsorption>>\ \ <div class="columnmain">\ <span id="portal">\ <table>\ <tr><td><div><img id ="mon-avatar" @src="_monimg"></div></td>\ <td>@@color:Red;Level <<print $Mon.level>> <<print $Mon.name>>@@<br><br>$Mon.desc</td></tr></table>\ \ <!-- monster bars removed after combat to reclaim space -->\ <span id ="monhealth"><div id="monhpbarbkg" class="hzbarbkg"><div id="monhpnbar" class="hzbar"></div></div></span>\ <span id ="monflirt"><div id="monflirtbarbkg" class="hzbarbkg"><div id="monflirtnbar" class="hzbar"></div></div></span>\ <<timed 200ms>>\ <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<run Health2($Mon.teased, 100, "monflirtnbar", true)>>\ <</timed>>\ <<if $RCHelper is "inventory" or $RCHelper is "spellbook">>\ <<set $RCHelper to "">>\ <<set _foo to $PassData[0]>>\ <<set $ComLog[0] to $ComLog[1]>>\ <<set $ComLog[1] to $ComLog[2]>>\ <<set $ComLog[2] to $ComLog[3]>>\ <<set $ComLog[3] to $ComLog[4]>>\ <<set $ComLog[4] to $ComLog[5]>>\ <<set $ComLog[5] to _foo>>\ <<else>>\ <<for _i to 0; _i < 16; _i++>>\ <<set $ComLog[_i] to "">>\ <</for>>\ <<endif>>\ <hr>\ <<if $PC[$CC][$PChpcur] < 1>>\ @@color:Yellow;You have been defeated!@@ <span id="KeypSpace">\ <<link "(press space to continue)" "DefeatSex">> <</link>>\ </span> <<else>>\ <<GetAttackArray>>\ <span id ="combatcontrols">\ <<set _spanarray to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix","KeypSeven","KeypEight","KepyNine"]>>\ <table width=100%><tr style="vertical-align: top;"><td>\ @@color:Gold;Melee Actions@@<br>\ <<for _LoopUniqueNameadhsgjdhas to 0; _LoopUniqueNameadhsgjdhas < $AttackArray.length; _LoopUniqueNameadhsgjdhas++>>\ <<capture _LoopUniqueNameadhsgjdhas>>\ <<set _nzero to _LoopUniqueNameadhsgjdhas +1>>\ <<set _linktext to "" + _nzero + ") " + $AttackArray[_LoopUniqueNameadhsgjdhas][2]>>\ <span @id="_spanarray[_LoopUniqueNameadhsgjdhas]">\ <<link _linktext>>\ <<set _asdf to "Keypress sending: " + $AttackArray[_LoopUniqueNameadhsgjdhas] + "<br>">><<AddToLog _asdf>> <<CombatAttack $AttackArray[_LoopUniqueNameadhsgjdhas]>>\ <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<MonsterTurn false>>\ <</link>> <<CombatUIStatsHack $AttackArray[_LoopUniqueNameadhsgjdhas]>> </span>\ <</capture>>\ <</for>>\ <<if $DebugMode is true>>\ <span id="KeypC">\ <<link "c) Debug insta-kill">>\ <<AddToLog "Keypress sending: 'debug kill' command<br>">>\ <<set _DKC to ["debug kill", -1, "nodesc"]>>\ <<CombatAttack _DKC>>\ <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<MonsterTurn false>>\ <</link>> </span>\ <<endif>>\ </td><td style="vertical-align: top;">\ <<if $PC[$CC][$PCspellbook].any is true>>@@color:Gold;Spells@@<br><<endif>>\ <span id = "SpellActions">\ <<if $PC[$CC][$PCspellbook].q is "">><<else>>\ <<set _qCommand to "q) " + $PC[$CC][$PCspellbook].q>>\ <span id="KeypQ">\ <<link _qCommand>> <<set _cf to [$PC[$CC][$PCspellbook].q,-1,"nodesc"]>> <<set _asdf to "Keypress sending: " + _cf + "<br>">><<AddToLog _asdf>> <<CombatAttack _cf>> <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<if $DeathBySpellFeedback > 0>>\ <<DeathByFeedback>>\ <<else>>\ <<MonsterTurn false>>\ <<endif>>\ <</link>> </span>\ <<endif>>\ <<if $PC[$CC][$PCspellbook].w is "">><<else>>\ <<set _wCommand to "w) " + $PC[$CC][$PCspellbook].w>>\ <span id="KeypNorth">\ <<link _wCommand>> <<set _cf to [$PC[$CC][$PCspellbook].w,-1,"nodesc"]>> <<CombatAttack _cf>> <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<if $DeathBySpellFeedback > 0>>\ <<DeathByFeedback>>\ <<else>>\ <<MonsterTurn false>>\ <<endif>>\ <</link>> </span>\ <<endif>>\ <<if $PC[$CC][$PCspellbook].e is "">><<else>>\ <<set _eCommand to "e) " + $PC[$CC][$PCspellbook].e>>\ <span id="KeypE">\ <<link _eCommand>> <<set _cf to [$PC[$CC][$PCspellbook].e,-1,"nodesc"]>> <<CombatAttack _cf>> <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<if $DeathBySpellFeedback > 0>>\ <<DeathByFeedback>>\ <<else>>\ <<MonsterTurn false>>\ <<endif>>\ <</link>> </span>\ <<endif>>\ </span>\ </td></tr></table>\ <hr>\ <span id="KeypF">\ <<link "f) Flirt">> <<set _cf to ["flirt",-1,"nodesc"]>> <<CombatAttack _cf>> <<run Health2($Mon.teased, 100, "monflirtnbar", true)>> <<MonsterTurn false>>\ <</link>> \ </span> <<set _throwaway to ["flirt","flirt","flirt"]>><<CombatUIStatsHack _throwaway>> <<if Math.trunc($PC[$CC][$PChunger]) < 50>>\ r) too tired to run <<else>>\ <span id ="RemoveRun"><span id="KeypR">\ <<link "r) Run">> <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] - 50>>\ <<if $PC[$CC][$PChunger] < 50>>\ <<replace "#RemoveRun">>r) too tired to run<</replace>>\ <<endif>>\ <<set _cr to ["run",-1,"nodesc"]>> <<CombatAttack _cr>> <</link>> \ </span>(-50 stamina)</span> <<endif>>\ <span id="KeypV">\ <<link "v) Visualize defeat">> <<set _cr to ["fantasize",-1,"nodesc"]>> <<CombatAttack _cr>> <<MonsterTurn false>> <</link>> \ </span>\ </span> <<endif>>\ </span>\ </div>\ \ \ \ <!-- ----------------------------------------------- -->\ <div class="columnevents">\ @@color:Gold;Combat log@@ <hr> <span id ="combatlog15">$ComLog[15]</span> <span id ="combatlog14">$ComLog[14]</span> <span id ="combatlog13">$ComLog[13]</span> <span id ="combatlog12">$ComLog[12]</span> <span id ="combatlog11">$ComLog[11]</span> <span id ="combatlog10">$ComLog[10]</span> <span id ="combatlog9">$ComLog[9]</span> <span id ="combatlog8">$ComLog[8]</span> <span id ="combatlog7">$ComLog[7]</span> <span id ="combatlog6">$ComLog[6]</span> <span id ="combatlog5">$ComLog[5]</span> <span id ="combatlog4">$ComLog[4]</span> <span id ="combatlog3">$ComLog[3]</span> <span id ="combatlog2">$ComLog[2]</span> <span id ="combatlog1">$ComLog[1]</span> <span id ="combatlog0">$ComLog[0]</span> </div>\ <<widget "RiposteCheck">>\ <<if (setup.PtrToClass($PC[$CC][$PCclass]) is "warrior") and ($PC[$CC][$PClevel] > 6)>>\ <<set _TotalHack to $PC[$CC][$PClevel]>>\ <<set $Mon.hpcur to $Mon.hpcur - _TotalHack>>\ <<set _CombatMessage to "@@color:Aqua;(Riposte)@@ You tap " + _TheMon + " for " + _TotalHack + " damage">>\ <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <</widget>>\ <<widget "PCWeaponAttack">>\ \ <<set _Riposte to _args[0]>>\ <<set _CombatMessage to "">>\ <<if _Riposte is "Riposte">>\ <<set _CombatMessage to "@@color:Aqua;(Riposte)@@ ">>\ <<endif>>\ \ <<set _endcombat to "skip player">>\ <<set _bp to $PC[$CC][$PCbp][_slot]>>\ <<set _item to _bp.equip>>\ <<DescribeItem _item>>\ <<set _weapname to $ItemPoke.name>>\ \ <<set _ToHit to random(1, 100) - $Mon.armor + $PC[$CC][$PCtohit] + $PC[$CC][$PCmorphBONI].th + (_BestWarrior * 5) + _EnchantBonuses.Accuracy>>\ <<if _CurrentClass is "warrior">>\ <<set _ToHit to _ToHit + ($PC[$CC][$PClevel] * 10)>>\ <<endif>>\ \ <<set _attacktype to $ItemPoke.attacktype>>\ <<set _AttackVerb to "swing">>\ <<if _attacktype is "blunt">>\ <<elseif _attacktype is "cut">>\ <<elseif _attacktype is "cleave">>\ <<set _ToHit to _ToHit + _BestLumberjack>>\ <<elseif _attacktype is "pierce">>\ <<set _AttackVerb to either("stab","poke")>>\ <<endif>>\ \ <<if _ToHit < 1>>\ <<set _CombatMessage to _CombatMessage + "You " + _AttackVerb + " at " + _TheMon + " but miss">>\ <<else>>\ <<set _mindam to $ItemPoke.mindam>>\ <<set _maxdam to $ItemPoke.maxdam>>\ <<if (_attacktype is "cleave") and _CurrentClass is "lumberjack">>\ <<set _mindam to _mindam + $PC[$CC][$PClevel]>>\ <<set _maxdam to _maxdam + $PC[$CC][$PClevel]>>\ <<endif>>\ <<set _Damage to random(_mindam, _maxdam) + _strmod + _BestPaladin>>\ <<set _DamageReduce to 0>>\ <<for _MR to 0; _MR < $Mon.resists.length; _MR++>>\ <<if $Mon.resists[_MR][0] is _attacktype>>\ <<set _DamageReduce to Math.trunc((_DamageReduce + _Damage * $Mon.resists[_MR][1]) / 100)>>\ <<endif>>\ <</for>>\ <<if _Damage < 1>>\ <<set _absorbmessage to _hitmessage + " but " + _heshe + " absorbs the blow for no effect">>\ <<set _CombatMessage to _CombatMessage + _absorbmessage>>\ <<else>>\ <<if _DamageReduce > 0>>\ <<set _CombatMessage to _CombatMessage + "You " + _AttackVerb + " your " + _weapname + " at " + _TheMon + " for " + _Damage + "@@color:Yellow;(-" + _DamageReduce + ")@@ damage">>\ <<set _Damage to _Damage - _DamageReduce>>\ <<else>>\ <<set _CombatMessage to _CombatMessage + "You " + _AttackVerb + " your " + _weapname + " at " + _TheMon + " for " + _Damage + " damage">>\ <<endif>>\ <<set $Mon.hpcur to $Mon.hpcur - _Damage>>\ <<if _Damage > 19>>\ <<AwardAchievement "Warrior">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <</widget>>\ <<widget "CombatAttack">>\ <<set _ArrayReceived to $args[0]>>\ <<set _a to "CombatAttack received: " + _ArrayReceived + "<br>">><<AddToLog _a>>\ \ <<set _attacktype to _ArrayReceived[0]>>\ <<set _slot to _ArrayReceived[1]>>\ <<set _strmod to $PC[$CC][$PCstr] -10>>\ <<set _mindam to 1>>\ <<set _maxdam to 2>>\ <<set _th to $PC[$CC][$PCtohit]>>\ <<set _missmessage to "default miss">>\ <<set _hitmessage to "default attack">>\ <<set _absorbmessage to "default absorb">>\ <<set _endcombat to "normal">>\ <<set _heshe to "he">>\ <<if $Mon.sex is "female">>\ <<set _heshe to "she">>\ <<elseif $Mon.sex is "herm">>\ <<set _heshe to "it">>\ <<endif>>\ \ <<set _EnchantBonuses to setup.GetEnchantBonuses($CC)>>\ \ <<set _TheMon to "the " + $Mon.name + " ">>\ <<if $Mon.unique is true>>\ <<set _TheMon to $Mon.name>>\ <<else>>\ <<set _TheMon to "the " + $Mon.name>>\ <<endif>>\ \ <<set _GlobalSpellBonus to setup.AchievementHandler("Best Guardian", "HAS?", -1)>>\ <<set _BestLumberjack to setup.AchievementHandler("Best Lumberjack", "HAS?", -1)>>\ <<set _BestWarrior to setup.AchievementHandler("Best Warrior", "HAS?", -1)>>\ <<set _BestBarbarian to setup.AchievementHandler("Best Barbarian", "HAS?", -1)>>\ <<set _BestPaladin to setup.AchievementHandler("Best Paladin", "HAS?", -1)>>\ <<set _BestPriest to setup.AchievementHandler("Best Priest", "HAS?", -1)>>\ <<if _GlobalSpellBonus > 0>><<else>><<set _GlobalSpellBonus to 0>><<endif>>\ <<if _BestLumberjack > 0>><<else>><<set _BestLumberjack to 0>><<endif>>\ <<if _BestWarrior > 0>><<else>><<set _BestWarrior to 0>><<endif>>\ <<if _BestBarbarian > 0>><<else>><<set _BestBarbarian to 0>><<endif>>\ <<if _BestPaladin > 0>><<else>><<set _BestPaladin to 0>><<endif>>\ <<if _BestPriest > 0>><<else>><<set _BestPriest to 0>><<endif>>\ <<set _CurrentClass to setup.PtrToClass($PC[$CC][$PCclass])>>\ \ <<if _attacktype is "body">>\ <<set _endcombat to "skip player">>\ <<set _bp to $PC[$CC][$PCbp][_slot]>>\ <<set _ToHit to random(1, 100) - $Mon.armor + $PC[$CC][$PCtohit]>>\ <<set _ToHit to _ToHit + _EnchantBonuses.Accuracy + $PC[$CC][$PCmorphBONI].bodyth + (_BestBarbarian * 5)>>\ <<set _AttackDesc to _bp.attackdesc>>\ <<if _ToHit > 0>>\ <<set _MinDam to _bp.mindam>>\ <<set _MaxDam to _bp.maxdam>>\ <<set _Damage to random(_MinDam, _MaxDam) + _strmod + $PC[$CC][$PCmorphBONI].bodydam>>\ <<if _CurrentClass is "barbarian">>\ <<set _Damage to _Damage + $PC[$CC][$PClevel]>>\ <<endif>>\ <<set _DamageReduce to 0>>\ <<set _AttackType to _bp.attacktype>>\ <<for _MR to 0; _MR < $Mon.resists.length; _MR++>>\ <<if $Mon.resists[_MR][0] is _AttackType>>\ <<set _DamageReduce to Math.trunc((_DamageReduce + _Damage * $Mon.resists[_MR][1]) / 100)>>\ <<endif>>\ <</for>>\ <<if _AttackType is "poison bite">>\ <<set _Damage to random(_MinDam, _MaxDam)>>\ <<set _CombatMessage to "You @@color:ForestGreen;" + _AttackDesc + " " + _TheMon + "@@">>\ <<set $Mon.poisoned to $Mon.poisoned + _Damage>>\ <<CombatLog _CombatMessage>>\ <<elseif _Damage < 1>>\ <<set _AbsorbMessage to "You " + _AttackDesc + " " + _TheMon + " but " + _heshe + " aborbs the blow to no effect">>\ <<set _CombatMessage to _absorbmessage>>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<if _DamageReduce > 0>>\ <<set _CombatMessage to "You " + _AttackDesc + " " + _TheMon + " for " + _Damage + "@@color:Yellow;(-" + _DamageReduce + ")@@ damage">>\ <<set _Damage to _Damage - _DamageReduce>>\ <<else>>\ <<set _CombatMessage to "You " + _AttackDesc + " " + _TheMon + " for " + _Damage + " damage">>\ <<endif>>\ <<set $Mon.hpcur to $Mon.hpcur - _Damage>>\ <<CombatLog _CombatMessage>>\ \ <<if (_CurrentClass is "barbarian") and ($PC[$CC][$PClevel] > 6)>>\ <<set _BleedMessage to "@@color:Red;the attack draws blood@@">>\ <<CombatLog _BleedMessage>>\ <<set $Mon.bleeding to $Mon.bleeding + 1>>\ <<endif>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to "You try to " + _AttackDesc + " " + _TheMon + " but miss">>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<elseif _attacktype is "weapon">>\ <<PCWeaponAttack "No Riposte">>\ <<elseif _attacktype is "bash">>\ <<set _endcombat to "skip player">>\ <<if $Mon.stunned < 0>>\ <<set _CombatMessage to _TheMon.toUpperFirst() + " @@color:Yellow;anticipates the blow and dodges@@">>\ <<else>>\ <<set _StunChance to random(-2, 2) + $PC[$CC][$PCstr]>>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _StunChance to _StunChance - ($PC[$CC][$PCz] * 3)>>\ <<else>>\ <<set _StunChance to _StunChance - $PC[$CC][$PCfz]>>\ <<endif>>\ <<if _StunChance gte 0>>\ <<if $Mon.name.includes("slime")>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;the slime absorbs the blow@@">>\ <<elseif $Mon.name.includes("tentacle")>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;the creature casually deflects it with a tentacle@@">>\ <<elseif $Mon.name.includes("Zehtalia")>>\ <<if $Mon.Powerup is 1>>\ <<set _CombatMessage to "You smash Zehtalia with your shield and @@color:Aqua;she stops screaming@@">>\ <<else>>\ <<set _CombatMessage to "You @@color:Aqua;smash Zehtalia with your shield@@">>\ <<endif>>\ <<set $Mon.Powerup to 0>>\ <<set $Mon.stunned to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<set $Mon.stunned to 1>>\ <<set _CombatMessage to "You @@color:Aqua;bash " + _TheMon + " with your shield@@, knocking " + $Mon.himher + " off balance">>\ <<endif>>\ <<else>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;don't connect with enough force@@">>\ <<endif>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "symbol">>\ <<set _endcombat to "skip player">>\ <<if $Mon.SymbolEffect is "none">>\ <<set _PickOne to either(" doesn't respond."," ignores this.", " doesn't seem affected at all.")>>\ <<set _CombatMessage to "You brandish your holy symbol and pray. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 1>>\ <<if _CurrentClass is "priest">>\ <<set _CombatMessage to "You pray to the goddess. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 2>>\ <<endif>>\ <<set _throwaway to setup.ApplyEffect("praying", _PrayEffect)>>\ <<elseif $Mon.SymbolEffect is "blink">>\ <<set _PickOne to either(" looks hopeful."," prays with you that she be destroyed.")>>\ <<set _CombatMessage to "You brandish your holy symbol and pray. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 1>>\ <<if _CurrentClass is "priest">>\ <<set _CombatMessage to "You pray to the goddess. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 2>>\ <<endif>>\ <<set _throwaway to setup.ApplyEffect("praying", _PrayEffect)>>\ <<elseif $Mon.SymbolEffect is "damage">>\ <<set _PickOne to either(" snarls in anger."," jumps back as if stung")>>\ <<set _CombatMessage to "You brandish your holy symbol and pray. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 1>>\ <<if _CurrentClass is "priest">>\ <<set _CombatMessage to "You pray to the goddess. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 2>>\ <<endif>>\ <<set _throwaway to setup.ApplyEffect("praying", _PrayEffect)>>\ <<set _TD to setup.GetEffect("praying")>>\ <<if _TD > 0>>\ <<set $Mon.hpcur to $Mon.hpcur - _TD>>\ <<endif>>\ <<else>>\ <<set _PickOne to either(" looks a little annoyed."," rolls " + $Mon.hisher + " eyes at you."," looks insulted.")>>\ <<set _CombatMessage to "You brandish your holy symbol and pray. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 1>>\ <<if _CurrentClass is "priest">>\ <<set _CombatMessage to "You pray to the goddess. " + _TheMon.toUpperFirst() + _PickOne>>\ <<set _PrayEffect to 2>>\ <<endif>>\ <<set _throwaway to setup.ApplyEffect("praying", _PrayEffect)>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "firebolt">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 0>>\ <<set $Mon.HitBySpells to $Mon.HitBySpells +1>>\ <<set _BaseDam to random(1,10) + _GlobalSpellBonus + $PC[$CC][$PCspellbook].firebolt>>\ <<set _Damage to $PC[$CC][$PClevel] * _BaseDam>>\ <<set _DamageToPlayer to 0>>\ <<set _DamageToTarget to 0>>\ \ <<set _TempMessage to "You fling a firebolt at " + $Mon.name>>\ <<if setup.PlayerHasPerk("Black Mage") is true>>\ <<set _BMB to 1 + (($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur]) / $PC[$CC][$PChpmax])>>\ <<set _Damage to Math.trunc(_Damage * _BMB)>>\ <<if _BMB > 1>>\ <<set _TempMessage to "You fling a @@color:Red;Black Mage@@ firebolt at " + $Mon.name>>\ <<endif>>\ <<endif>>\ <<set _ManaCost to 1 + Math.trunc(_Damage / 40)>>\ <<if _ManaCost > $PC[$CC][$PCmanacur]>>\ <<set _FeedbackRatio to (_ManaCost - $PC[$CC][$PCmanacur]) / _ManaCost>> <<set _DamageToPlayer to Math.trunc(_Damage * _FeedbackRatio)>>\ <<set _DamageToTarget to _Damage - _DamageToPlayer>>\ <<set _CombatMessage to _TempMessage + " and @@color:Yellow;experience spell feedback from overexertion@@">>\ <<CombatLog _CombatMessage>>\ <<set _DamageToPlayer to _DamageToPlayer * -1>>\ <<ChangeStat $PChpcur _DamageToPlayer>>\ <<ShowHealth>>\ <<if $PC[$CC][$PChpcur] <1>>\ <<set $DeathBySpellFeedback to 1>>\ <<endif>>\ <<else>>\ <<set _DamageToPlayer to 0>>\ <<set _DamageToTarget to _Damage>>\ <<endif>>\ \ <!-- effect on target -->\ <<if $Mon.fireheal is true>>\ <<set $Mon.hpcur to $Mon.hpcur + _DamageToTarget>>\ <<if $Mon.hpcur gte $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _CombatMessage to "Your firebolt @@color:Red;heals " + _TheMon + " to full health!@@">>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _CombatMessage to "Your firebolt @@color:Red;heals " + _TheMon + "@@ for " + _DamageToTarget + " damage!">>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<else>>\ <<set _DamageReduce to 0>>\ <<for _MR to 0; _MR < $Mon.resists.length; _MR++>>\ <<if $Mon.resists[_MR][0] is "fire">>\ <<set _DamageReduce to Math.trunc((_DamageReduce + _DamageToTarget * $Mon.resists[_MR][1]) / 100)>>\ <<endif>>\ <</for>>\ <<if _DamageToPlayer neq 0>>\ <!-- handled above -->\ <<elseif _DamageReduce > 0>>\ <<set _CombatMessage to "You " + _AttackDesc + " " + _TheMon + " for " + _DamageToTarget + "@@color:Yellow;(-" + _DamageReduce + ")@@ damage">>\ <<set _DamageToTarget to _DamageToTarget - _DamageReduce>>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _CombatMessage to _TempMessage + " for " + _DamageToTarget + " damage">>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<set $Mon.hpcur to $Mon.hpcur - _DamageToTarget>>\ <<endif>>\ <<set _ManaCost to _ManaCost * -1>>\ <<ChangeStat $PCmanacur _ManaCost>>\ <<ShowMana>>\ <<else>>\ <<set _CombatMessage to "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<elseif _attacktype is "heal">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<set _PriestCureSuffix to "">>\ <<set _HealEffect to $PC[$CC][$PClevel] + $PC[$CC][$PCspellbook].heal + _BestPriest>>\ <<if _GlobalSpellBonus > 0>>\ <<set _HealEffect to _HealEffect + _GlobalSpellBonus>>\ <<endif>>\ <<if setup.PlayerHasPerk("White Mage") is true>>\ <<set _HealEffect to _HealEffect + $PC[$CC][$PClevel]>>\ <<endif>>\ <<if (_CurrentClass is "priest")>>\ <<set _HealEffect to _HealEffect + $PC[$CC][$PClevel]>>\ <<if setup.GetEffect("poison") > 0>>\ <<set _PriestCureSuffix to " and @@color:Aqua;you have been cured of poison!@@">>\ <<for _CBE to $PC[$CC][$PCeffects].length -1; _CBE > -1; _CBE-->>\ <<if $PC[$CC][$PCeffects][_CBE][0].includes("oison")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<endif>>\ <</for>>\ <<ShowActiveEffects>>\ <<endif>>\ <<endif>>\ <<if ($PC[$CC][$PChpcur] + _HealEffect) gte $PC[$CC][$PChpmax]>>\ <<set _m to "You @@color:LightGreen;heal yourself to full@@" + _PriestCureSuffix>>\ <<else>>\ <<set _m to "You @@color:LightGreen;heal yourself@@ for " + _HealEffect + _PriestCureSuffix>>\ <<endif>>\ <<ChangeStat $PChpcur _HealEffect>>\ <<ShowHealth>>\ <<ChangeStat $PCmanacur -2>>\ <<ShowMana>>\ <<CombatLog _m>>\ <<if _HealEffect > ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<set _HealEffect to ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<endif>>\ <<set $PC[$CC][$PCspellbook].totalheal to $PC[$CC][$PCspellbook].totalheal + _HealEffect>>\ <<if $PC[$CC][$PCspellbook].totalheal > 99>>\ <<AwardAchievement "Priest">>\ <<set _ExtraMessage to "@@color:Gold;You have unlocked the priest class!@@">>\ <<CombatLog _ExtraMessage>>\ <<endif>>\ <<else>>\ <<CombatLog "You try to heal yourself, but @@color:Yellow;you're out of mana@@">>\ <<endif>>\ <<elseif _attacktype is "armor">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<ChangeStat $PCmanacur -1>>\ <<ShowMana>>\ <<if setup.GetEffect("armor") > 0>>\ <<CombatLog "You cast armor, but that spell is already active">>\ <<else>>\ <<set _Armor to ($PC[$CC][$PClevel] * 10) + _GlobalSpellBonus + $PC[$CC][$PCspellbook].armor>>\ <<set _throwaway to setup.ApplyEffect("armor", _Armor)>>\ <!-- implement update active effects on caption -->\ <<set _m to "You gain @@color:Purple;" + _Armor + " armor@@ for the rest of this battle">>\ <<CombatLog _m>>\ <<endif>>\ <<else>>\ <<set _th to -99>>\ <<CombatLog "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<endif>>\ <<elseif _attacktype is "poison">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<set $Mon.HitBySpells to $Mon.HitBySpells +1>>\ <<set _th to 1000>>\ <<set _td to $PC[$CC][$PCspellbook].poison + _GlobalSpellBonus>>\ <<set $Mon.poisoned to $Mon.poisoned + _td>>\ <<set _m to "You @@color:ForestGreen;poison the " + $Mon.name + "@@">>\ <<CombatLog _m>>\ <<ChangeStat $PCmanacur -1>>\ <<ShowMana>>\ <<else>>\ <<set _m to "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<CombatLog _m>>\ <<endif>>\ <<elseif _attacktype is "soultrap">>\ <<set _endcombat to "skip player">>\ <<set _TargetMana to 19 + (2 * $Mon.level) - $PC[$CC][$PCspellbook].soultrap>>\ <<if _TargetMana < 1>>\ <<set _TargetMana to 1>>\ <<endif>>\ <<if $PC[$CC][$PCmanacur] < _TargetMana>>\ <<set _m to "You cast soul trap, but <<print _TheMon>> is too powerful for you. @@color:Yellow;You're drained of all mana!@@">>\ <<CombatLog _m>>\ <<set _TargetMana to _TargetMana * -1>>\ <<ChangeStat $PCmanacur _TargetMana>>\ <<ShowMana>>\ <<else>>\ <<set $Mon.HitBySpells to $Mon.HitBySpells +1>>\ <<set _throwaway to setup.ApplyEffect("soul trap", 1)>>\ <<set _TargetMana to _TargetMana * -1>>\ <<ChangeStat $PCmanacur _TargetMana>>\ <<ShowMana>>\ <<set _m to "You cast @@color:Purple;soul trap@@">>\ <<CombatLog _m>>\ <<endif>>\ <<elseif _attacktype is "run">>\ <<set _endcombat to "skip player">>\ <<set _Webbed to setup.GetEffect("webbed")>>\ <<if _Webbed > 0>>\ <<CombatLog "The @@color:Yellow;webbing prevents you from running!@@">>\ <<MonsterTurn false>> <<else>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<if $Dungeon[_pz][_px][_py][11] is 0>>\ <<set _pchance to $PC[$CC][$PCdex] + ($PC[$CC][$PClevel] * 5)>>\ <<set _pchance to random(1,10) + _pchance * $PC[$CC][$PChpcur] / $PC[$CC][$PChpmax]>>\ <<set _mchance to random(1,10) + $Mon.chase + $Mon.teased - $Mon.poisoned>>\ <<set _mchance to _mchance * $Mon.hpcur / $Mon.hpmax>>\ <<if (_pchance > _mchance) or ($Mon.chase < 0)>>\ <<set _fleemess to "You turn and " + either("run", "flee") + ". The " + $Mon.name + " doesn't give chase.">>\ <<CombatLog _fleemess>>\ <<set _endcombat to "yes">>\ <<else>>\ <<set _fleemess to either("You fail to escape","You can't seem to break away")>>\ <<CombatLog _fleemess>>\ <<MonsterTurn false>> <<endif>>\ <<else>>\ <!-- can't flee from fixed encounters -->\ <<set _fleemess to "You try to " + either("run","flee","run away") + " but the " + $Mon.name + either(" is tenacious!"," is determined to continue the fight!"," blocks your escape!")>> <<CombatLog _fleemess>>\ <<MonsterTurn false>> <<endif>>\ <<else>>\ <!-- easier to flee if player not in tower -->\ <<if ($PC[$CC][$PChpcur] / $PC[$CC][$PChpmax]) > ($PC[$CC][$PCfz] / 10)>>\ <<set _fleemess to "You turn and " + either("run", "flee") + ". The " + $Mon.name + " doesn't give chase.">>\ <<CombatLog _fleemess>>\ <<set _endcombat to "yes">>\ <<else>>\ <<set _fleemess to "You try to " + either("run","flee","run away") + " but the " + $Mon.name + either(" gives chase"," blocks your escape!")>> <<CombatLog _fleemess>>\ <<MonsterTurn false>> <<endif>>\ <<endif>>\ <<endif>>\ <<elseif _attacktype is "flirt">>\ <<set _endcombat to "skip player">>\ \ <<if $PC[$CC][$PCsex] is "male">>\ <<set _frand to random(1,4)>>\ <<if _frand is 1>><<set _hitmessage to "You wink suggestively at " + _TheMon>>\ <<elseif _frand is 2>><<set _hitmessage to "You strike a pose and curl your biceps">>\ <<elseif _frand is 3>><<set _hitmessage to "You point between your legs and whistle at " + _TheMon>>\ <<else>><<set _hitmessage to "You flash a winning smile at " + _TheMon>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " just rolls " + $Mon.hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<set _absorbmessage to _missmessage>>\ <<elseif $PC[$CC][$PCsex] is "female">>\ <<set _frand to random(1,4)>>\ <<if _frand is 1>><<set _hitmessage to "You lick your lips at the " + $Mon.name>>\ <<elseif _frand is 2>><<set _hitmessage to "You look away and pretend to accidentally jiggle your boobs">>\ <<elseif _frand is 3>><<set _hitmessage to "You blow a kiss to the " + $Mon.name>>\ <<else>><<set _hitmessage to "You squeeze your legs together and sigh longingly at the " + $Mon.name>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " just rolls " + $Mon.hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<set _absorbmessage to _missmessage>>\ <<else>>\ <<set _frand to random(1,8)>>\ <<if _frand is 1>><<set _hitmessage to "You wink suggestively at " + _TheMon>>\ <<elseif _frand is 2>><<set _hitmessage to "You strike a pose and curl your biceps">>\ <<elseif _frand is 3>><<set _hitmessage to "You point between your legs and whistle at " + _TheMon>>\ <<elseif _frand is 4>><<set _hitmessage to "You give a winning smile to " + _TheMon>>\ <<elseif _frand is 5>><<set _hitmessage to "You lick your lips at " + _TheMon>>\ <<elseif _frand is 6>><<set _hitmessage to "You look away and pretend to accidentally jiggle your boobs">>\ <<elseif _frand is 7>><<set _hitmessage to "You blow a kiss to " + _TheMon>>\ <<else>><<set _hitmessage to "You squeeze your legs together and sigh longingly at " + _TheMon>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " just rolls " + $Mon.hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<endif>>\ \ \ <<set _FlirtCombatData to setup.GetFlirtDataAgainstMon()>>\ <<set _Physiology to _FlirtCombatData[0]>>\ <<set _ProstituteClassBonus to _FlirtCombatData[1]>>\ <<set _EquipBonus to _FlirtCombatData[2]>>\ <<set _MorphToHitBonus to _FlirtCombatData[3]>>\ <<set _MorphDamBonus to _FlirtCombatData[4]>>\ <<set _Praying to _FlirtCombatData[5]>>\ <<set _BestProstitute to _FlirtCombatData[6]>>\ \ <<set _TotalToHit to _Physiology + _EquipBonus + _MorphToHitBonus - _Praying>>\ \ <<if _TotalToHit + random(1,10) > $Mon.Willpower>> <<set _TD to random(1, Math.trunc(_Physiology)) + _ProstituteClassBonus + _MorphDamBonus>>\ <<if _TD > 0>>\ <<set _CombatMessage to _hitmessage>>\ <<set $Mon.teased to $Mon.teased + _TD>>\ <<else>>\ <<set _CombatMessage to _TheMon + " is annoyed by your mixed signals">>\ <<endif>>\ <<else>>\ <<if setup.GetEffect("praying") > 0>>\ <<set _CombatMessage to _TheMon + " is annoyed by your mixed signals">>\ <<else>>\ <<set _CombatMessage to _missmessage>>\ <<endif>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "fantasize">>\ <<set _endcombat to "skip player">>\ <<set _CombatMessage to "You fantasize about " + _TheMon + " having " + $Mon.hisher + " way with you. @@color:Pink;You are very aroused@@">>\ <<ChangeStat $PChornycur 20>>\ <<ShowHorny>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "INVENTORY">>\ <<CombatLog _ArrayReceived[2]>>\ <<set _endcombat to "skip player">>\ <<elseif _attacktype is "debug kill">>\ <<set _endcombat to "skip player">>\ <<set $Mon.hpcur to 0>>\ <<set _CombatMessage to "You zap " + _TheMon>>\ <<CombatLog _CombatMessage>>\ <<else>>\ <!-- defaults -->\ <<set _MaybeError to "CombatLog defaulted: " + _args[0] + ", " + _args[1] + ", " + _args[2]>>\ <<CombatLog _MaybeError>>\ <<endif>>\ \ <<if _endcombat is "yes">>\ <<replace "#monhealth">><</replace>>\ <<replace "#monflirt">><</replace>>\ <<replace "#combatcontrols">>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Continue" $ReturnFromMenu>> <<ClearTemporaryEffects>>\ <</link>>\ </span> <</replace>>\ <<elseif _endcombat is "skip player">>\ <<elseif _endcombat is "normal">>\ <<if _th < 1>>\ <<set _m to _missmessage>>\ <<else>>\ <<if _td < 1>>\ <<set _m to _absorbmessage>>\ <<else>>\ <!-- account for resistences? -->\ <<set _m to _hitmessage + " for " + _td + " damage">>\ <<set $Mon.hpcur to $Mon.hpcur - _td>>\ <<endif>>\ <<endif>>\ <<CombatLog _m>>\ <<else>> <<CombatLog "@@color:Red;Error in combat: do we resolve or no?@@">>\ <<endif>>\ <<if $Mon.poisoned > 0>>\ <<if $Mon.poisonheal is true>>\ <<set $Mon.hpcur to $Mon.hpcur + $Mon.poisoned>>\ <<if $Mon.hpcur gte $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _m to _TheMon + " is @@color:Yellow;healed to full by the poison!@@">>\ <<CombatLog _m>>\ <<else>>\ <<set _m to _TheMon + " is @@color:Yellow;healed for " + $Mon.poisoned + " by the poison!@@">>\ <<CombatLog _m>>\ <<endif>>\ <<else>>\ <<set $Mon.hpcur to $Mon.hpcur - $Mon.poisoned>>\ <<set _m to _TheMon + " takes " + $Mon.poisoned + " @@color:LawnGreen;damage from poison@@">>\ <<CombatLog _m>>\ <<endif>>\ <<endif>>\ <<if $Mon.bleeding > 0>>\ <<set $Mon.hpcur to $Mon.hpcur - $Mon.bleeding>>\ <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<set _m to _TheMon + " @@color:Red;bleeds for " + $Mon.bleeding + " damage@@">>\ <<CombatLog _m>>\ <<endif>>\ <<ShowActiveEffects>>\ <</widget>>\ \ <<widget "CombatLog">>\ <<set $ComLog[0] to $ComLog[1]>>\ <<set $ComLog[1] to $ComLog[2]>>\ <<set $ComLog[2] to $ComLog[3]>>\ <<set $ComLog[3] to $ComLog[4]>>\ <<set $ComLog[4] to $ComLog[5]>>\ <<set $ComLog[5] to $ComLog[6]>>\ <<set $ComLog[6] to $ComLog[7]>>\ <<set $ComLog[7] to $ComLog[8]>>\ <<set $ComLog[8] to $ComLog[9]>>\ <<set $ComLog[9] to $ComLog[10]>>\ <<set $ComLog[10] to $ComLog[11]>>\ <<set $ComLog[11] to $ComLog[12]>>\ <<set $ComLog[12] to $ComLog[13]>>\ <<set $ComLog[13] to $ComLog[14]>>\ <<set $ComLog[14] to $ComLog[15]>>\ <<set $ComLog[15] to $args[0]>>\ <!-- <<set _floof to setup.advanceLog()>> -->\ <<for _i to 0; _i < 16; _i++>> <<set _foo to "#combatlog" + _i>> <<replace _foo>>\ <<print $ComLog[_i]>>\ <</replace>>\ <</for>>\ <</widget>>\ <<widget "MonsterAttack">>\ <<CombatLog "monster attack goes here">>\ <</widget>>\ \ <<widget "MonsterTurn">>\ <<set _TheMon to "The " + $Mon.name + " ">>\ <<if $Mon.unique is true>>\ <<set _TheMon to $Mon.name + " ">>\ <<endif>>\ \ <<if ($Mon.hpcur < 1) or ($Mon.teased > 99)>>\ \ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<set _MonKillPTR to setup.MonNameToKillPTR($Mon.morph)>>\ <<set $PC[$CC][$PCkills][_MonKillPTR] to $PC[$CC][$PCkills][_MonKillPTR] +1>>\ \ <<set _SoulTrapActivated to false>>\ <<set _ST to setup.GetEffect("soul")>>\ <<ClearTemporaryEffects>>\ \ <<replace "#monhealth">><</replace>>\ <<replace "#monflirt">><</replace>>\ <<replace "#combatcontrols">>\ <!-- Soul Trap handler -->\ <<if _ST > 0>>\ <<if ($PC[$CC][$PClocation] is "tower")>>\ <<set _SoulTrapMessage to "@@color:LightGreen;You are victorious@@ but your @@color:Yellow;soul trap fails because you have no gem equipped@@">>\ <<set _GemPTR to -1>>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _EquipPTR to 0; _EquipPTR < _bpqty; _EquipPTR++>>\ <<set _bp to $PC[$CC][$PCbp][_EquipPTR]>>\ <<if _bp.equippable is true>>\ <<if (_bp.equip[0] > 549) and (_bp.equip[0] < 560)>>\ <!-- is a gem -->\ <<if (_bp.equip[3] > 0) and (_bp.equip[3] < 21)>>\ <<set _SoulTrapMessage to "@@color:LightGreen;You are victorious@@ but @@color:Yellow;your equipped gem already contains a soul@@">>\ <<else>>\ <<if $Mon.boss > 0>>\ <<set _SoulTrapMessage to "@@color:LightGreen;You are victorious@@ but @@color:Yellow;boss monsters cannot be soul trapped@@">>\ <<elseif $Mon.unique > 0>>\ <<set _SoulTrapMessage to "@@color:LightGreen;You are victorious@@ but @@color:Yellow;unique monsters cannot be soul trapped@@">>\ <<else>>\ <<set _SoulTrapMessage to "@@color:Gold;" + _TheMon + " screams as " + $Mon.hisher + " soul is absorbed into your gemstone!@@">>\ <<set _GemPTR to _EquipPTR>>\ <<set _bp.equip[2] to 0>><!-- no longer stackable -->\ <<set _bp.equip[3] to $Mon.level>>\ <<set _SoulTrapActivated to true>>\ <<set _EquipPTR to 9999>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _GemPTR > -1>>\ <<set _bp.equip[3] to $Mon.level>>\ <<endif>>\ <<else>>\ <<set _SoulTrapMessage to "@@color:LightGreen;You are victorious@@ but your @@color:Yellow;soul trap fails because monsters here aren't powerful enough@@">>\ <<endif>>\ <<endif>>\ \ \ <<if ($Mon.teased > 99)>>\ <<if _SoulTrapActivated is true>>\ @@color:Yellow;Soul trap failed!@@ <<print _TheMon>> collapses in sexual frustration! <<else>>\ @@color:LightGreen;<<print _TheMon>> collapses in sexual frustration!@@ <<set $PC[$CC][$PCmisc].flirtvictory to $PC[$CC][$PCmisc].flirtvictory +1>>\ <<if ($PC[$CC][$PCmisc].flirtvictory > 4)>>\ <<AwardAchievement "Prostitute">>\ <<endif>>\ <<endif>>\ <<else>>\ <<if _SoulTrapActivated>>\ @@color:LightGreen;<<print _SoulTrapMessage>>@@ <<else>>\ <<if _ST > 0>>\ <<print _SoulTrapMessage>> <<else>>\ @@color:LightGreen;You are victorious!@@ <<endif>>\ <<endif>>\ <<endif>>\ \ <!-- check for class unlocks -->\ <<if ($PC[$CC][$PClocation] is "tower") and ($Mon.HitBySpells is 0)>>\ <<set _GetMonk to true>>\ <<set _GetBarbarian to true>>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.equippable is true>>\ <<if _bp.type is $BPwield>>\ <<if $PC[$CC][$PCbp][_i].equip[0] > 0>>\ <<set _GetMonk to false>>\ <<endif>>\ <<else>>\ <<if $PC[$CC][$PCbp][_i].equip[0] > 0>>\ <<set _GetBarbarian to false>>\ <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _GetMonk is true>>\ <<AwardAchievement "Monk">>\ <<endif>>\ <<if _GetBarbarian is true>>\ <<AwardAchievement "Barbarian">>\ <<endif>>\ <<endif>>\ \ <<set $PC[$CC][$PCmisc].battleswon to $PC[$CC][$PCmisc].battleswon +1>>\ \ <<set $LogKills to $LogKills +1>>\ <<if $Mon.xp > 0>>\ <<set _XPGained to $Mon.xp>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "scholar">>\ <<set _XPGained to _XPGained + $PC[$CC][$PClevel]>>\ <<endif>>\ <<AwardXP _XPGained "combat">>\ <<endif>>\ <<if $Mon.gold > 0>>\ <<set _GreedyBonusNum to 0>>\ <<set _GreedyBonusText to "">>\ <<set _RogueBonusText to "">>\ <<set _TotalGold to $Mon.gold>>\ <<set _BestRogue to setup.AchievementHandler("Best Rogue", "HAS?", -1)>>\ <<if _BestRogue > 0>>\ <<set _TotalGold to _TotalGold + _BestRogue>>\ <<set _RogueBonusText to "@@color:MediumSlateBlue;(+" + _BestRogue + ")@@">>\ <<endif>>\ <<if setup.PlayerHasPerk("Greedy") is true>>\ <<set _GreedyBonusNum to Math.trunc(_TotalGold / 10)>>\ <<set _TotalGold to _TotalGold + _GreedyBonusNum>>\ <<set _GreedyBonusText to "@@color:Peru;(+" + _GreedyBonusNum + ")@@">>\ <<endif>>\ You find <<print $Mon.gold>><<print _RogueBonusText>><<print _GreedyBonusText>> coins on the $Mon.name <<set $PC[$CC][$PCmisc].gold to $PC[$CC][$PCmisc].gold + _TotalGold>>\ <<GainGold _TotalGold>>\ <<endif>>\ \ <<set _AllowRape to true>>\ <<set _AllowDrop to true>>\ <<set _AllowButcher to true>>\ <<set _AllowBottle to true>>\ <<set _AllowBlood to true>>\ <<set _AllowSoulTrapDust to false>>\ <<if $WORLD.CombatInterrupt is "smith quest omnibus">>\ <<set $WORLD.CombatInterrupt to "defeated smith omnibus">>\ <<set _AllowRape to false>>\ <<set _AllowDrop to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <<elseif $WORLD.CombatInterrupt is "Zehtalia">>\ <<set $WORLD.CombatInterrupt to "defeated Zehtalia">>\ <<set _AllowRape to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <<set _AllowBlood to false>>\ <<elseif $WORLD.CombatInterrupt is "Neris">>\ <<set $WORLD.CombatInterrupt to "defeated Neris">>\ <<set _AllowRape to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <<set _AllowBlood to false>>\ <<elseif $WORLD.CombatInterrupt is "cave">>\ <<set $WORLD.CombatInterrupt to "defeated cave">>\ <<else>>\ <<set $WORLD.CombatInterrupt to "">>\ <<endif>>\ <<if _SoulTrapActivated is true>>\ <<set _AllowRape to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <!-- leave allowblood as is -->\ <<set _AllowSoulTrapDust to true>>\ <<endif>>\ \ <<if _AllowDrop is true>>\ <<if _pz > 0>>\ <<set _LootChance to random(1,5)>>\ <<if $Dungeon[_pz][_px][_py][11] neq 0>>\ <<set _LootChance to 1>>\ <<endif>>\ <<set _Loot to $Mon.loot>>\ <<if (_Loot[0] is 0) and (_LootChance is 1)>>\ <<set _Loot to setup.GenLoot($Mon.name, $Mon.sex, _pz, $PC[$CC][$PClocation])>>\ <<endif>>\ <<if _Loot[0] is 0>>\ <<else>>\ <<DescribeItem _Loot>>\ <<set _name to $ItemPoke.fullname>>\ <<set _st to $ItemPoke.stackable>>\ <<if _name is "none">>\ <<if $DebugMode is true>>\ @@color:Yellow;Debug: Fixed-placement tower $Mon.name generated no item: (_Loot)@@ <<endif>>\ <<else>>\ <<if setup.getnextinvslot($CC) < 0>>\ You find a <<print _name>>, but @@color:Yellow;you have no room in inventory@@ and abandon it. <<else>>\ You find a <<print _name>> and take it with you. <<set _throwaway to setup.additemtoinv($CC, _Loot, _st)>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <hr>\ <<endif>>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <</link>> </span>\ <<if _AllowRape is true>>\ <<include "Victory">>\ <<endif>>\ <<if _AllowButcher is true>>\ <<if setup.HasButcherTool() > -1>>\ <hr>\ <<set _foo to "s) Slaughter/butcher the " + $Mon.name + " for meat">>\ <span id="KeypSouth">\ <<link _foo $ReturnFromMenu>> <<set _foo to setup.additemtoinv($CC, [102, 0, 1, $Mon.MeatSemenMilk[0]], true)>> <</link>> </span>\ <<else>>\ <br>\ <<endif>>\ <<endif>>\ <<if _AllowBottle is true>>\ <<set _BottleSlot to setup.HasBottle()>>\ <<if _BottleSlot > -1>>\ <<if (setup.getnextinvslot($CC) > -1) or ($PC[$CC][$PCinven][_BottleSlot][2] is 1)>>\ <!-- implement case for no room, but already have stackable type -->\ <<set _Fluids to []>>\ <<if $Mon.MeatSemenMilk[1] > -1>>\ <<set _Fluids[_Fluids.length] to $Mon.MeatSemenMilk[1]>>\ <<endif>>\ <<if $Mon.MeatSemenMilk[2] > -1>>\ <<set _Fluids[_Fluids.length] to $Mon.MeatSemenMilk[2]>>\ <<endif>>\ <<if _Fluids.length > 0>>\ <span id="KeypF">\ <<link "f) Collect fluids" $ReturnFromMenu>> <<set _foo to setup.RemoveOneItemFromInv($CC, _BottleSlot)>> <<set _PickOne to random(0, (_Fluids.length -1))>> <<set _Fluid to _Fluids[_PickOne]>> <<set _foo to setup.additemtoinv($CC, [109, 0, 1, _Fluid], true)>> <</link>> </span>\ <<else>>\ f) This monster has no harvestable fluids. <<endif>>\ <<else>>\ No room in inventory for additional fluids <<endif>>\ <<endif>>\ <<endif>>\ <</replace>>\ <!-- TOWER ONLY: remove monster and place blood or sexual fluids -->\ <<if _AllowBlood is true>>\ <<if _pz > 0>>\ <<if ($Dungeon[_pz][_px][_py][11] is 0) or $Dungeon[_pz][_px][_py][11] is "Monster">>\ <<if _AllowSoultrapDust is true>>\ <<elseif ($Mon.teased > 99)>>\ <<set $Dungeon[_pz][_px][_py][8] to 104>>\ <<else>>\ <<set $Dungeon[_pz][_px][_py][8] to 100>>\ <<endif>>\ <<set $Dungeon[_pz][_px][_py][11] to 0>>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<else>>\ <!-- REMOVE SUBSEQUENT STUN IMMUNITY -->\ <<if $Mon.stunned is -1>>\ <<set $Mon.stunned to 0>>\ <<endif>>\ <!-- APPLY REGENERATION -->\ <<if ($Mon.regen > 0) and $Mon.hpcur < $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpcur + $Mon.regen>>\ <<if $Mon.hpcur gte $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _RegenMessage to _TheMon + " @@color:Yellow;regenerates to full@@">>\ <<CombatLog _RegenMessage>>\ <<else>>\ <<set _RegenMessage to _TheMon + " @@color:Yellow;regenerates@@">>\ <<CombatLog _RegenMessage>>\ <<endif>>\ <<endif>>\ <!-- PROCESS POISON -->>\ <<set _PlayerPoisoned to setup.GetEffect("poison")>>\ <<if _PlayerPoisoned > 0>>\ <<set _PoisonMessage to "You take @@color:Green;" + _PlayerPoisoned + " damage from poison!@@">>\ <<CombatLog _PoisonMessage>>\ <<set _PlayerPoisoned to (_PlayerPoisoned * -1)>>\ <<ChangeStat $PChpcur _PlayerPoisoned>>\ <<endif>>\ <!-- PROCESS PLAGUE CURSE -->>\ <<set _PlagueCurse to setup.GetEffect("plague curse")>>\ <<if _PlagueCurse > 0>>\ <<set _CurseMessage to "You take @@color:Purple;" + _PlagueCurse + " damage from the plague curse!@@">>\ <<CombatLog _CurseMessage>>\ <<set _PlagueCurse to (_PlagueCurse * -1)>>\ <<ChangeStat $PChpcur _PlagueCurse>>\ <<endif>>\ <!-- CHOOSE AN ATTACK TYPE -->\ <<if $Mon.att.length > 0>>\ <<else>>\ <<AddToLog "Error in MonsterTurn: no valid attacks in array">>\ <<endif>>\ <<set _WhichAttack to random(0, $Mon.att.length -1)>>\ <<if (_MonAttackType is "heal") and ($Mon.hpcur gte $Mon.hpmax)>>\ <<set _WhichAttack to 0>>\ <<endif>>\ <<if ($Mon.teased > random(1,100)) and (_MonAttackType is "flirt")>>\ <<set _WhichAttack to 0>>\ <<set _changeattack to _TheMon + " seems agitated">>\ <<CombatLog _changeattack>>\ <<endif>>\ <<set _MonAttackType to $Mon.att[_WhichAttack][0]>>\ <!-- ************************************************************* -->\ \ <!-- CALC PLAYER NET ARMOR FOR PHYSICAL ATTACKS ONLY -->\ <<set _PlayerTotalAC to 0>>\ <<for _AcCycle to 0; _AcCycle < $PC[$CC][$PCac].length; _AcCycle++>>\ <<set _PlayerTotalAC to _PlayerTotalAC + $PC[$CC][$PCac][_AcCycle]>>\ <</for>>\ <<set _Webbed to setup.GetEffect("webbed")>>\ <<if _Webbed > 0>>\ <<set _PlayerTotalAC to _PlayerTotalAC - _Webbed>>\ <<endif>>\ <!-- ************************************************************* -->\ \ <!-- CALC PLAYER ABSORPTION AFTER ARMOR PENETRATION --> <<set _NetAbsorb to $PC[$CC][$PCabsorb] - $Mon.arpen>>\ <<if _NetAbsorb < 0>>\ <<set _NetAbsorb to 0>>\ <<endif>>\ <!-- ************************************************************* -->\ \ <!-- character class uniques -->\ <<set _CurrentClass to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<set _PowerMoveEvasion to false>>\ <<if _CurrentClass is "rogue">>\ <<if $PC[$CC][$PClevel] * 8 > random(1,100)>>\ <<set _PowerMoveEvasion to true>>\ <<endif>>\ <<endif>>\ <<set _MonkDodge to false>>\ <<if (_CurrentClass is "monk") and ($PC[$CC][$PClevel] > 6)>>\ <<if $PC[$CC][$PClevel] gte random(1,100)>>\ <<set _MonkDodge to true>>\ <<endif>>\ <<endif>>\ \ <!-- AI -->\ <<if $Mon.AI is "Zehtalia">>\ <<if (_MonAttackType is "POISON") and ($PC[$CC][$PCcon] > 14)>>\ <<if random(1,2) is 1>>\ <<set _WhichAttack to 0>>\ <<set _MonAttackType to "physical">>\ <<endif>>\ <<elseif (_MonAttackType is "WEB") and ($PC[$CC][$PCdex] > 14)>>\ <<if random(1,2) is 1>>\ <<set _WhichAttack to 0>>\ <<set _MonAttackType to "physical">>\ <<endif>>\ <<endif>>\ <<if $Mon.Powerup > 0>>\ <<set _MonAttackType to "ZEHTALIA">>\ <<elseif setup.GetEffect("poisoned") is 0>>\ <<set _WhichAttack to 2>>\ <<set _MonAttackType to "POISON">>\ <<elseif random(1,3) is 1>>\ <<set _MonAttackType to "ZEHTALIA">>\ <<endif>>\ <<elseif $Mon.AI is "Neris">>\ <<set _MonAttackType to "NERIS">>\ <<elseif $Mon.AI is "horse">>\ <<if $Mon.Powerup > 0>>\ <<set _MonAttackType to "HORSE">>\ <<elseif random(1,3) is 1>>\ <<set _MonAttackType to "HORSE">>\ <<endif>>\ <<elseif $Mon.AI is "scorpion">>\ <<if $Mon.Powerup > 0>>\ <<set _MonAttackType to "SCORPION">>\ <<elseif random(1,3) is 1>>\ <<set _MonAttackType to "SCORPION">>\ <<endif>>\ <<endif>>\ \ <!-- PERFORM MONSTER ATTACK -->\ <<if $Mon.stunned > 0>>\ <<set $Mon.stunned to -1>>\ <<set _CombatMessage to "@@color:Aqua;" + _TheMon + either("is too dazed to attack","is reeling"," takes a moment to catch " + $Mon.hisher + " breath")>>\ <<CombatLog _CombatMessage>>\ <<elseif $Mon.teased > random(1,100) + $Mon.Willpower>>\ <<set _CombatMessage to "@@color:Aqua;" + _TheMon + " is too flustered to attack you@@">>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "physical">>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - _PlayerTotalAC>>\ <<if _ToHit > 0>>\ <<if _MonkDodge is true>>\ <<set _CombatMessage to _TheMon + " but you @@color:Aqua;monk-dodge the attack!@@">>\ <<else>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<if _Damage > 0>>\ <<if _NetAbsorb > 0>>\ <<if _NetAbsorb > _Damage>><<set _NetAbsorb to _Damage>><<endif>>\\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + "@@@@color:MediumSlateBlue;(-" + _NetAbsorb +")@@ @@color:Red;damage@@">>\ <<set _Damage to _Damage - _NetAbsorb>>\ <<else>>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<endif>>\ \ <<set _sMod to "">>\ <<if $PC[$CC][$PCmorphBONI].lessdamage > 0>>\ <<set _SlimeMod to $PC[$CC][$PCmorphBONI].lessdamage * 2>>\ <<set _SlimeMod to Math.trunc((_Damage * _SlimeMod) /100)>> <<if _SlimeMod > 0>>\ <<set _sMod to "@@color;Aqua;(-" + _SlimeMod + ")@@">>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + "@@" + _sMod + " damage">>\ <<set _Damage to _Damage - _SlimeMod>>\ <<endif>>\ <<endif>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<RiposteCheck>>\ <<elseif _MonAttackType is "magic">>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - $PC[$CC][$PCwil]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<if _Damage > 0>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "flirt">>\ <!-- to hit here should be increased by player sexy clothing -->\ <<set _r to random(1,10)>>\ <<set _ToHit to _r + $Mon.att[_WhichAttack][3] + Math.trunc($Mon.teased /10) + $Mon.level - $PC[$CC][$PClevel] - $PC[$CC][$PCwil]>>\ <<set _Praying to setup.GetEffect("praying")>>\ <<if _Praying > 0>>\ <<set _ToHit to _ToHit - _Praying>>\ <<endif>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "prostitute">>\ <<set _ToHit to _ToHit + 5>>\ <<endif>>\ <<set _BestProstitute to setup.AchievementHandler("Best Prostitute", "HAS?", -1)>>\ <<if _BestProstitute > 0>>\ <<set _ToHit to _ToHit - _BestProstitute>>\ <<endif>>\ <<if _ToHit > 0>>\ <<set _MinDam to $Mon.att[_WhichAttack][1] - $PC[$CC][$PCwil]>>\ <<set _MaxDam to $Mon.att[_WhichAttack][2] - $PC[$CC][$PCwil]>>\ <<if _MinDam < 1>>\ <<set _MinDam to 1>>\ <<endif>>\ <<if _MaxDam < 1>>\ <<set _MaxDam to 1>>\ <<endif>>\ <<set _Damage to random(_MinDam, _MaxDam)>>\ <<if _Praying > 0>>\ <<set _Damage to _Damage - _Praying>>\ <<endif>>\ <<if _Damage < 1>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4] + ", @@color:Pink;+" + _Damage + " arousal@@">>\ <<ChangeStat $PChornycur _Damage>>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<elseif _MonAttackType is "ZEHTALIA">>\ <<if $Dungeon[_pz][_px][_py][12] is "hard mode Zehtalia">>\ <<set _Zshout to "Zehtalia screams, @@color:Yellow;" + either("DIE, HERETIC!","YOUR LIES WILL BE SILENCED!") + "@@">>\ <<set _Zmulti to 3>>\ <<set _ZmissRNG to 1>>\ <<else>>\ <<set _Zshout to "Zehtalia screams, @@color:Yellow;" + either("ANNIHILATION COMES!","DOOM UPON YOU!","TASTE MY WRATH, PUNY MORTAL!","I AM THE GOD OF HELLFIRE!") + "@@">>\ <<set _Zmulti to 2>>\ <<set _ZmissRNG to 2>>\ <<endif>>\ <<if $Mon.Powerup is 0>>\ <<CombatLog _Zshout>>\ <<set $Mon.Powerup to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<if _PowerMoveEvasion is true>>\ <<set _CombatMessage to "Zehtalia @@color:Red;reaches for you@@ but you @@color:Aqua;rogue-dodge the move!@@">>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _Damage to +_Zmulti * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "Zehtalia @@color:Red;slams you into the floor for " + _Damage + " damage!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<if random(1, _ZmissRNG) is 1>>\ <<set _Damage to 2 * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "You are too stunned to avoid her @@color:Red;followup blow for " + _Damage + " more!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<if _Zmulti is 1>>\ <<set _throwaway to setup.ApplyEffect("poisoned", 1)>>\ <<set _throwaway to setup.ApplyEffect("webbed", 1)>>\ <<set _CombatMessage to _TheMon + " @@color:Yellow;poisons and webs you@@ while you're down!">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif _MonAttackType is "NERIS">>\ <<set _NerisPick to random(1,7)>>\ <<if _NerisPick is 1>>\ <<set _NerisSpeech to "Neris begs, 'please kill me.'">>\ <<elseif _NerisPick is 2>>\ <<set _NerisSpeech to "Neris merely watches.">>\ <<elseif _NerisPick is 3>>\ <<set _NerisSpeech to "Neris has resigned herself to her fate.">>\ <<elseif _NerisPick is 4>>\ <<set _NerisSpeech to "'There isn't much time,' Neris urges. 'Please hurry.'">>\ <<elseif _NerisPick is 5>>\ <<set _NerisSpeech to "Neris watches sadly as the black smoke emitting from your body grows.">>\ <<elseif _NerisPick is 6>>\ <<set _NerisSpeech to "'It's too late for me,' Neris reassures you. 'Do what you must.'">>\ <<else>>\ <<set _NerisSpeech to "Neris gazes at you with hope in her eyes.">>\ <<endif>>\ <<CombatLog _NerisSpeech>>\ <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<elseif _MonAttackType is "HORSE">>\ <<if $Mon.Powerup is 0>>\ <<set _CombatMessage to "The horse @@color:Yellow;winds up for a powerful kick@@">>\ <<CombatLog _CombatMessage>>\ <<set $Mon.Powerup to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<if _PowerMoveEvasion is true>>\ <<set _CombatMessage to "The horse @@color:Red;kicks at you@@ but you @@color:Aqua;rogue-dodge the move!@@">>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _Damage to 2 * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "The horse @@color:Red;smacks you with a powerful kick for _Damage damage!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<endif>>\ <<endif>>\ <<elseif _MonAttackType is "SCORPION">>\ <<if $Mon.Powerup is 0>>\ <<set _CombatMessage to "The scorpion @@color:Yellow;primes its tail for a powerful strike@@">>\ <<CombatLog _CombatMessage>>\ <<set $Mon.Powerup to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<if _PowerMoveEvasion is true>>\ <<set _CombatMessage to "The scorpion @@color:Red;launches its stinger at you@@ but you @@color:Aqua;rogue-dodge the move!@@">>\ <<CombatLog _CombatMessage>>\ <<else>>\ <<set _Damage to 2 * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "The scorpion @@color:Red;impales you with its tail for _Damage damage@@ plus @@color:Green;poison!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<set _throwaway to setup.ApplyEffect("poisoned", 1)>>\ <<endif>>\ <<endif>>\ <<elseif _MonAttackType is "WEB">>\ <<set _ToHit to random(1, 20) + $Mon.level + $Mon.att[_WhichAttack][3] - $PC[$CC][$PClevel] - $PC[$CC][$PCdex]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <!-- no absorption for web -->\ <<set _throwaway to setup.ApplyEffect("webbed", _Damage)>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4]>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "POISON">>\ <<set _ToHit to random(1, 20) + $Mon.level + $Mon.att[_WhichAttack][3] - $PC[$CC][$PClevel] - $PC[$CC][$PCcon]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <!-- no absorption for poison -->\ <<set _throwaway to setup.ApplyEffect("poisoned", _Damage)>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4]>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "flurry">>\ <<for _flurry to 0; _flurry < $Mon.flurryQTY; _flurry++>>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - _PlayerTotalAC>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<if _Damage > 0>>\ <<if _NetAbsorb > _Damage>><<set _NetAbsorb to _Damage>><<endif>>\\ <<if _NetAbsorb > 0>>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + "@@@@color:MediumSlateBlue;(-" + _NetAbsorb +")@@ @@color:Red;damage@@">>\ <<set _Damage to _Damage - _NetAbsorb>>\ <<else>>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<endif>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<RiposteCheck>>\ <</for>>\ <<elseif _MonAttackType is "REMOVEARMOR">>\ <<CombatLog "@@color:Yellow;Debug: implement armor debuff@@">>\ <<elseif _MonAttackType is "debuffTH">>\ <<CombatLog "@@color:Yellow;Debug: to-hit debuff@@">>\ <<elseif _MonAttackType is "fertility">>\ <<CombatLog "@@color:Yellow;Debug: implement fertility attacks@@">>\ <<elseif _MonAttackType is "heal">>\ <<set _Heal to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<set $Mon.hpcur to $Mon.hpcur + _Heal>>\ <<if $Mon.hpcur > $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _CombatMessage to _TheMon + " " + "@@color:Yellow;" + $Mon.att[_WhichAttack][4] + " to full health!@@">>\ <<else>>\ <<set _foo to _TheMon + " " + "@@color:Yellow;" + $Mon.att[_WhichAttack][4] + " for " + _Heal + " health@@">>\ <<endif>>\ <<else>>\ <<AddToLog "Error in combat widget: unrecognized attack type">>\ <<endif>>\ \ <<ShowHealth>>\ <<ShowHorny>>\ \ <<set _GoldLossMessage to "">>\ <<set _GoldLost to 0>>\ <<if $Mon.TakesGold is true>>\ <<if setup.PlayerHasPerk("Rich") is true>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] / 4)>>\ <<if _GoldLost is 1>>\ <<set _GoldLossMessage to _TheMon + " takes your last piece of gold.">>\ <<elseif _GoldLost is 0>>\ <<else>>\ <<set _GoldLossMessage to _TheMon + " takes " + _GoldLost + " of your gold.">>\ <<endif>>\ <<else>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] /2)>>\ <<if _GoldLost is 1>>\ <<set _GoldLossMessage to _TheMon + " takes your last piece of gold.">>\ <<elseif _GoldLost is 0>>\ <<else>>\ <<set _GoldLossMessage to _TheMon + " takes " + _GoldLost + " of your gold.">>\ <<endif>>\ <<endif>>\ <<endif>>\ \ <<if $PC[$CC][$PChornycur] gte $PC[$CC][$PChornymax]>>\ <<CombatLog "You have been defeated!">>\ <<replace "#combatcontrols">>\ @@color:Red;You submit to the <<print $Mon.name>> in a fit of lust!@@ <<if _GoldLost > 0>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _GoldLost>>\ <<print _GoldLossMessage>> <<endif>>\ <hr>\ <span id="KeypSpace">\ <<link "space) Continue" "DefeatSex">> <<ClearTemporaryEffects>>\ <</link>>\ </span>\ <</replace>>\ <<elseif $PC[$CC][$PChpcur] < 1>>\ <<set $PC[$CC][$PCmisc].battleslost to $PC[$CC][$PCmisc].battleslost +1>>\ <<CombatLog "You have been defeated!">>\ <<replace "#combatcontrols">>\ @@color:Red;You have been defeated!@@ <<if _GoldLost > 0>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _GoldLost>>\ <<print _GoldLossMessage>> <<endif>>\ <hr>\ <span id="KeypSpace">\ <<link "space) Continue" "DefeatSex">> <<ClearTemporaryEffects>>\ <</link>>\ </span>\ <</replace>>\ <<endif>>\ \ <<if $PC[$CC][$PCcoins] < 0>>\ <<CombatLog "Error: monster took more gold than the player had. Attempting to fix.">>\ <<set $PC[$CC][$PCcoins] to 0>>\ <<endif>>\ <<ShowActiveEffects>>\ <<endif>>\ <</widget>>\ <<widget CombatUIStatsHack>>\ <<set _CUI to $args[0]>>\ <<set _CUItype to _CUI[0]>>\ <<set _CUIptr to _CUI[1]>>\ <<set _CUIunused to _CUI[2]>>\ <<set _EnchantBonuses to setup.GetEnchantBonuses($CC)>>\ <<if _CUItype is "body">>\ <<set _bp to $PC[$CC][$PCbp][_CUIptr]>>\ <<set _CUIAttackType to $PC[$CC][$PCbp][_CUIptr].attacktype>>\ <<set _CUIMinDam to _bp.mindam + ($PC[$CC][$PCstr] -10) + $PC[$CC][$PCmorphBONI].bodydam>>\ <<set _CUIMaxDam to _bp.maxdam + ($PC[$CC][$PCstr] -10) + $PC[$CC][$PCmorphBONI].bodydam>>\ <<if _CurrentClass is "barbarian">>\ <<set _CUIMinDam to _CUIMinDam + $PC[$CC][$PClevel]>>\ <<set _CUIMaxDam to _CUIMaxDam + $PC[$CC][$PClevel]>>\ <<endif>>\ <<set _CUIToHit to 100 + _EnchantBonuses.Accuracy + $PC[$CC][$PCtohit] + $PC[$CC][$PCmorphBONI].bodyth + (setup.AchievementHandler("Best Barbarian", "HAS?", -1) * 5) - $Mon.armor>>\ <<if _CUIToHit < 1>>\ <<set _CUIToHit to 0>>\ <<endif>>\ <<if _CUIAttackType is "poison bite">>\ <<set _CUIoutput to "(" + _CUIToHit + "% hit chance, poison)">>\ <<else>>\ <<set _CUIoutput to "(" + _CUIToHit + "% hit chance, " + _CUIMinDam + "-" + _CUIMaxDam + " " + _CUIAttackType + " damage)">>\ <<endif>>\ <<print _CUIoutput>>\ <<elseif _CUItype is "weapon">>\ <<DescribeItem $PC[$CC][$PCbp][_CUIptr].equip>>\ <<set _CUIAttackType to $ItemPoke.attacktype>>\ <<set _CUIMinDam to $ItemPoke.mindam + ($PC[$CC][$PCstr] -10)>>\ <<set _CUIMaxDam to $ItemPoke.maxdam + ($PC[$CC][$PCstr] -10)>>\ <<set _CUIToHit to 100 + _EnchantBonuses.Accuracy + $PC[$CC][$PCtohit] + $PC[$CC][$PCmorphBONI].th + (setup.AchievementHandler("Best Warrior", "HAS?", -1) * 5) - $Mon.armor>>\ <<set _CurrentClass to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<if _CurrentClass is "warrior">>\ <<set _CUIToHit to _CUIToHit + ($PC[$CC][$PClevel] * 10)>>\ <<endif>>\ <<if _CUIAttackType is "cleave">>\ <<set _BestLumberjack to 5 * setup.AchievementHandler("Best Lumberjack", "HAS?", -1)>>\ <<if _BestLumberjack > 0>>\ <<set _CUIToHit to _CUIToHit + _BestLumberjack>>\ <<endif>>\ <<if _CurrentClass is "lumberjack">>\ <<set _CUIMinDam to _CUIMinDam + $PC[$CC][$PClevel]>>\ <<set _CUIMaxDam to _CUIMaxDam + $PC[$CC][$PClevel]>>\ <<endif>>\ <<endif>>\ <<if _CUIToHit < 1>>\ <<set _CUIToHit to 0>>\ <<elseif _CUIToHit > 100>>\ <<set _CUIToHit to 100>>\ <<endif>>\ <<set _CUIoutput to "(" + _CUIToHit + "% hit chance, " + _CUIMinDam + "-" + _CUIMaxDam + " " + _CUIAttackType + " damage)">>\ <<print _CUIoutput>>\ <<elseif _CUItype is "flirt">>\ <<set _FlirtCombatData to setup.GetFlirtDataAgainstMon()>>\ <<set _Physiology to _FlirtCombatData[0]>>\ <<set _ProstituteClassBonus to _FlirtCombatData[1]>>\ <<set _EquipBonus to _FlirtCombatData[2]>>\ <<set _MorphToHitBonus to _FlirtCombatData[3]>>\ <<set _MorphDamBonus to _FlirtCombatData[4]>>\ <<set _Praying to _FlirtCombatData[5]>>\ <<set _BestProstitute to _FlirtCombatData[6]>>\ \ <<set _FlirtMinDam to Math.trunc(1 + _ProstituteClassBonus + _MorphDamBonus)>>\ <<set _FlirtMaxDam to Math.trunc(_Physiology + _ProstituteClassBonus + _MorphDamBonus)>>\ <<set _FlirtToHit to 1 + Math.trunc(10 * (10 + _Physiology + _EquipBonus + _MorphToHitBonus - _Praying - $Mon.Willpower))>>\ <<if ($DebugMode is true)>> <hr> debug: flirt combat data: _FlirtCombatData To hit: 10 * (10 + _Physiology (phsy) + _EquipBonus (equip) + _MorphToHitBonus (morphtohit) - _Praying (praying) - $Mon.Willpower (monster willpower)) Computed tohit: _FlirtToHit Combat damage: _FlirtMinDam to _FlirtMaxDam <hr> <<endif>>\ <<if _FlirtToHit > 100>>\ <<set _FlirtToHit to 100>>\ <<elseif _FlirtToHit < 1>>\ <<set _FlirtToHit to 0>>\ <<endif>>\ <<if _FlirtMaxDam < _FlirtMinDam>>\ <<set _FlirtMaxDam to _FlirtMinDam>>\ <<endif>>\ \ <<set _CUIoutput to "(" + _FlirtToHit + "% hit chance, " + _FlirtMinDam + "-" + _FlirtMaxDam + " lust damage)">>\ <<print _CUIoutput>>\ <<elseif _CUItype is "symbol">>\ (pray)\ <<elseif _CUItype is "bash">>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _CUIStunBase to $PC[$CC][$PCstr] - ($PC[$CC][$PCz] * 3) +2>>\ <<else>>\ <<set _CUIStunBase to $PC[$CC][$PCstr] - $PC[$CC][$PCfz] +2>>\ <<endif>>\ <<set _CUIStunChance to _CUIStunBase * 20>>\ <<if _CUIStunChance > 99>>\ <<set _CUIStunChance to 100>>\ <<elseif _CUIStunChance < 1>>\ <<set _CUIStunChance to 0>>\ <<endif>>\ (<<print _CUIStunChance>>% to stun)\ <<else>>\ Error in CombatUIStatsHack: <<print _CUI>>\ <<endif>>\ <</widget>>\ <<widget "DeathByFeedback">>\ <<unset $DeathBySpellFeedback>> <<set $PC[$CC][$PCmisc].battleslost to $PC[$CC][$PCmisc].battleslost +1>>\ <<CombatLog "You have knocked youself out!">>\ <<replace "#combatcontrols">>\ @@color:Red;You have been defeated!@@ The feedback from the spell instantly knocks you out. What happens after that, you never find out. <<if $Mon.TakesGold is true>>\ <<if setup.PlayerHasPerk("Rich") is true>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] / 4)>>\ <<else>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] /2)>>\ <<endif>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _GoldLost>>\ <<if $PC[$CC][$PCcoins] < 0>>\ Debug: monster took more gold than the player had. Attempting to fix. <<set $PC[$CC][$PCcoins] to 0>>\ <<endif>>\ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Church">> <<set $WORLD.datapasser to ["sex","wolf"]>> <<AdvanceTime 480>> <<ClearTemporaryEffects>>\ <</link>>\ </span> <</replace>>\ <</widget>>\ <<widget "GetAttackArray">>\ <<AddToLog "@@color:LightGreen;GetAttackArray has been called!@@<br>">>\ <<set $AttackArray to []>>\ <<set _arcount to 0>>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is $BPwield) and ($PC[$CC][$PCbp][_i].equip[0] > 0)>>\ <<DescribeItem $PC[$CC][$PCbp][_i].equip>>\ <<if $ItemPoke.tooleffect is 18>>\ <!-- gemstone -->\ <<elseif $ItemPoke.tooleffect is 8>>\ <<set _fulldesc to "brandish " + $ItemPoke.name>>\ <<set $AttackArray[_arcount] to ["symbol", _i, _fulldesc]>>\ <<AddToLog $AttackArray[_arcount]>>\ <<set _arcount to _arcount +1>>\ <<elseif $ItemPoke.tooleffect is 17>>\ <<set _fulldesc to "bash with " + $ItemPoke.name>>\ <<set $AttackArray[_arcount] to ["bash", _i, _fulldesc]>>\ <<AddToLog $AttackArray[_arcount]>>\ <<set _arcount to _arcount +1>>\ <<else>>\ <<set _fulldesc to $ItemPoke.name + " attack">>\ <<set $AttackArray[_arcount] to ["weapon", _i, _fulldesc]>>\ <<AddToLog $AttackArray[_arcount]>>\ <<set _arcount to _arcount +1>>\ <<endif>>\ <<elseif $PC[$CC][$PCbp][_i].attackdesc neq "">>\ <<set _fulldesc to $PC[$CC][$PCbp][_i].attackdesc>>\ <<set $AttackArray[_arcount] to ["body", _i, _fulldesc]>>\ <<AddToLog $AttackArray[_arcount]>>\ <<set _arcount to _arcount +1>>\ <<endif>>\ <</for>>\ \ <<if $AttackArray.length < 1>>\ @@color:Red;No valid body parts or weapons to attack with@@ Did you fill all your slots with gemstones, or were you very unlucky with transformations? <<endif>>\ \ <<unset $ItemPoke>>\ <</widget>>\ <<timed 200ms>>\ <<audio "menu_bgm" stop>>\ <</timed>>\ <<PlayBGM "town">>\ \ <<set _throwaway to setup.InitForestCaves()>>\ \ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ \ <<set $PC[$CC][$PCz] to 0>>\ <<set $PC[$CC][$PClocation] to "town">>\ \ <<MapCrescentheartNorth>>\ <hr>\ \ <<if $WORLD.datapasser is "Gravestone">> @@color:Gold;Gravestones@@ <hr>\ <<if $RETIREES[0].name is "none">>\ Several blank gravestones are planted in orderly rows here, prepped and ready to record the names and deeds of the realm's retired heroes. <<else>>\ Several gravestones are placed in front of the church here in town. Glancing among them you recognized the names of famous heroes now long gone. <hr>\ <<for _i to 0; _i < $RETIREES.length; _i++>> <<if $RETIREES[_i].name neq "none">>\ _i) <<print $RETIREES[_i].name>>, retired at level $RETIREES[_i].level after having made it to tower level $RETIREES[_i].maxtower <<endif>>\ <</for>>\ <<endif>>\ <hr>\ <<link "Retire this character">> <<InitPC $CC>> <<AutoSaveLoad "set">> <<script>>Engine.restart()<</script>> <</link>> - This is PERMANENT <hr>\ <<elseif $WORLD.datapasser is "MagicCircle">> @@color:Aqua;Magic circle@@ A runic circle is engraved directly into the stone here. The runes appear dull, however, and whatever magic powers the circle appears to be inactive. <!-- @@color:Gold;Magic Circle@@ <hr>\ @@color:Gold;Scene Navigation@@ <span id="KeypOne">\ <<link "1) Town square" "TownSquare">> <</link>>\ </span> -->\ <<elseif $WORLD.datapasser is "Guild">> guild not used? <<elseif $WORLD.tsquare is 0>>\ <<set $WORLD.tsquare to 1>>\ After a long and grueling journey, at long last you've finally reached the town of Crescentheart. Though now that you're here, it's clear that the tales you've heard of its magnificence were exaggerated, to put it mildly. While still a town of decent size, the worn cobbelstone roads and buildings in disrepair tell the tale of a town several years past its prime. But none of it detracts from the majestic Tower of Triumph jutting out from one end of town and reaching up as far as the clouds in the sky. The street is dotted with adventurers, and they seem to outnumber residents. Looking closer, you see more than a few sporting tails, animal ears, and assorted other mismatched body parts. Clearly tower-climbers, and from their numbers you suspect that the city's merchants survive on their business alone. If you want, you can begin your journey into the tower immediately. But it might be wise to at least look around town first. @@color:Yellow;Tip: You have some starter gear to equip! Try clicking 'inventory' on the sidebar, or pressing i on your keyboard!@@ <<else>>\ While but a small village, Crescentheart's town square is well-built with a central fountain and cobblestone roads. All is dwarfed by the immense Tower reaching majestically up into the sky. <<endif>>\ <hr> \ <<set $WORLD.datapasser to 0>>\ \ <<if $PC[$CC][$PChpcur] < 1>>\ <<if $PC[$CC][$PChunger] < 1>>\ <<set $WORLD.diedby to "Starved to death">>\ @@color:Red;You have starved to death!@@ It's unfortunate, but you do need to eat. If food is too expensive, you could try carrying around a butcher knife to carve up some of those monsters you keep fighting. Of course, that probably has side effects.\ <<AwardAchievement "Starve to death">>\ <<else>>\ <<set $WORLD.diedby to "Ran out of health in town...somehow">>\ @@color:Red;You have died!@@ @@color:Yellow;Debug: how did this happen?@@ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Death">> <</link>>\ </span> <<else>>\ <<if $WORLD.MobileMode is 1>> @@color:Gold;Mobile mode (EXPERIMENTAL)@@ <<button "[South, to Crescentheart South]" "TownSouth">> <<AdvanceTime 10>> <</button>> <<button "[West, into the Enchanted Forest]" "Forest">> <<set $PC[$CC][$PCfz] to 1>> <<set $PC[$CC][$PCfx] to $WORLD.ForestDims[0]>> <<set $PC[$CC][$PCfy] to Math.trunc($WORLD.ForestDims[1] / 2)>> <<set $WORLD.datapasser to "reset forest">> <<AdvanceTime 30>> <</button>> <<button "[West, into the Enchanted Forest]" "Forest">> <<set $PC[$CC][$PCfz] to 1>> <<set $PC[$CC][$PCfx] to $WORLD.ForestDims[0]>> <<set $PC[$CC][$PCfy] to Math.trunc($WORLD.ForestDims[1] / 2)>> <<set $WORLD.datapasser to "reset forest">> <<AdvanceTime 30>> <</button>> <<if $WORLD.MainQuest[0].state is "inactive">>\ <<else>>\ <<button "East, into the Tower of Triumph" "Dungeon64">> <<AdvanceTime 10>> <<set $PC[$CC][$PCz] to 1>> <<set $PC[$CC][$PCx] to $WORLD.TowerOrigin[0]>> <<set $PC[$CC][$PCy] to $WORLD.TowerOrigin[1]>> <</button>>\ <<endif>>\ <<else>>\ @@color:Gold;Zone Navigation@@ - click on the map to visit locations <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) South, to Crescentheart South" "TownSouth">> <<AdvanceTime 10>> <</link>>\ </span></span> <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) West, into the Enchanted Forest" "Forest">> <<set $PC[$CC][$PCfz] to 1>> <<set $PC[$CC][$PCfx] to $WORLD.ForestDims[0]>> <<set $PC[$CC][$PCfy] to Math.trunc($WORLD.ForestDims[1] / 2)>> <<set $WORLD.datapasser to "reset forest">> <<AdvanceTime 30>> <</link>>\ </span></span> <<if $WORLD.MainQuest[0].state is "inactive">>\ d) The Tower is locked <<else>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) East, into the Tower of Triumph" "Dungeon64">> <<AdvanceTime 10>> <<set $PC[$CC][$PCz] to 1>> <<set $PC[$CC][$PCx] to $WORLD.TowerOrigin[0]>> <<set $PC[$CC][$PCy] to $WORLD.TowerOrigin[1]>> <</link>>\ </span></span> <<endif>>\ <hr> @@color:Gold;Options@@ <<link "Save and exit to character menu" "Preamble">> <<AutoSaveLoad "set">> <</link>>\ <<endif>>\ <<endif>>\ <<if $DebugMode is true>>\ <<link "Naga" "Combat">> <<set $ForceMon to ["naga", "female"]>>\ <</link>>\ <<link "Artifact test">> <<set _Ipsimus to setup.FindUnique(700)>> <<set _Custodia to setup.FindUnique(701)>> <<replace "#foo">> <<print _Ipsimus>> <<print _Custodia>> <</replace>> <</link>> <<link "Exists?">> <<replace "#foo">> <<print setup.CharacterExists(1)>> <</replace>> <</link>> <hr> <span id ="foo">here</span> <<link "Report Body">> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<replace "#here">>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ _i: <<print _bp.type>> <</for>>\ <<print $BPchest>> <<print $BPback>> <<print $BPpincer>> <<print $BPpincer>> <<print $BPlegs>> <<print $BPlegs>> <<print $BPlegs>> <<print $BPlegs>> <<print $BPwaist>> <<print $BPtail>> <<print $BPstinger>> <</replace>>\ <</link>> <span id="here">data here</span>\ <<endif>>\ <<set $NoDoubleKeypress to 1>>\ \ <<timed 500ms>>\ <<audio "menu_bgm" stop>>\ <</timed>>\ <<PlayBGM "explore">>\ \ <<ClearTemporaryEffects>>\ \ <<set $PC[$CC][$PClocation] to "forest">>\ \ <<set _px to $PC[$CC][$PCfx]>>\ <<set _py to $PC[$CC][$PCfy]>>\ <<set _pz to $PC[$CC][$PCfz]>>\ \ <<if _pz > $PC[$CC][$PChfze]>>\ <<set $PC[$CC][$PChfze] to _pz>>\ <<endif>>\ <<if _pz > $WORLD.HFZE>>\ <<set $WORLD.HFZE to _pz>>\ <<endif>>\ \ <<if ($WORLD.datapasser is "reset forest") or ($ForestMap.length is 0)>>\ <<AddToLog "Arriving in Forest">>\ <<set $ForestMap to []>>\ <<set $ForestMap to setup.ForestSnake()>>\ <<set $WORLD.ForestTheme to either(1,2,3)>>\ <!-- Don't stand on trees -->\ <<set $ForestMap[_px][_py] to 0>>\ <<set $ForestMap[_px][_py+1] to 0>>\ <<set $ForestMap[_px][_py-1] to 0>>\ <<else>>\ <<endif>>\ <<set $WORLD.datapasser to 0>>\ \ <!-- Material level of our best axe? -->\ <<set $WORLD.TreeCutter to setup.AxeLevel()>>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "forest">>\ <<set $WORLD.dialogue to 0>>\ \ <<set _ForestLevel to $PC[$CC][$PCfz]>>\ <<if _ForestLevel is 0>>\ @@color:Red;Error:Forest should never be level zero@@\ <<elseif _ForestLevel is 1>>\ @@color:Gold;Enchanted Forest, level 1 (near town)@@\ <<else>>\ @@color:Gold;Enchanted Forest, level _ForestLevel@@\ <<endif>>\ <hr>\ <span id="right-img"></span>\ <canvas id="myCanvas" width="960" height="450" style="border:0px solid #f47373;"> Your browser does not support the HTML canvas tag. </canvas> <hr>\ <span id ="roomdesc"></span>\ <span id ="eventtext"></span> <hr>\ <span id="navcontrols"><<ShowForestNavControls>></span> <span id="debug"></span>\ \ <<set _tempname to "S64Forest-Grass1">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Grass2">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Grass3">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower1">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower2">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower3">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower4">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower5">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower6">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower7">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Flower8">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-TreeTrunk">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Tree1">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Tree2">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Tree3">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Forest-Tree4">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Cage">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Sign">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Grave">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Cave">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[0][4] + ".png">>\ <img id="MiniAV0" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[1][4] + ".png">>\ <img id="MiniAV1" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[2][4] + ".png">>\ <img id="MiniAV2" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<timed 300ms>>\ <<ForestMoveRefresh>>\ <<set _throwaway to setup.DrawForestMap64(_px, _py, _pz, 64)>>\ <<set $NoDoubleKeypress to 0>>\ <</timed>>\<<set _ChatAvailable to false>>\ <<for _i to 0; _i < $PC[$CC][$PCGerardChat].length; _i++>>\ <<if $PC[$CC][$PCGerardChat][_i] is 1>>\ <<set _ChatAvailable to true>>\ <<endif>>\ <</for>>\ <<if $PC[$CC][$PCGerardChat][0] is 0>>\ <<set _ChatAvailable to true>>\ <<endif>>\ \ <<if $GerardTalk is "yes">>\ <<SimplePic "gerard.jpg">>\ @@color:LightGreen;General Store@@ <hr>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ \ <<if _CurrentQuestion is 0>>\ <<if $PC[$CC][$PCGerardChat][0] is 0>>\ <<set $PC[$CC][$PCGerardChat][0] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello," you greet the proprieter. "I'm $PC[$CC][$PCname]." @@color:Aqua;Shopkeeper@@: "Gerard," the man replies. "Are you here to climb the tower?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Was it really that obvious?" @@color:Aqua;Gerard@@: "It's pretty much the only reason people come this far north. Well, let me be the first to welcome you to Crescentheart. I run the general store here, so please come to me for any of your provisioning needs." <!-- Unlocks -->\ <<set $PC[$CC][$PCGerardChat][1] to 1>><!-- Ask why people don't come here -->\ <<set $PC[$CC][$PCGerardChat][2] to 1>><!-- Ask about his store -->\ <<else>>\ @@color:Aqua;Gerard@@: "Hello, <<print $PC[$CC][$PCname]>>. What can I do for you?" <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCGerardChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why don't people come here often?" @@color:Aqua;Gerard@@: "Well, it's not that they don't," he explains, looking you over. "But the Goddess's Tower of Triumph is the primary draw, and it's not exactly a family-friendly tourist attraction. It's mostly adventurers. \ <<if $PC[$CC][$PCgen] > 2>>You look like you know what you're doing though, so you don't need a retired adventurer like me to tell you how it is." <<else>>You look pretty new to to all this, so take it from a former adventurer: if you don't want to end up all messed up with tentacles for hands and <<if $PC[$CC][$PCsex] is "male">>a slime hole<<else>>a rabbit dick<<endif>> between your legs, go back to wherever you came from." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is it really that bad? Most everyone I've met so far seems pretty normal to me." @@color:Aqua;Gerard@@: "Looks can be deceiving. Let me just say there's a reason I'm covering up everything from the neck down, and leave it at that." <<endif>>\ <!-- unlocks -->\ <<set $PC[$CC][$PCGerardChat][3] to 1>><!-- You're an adventurer? -->\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCGerardChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I notice the shelves are mostly bare," you comment, glancing around his store. "Is this really all you sell?" @@color:Aqua;Gerard@@: "Everyone's running a little low on account of the war," he explains. "I'm trying to expand my inventory, but it's all I can do right now to stock what you see. I'm sure the other shopkeepers will have a similar story to tell. If it weren't for Tanya's ranch, I imagine we'd all be misshapen monstrosities from eating magic-tainted forest monster meat by now." <!-- unlocks -->\ <<set $PC[$CC][$PCGerardChat][9] to 1>><!-- who's Tanya? -->\ <<if$PC[$CC][$PCGerardChat][7] is 0>><!-- war -->\ <<set $PC[$CC][$PCGerardChat][7] to 1>>\ <<endif>>\ <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCGerardChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So, you're an adventurer?" @@color:Aqua;Gerard@@: "Used to be," he nods. "Most of Crescentheart's pemanent residents are retired adventurers. Rina, Skitters...everyone except the psycho bitch, I suppose. Personally I came ten years ago with some friends, all of us chasing a dream to climb the tower and ascend to godhood. Until Darkoth got taken by the demons, and Neris...well, I never found out for sure what happened to her. Anyway, I saw the writing on the wall after that and retired." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And you started a store?" @@color:Aqua;Gerard@@: "It's not a bad life," he shrugs. "Not as exciting as fighting monsters, maybe. And the pay isn't as good. But I don't have to worry about being eaten alive or raped in holes I don't even have, so there are positives." <!-- unlocks -->\ <<set $PC[$CC][$PCGerardChat][4] to 1>><!-- How far did you get? -->\ <<set $PC[$CC][$PCGerardChat][5] to 1>><!-- Any tips? -->\ <<set $PC[$CC][$PCGerardChat][6] to 1>><!-- Psycho Bitch? -->\ <<elseif _CurrentQuestion is 4>>\ <<set $PC[$CC][$PCGerardChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How far did you get?" you ask. "In the tower?" Gerard's eyes lose focus and he stares off into space. @@color:Aqua;Gerard@@: "I'm not sure what level it was, but there's...a room. I mean, every floor has room of course, that's just how it's laid out. But this was something crazy. Huge room with a red checkerboard-patterned floor. And right in the middle of it there was this crazy spider monster. Upper half was human, and she had this viscious black flail that looked like it must have weighed a hundred pounds. Introduced herself and gave a big long, droning speech every time I saw her. Zetahlia. Said she was the Demon Queen of the Spiders." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sounds like some kind of boss monster." @@color:Aqua;Gerard@@: "Probably. Anyway, Got as far as that room a couple times, but never past it." He nervously covers his stomach, then continues. @@color:Aqua;Gerard@@: "Let me tell you, if you ever see that thing...either kill it fast or get out of there. Don't dawdle. Believe me, you don't want to know what it does if it catches you." <!-- unlocks -->\ <<set $PC[$CC][$PCGerardChat][8] to 1>><!-- How is the tower laid out? -->\ <<elseif _CurrentQuestion is 5>>\ <<set $PC[$CC][$PCGerardChat][5] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do you have any adventuring tips for me?" @@color:Aqua;Gerard@@: "Sure, lots of things," he shrugs. "Heal often. I recommend you get a shield right away, but understand your equipment and when to use it. Shields are cheap for how well they protect you, but they're worthless against casters so sometimes it might not be a terrible idea to carry two weapons instead. Some monsters are more or less resistant to cutting or blunt weapons, so it can be nice to have the option. Just keep in mind that while you can drink potions and use certain small items during combat, you can't change weapons or equipment until a battle is over. Also, learn some magic when you get the chance. And above all, don't be greedy. If you're hurting, it's always ok to come back to town to rest. Transformations aren't all bad. Sometimes they'll make your stonger, but then other times you might lose the hand you're carrying a weapon in, and you don't want that to happen when you're two floors up and at half health. Also, I recommend you start out in the forest if you haven't already. Newbies usually like to go straight to the tower, and trust me, that's a mistake." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why? What's so bad about the tower?" @@color:Aqua;Gerard@@: "Tougher monsters that hit harder. Traps. And it's a maze, so if something goes wrong and you want to leave in a hurry, sometimes you can't. Plus, more stuff in there will actually kill you, whereas forest monsters mostly just like to molest you. Plus, the forest is easy to traverse. Get an axe and you can mostly chop your way straight through." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How strong should I be before I attempt the tower?" @@color:Aqua;Gerard@@: "Up to you," he shrugs. "Some people like to step just inside and hang out near the stairs resetting the tower over and over, hoping for a lucky treasure chest. That can happen. But you're just as likely to get an unlucky crossbow bolt in your head. I recommend you talk to Rina at the guild if you haven't already. She runs a program for new adventurers to help them get started." <!-- unlocks -->\ <<set $PC[$CC][$PCGerardChat][10] to 1>><!-- What monsters resist what attacks? -->\ <<set $PC[$CC][$PCGerardChat][11] to 1>><!-- ask about shields -->\ <<elseif _CurrentQuestion is 6>>\ <<set $PC[$CC][$PCGerardChat][6] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Who's this psycho bitch you mentioned?" <<if $PC[$CC][$PCselene] > 0>>\ @@color:Aqua;Gerard@@: "Selinda the Witch. Steer clear of her. " @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mean Selene?" @@color:Aqua;Gerard@@: "Sure, if that's what she's calling herself these days," he shakes his head. "Can't blame her for trying to distance herself from her past. <<else>>\ @@color:Aqua;Gerard@@: "Selinda the Witch," he nearly growls as he says the name. "Nasty temper, and has a penchant for turning people into lizards. She'll try to pull you in with a pretty picture of how her magic can help you, but my advice is to steer clear." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Help with magic sounds good though," you admit. @@color:Aqua;Gerard@@: "I don't exactly think she's the type to take on an apprentice. But if you want to learn magic all you need to do is find a spellbook and give it a read. I used to sell them myself, but I ran out of stock months ago when the war shut down the caravans. It takes a special ink to capture a spell on paper, and verbana root is hard to get around these parts. I don't know any alchemist who can make spell ink without it, so they're in short supply." <<endif>>\ <<if$PC[$CC][$PCGerardChat][7] is 0>><!-- war -->\ <<set $PC[$CC][$PCGerardChat][7] to 1>>\ <<endif>>\ <<elseif _CurrentQuestion is 7>>\ <<set $PC[$CC][$PCGerardChat][7] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's this about a war?" @@color:Aqua;Gerard@@: "Sythians from the mainland decided to seize control of the mountain pass down south. I doubt they really care about Crescentheart much, but whatever the reason they're there, that path is how most of the trade caravans get here and I'm sure a few wagons full of trade goods make easy plunder for an army." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "If they're not coming here, what do you think they're really after?" @@color:Aqua;Gerard@@: "I couldn't say," he shrugs. "It's probably just a simple landgrab or something. Or maybe one of their local allies struck gold in the mountains and they just want to guard the claim. Who knows? I wouldn't worry about it too much though. Once you're through the mountain pass, it's still 50 miles of worthless desert and empty salt beaches to get here. I doubt they'll come this far. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Any dungeons or anything down there worth checking out??" @@color:Aqua;Gerard@@: "Probably, if you can make it through the sweltering heat and scorpions. But I haven't passed that way since I first came to Crescentheart ten years ago, so anything I could tell you would be dated. Anyway, it's kind of hard to even get there with the current state of affairs, so I wouldn't worry about it until you're a lot stronger." <<elseif _CurrentQuestion is 8>>\ <<set $PC[$CC][$PCGerardChat][8] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mentioned dungeon rooms. What can you tell me about the tower layout?" @@color:Aqua;Gerard@@: "Honestly you probably don't need to worry about this for a while," he shrugs. "There's a big jump in difficulty between the forest and the tower, so you should probably stick to the forest until you have at least a few fights under your belt." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok, that's fine. I'd still like to know." @@color:Aqua;Gerard@@: "Well, the layout of the tower is flexible. It's not the same every time. The forest is just so big that it's hard to find any place you've been before, but the tower? It's the same as long as you want it to be, but regenerates itself whenenever you want. Supposedly it has something to do with the magic of the Goddess responding to the desires of her guests, but I couldn't tell you how it works. Anyway, every floor generates with a special room in it. Sometimes there's a treasure chest, or a trap, or a monster...could be anything." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do the rooms reset when the tower changes?" @@color:Aqua;Gerard@@: "Yep, sure do," he nods. "That's why they haven't all already been emptied by other adventurers. You'll run into other people from time to time in there, by the way. So keep your guard up. There's an unspoken rule not to fight in town, but once you're in the tower, anything goes." <<elseif _CurrentQuestion is 9>>\ <<set $PC[$CC][$PCGerardChat][9] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Who's Tanya?" @@color:Aqua;Gerard@@: "Bartender at the tavern near the forest-end of town. Cute catgirl, you can't miss her." <<elseif _CurrentQuestion is 10>>\ <<set $PC[$CC][$PCGerardChat][10] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mentioned that some monsters resist certain types of weapons. Anything more you can tell me? For example, why would something take less damage from swords?" @@color:Aqua;Gerard@@: "It's hard to cut through armor. Most of the insects in the southern desert have exoskeletons for example. Also, minotaurs have pretty thick skin, so a surface cut might not reach anything important. But armor doesn't matter much if you simply bludgeon something hard enough. Meanwhile, stabbing weapons like spears and tridents are good at poking holes in the armor to reach vital organs, so they do pretty well too." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok, that makes sense. What about blunt weapons? Are they bad against anything?" @@color:Aqua;Gerard@@: "Squishy monsters that are hard to crush. Hitting a slime or tentacle monster with a club is like trying to smack water. It just bounces them around. You have to break their skin to hurt them, but their skin isn't very tough, so cutting and stabbing weapons both work pretty well." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about axes? They cut, but they're also big and heavy enough that it has to hurt to be hit by one even if it doesn't break the skin." @@color:Aqua;Gerard@@: "Absolutely," he nods. "But because they're so big and heavy, that means that they tend to be slow and easier to dodge than a smaller, faster weapon. So anything that's very quick will tend to avoid the worst of the attack and at best you'll nick them in passing when they dodge." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So sounds like stabbing weapons are best?" @@color:Aqua;Gerard@@: "No, stabbing weapons are good against armor and they're good against squishies. And they're fast, so fast opponents don't have any advantage against them. But they're bad at hitting small targets. You can kill a fly with a flyswatter, but have you ever tried stabbing one with a pencil? It doesn't have to be very fast if it only has to move a tiny bit to avoid an attack. Even half an inch off, and you simply miss." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I see your point. So, blunt weapons are bad against squishies, swords are bad against thick skin and armor, axes are bad against anything that moves quickly, and stabbing weapons are bad against things that are small?" @@color:Aqua;Gerard@@: "Yep, you've got it. But don't stress over it too much. This will all be super important once you start adventuring in the tower or deeper into the forest. But nothing very dangerous lives close to town, so it's not anything you need to worry about right away." <<elseif _CurrentQuestion is 11>>\ <<set $PC[$CC][$PCGerardChat][11] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you tell me a little bit more about shields?" @@color:Aqua;Gerard@@: "Putting a huge chunk of wood or metal between you and an opponent makes for pretty good defense. Even just holding one will make you harder to hit, plus you can smack opponents with them to stun them briefly." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How does that work? Can I continually keep shield-bashing over and over to keep an opponent stun-locked forever?" @@color:Aqua;Gerard@@: "No, it doesn't work that way," he explains. "//Shield bashing is an interrupt//. Only use it when your opponent is doing a powerup move. You'll see them scream, or wind up an attack...something that telegraphs that the //next// attack is going to hurt a lot. If you randomly shield-bash opponents who are only engaged in normal, fast melee attacks, it's not going to help you." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You said that shields are worthless against casters though." @@color:Aqua;Gerard@@: "Amor doesn't protect you from spells. And most spells are fast. It doesn't take multiple rounds to cast firebolt, for example. So it can't be interrupted. You can only interrupt things that require prep time. Don't waste your time trying to shield-bash some random bunny-girl giving you flirty looks." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. Anything else?" @@color:Aqua;Gerard@@: "You should also know that it doesn't always work. You have to be strong enough to hit hard enough to stun in the first place. Also, you can't shield bash multipe times in a row. Every time you stun an opponent, they'll be on guard for it. So even at absolute best you can only stun every //other// turn. If you do it twice in a row, you're basically just giving your opponent a free attack on you. So don't do that." <<else>>\ Error: unrecognized question: _CurrentQuestion <<endif>>\ <hr>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <!-- unlocked by external events -->\ <<if ($PC[$CC][$PCGerardChat][11] is 0) and ($PC[$CC][$PChtze] > 4)>>\ <<set $PC[$CC][$PCGerardChat][11] to 1>>\ <<endif>>\ <<if ($PC[$CC][$PCGerardChat][12] is 0) and ($PC[$CC][$PCkills][setup.MonNameToKillPTR("Zehtalia")] > 0)>> <<set $PC[$CC][$PCGerardChat][12] to 1>>\ <<endif>>\ \ <<for _i to 0; _i < $PC[$CC][$PCGerardChat].length; _i++>>\ <<if $PC[$CC][$PCGerardChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Introduce yourself">>\ <<set _QuestionPool[1] to "Ask why people don't come here">>\ <<set _QuestionPool[2] to "Ask about his store">>\ <<set _QuestionPool[3] to "Ask about him personally">>\ <<set _QuestionPool[4] to "How far did you get through the tower?">>\ <<set _QuestionPool[5] to "Do you have any adventuring tips?">>\ <<set _QuestionPool[6] to "Who's this psycho bitch you mentioned?">>\ <<set _QuestionPool[7] to "Ask about the war">>\ <<set _QuestionPool[8] to "Ask about dungeon rooms">>\ <<set _QuestionPool[9] to "Who's Tanya?">>\ <<set _QuestionPool[10] to "What kind of monsters resist what attacks?">>\ <<set _QuestionPool[11] to "Would you tell me more about shields?">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done talking for now" "StoreGeneral">> <<set $WORLD.gstore to 2>>\ <<AdvanceTime 5>> <<unset $GerardTalk>>\ <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StoreGeneral">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<else>>\ <<SimplePic "gerard.jpg">>\ @@color:LightGreen;General Store@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <<if _ChatAvailable is false>>\ c) No chats available <<elseif $PC[$CC][$PCGerardChat][1] is 2>>\ <span id="KeypC">\ <<link "c) Chat with Gerard" "StoreGeneral">> <<set $GerardTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<else>>\ <span id="KeypC">\ <<link "c) Chat with the shopkeeper" "StoreGeneral">> <<set $GerardTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<endif>>\ <hr>\ <<Store $GStore>> <<endif>>\ <<SimplePic "blacksmith.jpg">>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ \ <<set _ShowStore to true>>\ \ <<set _PCaddress to "lass">>\ <<if $PC[$CC][$PCsex] is "male">><<set _PCaddress to "lad">><<endif>>\ \ @@color:Gold;Smithy@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <hr>\ <<if $WORLD.smith is 0>>\ Looking around the shop, you're unimpressed with the quality of gear on offer. <span id="KeypC">\ <<link "c) Chat with the blacksmith" "StoreSmith">> <<set $WORLD.smith to 1>>\ <</link>>\ </span> <<elseif $WORLD.smith is 1>>\ <<set _ShowStore to false>>\ <<set $WORLD.smith to 2>>\ @@color:Aqua;Finley@@: "Can I help ye?" the blacksmith inquires. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hi, yes...I can't help but notice that you have only copper and bronze goods on sale. Where's the iron? Where's the mithril?" @@color:Aqua;Finley@@: "Wot's it to ye?" he frowns at your clothes. "Ye dun' look like ye can afford any better." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Well, maybe not yet," you dither. "But I'm here to climb the tower, so hopefully my fortune will improve soon. But somehow I don't think I'll get very far if this is the best gear on sale. Isn't this town famous for adventuring? Surely I'm not the only customer who's asked." @@color:Aqua;Finley@@: "Aye, 'tis true," he sighs. "Sadly, a quarrelsome adventurin' type stole me mithril smithin' hammer. All I hae ta work with noo is this namby pamby apprentice hammer wot's barely 'nuff fer shapin' copper an' bronze. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Anything I can do to help? @@color:Aqua;Finley@@: "Sure, bring me mah hammer an' I'll git richt back tae work. Course, ore merchants stooped comin' fur o' tha war doon sooth. So dun expect na mithril god slayin' swords the day ye come back. But iron? Aye, I kin do that with wot I got." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Any idea where I can find the adventurer who stole your hammer?" <<if $WORLD.SmithQuests[0] is 0>>\ @@color:Aqua;Finley@@: "I cannae say fer sure, but he wos a swordsman bah the look o' him. Adventurin' type. Carryin' a bigol' axe, so prolly headin' deep inna' tha forest would be mah guiss." <<else>>\ <<set $WORLD.smith to 3>>\ @@color:Aqua;Finley@@: "I cannae say fer sure, but she was a mighty braw keekin' mage lassie. And she warn't no fledglin' charmer neither. Carryin' a bigol' axe, so prolly headin' deep inna' tha forest would be mah guiss." <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) continue" "StoreSmith">> <</link>>\ </span>\ <<elseif $WORLD.smith is 2>>\ Looking around the shop, the quality of gear on offer seems fairly low. <span id="KeypC">\ <<link "c) Chat with the blacksmith" "StoreSmith">> <<set $WORLD.smith to 3>>\ <</link>>\ </span>\ <<elseif $WORLD.smith is 3>>\ <<set _NPC to ["lad","lassie"]>>\ @@color:Aqua;Finley@@: "Any progress on findin' that adventurin' <<print _NPC[$WORLD.SmithQuests[0]]>> an' bringin' me mah hammer?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Not yet." @@color:Aqua;Finley@@: "Oh, aye? Well, then, be sure tah check oot me wares. Wot ye see is wot ye got." <<elseif $WORLD.smith is 4>>\ <<set $WORLD.smith to 5>>\ <<set $WORLD.smithLevel to 1>>\ <<Restock "smith">>\ \ <!-- does player have hammer? where? -->\ <<set _hammer to -1>>\ <<for _H to 0; _H < $PC[$CC][$PCinven].length; _H++>>\ <<set _CheckMe to $PC[$CC][$PCinven][_H]>>\ <<if (_CheckMe[0] is 101) and (_CheckMe[1] is 105)>>\ <<set _hammer to _H>>\ <<endif>>\ <</for>>\ <<if _hammer > -1>>\ <<set _throwaway to setup.RemoveOneItemFromInv($CC, _hammer)>>\ <<endif>>\ \ <<if $WORLD.SmithQuests[1] is "smith has it">>\ @@color:Aqua;Finley@@: "Oi, <<print _PCaddress>>. That boggin' thief cam back beggign 'n' crawling tae return mah nicked hammer. Ye did a guid proper bit o' wirk fur me. Thankee kindly." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wow, really? Kind of wasn't expecting that, but that's good news." @@color:Aqua;Finley@@: "Ayt, 'tis. Be gue fer mah wallet, tae." <<elseif $WORLD.SmithQuests[1] is "player has it">>\ @@color:Aqua;Finley@@: "Oi, <<print _PCaddress>>. Ony luck takin' back mah hammer?" <<if _hammer < 0>>\ You're about to say yes when you realize you don't have the hammer on you. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sorry, not yet. I'll let you know." @@color:Aqua;Finley@@: "A'richt. Tak' yer time. Bit ah cannae upgrade mah stock wi'oot it." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, here it is," you hand it over. @@color:Aqua;Finley@@: "Aye, that's guid. Ah'l git tae wirk richt awa' makin' soem freish stock fur ye." <<endif>> <<elseif $WORLD.SmithQuests[1] is "player doesn't know smith has it">>\ @@color:Aqua;Finley@@: "Oi, <<print _PCaddress>>. Welcome to me stahr. Ye'r in luck. A've juist hud a stroke o' guid fortuin, 'n ahll be stocking eyeurn goods likelie fer noo awn." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Glad to hear it. Out of curiosity, what happened?" @@color:Aqua;Finley@@: "Ah hud a bawherr bit o' misfortune wi' some missin' eequipment, buit tis bin returned noo sae ah kin git back tae wirk aw' proper lik'." <<else>>\ Error: smithquesst1 is <<print $WORLD.SmithQuests[1]>>. Attempting to fix by bumping quest progression to next known state. Enjoy your eyeurn gear. <<endif>>\ <<elseif $WORLD.smith is 5>>\ <!-- primed for the next forest quest: hunt ore? -->\ The shop is presently stocking iron quality items. <span id="KeypC">\ <<link "c) Chat with the blacksmith" "StoreSmith">> <<set $WORLD.smith to 6>>\ <</link>>\ </span>\ <<elseif $WORLD.smith is 6>>\ <<set $WORLD.smith to 5>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I'm liking the iron gear, but is this the best you can make?" @@color:Aqua;Finley@@: "Na, iron is wee mair than bairn claes" he chuckles. "Hae ye ever heard o' steel? @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I have. What do you need to be able to make it?" @@color:Aqua;Finley@@: "Ah hae a' th' iron a'm needin' tae mak' it," he scractes his beard. "Bit whit ah pure need is some sort o' flux fer purificatin' it." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Any idea Where can I find flux?" <<if $WORLD.bridge > 0>>\ @@color:Aqua;Finley@@: "If it wur me a'd huv a go exploring th' southern desert. Shouldn't be tae solid tae fin' if ye dinnae mynd a bawherr o' solid labor wi' a pick." <<else>>\ @@color:Aqua;Finley@@: "Hell if ah noo," he shrugs. "Ah used tae pay adventurers tae bring it back fae th' southern desert. Bit wi' th' bridge smashed, a dinnae." <<endif>>\ <<elseif $WORLD.smith is 7>>\ <<set $WORLD.smithLevel to 2>>\ <<set $WORLD.smith to 8>>\ <<Restock "smith">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Finley. I found a whole bunch of this white powdery rock in a desert cave out south. Can you use it?" @@color:Aqua;Finley@@: "Aye, <<print _PCaddress>>," he smiles, rubbing the powder between his fingers and sniffing it. "This glorious bit o' rock stoor 'ere is dolomite, an it's exactly whit a'm needin'. Ahl git tae upgrading mah goods tae steel richt awa'." <<elseif $WORLD.smith is 8>>\ <!-- primed for the next forest quest: ??? -->\ The shop is presently stocking steel quality items. c) No chats available <<else>>\ @@color:Aqua;Finley@@: "Can I help ye?" the blacksmith inquires. <<endif>>\ <<if _ShowStore is true>>\ <hr>\ @@color:Gold;Goods for sale@@ <<Store $Smith>>\ <span id="storereport">\ </span>\ <<endif>>\ <<SimplePic "witch.jpg">>\ @@color:LightGreen;Witch's Den@@ <<if ($WORLD.selene is 0) or ($WORLD.selene is 2)>>\ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">>\ <<AdvanceTime 5>> <<set $WORLD.selene to 0>> <</link>> </span>\ <<endif>>\ <hr>\ <<set _ExitLinks to "base">>\ <<set _Witch to "The Witch">>\ <<if $PC[$CC][$PCSeleneChat][1] is 2>>\ <<set _Witch to "Selene">>\ <<endif>>\ \ \ <<set _ChatAvailable to false>>\ <<for _i to 0; _i < $PC[$CC][$PCSeleneChat].length; _i++>>\ <<if $PC[$CC][$PCSeleneChat][_i] is 1>>\ <<set _ChatAvailable to true>>\ <<endif>>\ <</for>>\ <<if $PC[$CC][$PCSeleneChat][0] is 0>>\ <<set _ChatAvailable to true>>\ <<endif>>\ \ <<if $WORLD.selene is 0>>\ <<set _ExitLinks to "store">>\ <<if $PC[$CC][$PCSeleneChat][1] is 2>>\ <<if random(1,2) is 1>>\ Entering the hovel, you find Selene stirring her cauldron and chanting. Not wanting to interrupt, you wait patiently as she fetches a vial from a shelf and empties it into the cauldron. Instantly the brew bursts in flame, and she scoops up a metal bowl full and takes a sip. <<if random(1,2) is 1>>\ "Hmm," she tosses it aside disdaindally. "Needs more <<print either("salt","pepper","onion","garlic")>>." <<else>>\ "Welcome <<print $PC[$CC][$PCname]>>," she turns to you at last. "What brings you to the Wayward Witch?" <<endif>>\ <<else>>\ "Welcome <<print $PC[$CC][$PCname]>>," Selene greets you. "What brings you to the Wayward Witch?" <<endif>>\ <<else>>\ Entering the hovel, you find a witch stirring a large iron cauldron and chanting . Not wanting to interrupt her casting, you wait patiently as she fetches a vial from a shelf and empties it into the cauldron. Instantly the brew bursts in flame, and she scoops up a metal bowl full and takes a sip. <<if random(1,2) is 1>>\ "Hmm," she tosses it aside disdaindally. "Needs more <<print either("salt","pepper","onion","garlic")>>." <<else>>\ "Welcome adventurer," she turns to you at last. "What brings you to the Wayward Witch?" <<endif>>\ <<endif>>\ \ <<if _ChatAvailable is false>>\ c) No chats available <<else>>\ <span id="KeypC">\ <<link "c) chat" "StoreSelene">>\ <<set $WORLD.selene to 1>>\ <<set $WORLD.datapasser to 0>>\ <</link>> </span>\ <<endif>>\ \ <<set _ReagentCheck to false>>\ <<for _i to 0; _i < $WORLD.SeleneQuests.length; _i++>>\ <<if $WORLD.SeleneQuests[_i] is 2>>\ <<set _ReagentCheck to true>>\ <<endif>>\ <</for>>\ <<if _ReagentCheck is true>>\ <span id="KeypH">\ <<link "h) Turn in alchemical herbs" "StoreSelene">> <<set $WORLD.selene to 3>>\ <<set $WORLD.datapasser to 0>>\ <</link>> </span>\ <<endif>>\ <<elseif $WORLD.selene is 1>>\ <<set _ExitLinks to "questions">>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ <<if _CurrentQuestion is 0>>\ <<set $PC[$CC][$PCSeleneChat][0] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello. I'm here to explore the tower. My name is <<print $PC[$CC][$PCname]>>." @@color:Red;<<print _Witch>>@@: "A pleasure to make your acquaintence," she nods. "Tower-climbers are most welcome here. Or at least their gold is. Though I'm sorry to say my shop is in a sorry state just now." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "This is a store? What do you sell besides empty bottles?" @@color:Red;<<print _Witch>>@@: "Most of the time I sell spellbooks and potions, but I'm presently out of stock on the former, and with the southern caravan blocked by that pesky war down south I haven't been getting my usual shipments lately." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Can't you source herbs locally?" @@color:Red;<<print _Witch>>@@: "Probably, but I'm not an adventurer," she shrugs. "I did try hiring one through the guild, but he never came back so I assume he either died horribly or lost too many battles. If he's still alive, he's probably a half <<print either("bunny","fox","goblin")>>, half <<print either("cat","goo-girl","tentacle-monster")>> hybrid with <<print either("twelve vaginas","watermelon-sized tits","an overbite")>> <<print either("locked in a cage","getting gang-banged by goblins","getting gang-banged by hellhounds","begging for the sweet release of death","giving blowjobs to monsters just to have something to eat")>> by now." \ <!-- Unlocks -->\ <<if $PC[$CC][$PCSeleneChat][1] is 0>>\ <<set $PC[$CC][$PCSeleneChat][1] to 1>><!-- ask her about herself -->\ <<endif>>\ <<if $PC[$CC][$PCSeleneChat][2] is 0>>\ <<set $PC[$CC][$PCSeleneChat][2] to 1>><!-- ask about the tower -->\ <<endif>>\ <<if $PC[$CC][$PCSeleneChat][3] is 0>>\ <<set $PC[$CC][$PCSeleneChat][3] to 1>><!-- ask about spellbooks and potions -->\ <<endif>>\ <<if $PC[$CC][$PCSeleneChat][10] is 0>>\ <<set $PC[$CC][$PCSeleneChat][10] to 1>><!-- ask about monsters -->\ <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCSeleneChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's your name?" @@color:Red;Selene@@: "I'm Selene," she curtsies. "Though I'm mostly known as the Wayward Witch by the town's residents. Or 'that nut in in a hut' by a few with an unusually long memory. You'd think that name would have died out after they burned my hut down. That's why I'm living in this shack in the wall right now." <<if $PC[$CC][$PCsex] is "male">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Selene? That's a nice name." @@color:Red;Selene@@: "Thanks. A nice name plus 5 gold will buy five gold worth of squirrel nutsucks in these parts." <<endif>>\ <!-- unlocks -->\ <<set $PC[$CC][$PCSeleneChat][4] to 1>><!-- Why did they burn down your hut? -->\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCSeleneChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about the tower?" @@color:Red;Selene@@: "Ahh, the tower," she smirks. "Or, the //Tower of Triumph, Corporeal Vestment of the Goddess of Primal Darkness// if you want to be formal about it. But just between you and I, I prefer to think of it as 'the nasty deathtrap that brings customers and fools to my shop.'" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You've never ventured inside?" @@color:Red;Selene@@: "Can't you tell?" she gestures up and down her body with a flourish. "Do you see any missing limbs? Lizard tails? Bat wings? You think I'm hiding a 12 inch cock under this dress? No, I'm one of the few residents of Crescentheart who are still 100% pure human with all the original parts, and no hidden extras. And I'd prefer to keep it that way, thank you." <!-- Unlocks -->\ <<set $PC[$CC][$PCSeleneChat][11] to 1>><!-- how does transformation happen also unlocked by 11 -->\ <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCSeleneChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mentioned spellbooks and potions. What can you tell me about those?" @@color:Red;Selene@@: "For those with the brainpower, reading a spellbook will teach you how to directly cast a spell. For those with more gold than brains, potions are almost as good. Sometimes. It depends. You can still drink a healing potion when you're out of mana, but you're probably better off casting an explosive fire spell than drinking an explosive fire potion. Plus, potions take up space and mana doesn't. Ideally of course you'd have both spells and potions available, but not everyone can be a mage. Or a witch for that matter. But anyone can chug a potion. At least I assume so. I've never seen anyone transformed so badly they no longer had a mouth, but I suppose it's possible." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How smart do you have to be to learn magic?" @@color:Red;Selene@@: "Well, technically any idiot can learn, but you'll need at least a certain amount of intellect to be any good at it. Though you can partially make up for mental deficiency by repeated readings. Every time you re-read the same spellbook you'll get a tiny better at the spell. But spellbooks disintegrate on reading, so it's hard to get very much stronger that way." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Where can I find spellbooks?" <!-- implement spellbook quest check to adjust dialogue here-->\ @@color:Red;Selene@@: "I sell them occasionally, but I'm currently out of stock. Most adventurers find them in the tower. Every now and then you'll find an old bookcase in one of the larger rooms. Be sure to raid those when you get the chance. Whether or not you're cut out to be a wizard, you can always sell them or save them for later. Or give them to a friend if you have any." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about potions?" @@color:Red;Selene@@: "I make them myself. Unfortunately I'm out of materials. I don't suppose you'd be willing to do a witch a favor and go hunting up some alchemical reagents?" <!-- Unlocks -->\ <<set $PC[$CC][$PCSeleneChat][6] to 1>><!-- Offer to help with ingredients -->\ <<elseif _CurrentQuestion is 4>>\ <<set $PC[$CC][$PCSeleneChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why did they burn down your hut?" @@color:Red;Selene@@: "I never got a very good explanation for that," she shrugs. "Probably just superstitious yokels afraid of me for being a witch. Though it probably didn't help matters any that I turned that one excessively handsy-guy into a salamander. Or I suppose it might have something to do with that thousand gold I borrowed from the orphanage." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I don't recall seeing an orphanage in town." @@color:Red;Selene@@: "Unfortunately it burned down later that night. Breaks my heart, all those poor orphans. May their souls rest in peace knowing that the money in their food and clothing fund was put to good use." <!-- Unlocks -->\ <<set $PC[$CC][$PCSeleneChat][5] to 1>><!-- Did you seriously burn down an orphange? -->\ <<elseif _CurrentQuestion is 5>>\ <<set $PC[$CC][$PCSeleneChat][5] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Did you seriously burn down an orphanage?" @@color:Red;Selene@@: "No, of course not," she seems annoyed by the question. "It was a complete coincidence, and nobody survived to identify me, so don't listen to anyone who says otherwise." <<elseif _CurrentQuestion is 6>>\ <<set $PC[$CC][$PCSeleneChat][6] to 2>>\ <<for _SQ to 0; _SQ < $WORLD.SeleneQuests.length; _SQ++>>\ <<if $WORLD.SeleneQuests[_SQ] is 0>>\ <<set $WORLD.SeleneQuests[_SQ] to 1>>\ <<endif>>\ <</for>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, I'd love to help you procure some reagents" @@color:Red;Selene@@: "Really?" she seems surprised, but quickly recovers. "Great! I'd been getting herbs from the southern caravan, but with that gone our only option is to find local sources. Unfortunately I can't even tell you what's out there, let alone what I'd be able to make from it. I suggest you start by exploring the forest to the west of town, and bringing me any sort of flower or plant you can. I'll figure out the rest from there." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You're an alchemist but you don't even know what the local plants do?" @@color:Red;Selene@@: "I'm a //witch//," she corrects you. "And a beautiful one at that. A beautiful witch who is not an adventurer and who wants very much to not get gang-raped by forest monsters and start growing dog ears and rabbit penises out of my face. That forest is dangerous, and if you even manage to come back at all, odds are good you'll come back a horrible mutant. But that's a risk I'm willing to take." <<elseif _CurrentQuestion is 7>>\ <<set $PC[$CC][$PCSeleneChat][7] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about the magic of the tower?" @@color:Red;Selene@@: "I only know the mythology behind it. When the Goddess of Primal Darkness made contact with the lower realms. From out her infinite depths, possibilities that had been unmanifest became realized, and our entire world was born. The tower is suppose to be the point of contact through which that change was inducted." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is any of that true?" @@color:Red;Selene@@: "Who knows? If it happened at all, it was thousands of years before I was born. The transformation magic is obviously real so there's probably something to it, but a thousand years is a long time for important details to get changed around through repeated tellings. Anyway, the top of the tower is supposed to house a shrine that's the closest you can get to the Goddess without dying, and right on the edge is where the greatest potential for transformation is supposed to be. Rather than just picking up body parts, supposedly you can ascend to a higher state of being entirely." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mean, become a god?" @@color:Red;Selene@@: "So they say," she nods, then shrugs. "But if anyone knows the truth, they haven't come back to tell their good friend Selene about it." <<elseif _CurrentQuestion is 8>>\ <<set $PC[$CC][$PCSeleneChat][8] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Red;Selene@@: "" <<elseif _CurrentQuestion is 9>>\ <<set $PC[$CC][$PCSeleneChat][9] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Red;Selene@@: "" <<elseif _CurrentQuestion is 10>>\ <<set $PC[$CC][$PCSeleneChat][10] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about the monsters of the land?" @@color:Red;Selene@@: "Which, the tower monsters or the forest monsters?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Both?" @@color:Red;Selene@@: "Different breeds entirely," she shrugs. "Forest 'monsters' are mostly people who've been transformed into half-human/half-animal hybrids by local magic. Bunny-girls, centaurs, fox and wolf men and the like. Sometimes you'll find fairly normal animals that are the base forms from which these transformations happen. Ordinary horses and wolves for example. The magic emanating from the tower affects them as much as anybody. But they can't climb the tower to seek it out so they try to ascend in the next best way: though sexual exchange with higher forms, like humans. You get animal parts and they get...something, probably. At least that's my theory." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And what about tower monsters?" @@color:Red;Selene@@: "They're actual monsters. Far more dangerous." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Like what?" @@color:Red;Selene@@: "Goblins, slimes, tentacle monsters, minotaurs, you name it. The higher levels house actual demons. Or so I've been told. You wouldn't catch me setting foot in there, so I can only repeat what my customers tell me. I suppose maybe it's actually a huge garden party in there with free beer and biscuits, and everyone's been lying to me this whole time. But I doubt it." <!-- Unlocks -->\ <<set $PC[$CC][$PCSeleneChat][7] to 1>><!-- ascention magic of the tower -->\ <<set $PC[$CC][$PCSeleneChat][11] to 1>><!-- how does transformation happen also unlocked by 2 -->\ <<elseif _CurrentQuestion is 11>>\ <<set $PC[$CC][$PCSeleneChat][11] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How does transformation work? What causes it?" @@color:Red;Selene@@: "Why so interested?" she frowns at you. "You're not planning on doing it yourself, are you?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...I just want to know more about how it all works. I'm planning on climbing the tower, so the more information I have the better my chances of survival." @@color:Red;Selene@@: "Right," she seems unconvinced but continues anyway. "Mostly it's caused by sex and food. But not just any sex. You can sex up any monster you like without transforming, but if you're raped by one, they have a good chance of making you a little bit like they are." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So let's say I fight the exact same monster twice and win once and lose once. If it rapes me I'll be transformed, but if I rape it back I get off totally scot free?" @@color:Red;Selene@@: "Yes," she nods. "Don't ask me why. Nobody knows. And it doesn't matter what sex is doing the raping, so it's not about simple fluid exchange. Maybe there's some royal court wizard out there who could explain the magic better, but I'm just a hedge witch. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And food?" @@color:Red;Selene@@: "If you eat or drink a part of a monster...meat, semen or breast milk typically, that will transform you instantly in some way, no sex required." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So blowjobs are dangerous?" @@color:Red;Selene@@: "No, not like that," she shakes her head. "Fluids consumed during sex are safe provided you won the battle that led up to the encounter. But meat or fluids taken and consumed later will cause transformation. I sell bottles to collect fluids if you're interested. Or you can probably find a butcher knife from somebody else if that's more to your taste. Meat has the advantage that it also reduces hunger. I don't recommend transforming if you can avoid it, but it probably beats starving to death." <<elseif _CurrentQuestion is 12>>\ <<set $PC[$CC][$PCSeleneChat][12] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "how would I find out more about the monsters?" @@color:Red;Selene@@: "I would love to answer that question. But it hasn't been implemented by the developer yet, so I can't help you." <<elseif _CurrentQuestion is 13>>\ <<set $PC[$CC][$PCSeleneChat][13] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Red;Selene@@: "" <<endif>>\ <<elseif $WORLD.selene is 2>>\ <<set _ExitLinks to "store">>\ @@color:Red;Selene@@: "Anything else I can do for you?" <<if _ChatAvailable is false>>\ c) No chats available <<else>>\ <span id="KeypC">\ <<link "c) chat with Selene" "StoreSelene">>\ <<set $WORLD.selene to 1>>\ <<set $WORLD.datapasser to 0>>\ <</link>> </span>\ <<endif>>\ <<elseif $WORLD.selene is 3>>\ <<set $WORLD.selene to 2>>\ <<set _ExitLinks to "continue">>\ <<set _WhichHerb to "error">>\ <<for _i to ($WORLD.SeleneQuests.length -1); _i > -1; _i-->>\ <<if $WORLD.SeleneQuests[_i] is 2>>\ <<set _WhichHerb to _i>>\ <<endif>>\ <</for>>\ \ <<set $WORLD.SeleneQuests[_WhichHerb] to 3>>\ <<Restock "selene">>\ \ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey Selene. I have some kind of forest plant for you." <<if _WhichHerb is 0>>\ @@color:Red;Selene@@: "Daisies?" she looks over the white flowers. "These are pretty common in a lot of places. Nothing special, but I should be able to make various hair dyes out of them. It's an easy recipe, so I should be able to start stocking them right away." <<elseif _WhichHerb is 1>>\ <<if $PC[$CC][$PCsex] is "female">>\ @@color:Red;Selene@@: "I think that's Skretch Grass," she blinks. "I can make a couple things out of it, but it's most well-known as the base ingredient for fertility agents." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What would those do?" @@color:Red;Selene@@: "Make it easy for you to become pregnant." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh." @@color:Red;Selene@@: "I'll go ahead and start stocking Fertili-tea just in case you want to get knocked up by a horny boar or something." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I, uhh...really don't think i'd be interested in that." @@color:Red;Selene@@: "You wouldn't?" she tilts her head. "Well, that's no problem. It also makes a pretty decent aphrodisiac. So if any horny boars come by, I'll be able to sell them something that will help them convince you to spread your legs and beg them to breed you full of little boar babies." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wait, what? Who's side are you even on?" @@color:Red;Selene@@: "Mine!" she smiles. "This will make me a lot of money. Thanks." <<else>>\ @@color:Red;Selene@@: "I think that's Skretch Grass" she frowns. "Not very much I can do with that besides, well...there is //one// thing I can make, but you probably wouldn't be interested." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's that?" @@color:Red;Selene@@: "A fertility-enhancing drink to help girls get pregnant. It won't do anything for a man though. Probably. I think. To be fair I've never known anyone to test it, but I don't recommend it." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Isn't there anything else you can do with it? Seems like a waste." @@color:Red;Selene@@: "Could probably make something that would reverse the effect and turn it into a contraceptive." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I already can't become pregnant on account of not being a woman." @@color:Red;Selene@@: "Right. Well, what about an aphrodisiac? Monsters can pick up on the scent of a girl in heat. I bet I could make an ointment that would reproduce that scent." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So they'll try to rape me?" @@color:Red;Selene@@: "Well, get out there and bring me something else if you don't like it." <<endif>>\ <br>@@color:Yellow;Dev note:@@ pregnancy is very much planned, but not implemented in the current version of the game. <<elseif _WhichHerb is 2>><!-- sunflowers -->\ @@color:Red;Selene@@: "Sunflowers?" she quirks up one eyebrow. "In this town, why am I not surprised?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What do you mean?" @@color:Red;Selene@@: "I can use sunflowers to make a bunch of things, but most of them are body cosmetics. Penis growth, breast reduction, that sort of thing." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's nice and all, but how will that help me climb the tower?" @@color:Red;Selene@@: "It probably won't," she admits. "Although you might find it useful if you're planning to tease rather than beat monsters into submission I suppose." <<elseif _WhichHerb is 3>>\ @@color:Red;Selene@@: "Red roses?" she frowns. "That's going to be difficult." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's the matter? Are they not useful?" @@color:Red;Selene@@: "No, they're certainly useful. Rose petals area crucial ingredient in various types of resistence potions. They don't last very long, but they reduce the amount of damage you take from various effects. Fire and magic primarily." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That sounds great. What's the catch?" @@color:Red;Selene@@: "The other ingredients are expensive and a little hard to come by. I'll start brewing them, but I probably won't be able to make very many of them. You should probably plan to use them sparingly." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Shouldn't be a problem. Fire and magic attacks don't seem to be very common." <<elseif _WhichHerb is 4>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Selene. What can you do with these?" @@color:Red;Selene@@: "Goose berries?" she smiles then pops one into her mouth. "They make fantastic smoothies." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I was thinking more in terms of potions." @@color:Red;Selene@@: "Oh," she seems disappointed. "Well, they do make a pretty good antivenom I suppose." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That sounds like a real winner." @@color:Red;Selene@@: "Yes, but they taste a lot better raw than they do in potions," she sneaks a few more into her mouth before firing up her cauldron. <<elseif _WhichHerb is 5>><!-- brown mushrooms -->\ @@color:Red;Selene@@: "Oh, are those hazorgoth brown mushrooms?" she seems very interested. "These are excellent. I can make a pretty adequate healing potion out of these." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Only adequate?" @@color:Red;Selene@@: "Would you prefer inadequate? I could dilute them down if you'd like." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, no...adequate is ok I guess." @@color:Red;Selene@@: "Great! I'll get started right away." <<elseif _WhichHerb is 6>>\ @@color:Red;Selene@@: "Weather glass? Thanks for bringing me this flower, but a potion for it hasn't been implemented yet." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, that's a little sad. " <<elseif _WhichHerb is 7>>\ @@color:Red;Selene@@: "Unnamed flower 8 has not been implemented!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, that's a little sad. " <<elseif _WhichHerb is 8>>\ @@color:Red;Selene@@: "Unnamed flower 9 has not been implemented!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, that's a little sad. " <<elseif _WhichHerb is 9>>\ @@color:Red;Selene@@: "Unnamed flower 10 has not been implemented!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, that's a little sad. " <<else>>\ @@color:Red;Error: herb is _WhichHerb <<endif>>\ \ <<set _AchieveCheck to true>>\ <<for _i to 0; _i < 6; _i++>>\ <<if $WORLD.SeleneQuests[_i] < 3>>\ <<set _AchieveCheck to false>>\ <<endif>>\ <</for>>\ <<if _AchieveCheck is true>>\ <<AwardAchievement "Potionmaster">>\ <<endif>>\ <<endif>>\ <hr>\ \ \ \ <<if _ExitLinks is "base">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm just here to shop, thanks" "StoreSelene">> <<set $WORLD.selene to 2>>\ <<AdvanceTime 5>> <</link>>\ </span> <<elseif _ExitLinks is "continue">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "StoreSelene">> <<set $WORLD.selene to 2>>\ <<AdvanceTime 5>> <</link>>\ </span> <<set _ReagentCheck to false>>\ <<for _i to 0; _i < $WORLD.SeleneQuests.length; _i++>>\ <<if $WORLD.SeleneQuests[_i] is 2>>\ <<set _ReagentCheck to true>>\ <<endif>>\ <</for>>\ <<if _ReagentCheck is true>>\ <span id="KeypH">\ <<link "h) Turn in alchemical herbs" "StoreSelene">> <<set $WORLD.selene to 3>>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<endif>>\ <<elseif _ExitLinks is "questions">>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <<for _i to 0; _i < $PC[$CC][$PCSeleneChat].length; _i++>>\ <<if $PC[$CC][$PCSeleneChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Introduce yourself">>\ <<set _QuestionPool[1] to "Ask her about herself">>\ <<set _QuestionPool[2] to "Ask about the tower">>\ <<set _QuestionPool[3] to "Ask about her wares">>\ <<set _QuestionPool[4] to "Ask about her hut being burned down">>\ <<set _QuestionPool[5] to "Ask if she burned down the orphanage">>\ <<set _QuestionPool[6] to "Accept her offer to help procure reagents">>\ <<set _QuestionPool[7] to "Ask about the ascension magic of the tower">>\ <<set _QuestionPool[8] to "question 8">>\ <<set _QuestionPool[9] to "question 9">>\ <<set _QuestionPool[10] to "Ask about monsters">>\ <<set _QuestionPool[11] to "Ask about transformation">>\ <<set _QuestionPool[12] to "(not implemented)">>\ <<set _QuestionPool[13] to "question 13">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done asking questions for now" "StoreSelene">> <<set $WORLD.selene to 2>> <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StoreSelene">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<elseif _ExitLinks is "store">>\ <<Store $Selene>> <<if $DebugMode is true>>\ debug: <<for _i to 0; _i < $STORE[_s].length; _i++>>\ _i) <<print $STORE[$Selene][_i]>> <</for>>\ <<endif>>\ <<endif>>\ \ <<if $DebugMode is true>>\ <hr>\ debug 1: SeleneChat is: <<print $PC[$CC][$PCSeleneChat]>> 2: AsktheseQs is: <<print _AskTheseQuestions>> <hr>\ <<endif>>\ <<set _ChatAvailable to false>>\ <<for _i to 0; _i < $PC[$CC][$PCSkittersChat].length; _i++>>\ <<if $PC[$CC][$PCSkittersChat][_i] is 1>>\ <<set _ChatAvailable to true>>\ <<endif>>\ <</for>>\ <<if $PC[$CC][$PCSkittersChat][0] is 0>>\ <<set _ChatAvailable to true>>\ <<endif>>\ \ <<if $SkittersTalk is "yes">>\ <<SimplePic "skitters.png">>\ @@color:LightGreen;Pawnshop@@ <hr>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ \ <<if _CurrentQuestion is 0>>\ <<if $PC[$CC][$PCSkittersChat][0] is 0>>\ <<set $PC[$CC][$PCSkittersChat][0] to 2>>\ The shopkeeper here is an overweight man with tentacles for hands and a strangely serpentine neck. Seeing you approach to talk, he glances around nervously. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hi," you greet the proprieter. "I'm $PC[$CC][$PCname]." @@color:LightGreen;Shopkeeper@@: "Skitters," he replies with a clearly inhuman voice. "Can I get you anything?" <!-- Unlocks -->\ <<if $PC[$CC][$PCSkittersChat][1] is 0>>\ <<set $PC[$CC][$PCSkittersChat][1] to 1>><!-- Ask about his shop-->\ <<endif>>\ <<if $PC[$CC][$PCSkittersChat][2] is 0>>\ <<set $PC[$CC][$PCSkittersChat][2] to 1>><!-- Ask about his hands -->\ <<endif>>\ <<else>>\ @@color:LightGreen;Skitters@@: "Hello, <<print $PC[$CC][$PCname]>>. What can I do for you?" <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCSkittersChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Could you tell me about your shop? Looks like you don't have anything for sale." @@color:LightGreen;Skitters@@: "Only customers I get are adventurers looking to sell tower loot," he explains. "But words gets around pretty fast when I get my hands...er, well...tentacles...on anything good, and stock doesn't usually last long. The junk I mostly give to Gerard to smelt down for raw materials." <!-- unlocks -->\ <<if $PC[$CC][$PCSkittersChat][3] is 0>>\ <<set $PC[$CC][$PCSkittersChat][3] to 1>><!-- Ask about tower loot -->\ <<endif>>\ <<if $PC[$CC][$PCSkittersChat][4] is 0>>\ <<set $PC[$CC][$PCSkittersChat][4] to 1>><!-- Ask about Gerard -->\ <<endif>>\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCSkittersChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So uhh, what happened to your hands?" He sighs and shrugs, staring at them with clear discomfort. @@color:LightGreen;Skitters@@: "It's not that uncommon, really. Like lots of folks in town, I used to be an adventurer. Had a wish, so I tried to reach the Goddess' Shrine up top to get it granted. Instead I ended up with these. Trust me, it's not as bad as it could have been. It took some getting used to, but at least I still //have// hands. It could have been a fish or something that got me instead of tentacle monster." <<if $PC[$CC][$PCSkittersChat][5] is 0>>\ <<set $PC[$CC][$PCSkittersChat][5] to 1>><!-- Ask about the shrine-->\ <<endif>>\ <<if $PC[$CC][$PCSkittersChat][6] is 0>>\ <<set $PC[$CC][$PCSkittersChat][6] to 1>><!-- Ask about monsters-->\ <<endif>>\ <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCSkittersChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What exactly qualifies as 'quality' loot?" @@color:LightGreen;Skitters@@: "Better materials mostly. There's genuine magic gear in there, but nobody's made it high enough to bring any of that back in months. Best you'll probably see right now is ordinary steel and mithril, and even that's been rare lately. I suspect most everything people sell me is gear Gerard made himself at some point, then some poor fool died wearing it and a monster ended up with it." <!-- unlocks -->\ <<if $PC[$CC][$PCSkittersChat][8] is 0>>\ <<set $PC[$CC][$PCSkittersChat][8] to 1>> <<endif>>\ <<elseif _CurrentQuestion is 4>>\ <<set $PC[$CC][$PCSkittersChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Gerard?" @@color:LightGreen;Skitters@@: "Yeah, he's the blacksmith here in town. We used to be adventuring buddies back in the day. Us and Neris. Those two knew each other since forever, and they brought me onboard after they lost some other guy in some big battle. Made a pretty good team, the three of us. For a while anyway. They lasted a lot longer than I did. I wonder what happened to Neris, sometimes. Gerard doesn't like to talk about it. Anyway, yeah...people sell me stuff and if it's too banged up I send it his way." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What does he do with it?" @@color:LightGreen;Skitters@@: "Melts it down and forges new gear with it, mostly. There's been a supply shortage around here lately, and we've been having to make do. It's probably a big part of why most adventurers seem to be struggling on the lower floors right now. Deck yourself out in decent armor and a basic gobbo can't even scratch you. But copper and and brass are pretty soft, and that's the best most people can get their hands on right now." <<elseif _CurrentQuestion is 5>>\ <<set $PC[$CC][$PCSkittersChat][5] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So the Shrine of the Goddess, it grants wishes?" @@color:LightGreen;Skitters@@: "That's what the legend says," he shrugs. "At least some versions of it. The original story was written in Sythian, I think, and translations vary. It grants a wish, it turns you into your ideal version of your self, it turns you into a god...something like that. I wasn't too worried about the particulars. Sure, I had I wish a wanted granted, but if I'd ended up ascending to godhood instead, I doubt I'd have complained very much." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "But how do you know it's even something good up there at all? It's a shrine to a goddess of //darkness//, right? That doesn't sound very good to me." @@color:LightGreen;Skitters@@: "Don't ask me," he shrugs. "I'm just a failed adventure turned failing shopkeeper. But I figure where there's smoke, there's fire, and an awful lot of people seem pretty convinced there's something amazing in there past all the monsters." <<if $PC[$CC][$PCSkittersChat][7] is 0>>\ <<set $PC[$CC][$PCSkittersChat][7] to 1>>\ <<endif>>\ <<elseif _CurrentQuestion is 6>>\ <<set $PC[$CC][$PCSkittersChat][6] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So tentacle monsters? And fish? What else is in the tower?" @@color:LightGreen;Skitters@@: "No, fishes aren't in the tower. No water in there. At least, not as far as I ever made it. But the tower's magic extends far enough to hit the salt beaches down south. Every now and then somebody gets the bright idea to go for a swim, and it tends not to end well." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And the tower? @@color:LightGreen;Skitters@@: "The lower levels are mostly goblins and slimes. Nothing too bad. If a goblin gets you, it might turn you green but at least you'll keep all your same parts more or less. And slime transformations, yeah they look pretty weird, but they're sort of a special case and it's not as bad as you might think. Slimes in their natural state are just blobs to begin with, but they can change their shape so they generally take on human form to have an easier time seducing aventurers." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why?" @@color:LightGreen;Skitters@@: "They eat our sexual fluids for food," he explains. "They'd actually be pretty harmless if it weren't for the tower. Down south you'll even find them working in brothels. Doesn't make sense for them to hurt anybody when we're their source of food. It'd be like killing a dairy cow. Anyway, the tower magic, crazy as it is, is smart. It picks up on whatever form a slime takes on and you end up with that instead of just becoming a blob, so you keep your arms and legs. Usually." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And tentacle monsters?" @@color:LightGreen;Skitters@@: "Most of the time you have to go fairly high up to find those," he glances at his hands. "But every now and then something nasty gets bored and visits the lower floors. Me, I was injured after a battle with a minotaur, you'll find those just a couple floors up, and on my way back down I stumbled on a room with a nice, clean bed. Decided to take a nap to heal up, and woke up to a tentacle monster in bed with me. Didn't have the strength to fight it off and it, well...let's just say that's how I got my hands." <<elseif _CurrentQuestion is 7>>\ <<set $PC[$CC][$PCSkittersChat][7] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What was your wish?" @@color:LightGreen;Skitters@@: "There was a girl down south," he explains sadly. "We were engaged. Her family liked me, but, well..." He hides his hands in his pockets and sighs. @@color:LightGreen;Skitters@@: "It doesn't matter anymore." <<elseif _CurrentQuestion is 8>>\ <<set $PC[$CC][$PCSkittersChat][8] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why don't people make it as high up anymore? Is the tower more dangerous than it used to be?" @@color:LightGreen;Skitters@@: "I'm probably not the best person ask," he admits. "I'm a bit out of the loop, but a few of my customers have mentioned some sort of crazy boss monster from a higher floor that took residence closer to the ground real recently" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So everybody's bottlenecked? If somebody could beat it, then everybody would be able to climb higher again?" @@color:LightGreen;Skitters@@: "Sure, that'll probably happen sooner or later. The tower changes itself up from time to time. Just the nature of its magic. This isn't the first time something's happened that's kept people stuck on the lower floors. Probably won't be the last time either." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What was it last time? Another boss monster?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, the last bottleneck was when some sort of crazy chimeric monstrosity from the higher floors went on a lower level rampage. Contaminated all the easy monsters everybody had a handle on with high-powered magic. So for a while even ordinary goblins were running around breathing fire and shooting webs out their ass and things. Took a long time to clean up after that incident." <<else>>\ Error: unrecognized question: _CurrentQuestion <<endif>>\ <hr>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <!-- unlocked by external events -->\ <<if ($PC[$CC][$PCSkittersChat][11] is 0) and ($PC[$CC][$PChtze] > 4)>>\ <<set $PC[$CC][$PCSkittersChat][11] to 1>>\ <<endif>>\ \ <<for _i to 0; _i < $PC[$CC][$PCSkittersChat].length; _i++>>\ <<if $PC[$CC][$PCSkittersChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Introduce yourself">>\ <<set _QuestionPool[1] to "Ask about the shop">>\ <<set _QuestionPool[2] to "Ask about his hands">>\ <<set _QuestionPool[3] to "Ask about quality loot">>\ <<set _QuestionPool[4] to "Ask about Gerard">>\ <<set _QuestionPool[5] to "Ask about the shrine">>\ <<set _QuestionPool[6] to "Ask about monsters">>\ <<set _QuestionPool[7] to "What was your wish?">>\ <<set _QuestionPool[8] to "Why don't adventurers climb as high anymore?">>\ <<set _QuestionPool[9] to "">>\ <<set _QuestionPool[10] to "">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done talking for now" "StorePawn">> <<set $WORLD.gstore to 2>>\ <<AdvanceTime 5>> <<unset $SkittersTalk>>\ <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StorePawn">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<else>>\ <<SimplePic "skitters.png">>\ @@color:LightGreen;Pawnshope@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <<if _ChatAvailable is false>>\ c) No chats available <<elseif $PC[$CC][$PCSkittersChat][1] is 2>>\ <span id="KeypC">\ <<link "c) Chat with Skitters" "StorePawn">> <<set $SkittersTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<else>>\ <span id="KeypC">\ <<link "c) Chat with the shopkeeper" "StorePawn">> <<set $SkittersTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<endif>>\ <hr>\ <<Pawn>> <<endif>>\ <<if $DebugMode is true>>\ <hr>\ Skitters: <<print $PC[$CC][$PCSkittersChat]>> <<endif>>\@@color:Gold;Magic Circle@@ <hr>\ @@color:Gold;Navigation@@ <span id="KeypOne">\ <<link "1) Town square" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <hr> <<set _mon to $Mon.name>>\ <<set _wonby to "fight">>\ <<set _msex to $Mon.sex>>\ <<set _heshe to "she">>\ <<set _hisher to "her">>\ <<set _himher to "her">>\ <<set _mhasdick to false>>\ <<set _mhasboobs to false>>\ <<set _mhaspussy to false>>\ <<if _msex is "male">> <<set _msex to "m">>\ <<set _heshe to "he">>\ <<set _hisher to "his">>\ <<set _himher to "him">>\ <<set _mhasdick to true>>\ <<elseif _msex is "herm">>\ <<set _msex to "h">>\ <<set _mhasdick to true>>\ <<set _mhasboobs to true>>\ <<set _mhaspussy to true>>\ <<elseif _msex is "female">>\ <<set _msex to "f">>\ <<set _mhasboobs to true>>\ <<set _mhaspussy to true>>\ <<endif>>\ <<set _psex to $PC[$CC][$PCsex]>>\ <<set _phasdick to true>>\ <<set _phasboobs to false>>\ <<set _phaspussy to false>>\ <!-- implement: this should grab from body parts -->\ <<if _psex is "male">>\ <<set _psex to "m">>\ <<elseif _psex is "female">>\ <<set _phasdick to false>>\ <<set _phasboobs to true>>\ <<set _phaspussy to true>>\ <<set _psex to "f">>\ <<elseif _psex is "hermaphrodite">>\ <<set _phasdick to true>>\ <<set _phasboobs to true>>\ <<set _phaspussy to true>>\ <<set _psex to "h">>\ <<endif>>\ \ <<if _mon is "bunny">>\ <<include "VictoryBunny">>\ <<elseif _mon is "cat">>\ <<include "VictoryCat">>\ <<elseif _mon is "wolf">>\ <<include "VictoryWolf">>\ <<elseif _mon is "centaur">>\ <<include "VictoryCentaur">>\ <<elseif _mon is "goblin">>\ <<include "VictoryGoblin">>\ <<elseif _mon is "slime">>\ <<include "VictorySlime">>\ <<elseif _mon is "naga">>\ <<include "VictoryNaga">>\ <<elseif _mon is "spider">>\ <<include "VictorySpider">>\ <<elseif _mon is "">>\ <<include "Victory">>\ <<elseif _mon is "">>\ <<include "Victory">>\ <<elseif _mon is "">>\ <<include "Victory">>\ <<elseif _mon is "">>\ <<include "Victory">>\ <<elseif _mon is "">>\ <<include "Victory">>\ <<else>>\ Implement victory sex for _msex _mon <<endif>>\ \ <<if $DebugMode is true>>\ <hr> @@color:Gold;Debug immortality@@ <span id="KeypZ">\ <<link "z) Ressurect here" $ReturnFromMenu>> <<FullyHeal>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<set $WORLD.dialogue to 0>><<if $Mon.name.includes("Zehtalia")>>\ <<include "DefeatBoss">>\ <<elseif $Mon.name.includes("Neris")>>\ <<include "DefeatBoss">>\ <<else>>\ @@color:Gold;You have lost to a <<print $Mon.name>>!@@ <<set $WORLD.dialogue to 0>>\ <hr> <<set _mon to $Mon.morph>>\ <<set _wonby to "fight">>\ <<set _msex to $Mon.sex>>\ <<set _heshe to "she">>\ <<set _hisher to "her">>\ <<set _himher to "her">>\ <<set _mhasdick to false>>\ <<set _mhasboobs to false>>\ <<set _mhaspussy to false>>\ <<if _msex is "male">>\ <<set _msex to "m">>\ <<set _heshe to "he">>\ <<set _hisher to "his">>\ <<set _himher to "him">>\ <<set _hasdick to true>>\ <<elseif _msex is "herm">>\ <<set _msex to "h">>\ <<set _mhasdick to true>>\ <<set _mhasboobs to true>>\ <<set _mhaspussy to true>>\ <<elseif _msex is "female">>\ <<set _msex to "f">>\ <<set _hasboobs to true>>\ <<set _haspussy to true>>\ <<endif>>\ <<set _psex to $PC[$CC][$PCsex]>>\ <<set _phasdick to true>>\ <<set _phasboobs to false>>\ <<set _phaspussy to false>>\ <!-- implement: this should grab from body parts -->\ <<if _psex is "male">>\ <<set _psex to "m">>\ <<elseif _psex is "female">>\ <<set _phasdick to false>>\ <<set _phasboobs to true>>\ <<set _phaspussy to true>>\ <<set _psex to "f">>\ <<elseif _psex is "hermaphrodite">>\ <<set _phasdick to true>>\ <<set _phasboobs to true>>\ <<set _phaspussy to true>>\ <<set _psex to "h">>\ <<endif>>\ \ <<if _mon is "bunny">>\ <<include "DefeatBunny">>\ <<elseif _mon is "cat">>\ <<include "DefeatCat">>\ <<elseif _mon is "wolf">>\ <<include "DefeatWolf">>\ <<elseif _mon is "wolfquad">>\ <<include "DefeatWolfquad">>\ <<elseif _mon is "fox">>\ <<include "DefeatFox">>\ <<elseif _mon is "horse">>\ <<include "DefeatHorse">>\ <<elseif _mon is "snake">>\ <<include "DefeatSnake">>\ <<elseif _mon is "centaur">>\ <<include "DefeatCentaur">>\ <<elseif _mon is "human">>\ <<include "DefeatHuman">>\ <<elseif _mon is "goblin">>\ <<include "DefeatGoblin">>\ <<elseif _mon is "slime">>\ <<include "DefeatSlime">>\ <<elseif _mon is "naga">>\ <<include "DefeatNaga">>\ <<elseif _mon is "spider">>\ <<include "DefeatSpider">>\ <<elseif _mon is "imp">>\ <<include "DefeatImp">>\ <<elseif _mon is "hellhound">>\ <<include "DefeatHellhound">>\ <<elseif _mon is "cow" or _mon is "minotaur">>\ <<include "DefeatMinotaur">>\ <<elseif _mon is "drider">>\ <<include "DefeatDrider">>\ <<elseif _mon is "tentacle">>\ <<include "DefeatTentacle">>\ <<elseif _mon is "demon">>\ <<include "DefeatDemon">>\ <<elseif _mon is "Charyss">>\ <<include "DefeatDemon">>\ <<elseif _mon is "ant">>\ <<include "DefeatAnt">>\ <<elseif _mon is "scorpion">>\ <<include "DefeatScorpion">>\ <<elseif _mon is "harpy">>\ <<include "DefeatHarpy">>\ <<elseif _mon is "ratkin">>\ <<include "DefeatRatkin">>\ <<elseif _mon is "hydra">>\ <<include "DefeatHydra">>\ <<elseif _mon is "troll">>\ <<include "DefeatTroll">>\ <<else>>\ Implement defeat sex for _msex _mon <<endif>>\ <<endif>>\ <<if $DebugMode is true>>\ <hr> @@color:Gold;Debug options@@ <span id="KeypD">\ <<link "d) Stay here after combat" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<widget "GainPerksFromAchievements">>\ <<for _i to 0; _i < _achieves.length; _i++>>\ <<if $Achievements[_i] is true>>\ <<if _achieves[_i].type is "perkpoints">>\ <<set _availperks to _availperks +1>>\ <<elseif _achieves[_i].type is "perm">>\ <<GainPerk _achieves.name>>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "GainPerk">>\ <<set $PC[$CC][$PCperks][$PC[$CC][$PCperks].length] to $args[0]>>\ <</widget>>\ <<widget "HasAchievement">>\ <<set _ha to $args[0]>>\ <<GrabData "achievements">>\ <<set $MiscPoke to false>>\ <<for _i to 0; _i < _achieves.length; _i++>>\ <<if _achieves[_i].name is _ha>>\ <<if $Achievements[_achieves.id] > 0>>\ <<set $MiscPoke to $Achievements[_achieves.id]>>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "TrapAchieveTester">>\ <<if $args[0] is "avoid">>\ <<set $PC[$CC][$PCmisc].trapavoid to $PC[$CC][$PCmisc].trapavoid +1>>\ <<if $PC[$CC][$PCmisc].trapavoid > 2>>\ <<AwardAchievement "Rogue">>\ <<endif>>\ <<elseif $args[0] is "trigger">>\ <<set $PC[$CC][$PCmisc].traptrigger to $PC[$CC][$PCmisc].traptrigger +1>>\ <<AwardAchievement "Trapmaster">>\ <<else>>\ @@color:Red;Error in TrapAchieveTester: <<print $args[0]>>\ <<endif>>\ <</widget>>\ <<widget "AwardAchievement">>\ <<set _awa to setup.AchievementHandler($args[0], "FETCH", -1)>>\ <<set _aID to _awa[0]>>\ <<if _aID > -1>>\ <<set _PChas to $Achievements[_aID]>>\ <<if _PChas is 0>>\ <<set $Achievements[_aID] to 1>>\ <br>@@color:Gold;Achievement earned!@@: $args[0] <<if _awa[1].type is "perk">>(Perk) <<endif>><<print _awa[1].does>> <<else>>\ <!-- player already has --> <<endif>>\ <<else>>\ @@color:Red;Error in AwardAchievement: $args[0] not found@@ <<endif>>\ <</widget>>\ <<widget "AwardIntegerAchievement">>\ <<set _awa to $args[0]>>\ <<set _NewMaxValue to $args[1]>>\ <<GrabData "achievements">>\ <<set _foo to -1>>\ <<for _i to 0; _i < _achieves.length; _i++>>\ <<if _achieves[_i].name is _awa>>\ <<set _foo to _achieves.id>>\ <<endif>>\ <</for>>\ <<if _foo < 0>>\ @@color:Red;Error in AwardAchievement: id:<<print _awa>> not found!! <<else>>\ <<if $Achievements[_foo] is 0>>\ <<set $Achievements[_foo] to 1>>\ <br><br>@@color:Gold;Achievement earned!@@: _awa is level _NewMaxValue <<print _achieves[_foo].desc>>\ <br><br>\ <<elseif _NewMaxValue > $Achievements[_foo]>>\ <<set $Achievements[_foo] to _NewMaxValue>>\ <br><br>@@color:Gold;Achievement upgraded!@@: _awa is now level _NewMaxValue <<print _achieves[_foo].desc>>\ <br><br>\ <<endif>>\ <<endif>>\ <</widget>>\ <<widget "GrabData">>\ <<silently>>\ <!-- NOTE: setup . PtrToClass is hard-coded -->\ <<if $args[0] is "class">> <<set _classes to []>>\ <<set _classes[0] to { name: "Lumberjack", show: "Cut trees at one extra axe level", hint: "Help the town to grow", hide: "Progress through the town builder quests", aptr: 0 }>>\ <<set _classes[1] to { name: "Prostitute", show: "+5% to flirt actions, both giving and receiving", hint: "Prove yourself as a seductress", hide: "Win 10 victories by flirting", aptr: 1 }>>\ <<set _classes[2] to { name: "Warrior", show: "+1 to melee damage", hint: "Try out different weapons", hide: "Win a battle with each major weapon type", aptr: 2 }>>\ <<set _classes[3] to { name: "Scholar", show: "+1 to intellect", hint: "Read a book", hide: "Learn any spell", aptr: 3 }>>\ <<set _classes[4] to { name: "Priest", show: "Starts with a holy symbol. +1 to willpower.", hint: "Cleanse the land of the impure", hide: "Defeat and kill a demon", aptr: 4 }>>\ <<set _classes[5] to { name: "Rogue", show: "Reduce base difficulty of all traps by 3 dungeon levels", hint: "Demonstrate a talent for avoiding traps", hide: "Succesfully avoid 3 traps in one life.", aptr: 5 }>>\ <<set _classes[6] to { name: "Mage", show: "Start with a spell unlocked. +1 intellect.", hint: "Learn all the magic", hide: "Know every spell at once", aptr: 6 }>>\ <<set _classes[7] to { name: "Barbarian", show: "+1 damage absoprtion", hint: "Fight while deep and naked. Win.", hide: "Defeat a monster on level 3 while naked", aptr: 7 }>>\ <<set _classes[8] to { name: "Monk", show: "+1 to all base stats", hint: "Compasionately master the art of the fist", hide: "Defeat a monster on level 3, while unarmed, having never raped or killed any opponent.", aptr: 8 }>>\ <<set _classes[9] to { name: "Ninja", show: "Starts with a sword. +5% to critical strike chance.", hint: "Only the deadliest of rogues will learn this", hide: "As a rogue, one-shot a monster before it can attack.", aptr: 9 }>>\ <<set _classes[10] to { name: "Paladin", show: "Starts with holy symbol and sword. +1 willpower. Immune to transformation", hint: "Only the purest of heart will achieve this. 777.", hide: "Reach level 7 while still a virgin, having previously reached level 7 as both warrior and priest.", aptr: 10 }>>\ <<set _classes[11] to { name: "Guardian", show: "Very durable", hint: "Become very tough", hide: "Reach 200 maximum health", aptr: 11 }>>\ <<elseif $args[0] is "achievements">> <<set _achieves to []>> <<set _acount to 0>> <<set _achieves[_acount] to { name: "Genetic Lottery", desc: "Descibe genetic lottery", type: "perk", gain: "Gain +2 stat points. Applied after character creation.", hint: "Highly focused attributes might help", clue: "Raise any one stat to 20 or more", id: 0 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Rich", desc: "Describe rich", type: "perk", gain: "Start with an extra 100 gold", hint: "You don't need to carry it with you", clue: "Have 1000 gold", id: 1 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Greedy", desc: "Describe greedy", type: "perk", gain: "Gain +10% to all gold drops", hint: "Like rich, but more", clue: "Deposit 10,000 gold into the bank. Oh, and unlock the bank.", id: 2 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Starve to death", desc: "Exactly what it says on the tin", type: "perm", gain: "Start every new game with some food", hint: "Self explanatory", clue: "Starve to death", id: 3 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Guildmaster", desc: "Describe guildmaster", type: "perm", gain: "+1 to max stat spread on character creation", hint: "Rina might be able to help with this", clue: "Complete all tutorial quests", id: 4 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Gamemaster", desc: "Describe gamemaster", type: "perm", gain: "+1 to max stat spread on character creation", hint: "Rina might be able to help with this with this too", clue: "Complete all guild quests", id: 5 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Potionmaster", desc: "Describe potionmaster", type: "perm", gain: "+1 to max stat spread on character creation", hint: "Selene might be able to help with this", clue: "Complete all of Selene's quests", id: 6 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Metal master", desc: "Describe metal master", type: "perm", gain: "+1 to max stat spread on character creation", hint: "The blacksmith might be able to help with this", clue: "Complete every blacksmithing quest", id: 7 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Monster tourism", desc: "Defeat every monster type at least once", type: "perk", gain: "Implement: What does this do?", hint: "How many monsters are there?", clue: "Defeat every monster type at least once", id: 8 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Playing both sides", desc: "Describe this acheivement", type: "sex", gain: "Unlocks the hermaphrodite starting sex", hint: "Play both sides to learn the middle", clue: "Have a sexual encounter as both sexes on the same character", id: 9 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Archeologist", desc: "Describe archeologist", type: "perk", gain: "Gain an extra guaranteed treasure event every level", hint: "Find more treasure", clue: "Succesfully complete 2 treasure events in a single lifetime", id: 10 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Trapmaster", desc: "Descibe trapmaster", type: "perk", gain: "Gain a second 10% chance to avoid any triggered trap", hint: "Trigger a trap", clue: "Trigger a trap", id: 11 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Explorer", desc: "Increased map view radius", type: "perk", gain: "Increased map view radius", hint: "Leave no stone unturned", clue: "Explore every zone of 3 dungeon levels", id: 12 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Pacifist", desc: "Describe", type: "perk", gain: "Gain +1 damage absorbtion, but -1 to melee damage", hint: "How far can you get without hurting anything?", clue: "Clear the level 5 dungeon event having never killed any opponent", id: 13 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Durable", desc: "Makes you harder to kill", type: "perk", gain: "Take -1 damage from all physical attacks", hint: "Fatal attraction", clue: "Die during a sexual encounter", id: 14 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Fertile", desc: "Describe fertile", type: "perk", gain: "Increased pregnancy chance", hint: "I'm sure lots of monsters would love to help you earn this achievement", clue: "Give birth", id: 15 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Barren", desc: "Describe barren", type: "perk", gain: "You will be incapable of becoming pregnant.", hint: "Change your mind", clue: "Terminate a pregnancy", id: 16 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Breeder", desc: "Describe breeder", type: "perk", gain: "Cuts all pregnancy times in half", hint: "Where once may fail, many succeeds!", clue: "Give birth 3 times in a single game", id: 17 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Reserved 1", desc: "Dungeon perk 1", type: "perk", gain: "Reserved", hint: "25%", clue: "Clear the level 5 dungeon event", id: 18 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Reserved 2", desc: "Dungeon perk 2", type: "perk", gain: "Reserved", hint: "50%", clue: "Clear the level 10 dungeon event", id: 19 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Reserved 3", desc: "Dungeon perk 3", type: "perk", gain: "Reserved", hint: "75%", clue: "Clear the level 15 dungeon event", id: 20 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Reserved 4", desc: "Dungeon perk 4", type: "perk", gain: "Reserved", hint: "100%", clue: "Clear the level 20 dungeon event", id: 21 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Power Leveler", desc: "Describe power leveler", type: "perm", gain: "+1 experience earned every battle", hint: "Reach level 10 in any class", clue: "Reach level 10 in any class", id: 22 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Jack of All Stats", desc: "Describe jack of all stats", type: "perm", gain: "+1 stat point to all new characters", hint: "And pretty much a master of them too", clue: "Reach 12 in every primary stat", id: 23 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "I feel your loss", desc: "Describe I feel your loess", type: "perm", gain: "Unlock the second character slot", hint: "Lose something important", clue: "Have a character of at least level 3, die", id: 24 }>>\ <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Three's Company", desc: "Describe three's company", type: "perm", gain: "Unlock the third character slot", hint: "What would be even worse that dying?", clue: "Delete a character of at least level 7", id: 25 }>>\ *********************************** <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Lumberjack", desc: "Starts with a hatchet. Gains extra wood when harvesting.", type: "class", gain: "Unlocks the lumberjack starting profession", hint: "Help the town to grow", clue: "Progress through the town builder quests", id: 26 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Prostitute", desc: "+5% to flirt actions, both giving and receiving", type: "class", gain: "Unlocks the prostitute starting profession", hint: "Do unto others, and be done unto. Emphasis on doing.", clue: "Both raped and be raped after combat in a single run", id: 27 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Warrior", desc: "+1 to melee damage", type: "class", gain: "Unlocks the warrior starting profession", hint: "Try out different weapons", clue: "Win a battle with each major weapon type", id: 28 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Scholar", desc: "+1 to intellect", type: "class", gain: "Unlocks the scholar starting profession", hint: "Read a book", clue: "Learn any spell", id: 29 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Priest", desc: "Starts with the heal spell unlocked. +1 to willpower.", type: "class", gain: "Unlocks the priest starting profession", hint: "Cleanse the land of the impure", clue: "Defeat and kill a demon", id: 30 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Rogue", desc: "Start with rope and lockpicks. +1 dexterity.", type: "class", gain: "Unlocks the rogue starting profession", hint: "Don't fall for traps", clue: "Succesfully avoid 3 traps in one life.", id: 31 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Mage", desc: "Start with the fireball spell unlocked. +1 intellect.", type: "class", gain: "Unlocks the mage starting profession", hint: "Become a competant scholar", clue: "Know every spell at once", id: 32 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Barbarian", desc: "Every empty equippable armot slot gives +5 armor", type: "class", gain: "Unlocks the barbarian starting profession", hint: "Fight while deep and naked. Win.", clue: "Defeat a monster on level 3 while naked", id: 33 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Monk", desc: "+1 to all base stats, but start out poor an", type: "class", gain: "Unlocks the monk starting profession", hint: "Compasionately master the art of the fist", clue: "Defeat a monster of at least level 3, unarmed, having neve raped or killed an opponent.", id: 34 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Ninja", desc: "Starts with a sword. +5% to critical strike chance.", type: "class", gain: "Unlocks the ninja starting profession", hint: "Only the swiftest of rogues will learn this", clue: "As a rogue, one-shot a tower monster before it can attack.", id: 35 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Paladin", desc: "Starts with holy symbol and sword. +1 willpower. Immune to transformation", type: "class", gain: "Unlocks the paladin starting profession", hint: "Only the purest of heart will achieve this: 777", clue: "Reach level 7 while still a virgin, having previously reached level 7 as both warrior and priest.", id: 36 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Guardian", desc: "Very durable", type: "class", gain: "Unlocks the guardian starting profession", hint: "Become very tough", clue: "Reach 200 maximum health", id: 37 }>> *********************************** <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Peasant Proficiency", desc: "Reach level 7 as a peasant", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a peasant", clue: "Reach level 7 as a peasant", id: 38 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Lumberjacked up!", desc: "Reach level 7 as a lumberjack", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a lumberjack", clue: "Reach level 7 as a lumberjack", id: 39 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "World's Oldest Professon", desc: "describe", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a prostitute", clue: "Reach level 7 as a prostitute", id: 40 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Swords and spears", desc: "Reach level 7 as a warrior", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a warrior", clue: "Reach level 7 as a warrior", id: 41 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Scholarly pursuits", desc: "Reach level 7 as a scholar", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a scholar", clue: "Reach level 7 as a scholar", id: 42 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Parson", desc: "Reach level 7 as a priest", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a priest", clue: "Reach level 7 as a priest", id: 43 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Sneaky McSneakerson", desc: "Reach level 7 as a rogue", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a rogue", clue: "Reach level 7 as a rogue", id: 44 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Magiferous Magery", desc: "Reach level 7 as a mage", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a mage", clue: "Reach level 7 as a mage", id: 45 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Driven Before You", desc: "Reach level 7 as a barbarian", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a barbarian", clue: "Reach level 7 as a barbarian", id: 46 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Peace in the calm of the horny", desc: "Reach level 7 as a monk", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a monk", clue: "Reach level 7 as a monk", id: 47 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Stabby Stealther", desc: "Reach level 7 as a ninja", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a ninja", clue: "Reach level 7 as a ninja", id: 48 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Pally Power!", desc: "Reach level 7 as a paladin", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a paladin", clue: "Reach level 7 as a paladin", id: 49 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Tanky Tank", desc: "Reach level 7 as an guardian", type: "perkpoints", gain: "+1 perk on character creation", hint: "Reach level 7 as a guardian", clue: "Reach level 7 as a guardian", id: 50 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Peasant", desc: "Gain +1hp per highest retired peasant level, for all characters, always", type: "highest", gain: "Gain +1hp per highest retired peasant level, for all characters, always", hint: "Gain +1hp per highest retired peasant level, for all characters, always", clue: "Always available", id: 51 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Lumberjack", desc: "Gain +1% to hit bonus with axes per highest retired lumberjack level, for all characters, always", type: "highest", gain: "Gain +1% to hit bonus with axes per highest retired lumberjack level, for all characters, always", hint: "Gain +1% to hit bonus with axes per highest retired lumberjack level, for all characters, always", clue: "Retire as a lumberjack", id: 52 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Prostitute", desc: "Gain +1 flirt resistance per highest retired prostitute level, for all characters, always", type: "highest", gain: "Gain +1 flirt resistance per highest retired prostitute level, for all characters, always", hint: "Gain +1 flirt resistance per highest retired prostitute level, for all characters, always", clue: "Retire as a prostitute", id: 53 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Warrior", desc: "Gain +1 melee damage with weapons per highest retired level, for all characters, always", type: "highest", gain: "Gain +1 melee damage with weapons per highest retired level, for all characters, always", hint: "Gain +1 melee damage with weapons per highest retired level, for all characters, always", clue: "Retire as a warrior", id: 54 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Scholar", desc: "-1 to xp requirement per level, per highest retired scholar level, for all characters, always", type: "highest", gain: "-1 to xp requirement per level, per highest retired scholar level, for all characters, always", hint: "-1 to xp requirement per level, per highest retired scholar level, for all characters, always", clue: "Retire as a scholar", id: 55 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Priest", desc: "Gain +1 healing spell effect per highest retired level, for all characters, always", type: "highest", gain: "Gain +1 healing spell effect per highest retired level, for all characters, always", hint: "Gain +1 healing spell effect per highest retired level, for all characters, always", clue: "Retire as a priest", id: 56 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Rogue", desc: "Gain +1 gold per combat victory per highest retired rogue level, for all characters, always", type: "highest", gain: "Gain +1 gold per combat victory per highest retired rogue level, for all characters, always", hint: "Gain +1 gold per combat victory per highest retired rogue level, for all characters, always", clue: "Retire as a rogue", id: 57 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Mage", desc: "Gain +1 fireball damage per highest retired mage level, for all characters, always", type: "highest", gain: "Gain +1 fireball damage per highest retired mage level, for all characters, always", hint: "Gain +1 fireball damage per highest retired mage level, for all characters, always", clue: "Retire as a mage", id: 58 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Barbarian", desc: "Gain +1 to hit with beast morph type attacks per highest retired barbarian level, for all characters, always", type: "highest", gain: "Gain +1 to hit with beast morph type attacks per highest retired barbarian level, for all characters, always", hint: "Gain +1 to hit with beast morph type attacks per highest retired barbarian level, for all characters, always", clue: "Retire as a barbarian", id: 59 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Monk", desc: "Gain +1 melee defense per highest retired monk level, for all characters, always", type: "highest", gain: "Gain +1 melee defense per highest retired monk level, for all characters, always", hint: "Gain +1 melee defense per highest retired monk level, for all characters, always", clue: "Retire as a monk", id: 60 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Ninja", desc: "Gain +1% chance to escape combat per highest retired ninja level, for all characters, always", type: "highest", gain: "Gain +1% chance to escape combat per highest retired ninja level, for all characters, always", hint: "Gain +1% chance to escape combat per highest retired ninja level, for all characters, always", clue: "Retire as a ninja", id: 61 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Paladin", desc: "Gain +1 melee damage against demons per highest retired paladin level, for all characters, always", type: "highest", gain: "Gain +1 melee damage against demons per highest retired paladin level, for all characters, always", hint: "Gain +1 melee damage against demons per highest retired paladin level, for all characters, always", clue: "Retire as a paladin", id: 62 }>> <<set _acount to _acount +1>> <<set _achieves[_acount] to { name: "Best Guardian", desc: "Gain +2 health and defense per highest retired guadian level, for all characters, always", type: "highest", gain: "Gain +2 health and defense per highest retired guadian level, for all characters, always", hint: "Gain +2 health and defense per highest retired guadian level, for all characters, always", clue: "Retire as a guardian", id: 63 }>> <<else>>\ @@color:Red;Error in DataWidgets: unrecognized data request <<endif>>\ <</silently>>\ <</widget>>\<span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>> </span>\ <span id="KeypOne">\ <<link "1) Toggle view">> <<if $WORLD.Bodyview is 0>>\ <<set $WORLD.Bodyview to 1>>\ <<else>>\ <<set $WORLD.Bodyview to 0>> <<endif>>\ <<replace "#BodyPortal">><<ShowPageBody>><</replace>>\ <</link>>\ </span> <hr>\ <span id="BodyPortal"><<ShowPageBody>></span>\<<SimplePic "tavernkitty.jpg">>\ <<set _AllowStore to true>>\ <<set _Tanya to "Tanya">>\ <<if $WORLD.tavern is 0>>\ <<set _Tanya to "the tavern kitty">>\ <<endif>>\ \ @@color:LightGreen;<<print $WORLD.tavernname>>@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> \ <<if $WORLD.datapasser is "slept">>\ <<else>>\ <<set _Voucher to setup.HasItemA(114)>>\ <<if _Voucher > -1>>\ <span id="KeypOne">\ <<link "1) Rent a room for the night" "Tavern">> <<set $WORLD.datapasser to "slept">> <</link>> - (free voucher) </span>\ <<elseif $PC[$CC][$PCcoins] > 4>>\ <span id="KeypOne">\ <<link "1) Rent a room for the night" "Tavern">> <<set $WORLD.datapasser to "slept">> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - 5>>\ <</link>> - 5 coins </span>\ <<else>>\ Cannot afford a room - 5 coins <<endif>>\ <<endif>>\ <<if $WORLD.tavern < 2>>\ <span id="KeypC">\ <<link "c) Chat" "Tavern">>\ <<set $WORLD.datapasser to "chat">> <</link>>\ </span>\ <<else>>\ c) no chats available <<endif>>\ <hr>\ <<if $WORLD.datapasser is "slept">>\ <<set $WORLD.datapasser to "">>\ <<AdvanceTime 720>>\ <<FullyHeal>>\ <<set _Voucher to setup.HasItemA(114)>>\ <<if _Voucher > -1>>\ <<set _throwaway to setup.RemoveOneItemFromInv($CC, _Voucher)>>\ @@color:Orange;<<print _Tanya.toUpperFirst()>>@@: "I hadn't realized Rina was still passing out these vouchers. Hope you're ready to pay next time." <<else>>\ @@color:Orange;<<print _Tanya.toUpperFirst()>>@@: "<<print either("Good morning","Looks like it's another day","Glad you could join us")>>. Here's some <<print either("oatmeal","dried mush","leftovers from last night","fruit","bread and cheese","jerky cutlets")>> on the house." <<endif>>\ <<elseif $WORLD.datapasser is "chat">>\ <<set $WORLD.datapasser to "">>\ <<AdvanceTime 5>>\ <<if $WORLD.tavern is 0>>\ <<set $WORLD.tavern to 1>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello," you greet _Tanya. "I'm $PC[$CC][$PCname]. Are you a cat girl?" @@color:Orange;Tavern kitty@@: "Yes," she rolls her eyes. "Souvinir from my tower-climbing days. The name's Tanya. And before you ask, no I didn't get very far in the tower, only barely to the second floor before I gave up. That place is a deathtrap. And before you ask, no I don't like belly rubs. At least not from strangers. Now, are you here to order something or just to gawk at my <<print either("ears","tail")>>?" <<elseif $WORLD.tavern is 1>>\ <<set $WORLD.tavern to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sorry, I didn't realize it was a sensitive topic." @@color:Orange;Tanya@@: "No, it's fine," she sighs. "I guess I just miss people staring at my tits but the cat parts keep hardly anyone from even noticing them anymore. Are you here to climb the tower?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "<<print either("That's the plan.","Yes.","Was it that obvious?")>>" @@color:Orange;Tanya@@: "Pretty much the only reason any comes here," she nods. "Well, be careful in there or else you could end up a lot worse than I did. Anyway, I'm going to get back to work. If you haven't already, I suggest checking in with Rina at the guild call near the middle of town. Good luck." <<elseif $WORLD.tavern is 2>>\ <<set $WORLD.tavern to 3>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So do you have any advice for me?" <<if $PC[$CC][$PCsex] is "female">>\ @@color:Orange;Tanya@@: "Just the usual," she shrugs. "Try not to get raped, don't drink anything you don't know what it is, and especially don't do both of those at the same time." <<else>>\ @@color:Orange;Tanya@@: "Don't get killed?" she shrugs. "Or do, if you want. I'm not your mother." <<endif>>\ <<else>>\ (Dev note: end of generic Tanya dialogue. Implement more) <<endif>>\ <<else>>\ <<if $WORLD.tavern is 0>>\ The busiest part of town, the <<print $WORLD.tavernname>> is the first harbor of welcome for new arrivals. It is the place to greet, and say farewell to those who would seek to climb The Tower. "Stop letting the cold in!" a shrill, feminine voice scowls at you. Stepping inside and allowing the door to close behind you, you behold the voice's owner: a short cat-girl with prominent ears, and a tail visibly peeking out from under her dress. <<else>>\ <<if $WORLD.hour < 6>>\ The tavern is quiet, with only the lone _Tanya behind the bar,silently clearning with a tired look on her face. Does she ever sleep? <<elseif $WORLD.hour < 10>>\ The tavern is quite busy, with _Tanya and a few other wenches serving breakfast to a room full of adventurers and travellers. <<elseif $WORLD.hour < 14>>\ It's currently lunchtime at the tavern. <<elseif $WORLD.hour < 18>>\ Early evening in the tavern seems to be a fairly quiet. Only a couple patrons sit at its many tables, and _Tanya appears to be napping behind the bar. <<elseif $WORLD.hour < 22>>\ Nearly every seat is full, and the serving staff are clearly struggling to keep beer mugs and plates full. Adventurers regale tales of their exploits and a lone bard sings songs from one corner. <<else>>\ The tavern is fairly quiet now, the evening rush having passed. <<endif>>\ <<endif>>\ <<endif>>\ <hr>\ <<if _AllowStore is true>>\ <<Store $Tavern>> <<endif>>\ <!-- text notes "Let me guess," she drawls. "Your next question is going to be how big my tits are?" "Uh, no?" you hesitate. "Oh, skipping right to, 'how can I best seduce you?" she smirks. "Real classy of you." "Hey, Tanya," you greet the tavern kitty. "Anything new?" "The usual influx of suicidal adventurers here to climb the tower," she shrugs. "So nothing new, I guess." -->\ <span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span> <<button "[Controls]">> <<replace "#HelpPortal">><<ShowHelpControls>><</replace>>\ <</button>> | \ <<button "[New player tips]">> <<replace "#HelpPortal">><<ShowHelpTips>><</replace>>\ <</button>> | \ <<button "[Class info]">> <<replace "#HelpPortal">><<ShowHelpClasses>><</replace>>\ <</button>> | \ <<button "[Transformation]">> <<replace "#HelpPortal">><<ShowHelpTransformation>><</replace>>\ <</button>> | \ <<button "[FAQ]">> <<replace "#HelpPortal">><<ShowHelpFAQ>><</replace>>\ <</button>> <hr>\ <span id="HelpPortal"><<ShowHelpControls>></span><<widget "DescribeItem">>\ <<silently>>\ <<set _di to $args[0]>>\ \ <<set _iname to "error?">>\ <<set _equippable to false>>\ <<set _mindam to 0>>\ <<set _maxdam to 0>>\ <<set _attacktype to "">>\ <<set _armor to 0>>\ <<set _quantity to 0>>\ <<set _tooleffect to 0>>\ <<set _material to "">>\ <<set _hands to 0>>\ <<set _slot to -1>>\ <<set _flirt to 0>>\ <<set _restrict to "none">> <<set _stackable to false>> <<set _price to 0>> <<set _foodval to 0>> <<set _bang to false>> <<set _forcename to "">> <<set _morph to "none">> <<set _sex to "none">> <<set _unique to false>> <<set _EnchantSuffix to "">>\ <<set _GuardianShieldMulti to 1>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "guardian">>\ <<if $PC[$CC][$PClevel] > 6>>\ <<set _GuardianShieldMulti to 2>>\ <<endif>>\ <<endif>>\ <!-- slots 1 head/heml 2 neck/amulet 3 chest 4 cloak 5 arms/equipped 6 pairs of gloves 7 sets of fingers 8 waist 9 pairs of legs 10 pairs of feet --> \ <!-- tool effects 1=rope 2=cut meat/string 3=cut wood 4=lockpick 5=bash lock 6=genric use (hair dye, ?) 7=available 8=holy symbol 9=liquid container 10=normal eat 11=normal drink 12=spellbook 13=cosmetic read text 14=voucher 15=potion 16=scissors 17=shieldblock 18=soultrap gemstone 19=magic jewelry 20=Transformative eat 21=Transformative drink 22=mining tool -->\ <<if _di[0] is 0>>\ <<set _iname to "none">>\ <<elseif _di[0] is 100>>\ <<set _iname to "coil~ of rope">>\ <<set _tooleffect to 1>>\ <<set _stackable to true>> <<set _price to 10>> <<elseif _di[0] is 101>>\ <<set _iname to "small hammer">>\ <<set _tooleffect to 5>>\ <<set _price to 10>> <<elseif _di[0] is 102>>\ <<set _iname to "chunk~ of ! meat">>\ <<set _bang to true>>\ <<set _tooleffect to 20>>\ <<set _stackable to true>> <<set _price to 1>> <<set _foodval to 250>>\ <<elseif _di[0] is 103>>\ <<set _iname to "dildo">>\ <<set _tooleffect to 6>>\ <<set _price to 20>> <<elseif _di[0] is 104>>\ <<set _iname to "holy symbol">>\ <<set _slot to $BPwield>>\ <<set _tooleffect to 8>>\ <<set _price to 50>> <<elseif _di[0] is 105>>\ <<set _iname to "wooden log~">>\ <<set _stackable to true>> <<set _price to 3>> <<elseif _di[0] is 106>>\ <<set _iname to "apple~">>\ <<set _stackable to true>>\ <<set _price to 5>>\ <<set _tooleffect to 10>>\ <<set _foodval to 100>>\ <<elseif _di[0] is 107>>\ <<set _iname to "roll~ of cheese">>\ <<set _stackable to true>>\ <<set _tooleffect to 10>>\ <<set _price to 25>>\ <<set _foodval to 250>>\ <<elseif _di[0] is 108>>\ <<set _iname to "empty bottle~">>\ <<set _price to 5>>\ <<set _tooleffect to 9>>\ <<set _stackable to true>> <<elseif _di[0] is 109>>\ <<set _iname to "bottle~ of !">>\ <<set _bang to true>> <<set _foodval to 50>>\ <<set _price to 10>>\ <<set _tooleffect to 21>>\ <<set _stackable to true>> <<elseif _di[0] is 110>>\ <<set _iname to "bread roll~">>\ <<set _foodval to 150>>\ <<set _tooleffect to 10>>\ <<set _price to 10>>\ <<set _stackable to true>>\ <<elseif _di[0] is 111>>\ <<set _iname to "spellbook !">>\ <<set _bang to true>>\ <<set _tooleffect to 12>>\ <<set _price to 100>>\ <<elseif _di[0] is 112>>\ <<set _iname to "book">>\ <<set _tooleffect to 13>>\ <<set _price to 50>>\ <<elseif _di[0] is 113>>\ <<set _iname to "butcher's knife">>\ <<set _tooleffect to 2>>\ <<set _price to 5>> <<elseif _di[0] is 114>>\ <<set _iname to "voucher for one night's stay at the " + $WORLD.tavernname>>\ <<set _tooleffect to 14>>\ <<set _price to 5>> <<elseif _di[0] is 115>>\ <<set _iname to "lockpick~">>\ <<set _tooleffect to 4>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 117>>\ <<set _iname to "bottle~ of ! hair dye">>\ <<set _tooleffect to 6>>\ <<set _stackable to true>> <<set _bang to true>> <<set _price to 50>> <<elseif _di[0] is 118>>\ <<set _iname to "healing potion~">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 100>> <<elseif _di[0] is 119>>\ <<set _iname to "potion~ of fire resistence">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 100>> <<elseif _di[0] is 120>>\ <<set _iname to "hardwood log~">>\ <<set _stackable to true>> <<set _price to 5>> <<elseif _di[0] is 121>>\ <<set _iname to "steelwood log~">>\ <<set _stackable to true>> <<set _price to 7>> <<elseif _di[0] is 122>>\ <<set _iname to "faerie wood log~">>\ <<set _stackable to true>> <<set _price to 9>> <<elseif _di[0] is 123>>\ <<set _iname to "vial~ of antivenom">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 124>>\ <<set _iname to "potion~ of magic resistence">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 200>> <<elseif _di[0] is 125>>\ <<set _iname to "vial~ of penis growth formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 126>>\ <<set _iname to "vial~ of penis reduction formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 127>>\ <<set _iname to "vial~ of breast growth formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 128>>\ <<set _iname to "vial~ of breast reduction formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 129>>\ <<set _iname to "vial~ of aphrodisiac">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 10>>\ <<elseif _di[0] is 130>>\ <<set _iname to "vial~ of fertili-tea (not implemented)">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 40>>\ <<elseif _di[0] is 131>>\ <<set _iname to "vial~ of contraceptive (not implemented)">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 40>>\ <<elseif _di[0] is 132>>\ <<set _iname to "scissors">>\ <<set _tooleffect to 16>>\ <<set _price to 10>> <<elseif _di[0] is 133>>\ <<set _iname to "bottle~ of hair growth formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 50>> <<elseif _di[0] is 134>>\ <<set _iname to "starter apple~">>\ <<set _stackable to true>>\ <<set _price to 0>>\ <<set _tooleffect to 10>>\ <<set _foodval to 100>>\ <<elseif _di[0] is 135>>\ <<set _iname to "fleshlight">>\ <<set _tooleffect to 6>>\ <<set _price to 40>> <<elseif _di[0] is 136>>\ <<set _iname to "bottle~ of strange green liquid">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 10>> <<elseif _di[0] is 137>>\ <<set _iname to "potion~ of stoneskin">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 200>> <<elseif _di[0] is 138>>\ <<set _iname to "cactus log~">>\ <<set _stackable to true>> <<set _price to 7>> <<elseif _di[0] is 139>>\ <<set _iname to "vial~ of pussy growth formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 140>>\ <<set _iname to "vial~ of pussy reduction formula">>\ <<set _tooleffect to 15>>\ <<set _stackable to true>> <<set _price to 20>> <<elseif _di[0] is 141>>\ <<set _iname to "starter roll~ of cheese">>\ <<set _stackable to true>>\ <<set _bang to true>>\ <<set _tooleffect to 10>>\ <<set _price to 0>>\ <<set _foodval to 250>>\ \ \ <!-- blunt weapons -->\ <<elseif _di[0] is 200>>\ <<set _iname to "club">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "blunt">>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 201>>\ <<set _iname to "mace">>\ <<set _mindam to 1>>\ <<set _maxdam to 7>>\ <<set _attacktype to "blunt">> <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 202>>\ <<set _iname to "war hammer">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "blunt">>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ \ <!-- cutting weapons -->\ <<elseif _di[0] is 210>>\ <<set _iname to "sabre">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "cut">>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 211>>\ <<set _iname to "falchion">>\ <<set _mindam to 1>>\ <<set _maxdam to 7>>\ <<set _attacktype to "cut">> <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 212>>\ <<set _iname to "claymore">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "cut">>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ \ <!-- cleave weapons --> <<elseif _di[0] is 220>>\ <<set _iname to "hatchet">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "cleave">>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 221>>\ <<set _iname to "war axe">>\ <<set _mindam to 1>>\ <<set _maxdam to 7>>\ <<set _attacktype to "cleave">>\ <<set _price to 75>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 222>>\ <<set _iname to "halberd">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "cleave">>\ <<set _price to 125>>\ <<set _slot to $BPwield>>\ \ <!-- piercing weapons -->\ <<elseif _di[0] is 230>>\ <<set _iname to "dagger">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "pierce">>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 231>>\ <<set _iname to "spear">>\ <<set _mindam to 1>>\ <<set _maxdam to 7>>\ <<set _attacktype to "pierce">>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 232>>\ <<set _iname to "trident">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "pierce">>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ \ <!-- shields <<elseif _di[0] is 240>>\ <<set _iname to "small shield">>\ <<set _armor to 6 * _GuardianShieldMulti>>\ <<set _attacktype to "block">>\ <<set _price to 60>>\ <<set _tooleffect to 17>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 241>>\ <<set _iname to "medium shield">>\ <<set _armor to 12 * _GuardianShieldMulti>>\ <<set _attacktype to "block">>\ <<set _price to 180>>\ <<set _tooleffect to 17>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 242>>\ <<set _iname to "tower shield">>\ <<set _armor to 24 * _GuardianShieldMulti>>\ <<set _attacktype to "block">>\ <<set _price to 480>>\ <<set _tooleffect to 17>>\ <<set _slot to $BPwield>>\ \ <!-- special drop non-unique weapons --> <<elseif _di[0] is 250>>\ <!-- peasant start -->\ <<set _iname to "pitchfork">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "pierce">>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 251>>\ <!-- pre 23-7-01 Zehtalia -->\ <<set _iname to "flail">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "blunt">>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 252>>\ <!-- ninja start -->\ <<set _iname to "katana">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "cut">>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 253>>\ <<set _iname to "mining pick">>\ <<set _tooleffect to 22>>\ <<set _mindam to 1>>\ <<set _maxdam to 7>>\ <<set _attacktype to "pierce">>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ \ \ <<elseif _di[0] is 300>>\ <<set _iname to "plain shirt">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _flirt to 5>>\ <<set _price to 5>> <<elseif _di[0] is 301>>\ <<set _iname to "blouse">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _price to 7>> <<elseif _di[0] is 302>>\ <<set _iname to "belt">>\ <<set _armor to 1>>\ <<set _slot to $BPwaist>>\ <<set _price to 5>> <<elseif _di[0] is 303>>\ <<set _iname to "pants">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _price to 10>> <<elseif _di[0] is 304>>\ <<set _iname to "skirt">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _price to 12>> <<elseif _di[0] is 305>>\ <<set _iname to "shoes">>\ <<set _armor to 2>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 3>> <<elseif _di[0] is 306>>\ <<set _iname to "boots">>\ <<set _armor to 5>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 25>> <<elseif _di[0] is 307>>\ <<set _iname to "girdle">>\ <<set _armor to 5>>\ <<set _slot to $BPwaist>>\ <<set _price to 50>> <<elseif _di[0] is 308>>\ <<set _iname to "tiara">>\ <<set _armor to 2>>\ <<set _slot to $BPhead>>\ <<set _price to 10>> <<elseif _di[0] is 309>>\ <<set _iname to "light helm">>\ <<set _armor to 4>>\ <<set _slot to $BPhead>>\ <<set _price to 25>> <<elseif _di[0] is 310>>\ <<set _iname to "medium helmet">>\ <<set _armor to 8>>\ <<set _slot to $BPhead>>\ <<set _price to 40>> <<elseif _di[0] is 311>>\ <<set _iname to "heavy helmet">>\ <<set _armor to 20>>\ <<set _slot to $BPhead>>\ <<set _price to 200>> <<elseif _di[0] is 312>>\ <<set _iname to "cape">>\ <<set _armor to 2>>\ <<set _slot to $BPback>>\ <<set _price to 10>> <<elseif _di[0] is 313>>\ <<set _iname to "cloak">>\ <<set _armor to 4>>\ <<set _slot to $BPback>>\ <<set _price to 20>> <<elseif _di[0] is 314>>\ <<set _iname to "g-string">>\ <<set _armor to 1>>\ <<set _flirt to 1>>\ <<set _slot to $BPlegs>>\ <<set _price to 0>> <<elseif _di[0] is 315>>\ <<set _iname to "nipple stickers">>\ <<set _armor to 1>>\ <<set _flirt to 1>>\ <<set _slot to $BPchest>>\ <<set _price to 0>> <<elseif _di[0] is 316>>\ <<set _iname to "high heels">>\ <<set _armor to 1>>\ <<set _flirt to 1>>\ <<set _slot to $BPfeet>>\ <<set _price to 0>> <<elseif _di[0] is 317>>\ <<set _iname to "priest robes">>\ <<set _armor to 6>>\ <<set _slot to $BPchest>>\ <<set _price to 0>> <<elseif _di[0] is 318>>\ <<set _iname to "(deprecated) archmage robes">>\ <<set _armor to 30>>\ <<set _slot to $BPchest>>\ <<set _price to 0>> <<elseif _di[0] is 319>>\ <<set _iname to "ninja uniform">>\ <<set _armor to 6>>\ <<set _run to 1>>\ <<set _slot to $BPchest>>\ <<set _price to 40>> <<elseif _di[0] is 320>>\ <<set _iname to "ninja cowl">>\ <<set _armor to 6>>\ <<set _run to 1>>\ <<set _slot to $BPhead>>\ <<set _price to 40>> <<elseif _di[0] is 321>>\ <<set _iname to "ninja pants">>\ <<set _armor to 6>>\ <<set _run to 1>>\ <<set _slot to $BPlegs>>\ <<set _price to 40>> <<elseif _di[0] is 322>>\ <<set _iname to "black belt">>\ <<set _armor to 6>>\ <<set _run to 1>>\ <<set _slot to $BPwaist>>\ <<set _price to 40>> <<elseif _di[0] is 323>>\ <<set _iname to "tabi boots">>\ <<set _armor to 6>>\ <<set _run to 1>>\ <<set _slot to $BPfeet>>\ <<set _price to 40>> <<elseif _di[0] is 350>>\ <<set _iname to "chainmail shirt">>\ <<set _armor to 10>>\ <<set _slot to $BPchest>>\ <<set _price to 75>> <<elseif _di[0] is 351>>\ <<set _iname to "chainmail chemise">>\ <<set _armor to 15>>\ <<set _slot to $BPchest>>\ <<set _price to 150>> <<elseif _di[0] is 352>>\ <<set _iname to "chainmail hauberk">>\ <<set _armor to 20>>\ <<set _slot to $BPchest>>\ <<set _price to 300>> <<elseif _di[0] is 353>>\ <<set _iname to "chainmail leggings">>\ <<set _armor to 15>>\ <<set _slot to $BPlegs>>\ <<set _price to 270>> <<elseif _di[0] is 354>>\ <<set _iname to "chainmail coif">>\ <<set _armor to 10>>\ <<set _slot to $BPhead>>\ <<set _price to 50>> <<elseif _di[0] is 355>>\ <<set _iname to "chainmail gloves">>\ <<set _armor to 4>>\ <<set _slot to $BPhands>>\ <<set _price to 20>> <<elseif _di[0] is 356>>\ <<set _iname to "chainmail bra">>\ <<set _armor to 2>>\ <<set _slot to $BPboobs>>\ <<set _price to 50>> <<elseif _di[0] is 357>>\ <<set _iname to "chainmail skirt">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _price to 90>> <<elseif _di[0] is 358>>\ <<set _iname to "chainmail miniskirt">>\ <<set _armor to 5>>\ <<set _slot to $BPlegs>>\ <<set _price to 30>> <<elseif _di[0] is 359>>\ <<set _iname to "chainmail gorget">>\ <<set _armor to 5>>\ <<set _slot to $BPneck>>\ <<set _price to 50>> <<elseif _di[0] is 360>>\ <<set _iname to "chainmail tail armor">>\ <<set _armor to 5>>\ <<set _slot to $BPtail>>\ <<set _price to 50>> <<elseif _di[0] is 361>>\ <<set _iname to "chainmail wing armor">>\ <<set _armor to 10>>\ <<set _slot to $BPwings>>\ <<set _price to 200>> <<elseif _di[0] is 362>>\ <<set _iname to "chainmail gauntlets">>\ <<set _armor to 8>>\ <<set _slot to $BPhands>>\ <<set _price to 60>> <<elseif _di[0] is 363>>\ <<set _iname to "chainmail collar">>\ <<set _armor to 2>>\ <<set _slot to $BPneck>>\ <<set _price to 10>> <<elseif _di[0] is 500>>\ <<set _iname to "ring !">>\ <<set _slot to $BPring>>\ <<set _bang to false>>\ <<set _tooleffect to 19>>\ <<set _price to 200>> <<elseif _di[0] is 501>>\ <<set _iname to "amulet !">>\ <<set _slot to $BPneck>>\ <<set _bang to false>> <<set _tooleffect to 19>>\ <<set _price to 200>> <<elseif _di[0] is 550>>\ <<set _iname to "quartz crystal~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 100>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 551>>\ <<set _iname to "garnet~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 200>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 552>>\ <<set _iname to "citrine~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 300>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 553>>\ <<set _iname to "moonstone~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 400>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 554>>\ <<set _iname to "bit~ of amythyst">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 500>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 555>>\ <<set _iname to "aquamarine~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 600>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 556>>\ <<set _iname to "star opal~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 700>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 557>>\ <<set _iname to "emerald~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 800>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 558>>\ <<set _iname to "sapphire~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 900>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 559>>\ <<set _iname to "diamond~">>\ <<set _stackable to true>> <<set _tooleffect to 18>>\ <<set _price to 1000>> <<set _slot to $BPwield>>\ <<elseif _di[0] is 700>>\ <!-- Zehtalia -->\ <<set _unique to true>>\ <<set _iname to "the flail, @@color:LightBlue;'Ipsimus'@@">>\ <<set _mindam to 12>>\ <<set _maxdam to 24>>\ <<set _attacktype to "blunt">>\ <<set _price to 0>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 701>>\ <!-- Zehtalia -->\ <<set _unique to true>>\ <<set _iname to "the falchion, @@color:LightBlue;'Custodia'@@">>\ <<set _mindam to 8>>\ <<set _maxdam to 18>>\ <<set _attacktype to "cut">>\ <<set _price to 0>>\ <<set _armor to 10>>\ <<set _slot to $BPwield>>\ \ <<elseif _di[0] is 999>>\ <<set _iname to "a corpse">>\ <<set _CorpsePTR to _di[1]>>\ <<set _forcename to "the corpse of " + $PC[_CorpsePTR][$PCname]>>\ <<endif>>\ \ <<if _di[1] is 100>>\ <<elseif _di[1] is 101>>\ <<set _material to "wooden">>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<if _mindam < 1>><<set _mindam to 1>><<endif>>\ <<if _maxdam < 1>><<set _maxdam to 1>><<endif>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 5>>\ <<if _armor < 1>><<set _armor to 1>><<endif>>\ <<endif>>\ <<elseif _di[1] is 102>>\ <<set _material to "copper">>\ <<set _price to Math.trunc(_price * .8)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<if _mindam < 1>><<set _mindam to 1>><<endif>>\ <<if _maxdam < 1>><<set _maxdam to 1>><<endif>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 2>>\ <<if _armor < 1>><<set _armor to 1>><<endif>>\ <<endif>>\ <<elseif _di[1] is 103>>\ <<set _material to "brass">>\ <<elseif _di[1] is 104>>\ <<set _material to "iron">>\ <<set _price to (_price + 50) * 2>>\ <<if _maxdam > 0>>\ <<set _mindam to Math.trunc((_mindam +1) * 1.4)>>\ <<set _maxdam to Math.trunc((_maxdam +1) * 1.4)>>\ <<elseif _armor > 0>>\ <<set _armor to Math.trunc((_armor +1) * 1.4)>>\ <<endif>>\ <<elseif _di[1] is 105>>\ <<set _material to "steel">>\ <<set _price to (_price + 100) * 3>>\ <<if _maxdam > 0>>\ <<set _mindam to Math.trunc((_mindam +2) * 1.8)>>\ <<set _maxdam to Math.trunc((_maxdam +2) * 1.8)>>\ <<elseif _armor > 0>>\ <<set _armor to Math.trunc((_armor +2) * 1.8)>>\ <<endif>>\ <<elseif _di[1] is 106>>\ <<set _price to (_price + 200) * 4>>\ <<set _material to "mithril">>\ <<if _maxdam > 0>>\ <<set _mindam to Math.trunc((_mindam +3) * 2.2)>>\ <<set _maxdam to Math.trunc((_maxdam +3) * 2.2)>>\ <<elseif _armor > 0>>\ <<set _armor to Math.trunc((_armor +3) * 2.2)>>\ <<endif>>\ <<elseif _di[1] is 107>>\ <<set _price to (_price + 400) * 5>>\ <<set _material to "scalar">>\ <<if _maxdam > 0>>\ <<set _mindam to Math.trunc((_mindam +4) * 2.6)>>\ <<set _maxdam to Math.trunc((_maxdam +4) * 2.6)>>\ <<elseif _armor > 0>>\ <<set _armor to Math.trunc((_armor +4) * 2.6)>>\ <<endif>>\ <<elseif _di[1] is 108>>\ <<set _material to "silver">>\ <<set _price to _price + 200>>\ <<elseif _di[1] is 109>>\ <<set _material to "gold">>\ <<set _price to _price + 300>>\ <<elseif _di[1] is 150>>\ <<set _material to "cloth">>\ <<elseif _di[1] is 151>>\ <<set _material to "leather">>\ <<set _flirt to 1>>\ <<elseif _di[1] is 152>>\ <<set _material to "silk">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 160>>\ <<set _material to "starter">>\ <<set _price to 0>>\ <<if _maxdam > 0>>\ <<set _mindam to Math.trunc(_mindam / 2)>>\ <<set _maxdam to Math.trunc(_maxdam / 2)>>\ <<if _mindam < 1>><<set _mindam to 1>><<endif>>\ <<if _maxdam < 1>><<set _maxdam to 1>><<endif>>\ <<elseif _armor > 0>>\ <<set _armor to Math.trunc(_armor / 2)>>\ <<if _armor < 1>><<set _armor to 1>><<endif>>\ <<endif>>\ <<elseif _di[1] is 550>><!-- quartz -->\ <<set _rep to "of health (+" + _di[3] * 5 + ")">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 551>><!-- garnet -->\ <<set _rep to "of defense (+" + _di[3] * 4 + ")">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 552>><!-- citrine -->\ <<set _rep to "of accuracy (+" + _di[3] * 3 + ")">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 553>><!-- moonstone -->\ <<set _rep to "of mana (+" + _di[3] + ")">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 554>><!-- amythyst -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 555>><-- aquamarine -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 556>><!-- star opal -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 557>><!-- emerald -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 4>>\ <<elseif _di[1] is 558>><!-- sapphire -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 3>>\ <<elseif _di[1] is 559>><!-- diamond -->\ <<set _rep to "of NOT IMPLEMENTED">>\ <<set _price to _price * 3>>\ <<endif>>\ \ <<if _price < 0>>\ <<set _price to 0>>\ <<endif>>\ \ <<if _mindam < 0>>\ <<set _mindam to 0>>\ <<endif>>\ <<if _maxdam < 0>>\ <<set _maxdam to 0>>\ <<endif>>\ <<if _armor < 0>>\ <<set _armor to 0>>\ <<endif>>\ \ \ \ <<set _fullname to _iname>>\ \ \ \ <<if (_tooleffect is 18) and (_di[3] > 0)>>\ <!-- no number for full soul gems -->\ <<set _fullname to setup.GenericReplace(_fullname, "~", "")>>\ <<set _price to _price + _price + (_di[3] * 100)>> <<set _stackable to false>>\ <<elseif (_tooleffect is 19)>>\ <!-- enchanted jewelry -->\ <<set _fullname to setup.GenericReplace(_fullname, "!", _rep)>>\ <<set _bang to false>>\ <<elseif _stackable is true>>\ <<set _quantity to _di[2]>> <<set _fullname to setup.pluralize(_fullname, _quantity)>>\ <<endif>>\ <<if _material neq "">>\ <<set _fullname to _material + " " + _iname>>\ <<endif>>\ \ <<if _bang is true>>\ <<set _rep to "error">>\ <<if (_di[3] > 0) and (_di[3] < 21)>>\ <!-- levels for gems and jewelry -->\ <<set _stackable to false>>\ <<set _rep to "">>\ <<elseif _di[3] is 100>>\ <<set _rep to "bunny">>\ <<set _morph to "bunny">>\ <<set _sex to "none">>\ <<set _price to 2>>\ <<elseif _di[3] is 101>>\ <<set _rep to "cat">>\ <<set _morph to "cat">>\ <<set _sex to "none">>\ <<set _price to 2>>\ <<elseif _di[3] is 102>>\ <<set _rep to "fox">>\ <<set _morph to "fox">>\ <<set _sex to "none">>\ <<set _price to 2>>\ <<elseif _di[3] is 103>>\ <<set _rep to "wolf">>\ <<set _morph to "wolf">>\ <<set _sex to "none">>\ <<set _price to 2>>\ <<elseif _di[3] is 104>>\ <<set _rep to "horse">>\ <<set _morph to "horse">>\ <<set _sex to "none">>\ <<set _price to 5>>\ <<elseif _di[3] is 105>>\ <<set _rep to "centaur">>\ <<set _morph to "centaur">>\ <<set _sex to "none">>\ <<set _price to 5>>\ <<elseif _di[3] is 106>>\ <<set _rep to "human">>\ <<set _morph to "human">>\ <<set _sex to "none">>\ <<set _price to 10>>\ <<elseif _di[3] is 107>>\ <<set _rep to "goblin">>\ <<set _morph to "goblin">>\ <<set _sex to "none">>\ <<set _price to 10>>\ <<elseif _di[3] is 108>>\ <<set _rep to "slime">>\ <<set _morph to "slime">>\ <<set _sex to "none">>\ <<set _price to 10>>\ <<elseif _di[3] is 109>>\ <<set _rep to "spider">>\ <<set _morph to "spider">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 110>>\ <<set _rep to "imp">>\ <<set _morph to "imp">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 111>>\ <<set _rep to "hellhound">>\ <<set _morph to "hellhound">>\ <<set _sex to "none">>\ <<set _price to 40>>\ <<elseif _di[3] is 112>>\ <<set _rep to "cow">>\ <<set _morph to "cow">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 113>>\ <<set _rep to "drider">>\ <<set _morph to "drider">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 114>>\ <<set _rep to "tentacle">>\ <<set _morph to "tentacle">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 115>>\ <<set _rep to "demon">>\ <<set _morph to "demon">>\ <<set _sex to "none">>\ <<set _price to 50>>\ <<elseif _di[3] is 116>>\ <<set _rep to "snake">>\ <<set _morph to "snake">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 117>>\ <<set _rep to "wolf">>\ <<set _morph to "wolfquad">>\ <<set _sex to "none">>\ <<set _price to 5>>\ <<elseif _di[3] is 118>>\ <<set _rep to "ant">>\ <<set _morph to "ant">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 119>>\ <<set _rep to "scorpion">>\ <<set _morph to "scorpion">>\ <<set _sex to "none">>\ <<set _price to 20>>\ <<elseif _di[3] is 120>>\ <<set _rep to "harpy">>\ <<set _morph to "harpy">>\ <<set _sex to "none">>\ <<set _price to 30>>\ <<elseif _di[3] is 199>>\ <<set _rep to "unidentifiable">>\ <<set _price to 5>>\ <<elseif _di[3] is 200>>\ <<set _rep to "bunny semen">>\ <<set _morph to "bunny">>\ <<set _sex to "male">>\ <<set _price to 10>>\ <<elseif _di[3] is 201>>\ <<set _rep to "cat semen">>\ <<set _morph to "cat">>\ <<set _sex to "male">>\ <<set _price to 20>>\ <<elseif _di[3] is 202>>\ <<set _rep to "fox semen">>\ <<set _morph to "fox">>\ <<set _sex to "male">>\ <<set _price to 20>>\ <<elseif _di[3] is 203>>\ <<set _rep to "wolf semen">>\ <<set _morph to "wolf">>\ <<set _sex to "male">>\ <<set _price to 20>>\ <<elseif _di[3] is 204>>\ <<set _rep to "horse semen">>\ <<set _morph to "horse">>\ <<set _sex to "male">>\ <<set _price to 40>>\ <<elseif _di[3] is 205>>\ <<set _rep to "centaur semen">>\ <<set _morph to "centaur">>\ <<set _sex to "male">>\ <<set _price to 50>>\ <<elseif _di[3] is 206>>\ <<set _rep to "human semen">>\ <<set _morph to "human">>\ <<set _sex to "male">>\ <<set _price to 60>>\ <<elseif _di[3] is 207>>\ <<set _rep to "goblin semen">>\ <<set _morph to "goblin">>\ <<set _sex to "male">>\ <<set _price to 60>>\ <<elseif _di[3] is 208>>\ <<set _rep to "ERROR SLIME NOT USED">>\ <<elseif _di[3] is 209>>\ <<set _rep to "spider semen">>\ <<set _morph to "spider">>\ <<set _sex to "male">>\ <<set _price to 80>>\ <<elseif _di[3] is 210>>\ <<set _rep to "imp semen">>\ <<set _morph to "imp">>\ <<set _sex to "male">>\ <<set _price to 80>>\ <<elseif _di[3] is 211>>\ <<set _rep to "hellhound semen">>\ <<set _morph to "hellhound">>\ <<set _sex to "male">>\ <<set _price to 100>>\ <<elseif _di[3] is 212>>\ <!-- cow -->\ <<set _rep to "minotaur semen">>\ <<set _morph to "cow">>\ <<set _sex to "male">>\ <<set _price to 80>>\ <<elseif _di[3] is 213>>\ <<set _rep to "drider semen">>\ <<set _morph to "drider">>\ <<set _sex to "male">>\ <<set _price to 100>>\ <<elseif _di[3] is 214>>\ <<set _rep to "tentacle semen">>\ <<set _morph to "tentacle">>\ <<set _sex to "male">>\ <<set _price to 100>>\ <<elseif _di[3] is 215>>\ <!-- demon -->\ <<set _rep to "incubus semen">>\ <<set _morph to "demon">>\ <<set _sex to "male">>\ <<set _price to 200>>\ <<elseif _di[3] is 216>>\ <<set _rep to "snake semen">>\ <<set _morph to "snake">>\ <<set _sex to "male">>\ <<set _price to 75>>\ <<elseif _di[3] is 217>>\ <<set _rep to "wolf semen">>\ <<set _morph to "wolfquad">>\ <<set _sex to "male">>\ <<set _price to 40>>\ <<elseif _di[3] is 218>>\ <<set _rep to "ant semen">>\ <<set _morph to "ant">>\ <<set _sex to "male">>\ <<set _price to 40>>\ <<elseif _di[3] is 219>>\ <<set _rep to "scorpion semen">>\ <<set _morph to "scorpion">>\ <<set _sex to "male">>\ <<set _price to 40>>\ <<elseif _di[3] is 220>>\ <<set _rep to "harpy semen">>\ <<set _morph to "harpy">>\ <<set _sex to "male">>\ <<set _price to 60>>\ <<elseif _di[3] is 299>>\ <<set _rep to "unidentified semen">>\ <<set _morph to "random">>\ <<set _sex to "male">>\ <<elseif _di[3] is 300>>\ <<set _rep to "bunny milk">>\ <<set _morph to "bunny">>\ <<set _sex to "female">>\ <<set _price to 20>>\ <<elseif _di[3] is 301>>\ <<set _rep to "cat milk">>\ <<set _morph to "cat">>\ <<set _sex to "female">>\ <<set _price to 20>>\ <<elseif _di[3] is 302>>\ <<set _rep to "fox milk">>\ <<set _morph to "fox">>\ <<set _sex to "female">>\ <<set _price to 20>>\ <<elseif _di[3] is 303>>\ <<set _rep to "wolf milk">>\ <<set _morph to "wolf">>\ <<set _sex to "female">>\ <<set _price to 20>>\ <<elseif _di[3] is 304>>\ <<set _rep to "horse milk">>\ <<set _morph to "horse">>\ <<set _sex to "female">>\ <<set _price to 40>>\ <<elseif _di[3] is 305>>\ <<set _rep to "centaur milk">>\ <<set _morph to "centaur">>\ <<set _sex to "female">>\ <<set _price to 40>>\ <<elseif _di[3] is 306>>\ <<set _rep to "human breast milk">>\ <<set _morph to "human">>\ <<set _sex to "female">>\ <<set _price to 60>>\ <<elseif _di[3] is 307>>\ <<set _rep to "goblin milk">>\ <<set _morph to "goblin">>\ <<set _sex to "female">>\ <<set _price to 60>>\ <<elseif _di[3] is 308>>\ <<set _rep to "error slimes don't have milk">>\ <<elseif _di[3] is 309>>\ <<set _rep to "spider milk">>\ <<set _morph to "spider">>\ <<set _sex to "female">>\ <<set _price to 60>>\ <<elseif _di[3] is 310>>\ <<set _rep to "imp milk">>\ <<set _morph to "imp">>\ <<set _sex to "female">>\ <<set _price to 50>>\ <<elseif _di[3] is 311>>\ <<set _rep to "hellhound milk">>\ <<set _morph to "hellhound">>\ <<set _sex to "female">>\ <<set _price to 100>>\ <<elseif _di[3] is 312>>\ <<set _rep to "cow milk">>\ <<set _morph to "cow">>\ <<set _sex to "female">>\ <<set _price to 80>>\ <<elseif _di[3] is 313>>\ <<set _rep to "drider milk">>\ <<set _morph to "drider">>\ <<set _sex to "female">>\ <<set _price to 100>>\ <<elseif _di[3] is 314>>\ <<set _rep to "error tentacles don't have milk">>\ <<elseif _di[3] is 315>>\ <<set _rep to "succubus milk">>\ <<set _morph to "demon">>\ <<set _sex to "female">>\ <<set _price to 200>>\ <<elseif _di[3] is 316>>\ <!-- Naga have human breasts -->\ <<set _rep to "strange green milk">>\ <<set _morph to "human">>\ <<set _sex to "female">>\ <<set _price to 40>>\ <<elseif _di[3] is 317>>\ <!-- wolves are currently only male? -->\ <<set _rep to "wolf milk">>\ <<set _morph to "wolfquad">>\ <<set _sex to "female">>\ <<set _price to 50>>\ <<elseif _di[3] is 318>>\ <<set _rep to "ant milk">>\ <<set _morph to "ant">>\ <<set _sex to "female">>\ <<set _price to 40>>\ <<elseif _di[3] is 319>>\ <<set _rep to "scorpion milk">>\ <<set _morph to "scorpion">>\ <<set _sex to "female">>\ <<set _price to 60>>\ <<elseif _di[3] is 320>>\ <<set _rep to "harpy milk">>\ <<set _morph to "harpy">>\ <<set _sex to "female">>\ <<set _price to 80>>\ <<elseif _di[3] is 399>>\ <<set _rep to "unidentifiable milk">>\ <<set _price to 75>>\ <<elseif _di[3] is 400>>\ <<set _rep to "slime goo">>\ <<set _morph to "slime">>\ <<set _sex to "herm">>\ <<elseif _di[3] is 401>>\ <<set _rep to "water">>\ <<set _price to 5>>\ <<set _tooleffect to 11>>\ <<elseif _di[3] is 402>>\ <<set _rep to "beer">>\ <<set _price to 7>>\ <<set _tooleffect to 11>>\ <<elseif _di[3] is 403>>\ <<set _rep to "wine">>\ <<set _price to 9>>\ <<set _tooleffect to 11>>\ <<elseif _di[3] is 500>> <<set _rep to " of firebolt">> <<set _price to 1000>>\ <<elseif _di[3] is 501>> <<set _rep to " of heal">> <<set _price to 1000>>\ <<elseif _di[3] is 502>> <<set _rep to " of armor">> <<set _price to 1000>>\ <<elseif _di[3] is 503>> <<set _rep to " of poison">> <<set _price to 1000>>\ <<elseif _di[3] is 504>> <<set _rep to " of up">> <<set _price to 1000>>\ <<elseif _di[3] is 505>> <<set _rep to " of down">> <<set _price to 1000>>\ <<elseif _di[3] is 506>> <<set _rep to " of portal">> <<set _price to 1000>>\ <<elseif _di[3] is 507>> <<set _rep to " of light">> <<set _price to 1000>>\ <<elseif _di[3] is 508>> <<set _rep to " of map">> <<set _price to 1000>>\ <<elseif _di[3] is 509>> <<set _rep to " of passwall">> <<set _price to 1000>>\ <<elseif _di[3] is 510>> <<set _rep to " of soul trap">> <<set _price to 1000>>\ \ <<elseif _di[3] is 600>>\ <<set _rep to "black">>\ <<set _price to 100>>\ <<elseif _di[3] is 601>>\ <<set _rep to "white">>\ <<set _price to 100>>\ <<elseif _di[3] is 602>>\ <<set _rep to "brunette">>\ <<set _price to 100>>\ <<elseif _di[3] is 603>>\ <<set _rep to "red">>\ <<set _price to 100>>\ <<elseif _di[3] is 604>>\ <<set _rep to "blonde">>\ <<set _price to 100>>\ <<elseif _di[3] is 605>>\ <<set _rep to "platinum blonde">>\ <<set _price to 100>>\ <<elseif _di[3] is 606>>\ <<set _rep to "brown">>\ <<set _price to 100>>\ <<elseif _di[3] is 607>>\ <<set _rep to "blue">>\ <<set _price to 100>>\ <<elseif _di[3] is 608>>\ <<set _rep to "pink">>\ <<set _price to 100>>\ <<elseif _di[3] is 609>>\ <<set _rep to "orange">>\ <<set _price to 100>>\ <<elseif _di[3] is 610>>\ <<set _rep to "green">>\ <<set _price to 100>>\ <<elseif _di[3] is 611>>\ <<set _rep to "purple">>\ <<set _price to 100>>\ <<endif>>\ <<set _foo to "di3 is: " + _di[3] + ", rep is: " + _rep + "<br>">>\ <<AddToLog _foo>>\ <<set _puppies to setup.Bang(_fullname, _rep)>>\ <<set _fullname to _puppies>>\ <<else>> <<if _di[3] is 550>>\ <<set _forcename to "A Treatise on Ponerology">>\ <<set _price to 100>>\ <<elseif _di[3] is 551>>\ <<set _forcename to "Etymology of the Echidna">>\ <<set _price to 100>>\ <<elseif _di[3] is 700>>\ <<set _EnchantSuffix to " @@color:LightGreen;of immutability@@">>\ <<set _price to _price + 500>>\ <<endif>> <<endif>> \ <!-- soul gems -->\ <<if (_tooleffect is 18) and (_di[3] > 0)>>\ <<set _forcename to setup.Bang(_fullname, "") + " (Level " + _di[3] + " soul)">>\ <<endif>>\ \ <<if _forcename neq "">>\ <<set _fullname to _forcename>>\ <<endif>>\ <<if _EnchantSuffix is "">>\ <<else>>\ <<set _fullname to _fullname + _EnchantSuffix>>\ <<endif>>\ <<if _maxdam > 0>>\ <<set _fullname to _fullname + " (damage: " + _mindam + "-" + _maxdam + ")">>\ <<endif>>\ <<if _armor > 0>>\ <<set _fullname to _fullname + " [armor: " + _armor + "]">>\ <<endif>>\ <<if _flirt > 0>>\ <<set _fullname to _fullname + " {sexy: " + _flirt + "}">>\ <<endif>>\ <<if 1 is 0 >>\ <<set _asd to setup.bpptrtoname(_slot, "formal")>>\ <<set _fullname to _fullname + " (Equip to: " + _asd +")">>\ <<endif>>\ \ <<set $ItemPoke to { name: _iname, fullname: _fullname, mindam: _mindam, maxdam: _maxdam, attacktype: _attacktype, handsreq: _hands, armor:_armor, tooleffect: _tooleffect, qty: _quantity, slot: _slot, flirt: _flirt, restrict: _restrict, foodval: _foodval, price: _price, stackable: _stackable, morph: _morph, sex: _sex, usedata: _rep, unique: _unique}>>\ <</silently>>\ <</widget>>\ <<widget "Restock">>\ <<set _which to $args[0]>>\ <<if _which is "all">>\ <<set $WORLD.restock to $WORLD.day>>\ <<endif>>\ <<if (_which is "tavern") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$Tavern][_i] to [0,0,0,0]>><</for>>\ <!-- always 2 bottles of plain drinks -->\ <<set _pool to setup.getfrom(2, [401, 402, 403])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][0] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][1] to [109, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 of boring food -->\ <<set _pool to setup.getfrom(2, [106, 107, 110])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][2] to [parseInt(_pool[0]), 0, _era, 0]>>\ <<set $STORE[$Tavern][3] to [parseInt(_pool[1]), 0, _erb, 0]>>\ <!-- 2 sketchy meat -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [100, 101, 102])>>\ <<set $STORE[$Tavern][4] to [102, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][5] to [102, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 sketchy milk -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [300, 301, 302, 303, 312])>>\ <<set $STORE[$Tavern][6] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][7] to [109, 0, _erb, parseInt(_pool[1])]>>\ <<endif>>\ <<if (_which is "selene") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$Selene][_i] to [0,0,0,0]>><</for>>\ <<set _Bqty to random(2, 4)>>\ <<set $STORE[$Selene][0] to [108, 0, _Bqty, 0]>>\ \ <<set _SpellbookChance to 0>>\ <<for _Sctr to 0; _Sctr < 6; _Sctr++>>\ <<if $WORLD.SeleneQuests[_Sctr] is 3>>\ <<set _SpellbookChance to _SpellbookChance +1>>\ <<endif>>\ <</for>>\ <<if _SpellbookChance > random(0,10)>>\ <<set _GS to [111, 0, 0, random(500,508)]>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ \ <<if $WORLD.SeleneQuests[0] is 3>>\ <!-- hair dye -->\ <<set _pool to setup.getfrom(random(1,3), [600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611])>>\ <<for _i to 0; _i < _pool.length; _i++>>\ <<set _GS to [117, 0, 1, parseInt(_pool[_i])]>>\ <<AddToStore $Selene _GS>>\ <</for>>\ <<if random(1,10) < 8>>\ <!-- hair growth formula -->\ <<set _GS to [133, 0, random(2,4), 0]>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ <<endif>>\ <<if $WORLD.SeleneQuests[1] is 3>>\ <!-- 404: aphrodisiac, 405: fertilitea, 406: contraceptive -->\ <<set _pool to setup.getfrom(random(1,2), [129,130,131])>>\ <<set _pool to setup.getfrom(random(1,2), [129])>>\ <<for _i to 0; _i < _pool.length; _i++>>\ <<set _GS to [parseInt(_pool[_i]), 0, random(1,2), 0]>>\ <<AddToStore $Selene _GS>>\ <</for>>\ <<endif>>\ <<if $WORLD.SeleneQuests[2] is 3>>\ <!-- penis/breast growth/reduction formula -->\ <<if random(1,2) is 1>>\ <<set _GS to [125, 0, random(1,3), 0]>>\ <<else>>\ <<set _GS to [126, 0, random(1,3), 0]>>\ <<endif>>\ <<AddToStore $Selene _GS>>\ <<if random(1,2) is 1>>\ <<set _GS to [127, 0, random(1,3), 0]>>\ <<else>>\ <<set _GS to [128, 0, random(1,3), 0]>>\ <<endif>>\ <<AddToStore $Selene _GS>>\ <<if random(1,2) is 1>>\ <<set _GS to [139, 0, random(1,3), 0]>>\ <<else>>\ <<set _GS to [140, 0, random(1,3), 0]>>\ <<endif>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ <<if $WORLD.SeleneQuests[3] is 3>>\ <!-- fire, magic, stoneskin resist -->\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ <<set _GS to [137, 0, 1, 0]>>\ <<elseif _r is 2>>\ <<set _GS to [119, 0, 1, 0]>>\ <<else>>\ <<set _GS to [124, 0, 1, 0]>>\ <<endif>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ <<if $WORLD.SeleneQuests[4] is 3>>\ <!-- antivenom -->\ <<set _GS to [123, 0, random(2,4), 0]>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ <<if $WORLD.SeleneQuests[5] is 3>>\ <!-- healing potions -->\ <<set _GS to [118, 0, random(1,3), 0]>>\ <<AddToStore $Selene _GS>>\ <<endif>>\ <<if $WORLD.SeleneQuests[6] is 3>>\ <<endif>>\ <<if $WORLD.SeleneQuests[7] is 3>>\ <<endif>>\ <<if $WORLD.SeleneQuests[8] is 3>>\ <<endif>>\ <<if $WORLD.SeleneQuests[9] is 3>>\ <<endif>>\ <<endif>>\ <<if (_which is "smith") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$Smith][_i] to [0,0,0,0]>><</for>>\ <<if $WORLD.smithLevel is 0>>\ <!-- copper brass -->\ <<set _WeaponPool to [200, 201, 210, 211, 220, 221, 230, 231]>>\ <<set _ArmorPool to [302,306, 307, 308, 309, 310, 350, 351, 353, 354, 355, 356, 357, 358, 359, 360, 361, 363]>>\ <<set _ShieldPool to [240, 240, 241]>>\ <<set _ArmsMatPool to [102,103]>>\ <<set _ShieldMatPool to [101,101,102,103]>>\ <<elseif $WORLD.smithLevel is 1>>\ <!-- brass iron -->\ <<set _WeaponPool to [200, 201, 202, 210, 211, 212, 221, 222, 230, 231, 232]>>\ <<set _ArmorPool to [302, 305, 306, 307, 308, 309, 310, 311, 350, 351, 352, 353, 354, 355, 357, 358, 359, 360, 361, 362, 363]>>\ <<set _ShieldPool to [240, 241, 242]>>\ <<set _ArmsMatPool to [103,104, 104]>>\ <<set _ShieldMatPool to [103,104]>>\ <<elseif $WORLD.smithLevel is 2>>\ <!-- iron steel -->\ <<set _WeaponPool to [200, 201, 202, 210, 211, 212, 220, 221, 222, 230, 231, 232]>>\ <<set _ArmorPool to [305, 306, 307, 310, 311, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362]>>\ <<set _ShieldPool to [240, 241, 242]>>\ <<set _ArmsMatPool to [104,105]>>\ <<set _ShieldMatPool to [104,105]>>\ <<elseif $WORLD.smithLevel is 3>>\ <!-- steel mithril -->\ <<set _WeaponPool to [200, 201, 202, 210, 211, 212, 220, 221, 222, 230, 231, 232]>>\ <<set _ArmorPool to [306, 307, 310, 311, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362]>>\ <<set _ShieldPool to [240, 241, 242]>>\ <<set _ArmsMatPool to [105,106]>>\ <<set _ShieldMatPool to [101,102]>>\ <<elseif $WORLD.smithLevel is 4>>\ <!-- mithril scalar -->\ <<set _WeaponPool to [200, 201, 202, 210, 211, 212, 220, 221, 222, 230, 231, 232]>>\ <<set _ArmorPool to [306, 307, 310, 311, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362]>>\ <<set _ShieldPool to [240, 241, 242]>>\ <<set _ArmsMatPool to [106,107]>>\ <<set _ShieldMatPool to [101,102]>>\ <<else>>\ <!-- should never happen? -->\ <<set _WeaponPool to [200]>>\ <<set _ArmorPool to [200]>>\ <<set _ShieldPool to [200]>>\ <<set _ArmsMatPool to [150]>>\ <<set _ShieldMatPool to [150]>>\ <<endif>>\ \ <!-- weapons -->\ <<set _qty to random(2, 3)>>\ <<for _i to 0; _i < _qty; _i++>>\ <<set _GS to [either(_WeaponPool), either(_ArmsMatPool), 0 ,0]>>\ <<AddToStore $Smith _GS>>\ <</for>>\ <!-- hatchet -->\ <<if random(1,3) < 3>>\ <<set _GS to [220, either(_ArmsMatPool), 0 ,0]>>\ <<AddToStore $Smith _GS>>\ <<endif>>\ <!-- shield -->\ <<set _qty to random(1, 2)>>\ <<for _i to 0; _i < _qty; _i++>>\ <<set _GS to [either(_ShieldPool), either(_ShieldMatPool), 0,0]>>\ <<AddToStore $Smith _GS>>\ <</for>>\ \ <!-- armor -->\ <<set _qty to random(4, 6)>>\ <<for _i to 0; _i < _qty; _i++>>\ <<set _GS to [either(_ArmorPool), either(_ArmsMatPool), 0 ,0]>>\ <<AddToStore $Smith _GS>>\ <</for>>\ <<endif>>\ <<if (_which is "gstore") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$GStore][_i] to [0,0,0,0]>><</for>>\ <<set $STORE[$GStore][0] to [113,0,0,0]>>\ <<set _GS to [100,0,random(2,4),0]>><<AddToStore $GStore _GS>>\ <<set _GS to [101,0,0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [103,0,0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [104,either(103,104),0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [253,either(103,104),0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [105,0,random(8,15),0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [106,0,random(1,4),0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [107,0,random(1,3),0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [108,0,random(1,3),0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [115,0,random(1,3),0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [220,102,0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<if $WORLD.smithLevel is 1>>\ <<set _GS to [220,103,0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<endif>>\ <<set _GS to [312,random(150,152),0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [313,random(150,152),0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<set _GS to [132,0,0,0]>><<if random(1,2) is 1>><<AddToStore $GStore _GS>><<endif>>\ <<endif>>\ <<if (_which is "pawn") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>>\ <<if $STORE[$Pawn][_i] neq [0,0,0,0]>>\ <<if random(1,2) is 1>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>>\ <<endif>>\ <<endif>>\ <</for>>\ <<endif>>\ <<if (_which is "lumbermill") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$LumberMill][_i] to [0,0,0,0]>><</for>>\ <<set $STORE[$LumberMill][0] to [105,0,100,0]>>\ <<set $STORE[$LumberMill][1] to [120,0,100,0]>>\ <<set $STORE[$LumberMill][2] to [121,0,100,0]>>\ <<set $STORE[$LumberMill][3] to [122,0,100,0]>>\ <<set _GS to [101,0,0,0]>><<AddToStore $GStore _GS>>\ <<set _GS to [220, either(102,103), 0, 0]>><<AddToStore $LumberMill _GS>>\ <<if $WORLD.smithLevel is 1>>\ <<if random(1,2) is 1>>\ <<set _GS to [220,104,0,0]>><<if random(1,2) is 1>><<AddToStore $LumberMill _GS>><<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<if (_which is "daphne") or (_which is "all")>>\ <<for _i to 0; _i < 10; _i++>><<set $STORE[$Daphne][_i] to [0,0,0,0]>><</for>>\ <<set _GS to [111,0,0,510]>>\ <<AddToStore $Daphne _GS>>\ <<set _GS to [550, 0, random(4,6), 0]>>\ <<AddToStore $Daphne _GS>>\ <<set _GS to [551, 0, random(3,5), 0]>>\ <<AddToStore $Daphne _GS>>\ <<set _GS to [552, 0, random(2,4), 0]>>\ <<AddToStore $Daphne _GS>>\ <<set _DUnlocks to 0>>\ <<for _i to ($WORLD.DaphneQuests.length -1); _i > -1; _i-->>\ <<if $WORLD.DaphneQuests[_i] is 2>>\ <<set _DUnlocks to _DUnlocks +1>>\ <<endif>>\ <</for>>\ <<if _DUnlocks > 1>>\ <<set _GS to [553, 0, random(2,3), 0]>>\ <<AddToStore $Daphne _GS>>\ <<endif>>\ <<if _DUnlocks > 200>>\ <<set _GS to [554, 0, random(1,2), 0]>>\ <<AddToStore $Daphne _GS>>\ <<endif>>\ <<if _DUnlocks > 300>>\ <<set _GS to [555, 0, 1, 0]>>\ <<AddToStore $Daphne _GS>>\ <<endif>>\ <<if _DUnlocks > 400>>\ <<set _GS to [556, 0, 1, 0]>>\ <<AddToStore $Daphne _GS>>\ <<endif>>\ <<if _DUnlocks > 500>>\ <<set _GS to [557, 0, 1, 0]>>\ <<AddToStore $Daphne _GS>>\ <<endif>>\ <<endif>>\<</widget>>\ <<widget "Store">>\ <<set _s to $args[0]>>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[_s].length; _i++>>\ <<set _item to $STORE[_s][_i]>>\ <<if _item[0] > 0>>\ <<capture _i, _s>>\ <<button "[Buy]">> <<set _buttonitem to $STORE[_s][_i]>>\ <<DescribeItem _buttonitem>>\ <<set _p to $ItemPoke.price>>\ <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> <<set _st to $ItemPoke.stackable>>\ <<set _foo to "Item: " + _buttonitem + "stackable: " + _st>>\ <<AddToLog _foo>>\ <<set _ByValHack to []>>\ <<set _ByValHack[0] to $STORE[_s][_i][0]>> <<set _ByValHack[1] to $STORE[_s][_i][1]>> <<set _ByValHack[2] to 1>> <<set _ByValHack[3] to $STORE[_s][_i][3]>> \ <<set _try to setup.additemtoinv($CC, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $STORE[_s][_i][2] > 1>>\ <<set $STORE[_s][_i][2] to $STORE[_s][_i][2] -1>> <<else>>\ <<set $STORE[_s][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> \ <</capture>>\ <<set _item to $STORE[_s][_i]>>\ <<DescribeItem _item>>\ <<set _p to $ItemPoke.price>>\ <<set _st to $ItemPoke.stackable>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <<print $ItemPoke.fullname>>, cost: <<print $ItemPoke.price>> \ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<if _desc neq "none">>\ <<print _desc>> <<endif>>\ <</capture>>\ <</for>>\ <hr>\ <span id="storereport"></span>\ <</widget>>\ <<widget "Pawn">>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[$Pawn].length; _i++>>\ <<set _item to $STORE[$Pawn][_i]>>\ <<if _item[0] > 0>>\ <<if $DebugMode>>(_item): <<endif>>\ <<DescribeItem _item>>\ <<set _st to $ItemPoke.stackable>>\ <<set _p to $ItemPoke.price>>\ <<capture _i, _p, _st>>\ <<Bullet>> <<button "[Buyback]">> <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> \ <<set _ByValHack to []>>\ <<set _ByValHack[0] to $STORE[$Pawn][_i][0]>> <<set _ByValHack[1] to $STORE[$Pawn][_i][1]>> <<set _ByValHack[2] to 1>> <<set _ByValHack[3] to $STORE[$Pawn][_i][3]>> \ <<set _try to setup.additemtoinv($CC, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $STORE[$Pawn][_i][2] > 1>>\ <<set $STORE[$Pawn][_i][2] to $STORE[$Pawn][_i][2] -1>> <<else>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> \ <</capture>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <!-- fetch data for actual item, not 1-quantity ByVal hack, so that quantities display correctly -->\ <<DescribeItem $STORE[$Pawn][_i]>>\ <<print $ItemPoke.fullname>>, cost: _p (returned: $ItemPoke.price)\ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<else>>\ <<Bullet>> <br>\ <<endif>>\ <</for>>\ <span id="storereport"></span>\ \ <<unset _item>>\ \ <hr>\ @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <!-- half price for gems -->\ <<if (_item[0] > 549) and (_item[0] < 560)>>\ <<set _p to _p / 2>>\ <<endif>>\ <<set _p to Math.trunc(_p)>>\ <<capture _i, _p>>\ <<set _st to $ItemPoke.stackable>>\ <<if $ItemPoke.unique is true>>\ <span class="grayb"><<button "[Unique]">><</button>> <<print $ItemPoke.fullname>></span> <<elseif _desc neq "none">>\ <<if $DebugMode>>(_item): <<endif>>\ <<set _buttontext to "[Pawn for " + _p + " gold]">>\ <<button "_buttontext">> <!-- Sugarcube does not clone values until passage refresh -->\ <<set _AAAA to $PC[$CC][$PCinven][_i][0]>> <<set _BBBB to $PC[$CC][$PCinven][_i][1]>> <<set _CCCC to 1>> <<set _DDDD to $PC[$CC][$PCinven][_i][3]>> <<set _ByValHack to [_AAAA, _BBBB, _CCCC, _DDDD]>> <<DescribeItem _ByValHack>> <<set _st to $ItemPoke.stackable>>\ <<set _try to setup.additemtostore($Pawn, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>Store has no more room<</replace>>\ <<else>> <<set _desc to $ItemPoke.fullname>>\ <<replace "#storereport">><<GainGold _p>><</replace>>\ <!-- if has qty, subtract one, otherwise remove -->\ <<if $PC[$CC][$PCinven][_i][2] > 1>>\ <<set $PC[$CC][$PCinven][_i][2] to $PC[$CC][$PCinven][_i][2] -1>> <<else>>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> _desc <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\ <<widget "LumberMill">>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[$LumberMill].length; _i++>>\ <<set _item to $STORE[$LumberMill][_i]>>\ <<if _item[0] > 0>>\ <<if $DebugMode>>(_item): <<endif>>\ <<DescribeItem _item>>\ <<set _p to $ItemPoke.price * 2>>\ <<set _st to $ItemPoke.stackable>>\ <<set _BuyQty to 1>>\ <<if $STORE[$LumberMill][_i][2] > 0>>\ <<set _BuyQty to 10>>\ <<if $STORE[$LumberMill][_i][2] < 9>>\ <<set _BuyQty to $STORE[$LumberMill][_i][2]>>\ <<endif>>\ <<endif>>\ <<set _p to _p * _BuyQty>>\ <<capture _i, _p, _st, _BuyQty>>\ <<if _BuyQty > 1>>\ <<set _buttontext to "[Buy " + _BuyQty + " for " + _p + " gold]">>\ <<else>>\ <<set _buttontext to "[Buy for " + _p + " gold]">>\ <<endif>>\ <<button "_buttontext">> <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> \ <<set _ByValHack to []>>\ <<set _ByValHack[0] to $STORE[$LumberMill][_i][0]>> <<set _ByValHack[1] to $STORE[$LumberMill][_i][1]>> <<set _ByValHack[2] to _BuyQty>> <<set _ByValHack[3] to $STORE[$LumberMill][_i][3]>> \ <<set _try to setup.additemtoinv($CC, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <<if $STORE[$LumberMill][_i][2] > _BuyQty>>\ <<set $STORE[$LumberMill][_i][2] to $STORE[$LumberMill][_i][2] - _BuyQty>> <<else>>\ <<set $STORE[$LumberMill][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> \ <</capture>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <!-- fetch data for actual item, not 1-quantity ByVal hack, so that quantities display correctly -->\ <<DescribeItem $STORE[$LumberMill][_i]>>\ <<print $ItemPoke.fullname>>, cost: _p \ <<if $ItemPoke.stackable is true>> for <<print _BuyQty>><<endif>>\ <br>\ <<endif>>\ <</for>>\ <span id="storereport"></span>\ \ <<unset _item>>\ \ <hr>\ @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set _st to $ItemPoke.stackable>>\ <<set _w to $PC[$CC][$PCinven][_i][0]>>\ <<if (_w is 105) or (_w is 120) or (_w is 121) or (_w is 122) or (_w is 138)>>\ <<if $DebugMode>>(_item): <<endif>>\ <<set _StackPrice to _p * $PC[$CC][$PCinven][_i][2]>>\ <<set _buttontext to "[Sell all for " + _StackPrice + " gold]">>\ <<button "_buttontext">> <!-- Sugarcube does not clone values until passage refresh -->\ <<set _SellThis to clone($PC[$CC][$PCinven][_i])>>\ <<DescribeItem _SellThis>> <<set _st to $ItemPoke.stackable>>\ <<set _try to setup.additemtostore($LumberMill, _SellThis, _st)>> <<if _try < 0>> <<replace "#storereport">>Store has no more room<</replace>>\ <<else>> <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set _StackPrice to _p * _SellThis[2]>>\ <<replace "#storereport">><<GainGold _StackPrice>><</replace>>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<set _asd to Engine.play(passage(), true)>> <<endif>> <</button>> _desc <<else>>\ <<if $PC[$CC][$PCinven][_i][0] > 0>>\ <<set _DescribeThis to clone($PC[$CC][$PCinven][_i])>>\ <<DescribeItem _DescribeThis>>\ <span class="grayb"><<button "[No sell]">><</button>></span> <<print $ItemPoke.fullname>> <<endif>>\ <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\ <<widget "House">>\ <!-- FIX THIS -->\ <<if $STORE[$House].length < $WORLD.house.storage>>\ <<for _i to 0; _i < $WORLD.house.storage; _i++>>\ <<if setup.TypeOf($STORE[$House][_i]) is "undefined">>\ <<set $STORE[$House][_i] to [0,0,0,0]>>\ <<endif>>\ <</for>>\ <<endif>>\ \ @@color:Gold;In storage@@ <<for _i to 0; _i < $STORE[$House].length; _i++>>\ <<if _i gte $WORLD.house.storage>>\ <<if $STORE[$House][_i][0] > 0>>\ [Locked] (Upgrade storage to access this item) <<endif>>\ <<else>>\ <<set _item to $STORE[$House][_i]>>\ <<if _item[0] > 0>>\ <<if $DebugMode>>(_item): <<endif>>\ <<DescribeItem _item>>\ <<set _st to $ItemPoke.stackable>>\ <<capture _i, _st>>\ <<Bullet>> <<button "[Take]">> <<set _ByValHack to []>>\ <<set _ByValHack[0] to $STORE[$House][_i][0]>> <<set _ByValHack[1] to $STORE[$House][_i][1]>> <<set _ByValHack[2] to 1>> <<set _ByValHack[3] to $STORE[$House][_i][3]>> \ <<set _try to setup.additemtoinv($CC, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $STORE[$House][_i][2] > 1>>\ <<set $STORE[$House][_i][2] to $STORE[$House][_i][2] -1>> <<else>>\ <<set $STORE[$House][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> \ <</capture>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <!-- fetch data for actual item, not 1-quantity ByVal hack, so that quantities display correctly -->\ <<DescribeItem $STORE[$House][_i]>>\ <<print $ItemPoke.fullname>> \ <br>\ <<else>>\ <<Bullet>> <br>\ <<endif>>\ <<endif>>\ <</for>>\ \ <<unset _item>>\ \ <hr>\ @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _st to $ItemPoke.stackable>>\ <<if _desc neq "none">>\ <<if $DebugMode>>(_item): <<endif>>\ <<set _buttontext to "[Drop]">>\ <<button "_buttontext">> <!-- Sugarcube does not clone values until passage refresh -->\ <<set _ItemToSell to clone($PC[$CC][$PCinven][_i])>>\ <<set _ItemToSell[2] to 1>>\ <<DescribeItem _ItemToSell>> <<set _st to $ItemPoke.stackable>>\ <<set _try to setup.additemtostore($House, _ItemToSell, _st)>> <<if _try < 0>> <<replace "#storereport">>Store has no more room<</replace>>\ <<else>> <<set _desc to $ItemPoke.fullname>>\ <!-- if has qty, subtract one, otherwise remove -->\ <<if $PC[$CC][$PCinven][_i][2] > 1>>\ <<set $PC[$CC][$PCinven][_i][2] to $PC[$CC][$PCinven][_i][2] -1>> <<else>>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<replace "#InvQty">><<ReportInvFullness>><</replace>> <</button>> _desc <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\ <<widget "AddToStore">>\ <<set _WhichStore to $args[0]>>\ <<set _WhichItem to $args[1]>>\ <<set _IsDone to false>>\ <<for _ATS to 0; _ATS < 10; _ATS++>>\ <<if $STORE[_WhichStore][_ATS][0] is 0>>\ <<set $STORE[_WhichStore][_ATS] to _WhichItem>>\ <<set _IsDone to true>>\ <<endif>>\ <<if _IsDone is true>><<set _ATS to 99>><<endif>>\ <</for>>\ <</widget>>\<span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span>\ <hr>\ <<print $GameLog>><<if $PC[$CC][$PCz] < 0>>\ @@color:Red;Error: PCz is $PC[$CC][$PCz]@@ Recovering... <<set $PC[$CC][$PCz] to 0>>\ <<endif>>\ <<if $WORLD.dungenned[$PC[$CC][$PCz]] > 0>>\ @@color:Red;Error: Request to generate a level that already exists@@ Proceeding anyway... <<endif>>\ \ <<set $Dungeon to setup.Snake()>>\ \ <!-- room description -->\\ <<set _descriptions to []>> <<for _i to 0; _i < 49; _i++>>\ <<set _descriptions[_i] to _i>>\ <</for>>\ <<for _i to 0; _i < $WORLD.dundim +1; _i++>>\ <<for _j to 0; _j < $WORLD.dundim +1; _j++>>\ <<set _pickone to random(0, _descriptions.length)>>\ <<set $Dungeon[_i][_j][8] to _pickone +1>>\ <<set _descriptions to _descriptions.deleteAt(_pickone)>>\ <</for>>\ <</for>>\ \ \ <!-- room events -->\ <<for _i to 0; _i < $WORLD.dundim +1; _i++>>\ <<for _j to 0; _j < $WORLD.dundim +1; _j++>>\ <<set _eventtype to random(1,10)>>\ <<if _eventtype is 1>><!-- event -->\ <<set $Dungeon[_i][_j][11] to "Event" + random(100,119)>>\ <<set $Dungeon[_i][_j][12] to 0>>\ <<elseif _eventtype is 2>><!-- trap -->\ <<set $Dungeon[_i][_j][11] to "Trap">>\ <<set $Dungeon[_i][_j][12] to random(1,20)>>\ <<elseif _eventtype < 6>><!-- monster -->\ <!-- implement weighting by dungeon level and what actually exists -->\ <<set $Dungeon[_i][_j][11] to "Monster">>\ <<set $Dungeon[_i][_j][12] to setup.ChooseMon()>>\ <<else>>\ <!-- nothing -->\ <<endif>>\ <</for>>\ <</for>>\ debug: <<print _descriptions.length>> <<set $Dungeon[2][3][11] to "StairsDown">>\ <<set $Dungeon[2][3][12] to 0>>\ <<set $Dungeon[0][0][11] to "StairsUp">>\ <<set $Dungeon[0][0][12] to 0>>\ \ <!--x,y defintions-->\ <!--0,1,2,3 = n,e,s,w exit id-->\ <!--4,5,6,7 = exit special attributes-->\ <!--8,9,10= room descriptions/traits-->\ <!--11,12= encounter id, state-->\ <!--13,14= loot id, state-->\ <!--15=visited-->\ \ <<set $WORLD.dungenned[$PC[$CC][$PCz]] to 1>> <<set $WORLD.dungenned[$PC[$CC][$PCz] +1] to 0>><<set $PC[$CC][$PCstate] to "dead">>\ <<set $PC[$CC][$PCmisc].deaths to $PC[$CC][$PCmisc].deaths +1>>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<if $Dungeon[_pz][_px][_py][11] is 0>>\ <<set $Dungeon[_pz][_px][_py][11] to "PlayerCorpse">>\ <<set $Dungeon[_pz][_px][_py][12] to $CC>>\ <<else>>\ <<set $PC[$CC][$PCstate] to "lost">>\ <<endif>>\ <<elseif $PC[$CC][$PClocation] is "forest">>\ <<set _pfx to $PC[$CC][$PCfx]>>\ <<set _pfy to $PC[$CC][$PCfy]>>\ <<set _pfz to $PC[$CC][$PCfz]>>\ <<set $PC[$CC][$PCdeathHACK] to ["forest",_pfx,_pfy,_pfz]>>\ <<elseif $PC[$CC][$PClocation] is "desert">>\ <<set _pdx to $PC[$CC][$PCdx]>>\ <<set _pdy to $PC[$CC][$PCdy]>>\ <<set _pdz to $PC[$CC][$PCdz]>>\ <<set $PC[$CC][$PCdeathHACK] to ["desert",_pdx,_pdy,_pdz]>>\ <<else>>\ <!-- starved to death in town -->\ <<endif>>\ \ @@color:Gold; Death@@ <<SimplePic "boxdead.jpg">>\ <hr> Your cause of death was: <<print $WORLD.diedby>> <<set $PC[$CC][$ancestraldeath] to $WORLD.diedby>>\ But while this is the end of <<if $PC[$CC][$PCsex] is "male">>@@color:Aqua;<<else>>@@color:Pink;<<print $PC[$CC][$PCname]>>@@<<endif>>'s life for now, you can always continue with a new one. <<if (setup.AchievementHandler("I feel your loss", "HAS?", -1) > 0) or (setup.AchievementHandler("Three's Company", "HAS?", -1) > 0)>>\ And who knows? Maybe you can even //recover// this character with another character? <<endif>>\ <<if $PC[$CC][$PClevel] > 2>>\ \ <<AwardAchievement "Three's Company">>\ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Continue" "Preamble">> <<AutoSaveLoad "set">> <<set $CC to -1>>\ <</link>>\ </span>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Ancestral corpse@@ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _RightPic to $ImgPath + "playercorpse.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<if $Dungeon[_pz][_px][_py][12] is $CC>>\ You find the corpse of one of your ancestors here. It has long since been looted of all its equipment, and is far too rotten and skeletal to do anything with. <<elseif ($Dungeon[_pz][_px][_py][12] > -1) and ($Dungeon[_pz][_px][_py][12] < 3)>>\ <<set _CorpsePTR to $Dungeon[_pz][_px][_py][12]>>\ <<set _HimHer to "him">>\ <<if $PC[_CorpsePTR][$PCsex] is "male">>\ <<set _HimHer to "her">>\ <<endif>>\ You find <<print $PC[_CorpsePTR][$PCname]>>'s corpse here. The body hasn't decayed much, and it might still be possible to bring _HimHer back to life. <<set _PutItHere to setup.getnextinvslot($CC)>> <<if _PutItHere < 0 >>\ Unfortunately your inventory is full, and carrying a body around isn't exactly easy. Maybe clear up some inventory space and come back later? <<else>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Take the body with you">> <<set $Dungeon[_pz][_px][_py][11] to 0>> <<set $Dungeon[_pz][_px][_py][12] to 0>> <<set _Corpse to [999, _CorpsePTR, 0, 0]>> <<set $PC[_CorpsePTR][$PCstate] to "in transit">> <<set $PC[_CorpsePTR][$PClocation] to "in transit">> <<set $PC[_CorpsePTR][$PCz] to $CC>> <<set _foo to setup.additemtoinv($CC, _Corpse, false)>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You pick up the body<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<else>>\ There is a rotten corpse here. @@color:Yellow;Debug note@@: Something went wrong. This appears to be a chartacer corpse, but the ID ($Dungeon[_pz][_px][_py][12]) is unrecognized. If you're a player seeing this, whichever character you're trying to ressurect can't be recovered for some reason. You may as well reincarnate a new character in that slot. <<endif>>\ <<elseif $PC[$CC][$PClocation] is "forest">>\ <<set _px to $PC[$CC][$PCfx]>>\ <<set _py to $PC[$CC][$PCfy]>>\ <<set _pz to $PC[$CC][$PCfz]>>\ <<set _RightPic to $ImgPath + "corpseforest.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <!-- maybe forest should become like the tower -->\ <<set _CorpsePTR to -1>>\ <<for _DeathLoop to 0; _DeathLoop < 3; _DeathLoop++>>\ <<if ($PC[_DeathLoop][$PCstate] is "dead") or ($PC[_DeathLoop][$PCstate] is "lost")>>\ <<if ($PC[_DeathLoop][$PClocation] is "forest") and ($PC[_DeathLoop][$PCfz] is _pz)>>\ <<set _CorpsePTR to _DeathLoop>>\ <<if $PC[_DeathLoop][$PCsex] is "male">>\ <<set _HimHer to "him">>\ <<else>>\ <<set _HimHer to "her">>\ <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _CorpsePTR < 0>>\ @@color:Red;Error in Player Corpse@@ in forest, a corpse was placed here, but I couldn't find a dead or lost player on this map <<elseif _CorpsePTR is $CC>>\ @@color:Red;Error in Player Corpse@@ in forest, a corpse was found...for the active player who found it? What? <<else>>\ You find <<print $PC[_CorpsePTR][$PCname]>>'s corpse here. The body hasn't decayed much, and it might still be possible to bring _HimHer back to life. <<set _PutItHere to setup.getnextinvslot($CC)>>\ <<if _PutItHere < 0 >>\ Unfortunately your inventory is full, and carrying a body around isn't exactly easy. Maybe clear up some inventory space and come back later? <<else>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Take the body with you">> <<set _Corpse to [999, _CorpsePTR, 0, 0]>> <<set $ForestMap[_px][_py] to 0>> <<set $PC[_CorpsePTR][$PCstate] to "in transit">> <<set $PC[_CorpsePTR][$PClocation] to "in transit">> <<set $PC[_CorpsePTR][$PCz] to $CC>> <<set _foo to setup.additemtoinv($CC, _Corpse, false)>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You pick up the body<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PClocation] is "desert">>\ <<set _px to $PC[$CC][$PCdx]>>\ <<set _py to $PC[$CC][$PCdy]>>\ <<set _pz to $PC[$CC][$PCdz]>>\ <<set _RightPic to $ImgPath + "corpseforest.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <!-- maybe desert should become like the tower -->\ <<set _CorpsePTR to -1>>\ <<for _DeathLoop to 0; _DeathLoop < 3; _DeathLoop++>>\ <<if ($PC[_DeathLoop][$PCstate] is "dead") or ($PC[_DeathLoop][$PCstate] is "lost")>>\ <<if ($PC[_DeathLoop][$PClocation] is "desert") and ($PC[_DeathLoop][$PCdz] is _pz)>>\ <<set _CorpsePTR to _DeathLoop>>\ <<if $PC[_DeathLoop][$PCsex] is "male">>\ <<set _HimHer to "him">>\ <<else>>\ <<set _HimHer to "her">>\ <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _CorpsePTR < 0>>\ @@color:Red;Error in Player Corpse@@ in desertt, a corpse was placed here, but I couldn't find a dead or lost player on this map <<elseif _CorpsePTR is $CC>>\ @@color:Red;Error in Player Corpse@@ in desert, a corpse was found...for the active player who found it? What? <<else>>\ You find <<print $PC[_CorpsePTR][$PCname]>>'s corpse here. The body hasn't decayed much, and it might still be possible to bring _HimHer back to life. <<set _PutItHere to setup.getnextinvslot($CC)>>\ <<if _PutItHere < 0 >>\ Unfortunately your inventory is full, and carrying a body around isn't exactly easy. Maybe clear up some inventory space and come back later? <<else>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Take the body with you">> <<set _Corpse to [999, _CorpsePTR, 0, 0]>> <<set $DesertMap[_px][_py] to 0>> <<set $PC[_CorpsePTR][$PCstate] to "in transit">> <<set $PC[_CorpsePTR][$PClocation] to "in transit">> <<set $PC[_CorpsePTR][$PCz] to $CC>> <<set _foo to setup.additemtoinv($CC, _Corpse, false)>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You pick up the body<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<endif>>\ <<else>>\ @@color:Red;Error: PlayerCorpse has been found, but we're not in the tower, forest, or desert?@@ <<endif>>\ <</replace>>\<<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "goblin pussylick">>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ The goblin collapses to the ground in a fit of masturbation, staring at you lustfully as she plunges her fingers into her dripping pussy. Thinking she can put those fingers to better use, you beckon her over and begin to disrobe. \ <<if _pcpenis is true>>\ She immediately leaps for your cock, but you grab her by the shoulders and redirect her to your pussy. She seems disappointed at first, but quickly accepts her place and climbs between your legs as you lay on your back on the ground. Within moments she's eagerly lapping at your clitoris with her tongue while gently probing your insides with one finger. <<else>>\ The moment you pull your pants down, she clambers underneath you and plunges her tongue directly up into your pussy as deeply as she can reach. You nearly stumble at the sensation, but delicately slide your fingers through her hair, panting as she goes to work on you. She's very good at this, and you let her continue her ministrations for a couple minutes before you tire of standing, grab her head and pull it with you as you roll down onto your back. It's awkward at first, but it's all good once you're relaxed on your back with her head between your thighs. <<endif>>\ Stretching your arms over your head, you give into the sensation as her longer-than-human tongue probes inside you while her upper lip gently kneads your clitoris. It's a clever double action, and you suspect that goblin lips are more prehensile than human. That doesn't stop her from using her tongue though, oh no, and you gasp as she slides out, then up and around and back down through your clit in one smooth motion, before then sliding a finger insde and going to work full-time on your outsides with her tongue. Letting the master practice her craft, you find your hips moving up and down against her of their own volition, then gasp when she suddenly slides a dildo deep inside you on your juices while her arms wrap themselves around your hips to hold you firmly in place. Giving in to the pleasure, you feel the dildo rapidly pulse inside you as its rubbery upper edge glides across your clit, allowing her time to spare to look up into your eyes with a goofy grin. You climax like that, with her smiling up between your legs into your eyes, clearly pleased to have serviced you. Bringing you down gracefully, she goes back to gentle licking while nuzzling her nose against your stomach, then finally withdrawing the dildo and sliding it up between your breasts to see. It's bright purple, and shaped like a goblin dick. <<if random(1,3) is 1>>\ "I imagined I was <<print either("a huge wolf fucking you","my pet dire wolf")>>," she grins at you. "<<print either("You were all bent over with your face mashed into the ground while I pounded you senseless.","All knotted up inside you while you begged for more like a whore.","You screamed and cried and tried to get away while I pumped you full of wolf puppies.")>> Best fantasy ever!" <<else>>\ "I imagined it was all <<print either("four","five","nine")>> of my brothers taking their turns on you," she explains happily. "<<print either("Cumming over and over and knocking you up all full of goblin babies.","You cried and begged for more like a whore. It was awesome!","Two at a time in your ass while the rest took turns in your pussy and you sucked off everybody who didn't fit. Best fantasy ever!")>>" <<endif>>\ Turning away to hide your renewed arousal, you allow her that small victory before putting on your clothes and getting back on you way. <<elseif $WORLD.datapasser is "goblin cowgirl">>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The goblin collapses to the ground in a fit of masturbation, staring at you lustfully as he begins furiously stroking his cock. "No, stop touching yourself," you frown at him. "That cock belongs to me now." A look of surprised delight grows on his face as understanding dawns on him. You push him onto the ground and on his back, and straddle him. You watch with amusement as he strains to reach his cock up to you with your foot on his stomach. "Alright, time to see what you can do what that," you chuckle, as you slowly...far too slow his tastes...lower yourself onto his cock. <<FemaleVirginity "goblin">> \ <<if $Mon.sex is "male">>\ Taking advantage of the opportunity, he immediately thrusts his hips upward with enough force that your downward descent is turned into an upward bounce, then grabs your hips to pull you back down. <<if $PC[$CC][$PCstr] + $PC[$CC][$PCstr] > 22>>\ "No," you growl through your growing lust. "I'm the one in control here." Standing back up and planting a foot firmly on his chest, you watch with interest as he groans in agony, before finally relenting and laying prone. You slowly lower yourself again, locking eyes with me as your pussy lips jusy barely begun to nudge up against his cock. He squints and clenches his teeth, breathing heavily but still not moving. Satisfied with his submission, you get to pleasuring yourself. Taking a deep breath, your eyes begin to glaze over as you lower yourself just half an inch onto his cock. Nearly tasting his pre-cum begin to libricate you, you slide up and down a couple times before lowering yourself another inch, two inches, three inches around his member. You take your good sweet time, with half a dozen pulses up and down for every inch of his length you take inside you. By the time your pelvis touches his, you feel a pulse, then a small geyser of cum burst up into your cervix. You slap the goblin in the face for his premature ejculation without so much as sparing him a glace, then get to work grinding up and down on his still-erect cock, clenching your insides around it and feeling the heavily-bulbed tip pressing up near your womb. The thought of a goblin making you pregnant both irritates and fascinates you, and it's with some annoyance that it's at that exact moment that you both climax. Too horny to care, you revel in the sensation of his generous rush of semen filling you, staying corked up inside of you by his cock. After another dozen or so times impaling yourself on his cock you stand up, letting the semen slide down your thighs in long slimy trails. <<PregnancyTest "goblin">> <<else>>\ <<if random(1,2) is 1>>\ You open your mouth to object, but your words are cut off by the sensation of him roughly impaling you down onto his cock a second time. Grabbing his hands you try to pull them off, but they're nearly as big as your head a his hands are nearly as big as your head and despite your strength you can't quite pry his fingers off. Realizing he's successfully turned the tables on you and can now have his way with you, you let out a cry, uselessly punching and prying at his fingers while he slams you onto his cock over and over. <<else>>\ You're surprised by his agressiveness, but decide to let him have his fun. You're getting what you want either way. Feeling his hands tighten on your waist, you're surprised at the strength of his grip as he pushes you up, then yanks you back down to impale you on his cock. "Oh, that's good," you moan softly. Relaxing back and letting him do all the work of lifting you up and dropping you back down on his thick meaty cock, you have 3 or 4 climaxes before he finally grunts and sprays a burst of milky goblin seed inside you. At last finished, he slowly brings you down on his rod to come to rest on his pelvis, his cock slowly growing soft after several more minutes inside you. <<endif>>\ <<endif>>\ <<else>>\ He makes some almost-but-not-quite female noises as you sit back up off of his cock and slowly let yourself downonto it again. His cock <<print either("is strangely thin for how long it is", "doesn't penetrate you as deeply as you'd prefer","is curved in a way that you can feel as it works in and out of you")>> and the sensation is a little disppoianting. Trying to make up for it by clenching your pussy more tightly around it, he squeels and ejaculates immediately. You manage to get another few thrusts back up and down on it before it grows to soft to continue. Standing to leave the now-sleeping goblin with a look of contentment on his face, you shrug and continue on your way. <<endif>>\ <<elseif $WORLD.datapasser is "goblin vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven +1>>\ Collapsing to her knees, the goblin eyes your crotch sadly and begins crying. Almost feeling bad for what's about to happen, you remove your pants and push her onto her back. "Wait, what?" she looks up at you in shock. "You mean you're going to fuck me even though I lost? Woo! Score!" In a flash, her tears are replaced with a nearly giddy grin as she tears off what little clothes she has and looks up at you pleadingly, desperately almost. Amused by her change in attitude, you happily oblige her by poking the tip of your dick into her already-dripping pussy, delighting in her gasps of pleasure as you take your time to slowly nudge it just a little further in with each thrust. \ <<if _pcboobs > 0>>\ Meanwhile, she reaches up and fondles your boobs, tracing little circles around your nipples and squeezing them generously. \ <<else>>\ Meanwhile, she takes the initiative with your hands and plants them firmly on her huge, ponderous breasts and sighs in relief. \ <<endif>>\ Between that and the constant massaging of your cock by her tightly muscled vaginal walls, it doesn't take long before you both climax together. <<MaleVirginity "a goblin">> \ <<set _r to random(1,3)>>\ <<if _r is 1>>\ "That was the best!" she giggles as you both clean up. "Almost makes me ok with losing. But you'd better watch out, because next time I'm going to win and I won't be as gentle as you were." <<elseif _r is 2>>\ "Wow," she sighs happily. "I don't know why you fought so hard to win if you you were just going to fuck me anyway. But happy ending for both of us? I'll take it!" <<else>>\ "That was amazing," she exhales with a dreamly look in her eyes. "Maybe I should try losing fights more often." <<endif>>\ <<elseif $WORLD.datapasser is "goblin assfuck">>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven +1>>\ The goblin collapses to the ground masturabting in a fit of lust, staring at you in apparant confusion as he begins furiously stroking his dick. Uninterested in this, you grab him roughly and flip him over onto his stomach. Too stunned to object, you spread his butt-cheeks and ram your dick up against his anus. He's squirming and it's a little hard to get in, so you reach underneath to moisten up a hand in pre-cum still dripping from his rapidly shrinking penis, then lather up his asshole with it to give you easier entry. He begins to protest, but you ignore him and instead glide your dick up into his ass hole using his own lubrication. Once in, moving back and forth becomes easier, and he stops protestign beyond a whimper as you quickly increase your pace to a stready clip. Placing one hand on his back, you push down and lean forward to rotate his hips higher and his chest down to the ground in complete submission. That's when he completely gives up. You, on the other hand, are just getting started. "Oh yes," you moan. "Goblin ass is the best. So tight. This isn't your first time on the receiving end, is it?" He doesn't answer and you don't care. Instead you grip his hips with both hands and starting pounding him for real. It doesn't take much more of this before you feel your climax coming, and you make sure to thrust all the way balls-deep into his ass hole to deliver your semen as far up into him as it can reach. Briefly considering making him lick you clean, you instead settle for wiping your dick off on his clothes, before getting dressed again and leaving him lying there. <<else>>\ Error in goblin event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<endif>>\ <<if _pcpenis > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginal + 1>>\ <<endif>>\ \ <!-- part 1 -->\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ No longer concerned with pretense, the slime quickly returns to its natural amoeboid state and oozes over to your fallen form. Engulfing your entire body up the the neck, \ <<if _pcpussy > 0>>\ it immediately plunges into all of your holes \ <<elseif _pcpenis > 0>>\ it immediately tugs on your cock while plunging into your asshole \ <<else>>\ it immediately plunges into your asshole \ <<endif>>\ <<if _pcboobs > 0>>\ and <<print either("and begins fondling your tits.","and starts suctioning milk from your chest.","while encircling and teasing your nipples.")>>\ <<else>> . <<endif>>\ <<elseif _r is 2>>\ Collapsing to your knees, you watch helplessly as the slime extends tendrils from its midsection, then wraps itself around your ankles and pulls them apart. Dragging you effortlessly to where it waits with several very phallic appendges already twitching and dripping in anticipation. <<elseif _r is 3>>\ <<print either("The slime","Your conqueror")>> <<print either ("considers you for a moment","seems to consider how to proceed","stares emotionlessly at you","boggles in excitement","briefly reconfiguers its form")>> before <<print either("ambling","sloshing itself","rolling itself","walking")>> over on <<print either("gelatinous legs","humanoid appendages","gelantinous appendages")>> it doesn't need. \ <<print either("Reaching out to tentatively explore its way up your thighs","Quickly engulfing you from feet to mid-thigh","Encircling your ankles and yanking them apart")>>, it <<print either("then gradually works its way across most of your body up to the neck.","then takes its time the rest of the way up, filling every nook and crevice of your body within its reach along the way.","immediately glides a single tendril in wavy little ripples up your thighs, then shifts the majority of its bulk to a large glob wrapped securely around your waist.")>> <<if _pcpussy > 0>>\ it immediately plunges into all of your holes \ <<elseif _pcpenis > 0>>\ it immediately tugs on your cock while plunging into your asshole \ <<else>>\ Finding little else to work with, it pulls opens your asshole and you watch your lower abdomen grow as it begins shifting much of its bulk into your intestinal tract. <<endif>>\ <<endif>>\ <<if _pcpussy > 0>>\ <<FemaleVirginity "a slime creature">>\ <<endif>>\ <!-- part 2 -->\ <<if _pcpussy > 0>>\ <<if _pcpenis > 0>>\ <<print either("With tendrils in both your pussy and around your cock, there's a subtle rippling motion to its efforts, as if it's not only gliding across the length of your shaft but also vibrating every bit of its body where it touches you both inside and out.","Roughly pistoning your puussy with one tendril, yet another emits from its mass to encirle and rub at your penis in a complementary motion with such delicacy that it's as if an entirely different creature were at work on each of your organs.","Discontent with merely your pussy however, the slime extends out another few tendrils to grasp your cock, each gliding up and down its length in time with the bulk of its body already enthusiastically fucking you.")>> <<else>>\ <<print either("Working both your pussy and ass as if it can't tell the difference, the slime fucks both holes with a reckless abandon that renders you instantly receptive and willing.","Realizing that the fluids it wants depend on your pleasure, the slime spares no effort to tickle and tittle and explore your clit while simultaneously massaging the entirety of your insides in places a cock could never reach.")>> <<print either("The creature's endurance shocks you, never needing to rest of breath in its quest to carry you to the highest height of pleasure.","And yet somehow it brings you to even higher pleasure by fitting impossibly more of its body inside you, gyrating and wiggling against every bit of your insides.","With the ability to shape its body however it pleases, the slime works you both inside and out, from clitoris to nearly your cervix, while still giving sensual attention up your thighs and chest.")>> <<endif>>\ <<elseif _pcpenis > 0>>\ <<print either("Clearly knowing what it's after, the slime briefly tickles your balls then laches onto your cock like a giant vaccum cleaner, audibly sucking and slurping you to full mast.")>> <<print either("It seems to be in no rush, wetly working your shaft with a patience clearly born of experience, delicately massaging your balls and teasing your nipples ","Gasping in sudden pleasure as it fucks itself on and off your cock, you can't help but marvel at the unique of the experience. With no bones to limit its movements, the slime contorts and engulfs and ripples across every sensual bit of your entire body, licking and sucing on your cock all the while.","Roughly jostling you by the hips, the slime then stretches out your arms and legs out to their limit as if to let you know who's in charge as it suctions itself onto your cock and gets to work.","Not quite a tongue, not quite a pussy, the slime tickles and licks and fucks your cock in ways no mere biped ever could.","As if made of water, the slime ripples and bubbles its way across your cock in a way that is both sexual and sexual, sparing no effort to touch every bit of you while massaging your balls with a gentle insistence that reeks of desire.")>> <<MaleVirginity "a slime creature">>\ <<else>>\ <<print either("The slime wastes no time aborbing all the food you've eaten recently into its its body.","With an efficiency that is less than erotic, it quickly cleans out your stomach of it contents like a giant vaccum cleaning suctioning out your insides.")>> <<print either("Thankfully, it only seems interested in the contents of your body, notyour body itself.","You find yourself immensely grateful for the creatue's relative genteless. That is to say, at least it's not suctioning out your internal organs while it feeds.","It does give a polite nod to tring to keep you aroused by vibrating the tendril in your ass, but you wonder if maybe it pays more complete attention to its victims that have fluid-producing sexual organs for it to enjoy.")>> <<endif>>\ <!-- part 3 -->\ <<if _pcpenis + _pcpussy > 0>>\ <<print either("Needing no climax itself, the slime quickly brings you to one of your own, greedily slurping down your fluids with an eagernes born of hunger.","Before long you find yourself on the edge of orgasm, which the slime eagerly nurtures by picking up its pace and wiggling itself indiscriminately over every inch of exposed flesh it can find. Keeping this up through the entirety of your climax, you soon find yourself completely spent.","Taking care stimulate not only your sex but also the rest of you, the slime darts this way and that, brushing across your lips and massaging your belly with abandon. The sensations overwhelm you and when your climax comes, the slime is ready and waiting. Slurping down your fluids, it continues to tickle and vibrate its way to one of the longest orgasms you've ever experienced.")>> <<print either("And then it slinks off without warning, crawling and oozing its way out of sight.","Despite having what it wanted from you, the slime seems in no hurry to leave. Hesitantly you reach out to try and give it an affectionate pat. Comically, it reciprocates by patting you on an elbow as if it has no genuine understanding of the anatomy it has so recently enjoyed. But this does not last long, and it soon leaves you in search of other prey.","What follows in complete silence. Having what it came for, the slime slowly extracts itself from your body without fuss, then oozes its way out of sight, presumably in search of its next victim.")>> <<else>>\ <<print either("Then suddenly, as soon as it began, it's over. Having what it wanted from you, the slime extracts itself from your insides and slinks off into the darkness.","It takesa few minutes for the slime to finish cleaning you out, but once it has it then slowly backtrtacks its way out of your intestine and out your anus, only to then unceremoniously slink ooff into the shadows in search of yet more delicious prey. ","Wanting to leave not one drop of food left over, the slime finishes by climbing its way completely up through digestive tract and then up your throat and out your mouth. Yet there is no unpleasant flavor, no excrement, no bile, as if every bit of you has been scrubbed clean on it way up and out. Once the last of its bulk has cleared your lips you find yourself feeling strangely clean, and perhaps a bit lighter as you watch the slime roll off into the tower's depths in search of its next victim.")>> <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","slime"]>> <<AdvanceTime 480>> <</link>>\ </span><<PlayBGM "town">>\ \ <<set $WORLD.CombatInterrupt to "">>\ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ <<set _ExitLinks to "base">>\ \ <<if ($WORLD.datapasser[0] is "ressurection")>>\ <<set $WORLD.datapasser[0] to "">>\ <<set _ExitLinks to "none">>\ @@color:LightGreen;Ressurection at the Church of Immaculate Rebirth@@ <hr>\ <<SimplePic "ressurection.jpg">>\ After carrying the body to a suitble alcove and draping a clean white sheet over it, Harmony kneels and recites a brief prayer. @@color:Pink;Harmony@@: "Oh, great Goddess! I, your humble servant beseech you to return this poor lost soul to us. From darkness we came, and to darkness we return. But by your grace, in this space between what once was and what ultimately is to become, here do we live our lives." As she prays, a beautific light descends from above and engulfs the body on the altar. Once it becomes so bright you can barely see, Harmony stands with her arms raised and shouts. @@color:Pink;Harmony@@: "By the grace of the Goddess, return to us!" <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Preamble">>\ <<AutoSaveLoad "set">> <</link>> </span>\ <<elseif ($WORLD.datapasser[0] is "defeat") or ($WORLD.datapasser[0] is "sex")>>\ @@color:LightGreen;The Church@@ <hr>\ <<SimplePic "church.jpg">>\ <<KickFromTower>>\ <<AdvanceTime 720>>\ <<FullyHeal>>\ <<set _ExitLinks to "wake up">>\ You wake up to a wooden ceiling and the scent of burning candles. Sitting up, you feel a brief stab of pain in your overworked genitals, but it passes, Looking around, it seems some good samaritan has transported you from where you fell, to the safety of a recovery bed in the church. You look for your anonymous benefactor to thank them, but find no one. <hr>\ @@color:Red;Your body feels different.@@ <!-- set $ONE to $Mon.anatomy -->\ <!-- set $TWO to "sex" -->\ <!-- include "BugFix"-->\ <<DoTransform $Mon.anatomy "sex">>\ <<set $WORLD.datapasser to 0>>\ <<if (setup.PtrToClass($PC[$CC][$PCclass]) is "prostitute") and ($PC[$CC][$PClevel] > 6)>>\ On the bright side, as an veteran prositute, you did learn something from the experience. <<AwardXP $Mon.level "sex xp">>\ <<endif>>\ <<elseif ($WORLD.datapasser[0] is "knockout")>>\ @@color:LightGreen;The Church@@ <hr>\ <<SimplePic "church.jpg">>\ <<KickFromTower>>\ <<AdvanceTime 720>>\ <<FullyHeal>>\ <<set _ExitLinks to "wake up">>\ You wake up to a wooden ceiling and the scent of burning candles. Sitting up, you immediately feel dizzy and your vision spins. Feeling the back of your head you find a large welt and a bandage. But checking bewteen your legs it seems your more sensitive parts are untouched, and your body doesn't feel any different. <<set $WORLD.datapasser[0] to "">>\ <<elseif $WORLD.datapasser is "retire">>\ <<SimplePic "harmony.jpg">>\ @@color:LightGreen;The Church of Immaculate Rebirth@@ <hr>\ <<set _ExitLinks to "retire">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "The burdens of the adventuring life weigh heavily on me. I think I'd like to retire." <<set _plevel to $PC[$CC][$PClevel]>>\ <<set _ClassName to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<set _AchName to "Best " + _ClassName.toUpperFirst()>>\ <<set _AchData to setup.AchievementHandler(_AchName, "FETCH", -1)>>\ <<set _BestLevelDifference to $PC[$CC][$PClevel] - setup.AchievementHandler(_AchName, "HAS?", -1)>>\ <<if $PC[$CC][$PClevel] is 1>>\ <<if $PC[$CC][$PCgen] is 1>> <<if _BestLevelDifference > 0>>\ @@color:Pink;Harmony@@: "You're still level 1. Am I to assume that you're asking out of simple curiosity? While it's true that you would gain 'Best <<print _ClassName>>' achievement credit for retiring at level 1, you would also gain an extra stat point if you would simply gain a single level. Do you really truly wish to retire so soon?" <<else>> @@color:Pink;Harmony@@: "You're still level 1. You would gain nothing from retirement otherwise except the chance at a new life no more powerful than this one. Given that you are a new soul with no experience of prior incarnations, am I to assume that you're asking out of simple curiosity? You don't truly wish to retire now, do you?" <<endif>>\ <<else>>\ <<if _BestLevelDifference > 0>>\ @@color:Pink;Harmony@@: "I'm curious, are you asking to retire now to powergame the +1 point you'd gain from the 'Best _ClassName' achievement, or was this a simple click of curiosity?" <<else>>\ @@color:Pink;Harmony@@: "You're still level 1. You would gain nothing from retirement except the chance at a new life no more powerful than this one. Are you certain this is what you want?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "It's a secret." @@color:Pink;Harmony@@: "I see. Very well. I won't stop you if that's what you want to do." <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PClevel] lte $PC[$CC][$PCretirementcap]>>\ <<if _BestLevelDifference > 0>>\ @@color:Pink;Harmony@@: "You're currently level <<print $PC[$CC][$PClevel]>>. Your highest previous retirement was at level $PC[$CC][$PCretirementcap], which means that you'll gain no reincarnation power if you retire now. However, it appears that you will gain _BestLevelDifference levels to your 'Best _ClassName' achievement cap, which might be worthwhile." <<else>>\ @@color:Pink;Harmony@@: "You're currently level <<print $PC[$CC][$PClevel]>>. Your highest previous retirement was at level $PC[$CC][$PCretirementcap]. If you retire now, your soul will gain no power, your 'Best _ClassName' achievement level will not improve, and your next incarnation will be no stronger at birth you yourself were. Are you sure you want to retire now?" <<endif>>\ <<else>>\ @@color:Pink;Harmony@@: "You're currently level $PC[$CC][$PClevel]. <<if $PC[$CC][$PCgen] > 1>>Your highest previous retirement was at level $PC[$CC][$PCretirementcap]. <<endif>>If you retire now, your next incarnation will have <<print $PC[$CC][$PClevel] - $PC[$CC][$PCretirementcap]>> more points to spend than you yourself did. Additionally, you'll gain _BestLevelDifference levels to your 'Best _ClassName' achievement level. Is that acceptable?" <<endif>>\ <<elseif $PC[$CC][$PCchurchstate] is 0>>\ <<SimplePic "harmony.jpg">>\ <<set $WORLD.datapasser to [-1,0,0,0,0,0,0]>>\ <<set $PC[$CC][$PCchurchstate] to 1>>\ <<set _ExitLinks to "base">>\ @@color:LightGreen;The Church of Immaculate Rebirth@@ <hr>\ The church is mostly empty but for a few clergy. Shadows flicker from candles staggered around the room and you hear the dulcet tones of organ music. Before long, you're approached by a priestess with pink hair. @@color:Pink;Harmony@@: "Hello. May I help you?" <<elseif $PC[$CC][$PCchurchstate] is 1>>\ <<SimplePic "harmony.jpg">>\ @@color:LightGreen;The Church of Immaculate Rebirth@@ <hr>\ <<if $WORLD.datapasser[0] is 1>>\ <<if $PC[$CC][$PCgen] > 1>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello. I'm here to explore the tower. My name is-" @@color:Pink;Harmony@@: "<<print $PC[$CC][$PCname]>>. @@color:Yellow;//''Yes, I know who you are.''//@@" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What? How?" @@color:Pink;Harmony@@: "We at the Church of Immaculate Rebirth are unbound by time. We watch over the souls of the living, the dying, and the soon to live again. \ <<if $PC[$CC][$PCname] is $PC[$CC][$PCancestor]>>I know you because you are the descendant of your own namesake, who was the prior generation of your soul, generation <<print $PC[$CC][$PCgen] -1>>. And you, of generation <<print $PC[$CC][$PCgen]>>, are here to continue your soul's legacy. <<else>>I know you are because you are the descendant of $PC[$CC][$PCancestor], who was the prior generation of your soul, generation <<print $PC[$CC][$PCgen] -1>>. And you, of generation <<print $PC[$CC][$PCgen]>>, are here to continue your soul's legacy." <<endif>>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello. I'm here to explore the tower. My name is <<print $PC[$CC][$PCname]>>." @@color:Pink;Harmony@@: "<<print $PC[$CC][$PCname]>>? It's a pleasure to meet you. It's not often that I meet genuinely new people. Welcome to Crescentheart." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thank you. I'd think you'd see new faces here all the time, what with the tower and all." @@color:Pink;Harmony@@: "Yes, new faces are quite regular. But new souls? Those are rare. How may I help you?" <<endif>>\ <<elseif $WORLD.datapasser[0] is 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you tell me about the church?" @@color:Pink;Harmony@@: "The Church of Immaculate Rebirth is the physical manifestation of the Goddess of Primal Darkness's desire to share Her love with humanity. We who take this calling are here to serve humanity as best we may by acting as a proxy between those who suffer here in the material world, and the infinite possibilty offered by the Goddess. <<elseif $WORLD.datapasser[0] is 3>>\ <<set $WORLD.datapasser[3] to 1>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What services does the church provide?" @@color:Pink;Harmony@@: "Our primary service is to educate and assist those among the living with reincarnative processes. When you at last tire of the adventuring life and wish to return to the eternal beyond from which you come, come here and our order will be ready to assist you. Additionally, though it is not a task we relish, we also occasionally ferry the souls of the dead back to this land of the living." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You can bring back the dead?" @@color:Pink;Harmony@@: "No, you misunderstand," she bows her head humbly. "Me, alone? I can do nothing. It is only through the grace of Goddess that such things are possible, and I am but Her humble servant. But yes, with that made clear, bringing back the dead is indeed within the purview of our order." <<elseif $WORLD.datapasser[0] is 4>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you tell me about yourself?" @@color:Pink;Harmony@@: "Me? I myself am of little consequence. Merely an humble servant of the Goddess. Please, pay me no mind." <<elseif $WORLD.datapasser[0] is 5>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's the deal with the gravestones out front?" @@color:Pink;Harmony@@: "They commemorate the lives and deaths of our dear ancestors." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What do you mean?" @@color:Pink;Harmony@@: "The adventuring life is a dangerous one. It is often the fate of adventureres to die horrible, tragic deaths in the field. To be consumed in fire, to starve to death at the bottom of an empty pit, to be beaten to a bloody mess of pulp during a boss encounter, etc. But it need not be so. Those who retire from the adventuring life while still alive, when at last they die of natural causes, are laid to rest in our graveyard so that future generations may be inspired by the memory of their survival. Perhaps even you may join our honored dead someday. In the meantime, feel free to walk among them and bask kindly in their memories." <<elseif $WORLD.datapasser[0] is 6>>\ <<set $WORLD.datapasser[6] to 1>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you tell me about the goddess?" @@color:Pink;Harmony@@: "Of course!" she lights up. "The Goddess of Primal Darkness is the unmanifest infinity from which all of creation comes! She is our loving Mother, and we are all Her children." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So then, she's not evil?" @@color:Pink;Harmony@@: "Oh, goodness no!" she seems horrified. "What parent hates their child? No, from nothing were we born, in love. And when we die, to that love shall we return." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why all the transformation magic then? @@color:Pink;Harmony@@: "It is difficult for one of this limited finity to understand the unbound creation," she explains patiently. "But you are an immortal soul, and once you return to the undifferentiated and unmanifest, this time you spent here will be but a drop amidst the oceans of eternity. Faced with eternity, what will it matter if you spent a single lifetime as a human or a mudcrab or a rock or a cathedral?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "But why does her magic change people? If I don't want to be a mudcrab, why would she turn me into one?" @@color:Pink;Harmony@@: "The Goddess grants all requests," she says very seriously. "Some are careless with their wishes. And in Her love, She gives us what we ask for, hoping that within the span of eternity we may perhaps learn wisdom." <<else>>\ Error in churchs, datapasser is: <<print $WORLD.datapasser>> <<endif>>\ <<elseif $PC[$CC][$PCchurchstate] is 2>>\ \ <!-- COLLECT DATA -------------------------------------- -->\ <<set _DeadQTY to 0>>\ <<set _LostQTY to 0>>\ <<set _CarryQTY to 0>>\ <<set _InTownQTY to 0>>\ <<set _RESSTHISPERSON to -1>>\ <<set _TownOrCarry to "">>\ <<for _R to 0; _R < 3; _R++>>\ <<if $PC[_R][$PCLocation] is "tower">>\ <<endif>>\ <<if $PC[_R][$PCstate] is "dead">>\ <<set _DeadQTY to _DeadQTY +1>>\ <<elseif $PC[_R][$PCstate] is "lost">>\ <<set _DeadQTY to _DeadQTY +1>>\ <<endif>>\ <<if ($PC[_R][$PCstate] is "dead") or ($PC[_R][$PCstate] is "lost")>>\ <<if $PC[_R][$PClocation] is "town">>\ <<set _InTownQTY to _InTownQTY +1>>\ <<set _RESSTHISPERSON to _R>> <<set _TownOrCarry to "town">>\ <<endif>>\ <<endif>>\ <</for>>\ \ <<set _InvenSpotHoldingCorpse to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<if $PC[$CC][$PCinven][_i][0] is 999>>\ <<set _CarryQTY to _CarryQTY +1>>\ <<set _InvenSpotHoldingCorpse to _i>>\ <<set _TownOrCarry to "carry">>\ <<set _RESSTHISPERSON to $PC[$CC][$PCinven][_i][1]>>\ <<endif>>\ <</for>>\ \ <<SimplePic "harmony.jpg">>\ @@color:LightGreen;The Church of Immaculate Rebirth@@ <<set _ExitLinks to "none">>\ <hr>\ <<if _RESSTHISPERSON > -1>>\ <!-- we have someone we can ress right now -------------------------- -->\ <<if _TownOrCarry is "carry">>\ You carry <<print $PC[_RESSTHISPERSON][$PCname]>>'s lifeless body into the church and set it down gently on the floor. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Harmony! Help!" @@color:Pink;Harmony@@: "Hello, <<print $PC[$CC][$PCname]>>. Is this a friend of yours?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Not exactly a friend, but certainly it's someone important to me. Is there anything you can do?" @@color:Pink;Harmony@@: "Perhaps. The body appears to be reasonably well intact. And that you've carried it here is proof enough of the sort of emotional connection needed to guide the soul back from the realm of the Goddess. Yes, I believe I can help. Would you like for me to ressurect them now?" <<elseif _TownOrCarry is "town">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello, Harmony. Do you have any information for me?" @@color:Pink;Harmony@@: "Hello, <<print $PC[$CC][$PCname]>>. Yes, a member of my order recently found a poor soul laying dead in the streets of town here." Curious, you ask Harmony to take you to the body. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wait. That's <<print $PC[_RESSTHISPERSON][$PCname]>>!" @@color:Pink;Harmony@@: "Oh, you know them? In that case, if you'd like I can use your connection with the deceased as a conduit through which to ferry their soul back to the land of the living. Shall I ressurect <<print $PC[_RESSTHISPERSON][$PCname]>>?" <<endif>>\ \ <<if _RESSTHISPERSON > -1>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) No, not right now" "TownSquare">> <<set $WORLD.datapasser to "">>\ <</link>>\ </span> <<set _LinkText to "1) Yes, please ressurect " + $PC[_RESSTHISPERSON][$PCname]>>\ <span id="KeypOne">\ <<link _LinkText "Church">>\ <<set $WORLD.datapasser to ["ressurection"]>>\ <<if $WORLD.quests[7].state is "active">>\ <<set $WORLD.quests[7].harmony to _RESSTHISPERSON>>\ <<endif>>\ <<set $PC[$CC][$PCinven][_InvenSpotHoldingCorpse] to [0,0,0,0]>>\ <<set $PC[_RESSTHISPERSON][$PCstate] to "alive">>\ <<set $PC[_RESSTHISPERSON][$PClocation] to "town">>\ <<set $PC[_RESSTHISPERSON][$PCz] to 0>>\ <<set $PC[_RESSTHISPERSON][$PCfz] to 0>>\ <<set $PC[_RESSTHISPERSON][$PChpcur] to $PC[_RESSTHISPERSON][$PChpmax]>>\ <<set $PC[_RESSTHISPERSON][$PCeffects] to []>>\ <<set $PC[_RESSTHISPERSON][$PCcoins] to 0>>\ <<set $PC[_RESSTHISPERSON][$PChunger] to 500>>\ <</link>> </span> <<else>>\ @@color:Red;Error in church:@@ Harmony thinks somebody's availabel for ress right here and now, but RESSTHISPERSON is still -1? <<endif>>\ <<elseif (_DeadQTY + _LostQTY) > 0>>\ <<set _ExitLinks to "else">>\ <!-- nobody available to ress now, but we have dead peopel elsewhere so harmony give us information please -------------------------- -->\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello, Harmony. Do you have any information for me?" @@color:Pink;Harmony@@: "Yes, I have the following information:" @@color:Gold;Ressurection candidates@@ <<for _R to 0; _R < 3; _R++>>\ <<if $PC[_R][$PCstate] is "dead">>\ * <<print $PC[_R][$PCname]>> is @@color:Red;dead@@, and was last seen \ <<if $PC[_R][$PClocation] is "tower">>\ on level <<print $PC[_R][$PCz]>> of the Tower of Triumph <<elseif $PC[_R][$PClocation] is "forest">>\ on level <<print $PC[_R][$PCz]>> of the Enchanted Forest <<else>>\ (error: location reported as: $PC[_R][$PCLocation]) <<endif>>\ <<elseif $PC[_R][$PCstate] is "lost">>\ * <<print $PC[_R][$PCname]>> is @@color:Red;lost@@, and was last seen \ <<if $PC[_R][$PClocation] is "tower">>\ on level <<print $PC[_R][$PCz]>> of the Tower of Triumph <<elseif $PC[_R][$PClocation] is "forest">>\ on level <<print $PC[_R][$PCz]>> of the Enchanted Forest <<else>>\ (error: location reported as: $PC[_R][$PCLocation]) <<endif>>\ <<endif>>\ <</for>>\ <<if _DeadQTY > 0>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is there any way for the dead to be brought back to life?" @@color:Pink;Harmony@@: "Yes. The soul is eternal. However, those who have reunited with the Goddess share only a tenuous connection to the mortal realm. Ressurection requires a both a body for them to return to, and an emotional connection with the living to motivate the soul to return." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So if I recover a body and bring it here, can you bring them back to life?" @@color:Pink;Harmony@@: "Goddess willing, yes." <<endif>>\ <<if _LostQTY > 0>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What does it mean if a person is 'lost' rather than dead? Can they still be brought back?" @@color:Pink;Harmony@@: "Yes, those who are lost may still be recovered. But it might prove more difficult, as their body has been moved since they died. To ressurect them it is still a simple mater of returning their body and energizing their return with an emotional connection to someone still living, such as yourself. But finding their body might prove more difficult than simply returning to the spot where they died." <<endif>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What if I can't find their body at the location listed?" @@color:Pink;Harmony@@: "It's possible their body might have been moved. That can happen sometimes. In such cases, it's usually best to regenerate the tower and then return to the level they were last seen, and map out every square. When you do this, be sure to visit every square, and not to merely //map// it. Using the light spell for example can make it hard to see where you've been and where you haven't." <<else>>\ <!-- nobody dead at all, so give generic closer -------------------------- -->\ <<set _ExitLinks to "default leave/retire">>\ @@color:Pink;Harmony@@: "Hello, <<print $PC[$CC][$PCname]>>. Know that you are always welcome here." @@color:Green;<<print $PC[$CC][$PCname]>>@@: <<print either("Thanks. Just checking to see if anything's new.","Do you have any new information for me?","Hey, Harmony. Anything new going on?","So...anything important going on that I should know about?")>> @@color:Pink;Harmony@@: "<<print either("All is as ever shall it be.","All is well here. Peace be unto you.","Nothing that I'm aware of, at present.","You may rest confidant in the knowledge that all is as it should be.","There are no accidents, " + $PC[$CC][$PCname] + ". If you have reason to need to be here, the path will be made clear to you.")>>" <<endif>>\ <<endif>>\ \ \ \ <hr> <<if _ExitLinks is "base">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I don't need any questions answered, thanks." "TownSquare">> <<set $PC[$CC][$PCchurchstate] to 2>>\ <</link>>\ </span> <<if $WORLD.datapasser[1] is 0>>\ <span id="KeypOne">\ <<link "1) Introduce yourself" "Church">> <<set $WORLD.datapasser[0] to 1>>\ <<set $WORLD.datapasser[1] to 1>>\ <</link>>\ </span> <<else>>\ 1) Already introduced yourself <<endif>>\ \ <<if $WORLD.datapasser[2] is 0>>\ <span id="KeypTwo">\ <<link "2) Ask about the church" "Church">> <<set $WORLD.datapasser[0] to 2>>\ <<set $WORLD.datapasser[2] to 1>>\ <</link>>\ </span> <<else>>\ 2) Already asked about the church <<endif>>\ \ <<if $WORLD.datapasser[3] is 0>>\ <span id="KeypThree">\ <<link "3) Ask which church services are available" "Church">> <<set $WORLD.datapasser[0] to 3>>\ <<set $WORLD.datapasser[3] to 1>>\ <</link>>\ </span> <<else>>\ 3) Already asked about church services <<endif>>\ \ <<if $WORLD.datapasser[4] is 0>>\ <span id="KeypFour">\ <<link "4) Ask her about herself" "Church">> <<set $WORLD.datapasser[0] to 4>>\ <<set $WORLD.datapasser[4] to 1>>\ <</link>>\ </span> <<else>>\ 4) Already asked about Harmony <<endif>>\ \ <<if $WORLD.datapasser[5] is 0>>\ <span id="KeypFive">\ <<link "5) What can you tell me about the gravestones out front?" "Church">> <<set $WORLD.datapasser[0] to 5>>\ <<set $WORLD.datapasser[5] to 1>>\ <</link>>\ </span> <<else>>\ 5) Already asked about the gravestones <<endif>>\ <<if $WORLD.datapasser[6] is 0>>\ <span id="KeypSix">\ <<link "6) Would you tell me about the goddess?" "Church">> <<set $WORLD.datapasser[0] to 6>>\ <<set $WORLD.datapasser[6] to 1>>\ <</link>>\ </span> <<else>>\ 6) Already asked about the goddess <<endif>>\ <<elseif _ExitLinks is "retire">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <span id="KeypR">\ <<link "r) Yes, retire this character" "Preamble">> <<set $PC[$CC][$PCstate] to "retired">> <<if $PC[$CC][$PClevel] > 2>> <<AwardAchievement "I feel your loss">> <<endif>>\ <<if $PC[$CC][$PClevel] > $PC[$CC][$PCretirementcap]>> <<set $PC[$CC][$PCretirementcap] to $PC[$CC][$PClevel]>> <<endif>> <<set _throwaway to setup.AchievementHandler(_AchName, "UPGRADE", $PC[$CC][$PClevel])>>\ <<AddToGraveyard $CC>> <<set $GameState to "menu">> <<AutoSaveLoad "set">> <</link>>\ </span> <<elseif _ExitLinks is "wake up">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <<if $PC[$CC][$PCchurchstate] > 0>>\ <span id="KeypOne">\ <<link "1) Look for Harmony" "Church">> <<AdvanceTime 5>> <</link>>\ </span> <<endif>>\ <<elseif _ExitLinks is "none">>\ <<else>>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <span id="KeypR">\ <<link "r) Retire this character" "Church">> <<set $WORLD.datapasser to "retire">>\ <</link>>\ </span> <<endif>>\<<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<SimplePic $Mon.pic>>\ <<if (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<FemaleVirginity "centaur">> <<endif>>\ \ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<elseif (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ <<endif> \ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","centaur"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "minotaur blowjob">>\ Breathing heavily from her exertions, the minotaur is soaking wet with the perspiration and blood of your recent battle. That...and also the trails of girlcum streaming freely down her thighs. Presumably minotaurs like strong partners, and you have proven yourself that. Gesturing her over, you find that she's already licking her lips at your crotch by the time she arrives. Grabing the bull by the horns...literally, you move her head onto your crotch, watchign as her tongue eagerly leads the way.When she does reach it, its broad slipperiness licing at your tip sends a big pulse of blood through that causes your dick to twitch so hard that she has to chase it, as if bobbing for apples. But with the foreplay done, she licks her tongue from the underside of your dick all the way to the top in a giant funnel, then suctionsther rest of her mouth around it while you gasp. Needing no further assitance from you, you nevertheless keep a hold of her horns to remind her who's in charge. A charge she's all too willing to embrace as she licks and sucks on you with what soon turns from mere eagerness to sheer reckless abandon. Her size lends a gratuitous quality to her blowjob, and with so much tongue available you takes you to heights youv'e never imagined. When at last you're ready to cum, you tap her horns, prompting her to instantly slurp your dick the the back of her throat so deep that her nostrils are kissing your belly, and the large deposit of cum you make goes easily down her eager throat. At last finished, you give her some affectionate head pats and ear scratches before continuing on your way, taking with some amusement the last look of her big happy cow tail wagging like a puppy. <<elseif $WORLD.datapasser is "minotaur boob fondle">>\ <<if $Mon.penis is true>>\ <<if random(1,2) is 1>>\ Your eyes are drawn to the minotaur's breasts. Massive orbs that seems almost too large for her already-large body. Reaching a tentative hand out towards them, you trace your fingers over their smooth skin before gently cupping one in each of his hands and giving it an appreciating squeeze. <<else>>\ "Well I'll be danged, sugar!" she cheers. "Ya' sure whooped me! Now how's about come over here and claim yer prize!" Needing no further encouragement, you make a line for her chest and cup her enormous breasts together, one in each hand. <<endif>>\ <<if _pcpenis > 0>>\ "Not that I mind the foreplay, but aintcha itchin' to see what I got under the hood?" She gestures behind her, but the big-as-an-arm cock betwen her legs dissaudes you from investigating to see what else she may have down there. Shaking your head, you instead focus in on her chest. \ <<else>>\ "Not that I mind the foreplay, but aintcha itchin' for this baby to take ya for a spin?" She gestures to enormous cock, already dripping, but you shake your head and focus in on her chest. \ <<endif>>\ Each breast is easily the size of your head, and your cup runs over kneading and handling them. Her nipples harden as you gently pinch them between your fingers, all half an inch thick of them, elliciting sighs of contentment from their owner. \ <<if random(1,2) is 1>>\ You're taken out of your reverie, however, by the sound of her jacking her thick cock off beneath you. <<else>>\ That's when you efel her arm-sized cock bouncing up and down against your thigh beneath you. <<endif>>\ "Don't mind me," she pants. "You just keep on doin' whatcha doing, sugar." While not quite what you had in mind, her breasts are so tantalizing that you simply position yourself out of thw path of her cock and resume yoru breast and nipple play. When you suddenly gasps and sprays a <<print either("five","six","seven")>> footy long jet of semen, you're glad you weren't standing in its path. Deciding that's as good a time to stop as any, you give her titties one last squeeze, then continue on your adventure. <<else>>\ Curious as much as aroused, you approach the fallen minotauress. Though defeated in body, her eyes retain their fire, and you give her an encouraging nod as you lean down to kiss the soft fur of her neck. Surprise ripples across her face, and she relaxes slightly as you continue your kisses down her chest and work your way across her left breast to begin gently licking her nipple. The flesh here is exposed, free of the fur that covers the rest of her body, and the minotaur exhales contentedly as you tenderly kiss and lick at it. Reaching down with both hands, you find that her breasts are suprisingly solidd and firm, perhaps painfully so. Smililng at the opoptunity granted, you gently squeeze, ellicting a gasp of pleasure from her as a squirt of milk drips freely down her chest and into her fur. Sitibng down in front of her you then squeeze both berasts in alternating fashion, licking her chest clean as the spurts and sprays as you do. She sighs in relief, clearly grateful to have the painful sensation of being overfull lifted from her. Milking her freely now, you savor every drop in delight as your titty squeezes shift from gentle to insistent, then back again to sensual kneading. Before long she falls asleep in your arms, and it is with great reluctance that you eventually set her down as softly as you can against a wall so that you may resume your adventure. <<endif>> <<else>>\ Error in fox sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $Mon.sex is "male">>\ <<if _pcpenis > 0>>\ "You have a nice cock," the bunny boy whispers in your ear as he pulls your clothing off your exhausted body. "Too bad for you I'm not into that." "What are you into?" you ask, but the bunny answers with action, not words, as he positions himself behind you and hops up onto your hips, then presses with his forehead between your shoulder blades to force your head to the ground. "Uhh," you stammer. "I'm not into that." "Don't care," he smiles. "I'm into you-" he says right as his slender, cum-moistened cock slips effortly between your ass cheeks into your anus. It's uncomfortable, but only mildly so. His penis is no thicker than your middle finger, and arousd as he is, he seems in no particular ush. At least, at first. You feel the slick sensation of a small spurt of his semen fuill your insides, and with that extra bit of wetness he quickly picks up his pace leading into a second climax. "There," he smiles as he slips back out of you. "You didn't cum at all, but I came twice, so on average that's one for each of us, right?" <<else>>\ Reeling the final blow, you collapse to your knees...exactly head level with the bunny man's cock. "Mmm, good idea," he murmers. "But I have something better in mind." Unable to resist, you watch helplessly as he hops his way around you then playfully hops up onto your back, gently nudging your head to the forest floor with his chin. <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ "This is your first time, isn't it?" he whispers into your ear as he positions. "Don't worry, I'll be gentle." The bunny boy presses his weight down on your back, forcing youe hips to meet his slender cock. You try to ecape but are distracted by a moist sensation slipping past your thighs and nudging it s way between your pussy lips. You freeze in shock at exactly the wrong moment, making it easy for him to slide through your hymen and break it. <<FemaleVirginity "an effeminate bunny-boy">> <<endif>>\ The bunny boy presses his weight down on your back, forcing your hips to meet his slender cock. You resign yourself to being plaything for now and relax down into the soft grass as he picks up his pace. Pleased at your subimssion, he tells you that you're a good girl and gradually picks up his pace. Just as you're starting to enjoy the sensation of his slick cock sliding in and out of you, he slides himself up to the hilt inside you and cums. "Ooohhh," he moans. "Such a good girl." Giving you a few affectionate pats on the head, he then slips out and hops away, leaving you aroused and wishing he'd stayed just a bit longer. <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ "Oh, ho ho!" the bunny-boy chuckles as his feels between your legs. "So your're one of //those// now, are you? Hmm, well...no matter." Placing the tip of his thankfully slender cock as your anus, he grips your asscheeks and slides it in. The sensation is...unremarkable. He is very easy to take. "The hare finishes the race first!" he shouts, picking up the pace of his humping, then quickly cumming inside you, mere seconds after starting. Almost disappointing by the anti-climax of his climax, you stand to clean up the bunny semen dripping down your thighs while he happily hops away. "Hope to see you again real soon!" he call out to you and waves, before disappearing into the distance. <<endif>>\ <<endif>>\ \ <<elseif _pcpenis > 0>>\ \ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ \ "Ooohhhh!," the bunny visibly drools as she approaches you. "I just love cock!" In a flash, your feel your pants around your ankles and the bunny girl's lips sliding across your dick as her tongues wriggles eagerly underneath. It moments the tip of your cock is tickling its way down her throat as she delicately kisses your belly. Mumbling unintelligibly, she grips both your butt-cheeks in her hands and begins ramming her face back and forth onto your cock. Hardly able to stand from the pleasure, your steady yourself on her head and begin to delicately stroke her long fluffy ears, eliciting additional murmers of pleasure. She doesn't slow, however, and you last baerly two minutes before her furious thrusting on your cock brings you to climax. When you do she jams her head forward to get your cock as far deep into her as possible, then masssages your tip with her throat to swallow every drop. You collapse to the ground, the last thing you hear before losing consciousness is the bunny girl berating herself for losing control. "Next time I catch you," she promises out loud, "I'm going to ride you good and proper." <<else>>\ \ <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ \ "Aww, you're a girl too!" the bunny pouts as she sighs and begins removing your clothes with a smile. "Oh well. Let's make the best of this, shall we?" <<if _pcboobs > 0>>\ <<set $PC[$CC][$PCsexACTS].milked to $PC[$CC][$PCsexACTS].milked + $Mon.level>>\ Too weak to resist, you submit to her ministrations as she pulls off your top, then perks up in delight at the sight of your breasts. You find your eyes closing and your mouth opening of its own accors as she leans in to lick your nipples while her fingers delicately slides up between your thighs and down your pants. Your feel your legs part of their own volition as she slides her middle finger back and forth over your clit, and then you find yourself moaning as she begins sucking lightly on your pert nipples. Wanting more, she kneads your breasts one after the other and continues sucking until you begin to feel them becoming noticeably lighter. "Mmm," she licks traces of white liquid from her lips. "This is delicious, but I won our little battle, and to the victor goes the spoils, right? <<endif>>\ If the joyful look on her face failed to make her meaning clear, her hand pushing delicately on the top of your head leaves no room for doubt. Allowing her to maneuver you between her legs, she holds you in place as you obediently lick her clit and slide your tongue in and out between her pussy folds. Overpowered by her delicate scent, you relax and fall into a comfortable rythem, eliciting gasps and moans as you deftly reach up with one hand to caress her breasts while licking her to orgasm. "Mmm," she sighs. "Not as good as cock, but I'll take it. Now be a dear and lick me clean, would you?" You clean her up and then watch with some disappointment as she hops off into the forest. \ <<endif>> \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","bunny"]>> <<AdvanceTime 480>> <</link>>\ </span> <!-- extra? this was writtenwhile looking at BunnyM, not catH Collapsing off your feet, the cat pounces only to land on you the moment you impact with the ground, knocking the wind out of your lungs. "You're in heat!" he cheers, frantically tearing at your clothing while his relatively modest cock stands so erect that it's pointed nearly 30 degrees upward. Collapsing off your feet, the cat pounces only to land on you the moment you impact with the ground, knocking the wind out of your lungs. "Got you!" he cheers, tearing off your clothes and rubbing his relatively tiny cock bewteen your thighs. Too far gone to protest, you end up on your hands and...face, really, rather than hands and knees, with the kitty-boy indelicate thrusting his cock in the general vicinity of your ass. It's not quite long enough to make it in- "Uhhnfff!!!" Or maybe it is. With the bristly spines of hair coating his cat-dick, the sensation is altogether unpleasant, but his speedy climax lubricates your insides well enough that he at least doesn't draw blood. "Meow," he states simply, as if suddenly disinterested. Then wanders off, leaving you in a pool of kitty spunk. -->\ <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true) and (_pcpenis is 0)>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ The suave fox man wastes no time as his eyes scan over your body. Taking note of your every curve and crease, he slowly approaches you from behind. With his tail eagerly swishing back and forth, he gently bends over you to cup your left breast from above, then leans down to whsiper softly in your ear. "I've been waiting for this moment my dear, now it's time to surrender." On your hands and knees, you feel naked and vulnerable beneath him. But you feel him gaze above you with a mixture of desire and curiosity that makes your heart race. "I've been waiting for you. And we're about to embark on a journey together - one filled with passion and intimacy unlike any other. The fox man thrusts his body deep inside of you, savoriing every inch as he moves back and forth between your legs with a rhythm that is both primal and sensual. Immediately you're overtaken with the sense that his cock is an extension of your own self inside you as the two of you become one and move together in perfect harmony. He whispers sweetly into your ear how good it feels to be inside such a beautiful woman as your yourself. You close your eyes and let go, surrendering completely to his touch while he continues to thrust deeper within you with each passing moment until we both come together in a wave of ecstasy that leaves us breathless and satiated beyond compare. <<FemaleVirginity "fox-morph">> \ <<elseif ($Mon.penis is false) and (_pcpenis > 0)>> <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginal + 1>>\ The fox girl leans over your fallen form, her lips brushing against your ear as she whispers seductively into it. "The hard part is over, dear," she purs. "Now for the fun part." Sitting down crouched on top of you, she places one hands on your stomach for support as she delicately strokes your cock into becoming fully erect with the other. The then nestles the tip beweten her pussy lips and rotates her hips to gracefully slides it deep inside her. Her tail swishes lightly across the ground behind you in excitement as she tightly grips onto your cock with her pussy, then pushes her hips up away from yours to rightly grind yoru cock inside her as she comes away, then relaxes it open against to easily slide back down onto your cock. <<MaleVirginity "a sexy fox-girl">>\ Feeling the tightness on the outward stroke leaves you with the intense feeling of her desire to have you inside her, well supported by the adorable way her tail continues to wag behind her. "Oh, fuck yes," she moans, her tits bouncing freely as her up and down humping picks up to a nearly frantic pace. Not content with only your lower half, however, she bends forward to kiss you softly while your perfectly-aligned hips continue to dance together. No longer needing them to suppro her weight, her hands now slide up and donw your chest and sides while her tongue intertwines with your own and her soft vaginal lips clamp and relaxe, clamp and relaxe themselves around your cock. A heat grows within you, and you close your eyes readying to climax. But the girl grabs your face in her hands and holds your eyes open, kissing you deeply and forcing your eyes to hold her gaze as you let loose with an uncontrolled gush of semen inside her. Now spent, her face grows into a grin, but still she does not let up, forcing you into close eye contact while her climax comes a few seconds after yours. "Mmmm," she exhales, licking her long tongue and and down your neck. And only after several more minutes in her warm, furry embrace does she at least give you one playful nip on the neck with her teethd before dashing off into the woods, alone. <<elseif ($Mon.penis is true) and (_pcpenis > 0)>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ Pleased with his victory over you, the fox-man reaches down to grab your legs, pulling them apart and rubbing his engorged cock on your thighs. At first the eager look in his eyes leads you to think ther'll be no restraint or mercy with what's to come, but to your surprise, rather than immediately taking you he instead reaches down with his other hand and begins to stroke your cock. "There's enough pleasure to be had by both of us," he grins. Kneeling between your legs, his gentle stroking never lets up as he deftly switches hands to rub your pre-cum onto his own cock, which he then gently slides an inch into your ass hole, now lubriated by your own cum. Matching pace with both hand and cock, he expertly pumps his member in and out of you with an insistence that nearly overwhelming you. You're nearly about to cum, but sensing this he slows down slightly whiel squeezing at the base of your cock as if to hold your ejaculation in a little longer. Knowing that you can't contain yourself for long, he dexterously curls his head down to engulf your cock with his long tongue. "I'm cumming!" you shout uncontrollably, cumming across his tongue and upper mouth while as simulateously spurts his seed deep up into your abdomen. Panting, you both stay together like that for several minutes to bask in the afterglow of shared orgasms before he finally gives you a flirty gaze, then dashes off into the woods. <<elseif ($Mon.penis is false) and (_pcpenis is 0)>> <<set $PC[$CC][$PCsexACTS].scissored to $PC[$CC][$PCsexACTS].scissored + 1>>\ The fox girl, her fur now matted and tangled from battle, falls panting on top of you. Your breasts touch for but a moment as she lifts herself up over your form. "This will be fun," she licks her lips. Unceremoniously grabbing your neck to hold you in place with one hand, she reaches between your legs with the other and slides a single clawed finger between your pussy lips. Paralyzed in fear, you find relief when she merely pulls it back out and licks it under your gaze. Seeing that she has no intention of hurting you, you find yourself somewhat more cooperative as she rolls you over onto your side and climbs with her own legs spread, between yours. "Pull me in closer, dear" she whispers huskily. Grabbing under her knee, you pull her up until the delicate flesh of your pussy lips meets the smooth moistness of her own. "Ohhh..." you can't help but moan, as she begins steadily grinding her pelvis back and forth onto yours, your vaginal lips softly kissing hers with every twist and turn. Meanwhile the sound of her own noises fill your ears, almost cute in their softness, but a clear match for her similarly soft fur as it dances up and down your thighs. Your hip movemnts quickly fall into synch, and your mouth widens into a desperate "Oh!" as you climax together with her. An uncetrain time later you wake up with the fox-girl nestled into your neck, delicately trailling her fingers up and down your chest. "I didn't want to leave while you were asleep," she whispers, licking your neck with her long tongue before squeezing you tightly into a hug, then standing up to leave, turning once to give you a final smile before dashing off into the woods. <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","fox"]>> <<AdvanceTime 480>> <</link>>\ </span><<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true) and (_pcpussy > 0)>>\ <<set $PC[$CC][$PCsexACTS].pussylickrecieved to $PC[$CC][$PCsexACTS].pussylickrecieved + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ Licking his lips, the wolf presses his jaws between your thighs and tears your pants off. ⁬Within seconds, the longue that was licking his lips mere moments ago is suddenly layign siege to your pussy with its furious slathering up and down your clitoris and back and forth betwen your pussy folds. Too shocked to breath, your body quickly accepts this treatment and begins showering you with uxepecetd bouts of pleasure as you relax down onto the floor with half-lidded eyes. You're nearly to climax with the wolf climbs between your knees and pushes them apart, his <<print either("six","seven","eight")>>-inch cock bright red and pulsing. Grabbing you roughly by the berasts, he positions the tip of his cock barely half an inch inside you and leans his grinning head down, mere inches from yours. Thoroughly aroused, you feel your hips moving eagerly upward of their own accord. Not in any rush, the wolf merely licks your face and slide his cock barelyu an inch inside you and begins humping in out of, penetrating no deeper. Writhing your hips upward you manage to gain another inch of that exquisite cockon your own before he add several more inches and penerates you more deeply. Over the next few minutes he slowly presses deeper with every thrust until at last you're finally receive this full, glorious length insde you. <<FemaleVirginity "wolf-man">>\ "You...are...awesome," he pants in rhythm with your own breathing. "Have my babies." A blast of semen fills you while you gasp and shudder, barely able to contain yourself at the sensation as he holds your hips tightly and throwns his head and and howls in extasy. For a few minutes he simply holds you. Then with clear reluctance, pulls his still-erect cock out of you, gives you one last lick on the face, and dashes off into the trees. \ <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven + 1>>\ Collapsing to your nees you find yourself staring at a bright red, <<print either("six","seven","eight")>>-inch long wolf cock. "You don't smell like a bitch in heat," he comments, planting one hand on the top of your head and shoving his dick in your mouth. "Oh, well. You can still get me off." Struggling and failing to talk around the thick cock bulging against the back of your throat, you give up trying to explain that you're not a wolf bitch at all and instead focus on simply getting enough oxygen to breath as he adds his other hand to the top of your head and begins face-fucking you for real. "Oh, yeah," he pants. "You suck dick like a pro." With his next thrust he jams his cock several inches down your throat while his balls bounce and twitch on your chin, releasing a load of semen that bypasses your mouth and tongue completely. Unable to do anything else, you frantically swallow as he throws his head back and howls above you. When he finally lets you go, you gasp and struggle for air, collapsing face-first to the ground in a heap. By the time you manage to get your breathing under control and look up, the wolf is already gone. <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","wolf"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ <<if $PC[$CC][$PCcoins] < 1>>\ <<set _heshe to "he">>\ <<if $Mon.sex is "female">>\ <<set _heshe to "she">>\ <<endif>>\ "Well, I was going to rob you," the adventurer frowns at you in disappoinment. "But it doesn't look like you have any money." <<set _PickItem to []>>\ <<set _ArrayPos to 0>>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<if $PC[$CC][$PCinven][_i][0] neq 0>>\ <<set _PickItem[_ArrayPos] to _i>>\ <<set _ArrayPos to _ArrayPos + 1>>\ <<endif>>\ <</for>>\ <<if _PickItem.length > 0>>\ <<set _ItemPTR to _PickItem[random(0, (_PickItem.length -1))]>>\ <<set _ItemToSteal to $PC[$CC][$PCinven][_ItemPTR]>>\ <<DescribeItem _ItemToSteal>>\ <<set $PC[$CC][$PCinven][_ItemPTR] to [0,0,0,0]>>\ "Guess I'll take your <<print $ItemPoke.fullname>> instead," _heshe mumbles, then wanders off, leaving your satchel a little lighter. <<else>>\ "Yeah, no," you agree. "Sorry but not sorry about that." "Doesn't look like you have much to steal either," _heshe looks through at your empty satchel. "<<print either("I travel light","This isn't the first time I've lost a fight","I find it's safer that way")>>, you explain. "<<print either("Not even a packed lunch?","What do you eat?","Right, but your bag is totally empty!")>>" _heshe seems perplexed, but you just shrug. "Here," _heshe sighs, handing you an apple. "Take this. I'd feel bad if I left you like this then tripped over your emaciated corpse on the way back." <<set _ads to setup.addtoinven([106,0,1,0])>>\ You take the apple and put it in your bag. Then look up just in time to see the man's weapon coming down on your head. <<endif>>\ <<else>>\ <<set _which to random(1,2)>>\ <<if _which is 1>>\ <<set $PC[$CC][$PCcoins] to 0>>\ "Alright, give me your gold," the adventurer sighs. "All of it." "Wait, aren't you going to rape me?" you ask. "None of the other monsters took my money." <<if $Mon.sex is "male">>\ "I'm not a monster," he bristles. "Then why attack me?" "Nobody knows for sure what's at the top of the tower," he explains. "But personally I'm betting all the rumors about ascending to godhood are nonsense and it's a great big ol' pile of gold. I plan to be the one to take it, and that means taking out the competition. I'm not going to kill you because I'm not evil, but this should be enough of a setback for you to help keep me in the lead. Now get back to town and heal up before something less nice than me finds you." With that, he adds your coin purse to his and knocks you unconscious. <<else>>\ "Do I look like a monster to you?" she raises one eyebrow at you. You briefly consider telling her she does, but think better of it and instead simply hand over your gold. "I was hoping you'd have more," she sighs in disappointment, adding your money to her coinpurse. "I'd have more if you let me keep it," you point out. "Yes, but that's not going to happen," she glares at you. "We fought and I won. Be glad I'm leaving you alive." With that she tosses your empty coinpurse back at you and clubs you on the back of the head. <<endif>>\ <<elseif _which is 2>>\ As you collapse you look up at your opponent and briefly consider the novelty of being raped by a human in this place. Thinking it might not be so bad, you start taking off your clothes in anticipation of the inevitable. <<if $Mon.sex is "male">>\ <<if $PC[$CC][$PCsex] is "male">>\ "What are you doing?" he asks "Taking off my clothes?" you ask, confused. "Aren't you going to rape me?" "Ewww!" he holds up his hands and takes a step back. "Why would you even think that?" "Because you won the fight?" you explain. "That's how it works in here." "Wait, what? I'm suppose to rape everone I beat? Since when?" "Well, it's not that you're supposed to," you shrug. "So much as that...you can? I guess? It seems to be the common practice, anyway." "Huh. I had no idea. Thanks for the tip. But I'm seriously not into guys. Like...eww." Disguested with you, the adventurer clubs you over the head with his weapon. And not the fun one. <<else>>\ "What are you doing?" he asks "Taking off my clothes?" you ask, confused. "Aren't you going to rape me?" "Rape you?" his mouth drops in shock, clearly aghast. "What kind of man do you take me for?" "The kind who adventures in dangerous towers looking for sweet, nubile girls like me, then beats them up and ravages them for hours to satisfy your manly lust." "I would never!" he shouts, backing away from you with his hands up. "Why not?" you ask, trailing a finger between your naked breasts and taking a step towards him. "To the victor go the spoils. You won our fight. So...''spoil'' me." "Get back, you <<print either("foul harlot","vile tempress","depraved slut","sinful cur")>>!" he shouts, then clubs you hard on the head with the blunt end of his weapon. <<endif>>\ <<else>>\ <<if $PC[$CC][$PCsex] is "male">>\ "What are you doing?" she asks. "Taking off my clothes?" you ask, confused. "Aren't you going to rape me?" "...what?" she tilts her head in confusion. "What makes you think I'd even want to?" "Isn't that why you're here?" you ask. "Fight monsters, rape them when you win, get raped when you lose? It's win/win for everybody." "Eww?" she takes a step back, clearly disgusted. "Is that what YOU are doing here? "...uhh, maybe?" "Here I am fighting all sorts of monsters," she shakes her head. "And all along the real monster was us." With that she gives you one last glare before clubbing on on the back of the head and knocking you out. <<else>>\ <<set $PC[$CC][$PCcoins] to 0>>\ "What are you doing?" she asks. "I don't want those." "Well, since you won I assume you're going to r-" "No, I wouldn't be caught dead dressed like that," she shakes her head. "You have terrible fashion sense, and you should be ashamed of yourself." "Umm," you fumble for a proper response. "So...what happens now?" "I guess I take your money and leave?" she asks. "That's usually what I do when I beat up monsters in here. "That's it?" you ask, handing over your money. "Nothing else?" "Well, now that you mention it, a lot of the goblins I've beat up seem to masturbate in frustration after I beat them, but I've never understood why and I don't usually stick around to watch. I guess you could do that if you really want to." "No, that's ok," you shrug, putting your clothes back on. "See you around," she smiles, then knocks you unconscious with her weapon. <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Wake up hours later" "Church">> <<set $WORLD.datapasser to ["knockout","human"]>> <</link>>\ </span> @@color:Gold;Salon@@ <hr> Salon implemented <hr>\ @@color:Gold;Navigation@@ <span id="KeypOne">\ <<link "1) Leave" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <hr>\<<timed 200ms>>\ <<audio "menu_bgm" stop>>\ <</timed>>\ <<PlayBGM "explore">>\ \ <<ClearTemporaryEffects>>\ \ <<set _DefaultPic to $ImgPath + "towerstairs.png">>\ <span id="right-img"><img @src="_DefaultPic"/></span>\ \ <<if $WORLD.dungenned[$PC[$CC][$PCz]] < 1>>\ <<include "DunGen">>\ <<endif>>\ \ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $PC[$CC][$PClocation] to "tower">>\ \ <<if _pz > $PC[$CC][$PChtze]>>\ <<set $PC[$CC][$PChtze] to _pz>>\ <<endif>>\ <<if _pz > $WORLD.HTZE>>\ <<set $WORLD.HTZE to _pz>>\ <<endif>>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "dungeon">>\ <<set $WORLD.dialogue to 0>>\ <<set $Dungeon[_pz][_px][_py][15] to 1>>\ \ @@color:LightGreen;Tower of Triumph, @@ \ <<if _pz is 0>>\ Ground floor\ <<else>>\ Level _pz\ <<endif>>\ <hr>\ <canvas id="myCanvas" width="900" height="450" style="border:0px solid #d3d3d3;"> Your browser does not support the HTML canvas tag. </canvas> <hr>\ <span id ="roomdesc"></span>\ <span id ="eventtext"></span> <hr>\ <span id="navcontrols">\ @@color:LightGreen;Navigation@@ <<ShowNavControls>>\ </span>\ \ <<set _tempname to "S64Map-Blank">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-E">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-ES">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-ESW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-EW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-N">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NE">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NES">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NESW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NEW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NS">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NSW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-NW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-S">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-SW">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Map-W">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StairsUpLeft">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StairsUpRight">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StairsDown">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorCobble">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorWhite">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorBrick">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorRedTile">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorWhiteTile">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FloorRedCarpet">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StatueAngel">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StatueKnight">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64StatueDemon">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Throne">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Cage">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Chest">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64ChestEmpty">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Barrel">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64BarrelEmpty">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Bookshelf">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64BookshelfEmpty">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Puddle">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Bed">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Fountain">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64FountainEmpty">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Circle">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Hole">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Grave">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64LeverLeftUp">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64LeverRightUp">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64LeverLeftDown">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64PressurePlate">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64LeverRightDown">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[0][4] + ".png">>\ <img id="MiniAV0" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[1][4] + ".png">>\ <img id="MiniAV1" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[2][4] + ".png">>\ <img id="MiniAV2" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <span id="debug"></span>\ <<timed 200ms>>\ <<MoveRefresh>>\ <<set _throwaway to setup.DrawMap64(_px, _py, _pz, 64)>>\ <</timed>>\ Double-click this passage to edit it.<span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span>\ <hr>\ <<set _sb to $PC[$CC][$PCspellbook]>>\ <<set _combat to _sb.firebolt + _sb.armor + _sb.heal + _sb.poison + _sb.soultrap>>\ <<set _transport to _sb.up + _sb.down + _sb.portal>>\ <<set _utility to _sb.light + _sb.map + _sb.passwall>>\ <<set _both to _sb.heal>>\ <<set _Bonus to setup.AchievementHandler("Best Archmage", "HAS?", -1)>>\ <<if _Bonus < 0>>\ <<set _Bonus to 0>>\ <<endif>>\ <<set _BestPriestBonus to setup.AchievementHandler("Best Priest", "HAS?", -1)>>\ <<if _BestPriestBonus > 0>>\ <<else>>\ <<set _BestPriestBonus to 0>>\ <<endif>>\ <<set _Lev to $PC[$CC][$PClevel]>>\ <<set _Int to $PC[$CC][$PCint]>>\ \ <<if _combat + _transport + _utility is 0>>\ @@color:Gold;You don't know any spells@@ <<else>>\ <!-- implement bonus damage from enchantments-->\ @@color:Gold;Spell bonuses@@: <<if _Bonus + _BestPriestBonus is 0>>None<<endif>> <<if _Bonus > 0>>Best Archmage global bonus: <<print _Bonus>><br><<endif>>\ <<if _BestPriestBonus > 0>>Best Priest heal bonus: <<print _BestPriestBonus>><br><<endif>>\ <<endif>>\ <<if $DebugMods>>\ <hr> debug: f $PC[$CC][$PCspellbook].firebolt a $PC[$CC][$PCspellbook].armor h $PC[$CC][$PCspellbook].heal p $PC[$CC][$PCspellbook].poison u $PC[$CC][$PCspellbook].up d $PC[$CC][$PCspellbook].down r $PC[$CC][$PCspellbook].portal l $PC[$CC][$PCspellbook].light m $PC[$CC][$PCspellbook].map r $PC[$CC][$PCspellbook].passwall q $PC[$CC][$PCspellbook].q w $PC[$CC][$PCspellbook].w e $PC[$CC][$PCspellbook].e <hr> <<endif>>\ \ <hr> <<if _combat > 0>>\ @@color:Gold;Combat spells@@ <<if $PC[$CC][$PCspellbook].firebolt > 0>>\ <<set _MinDam to 1 + _Bonus + $PC[$CC][$PCspellbook].firebolt>>\ <<set _MaxDam to 10 + _Bonus + $PC[$CC][$PCspellbook].firebolt>>\ <<set _MinDam to _MinDam * _Lev>>\ <<set _MaxDam to _MaxDam * _Lev>>\ @@color:LightGreen;Firebolt@@: level <<print $PC[$CC][$PCspellbook].firebolt>> <<SpellbookQWE "firebolt" "q">><<SpellbookQWE "firebolt" "w">><<SpellbookQWE "firebolt" "e">> Damage: <<print _MinDam>>-<<print _MaxDam>> Formula: Level * ((1 to 10) + Spell Level)) (Never misses, ignores armor) Mana cost: 1 + (1 per 40 damage) <<if setup.PlayerHasPerk("Black Mage") is true>>\ <<set _BMB to (($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur]) / $PC[$CC][$PChpmax])>>\ <<if _BMB is 0>>\ @@color:Gray;Black Mage: inactive@@ <<else>>\ @@color:Red;Black Mage:@@ +<<print Math.trunc(_BMB * 100)>>% spell damage <<endif>>\ <<endif>>\ <<endif>>\ <<if $PC[$CC][$PCspellbook].heal > 0>>\ @@color:LightGreen;Heal@@: level <<print $PC[$CC][$PCspellbook].heal>> <<SpellbookQWE "heal" "q">><<SpellbookQWE "heal" "w">><<SpellbookQWE "heal" "e">> \ \ <<set _HealFor to _Lev + _BestPriestBonus + _Bonus + $PC[$CC][$PCspellbook].heal>>\ <<if setup.PtrToClass($PC[$CC][$PCclass]) is "priest">>\ <<set _HealFor to _HealFor + _Lev>>\ <<endif>>\ <<if setup.PlayerHasPerk("White Mage") is true>>\ <<set _HealFor to _HealFor + _Lev>>\ <<endif>>\ \ <<if $PC[$CC][$PCmanacur] < 2>>\ [Not enough mana] <<else>>\ <<link "[Cast]">>\ <<if $PC[$CC][$PCmanacur] < 2>>\ <<else>>\ <<ChangeStat $PCmanacur -2>> <<if _HealFor > ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<set _HealFor to ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<endif>>\ <<set $PC[$CC][$PCspellbook].totalheal to $PC[$CC][$PCspellbook].totalheal + _HealFor>>\ <<if $PC[$CC][$PCspellbook].totalheal > 99>>\ <<AwardAchievement "Priest">>\ <<endif>>\ <<if (setup.PtrToClass($PC[$CC][$PCclass]) is "priest") and (_Lev > 6)>> <<for _CBE to $PC[$CC][$PCeffects].length -1; _CBE > -1; _CBE-->>\ <<if $PC[$CC][$PCeffects][_CBE][0].includes("oison")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<endif>>\ <</for>>\ <<ShowActiveEffects>>\ <<endif>>\ <<ChangeStat $PChpcur _HealFor>> <<ShowHealth>><<ShowMana>> <<endif>>\ <</link>> <<endif>>\ Heals for: <<print _HealFor>><<if (setup.PtrToClass($PC[$CC][$PCclass]) is "priest") and (_Lev > 6)>>, and cures poison<<endif>> <<if setup.PtrToClass($PC[$CC][$PCclass]) is "priest">>\ Formula: Spell Level + Level + Priest Level<<if _BestPriestBonus > 0>> + Highest Priest<<endif>>\ <<if setup.PlayerHasPerk("White Mage") is true>> @@color:White;+ Level (White Mage)@@ <<else>><br>\ <<endif>>\ <<else>>\ Formula: Level + Spell Level<<if _BestPriestBonus > 0>> + Highest Priest<<endif>>\ <<if setup.PlayerHasPerk("White Mage") is true>> @@color:White;+ Level (White Mage)@@ <<else>><br>\ <<endif>>\ <<endif>>\ Mana cost: 2 <<endif>>\ <<if $PC[$CC][$PCspellbook].armor > 0>>\ @@color:LightGreen;Armor@@: level <<print $PC[$CC][$PCspellbook].armor>> <<SpellbookQWE "armor" "q">><<SpellbookQWE "armor" "w">><<SpellbookQWE "armor" "e">> Bonus armor: <<print (_Lev * 10) + _Bonus + $PC[$CC][$PCspellbook].armor>> Formula: (Level * 10) + Spell Level Gain temporary armor for the remainder of the current battle Mana cost: 1 <<endif>>\ <<if $PC[$CC][$PCspellbook].poison > 0>>\ @@color:LightGreen;Poison@@: level <<print $PC[$CC][$PCspellbook].poison>> <<SpellbookQWE "poison" "q">><<SpellbookQWE "poison" "w">><<SpellbookQWE "poison" "e">> Damage: <<print $PC[$CC][$PCspellbook].poison + _Bonus>> Formula: Spell Level Causes stacking recurring damage Mana cost: 1 <<endif>>\ <<if $PC[$CC][$PCspellbook].soultrap > 0>>\ @@color:LightGreen;Soul trap@@: level <<print $PC[$CC][$PCspellbook].soultrap>> <<SpellbookQWE "soultrap" "q">><<SpellbookQWE "soultrap" "w">><<SpellbookQWE "soultrap" "e">> Captures tower monster's soul to equipped gemstone if victorious <<if passage() is "Combat">>\ <<if $PC[$CC][$PClocation] neq "tower">>\ Tower only <<elseif $Mon.unique is true>>\ Cannot soultrap unique targets <<else>>\ <<set _STC to 19 + (2 * $Mon.level) - $PC[$CC][$PCspellbook].soultrap>>\ <<if _STC < 1>>\ <<set _STC to 1>>\ <<endif>>\ Target: @@color:Yellow;<<print $Mon.name>>@@ Mana cost: @@color:Yellow;<<print _STC>>@@ <<endif>>\ <<else>>\ Mana cost: (Varies by target) <<endif>>\ Formula: 19 + (2 * Monster Level) - Spell Level <<endif>>\ <hr>\ <<endif>>\ <<if _transport > 0>>\ @@color:Gold;Transportation spells@@ <<if $PC[$CC][$PCspellbook].up > 0>> \ @@color:LightGreen;Up@@ \ <<if $PC[$CC][$PCmanacur] < 4>>\ (Not enough mana) <<elseif $PC[$CC][$PClocation] neq "tower">>\ [Tower only] <<elseif $PC[$CC][$PChtze] lte $PC[$CC][$PCz]>>\ [At highest zone] <<elseif $PC[$CC][$PCz] is 9>>\ [@@color:Yellow;Dev note:@@ Teleport to level 10 temporarily restricted] <<elseif $PC[$CC][$PCz] > 19>>\ [On max floor already] <<else>>\ <<link "[Cast]">>\ <<ChangeStat $PCmanacur -4>> <<ShowMana>> <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] +1>> <<script>>Dialog.close();Engine.play("Dungeon64");<</script>> <</link>> <<endif>>\ Teleport to one higher level in the tower. Only allows you to return to levels you've previously visited Mana cost: 4 <<endif>>\ <<if $PC[$CC][$PCspellbook].down > 0>>\ @@color:LightGreen;Down@@ \ <<if $PC[$CC][$PCmanacur] < 2>>\ [Not enough mana] <<elseif $PC[$CC][$PClocation] neq "tower">>\ [Tower only] <<else>>\ <<link "[Cast]">>\ <<ChangeStat $PCmanacur -2>> <<ShowMana>> <<if $PC[$CC][$PCz] is 1>> <<set $PC[$CC][$PCz] to 0>> <<set $PC[$CC][$PClocation] to "town">> <<script>>Dialog.close();Engine.play("TownSquare");<</script>> <<else>>\ <<set $PC[$CC][$PCz] to $PC[$CC][$PCz] -1>> <<script>>Dialog.close();Engine.play("Dungeon64");<</script>> <<endif>>\ <</link>> <<endif>>\ Teleports you one level lower Mana cost: 2 <<endif>>\ <<if $PC[$CC][$PCspellbook].portal > 0>>\ @@color:LightGreen;Portal@@ \ <<if $PC[$CC][$PCmanacur] < 10>>\ [Not enough mana] <<elseif $PC[$CC][$PClocation] is "town">>\ [Already in town] <<elseif $PC[$CC][$PCz] is 10>>\ [@@color:Yellow;Dev note:@@ Portal from level 10 temporarily restricted] <<else>>\ <<link "[Cast]">>\ <<set $PC[$CC][$PCz] to 0>> <<set $PC[$CC][$PClocation] to "town">> <<ChangeStat $PCmanacur -10>> <<ShowMana>> <<script>>Dialog.close();Engine.play("TownSquare");<</script>> <</link>> <<endif>>\ Instantly returns you to town Mana cost: 10 <<endif>>\ <hr>\ <<endif>>\ <<if _utility > 0>>\ @@color:Gold;Utility spells@@ <<if $PC[$CC][$PCspellbook].light > 0>> \ @@color:LightGreen;Light@@ <<if $PC[$CC][$PCmanacur] < 1>>\ [Not enough mana] <<else>>\ <<link "[Cast]">>\ <<set _LightDur to (_Lev + $PC[$CC][$PCspellbook].light + _Bonus) * 60>>\ <<ApplyEffect "Light" _LightDur>>\ <<ChangeStat $PCmanacur -1>> <<ShowMana>> <<ShowActiveEffects>> <</link>> <<endif>>\ Increases mapping radius by 1 Lasts (Level + Spell Level) hours Subsequent casts increase total time Mana cost: 1 <<endif>>\ <<if $PC[$CC][$PCspellbook].map > 0>>\ @@color:LightGreen;Map@@ <<if $PC[$CC][$PClocation] neq "tower">>\ [Cannot cast in <<print $PC[$CC][$PClocation]>>] <<elseif $PC[$CC][$PCmanacur] < 5>>\ [Not enough mana] <<else>>\ <<link "[Cast]">>\ <<ChangeStat $PCmanacur -5>> <<ShowMana>> <<for _ii to 0; _ii < 14; _ii++>>\ <<for _jj to 0; _jj < 7; _jj++>>\ <<set $Dungeon[$PC[$CC][$PCz]][_ii][_jj][15] to 1>>\ <</for>>\ <</for>>\ <</link>> <<endif>>\ Entirely maps out the current tower level Mana cost: 5 <<endif>>\ <<if $PC[$CC][$PCspellbook].passwall > 0>>\ @@color:LightGreen;Passwall@@ <<if $PC[$CC][$PClocation] neq "tower">>\ [Cannot cast in <<print $PC[$CC][$PClocation]>>] <<elseif passage() is "Combat">>\ [Can't cast in combat] <<elseif $AllowNav is false>>\ [Can't cast to escape events] <<elseif $PC[$CC][$PCmanacur] < 5>>\ [Not enough mana] <<else>>\ <<link "[Cast]">>\ <<ChangeStat $PCmanacur -5>> <<ShowMana>> <<set $PasswallHack to true>>\ <</link>> <<endif>>\ Entirely maps out the current tower level Mana cost: 5 <<endif>>\ <<endif>>\ /* avatar image*/ #avatar-img { z-index: 50; margin: 0; padding: 0; width: 150px; height: 150px; } #avatar-img:hover { box-shadow: 0 0 2px 1px rgba(0, 140, 186, 0.5); } /* end avatar image*/ .image-link-wrapper a img { width: 150px; } .image-link-wrapper: a img hover { box-shadow: 0 0 2px 1px rgba(0, 140, 186, 0.5); }<<widget "MapCrescentheartNorth">>\ <div id="NavMap">\ <<script>> setup.MapClick = function (a) { if (a == "") { } else if ( a == "Tower") { if (State.variables.WORLD.MainQuest[0].state == "inactive") { } else { var CC = State.variables.CC; var z = State.variables.PCz; State.variables.PC[CC][z] = 1; Engine.play("Dungeon64"); }; } else if ( a == "Pawn") { Engine.play("StorePawn"); } else if ( a == "Selene") { Engine.play("StoreSelene"); } else if ( a == "Forest") { var CC = State.variables.CC; var z = State.variables.PCfz; var x = State.variables.PCfx; var y = State.variables.PCfy; State.variables.PC[CC][z] = 1; State.variables.PC[CC][x] = State.variables.WORLD.ForestDims[0]; State.variables.PC[CC][y] = Math.trunc(State.variables.WORLD.ForestDims[1] /2); State.variables.WORLD.datapasser = "reset forest"; Engine.play("Forest"); } else if ( a == "Gravestone") { Engine.play("Graveyard"); } else if ( a == "MagicCircle") { State.variables.WORLD.datapasser = "MagicCircle"; var c = State.variables.WORLD.Circle; if (c == 5) { var CC = State.variables.CC; var z = State.variables.PCz; var x = State.variables.PCx; var y = State.variables.PCy; State.variables.PC[CC][z] = 5; State.variables.PC[CC][x] = 6; State.variables.PC[CC][y] = 2; State.variables.WORLD.datapasser = "Don't auto-teleport back"; Engine.play("Dungeon64"); } else { Engine.play("TownSquare"); }; } else { Engine.play(a); }; }; setup.MapMouse = function(a) { var b = "Error in Map js: " + a; if (a == "Forest") { b = "@@color:LightGreen;The enchanted forest@@: A relatively safe place for new adventurers to explore"; } else if (a == "Tavern") { b = "@@color:LightGreen;" + State.variables.WORLD.tavernname + "@@: A place to relax, chat, and drink"; } else if (a == "Pawn") { b = "@@color:LightGreen;Pawnshop@@: A place to sell treasure and trash alike"; } else if (a == "PlayerHouse") { if (State.variables.WORLD.house > 2) { b = "@@color:LightGreen;Your house@@: Home sweet home"; } else { b = "@@color:LightGreen;Abandoned building@@: Looks like it's in bad shape"; }; } else if (a == "GeneralStore") { b = "@@color:LightGreen;General store@@: A place to buy assorted goods"; } else if (a == "Guild") { b = "@@color:LightGreen;Adventure's Guild@@: For quests"; } else if (a == "MagicCircle") { b = "@@color:LightGreen;Magic Circle@@: An large magic circle composed of runes carved directly into the stone"; } else if (a == "Blacksmith") { b = "@@color:LightGreen;Blacksmith@@: A place to buy arms and armor"; } else if (a == "Church") { b = "@@color:LightGreen;Church of the Immaculate Rebirth@@: For all your spiritual needs"; } else if (a == "Gravestone") { b = "@@color:LightGreen;Graveyard@@: A small collection of gravestones outside the church"; } else if (a == "Selene") { b = "@@color:LightGreen;Witch's Den@@: A literal hole in the wall where the Wayward Witch, Selene resides"; } else if (a == "Tower") { if (State.variables.WORLD.MainQuest[0].state == "inactive") { b = "@@color:LightGreen;Tower of Triumph, Shrine of the Goddess@@: (Locked)"; } else { b = "@@color:LightGreen;Tower of Triumph, Shrine of the Goddess@@: A dangerous place, but this is your ultimate goal!"; }; }; document.getElementById("TextArea").innerHTML = ""; $('#TextArea').wiki(b); }; <</script>>\ \ <<nobr>>\ <<if $WORLD.MobileMode is 1>> <<set _foo to $ImgPath + "CityNorthMOBILE.png">> <img @src="_foo" usemap="#image-map"> <map name="image-map"> <area onmouseover="SugarCube.setup.MapMouse('Forest')" onclick="SugarCube.setup.MapClick('Forest')" coords="89,320,90,291,63,285,66,218,1,217,4,320" shape="poly"> <area onmouseover="SugarCube.setup.MapMouse('Tavern')" onclick="SugarCube.setup.MapClick('Tavern')" coords="77,225,57,167" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Pawn')" onclick="SugarCube.setup.MapClick('StorePawn')" coords="104,196,125,256" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('PlayerHouse')" onclick="SugarCube.setup.MapClick('House')" coords="172,73,191,126" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('GeneralStore')" onclick="SugarCube.setup.MapClick('StoreGeneral')" coords="288,166,307,224" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Guild')" onclick="SugarCube.setup.MapClick('Guild')" coords="363,71,383,128" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('MagicCircle')" onclick="SugarCube.setup.MapClick('MagicCircle')" coords="374,254,33" shape="circle"> <area onmouseover="SugarCube.setup.MapMouse('Blacksmith')" onclick="SugarCube.setup.MapClick('StoreSmith')" coords="441,164,459,220" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Church')" onclick="SugarCube.setup.MapClick('Church')" coords="577,198,594,253" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Gravestone')" onclick="SugarCube.setup.MapClick('Gravestone')" coords="559,256,573,284" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Gravestone')" onclick="SugarCube.setup.MapClick('Gravestone')" coords="597,256,610,284" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Selene')" onclick="SugarCube.setup.MapClick('Selene')" coords="633,42,652,97" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Tower')" onclick="SugarCube.setup.MapClick('Tower')" coords="690,227,729,287" shape="rect"> </map> <<else>>\ <<set _foo to $ImgPath + "cityv4.png">> <img @src="_foo" usemap="#image-map"> <map name="image-map"> <area onmouseover="SugarCube.setup.MapMouse('Forest')" onclick="SugarCube.setup.MapClick('Forest')" coords="89,320,90,291,63,285,66,218,1,217,4,320" shape="poly"> <area onmouseover="SugarCube.setup.MapMouse('Tavern')" onclick="SugarCube.setup.MapClick('Tavern')" coords="129,225,96,167" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Pawn')" onclick="SugarCube.setup.MapClick('StorePawn')" coords="174,196,209,256" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('PlayerHouse')" onclick="SugarCube.setup.MapClick('House')" coords="288,73,319,126" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('GeneralStore')" onclick="SugarCube.setup.MapClick('StoreGeneral')" coords="480,166,513,224" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Guild')" onclick="SugarCube.setup.MapClick('Guild')" coords="606,71,639,128" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('MagicCircle')" onclick="SugarCube.setup.MapClick('MagicCircle')" coords="624,254,33" shape="circle"> <area onmouseover="SugarCube.setup.MapMouse('Blacksmith')" onclick="SugarCube.setup.MapClick('StoreSmith')" coords="736,164,765,220" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Church')" onclick="SugarCube.setup.MapClick('Church')" coords="962,198,991,253" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Gravestone')" onclick="SugarCube.setup.MapClick('Gravestone')" coords="932,256,955,284" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Gravestone')" onclick="SugarCube.setup.MapClick('Gravestone')" coords="996,256,1018,284" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Selene')" onclick="SugarCube.setup.MapClick('Selene')" coords="1055,42,1088,97" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Tower')" onclick="SugarCube.setup.MapClick('Tower')" coords="1151,227,1215,287" shape="rect"> </map> <<endif>> <</nobr>> <span id="TextArea">\ @@color:LightGreen;Click on the map to navigate@@ </span>\ </div>\ <</widget>>\ <<widget "MapCrescentheartSouth">>\ <div id="NavMap">\ <<script>> setup.MapClick = function (a) { if (a == "") { } else if ( a == "Daphne") { Engine.play("StoreDaphne"); } else if ( a == "CentralLeft") { } else if ( a == "Lumber") { Engine.play("StoreLumber"); } else if ( a == "CentralRight") { } else if ( a == "Jewelry") { } else if ( a == "Clothing") { } else if ( a == "Bridge") { if (State.variables.WORLD.bridge > 0) { var CC = State.variables.CC; var z = State.variables.PCdz; var x = State.variables.PCdx; var y = State.variables.PCdy; State.variables.PC[CC][z] = 1; State.variables.PC[CC][x] = Math.trunc(State.variables.WORLD.DesertDims[0] /2); State.variables.PC[CC][y] = 0; State.variables.WORLD.datapasser = "reset desert"; Engine.play("Desert"); } else { Engine.play("Bridge"); }; } else { Engine.play(a); }; }; setup.MapMouse = function(a) { var b = "Error in Map js: " + a; if (a == "Daphne") { b = "@@color:LightGreen;Daphne's Finest Jewelry@@: For all your fabulous magical needs"; } else if (a == "CentralLeft") { b = "@@color:LightGreen;An empty building@@: Reserved for future expansion!"; } else if (a == "Lumber") { b = "@@color:LightGreen;Lumbermill@@: A place to buy and sell wood"; } else if (a == "CentralRight") { b = "@@color:LightGreen;An empty building@@: Reserved for future expansion!"; } else if (a == "Jewelry") { b = "@@color:LightGreen;An empty building@@: Reserved for future expansion!"; } else if (a == "Clothing") { b = "@@color:LightGreen;An empty building@@: Reserved for future expansion!"; } else if (a == "Bridge") { if (State.variables.WORLD.bridge > 0) { b = "@@color:LightGreen;Bridge@@: Bridge to the southern desert"; } else { b = "@@color:LightGreen;Damaged bridge@@: the bridge is out"; }; }; document.getElementById("TextArea").innerHTML = ""; $('#TextArea').wiki(b); }; <</script>>\ \ <<set _foo to $ImgPath + "citysouth.png">>\ <img @src="_foo" usemap="#image-map">\ <<nobr>>\ <map name="image-map"> <area onmouseover="SugarCube.setup.MapMouse('Daphne')" onclick="SugarCube.setup.MapClick('Daphne')" coords="127,160,95,100" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('CentralLeft')" onclick="SugarCube.setup.MapClick('CentralLeft')" coords="417,127,447,191" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Lumber')" onclick="SugarCube.setup.MapClick('Lumber')" coords="575,102,609,161" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('CentralRight')" onclick="SugarCube.setup.MapClick('CentralRight')" coords="735,127,767,192" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Jewelry')" onclick="SugarCube.setup.MapClick('Jewelry')" coords="990,126,1024,191" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Clothing')" onclick="SugarCube.setup.MapClick('Clothing')" coords="1119,126,1152,189" shape="rect"> <area onmouseover="SugarCube.setup.MapMouse('Bridge')" onclick="SugarCube.setup.MapClick('Bridge')" coords="580,205,638,309" shape="rect"> </map> <</nobr>> <span id="TextArea">\ @@color:LightGreen;Click on the map to navigate@@ </span>\ </div>\ <</widget>>\<!-- early unlock tutorial quest 6 is there's already a dead character -->\ <<if $WORLD.quests[6].state is "inactive">>\ <<for _DeathLoop to 0; _DeathLoop < 3; _DeathLoop++>>\ <<if ($PC[_DeathLoop][$PCstate] is "dead") or ($PC[_DeathLoop][$PCstate] is "lost")>>\ <<set $WORLD.quests[6].state to "avail">>\ <<endif>>\ <</for>>\ <<endif>>\ \ <<set _AllowQuestLinks to true>>\ \ <<if $WORLD.datapasser[0] is "Rina">>\ @@color:Gold;Rina, the adventurer's guild desk clerk@@\ <<SimplePic "rina.jpg">>\ <hr>\ <<if $WORLD.guild is 0>>\ @@color:Pink;Rina@@: "Welcome to Crescentheart. I'm Rina, the guild clerk. Are you here to climb the tower?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, if possible." @@color:Pink;Rina@@: "It's very possible! But if you don't want to die right away, you should probably spend some time learning the ropes and familiarizing yourself with the town. Maybe buy some equipment if you can afford it. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is there anything in particular you recommend?" @@color:Pink;Rina@@: "stuff" <hr>\ <<else>>\ Rina intro complete <<endif>>\ \ <<elseif $WORLD.datapasser[0] is "confirmed outro">>\ <<CenterPic "guild.png">> @@color:Pink;Rina@@: <<print either("Ok, I've assigned that quest to you. Good luck!","Ok, looking forward to your triumphant return!","Sounds good. Try not to get killed too gruesomely.","Oh, good. Nobody else wanted to do that one. I think the quest was starting to feel lonely.")>>\ \ <<elseif $WORLD.datapasser[0] is "reject">>\ <<CenterPic "guild.png">> @@color:Pink;Rina@@: <<print either("That's ok. It will still be here later if you change your mind.","...aww, I feel so rejected. Haha, just kissing. I mean kidding. I mean...uhh, look, just be careful you don't get murdered in your sleep, is all I'm saying.","No problem. Is there anything else I can do for you?","You say that now, but you'll be back later.")>> \ <<elseif $WORLD.datapasser[0] is "quest query">>\ @@color:Gold;Rina, the adventurer's guild desk clerk@@\ <<SimplePic "rina.jpg">>\ <hr>\ <!-- ******************************************************** -->\ <<if $WORLD.datapasser[1] is "q">><!-- Unlock the tower -->\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hi! Why is the tower locked?" @@color:Pink;Rina@@: "Too many fresh new adventurers were going straight inside the moment they arrived in town, and were getting one-shotted. Inevitably they came here to complain, so the guild figured it would better for everyone involved if we locked it up and required people to get a key, rather than let newbies go barging in at level one based on some marketing boilerplate they saw in a travel brochure somewhere." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That seems sensible," you nod. "May I have a key?" <<if ($PC[$CC][$PClevel] < 3) and ($PC[$CC][$PCgen] is 1)>>\ <<set _AllowQuestLinks to false>>\ Rina eyes you suspiciously. @@color:Pink;Rina@@: "You appear to be a fresh, brand new character," she hands you a form. "I'm afraid I'm going to have to ask you to fill out a disclaimer." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Let's see...paragraph one, I promise not to complain to the dev about the game being too hard if I go charging into the tower before completing the tutorial. Paragraph two, I understand that I arrived in town naked and that I should probably equip my gear rather than go charging into the tower then complaining to the dev about how hard the game is when I can't be bothered to look at my inventory screen. Paragraph three..." <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>> </span>\ <span id="KeypY">\ <<link "y) Yes, sign the disclaimer and unlock the tower" "Guild">> <<set $WORLD.MainQuest[0].state to "complete">>\ <<set $WORLD.datapasser to "">> <</link>> </span>\ <span id="KeypN">\ <<link "n) No, not yet" "Guild">> <<set $WORLD.datapasser to "">> <</link>> </span>\ <<else>>\ <<set $WORLD.MainQuest[0].state to "complete">>\ <<set $WORLD.datapasser to "">>\ @@color:Pink;Rina@@: "Yep, here you go." @@color:Yellow;The Tower is now unlocked@@ <<endif>>\ <<elseif $WORLD.datapasser[1] is 0>><!-- Meet the town -->\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello. I'm new in town. My name's <<print $PC[$CC][$PCname]>> and I'm here to climb the tower." @@color:Pink;Rina@@: "Hello, <<print $PC[$CC][$PCname]>>! My name's Rina. I'm the guild clerk here in Crescentheart. All the quests here are completely optional, but if you're ever unsure of what to do next, we here at the guild would love to help you!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I appreciate that. Would you tell me about this 'meet the town' quest I see on the quest board?" @@color:Pink;Rina@@: "Oh, the intro quest? Yes, that's a very good place for a new adventurer to start. Visit the blacksmith, the general store, and the pawnshop, then come back and we'll reward you with a voucher for a complimentary stay at the $WORLD.tavernname. If you're feeling brave you might also go talk to that nut in the hut, but I don't recommend it unless you want to be turned into a lizard or something." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Just talk to people? That doesn't sound very important. Certainly not very adventuresome." @@color:Pink;Rina@@: "Well, keep in mind that funding for quests isn't provided by the guild. Quests are posted by people in town, who pay us to act as a middle man to find an adventurer to complete them." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Who posted this quest? Why are they paying you to have me visit some stores?" @@color:Pink;Rina@@: "The merchant's guild. Every adventurer passes through here sooner or later, and this is basically a way for them to advertise cheaply. You get a tutorial quest, the stores get a potential customer, and I get a commission. Everybody wins!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Huh. That makes a surprising amount of sense. This quest still doesn't sound very important though. Can I skip it?" @@color:Pink;Rina@@: "Sure, if you'd like. It's not a pre-requisite for anything. But having a single incomplete quest in the log would nag at you eventually, wouldn't it?" <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 1>><!-- Forest combat -->\ <<set _Qs to []>>\ <<set _Qs[0] to ["cat","cats"]>>\ <<set _Qs[1] to ["bunny","bunnies"]>>\ <<set _Qs[2] to ["fox","foxes"]>>\ <<set _Qs[3] to ["wolf","wolves"]>>\ <<set _Qrnd to random(0,3)>>\ <<set $WORLD.quests[1].target to _Qs[_Qrnd][0]>>\ <<set $WORLD.quests[1].startat to $PC[$CC][$PCkills][setup.MonNameToKillPTR($WORLD.quests[1].target)]>>\ <!-- Above always sets, if player declines quest, it will be overwritten next time. Easier than checking. -->\ @@color:Pink;Rina@@: "For this quest, please defeat three <<print _Qs[_Qrnd][1]>>. You'll find them in the forest west of town. The reward for the quest is 20 gold." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why <<print _Qs[_Qrnd][1]>>? Isn't it traditional for this sort of a 'first kill quest' to target slimes?" @@color:Pink;Rina@@: "Ordinarily yes, but slimes are actually fairly dangerous Tower monsters in this game. This is a beginner quest, so I'm sending you after relatively harmless forest creatures instead." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, that's convenient." @@color:Pink;Rina@@: "I know, right? I'm awesome like that." <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 2>><!-- Meat -->\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _QuestTarget to "wolf">>\ <<set $WORLD.quests[2].target to "wolf">>\ <<else>>\ <<set _QuestTarget to "bunny">>\ <<set $WORLD.quests[2].target to "bunny">>\ <<endif>>\ @@color:Pink;Rina@@: "For this quest I'll need you to defeat some <<print _QuestTarget>>-morphs, carve up their corpses and bring back the meat." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's a bit gruesome. Aren't animal morphs like that largely human? Is somebody seriously going to eat that?" @@color:Pink;Rina@@: "Oh, all the time. Though in this case it's really just a proof-of-kill trophy and I'll probably end up tossing it." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's the point then? <<if _QuestTarget is "bunny">>\ @@color:Pink;Rina@@: "The Quest sponser is a noble who's angry that they have bigger boobs than she does." <<else>>\ @@color:Pink;Rina@@: "The quest sponser is a noble who's angry that they have bigger dicks than he does." <<endif>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Right. Ok, so how do I do this?" @@color:Pink;Rina@@: "Buy a butcher's knife from the general store, then go fight some <<print _QuestTarget>>-morphs in the forest. If you defeat a monster with the knife in your inventory, you'll have an option to cut some meat from it. Do that, and bring back 3 pieces of _QuestTarget meat. Of course, you might want to collect more than 3 if you're planning to eat any for yourself." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why would I do that?" (Rina waggles her eyebrows and grins at you, but says nothing.) <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 3>><!-- This is a sex game -->\ <<if $PC[$CC][$PCmorph] is "human">>\ @@color:Pink;Rina@@: "For this next quest I'm going to need you to lose a battle." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What? Why?" @@color:Pink;Rina@@: "So that you can be raped by a monster." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "WHAT?!?! Why in the world should I do that??!" <<if $PC[$CC][$PCsex] is "male">>\ @@color:Pink;Rina@@: "Look, you don't have to do it if you don't want to, but sex is actually kind of an important mechanic in this game. Plus it's going to happen sooner or later, so you may as well rip the band-aid off quickly, right?" <<else>>\ @@color:Pink;Rina@@: "Look, you don't have to do it if you don't want to, but sex is actually kind of an important mechanic in this game. Plus it's going to happen sooner or later, so you may as well have a monster rip your panties off...I mean, you may well rip the band-aid off quickly, right?" <<endif>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Why? What's so different about losing a battle and being fucked by a monster, and winning a battle and fucking a monster?" @@color:Pink;Rina@@: "Transformations only happen if you lose, not when you win." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...oh, that's useful to know. Ok. But now that I know I guess I don't have to actually go through all that, right?" @@color:Pink;Rina@@: "I suppose. But, if you complete the quest, I'll give you 30 shiny gold coins for it! You want the shinies, don't you?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What if my fetish is role-playing a pristine virgin in a sex game?" <<if $PC[$CC][$PCsex] is "male">>\ @@color:Pink;Rina@@: "You do you, I guess. But there's actually a mechanic later in the game that let's you have your cock and beat it too, if you'll forgive the analogy. But point being, take the quest or leave it, but I recommend you learn the mechanics." <<else>>\ @@color:Pink;Rina@@: "You do you, I guess. But there's actually a mechanic later in the game that let's you have some cock and eat it too, if you'll forgive the analogy. Or the oralogy, I suppose. But point being, take the quest or leave it, but I recommend you learn the mechanic." <<endif>>\ <<else>>\ Rina looks over you carefully. @@color:Pink;Rina@@: "Hmm, well this quest is about learning how transformation works. But as a <<print $PC[$CC][$PCmorph]>> it looks like you've already done that." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Lose a battle, get raped, wake up in the church with different parts, right?" @@color:Pink;Rina@@: "Pretty much, yeah." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok, I guess I can skip that quest then." @@color:Pink;Rina@@: "WAIT, NO!" she shouts in a panic, then nervously looks around and beckons you closer to her desk with a whisper. "You should do it anyway. I get commission for every...I mean, you, yeah...//you// get money for turning in these tutorial quests. What does it really matter if you've already done completed it before you pick it up? @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That makes sense. What do you suggest?" @@color:Pink;Rina@@: "Accept the quest like normal, then immediately turn around and turn it it. I get my commission, you get a quest reward, everybody wins!" <<endif>>\ <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 4>><!-- cut trees -->\ <<set _AxeLevel to setup.AxeLevel()>>\ <<if _AxeLevel > 0>>\ @@color:Pink;Rina@@: "For this next quest, I'd like you to bring me 10 wooden logs." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's it? Just 10 wood?" @@color:Pink;Rina@@: "Yep! You've already figured out woodcutting, so this should be easy peasy!" <<else>>\ @@color:Pink;Rina@@: "For this next quest, I'd like you to bring me 10 wooden logs." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How do I do that? The trees just block me when I try to walk into them." @@color:Pink;Rina@@: "You'll need an axe. You can buy them from Finley the blacksmith." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How much is that going to cost me?" @@color:Pink;Rina@@: "I don't know," she shrugs. " 50 gold maybe?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And how much is the quest reward?" @@color:Pink;Rina@@: "Because I like you so much, and I don't say that about just anybody...I'll award you with 40 shiny gold coins!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What? Why? That's less than the cost of an axe? I'd //lose// money if I do your quest!" <<if (setup.getnextinvslot($CC) < 0)>>\ @@color:Pink;Rina@@: "Oh fine," she huffs. "I have an old copper axe here under my desk. I keep it around to shut up people who complain about my quests, but I suppose if you accept the quest I won't need it after all. Looks like your inventory is full though, so I recommend you get that sorted out before you accept the quest. It can be a huge pain to deal with contingencies like that." <<else>>\ @@color:Pink;Rina@@: "Oh, fine," she huffs. "I have an old copper axe here under my desk. I keep it around to shut up people who complain about my quests, but I suppose if you accept the quest I won't need it anymore." <<endif>>\ <<endif>>\ <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 5>><!-- Rebirth -->\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So what do I have to do for this next quest?" @@color:Pink;Rina@@: "Give up the adventuring life and retire into obscurity." <<if $PC[$CC][$PCgen] > 1>>\ <<set $WORLD.quests[5].reward to 100>>\ <<set $WORLD.quests[5].gen to $PC[$CC][$PCgen]>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I've already done that." @@color:Pink;Rina@@: "I know you don't want to, but it's actually an important...wait, you've done it already?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yep. Harmony, Church of Immaculate Rebirth, I know all about that. I'm a generation <<print $PC[$CC][$PCgen]>> adventurer." @@color:Pink;Rina@@: "Well, damn. There's goes my commission," she sighs, before her grins turns Chesire. "Hey...nobody has to //know// you've done it already." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I think I see where this is going. You want me to do the quest so we can split the quest reward evenly?" @@color:Pink;Rina@@: "Did you say evenly?" she looks at you like you're crazy. "You don't seriously expect me to give you half of 200 gold just to...I mean, give you half of 100 gold just to-" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, Rina. The reward is 200, I get half. That means you pay me 100 gold to do this." @@color:Pink;Rina@@: "But you don't even have to do anything for this quest!" she whines. "Just go retire and drink martinis on the beach. //I desperately want to drink martinis on the beach!//" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And will it be easier for you to do that with the 100 gold if you give me half, or with nothing at all if I refuse the quest?" @@color:Pink;Rina@@: "Gahh! You're so difficult!" she shakes in anger, then drops her head onto her desk. "Ok, fine. Go retire, make a new character, when your descendant comes back I'll give them 100 gold, and then I'll sell my kidneys on the black market to make up the difference. Deal?" <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You've not serious." @@color:Pink;Rina@@: "I am! And don't get me wrong, adventurers never want to do this and I totally get why you wouldn't want to throw away all the good progress you've made. But it's actually a super important mechanic to know about. There's basically no way you're going to be able to beat the tower without using the rebirth system." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. No promises, but what would I have to do?" @@color:Pink;Rina@@: "You've seen that church on the east end of town by the tower? Go there and talk to Harmony if you haven't already. She'll talk you through it. Once you've retired, live a long and unfulfilling life in a retirement home, and then someday your descendant will be born and they can come talk to me to finish the quest!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. Let's say I do this. What's the reward?" @@color:Pink;Rina@@: "First off, your descendant will start with more stat points, so they'll be stronger, smarter, whatever you want. And if you've unlocked any new perks or character features, you can select those instead of that lousy 'starter' perk. And you'll complete an achievement that will unlock a second character slot. So much win! But, and this is the //most important thing//...I'll get paid a two hundred gold commision for...uhh, I mean I'll get paid 51 gold, and because I'm so charitable and honest, I'll give you 50 of it." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Rina?" you deadpan. "You're awful." @@color:Pink;Rina@@: "Yes, but you love me anyway," she beams. "So, have we got a deal?" <<endif>>\ <!-- ******************************************************** -->\ <<elseif $WORLD.datapasser[1] is 6>><!-- Death -->\ @@color:Pink;Rina@@: "Woo! Congrats! You're almost to the end of the tutorial quests!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, thank goodness. So what do I have to do next?" <<set _TargetChar to "no">>\ <<for _DeathLoop to 0; _DeathLoop < 3; _DeathLoop++>>\ <<if ($PC[_DeathLoop][$PCstate] is "dead") or ($PC[_DeathLoop][$PCstate] is "lost")>>\ <<set _TargetChar to _DeathLoop>>\ <<if $PC[_DeathLoop][$PCsex] is "male">>\ <<set _TargetHeShe to "he">>\ <<else>>\ <<set _TargetHeShe to "she">>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _TargetChar is "no">>\ @@color:Pink;Rina@@: "Die." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Rina, you are seriously the worst quest giver in any game, ever." <!-- with implemented pregnancy quest: Aww, don't be a baby. You already have one of those. -->\ <<if setup.AchievementHandler("Three's Company", "HAS?", -1)>>\ @@color:Pink;Rina@@: "Aww, don't be a baby. Death is an important part of life. Besides, looks like you've already unlocked the third character slot, so you'd already done the whole death thing. This quest should be a breeze for you." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. So what do I need to do? Go jump off a cliff?" @@color:Pink;Rina@@: "Technically, you don't need to die personally. All you really need is to have a dead or lost character in any slot, and then come talk to me on any living character. Doesn't matter when the dead dude dies. I just need to see a somebody marked as 'dead' or 'lost' on the character menu. Retirement won't work." <<else>>\ @@color:Pink;Rina@@: "Aww, don't be a baby. Death is an important part of life. Though to be clear, it's not strictly neccesary for you to die personally. All you really need is to have a dead or lost character in any character slot when you come back to talk to me. It doesn't matter who or which one. Though if you're going to have a character die anyway, you might as well make sure the character to die is at least level 3. That will award you the 'Three's Company' achievement and unlock your third character slot." <<endif>>\ <<else>>\ Rina looks through her papers. @@color:Pink;Rina@@: "Looks like you don't have to do anything. You know <<print $PC[_TargetChar][$PCname]>> over in character slot <<print _TargetChar +1>>?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...yes?" @@color:Pink;Rina@@: "Well, the whole point of the Unto Eternity quest is to have a character die so you can go rescue them in the next quest. And as it turns out, <<print _TargetHeShe>>'s already <<print $PC[_TargetChar][$PCstate]>>." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So what do I do, just skip this quest?" @@color:Pink;Rina@@: "Oh, heavens no!" she looks aghast. "Accept the quest, and turn it in so I can get my commission! I only get paid for completed quests, not quests that didn't have to be completed." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thanks for always looking out for me," you snark. @@color:Pink;Rina@@: "Happy to help!" she smiles, then corrects herself. "Me, that is. Happy to help me." <<endif>>\ <<elseif $WORLD.datapasser[1] is 7>><!-- Rescue -->\ @@color:Pink;Rina@@: "Hey, <<print $PC[$CC][$PCname]>>! Are you ready for the final tutorial quest?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Absolutely!" @@color:Pink;Rina@@: "Great!" Rina beams. "So, as you may recall, the previous quest was to die. This quest, as you may have anticipated, is to go rescue the dead character." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And how do I do that?" @@color:Pink;Rina@@: "By going to their last known location to find them, then hauling their body back to Harmony at the Church of Immaculate Rebirth." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Huh. Sounds simple enough." @@color:Pink;Rina@@: "It can be, but be aware that sometimes bodies get moved around a little bit. You can see on the main menu where a dead or lost character is, but sometimes it could take some searching. You can also talk to Harmony for that same information." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What exactly is the difference between dead and lost?" @@color:Pink;Rina@@: "Think of it like an estimate of how difficult it will be to find them. A dead character is usually probably pretty close to where you last saw them. A lost character is known to have been moved, and might take some extra searching. In rare cases they might not even spawn at their listed location at all and you might have to regenerate it and look a couple times." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What causes that?" @@color:Pink;Rina@@: "Usually it's caused by a tower regeneration. If you regenerate the tower when a character is still inside, the level they're on technically doesn't even exist until you go there. So the game can't even know where they are for sure. Usually all you have to do is simply go there and it's fine, but if the level generator puts them inside a stairwell or a teleporter or something, you might need to regenerate the tower again to be able to find the body. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. Anything else I need to know?" @@color:Pink;Rina@@: "Nope! Get out there and save your dead buddy. Good luck!" <<elseif $WORLD.datapasser[1] is 8>><!-- What now? -->\ <<if $WORLD.Circle > 0>>\ @@color:Pink;Rina@@: "Woo! I heard you defeated Zetalia! Awesome!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I know, right? So whaty should I do now?" @@color:Pink;Rina@@: "Well, that's the end of content for this initial release of the game. Game development takes a lot of time, especially as a solo developer, and if you'd like to encourage further updates you might consider heading over to <a href="https://subscribestar.adult/arcdragon" target="_blank" rel="noopener noreferrer">SubscribeStar</a> and supprting ArcDragon directly." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Et tu, Rina?" @@color:Pink;Rina@@: "Hey, don't look at me. I've made it very clear what my priortiies are. I don't care whether you suppotr the dev at all, but think of all the new quests he'll haev for me in future updates? And not just tutorial quests, but _main_ quests. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How high do you think the commissions on those quests will be?" Rina's eyes sparkle and she starts to drool on her desk. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Rina? Are you there?" @@color:Pink;Rina@@: "What!?!?" she startles, then blinks a couple times. "Sorry, just got caught up in a funlittle fanatasy involving me at my own little private cabin on the beach." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Never give up on those dreams, Rina." @@color:Pink;Rina@@: "Thanks <<print $PC[$CC][$PCname]>>," she smiles. "I'll be sure not to!" <<else>>\ @@color:Pink;Rina@@: "Hey, <<print $PC[$CC][$PCname]>>! You've finishde the tutorial and I don't have any more quests for you right now." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh, really? What should I do next?" @@color:Pink;Rina@@: "That's totally up to you, but I have a rumor that might help. You've met Gerard, right? The proprieter of the general goods store? Back whenhe was an adventurer he told me a story about some sort of specialroom on the fifth floor of the tower with a monster in it. 'Queen of the Spiders' he called her. Just a hunch, but I've a sneaking suspicion that that's probably some sort of boss monster." <<endif>>\ <<elseif $WORLD.datapasser[1] is 99>>\ This dialogue is not used, right? Approaching the desk, you see that Rina is crying. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. Are you alright?" @@color:Pink;Rina@@: "No, I'm not alright!" she bawls. "I don't have any more quests to give you! How will I ever be able to afford that gold-plated yacht I've always wanted??!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, I see how difficult things must be for you," you deadpan. @@color:Pink;Rina@@: "Of course," she wipes up her tears. "There is one //tiny little thing// you might be able to do." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's that?" you ask suspiciously. @@color:Pink;Rina@@: "You could reset quests. On the initial game menu, under the 'controls' section there's an option to 'Reset World Data.' Click that, and then you could do these quests and collect all the rewards all over again!" <<if $WORLD.house > 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Reset //world// data? Doesn't that reset all world quests? So I'd lose my house? And everything in it?" @@color:Pink;Rina@@: "Yeah that's true," she nods. "But, I mean...it's an option." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Reset //world// data? Wouldn't that reset a bunch of other things too besides just these quests?" @@color:Pink;Rina@@: "...it's possible," she grudgingly admits. "But, I mean...you could if you want to." <<endif>>\ <<endif>>\ \ <<if $WORLD.datapasser[1] < 9>>\ <hr>\ <<set _WhyIsThisNeeded to $WORLD.datapasser[1]>>\ \ <span id="KeypY">\ <<link "y) Accept this quest" "Guild">> <<AdvanceTime 5>> <<set $WORLD.quests[_WhyIsThisNeeded].state to "active">> <<set $WORLD.datapasser[0] to "confirmed outro">> <<if _WhyIsThisNeeded is 4>>\ <<set _ads to setup.addtoinven([220,102,0,0])>><!-- hatchet --> <<endif>>\ <</link>> </span>\ <span id="KeypN">\ <<link "n) Reject this quest" "Guild">> <<AdvanceTime 5>> <<set $WORLD.datapasser[0] to ["reject"]>> <</link>> </span>\ <<endif>>\ \ <<elseif $WORLD.datapasser[0] is "quest turnin">>\ @@color:Gold;Rina, the adventurer's guild desk clerk@@\ <hr>\ <<SimplePic "rina.jpg">>\ \ <<set _FocusedQuest to $WORLD.datapasser[1]>>\ \ <!-- ******************************************************** -->\ <<if _FocusedQuest is 0>>\ <<set _OneQty to 0>>\ <<if $WORLD.smith > 0>><<set _OneQty to _OneQty +1>><<endif>>\ <<if $WORLD.gstore > 0>><<set _OneQty to _OneQty +1>><<endif>>\ <<if $PC[$CC][$PCSkittersChat][0] > 0>><<set _OneQty to _OneQty +1>><<endif>>\ <<if _OneQty is 0>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So what do I need to do for this 'meet the town' quest again?" @@color:Pink;Rina@@: "Just visit some stores and talk to the people running them." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I have to specifically talk to people? I can't just walk in and leave?" @@color:Pink;Rina@@: "Yeah, you have to talk to the shopkeepers. The tracker for the quest checks their dialogue state, so I have no way to prove that you actually visited them if you don't talk to them." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What if I asked them to sign a note? What if I brought one of them back to tell you personally? What if I actually, you know, //bought// something from them and showed it to you?" @@color:Pink;Rina@@: "Nope!" she covers her eyes and starts chanting. "La! La! La! Can't see a thing!" <<elseif _OneQty > 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So I visited the stores you asked me to." @@color:Pink;Rina@@: "Awesome! I get a whole gold coin in commission for that you know." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about me? Aren't I supposed to get a reward too?" <<if (setup.getnextinvslot($CC) < 0)>>\ @@color:Pink;Rina@@: "Yep, but your inventory is full. Go get that sorted out and then come back." <<else>>\ @@color:Pink;Rina@@: "Oh, yeah. Here's your voucher. $WORLD.tavernname is on the left side of town by the sign leading to the enchanted forest. I recommend stopping by when you need healing or food." <<set _throwaway to setup.addtoinven([114,0,0,0])>>\ <<set $WORLD.quests[0].state to "complete">>\ <<endif>>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. Could you remind me which stores I need to visit?" <<set _Texts to ["zero", "one","two"]>>\ @@color:Pink;Rina@@: "The general goods store, the pawnshop and the blacksmith. Looks like you've only visited <<print _Texts[_OneQty]>> of them so far. Go on, just click on any random couple doors in town and you'll find them eventually." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How do you even know where I've been when you've been sitting here in the guild hall this entire time?" @@color:Pink;Rina@@: "I checked the save game data." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...that's a little on the nose, don't you think?" <<set _PickADick to "error: PC is male but penis not found">>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<if $PC[$CC][$PCsex] is "male">>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.type is $BPpenis>>\ <<set _PickADick to _bp>>\ <<endif>>\ <</for>>\ @@color:Pink;Rina@@: "Nah, I know everything about you. Your penis is <<print _PickADick.size / 10>> inches long!\ <<if $PC[$CC][$PCsexACTS].malevirgin is true>> No wonder you're a virgin!"<<else>><<endif>> <<elseif $PC[$CC][$PCsex] is "female">>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<set _PickBoobs to "error: PC is female but boobs not found">>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.type is $BPboobs>>\ <<set _PickBoobs to _bp>>\ <<endif>>\ <</for>>\ <<set _BoobSize to Math.trunc(_PickBoobs.size /10)>>\ @@color:Pink;Rina@@: "Nah, I know everything about you. For example, your boobs are _BoobSize cubic centimeters, and you're still a virgin." <<else>>\ @@color:Pink;Rina@@: "Nah, I know everything about you! Remember how you lost your viriginity to a <<print $PC[$CC][$PCsexACTS].femalevirgin>>? I know all about that!" <<endif>>\ <<else>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ @@color:Pink;Rina@@: "Nah, I know everything about you. Like how many sexual organs you have." <<else>>\ @@color:Pink;Rina@@: "Nah, I know everything about you! Remember how you lost your viriginity to a <<print $PC[$CC][$PCsexACTS].femalevirgin>>? Of course, I'm only talking about your vaginal vriginity here, given that you're a hermaphrodite. I know all about that!" <<endif>>\ <<endif>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...I think I'll be going now." <<endif>>\ \ <!-- ******************************************************** -->\ <<elseif _FocusedQuest is 1>>\ <<set _QTarget to $WORLD.quests[_FocusedQuest].target>>\ <<set _KillPTR to setup.MonNameToKillPTR(_QTarget)>>\ <<if $PC[$CC][$PCkills][_KillPTR] < $WORLD.quests[_FocusedQuest].startat>>\ <!-- hack for if player retires with quest active -->\ <<set $WORLD.quests[_FocusedQuest].startat to 0>>\ <<endif>>\ <<set _KillsSinceQuest to $PC[$CC][$PCkills][_KillPTR] - $WORLD.quests[_FocusedQuest].startat>>\ <<if _KillsSinceQuest is 0>>\ @@color:Pink;Rina@@: "Doesn't look like you've killed any <<print _QTarget>>-morphs yet." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yeah, I'm working on it. Where did you say I could find those again?" @@color:Pink;Rina@@: "In the enchanted forest west of town." <<elseif _KillsSinceQuest > 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. I think I'm done with that kill quest." @@color:Pink;Rina@@: "You sure are. Congrats! What was the reward for that again? It was the satisfaction of a job well done, right?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, you said it was 20 gold." @@color:Pink;Rina@@: "2 gold and a head pat?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, twenty gold. Two-zero." @@color:Pink;Rina@@: "How about 5 gold, plus I'll let you feel me up? Fondling a 2d anime girl on your screen has to be worth at least 15 gold, right?" <<if $PC[$CC][$PCsex] is "male">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do you really want me to answer that?" @@color:Pink;Rina@@: "Oh, alright. Here's your 20 gold you gold-pinching miser. Just remember you turned me down if the dev ever gets around to making a sex scene for me." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No offense, but I think my boobs are bigger than yours anyway." @@color:Pink;Rina@@: "I know. What do you think I need the money for? Boobs jobs aren't cheap. Alright, you cheapskate. Here's your 20 gold ripped straight out of my chest surgery fund." <<endif>>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + 20>>\ <<AwardXP 10 "quest">>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. I've killed _KillsSinceQuest <<print _QTarget>>-morphs." @@color:Pink;Rina@@: "Good job. That still leaves <<print 3 - _KillsSinceQuest>> to go." <<endif>>\ \ <!-- ******************************************************** -->\ <<elseif _FocusedQuest is 2>>\ <<if $WORLD.quests[_FocusedQuest].target is "cat">>\ <<set _QTname to "cats">>\ <<set _MSource to 101>>\ <<elseif $WORLD.quests[_FocusedQuest].target is "bunny">>\ <<set _QTname to "bunnies">>\ <<set _MSource to 100>>\ <<elseif $WORLD.quests[_FocusedQuest].target is "fox">>\ <<set _QTname to "foxes">>\ <<set _MSource to 102>>\ <<elseif $WORLD.quests[_FocusedQuest].target is "wolf">>\ <<set _QTname to "wolves">>\ <<set _MSource to 103>>\ <<else>>\ <<set _QTname to "@@color:Red;Error: unrecognized quest target@@">>\ <<endif>>\ <<set _FetchTarget to setup.HasQuestMonsterParts(102, _MSource)>>\ <<if _FetchTarget > -1>>\ <<set _MeatHas to $PC[$CC][$PCinven][_FetchTarget][2]>>\ <<if _MeatHas > 2>>\ <<set $PC[$CC][$PCinven][_FetchTarget][2] to $PC[$CC][$PCinven][_FetchTarget][2] - 3>>\ <<if $PC[$CC][$PCinven][_FetchTarget][2] is 0>>\ <<set $PC[$CC][$PCinven][_FetchTarget] to [0,0,0,0]>>\ <<endif>>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ @@color:LightGreen;(You hand 3 chunks of <<print $WORLD.quests[_FocusedQuest].target>> meat to Rina)@@ @@color:Pink;Rina@@: "Woo! Thick chunky slabs of raw meat. Just how I like it!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Uhh, you're welcome?" @@color:Pink;Rina@@: "So, anything else I can do you for?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "A quest reward would be nice." @@color:Pink;Rina@@: "The journey was the reward? The true reward was the friends you made along the way? Ask and ye shall...oh, wait. That one doesn't work. Ok, yeah I guess. Here you go: 30 coins and 20 xp. Don't spend it all in one place. Except the xp." <<AwardXP 20 "quest">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + 30>>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. How much of that <<print $WORLD.quests[_FocusedQuest].target>> meat was I suppose to bring back again?" @@color:Pink;Rina@@: "Three." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I have _MeatHas so far." @@color:Pink;Rina@@: "I didn't get this front desk job with the guild because I'm a math genius. But I'm at least moderately certain that _MeatHas is not 3." <<endif>>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. What was I supposed to do for that meat quest again?" @@color:Pink;Rina@@: "It's a generic fetch quest. Go kill some _QTname and bring back meat from 3 of them." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How many battles do you think I'll have to fight to do this? There's a lot of stuff in the forest besides _QTname." @@color:Pink;Rina@@: "Well, look on the bright side: at least this quest doesn't have a low drop rate. So long as you have a butcher's knife to carve them up with, you can get meat from every single one." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thank goodness for that." @@color:Pink;Rina@@: "How about you thank //me// instead? I'm the who who gave you the quest." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Oh. Right. Thank you." <<endif>>\ <!-- ******************************************************** -->\ <<elseif _FocusedQuest is 3>>\ <<if $PC[$CC][$PCmorph] is "human">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. Could you explain to me again how losing a battle is supposed to transform me?" @@color:Pink;Rina@@: "It's not just losing a fight. Sex has to be involved. Most monsters will fuck anything they can, but every now and then something might not be interested. You have to be raped for a transformation to happen." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And that will make me more like whatever the sex is with? So if I want to be more fox-like, lose a battle to a fox? If I want to be more wolf-like, lose a battle to a wolf?" @@color:Pink;Rina@@: "That's the idea, yes. <<if $PC[$CC][$PCsex] is "male">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about sex organs? You say that transformation makes you like the thing you're having sex with. Does that mean if I get beat up by a bunny girl I'll grow boobs?" @@color:Pink;Rina@@: "No, sex organs move towards the match for your partner. Sex with a female with make you more masculine. Sex with a male will make you more feminine. And sex with a hermaphrodite...well, that can give either result. So in your example of sex with a bunny girl, that might transform your human cock into a bunny cock, or it might get longer...but you'd never grow boobs from it." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about sex organs? You say that transformation makes you like the thing you're having sex with. Does that mean if I'm raped by a wolf man I might grow a penis?" @@color:Pink;Rina@@: "No, sex organs move towards the match for your partner. Sex with a male with make you more female. Sex with a female will make you more male. And sex with a hermaphrodite...well, that can give either result. So in your example of sex with a wolf man, that might make your human boobs turn into wolf boobs for example, or it might make them larger. But it would never make you more masculine." <<endif>>\ <<else>>\ @@color:Pink;Rina@@: "Hello <<print $PC[$CC][$PCmorph]>>, looking good! Here's your reward." <<GainGold 30>>\ <<AwardXP 20 "quest">>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ <br>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thanks, I think. Is there any way to turn back?" @@color:Pink;Rina@@: "Sort of. Transformations are permament until changed. So you can't ever 'turn back' but you can possibly become human by receiving human transformations. Human adventurers don't usually rape each other though, so no easy way back by losing battles on purpose. But food and drink still works, so if you can figure out a way to get some breast milk or semen from a tower adventurer, that should do the trick. Also, it's harder to control but some monsters have composite forms. For example, a centaur is a human upper half on a horse body. So if you had a fox head for instance, a centaur could possibly make it human again. But it would be luck of the draw that you'd get that instead of horse legs, for example." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Aside from the sex stuff, is there any actual benefit to this? Why wouldn't I just try to stay human?" @@color:Pink;Rina@@: "Well, that depends. Not everything has the same kind of body parts. For example, snakes and horses don't have hands. If you want to hold a sword, turning into one of those is probably a bad idea. But on the other hand, snakes have poisonous bites and horses can kick. So with the right transfomrations you might not need to carry a sword at all. But then it would probably be inconvenient to have an awesome pair of magic gloves that you can't wear because you lost your arms and hands to a snake transformation. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Couldn't I do all of those things together though? Have a snake head and horse legs with human hands, for three different types of attack?" @@color:Pink;Rina@@: "Absolutely. Although controlling the transformations to get exactly the combination you want might be a little difficult. Things can only make you more like what they are, and it's not up to you which part gets transformed or how." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What about the forest monsters? They're...kind of not really monsters. Does it even matter if I have bunny hands and wolf legs if they work exactly like human arms and legs?" @@color:Pink;Rina@@: "They don't, though. Transformations always make you more like the monster in question, and every monster part you have will always affect you in some way. For example, bunny-morphs are very good at flirting and wolf-morphs have a higher than usual health pool. So if you want to be like that, get those sorts of parts. Check out 'examine self' on the side bar and look under 'morphology' to see exactly what your body parts are doing for you." <<endif>> <<elseif _FocusedQuest is 4>>\ <<set _WoodPTR to setup.HasItemA(105)>>\ <<set _WoodQty to 0>>\ <<if _WoodPTR > -1>>\ <<set _WoodQty to $PC[$CC][$PCinven][_WoodPTR][2]>>\ <<endif>>\ <<if _WoodQty > 9>>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ <<if $PC[$CC][$PCinven][_WoodPTR][2] > 10>>\ <<set $PC[$CC][$PCinven][_WoodPTR][2] to $PC[$CC][$PCinven][_WoodPTR][2] -10>>\ <<else>>\ <<set $PC[$CC][$PCinven][_WoodPTR] to [0,0,0,0]>>\ <<endif>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina," you wipe the sweat off your forehead. "I'm all done cutting wood." @@color:Pink;Rina@@: "Woo! Awesome! I totally needed those for my side-business...umm, building shelters for impoverished orphans. Anyway, hand over the 40 gold I deserve for letting you do the quest and we'll call it a day." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What? No, I did the quest. You're supposed to pay //me// 40 gold." @@color:Pink;Rina@@: "Are you sure? Because I've been a guild quest desk clerk for a long time, and I'm pretty sure I know how thse things are suppose to...oh, fine. Here's your 40 gold. And you can have some xp too I guess." <<GainGold 40>>\ <<AwardXP 20 "quest">>\ <<elseif _WoodQty > 0>>\ @@color:Pink;Rina@@: "Hey, $PC[$CC][$PCname]. How's that tree-cutting coming along?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I only have _WoodQty logs, so not done yet. Just wanted to check in and see your lovely face." @@color:Pink;Rina@@: "Daww...you're so sweet." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What do I have to do for this quest again?" @@color:Pink;Rina@@: "Bring me back 10 wooden logs so i can carve a bunch of dil - I mean, so I can begin reconstruction of that orphanage we used to have that burned down." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Any special trick to cutting down trees?" @@color:Pink;Rina@@: "Nope, just have an axe with you and go walk into them. A copper axe can only cut low quality trees, but I only need low quality wood, so that's fine. If you want better wood you'll need a better axe or to get better at lumberjacking, but I'm only taking low quality wood here, so don't even worry about that right now." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Should I be selling wood? The forest seems to have endless trees. What's to stop me from simply grinding trees for all the gold I want?" @@color:Pink;Rina@@: "Well, I mean...you //can// do that. But I recommend you think of it as a worst case backup option for people who haven't figured out the game very well. There are better options than grinding like that, and it shouldn't ever be neccesary. But if you get stuck somehow, the option is there." <<endif>>\ <<elseif _FocusedQuest is 5>>\ <<if $PC[$CC][$PCgen] > $WORLD.quests[5].gen>>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ @@color:Pink;Rina@@: "Hello. Can I help you?" <<if $WORLD.quests[5].reward > 50>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, I'm the descendant of $PC[$CC][$PCancestor] and I'm here to collect the 100 gold reward for completing the retirement quest." @@color:Pink;Rina@@: "Oh, I remember <<print $PC[$CC][$PCancestor]>>," she frowns. "Never seen anyone besides myself fight that hard over a lousy 50 extra gold." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I think it was the principal of the thing." @@color:Pink;Rina@@: "I suppose. Anyway, here you go." <<GainGold 100>>\ <<AwardXP 30 "quest">>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes, I'm the descendant of $PC[$CC][$PCancestor] and I'm here to collect the reward for completing the retirement quest." @@color:Pink;Rina@@: "Oh, splendid," she nods. "Here's your 50 gold. Also, please accept this bonus 40 xp. If you didn't grind too much past level 3 before retiring, that should put you pretty close to where you were. By the way, only two quests left in the tutorial after this one." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Great, thank you." <<GainGold 50>>\ <<AwardXP 40 "quest">>\ <<endif>>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So how do I retire again?" @@color:Pink;Rina@@: "Go talk to Harmony at the Church of immaculate Rebirth. She can answer your questions better than I can." <<endif>>\ <<elseif _FocusedQuest is 6>>\ <<set _TargetChar to "no">>\ <<for _DeathLoop to 0; _DeathLoop < 3; _DeathLoop++>>\ <<if ($PC[_DeathLoop][$PCstate] is "dead") or ($PC[_DeathLoop][$PCstate] is "lost")>>\ <<set _TargetChar to _DeathLoop>>\ <<if $PC[_DeathLoop][$PCsex] is "male">>\ <<set _TargetHeShe to "he">>\ <<else>>\ <<set _TargetHeShe to "she">>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _TargetChar is "no">>\ @@color:Pink;Rina@@: "Hey!" Rina looks you over. "You look alive." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "So Rina, how exactly do I die? Losing to monsters just means I wake up back at the church. Nothing I do seems to hurt me very much." @@color:Pink;Rina@@: "Wow, talk about first world problems. The simplest method is to starve to death. Just run around in circles without eating and that will do it eventually. Or if you'd like you could venture into the tower and look for traps. I suppose I should also mention that equipment stays on dead characters, so it might not be a mistake to stash all your gear and gold somewhere and die naked. It's possible to recover bodies and that's exactly what the next quest will have you do, but if you're not able to do that you can lose all your equipment when you die." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Wow, harsh." @@color:Pink;Rina@@: "Yep, that's why this stuff is in the tutorial." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Still, shouldn't you have mentioned that before I took the quest?" @@color:Pink;Rina@@: "Wow, look at the time! I'm due for a lunch break, gotta go, bye!" <<else>>\ <<set $WORLD.quests[6].state to "complete">>\ @@color:Pink;Rina@@: "Hey!" Rina shuffles through her papers. "<<print $PC[_TargetChar][$PCname]>> over in character slot <<print _TargetChar +1>> is <<print $PC[_TargetChar][$PCstate]>>!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yep. The deed has been done." @@color:Pink;Rina@@: "Great, here's some gold for the party you're going to throw instead of a funeral!" <<GainGold 100>>\ <<AwardXP 40 "quest">> @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thanks. Anything else?" <<if ($WORLD.quests[7].state is "inactive")>>\ @@color:Pink;Rina@@: "Yes, the Rescue quest should now be unlocked. I recommend that you do it right away. Definitely at least check it out before you have <<print $PC[_TargetChar][$PCname]>> reincarnate." <<else>>\ @@color:Pink;Rina@@: "Well, ordinarily I'd recommend you go to the Rescue quest, but looks like you've already done it out of order somehow. So, looks like you're on your own. <<endif>>\ <<endif>>\ <<elseif _FocusedQuest is 7>>\ <<set _WhoRessed to $WORLD.quests[7].harmony>>\ <<if _WhoRessed > -1>>\ <<set $WORLD.quests[_FocusedQuest].state to "complete">>\ <<set _HimHer to "her">>\ <<if $PC[_WhoRessed][$PCsex] is "male">>\ <<set _HimHer to "him">>\ <<endif>>\ <<if $CC is _WhoRessed>>\ @@color:Pink;Rina@@: "<<print $PC[$CC][$PCname]>>! You're looking well. Not very dead, I see. Congratulations!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thank you. It's nice to be back. So, any quest reward?" @@color:Pink;Rina@@: "Well, ordinarily I'd prefer to give the reward to the person who completed the quest rather than the person it was done for, but I get my commission either way, so sure! Here you go!" <<else>>\ @@color:Pink;Rina@@: "<<print $PC[$CC][$PCname]>>! I see that you've rescued <<print $PC[_WhoRessed][$PCname]>> and had _HimHer ressurected. Congratulations!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Thank you. It's super awesome that death isn't permanent. So, any quest reward?" @@color:Pink;Rina@@: "Hmm. You've been good to me. Doing all these quests and whatnot. I suppose I can give you something." <<endif>>\ <<GainGold 100>>\ <<AwardXP 50 "quest">>\ <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. Would you run me through how to complete this Rescue quest again?" @@color:Pink;Rina@@: "First, you need a dead or lost character to rescue. At the moment you lack that. Living characters don't require rescue, and 'retired' characters are already in the graveyard and can't be recovered." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok." @@color:Pink;Rina@@: "With that out of the way, go find them with a still-living character. You can see where they were 'last seen' on the main menu." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok." @@color:Pink;Rina@@: "Once located, pick them up, take them to Harmony at the church of Immuculate Rebirth to be ressurected, at which point they become alive and playable again." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Nice. Ok." @@color:Pink;Rina@@: "And then finally, come back to me and turn in the quest." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Great, thanks." <<endif>>\ <<elseif _FocusedQuest is 8>>\ Not used <<else>>\ Unrecognized quest: $WORLD.datapasser[1] <<endif>>\ \ <<set _Guildmaster to true>>\ <<for _i to 0; _i < $WORLD.quests.length; _i++>>\ <<if $WORLD.quests[_i].state is "complete">><<else>>\ <<set _Guildmaster to false>>\ <<endif>>\ <</for>>\ <<if _Guildmaster is true>>\ <<AwardAchievement "Guildmaster">>\ <<endif>>\ \ <<elseif $WORLD.datapasser[0] is "confirmed outro">>\ \ <<else>>\ <<CenterPic "guild.png">> <<if $PC[$CC][$PCsex] is "male">>\ <<set _RinaTalk to random(1,20)>>\ <<if _RinaTalk is 1>>\ @@color:Pink;Rina@@: "What can I do for you? Please don't say blowjob. That joke gets old fast." <<elseif _RinaTalk < 9>>\ @@color:Pink;Rina@@: "How can I help you?" <<else>>\ @@color:Pink;Rina@@: "What can I do for you?" <<endif>>\ <<else>>\ <<set _RinaTalk to random(1,2)>>\ <<if _RinaTalk is 1>>\ @@color:Pink;Rina@@: "Hello, Miss! What can I do for you?" <<else>>\ @@color:Pink;Rina@@: "Hello. How can I help you?" <<endif>>\ <<endif>>\ <<endif>>\ \ \ \ <<if _AllowQuestLinks is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>> </span>\ <<if $WORLD.MainQuest[0].state is "inactive">>\ <span id="KeypT">\ <<link "t) Unlock the Tower" "Guild">> <<set $WORLD.datapasser to ["quest query", "q"]>>\ <</link>>\ </span>\ <<endif>>\ \ \ <!-- process unlocks after completions -->\ <<if ($WORLD.church is 1) and ($WORLD.quests[3].state is "inactive")>>\ <<if $PC[$CC][$PChtze] > 2>>\ <<set $WORLD.quests[3].state to "avail">>\ <<endif>>\ <<endif>>\ <<if ($WORLD.quests[3].state is "inactive")>>\ <<if ($WORLD.quests[2].state is "complete")>>\ <<set $WORLD.quests[3].state to "avail">>\ <<endif>>\ <<endif>>\ <<if ($WORLD.quests[4].state is "inactive")>>\ <<if ($WORLD.quests[1].state is "complete")>>\ <<set $WORLD.quests[4].state to "avail">>\ <<endif>>\ <<endif>>\ <<if ($WORLD.quests[5].state is "inactive") and ($PC[$CC][$PClevel] > 2)>>\ <<set $WORLD.quests[5].state to "avail">>\ <<endif>>\ <<if ($WORLD.quests[6].state is "inactive") and ($WORLD.quests[5].state is "complete")>>\ <<set $WORLD.quests[6].state to "avail">>\ <<endif>>\ <<if ($WORLD.quests[7].state is "inactive") and ($WORLD.quests[6].state is "complete")>>\ <<set $WORLD.quests[7].state to "avail">>\ <<endif>>\ \ <hr>\ @@color:Gold;Tutorial Quests@@ <<set _spanarray to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix","KeypSeven","KeypEight","KepyNine"]>>\ <<set _QuestNames to ["Meet the town","Forest combat","Meat","Transformation","Cut trees","Retirement","Unto eternity","Rescue"]>>\ <<for _i to 0; _i < $WORLD.quests.length; _i++>>\ <<capture _i>>\ <<set _nzero to _i +1>>\ <<set _linktext to "" + _nzero + ") " + _QuestNames[_i]>>\ <span @id="_spanarray[_i]">\ <<if $WORLD.quests[_i].state is "avail">>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest query", _i]>>\ <</link>> - Available <<elseif $WORLD.quests[_i].state is "complete">>\ @@color:LightBlue;<<print _i +1>>) <<print _QuestNames[_i]>> - Complete@@ <<elseif $WORLD.quests[_i].state is "active">>\ <<if setup.IsQuestFinished(_i) is "Not using this?">>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest turnin", _i]>>\ <</link>> - @@color:Orange;Accepted!@@ <<else>>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest turnin", _i]>>\ <</link>> - @@color:Yellow;Pending@@ <<endif>>\ <<else>>\ <!-- there comes a point where it's faster and easier to simply hard code these things -->\ <<if _i is 3>>\ 4) ??? - Complete 'Meat' to unlock <<elseif _i is 4>>\ 5) ??? - Complete 'Forest Combat' to unlock <<elseif _i is 5>>\ 6) ??? - Reach level 3 to unlock <<elseif _i is 6>>\ 7) ??? - Complete 'Retire' to unlock <<elseif _i is 7>>\ 8) ??? - Complete 'Unto Eternity' to unlock <<endif>>\ <<endif>>\ </span>\ <</capture>>\ <</for>>\ <<if 0 is 1>>\ @@color:Gold;Main Quest@@ <<set _spanarray to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix","KeypSeven","KeypEight","KepyNine"]>>\ <<set _QuestNames to ["Meet the town","Forest combat","Meat","Transformation","Cut trees","Retirement","Unto eternity","Rescue","Tutorial complete!"]>>\ <<for _i to 0; _i < $WORLD.quests.length; _i++>>\ <<capture _i>>\ <<set _LinkLetters to ["q","w","e","r","t","y"] <<set _linktext to "" + _LinkLetters[_i] + ") " + _QuestNames[_i]>>\ <span @id="_spanarray[_i]">\ <<if $WORLD.quests[_i].state is "avail">>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest query", _i]>>\ <</link>> - Available <<elseif $WORLD.quests[_i].state is "complete">>\ @@color:LightBlue;<<print _i +1>>) <<print _QuestNames[_i]>> - Complete@@ <<elseif $WORLD.quests[_i].state is "active">>\ <<if setup.IsQuestFinished(_i) is "Not using this?">>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest turnin", _LinkLetters[_i]]>>\ <</link>> - @@color:Orange;Accepted!@@ <<else>>\ <<link _linktext "Guild">> <<set $WORLD.datapasser to ["quest turnin", _LinkLetters[_i]]>>\ <</link>> - @@color:Yellow;Pending@@ <<endif>>\ <<else>>\ <!-- there comes a point where it's faster and easier to simply hard code these things -->\ <<if _i is 0>>\ q) ??? <<elseif _i is 1>>\ w) ??? <<elseif _i is 2>>\ e) ??? <<elseif _i is 3>>\ r) ??? <<elseif _i is 4>>\ t) ??? <<elseif _i is 5>>\ y) ??? <<endif>>\ <<endif>>\ </span>\ <</capture>>\ <</for>>\ <<endif>>\ <<endif>>\ <<widget "ShowForestNavControls">>\ <<set _px to $PC[$CC][$PCfx]>>\ <<set _py to $PC[$CC][$PCfy]>>\ <<set _pz to $PC[$CC][$PCfz]>>\ \ <<if $PC[$CC][$PChpcur] < 1>>\ <<if $PC[$CC][$PChunger] < 1>>\ <<set $WORLD.diedby to "Starved to death">>\ @@color:Red;You have starved to death!@@ It's unfortunate, but you do need to eat. If food is too expensive, you could try carrying around a butcher knife to carve up some of those monsters you keep fighting. Of course, that probably has side effects.\ <<AwardAchievement "Starve to death">>\ <<else>>\ <<set $WORLD.diedby to "Ran out of health while travelling">>\ @@color:Red;You have died!@@ @@color:Yellow;Debug: how did this happen?@@ <<endif>>\ <span id="KeypSpace">\ <<link "space) Continue" "Death">> <</link>>\ </span> <<elseif $AllowNav is true>>\ <!-- avoid array out of bounds -->\ <<set _n to 0>>\ <<set _e to 0>>\ <<set _s to 0>>\ <<set _w to 0>>\ <<set _AllowMoveEast to false>>\ <<set _AllowMoveWest to false>>\ <<if _px is 0>>\ <<set _e to $ForestMap[_px +1][_py]>>\ <<set _AllowMoveWest to true>>\ <<elseif _px >= $WORLD.ForestDims[0]>>\ <<set _w to $ForestMap[_px -1][_py]>>\ <<set _AllowMoveEast to true>>\ <<else>>\ <<set _e to $ForestMap[_px +1][_py]>>\ <<set _w to $ForestMap[_px -1][_py]>>\ <<endif>>\ <<if _py is 0>>\ <<set _s to $ForestMap[_px][_py +1]>>\ <<set _n to 9999>>\ <<elseif _py >= $WORLD.ForestDims[1] -1>>\ <<set _n to $ForestMap[_px][_py -1]>>\ <<set _s to 9999>>\ <<else>>\ <<set _n to $ForestMap[_px][_py -1]>>\ <<set _s to $ForestMap[_px][_py +1]>>\ <<endif>>\ \ <!-- TREE CUTTING -->\ <<if (_n > 99) and (_n < 110)>>\ <<if parseInt(_n) > parseInt($WORLD.TreeCutter)>>\ <<set _n to "need a stronger axe">>\ <<else>>\ <<set _n to "cut">>\ <<endif>>\ <<endif>>\ <<if (_e > 99) and (_e < 110)>>\ <<if _e > $WORLD.TreeCutter>>\ <<set _e to "need a stronger axe">>\ <<else>>\ <<set _e to "cut">>\ <<endif>>\ <<endif>>\ <<if (_s > 99) and (_s < 110)>>\ <<if _s > $WORLD.TreeCutter>>\ <<set _s to "need a stronger axe">>\ <<else>>\ <<set _s to "cut">>\ <<endif>>\ <<endif>>\ <<if (_w > 99) and (_w < 110)>>\ <<if _w > $WORLD.TreeCutter>>\ <<set _w to "need a stronger axe">>\ <<else>>\ <<set _w to "cut">>\ <<endif>>\ <<endif>>\ <!-- END TREE CUTTING -->\ \ @@color:LightGreen;Navigation@@ <<if _n is 9999>>\ North - edge of map <<elseif _n is "cut">>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) Chop down tree">> <<AdvanceTime 10>> <<set _py to _py -1>> <<set $PC[$CC][$PCfy] to _py>>\ <<ForestMoveRefresh>> <</link>>\ </span></span> <<elseif _n is "need a stronger axe">>\ North - need a stronger axe <<else>>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) North">> <<AdvanceTime 1>> <<set _py to _py -1>> <<set $PC[$CC][$PCfy] to _py>>\ <<ForestMoveRefresh>> <</link>>\ </span></span> <<endif>>\ <<if _AllowMoveEast is true>>\ <<if _pz < 2>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) Return to town" "TownSquare">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<endif>>\ <</link>>\ </span></span> <<else>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) Head back towards town" "Forest">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set $WORLD.datapasser to "reset forest">> <<set $PC[$CC][$PCfx] to 0>> <<set $PC[$CC][$PCfz] to $PC[$CC][$PCfz] -1>> <<endif>>\ <</link>>\ </span> <<endif>>\ <<elseif _e is "cut">>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) Chop down tree">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px + 1>> <<set $PC[$CC][$PCfx] to _px>>\ <<ForestMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<elseif _e is "need a stronger axe">>\ East - need a stronger axe <<else>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) East">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set _px to _px + 1>> <<set $PC[$CC][$PCfx] to _px>>\ <<ForestMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<endif>>\ <<if _s is 9999>>\ South - edge of map <<elseif _s is "cut">>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) Chop down tree">> <<AdvanceTime 10>> <<set _py to _py + 1>> <<set $PC[$CC][$PCfy] to _py>>\ <<ForestMoveRefresh>> <</link>>\ </span></span> <<elseif _s is "need a stronger axe">>\ South - need a stronger axe <<else>>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) South">> <<AdvanceTime 1>> <<set _py to _py + 1>> <<set $PC[$CC][$PCfy] to _py>>\ <<ForestMoveRefresh>> <</link>>\ </span></span> <<endif>>\ <<if _AllowMoveWest is true>>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "d) Head deeper into the forest">> <<if $NoDoubleKeypress is 0>>\ <!-- stopping the double keypress before browser refresh issue -->\ <<AdvanceTime 1>> <<set $WORLD.datapasser to "reset forest">> <<set $PC[$CC][$PCfx] to $WORLD.ForestDims[0]>> <<set $PC[$CC][$PCfz] to $PC[$CC][$PCfz] +1>> <<script>>Engine.play("Forest");<</script>> <<endif>>\ <</link>>\ </span></span> <<elseif _w is "cut">>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) Chop down tree">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px - 1>> <<set $PC[$CC][$PCfx] to _px>>\ <<ForestMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<elseif _w is "need a stronger axe">>\ West - need a stronger axe <<else>>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) West">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set _px to _px - 1>> <<set $PC[$CC][$PCfx] to _px>>\ <<ForestMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<endif>>\ <<endif>>\ <</widget>>\ <<widget "ForestMoveRefresh">>\ <<set _px to $PC[$CC][$PCfx]>>\ <<if _px > -1>>\ <<set _py to $PC[$CC][$PCfy]>>\ <<set _pz to $PC[$CC][$PCfz]>>\ <<replace "#right-img">><</replace>>\ \ \ \ <!-- did we chop down a tree? -->\ <<set _CosmeticText to "">>\ <<set _WoodType to $ForestMap[_px][_py]>>\ <<set _AAA to -1>>\ <<if _WoodType is 104>>\ <<set _WoodType to "the faerie wood">>\ <<set _AAA to 122>>\ <<elseif _WoodType is 103>>\ <<set _WoodType to "some steelwood">>\ <<set _AAA to 121>>\ <<elseif _WoodType is 102>>\ <<set _WoodType to "some hardwood">>\ <<set _AAA to 120>>\ <<elseif (_WoodType is 101) or (_WoodType is 100)>>\ <<set _WoodType to "the wood">>\ <<set _AAA to 105>>\ <<else>> <!-- not a tree -->\ <<endif>>\ <<if _AAA > -1>>\ <<set $ForestMap[_px][_py] to 99>>\ <<if setup.getnextinvslot($CC) < 0>>\ <<set _CosmeticText to "@@color:LightYellow;You cut down the tree but have no room to carry more wood@@">> <<else>>\ <<set _WoodQTY to 1>>\ <<if (setup.PtrToClass($PC[$CC][$PCclass]) is "lumberjack") and ($PC[$CC][$PClevel] > 6)>>\ <<set _WoodQTY to 2>>\ <<endif>>\ <<set _foo to setup.additemtoinv($CC, [_AAA, 0, _WoodQTY,0], true)>> <<set _CosmeticText to "@@color:LightGreen;You cut down the tree and add " + _WoodType + " to your inventory@@">> <<endif>>\ <<endif>>\ \ <<set _throwaway to setup.DrawForestMap64(_px, _py, _pz, 64)>>\ <<if _throwaway is 1>>\ <<else>>\ <<script>>alert("Error: DrawForestMap64 failed to complete");<</script>>\ <<endif>>\ \ <<set $WORLD.turnssincecombat to $WORLD.turnssincecombat +1>>\ <<replace "#time">><<ShowTime>><</replace>>\ <<ShowHunger>>\ \ <<if $DebugMode is true>>\ <<replace "#debug">>\ @@color:Gold;Debug info@@ fx,fy,fz: <<print $PC[$CC][$PCfx]>>, <<print $PC[$CC][$PCfy]>>, <<print $PC[$CC][$PCfz]>> Tile: <<print $ForestMap[_px][_py]>> Theme: <<print $WORLD.ForestTheme>> Since Last combat: <<print $WORLD.turnssincecombat>> Treecutter: <<print $WORLD.TreeCutter>> <</replace>>\ <<endif>>\ \ <<set _ForestEventNow to $ForestMap[_px][_py]>> \ <<if _ForestEventNow is 110>> <<include "EventSmith">>\ <<elseif _ForestEventNow is 111>>\ <<set _CosmeticText to "@@color:Yellow;Dev note@@: This is the last zone with meaningful forest content. You can delve deeper, but there are no further events in later zones.">>\ <<elseif _ForestEventNow is 112>>\ <<include "PlayerCorpse">>\ <<elseif _ForestEventNow is 113>>\ <<include "ForestCave">>\ <<elseif (_ForestEventNow > 0) and (_ForestEventNow < 10)>>\ <<set _Flowers to _ForestEventNow -1>>\ <<replace "#roomdesc">><</replace>>\ <<set _HerbNames to ["daisies","skretch grass","sunflower","roses","goose berries","brown mushrooms","weather glass","unnamed flower 8","unnamed flower 9","unnamed flower 10"]>>\ <<if $WORLD.SeleneQuests[_Flowers] is 1>>\ <<set $WORLD.SeleneQuests[_Flowers] to 2>>\ <<set _CosmeticText to "@@color:LightGreen;New herb found!@@" + "<br>You pick up a sample of @@color:Aqua;" + _HerbNames[_Flowers] + "@@ for Selene. " + either("Hopefully it will be useful.","Wonder what she'll be able to make from it?","Hopefully this makes something good.")>> <<else>>\ <<set _CosmeticText to "Some " + _HerbNames[_Flowers]>>\ <<endif>>\ <<elseif (_ForestEventNow is 0) or (_ForestEventNow is 99)>>\ <<if $WORLD.turnssincecombat > 20>>\ <<if random(20,50) < $WORLD.turnssincecombat>>\ <<set $AllowNav to false>>\ <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">>\ <<set $ForceMon to ["random", "random"]>>\ @@color:Gold;Monster encounter!@@ <span id="KeypOne">\ <<link "1) Fight" "Combat">> <<set $WORLD.turnssincecombat to 0>> <<set $DisableMenu to true>> <</link>>\ </span>\ <<if $DebugMode>>\ <hr>\ @@color:Gold;Debug info@@ (Random encounter) Turns since last combat: <<print $WORLD.turnssincecombat>> 'Force' data being set: $ForceMon <<endif>>\ <</replace>>\ <<else>>\ <<set $AllowNav to true>> <<replace "#eventtext">><</replace>>\ <<endif>>\ <<else>>\ <<set $AllowNav to true>> <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">><</replace>>\ <<endif>>\ <<else>>\ <<replace "#eventtext">>\ @@color:Yellow;Error in ForestMoveRefresh: _ForestEventNow@@ <</replace>>\ <<endif>>\ <<replace "#roomdesc">><<print _CosmeticText>><</replace>>\ <<replace "#navcontrols">><<ShowForestNavControls>><</replace>>\ <<endif>>\ <</widget>>\ <<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true)>>\ <<if $Mon.sex is "male">>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ Collapsing off your feet, the cat-man darts in and catches you before you hit the ground. "You must remain unblemished, my sweet," he whispers into your ear, then trails his tongue down your neck. It would almost be erotic if not for the cat-sandpapery feel of his tongue scraping its way <<if _pcboobs > 0>>between your breasts<<else>>down your chest<<endif>>. You're about to speak up about it when he zeros in on your nipples. The sensation of cat-tongue on your delicate flesh is...unique. It's a bit of a relief when he stops, but rather than let you go he presses youface down into the ground and yowls loudly into the air. It's catlike, in a way. As for the thick, meary dick you feel pressing bewteen your thighs, that's more like an elephant trying to fit into a prom dress. You want desperately to look bewteen your legs to see just how biugit is, but the cat-man dwarfs you in size and with his enormous weight bearing down on you from above, it's all you can do it breath. He lets up slight when his cock finds it mark at your pussy, but he can't quite fit it in. Rather than thrusting withhis hips, instead he grips you by the waist and starts bodily moving you up and down to impale your pussy with his rod. Pre-cum begins to flow, and after several more attempts he finally manages to fit it inside you. <<FemaleVirginity "a big, hunky cat-man">>\ "Meow," he whispers huskily, moving you as effortlessly as a ragdoll while picking up the pace. Struggling to keep up, you find yourself alternating between tensing up to maintain some semblance of control and trying to relax to make his cock easier to take. It's several minutes of perpetually feeling like you're on the verge of falling before he wraps both arms around your stomach and with a trmendous shove, plants you down on his cock while he paints your insides with cum. "Meow," he whisper again into your ear, more throatily this time while you squirm awkwardly but can't extricate yourself from either his grip around you or from his cock inside you. Eventually you give and relax, letting yourself simply be held by him. Letting your eyes close and feel his breathing through his manly chest. Eventually his cock begins to recede, and it slowly slides out of you like a rope unwinding. And then he wanders off. "Meow." <<else>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The cat-man watches calmly as you collapse to the groudn at his feet. Struggling to stand, you can offer no resistance as he comes over and sniffs at your rear end. "Meow?" he asks, clearly uncertain at not finding what he was looking for. After a tense moment he shrugs, then casually picks you up with one arm and sets you on your knees in front of him. In front of...oh. His cock is nearly as long as your arm, and you don't even want to think about how thick it is. "Meow," he states calmly, gazing into your eyes with a look that brooks no question of what he has in mind. Almost but not qutie ready to accept the inevitable, you open your mouth just a bit, then stop at the sheer impossibility of the task before you. Taking a deep breath you at least //try// to fit his cock into your mouth, but it only gets as far as the tip brushing across your teeth. At first you're concerned over his possible reaction to that, but as your tongue rests along the underside of the giant at your gates, you notice that his entire cock is covered by bristly hairs that give it a sandpapery feel. Unable to go any further on your own, the cat-man grips you by the head and //thrusts// his cock past your teeth with pressure so tight that you worry for your jaw. And then it gets stuck. Apparently the cat-bristles on his cock go only one way, and his dick is now stuck in your mouth and doesn't want to come out. Breathing through your nose in a panic, you end up losing control completely as he grips both hands on the back of your head like a barbell he's lifting, and thrusts his cock in and out of your mouth on only the wiggle-room allows by the looseness of his flesh. Minutes pass as he humps the tip of his cock against the back of your throat, allowing you only brief, occasional moments to breath. Fortunately he climaxes on an exhale, and after you swallow what must be a half a cup of his seed there's still enough left to lubricate his cock well enough to pull it out. "Meow," he whispers as if to say 'that was adequate,' then turns away from you to lick himself clean. <<endif>>\ <<else>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ "//Meow!//" the futa-cat licks her lips eagerly as she looks over your fallen form. With her cock fully erect, she roughly pushes you onto your back, then climbs between your legs and on top of you. "I want to look you in the eyes when I fuck you" she purrs, her eyes half a foot from your own as she reaches down with one hand to grab her own cock and stick it ungently at your entrance. You can barely more than struggle as she slowly slides her futa-cock half an inch inside you. "Mmm, yes," she purrs. "Savor every inch." Closing your eyes but still feeling her hot breath on your face, your focus drawn completely to her rock-hard cock gently but insistently probing another half inch inside you, then drawing back. Making you wait. Resting just the tip of her cock maddeningly between your labial lips. Not thrusting. Just sitting there. It's a little annoying. Seriously, what's taking so long? You open your eyes back up to see what...oh. "Yes, " she grins. "Let me see it in you eyes." Thrusting back inside of you, perhaps an inch and a half this time, you can't help but feel a nagging, yearning, need growing within you. Can't help but try to push your hips back up against her to feel her glorious cock you up inside. But once again she draws back, making you wait. Looking up into her eyes, nearly pleading for her to take you, she gives you just an inch. Then pulls back. Then an inch and a half. Then two. Then without warning she ejaculates, the majority of her penis having never made it inside you. <<FemaleVirginity "a futa catgirl control freak">>\ "Meow," she purrs with a look of extreme satisfaction as she gets up and walks away, leaving you frustrated and wanting. <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven + 1>>\ "//Meow!//" the futa-cat licks her lips eagerly as she looks over your fallen form. You struggle to stand back on your feet, but she playfully knocks you back down and then sits crouched on her feet with an anticipatory look on her face as if she's waiting for you to try to stand again. "I'll stay down" you sigh. "Aww," she pouts, then grabs her cock in one hand and points it at you. "I guess I'll just have to have my fun a different way. Concerned with where this is going, you open your mouth to object and she takes advantage of that to shove her cock in your mouth. "Nyaa!" she giggles. "So eager!" You try to turn your head, bt injured as you are with her entire weight on your chest there's no escaping. Reluctantly and not really knowing what you're doing, you start to suck the "More tonogue, nyan!" she come up on her knees and starts to pump in and out while you gasp for air between thrusts. "Make me cum!" Now thrusting her cock halfway down your throat, it doesn't take much from you before she cums, bypassing your mouth entirely and planting her spunk deep inside you. "Nyyaaaaannn!!!!!" she climaxes, then grins at you with half-lidded eyes. "You're really bad at this, you know?" You try to mumble a reply around her still-erect cock, but nothing intelligible come out. Rather than pulling out, instead she massages her fingers through your hair and waits for her erection to recede. It's still a good six inches long even flaccid, and when she does finally pull out she does it slowly so the taste and aroma cat semen fills your nose and tongue. "Goodbye, come again!" she giggles, then wipes her cock off on your chest and dashes off into the woods. <<endif>>\ <<endif>>\ <<elseif $Mon.pussy is true>>\ <<if _pcpenis > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven + 1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ You collapse to the ground at the feet of the cat-girl. Struggling but failling to stand, you hesitantly look up "What?" she asks, standing there looking at you. "So what happens now?" you ask, while she just tilts her head and keeps looking at you. "Are we going to, uhh...you know?" "Baka," she rolls her eyes. "It's not like I like you like that." "Hmm, ok," you shrug, climbing back to your feet at last. "In that case I'll just-" "Who said you could leave?!?!" she snarls, pouncing onto your chest and knocking you onto your back. "If you think you're going anywhere, then I'm going to put that measly little dick of yours to good use right now!" Too startled to object, you hold up your hands trying to defend yourself as she tears off your clothing and jams herself dry onto your dick. You're not even hard, and she's clearly not lubrciated enough to be very into it either, but that doesn't stop her as she glares into your eyes and repeatedly thrusts herself onto your cock. Before long you find yourself turned on and erect, and with a small cry release a spurt of semen into her in climax. <<MaleVirginity "a tsundere cat-girl">>\ "Hmph," she mocks you with her eyes. "Serves you right." She then immediately turns her backs to you and begins licking herself clean. <<else>>\ Falling to your knees, you look up at the cat-girl standing before you. Unsure of her intent, you steel your resolve as she walks over to you and...pats you between the legs? "You're not a boy," she points out, still patting between your legs with a frown. "Umm, yes?" you agree. "I could still lick your pussy if you'd like. You did win the fight." "Not interested," she shrugs, then turns and walks away. Feeling slightly insulted, you struggle to return to your feet, but instead simply pass out. <<endif>>\ <<else>>\ @@color:Red;error in cat defeat: ($Mon.penis, _pcpenis)@@ <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","cat"]>> <<AdvanceTime 480>> <</link>>\ </span><<widget "DescribeItem">>\ <<silently>>\ <<set _di to $args[0]>>\ \ <<set _iname to "error?">>\ <<set _equippable to false>>\ <<set _mindam to 0>>\ <<set _maxdam to 0>>\ <<set _attacktype to "">>\ <<set _armor to 0>>\ <<set _quantity to 0>>\ <<set _tooleffect to 0>>\ <<set _material to "">>\ <<set _hands to 0>>\ <<set _slot to -1>>\ <<set _flirt to 0>>\ <<set _restrict to "none">> <<set _stackable to false>> <<set _price to 0>> <<set _foodval to 0>> <<set _bang to false>> <<set _forcename to "">> <!-- slots 1 head/heml 2 neck/amulet 3 chest 4 cloak 5 arms/equipped 6 pairs of gloves 7 sets of fingers 8 waist 9 pairs of legs 10 pairs of feet --> \ <!-- tool effects 1=rope 2=cut meat/string 3=cut wood 4=lockpick 5=bash lock 6=available 7=dildo 8= holy symbol 9=liquid container 10=eat 11=drink 12=spellbook 13=cosmetic read text -->\ <<if _di[0] is 0>>\ <<set _iname to "none">>\ <<elseif _di[0] is 100>>\ <<set _iname to "coil~ of rope">>\ <<set _tooleffect to 1>>\ <<set _stackable to true>> <<set _price to 10>> <<elseif _di[0] is 101>>\ <<set _iname to "small hammer">>\ <<set _tooleffect to 5>>\ <<set _price to 10>> <<elseif _di[0] is 102>>\ <<set _iname to "chunk~ of ! meat">>\ <<set _bang to true>> <<set _tooleffect to 10>>\ <<set _stackable to true>> <<set _price to 1>> <<set _foodval to 300>>\ <<elseif _di[0] is 103>>\ <<set _iname to "dildo">>\ <<set _tooleffect to 7>>\ <<set _price to 20>> <<elseif _di[0] is 104>>\ <<set _iname to "holy symbol">>\ <<set _tooleffect to 8>>\ <<elseif _di[0] is 105>>\ <<set _iname to "wooden log~">>\ <<set _stackable to true>> <<set _price to 5>> <<elseif _di[0] is 106>>\ <<set _iname to "apple~">>\ <<set _stackable to true>>\ <<set _price to 5>>\ <<set _tooleffect to 10>>\ <<set _foodval to 100>>\ <<elseif _di[0] is 107>>\ <<set _iname to "roll~ of cheese">>\ <<set _stackable to true>>\ <<set _tooleffect to 10>>\ <<set _price to 25>>\ <<set _foodval to 250>>\ <<elseif _di[0] is 108>>\ <<set _iname to "empty bottle~">>\ <<set _price to 5>>\ <<set _tooleffect to 1>>\ <<set _stackable to true>> <<elseif _di[0] is 109>>\ <<set _iname to "bottle~ of !">>\ <<set _bang to true>> <<set _foodval to 1>>\ <<set _price to 10>>\ <<set _tooleffect to 11>>\ <<set _stackable to true>> <<elseif _di[0] is 110>>\ <<set _iname to "bread roll~">>\ <<set _foodval to 150>>\ <<set _tooleffect to 10>>\ <<set _price to 10>>\ <<set _stackable to true>>\ <<elseif _di[0] is 111>>\ <<set _iname to "spellbook">>\ <<set _tooleffect to 12>>\ <<set _price to 100>>\ <<elseif _di[0] is 112>>\ <<set _iname to "book">>\ <<set _tooleffect to 13>>\ <<set _price to 50>>\ <<elseif _di[0] is 113>>\ <<set _iname to "butcher's knife">>\ <<set _tooleffect to 2>>\ <<set _price to 5>> \ \ <<elseif _di[0] is 200>>\ <<set _iname to "dagger">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _tooleffect to 1>>\ <<set _attacktype to "stab">>\ <<set _hands to 1>>\ <<set _tooleffect to 2>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 201>>\ <<set _iname to "club">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "blunt">> <<set _hands to 1>>\ <<set _price to 30>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 202>>\ <<set _iname to "hatchet">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _tooleffect to 3>>\ <<set _attacktype to "cleave">>\ <<set _hands to 1>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 203>>\ <<set _iname to "pitchfork">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "stab">>\ <<set _hands to 2>>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 204>>\ <<set _iname to "staff">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "blunt">> <<set _hands to 2>>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 205>>\ <<set _iname to "sword">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "slash">>\ <<set _hands to 1>>\ <<set _price to 125>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 206>>\ <<set _iname to "mace">>\ <<set _mindam to 1>>\ <<set _maxdam to 8>>\ <<set _tooleffect to 5>>\ <<set _attacktype to "blunt">>\ <<set _hands to 1>>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 207>>\ <<set _iname to "axe">>\ <<set _mindam to 4>>\ <<set _maxdam to 8>>\ <<set _tooleffect to 3>>\ <<set _attacktype to "cleave">>\ <<set _price to 25>>\ <<set _hands to 2>>\ <<set _price to 125>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 208>>\ <<set _iname to "small shield">>\ <<set _armor to 10>>\ <<set _attacktype to "block">>\ <<set _hands to 1>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 209>>\ <<set _iname to "cooking knife">>\ <<set _mindam to 1>>\ <<set _maxdam to 2>>\ <<set _tooleffect to 1>>\ <<set _attacktype to "stab">>\ <<set _hands to 1>>\ <<set _price to 10>>\ <<set _tooleffect to 2>>\ <<set _slot to $BPwield>>\ \ \ <<elseif _di[0] is 300>>\ <<set _iname to "plain shirt">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _flirt to 5>>\ <<set _price to 5>> <<elseif _di[0] is 301>>\ <<set _iname to "blouse">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _flirt to 5>>\ <<set _price to 7>> <<elseif _di[0] is 302>>\ <<set _iname to "belt">>\ <<set _armor to 1>>\ <<set _slot to $BPwaist>>\ <<set _flirt to 1>>\ <<set _price to 4>> <<elseif _di[0] is 303>>\ <<set _iname to "pants">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 10>> <<elseif _di[0] is 304>>\ <<set _iname to "skirt">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 12>> <<elseif _di[0] is 305>>\ <<set _iname to "shoes">>\ <<set _armor to 1>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 3>> <<elseif _di[0] is 306>>\ <<set _iname to "boots">>\ <<set _armor to 2>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 12>> <<set _price to 12>> <<elseif _di[0] is 350>>\ <<set _iname to "chainmail shirt">>\ <<set _armor to 10>>\ <<set _slot to $BPchest>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 351>>\ <<set _iname to "chainmail chemise">>\ <<set _armor to 15>>\ <<set _slot to $BPchest>>\ <<set _flirt to 1>>\ <<set _price to 150>> <<set _price to 150>> <<elseif _di[0] is 352>>\ <<set _iname to "chainmail hauberk">>\ <<set _armor to 20>>\ <<set _slot to $BPchest>>\ <<set _price to 200>> <<set _price to 200>> <<elseif _di[0] is 353>>\ <<set _iname to "chainmail leggings">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 354>>\ <<set _iname to "chainmail coif">>\ <<set _armor to 10>>\ <<set _slot to $BPhead>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 355>>\ <<set _iname to "chainmail gloves">>\ <<set _armor to 5>>\ <<set _slot to $BPhands>>\ <<set _price to 70>> <<set _price to 70>> <<elseif _di[0] is 356>>\ <<set _iname to "chainmail bra">>\ <<set _armor to 2>>\ <<set _slot to $BPboobs>>\ <<set _flirt to 5>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 357>>\ <<set _iname to "chainmail skirt">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 358>>\ <<set _iname to "chainmail miniskirt">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 2>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 359>>\ <<set _iname to "chainmail gorget">>\ <<set _armor to 2>>\ <<set _slot to $BPneck>>\ <<set _price to 40>> <<set _price to 40>> <<elseif _di[0] is 360>>\ <<set _iname to "chainmail tail armor">>\ <<set _armor to 5>>\ <<set _slot to $BPtail>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 361>>\ <<set _iname to "chainmail wing armor">>\ <<set _armor to 10>>\ <<set _slot to $BPwings>>\ <<set _price to 200>> <<set _price to 200>> <<endif>>\ \ <<if _di[1] is 100>>\ <<elseif _di[1] is 101>>\ <<set _material to "wooden">>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 5>>\ <<endif>>\ <<elseif _di[1] is 102>>\ <<set _material to "copper">>\ <<set _price to Math.trunc(_price * .8)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 2>>\ <<endif>>\ <<elseif _di[1] is 103>>\ <<set _material to "brass">>\ <<elseif _di[1] is 104>>\ <<set _material to "iron">>\ <<set _price to Math.trunc(_price * 1.2)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +1>>\ <<set _maxdam to _maxdam +1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 2>>\ <<endif>>\ <<elseif _di[1] is 105>>\ <<set _material to "steel">>\ <<set _price to Math.trunc(_price * 1.5)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +2>>\ <<set _maxdam to _maxdam +5>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 5>>\ <<endif>>\ <<elseif _di[1] is 106>>\ <<set _price to Math.trunc(_price * 2)>>\ <<set _material to "mithril">>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +5>>\ <<set _maxdam to _maxdam +10>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 10>>\ <<endif>>\ <<elseif _di[1] is 150>>\ <<set _material to "cloth">>\ <<elseif _di[1] is 151>>\ <<set _material to "leather">>\ <<set _flirt to _flirt +1>>\ <<elseif _di[1] is 152>>\ <<set _material to "silk">>\ <<set _price to _price * 3>>\ <<endif>>\ \ <<if _price < 0>>\ <<set _price to 0>>\ <<endif>>\ \ <<if _mindam < 0>>\ <<set _mindam to 0>>\ <<endif>>\ <<if _maxdam < 0>>\ <<set _maxdam to 0>>\ <<endif>>\ <<if _armor < 0>>\ <<set _armor to 0>>\ <<endif>>\ \ \ \ <<set _fullname to _iname>>\ \ \ \ <<if _stackable is true>>\ <<set _quantity to _di[2]>> <<set _fullname to setup.pluralize(_fullname, _quantity)>>\ <<else>>\ <!-- can we make enchantments out of negative numbers? --> <<endif>>\ <<if _bang is true>>\ <<set _rep to "error">>\ <<if _di[3] is 100>>\ <<set _rep to "human">>\ <<elseif _di[3] is 101>>\ <<set _rep to "dog">>\ <<elseif _di[3] is 102>>\ <<set _rep to "cat">>\ <<elseif _di[3] is 103>>\ <<set _rep to "wolf">>\ <<elseif _di[3] is 104>>\ <<set _rep to "spider">>\ <<elseif _di[3] is 105>>\ <<set _rep to "horse">>\ <<elseif _di[3] is 106>>\ <<set _rep to "goblin">>\ <<elseif _di[3] is 107>>\ <<set _rep to "demon">>\ <<elseif _di[3] is 108>>\ <<set _rep to "succubus">>\ <<elseif _di[3] is 109>>\ <<set _rep to "incubus">>\ <<elseif _di[3] is 110>>\ <<set _rep to "fox">>\ <<elseif _di[3] is 111>>\ <<set _rep to "rabbit">>\ <<elseif _di[3] is 112>>\ <<set _rep to "cow">>\ <<elseif _di[3] is 113>>\ <<set _rep to "minotaur">>\ <<elseif _di[3] is 114>>\ <<set _rep to "imp">>\ <<elseif _di[3] is 115>>\ <<set _rep to "hellhound">>\ <<elseif _di[3] is 116>>\ <<set _rep to "unidentifiable">>\ <<elseif _di[3] is 200>>\ <<set _rep to "human semen">>\ <<elseif _di[3] is 201>>\ <<set _rep to "dog semen">>\ <<elseif _di[3] is 202>>\ <<set _rep to "cat semen">>\ <<elseif _di[3] is 203>>\ <<set _rep to "wolf semen">>\ <<elseif _di[3] is 204>>\ <<set _rep to "spider semen">>\ <<elseif _di[3] is 205>>\ <<set _rep to "horse semen">>\ <<elseif _di[3] is 206>>\ <<set _rep to "goblin semen">>\ <<elseif _di[3] is 207>>\ <<set _rep to "demon semen">>\ <<elseif _di[3] is 208>>\ <<set _rep to "this should never appear">>\ <<elseif _di[3] is 209>>\ <<set _rep to "incubus semen">>\ <<elseif _di[3] is 210>>\ <<set _rep to "fox semen">>\ <<elseif _di[3] is 211>>\ <<set _rep to "rabbit semen">>\ <<elseif _di[3] is 212>>\ <<set _rep to "this should never appear">>\ <<elseif _di[3] is 213>>\ <<set _rep to "minotaur semen">>\ <<elseif _di[3] is 214>>\ <<set _rep to "imp semen">>\ <<elseif _di[3] is 215>>\ <<set _rep to "hellhound semen">>\ <<elseif _di[3] is 216>>\ <<set _rep to "unidentified semen">>\ <<elseif _di[3] is 300>>\ <<set _rep to "human breast milk">>\ <<elseif _di[3] is 301>>\ <<set _rep to "dog milk">>\ <<elseif _di[3] is 302>>\ <<set _rep to "cat milk">>\ <<elseif _di[3] is 303>>\ <<set _rep to "wolf milk">>\ <<elseif _di[3] is 304>>\ <<set _rep to "spider's don't have milk do they?">>\ <<elseif _di[3] is 305>>\ <<set _rep to "horse milk">>\ <<elseif _di[3] is 306>>\ <<set _rep to "goblin breast milk">>\ <<elseif _di[3] is 307>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 308>>\ <<set _rep to "succubus breast milk">>\ <<elseif _di[3] is 309>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 310>>\ <<set _rep to "fox milk">>\ <<elseif _di[3] is 311>>\ <<set _rep to "rabbit milk">>\ <<elseif _di[3] is 312>>\ <<set _rep to "cow milk">>\ <<elseif _di[3] is 313>>\ <<set _rep to "minotaur milk">>\ <<elseif _di[3] is 314>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 315>>\ <<set _rep to "hellhound milk">>\ <<elseif _di[3] is 316>>\ <<set _rep to "unidentifiable milk">>\ <<elseif _di[3] is 400>>\ <<set _rep to "slime goo">>\ <<elseif _di[3] is 401>>\ <<set _rep to "water">>\ <<set _price to 5>>\ <<elseif _di[3] is 402>>\ <<set _rep to "beer">>\ <<set _price to 7>>\ <<elseif _di[3] is 403>>\ <<set _rep to "wine">>\ <<set _price to 9>>\ <<elseif _di[3] is 404>>\ <<set _rep to "aphrodisiac">>\ <<set _price to 100>>\ <<endif>>\ <<set _foo to "di3 is: " + _di[3] + ", rep is: " + _rep>> <<AddToLog _foo>> <<set _puppies to setup.Bang(_fullname, _rep)>> <<set _fullname to _puppies>> <<else>> <<if _di[3] is 500>> <<set _forcename to "spellbook of up">> <<elseif _di[3] is 501>> <<set _forcename to "spellbook of down">> <<elseif _di[3] is 502>> <<set _forcename to "spellbook of portal">> <<elseif _di[3] is 503>> <<set _forcename to "spellbook of map">> <<elseif _di[3] is 504>> <<set _forcename to "spellbook of firebolt">> <<elseif _di[3] is 505>> <<set _forcename to "spellbook of poison">> <<elseif _di[3] is 506>> <<set _forcename to "spellbook of armor">> <<elseif _di[3] is 507>> <<set _forcename to "spellbook of heal">> \ \ <<elseif _di[3] is 550>> <<set _forcename to "A Treatise on Ponerology">> <<elseif _di[3] is 551>> <<set _forcename to "Etymology of the Echidna">> <<endif>> <<endif>> \ <<if _material neq "">>\ <<set _fullname to _material + " " + _iname>>\ <<endif>>\ <<if _forcename neq "">>\ <<set _fullname to _forcename>>\ <<endif>>\ <<if _maxdam > 0>>\ <<set _fullname to _fullname + " (damage: " + _mindam + "-" + _maxdam + ")">>\ <<endif>>\ <<if _armor > 0>>\ <<set _fullname to _fullname + " [armor: " + _armor + "]">>\ <<endif>>\ <<if _flirt > 0>>\ <<set _fullname to _fullname + " {sexy: " + _flirt + "}">>\ <<endif>>\ <<if 1 is 0 >>\ <<set _asd to setup.bpptrtoname(_slot, "formal")>>\ <<set _fullname to _fullname + " (Equip to: " + _asd +")">>\ <<endif>>\ \ <<set $ItemPoke to { name: _iname, fullname: _fullname, mindam: _mindam, maxdam: _maxdam, attacktype: _attacktype, handsreq: _hands, armor:_armor, tooleffect: _tooleffect, qty: _quantity, slot: _slot, flirt: _flirt, restrict: _restrict, foodval: _foodval, price: _price, stackable: _stackable }>>\ <</silently>>\ <</widget>>\ <<widget "EasyRestock">> <<set $WORLD.restock to $WORLD.day>>\ \ <<!-- clear all? Do we want that? -->\ <<for _i to 0; _i < 10; _i++>>\ <<set $STORE[$Tavern][_i] to [0,0,0,0]>>\ <<set $STORE[$Selene][_i] to [0,0,0,0]>>\ <<set $STORE[$Smith][_i] to [0,0,0,0]>>\ <<set $STORE[$GStore][_i] to [0,0,0,0]>>\ <<set $STORE[$Tavern][_i] to [0,0,0,0]>>\ <</for>>\ <!-- pawn store loses half of items -->\ <<for _i to 0; _i < 10; _i++>>\ <<if $STORE[$Pawn][_i] neq [0,0,0,0]>>\ <<if random(1,2) is 1>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>>\ <<endif>>\ <<endif>>\ <</for>>\ \ <!-- Tanya's tavern -->\ <!-- always 2 bottles of plain drinks -->\ <<set _pool to setup.getfrom(2, [401, 402, 403])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][0] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][1] to [109, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 of boring food -->\ <<set _pool to setup.getfrom(2, [106, 107, 110])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][2] to [parseInt(_pool[0]), 0, _era, 0]>>\ <<set $STORE[$Tavern][3] to [parseInt(_pool[1]), 0, _erb, 0]>>\ <!-- 2 sketchy meat -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [101, 102, 103, 110, 111, 112])>>\ <<set $STORE[$Tavern][4] to [102, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][5] to [102, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 sketchy milk -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [301, 302, 303, 310, 311])>>\ <<set $STORE[$Tavern][6] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][7] to [109, 0, _erb, parseInt(_pool[1])]>>\ \ <!-- Selene's -->\ <<set _era to random(2-8)>>\ <<set $STORE[$Selene][0] to [108,0,_era,0]>>\ \ <!-- Smith -->\ <<set $STORE[$Smith][0] to [202,0,0,0]>>\ <<set $STORE[$Smith][1] to [either(200, 209),0,0,0]>>\ <<set $STORE[$Smith][2] to [either(201, 203, 204, 205),0,0,0]>>\ <<set $STORE[$Smith][3] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][4] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][5] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][6] to [random(350, 361),0,0,0]>>\ <<if random(1, 2) is 1>>\ <<set $STORE[$Smith][7] to [0,0,0,0]>>\ <<endif>>\ <<for _i to 1; _i < 7; _i++>>\ <<set $STORE[$Smith][_i][1] to either(102, 102, 103, 103, 104, 105)>>\ <</for>>\ \ <!-- General store --> <<set $STORE[$GStore][0] to [113,0,0,0]>> <<if random(1,2) is 1>><<set $STORE[$GStore][1] to [100,0,random(2,4),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][2] to [101,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][3] to [103,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][4] to [104,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][5] to [105,0,random(2,5),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][6] to [106,0,random(1,4),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][7] to [107,0,random(1,3),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][8] to [108,0,random(1,3),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][9] to [109,0,random(1,3),404]>><<endif>>\ <</widget>>\ <<widget "Store">>\ <<set _s to $args[0]>>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[_s].length; _i++>>\ <<set _item to $STORE[_s][_i]>>\ <<if _item[0] > 0>>\ <<capture _i, _s>>\ <<button "[Buy]">> <<set _buttonitem to $STORE[_s][_i]>>\ <<DescribeItem _buttonitem>>\ <<set _p to $ItemPoke.price>>\ <<set _st to $ItemPoke.stackable>>\ <<set _foo to "Item: " + _buttonitem + "stackable: " + _st>>\ <<AddToLog _foo>>\ <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> <<set _try to setup.additemtoinv($CC, _buttonitem, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <<if $STORE[_s][_i][2] > 1>>\ <<set $STORE[_s][_i][2] to $STORE[_s][_i][2] -1>> <<else>> <<set $STORE[_s][_i] to [0,0,0,0]>> <<endif>> <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <</button>> \ <</capture>>\ <<set _item to $STORE[_s][_i]>>\ <<DescribeItem _item>>\ <<set _p to $ItemPoke.price>>\ <<set _st to $ItemPoke.stackable>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <<print $ItemPoke.fullname>>, cost: <<print $ItemPoke.price>> \ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Inventory@@ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<if _desc neq "none">>\ <<print _desc>> <<endif>>\ <</capture>>\ <</for>>\ <hr>\ <span id="storereport"></span>\ <</widget>>\ <<widget "Pawn">>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[$Pawn].length; _i++>>\ <<set _AAAA to $STORE[$Pawn][_i][0]>> <<set _BBBB to $STORE[$Pawn][_i][1]>> <<set _CCCC to 1>> <<set _DDDD to $STORE[$Pawn][_i][3]>> <<set _ItemByValHack to [_AAAA, _BBBB, _CCCC, _DDDD]>> <<if _ItemByValHack[0] > 0>>\ <<DescribeItem _ByValHack>>\ <<set _p to $ItemPoke.price * 2>>\ <<set _st to $ItemPoke.stackable>>\ <<capture _i, _p, _st>>\ <<button "[Buyback]">> <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> <<set _try to setup.additemtoinv($CC, _ItemByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $STORE[$Pawn][_i][2] > 1>>\ <<set $STORE[$Pawn][_i][2] to $STORE[$Pawn][_i][2] -1>> <<else>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <</button>> \ <</capture>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <!-- fetch data for actual item, not 1-quantity ByVal hack, so that quantities display correctly -->\ <<DescribeItem $STORE[$Pawn][_i]>>\ <<print $ItemPoke.fullname>>, cost: _p \ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Inventory@@ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set _st to $ItemPoke.stackable>>\ <<if _desc neq "none">>\ <<set _buttontext to "[Pawn for " + _p + " gold]">>\ <<button "_buttontext">> <!-- Sugarcube does not clone values until passage refresh -->\ <<set _AAAA to $PC[$CC][$PCinven][_i][0]>> <<set _BBBB to $PC[$CC][$PCinven][_i][1]>> <<set _CCCC to 1>> <<set _DDDD to $PC[$CC][$PCinven][_i][3]>> <<set _ByValHack to [_AAAA, _BBBB, _CCCC, _DDDD]>> <<DescribeItem _ByValHack>> <<set _st to $ItemPoke.stackable>>\ <<set _try to setup.additemtostore($Pawn, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>Store has no more room<</replace>>\ <<else>> <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $PC[$CC][$PCinven][_i][2] > 1>>\ <<set $PC[$CC][$PCinven][_i][2] to $PC[$CC][$PCinven][_i][2] -1>> <<else>>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <</button>> _desc <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\<<SimplePic $Mon.pic>>\ <<if (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<FemaleVirginity "an imp">> <<endif>>\ \ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>>\ <<elseif (_mhasdick is false) and (_phasdick is false)>>\ <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ <<endif>>\ \ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","imp"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ <<set _WhichCloser to "pass out">>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true) and (_pcpussy > 0)>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ \ As you collapse, you can't help but notice that the goblin is visibly hard before you even hit the ground. It's no surprise when he rushes over and unceremoniously knocks you to the ground on your hands and knees. Steeling yourself for the inevitable, you wince as he tears off your pants and roughly plunges his cock into your pussy dry. <<FemaleVirginity "huge goblin">> Fortunately, you suppose, he immediately begins cumming a steady drip of pre-cum to lubricate your insides. You're not thrilled about taking goblin cum, but at least it stops the pain. The goblin, meanwhile, brings his weight down on your shoulders and mashes your face to the ground, then picks up his pace. Unintelligeble grunts and sloshing noises fill your ears as he plunders your pleasure hole with reckless abandon. "Unf, unf, so, good," he pants, obvlious and indifferent to your lack of cooperation. To his credit, his endurance is spectacular. As first you feel yourself in danger of becoming bored from how long he's taking, but as his relentless assault continues for long minute after minute, as the flow of pre-cum flows to the point of streaming long lines like drool down your thighs, you notice with some distaste that your body is beginning to respond to him. "Oh yeah, fuck me back you slut," he mumbles when he notices your hips unconsiously swaying back onto his cock. As yet more minutes go by of slowly increasing intensity, you come up on your hands to push back onto his cock even harder, and he releases his grip on your head to latch onto your hips to better hold you in place while he orgasms. "Ooohhhhhuuhnnfff!" he grunts, while you clamp your mouth shut to try to hide the sound of your own, admittedly smaller climax. "Congrats on the goblin sex," he looks at you with amusement. "Hope I gave you something to remember me by." <<PregnancyTest>>\ \ <<elseif ($Mon.penis is false) and (_pcpenis > 0)>>\ "What a wimp!" the goblin shouts at you angrily. "What do you even think I'm here for? You were supposed to beat me up and have your way with me!" "Sorry?" you apologize, nursing your wounds. "I had it all planned out!" she rants on. "There I'd be, <<print either("innocently minding my own business in the woods","strolling through the forest like the sweet young virgin I obviously am","on my way to my grandmother's house like a good little goblin girl")>> when suddenly an adventurer with <<print either("a cute butt","pecs as big as my head","biceps big enough to eat on","")>> and <<print either("hung like a horse","a cock big enough to fuck me on one end and come out my nostrils on the other","twelve tentacle dicks")>> would come along and knock me off me feet!" "Don't you mean sweep you off your feet?" you ask, but she's too busy fingering herself to notice. "I'd just happen to land my on hands and knees, all sweet and innocent-like, and then suddenly out of nowhere he'd pounce on top of me, yeah...and start <<print either("railing me like a bridge builder","pounding me like a stray dog","humping me like a camel","boning me like a skeleton")>>, oh, mmmm." You're about to point out her pun maybe doesn't work as well as she thinks it does, but by now she's on her back and her eyes are closed with both hands between her legs. <<elseif ($Mon.penis is true) and (_pcpenis > 0)>>\ <<if $WORLD.datapasser is "g1">>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ Reluctantly, you sit up onto your knees with a sigh and open your mouth. "Oh good," he grins at you. "I like it when submissive prey wants my cock like a good little slut." To your dismay, rather than take charge he simply stands there and waits for you to take initiative. Daring to look up into his eyes, he simply stares back in amusement. Swallowing nervously, you reach up for his cock and reluctantly take it into your mouth. "Obviously you're enjoying this," he quips. "If you're taking your time to make it all nice and slow like this." Annoyed by the comment, you quickly glomp your mouth onto his cock to prove that you're not taking your time. "Oh, so eager," he plants one hand gently on the top of your head. "Can't hardly hold yourself back from my manliness." Realize you can't win, eventually you give up and start sucking his cock. The taste is...not as unpleasant as you feared, but as his balls begin bouncing on your chin you start to dread the flavor you know is coming. "Oh, yeah," he moans. "Suck my cock you little slut. Suck it good." Already in too deep to back away, you follow his instructions and begin lightly sucking on his cock as you slide it in and out over your lips anda cross your tongue. Then absentmindedly begin fondling his balls while you do. "Oh, fuck me," he moans. "What are you, a professional?" It doesn't take long before he clutches your head in both hands and rams himself deep into your throat and holds you there, unable to escape while he blows a load of semen inside you. All you can do is swallow to keep from drowning. "Wow," he pants. "You're pretty good at that. Hope I see you again sometime." Then he wanders off. <<elseif $WORLD.datapasser is "g2">>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ Hoping that this is the lesser of two evils, you wordlessly turn your back to him and spread your buttcheeks. "Ooohhhh, so eager!" he mocks you. "Well, if you want it that bad, I won't disappoint you." Closing your eyes for the inevitable, you're surprised when he spits on his hand and greases up his cock before planting its tip gently at your asshole. "Gotta take good care of my bitch," he explains, easing his cock into you one inch at a time, slowly gaining ground with each thrust. "And you seem like a good bitch." Unsure what to say, you stay silent as he grabs you by the hips and picks up his pace to begin fucking you for real. "So tight," he moans. "Definitely a good bitch." It's not great for you, but neither is it particularly arduous and he ass-fucks you for the next ten minutes, occasionally speeding up, sometimes slowing down. Sometimes trailing a single finder up and down your spine while he whispers what a good bitch you are. At last though, you feel a twitch deep inside your bowels and he cries out in a long, enduring orgasm as he sprays your intestines with his semen. "Oh yeah" he pants. "You're a keeper." For ione dreadful moemnt, you think he intyends to take you back to his lair. But no, he simply stays there, balls deep inside you, breathing quickly at first, then slowly regainign control. Eventually he slips out, pats you nicely on the back, and wanders off, leaving you alone in a pool of his fluids. <<elseif $WORLD.datapasser is "g3">>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ You lash out with a foot, but it hits him in the thigh, barely doing any damage. "That was a mistake," he explains, then thrusts his cock so deep into your ass that you cry out in agony. "But if you want it the hard way, I've got that hard-on to give it to you." He comes down on your head hard, smashing you face-first down into the stone floor. You struggle in vain but can do little as he bears his full weight on the small of your back to pivot your hips upward while he pounds your ass relentlyless with his eager cock. With his knees on the ground lodged between yours and the fingers of both hands tearing into your torso to hold you in plsace, you can do little but flail helpless and cry out in pain. "You wanted to do this the hard way," he grunts. "So you got it the hard way." Your entire body tenses up and fights to find a way out, but there's nothing you can do but take his cock. Your whole focus is drawn to that, his cock, plundering your intestines, twicthing and spasming inside you, only now beginning to glide freely on the mix of pre-cum and blood no doubt painting your insides. Not content to let you relax into the decreasing pain, however, he ejaculates immediately. "Ahhh! Yes!" he screams, his head thrown back, far above yours, as his sperm mixes with your blood and begins to absorb into your intestines. By now youv'e stopped struggling, but he either doesn't notice or doesn't care. Instead he continues thrusting, though already spent, as if he enjoys the simpy act of dominating you. And all yuou can do is wait. He's already finished, physically, but the mental domination continues for some time as he continues to assfuck you with his slowly shrinking member until at last it comes out with a pop. You lay there, too exhausted to object, as he wipes his dick on your thighs then wanders off. <<else>>\ Unable to continue fighting, the goblin walks unceremoniously over to you and punches you in the stomach. You double over while he grabs you by the hips and spins you around face away from him. Seeing where this is going, you struggle to keep your clothes on but he's too strong and you're too injured to resist. "There are two ways we can do this," he explains. "I'm going to assfuck you. That's settled. The only choice you get is whether you suck my dick first to make it go in easy, or whether you take it dry and bleed a little. \ <<set _WhichCloser to "none">>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Suck his dick" "DefeatGoblin">> <<set $WORLD.datapasser to "g1">> <</link>>\ </span> <span id="KeypTwo">\ <<link "2) Spread your cheeks" "DefeatGoblin">> <<set $WORLD.datapasser to "g2">> <</link>>\ </span> <span id="KeypThree">\ <<link "3) Kick him" "DefeatGoblin">> <<set $WORLD.datapasser to "g3">> <</link>>\ </span> <<endif>>\ <<elseif ($Mon.penis is false) and (_pcpenis is 0)>>\ <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ "Alright slut," the goblin growls at you. "I won the fight, so that means you have to do what I say!" You're not sure that's really how it works, but doing what she wants is probably better than her murdering you, so you decide to play along as she pushes you onto your back and drops her panties to the floor then stands with her feet on either side of your head. "Now, lick me like the slut you are!" Sitting down suddenly, she lands with her pussy lips on your face. You don't lick so much as gasp and desperately struggle to breath, but from the goblin's moans apparently she can't tell the difference. Every now and then you manage to push her up enough to get a breath full of air, but for the most part you avoid asphyxiation only by tilting your head to the side and breathing out the corner of your mouth. It doesn't take long before her thighs clench around you and her pussy squirts flavorful juices up and down your face. "That was adequate," the goblin declares, putting her panties back on. "Now get out of here before my <<print either("twleve","two dozen","four","nineteen","fourteen")>> brothers <<print either("show up","and their dog show up","get back from level 10","get bored of raping chickens")>> and decide they all want a turn on you too!" <<else>>\ Debug: Goblin defeat: no possible sex event for this combination of body parts. <<endif>>\ \ <<if _WhichCloser is "pass out">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","goblin"]>> <<AdvanceTime 480>> <</link>>\ </span> <<elseif _WhichCloser is "none">>\ <<else>>\ @@color:Red;Unrecognized closer in goblin sex: _AllowCloser <<endif>>\<<SimplePic $Mon.pic>>\ <<if (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<FemaleVirginity "tentacle monster">> <<endif>>\ \ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<elseif (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ <<endif> \ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","tentacle monster"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ <<set _SkipExitLink to false>>\ <<if $Mon.name.includes("Charyss")>>\ <<set _SkipExitLink to true>>\ You fall to the ground hard. Charyss looks you over with mild disdain. @@color:Red;Charyss@@: "Meh," she shrugs. "Probably not even worth raping you. Adventurer like you would probably just use that as an excuse to attack me over and over to get valuable magic demon body morph transformations. Stupid goddess rules. Seriously, all I wanted was some beer. But at least I have this sexy piece of ass in a cage to vent my sexual frustrations out on." @@color:LightGreen;Adventurer@@: *cries* <<set _beer to -1>>\ <<for _B to 0; _B < $PC[$CC][$PCinven].length; _B++>>\ <<set _CheckMe to $PC[$CC][$PCinven][_B]>>\ <<if (_CheckMe[0] is 109) and (_CheckMe[3] is 402)>>\ <<set _beer to _B>>\ <<endif>>\ <</for>>\ <<if _beer > -1>>\ @@color:Red;Charyss@@: "I'm totally taking your beer though." <<set $PC[$CC][$PCinven][_beer] to [0,0,0,0]>>\ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) pass out" "Church">> <<set $WORLD.datapasser to ["knockout", "Charyss"]>> <<AdvanceTime 480>> <</link>>\ </span> \ <<elseif $Mon.name.includes("succubus")>>\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ "Yay!" the succubus giggles. "Now for the ''best'' part of fighting!" "What's that?" you ask, collapsing to your knees, your head still reeling from the battle. "Makeup sex!" As you contemplate those words, the succubus \ <<elseif _r is 2>>\ As you collapse, the succubus glides over and deftly catch you in her arms, your head landing between her generous breasts with enough force that your head recoils slightly from the bounce. "Oh my!" she giggles. "I had no idea you liked me like that!" Unable to resist their firm, fleshy goodness, you find yourself gently kneading her boobs in your hands as the succubus gently trails a finger up your stomach and chest with one hand while the other \ <<else>>\ <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven +1>>\ The succubus laughs as you collapse to your knees. "You know," she looks over you eagerly, "it's usually me who's down there. But I can work with this." Stepping boldly forward, she plants her crotch directly in your face and commands you to lick. The scent of her freely-flowing pussy juices hit your nostrils and you can't help but obey. The thick folds of her labia engulf your tongue and she gently runs her fingers through your hair as her hips between to sway gently back and forth as if face-fucking you with a penis she <<if _phasdick is false>>thankfully <<endif>> doesn't have. After a few minutes of this, she \ <<endif>>\ \ <<if (_phasdick is true)>>grabs handful of your hair and pulls down to force your eyes up to meet hers. "Now for the fun part." Unable to resist and scarcely wanting to, the succubus pushes you gracefully down onto your back and climbs on top of you. Your erection is already painfully hard, and it's with trenemsoud relief to you both that she sets herself down on it, then sighs happily as it glides inside her until your hips meet. <<else>>roughly grabs the back of your hair and pulls you to the ground by it. "Now for the <<endif>>\ <<set _r to random(1,3)>>\ \ <<if _r is 1>>\ <<elseif _r is 2>>\ <<else>>\ <<endif>>\ <<elseif $Mon.name.includes("incubus")>> implement incubus <<elseif $Mon.name.includes("omnibus")>> implement omnibus <<else>>\ @@color:Red;Error in DefeatDemon:@@ $Mon.name <<endif>>\ \ <<if _SkipExitLink is false>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex", $Mon.name]>> <<AdvanceTime 480>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<set _AllowNormalExit to true>>\ <<if $Mon.pussy is true>>\ <<if ($Mon.penis is true)>>\ "Adventurer pussy is best pussy!" the minotauress cheers, stroking herself with onehand while she flips you over onto your stomach with the other. <<if _pcpussy is 0>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ "Can't we talk about this?" you whine. "Sure thing pardner," she nods agreably. "But how bout you do the talkin' and I'll do the fuckin'?" Before you can think of a suitable reply, a cock as big as your arm pushes your ass cheeks apart and begins forcing itself inside you. "That's..." you strain, "...too...big!" "Thankee kindly for the compliment, darlin'," she chuckles. "But ya better pucker up cuz' Imma split you open wide now, ya hear?" You try to scream from the pain, but with her monster cock now plunging away halfway up into your lungs after having torn clean through your intestines, it's a little difficult to have air to scream with. You don't last much longer after that. <<set _AllowNormalExit to false>>\ @@color:Red;You have died!@@ <<set $WORLD.diedby to "Your internal organs were shredded to goo by a giant cow cock">>\ \ <<AwardAchievement "Durable">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) After life review" "Death">> <<set $DisableMenu to false>> <</link>>\ </span> <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ "Can't we talk about this?" you whine, your vagina treacherously dripping in anticipation of receiving that humongous bull cock of hers. "Sure, talk all you want!" she laughs agreeably, then stabs her two-foot-long dick into you, tearing your pussy wide. <<FemaleVirginity "a minotauress with a dick as big as your arm">>\ You struggle futilely to espcae while watching your torso bulge from her enormous cock and feeling internal organs tear. Unfortunately you're far too weakened from battle and she has entirely too good of a grip on you. On the brigth side, at least you live long enough to feel her climax...somewhere inside your lungs from the feel of it. <<set _AllowNormalExit to false>>\ @@color:Red;You have died!@@ <<set $WORLD.diedby to "Your internal organs were ripped apart by a big fat cow cock">>\ \ <<AwardAchievement "Durable">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) After life review" "Death">> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<else>>\ Watching cautiously as you collapse to your knees, the cow-girl seems uncertain what to do with you. Glancing down at her own body then setting her sword down, she approaches then sits on her knees in front of you. Peering deeply into your eyes and is looking for something, she then takes your hands into hers and places them firmly on her breasts, then squeezes. "You want me to milk you?" you ask uncertainly. Her transformation having so deeply affected her vocal chords that she cannot reply with words, she simply nods. Grasping tentatively at her breasts you begin to understand the nature of her request. Her breasts are painfully firm and full of milk. Giving first her left breast a gentle squeeze and then the right, she sighs in relief as tiny squirts of cow milk spray from her nipples onto you. Relieved that your defeat will come with so little cost, you get to work kneading her breasts and giving the poor cow-girl much needed relifed of her own. Her tension now fading, she turns her back to you and sits fully in your lap to give you a graceful and easy under-handed access to her breasts. She soon drifts off to sleep under your tender ministrations, but as the pool of her milk grows on the ground, you feel it a bit wasteful and wonder what it must taste like. Curling around her torso and taking one of her nipples between your lips, you squeeze with both hands to squirt a generous bit of milk. The falvor is...similar to cow milk, but there's an distinct undertone of another flavor that you can't identify. Now suckling on her freely, the sound of her sleepy moans fill your ears and you swish her delicious fluids around on your tongue then swallow. As the liquid hits your stomach, however, you begin to feel a bit dizzy. The last thing you see is the eyes of the minotauress gazing with concern at you...and then everything goes dark. <<endif>>\ <<elseif ($Mon.penis is true)>>\ The minotaur wastes no time bending you over and planting his giant, erect cock at your vagina. It takes some thrusting and grunting before he manages to fit it inside though. Meanwhile, all you can do is scream and horror as you feel it tearing through your insides, lubricated by your own blood as much as by his pre-cum. Before long, the pain subsides and your vision soon goes dark. The last thing you remember is his screams of ectasy as he ejaculates into your torso, somewhere near your left lung, you think. <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<if _pcpussy is 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ <<endif>>\ <<set _AllowNormalExit to false>>\ @@color:Red;You have died!@@ <<set $WORLD.diedby to "Your internal organs were ripped apart by a big fat cow cock">>\ \ <<AwardAchievement "Durable">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) After life review" "Death">> <<set $DisableMenu to false>> <</link>>\ </span> <<else>>\ Error in defeat by minotaur: no recognized parts <<endif>>\ \ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","minotaur"]>> <<AdvanceTime 480>> <</link>>\ </span> <<endif>>\ <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ The hellhound is on you before you even hit the ground, biting and snarling, tearing at your clothes and nipping at your flesh. You try to hold up your arms to protect your vitals, but it quickly becomes clear that the creature very much wants you alive. Tearing effortlessly through your clothes, the creature forces its head between your legs and jams its tongue so far up your pussy that all you can do is convulse in shock. Lapping at a hundred miles an hour, you're quickly reduced to pliable jello, shuddering helplessly before his ministrations. This is not for your pleasure, however, and he stops after mere seconds, then steps forward to plant his forepaws at your sides and looks intently down into your eyes. <<if random(1,2) is 1>>\ Held securely by his gaze, you feel your knees spreading submissively of their own accord as a four-inch wide cock plants itself at your entrance and begins to press forward. \ <<else>>\ What captures your attention, however, is the four inch wide horse cock now pressed against your pelvis, insistely \ <<endif>>\ Your doubts of his ability to peentrate you with such a massive tool are quickly set aside as he somehow manages to force its entire width inside you, carried on the union of his fiery fluids sizzling against protective lubrication of your own meager girl-cum. <<FemaleVirginity "hellhound">>\ With his forepaws now securely gripped around your hips and his head pressed downa gainst your chest to keep you held securely down on the floor, he begins sliding his cock inside you, its tip somehow reaching nearly to your neck. He cums immdeediately and you taste its musky aroma at the base of your throat. Youe eyes roll up into your head and you gasp, his tongue darting across your lips and tasting yoru sweetness as his massive cock picks up its pace from being merely a train fucking you to a rocket. A red rocket, two feet long and cumming non-stop inside you so intensely that his flames belch forth from your pussy. Robbed of vision, but still able to hear, your skull ispierced by an orgasmic wolf howl that that echoes inside your head as if even your skull cannot keep him out of your mind. You lose consciousness, your last memory being a brief respite followed by a cock hardening inside you for a second round. <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ The hellhound is on you before you even hit the ground, biting and snarling, tearing at your clothes and nipping at your flesh. You try to hold up your arms to protect your vitals, but it quickly becomes clear that the creature very much wants you alive. Pushing you onto your back and forcing itself between your legs, he plants a paw squarely on your chest and presses you to the ground, leaning in and staring down his long nose at you. <<set _nextbp to setup.getnextbodypart()>>\ <<set _pussy to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>>\ <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPpussy, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _pussy, attackdesc: "", attacktype: "", mindam: 0, axdam: 0}>>\ \ <<if _pcpenis > 0>>\ For the briefest moment, he simply stares into your eyes. Then you feel it: a four-inch wide horse's cock pressing up against your pelvis just bewteen your balls and your asshole. To your surpise, rather than plundering your anus, he simply presses at you. And then you feel it: his cock is somehow //making headway inside you//. Your're overtaken by a tremendous heat, sweating and shuddering yet unable to break teh hold his gaze has on you as his cock relentless burrows through your pelvis, crafting and forging your insides to accomodate him. <<else>>\ For the briefest moment, he simply stares into your eyes. Then you feel it: a four-inch wide horse's cock pressing up against your upper pelvis. To your surpise, rather than plundering your anus, he simply presses at you. And then you feel it: his cock is somehow //making headway inside you//. <<endif>>\ @@color:Yellow;You have gained a pussy@@ No longer able to deny him, the hellhound immediately spurts a jet of fiery pre-cum inside you and thrusts his monster horsecock inand out of you so fast your head spins. Your eyes roll back into your head and you can see nothing, the sensation of his cock sliding in and out of you unopposed at a blistering speed while droplets of his slobber drip onto your face and into your gaping mouth, their heat sizzling against your tender flesh. When he cums, it's accompanied by an orgasmic wolf howl that echoes both throughout the stone hallways and inside your skull. <<FemaleVirginity "hellhound">>\ How many times he does, twice? Three times? A dozen? You never find out, as you lose consciousness after the first. <<endif>> \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out with him still fucking you" "Church">> <<set $WORLD.datapasser to ["sex","hellhound"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ <<if (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<FemaleVirginity "a drider">> <<endif>>\ \ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>>\ <<elseif (_mhasdick is false) and (_phasdick is false)>>\ <<set $PC[$CC][$PCsexACTS].pussylickgiven to $PC[$CC][$PCsexACTS].pussylickgiven + 1>>\ <<endif>>\ \ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","drider"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "bunny boob fondle">>\ The bunny-girl gazes on with amusement as you approach her with outstretched hands, your eyes completely focused on her chest to the exclusion of all else. Clearly unbothered by the attention, she angles her chest upwards so that each breast is already in line with you hands by the time you reach her. Gleefully kneading her breasts, she sighs contentedly and makes happy little noises as you milk squirts of her breast milk onto your chest, where it drips in tiny rivulets down your torso. <<if _pcpenis > 0>>\ Your hands now well-lubricated, you squeeze her boobs and rub them together. While you do this, she climbs into your lap and wraps her legs around you. With her boobs now at head height, you lean our face between then while she laughs and squeezes them together into both sides of your head. Your cock is rock hard by this point, and the position of her pelvis combined with the content smile of her face tells you that she knows. But for now you're content to enjoy her thick, perky boobs. Leaning into each other with a hug and a sigh, you remain like that for several minutes before you finally get up to resume your journey. <<elseif _pcboobx > 0>>\ Your hands now well-lubricated, you squeeze her boobs and rub them together, you feel your own nipples harden as <<else>>\ Smiling into her eyes then glancing down, a knowing look fills her eyes as you lean downand take one of her nipples into your mouth. Sucking gently and continuing to knead both breasts from below, a warm stream of delicious bunny milk fills your mouth. Feeling her fingers now delicately running through your hair, you close your eyes and sip on her warmly flowing stream in contentment. <<AdvanceTime 30>>\ A short time later, you wake up, having barely noticed that you'd fallen asleep. The bunny girl is still holding you in her arms, gazing down at you with nearly motherly love. You remain like that for several more minutes before eventually resuming your journey. <<endif>>\ <<elseif $WORLD.datapasser is "bunny boobplay">>\ <!-- this is a rare and missed oppotunity for the milking stat to be relevant. Implement? -->\ <<if $Mon.sex is "female">>\ As the bunny-girl falls to her knees with an exagerated and obviously fake cry, you find yourself staring at her chest and then glancing down at your own. Noticing this, she waggles her eyebrows and folds down her one-piece to reveal her bare breasts. Smilling at the sight, you remove your shirt and sit down in front of her. Reaching out to her, you cup her enormous bunny boobs in your hands and pull them up so that your nipples touch. Gasping at the sensation, you draw sweet little circles around her nipples with your own, then nudge closer so that one of your boobs fits snugly between hers. Feeling her breath on your face, you look up to see her cheeks flushed bright red. Her nipples harden against your bare skin as she reaches up to begin kneading your breasts while you rub them against her. Hey eyes go half-lidded and her breath hastens, and you both lean forward into a hug, wiggling up and down and back and forth so that your breasts fondle each other with every inch of contact. Eventually she sighs and nestles her head into your neck. You stay like that for several minutes,sharing a warm hug while your breasts move up and down with your every shared breath. Then with one last surprisingly chaste peck on her cheek, you stand and turn to leave while she waves goodbye. <<else>>\ "Oh noes!" the bunny-girl falls her to knees with an exagerated cry, then glances up at you hopefully. You find yourself staring at her enormous, exposed breasts, then glancing down at your own. Grinning at you, she cups her left breast in one hand and moves it up towards you as if in offering. Liking what's on display, you remove your own shirt and sit down on your knees in front of her. Reaching forwad to grab her boobs, she coots closer her in to make it easy. Close enough that your nipples touch, you grab one of hers and one of your own in each hand and bgin gleefully rubbing them back and forth on each other. She traces one finger delicately under your arm and up your neck to begin rubbing her fingers through your hair and massaging the scalp on the back of your head while she rubs her moistened boobs against your own. There's an unexpected sound, however, and you glance down to see her stroking her enormous cock betwen your splayed legs. You freeze in surprise, and right at that moment she sprays a gush of semen onto your boobs and down your stomach. Before you can object she scoops it up with both hands and vigrorously rubs it into your boobs, then hugs tightly against you and rubs your boobs together. "It's like a bubble bath!" she giggles, prompting you to laugh at her silliness before you at last join in with the mutual tit-rubbing carried on her generous handful of jizz. Eventually you stop and clean yourself up, pausing only a moment to glance at the bunny girl now sleeping on her back in the grass. <<endif>>\ <<elseif $WORLD.datapasser is "bunny vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven + 1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ "Oh no, I has been defeated!" the bunny rests the back of her hand on her forehead and collapses to her knees. "How cruel is fate to leave me to be ravished by my conqueror!" <<if random(1,2) is 1>>\ She looks over at you hopefully. <<else>>\ "I am going be ravished right?" she looks at you sternly. "Right?" <<endif>>\ Chuckling, you walk over and begin reaching for your pants. <<set _r to random(1,3)>>\ <<if _r is 1>>\ "Yay!" she cheers, hopping overexcitedly swaying back and forth as you drop your pants to reveal your cock. <<elseif _r is 2>>\ You don't quite make it though, because she gets there before you do. Tearing off your clothes, she hops up onto you like the bunny she is with lovely legs already wrapped around your torso and pumping on you before you can even fall to the ground. <<else>>\ "Yay!" she cheers, rolling over onto her hands and knees and wiggling her butt as you. Happy to oblige, you grab her by the hips and slide your cock a couple inches into her dripping pussy. "Mmm, yes..." she cooes as you start slowly pumping your way in and out of her. "Adventurer dick is the best!" You briefly wonder what's so different about adventurers, but the sensation of the bunny-girl pushing back onto you and eagerly clenching her pussy around your cock quickly drowns out all other thoughts. She's so into it that you hardly have to move at all as she pumps your cock, sliding easily onto you and then squeezing when she reluctantly pulls away. Her clenching is so tight that you find yourself being pulled a bit towards her even time she pulls away. Not only is it sexy and erotic, it's strangely gratifying how it makes you feel like she desperately wants you inside of her. <<endif>>\ <<set _r to random(1,4)>>\ <<if _r is 1>>\ Fully getting into the moment, the two of you pick up your collectvie pace until it is a hurried, frantic affair.\ \ <<elseif _r is 2>>\ "Yes! Yes! Yes!" she chants, whooping and hollering as you frantically pump a long staggered ejaculation into her. \ <<elseif _r is 3>>\ "I'm CUMMING!!!!" she suddenly shrieks, prompting you to cum in time with her frantic hip bouncing. "Mmm, mmmmm...yes." \ <<else>>\ You are AWESOME!" she screams, pawing at your back trying to pull you even deeper inside her as you cum. \ <<endif>>\ <<MaleVirginity "a sexy bunny girl">>\ The pleasure is intense, and for several minutes you keep your still-erect cock inside of her, jumping at the occasional little pulse as your breathing falls in time with hers. The two of you stay locked together for several minutes before reluctantly you at least slide yoruself out, give her an affectionate scratch behind the ears and continue on your journey. <<elseif $WORLD.datapasser is "bunny ass rape">>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<if $Mon.pussy is true>>\ "I'm going to fuck you so hard," you growl as you approach the fallen bunny-girl. "Oh no, I'm going to be ravished!" she gets onto her hands and knees enthusiastically and wags her hips at you. " How terrible!" Planting your hands on her waggling hips, you plant your engorged cock at her anus. "Oh," she seems a little less enthusistic. "Wouldn't have been my first choice, but I suppose something's better than nothing." Without much concern for her approval, you thrust several inches into her ass then slide back a bit before pushing yourself in to the hilt. She takes it like a champ, apparently even squeezing her ass cheeks together to grip your cock more tightly. Then as you thrust in and out she matches her squeezes to your rhythm. "Fuck, that's hot," you pant, digging your fingers into her butt cheeks as you pant in pleasure. "I know," she giggles right as you climax inside of her. <<else>>\ "I'm going to fuck you so hard," you growl as you approach the fallen bunny-boy. "Oooohh!" he swoons. "Do you promise?" By the time you get your pants off, he's already on his back, fingering his asshole. "Get on your back," you command. "I don't want to look at yoru face while I do this." "Oh, but I'm so boo-tee-full!" he giggles, but neverthless turns himself over present his ass to you. Needing no fyurther encouragement you plow down hard into him, his ass accepting your cock pretty easily. Whether from his preparation or because he takes a lot of cock, you don't bother to ask. Aside from the annoying moans and constant giggles, he makes a pretty good bottom, and when you're ready to cum you mash his face into the ground and burrow your cock all the way to the hilt to spray your cum as far up his rectum as it will go. "Thank you!" he sighs. "I'm so glad you could enjoy me!" You wipe your dick off on his leggings, then continue on your journey, feeling much refreshed. <<endif>>\ <<elseif $WORLD.datapasser is "bunny suck her dick">>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven + 1>>\ Having been defeated, the bunny-girl collapses dramatically on her back holding her arms and legs above her and bent at the knees and elbows. The position leaves her masive dickgirl cock still-erect and pointed straight upwards. It's such as huge monstrosity that you find your gaze drawn to it. <<set _r to random(1,3)>>\ <<if _r is 1>>\ "Like what you see?" she giggles. "Maybe," you hesitate, yet drawn to it like a moth to flame. "You wouldn't mind if I took a closer look, would you?" "Look all you want!" she smilles happily. "Touch all you want, too! You can even //taste// all you want!" Feeling reassured, you delicately lean over and give the tyip of her cock a lick. It instantly spurts out a large dollop of pre-cum. "See?" she laughs. "It likes you!" Chuckling at her joke you lean in again and continue licking. Even though you were the victor and the bunny-girl your helpless prey, something about servicing her cock just feels right. \ <<elseif _r is 2>>\ "You want some?" she perks up. "Because if you want some bunny dick, I could totally hook you up. I know a girl, you see." "You mean you?" "Yep!" She giggles happily, then looks at you conspiratority. "You know...since you defeated me in combat, then surely this big juicy cock is ''yours'' for the taking. If you ''want'' it, there's nothing poor little defenseless me could do to stop you from taking a little taste." At first you feel a little conflicted. But the more you think about it, the more you realize that you do want it. You've never seen a cock quite that big on a girl quite this hot, and you're going to take advantage of the opportunity, you decide. \ <<else>>\ The only thing is that you're not entirely sure you can. Settling in between her knees, you take her big bunny dick between your hands...//both// hands, and try to take in its girth. It's easily a good three inches thick. As you contemplate the logistics of this, a generous bit of pre-cum splooges out across its tip, and you decide that now's the time. Opening your mouth as wide as it will go, you hesitantly start to lean in. And that's when she decides to very helpfully grab you by the back of the head and impales you throat-deep onto her cock. "Ooohhh, yeah..." she sighs in delight while you struggle to breath. "Oh, right. Sorry." Sliding your throat off her cock, you accept her apology and then put it back in your mouth to continue sucking on its sheer magnitude. True to form, the bunny girl cums quickly. You clean her up as best as you can before she gives you a friendly nuzzle and hops off into the forest. <<endif>>\ <<elseif $WORLD.datapasser is "bunny handjob">>\ The bunny-boy lands on his back with his arms and legs above him. The position maybe reveals why he walks around on hands and knees: his dick is only about three inches long. "Don't look at me!" he shouts, clearly distraught by your gaze. Feeling pity, you sit next to him and take his penis in the fingers of one hand and begin stroking it. "Is this ok?" you bat your eyelashes at him. At his nod, you lick your hand a couple times for lubrication and resume your tender ministrations. His breathing instantly turns so heavy that you're unsure whether he's really into this, or whether he's too nervous to really enjoy himself and simply pretending for your benefit. "It's a nice cock," you assure him kindly, and that's the exact moment that he explodes. "I"M CUMMING!!!" he shouts, far more loudly than the teaspoon of semen now spread halfway across your palm would justify. But he seems happy, and after giving you a quick hug, he bumps noses with you then hops off into the forest. <<else>>\ Error in bunny sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <!-- cat --> <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "cat boobplay">>\ <<set $PC[$CC][$PCsexACTS].milked to $PC[$CC][$PCsexACTS].milked + $Mon.level>>\ "HISSSS!!!" the cat-girl collapses to all fours and scowls at you. Sitting down on the ground, you pat your lap a few times and then look away, feigning disinterest. \ <<set _r to random(1,3)>>\ <<if _r is 1>>\ It takes a few minutes, but eventually she comes around and lays on her back in your lap, looking at you curiously and batting at your face. <<elseif _r is 2>>\ She glares at you suspiciously, but instead of looking back at her you start cleaning under your nails. Tired of being ignored, she leans in to nudge the top of her head against your chin. You scratch behind her ears and again invite her into your lap. This time she crawls on top fo you and curls over onto her back to look up at you. <<else>>\ "HISSS!!!" she hisses. Then crawls into your lap anyway. <<endif>>\ "<<print either("Nyan-nyan","Mwwrow","Meow","Nyaa")>>," she purrs at you, pushing her face into your head to demand more head scratches, which you happily provide. As she relaxes into the affection you start giving her belly rubs with the other hand, which she ignores. <<if _pcboobs > 0>>\ <<set _r to random(1,2)>>\ <<if _r is 1>>\ <<set $PC[$CC][$PCsexACTS].milked to $PC[$CC][$PCsexACTS].milked + $Mon.level>>\ That's when you slide your hand from her belly up to her breasts and start playing with them. She ignores you and instead reaches out with her tongue and starts licking your nipples. Distracted by the sensation, you stop playing with her boobs for a moment which prompts her to growl at you. Chuckling, you take a cat breast in each hand and gently knead them while her ministrations at your own begins to draw milk, which she eagerly laps up. <<else>>\ "HISSS!!!" she hisses suddenly, batting and clawing at your bangs, then just as suddenly getting bored and turning herself around in a circle on your lap. Amused by her antics but still focused on the supple curves of her body, you begin tracing delicate circles around one of her nipples, prompting her to roll over onto your back in your lap yet again, whacking you in the face with a knee in the process. "Mrroww?" she looks at you quizzically, as if demanding to know why you've stopped playing with her. After a moment to settle your head, you resume kneading her breasts while she purrs happily at you. <<endif>>\ You savor the sensation, encouraging her with happy little head pats with one hand while you continue to gently fondle her chest with the other. She doesn't seem to mind, and the two of you continue to lay together in the grass for some time before eventually you get up and resum your adventure feeling a little happier than before. <<else>>\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ That's when you slide your hand from her belly up to her breasts and start playing with them. Which she also ignores. <<elseif _r is 2>>\ Figuring this is your opportunity, you stop petting her to cup both of her breasts in your hands. She immdidiately bites one of your hands and pulls it away. You take the hint and go back to scratching behind her ears with that hand while you continue to feel up her chest with the other. She seems ok with that. <<else>>\ "HISSS!!!" she hisses. Then crawls into your lap anyway. Left uncertain by the mixed messaging, you hesitantly cup underneath her breasts and lift them appraisingly in boths hands. When her head tilts curiously at you, you assure her that she's a good kitty and her nipples noticeably harden from the comment. Rolling them between your finger and alternately hefting and squeezing her tits in your hands, you begin to lose yourself in the sensations. <<endif>>\ <<if random(1,2) is 1>>\ Once you've had your fill, you give her a pat and the head and tell her she's a good kitty. <<else>>\ Once you've had your fill, you reach out with one hand to give her a pat and the head, which she immediately swipes at with her claws. Having had enough of that, you turn and walk away while she meows at you to come back. <<endif>>\ <<endif>>\ <<elseif $WORLD.datapasser is "cat vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven +1>>\ "HISSSS!!!" the cat-girl collapses to all fours and scowls at you. Approaching carefully, you reach out with an upward-facing palm to let her sniff you. Suspicious, she frowns at your hand, then leans in as if to sniff it, then imediately bites you. "Ouch!" you yank your hand away. "Bad kitty! Bad!" <<if $Mon.sex is "female">>\ Cringing at the reprimand, she demurely undoes the velcro on the bottom half of her catsuit, then turns away from you and kneels down with her ass in the air. When you don't mount her right away, she starts waving her ass back and forth and insistently meows at you. Confused but aroused, you drop your pants and move in behind her. "HISSS!!!" she snarls once again, frantically reaching around with one hand to hit you while still suggestively waving her ass in the air. "So that's how it is?" you frown. "Ok, fine. We'll do it your way." "Bad kitty!" you slap her ass and thrust your cock into her already-dripping pussy while you force her head to the ground. "Mrrrowwlll!" she howls as she pushes her hips back in time with your thrusts. "FSSSS!!!" It's an interesting interplay, with you fucking her even harder while she continues to snarl and hiss, fighting and trying to scratch you with every opportunity. Tiring of this, you plant your hand between her shoulder blades and push down to the ground hard enough that her boobs splay out to eth side. "Mroooowrrl..." she moans, softer and softer. "...mrooww." By the time you finish, she's purring happily and ready to comes to sit in your lap for head scratches. The nice kind, not the bleeding kind. <<else>>\ Rather than relent at the reprimand, instant she glares at you definately with her arms crossed. An act made somewhat difficult by the enormity of her breasts. Deciding it's time to take charge, you roughly swat her on top of her head. "Bad kitty! Bad! Down, kitty! Down!" She continues to stand, but you can't help but notice her trying but failling to suprress the edges of her mouth turning upwards. Realizing she likes it rough, you swat her again and bear your weight down on your to force her to ground, her giving just enough resistance to make it seem plausible while she claws at your chest with paws that very obviously have retracted claws. "Mrrowwllll," she wails, her ass wiggling in anticipation as she pushes her hips back against your pelvis. Not one to disappoint, you stick the tip of your cock just half an inch or so inside of her then pause to watch her frustrated gyrations before at least gracing her dripping pussy with your manhood. Never once does she relent on pretending to try to get away however, clawing at thr groudn as if to crawl away even as she pushes her hips back onto you in time with your thrusts. In fact, even now her pussy is clamped so tightly aroundyour cock that it's almost difficult even to pull back out of her between thrusst, and it doesn't take long before you cum inside her with a vibrant moan of delight. Purring now, the cat-girl at last seems content to dispense with the charade, and lays there quietly still wrappined aroudn your cock. When you try to pull out, she immediately clenches and meows as if she doesn't want you to leave. But alas, good kitty, you tell her, it's time for you to go. With a pout, she lets go of your dick and sticks one leg in the air to reach down and lick your semen out from her own pussy. 'Pretty flexible cat-girl,' you think to yourself, before picking up your things and continuing your journey. <<endif>>\ <<elseif $WORLD.datapasser is "cat fucks you">>\ <<if $Mon.sex is "male">>\ Feeling frisky, you get down on your hands and knees and turn around to wave your ass at him. He begins licking his arm and rubbing it across his face to clean himself, but you catch him sneaking glanced out of the corners of his eyes. "Come on, are we doing this or what?" you slap your ass, but he continues to preen despite his obviously growing cock. "Alright then, I guess you're not interested." <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The moment you start to stand, he immediately rushes over to mount you, planting your face into the ground with all his weight and then positioning just the tip of his cock at your pussylips. "Meow," he whispers into your ear, then delicately plants the first inch of his cock inside you. "Oohhhhkay..." you exhale, easing into the pleasure. "Letting you do ALL!! ...oh, the work...was definitely the rightr choice. Oh, mmmm." <<FemaleVirginity "a muscular cat-man bodybuilder">>\ The cat-man's cock is as thick as his mucles, and he fucks you nonstop and tirelessly through <<print either("two","three","four")>> of your orgasms before he finally cums himself. By that time you're feeling pretty pleased with yourself. As for him, he immediately pulls out and sist down to preen himself withour a care, scarcely noticing when you eventually get up to leave. <<else>>\ The moment you start to stand, he immediately rushes over to mount you, planting your face into the ground with all his weight and then positioning just the tip of his cock as your anus. "Do it," you tell him, which he obliges by grabbing onto your hips hard and slowly but unstoppably pushing his thick meaty cock a good 8 inches up into your intestines. It's slow at first, but once his pre-cum starts to slicken your insides things get a bit easier after that. His cock is still just a little too big for you though, and for the next several minutes you have to intentionally relax just to stay on the positive side of pleasure vs pain. Evantually he graps your hips more tightly and thrusts one last tiem, painting your sides with his manly cat-seed before immediately withdrawing and turning his back to you to preen. Taking your time to recover, by the time you're ready to leave he's now napping quietly in the grass without a care in the world. <<endif>>\ <<else>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The defeated cat looks at you with clear lust and frustration in her eyes. Deciding it's time for you to get some you set yourself down on your hands and knees and wave your ass in her direction. "Poor little kitty," you tease. "Does the pussycat want some pussy?" Her eyes briefly bulge, and you see a whole range of emotions flash across her face. Eventually she settles on 'petty annoyance' and turns her back on you in huff. "You're playing hard to get for such a fierce warrior kitty who couldn't even beat a lowly adventurer. But, oh no!" you feign. "I'm so hurt from our battle, I've fallen and I can't get up!" At this, the cat at least peers around to look at you, and upon seeing you shaking like you're hurt, her ass wiggles in excitement and she instantly pounces on you. "Oh no!" you play along. "The kitty has captured her prey!" Her erection bobs up so fast you briefly wonder if you've made a mistake, but in the next second she's balls-deep inside you and thrusting like a frieght train and all your objections instantly melt away. "Oh no!" you continue to feed her fantasy, "I'm all helpless and can't possibly escape such a powerful hunter!" <<FemaleVirginity "a tsundere cat-girl">>\ You //feel// her cock harden and twitch inside you, and she gasps for but a second before you feel a firehouse of semen blasting and filling you completely with her seed. You weren't quite finished yourself, but feeling her gasp and pants and shudder on top of you brings its own kind of pleasure. It takes her several minutes to recover, and after sliding out she gives you an uncertain look before licking you affectionately on the neck then quickly dashing off into the woods before anyone can see. <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The defeated cat-girl falls backwards onto her butt and furiously glares at you. Seeing her gradually waning but still pretty beefy cock between her legs, you decide to play with her a bit, getting down on your hands and knees and waving your ass in her face. "Poor little pussycat," you tease. "Did the pussy-kitty want something she can't have?" Her anger flares, and she instantly pounces on you and starts madly thrusting her cock between your thighs. Laughing at this, you continue to mock her. "Oh no!" you tease. "Can't even get it up for somebody giving you a pity fuck? Defeinitely a //pussy// cat!" Seconds later she's balls-deep in in your ass and thrusting like a madcat, and yet for all its bulk you can't help but notice that her cock isn't fully erect. "Getting bored here," you pretend to yawn. "Wake me up when you're ready." Frantic now and struggling, she somehow manages to cum but she's in tears at this point and she obviously didn't enjoy it. Collapsing backwards, she and her half-erect cock slip effortlessly away into a crying heap. Feeling some geunie pity for her, you comfort her and give her head pats and tell her she's a good kitty, but she clearly doesn't believe you. Suprisingly, you feel pretty good yourself despite not climaxing at all. Almost as if the way you emasculated her somehow gave over all her energy to you. Feeling pretty good about yoruself, you give her a courtesy pat on the head then continue on your way. <<endif>>\ <<endif>>\ <<elseif $WORLD.datapasser is "cat handjob">>\ The cat-morph collapses on $Mon.hisher back, panting and sweating from the exertion of battle, clearly trying but failling to keep $Mon.hisher cool. Feeling empowered, you stride boly over until you're standing straddled over $Mon.himher. You can't help but notice that the position nicely aligns $Mon.hisher cock between your legs. Liking what you see, but not quite feeling up to going all the way right now, you step off to the side and sit down next to <<print $Mon.hisher>>. Curious now, the cat watches as you casually take $Mon.hisher pleasantly thick cock in both hands and start stroking. Leaning in close to take in the scent, your nipples harden and your grin goes wide. "You've been a bad kitty cat," you tease, sliding your hands freely up and down on $Mon.hisher generous pre-cum. Leaning down to take just a small lick, you can't help but notice the thick, reddish-purple veins flowing abundantly across $Mon.hisher length. You also note the suddenly rapid twitching, and lean back to avoid a streak of cat-cum that instead lands across $Mon.hisher chest. "Have you been properly punished now?" you snicker. "You'll be a good kitty now, right? No more attacking innocent adventurers?" "Meow," $Mon.heshe deadpans noncommittally, then immediately tilts $Mon.hisher head dowards to start licking <<print $Mon.hisher>>self clean. <<else>>\ Error in cat sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "fox blowjob">>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven +1>>\ <<if $Mon.sex is "herm">>\ "I have been defeated!" the fox-man lets out an exaggeratedly feminine cry, falls to the ground then looks up at you expectantly. "Oh, woe is me! I can only imagine what sort of degenerate acts I will doubtlessly be forced to endure!" Shrugging, you point at your crotch and tell him to get to work. He chitters in excitement and wraps a circle around your cock with a suprisingly long, pink tongue. With a big silly grin on his face, he then inhales to slurp your cock balls-deep against his chin. Resting your hands on top of his head, you let him set the pace as he enthusiastically sucks on your cock, masterfully teasing its underside with his tongue while rubbing its top against the ridges on the roof of his mouth. "You've...had..." you gasp," a lot of PRAC...tice...with this. Oh, fuck me you're good." Within 30 seconds you're howling in exctasy while he drinks your semen. When you're finished, he looks up at you with his tail wagging for more, but you send him on his way and get back to adventuring. <<elseif $Mon.sex is "male">>\ Unable to stay standing, the fox-man collapses to the ground. Grabbing him under the jaw, you squeeze to force his mouth open and examine his teeth. They're sharper than you'd prefer, but nothing ventured nothing gained, right? Jamming your cock down his throat, the sensation of him gagging around your member fills you with unexpected lust. Figuring that if you push on his throat hard enough he won't be able to bite, you wrap your hands around the back of his head and ram yourself balls-deep into him, the tip of your cock bending just a bit to match the curve of his esophagus You //feel// teeth, but he either can't or doesn't feel inclined to bite, so you try to pick up your pace but find the sandpapery-feel of his tongue a bit off-putting. You probably could cum this way if you tried hard enough, but eventually you settle for pulling out and masturbating your dick between your hand and his face, then finish with a spurt of semen which he reflexively licks out of the fur of his muzzle. <<else>>\ Collapsed on the ground, the fox-girl looks up at you. "So what happens now?" she asks. "Now," you point betwen her legs, "you're going to suck my dick." "Oh?" she tilts her head in surprise then reaches for your cock. "If that's all you wanted you hardly needed to fight me for it." Reaching out with her tongue she delicately licks your tip. It's cat-like, with rough little hairs across its entire length, each gripping and tickling your member as she works it. Maddeningly at first, she does nothing across the length of your shaft and instead focuses entirely on just your tip. Licking just the front of your glans, the top, the sides...produces a uniquely erotic experience, and you find yourself grrabbing onto her head just to maintain balance. You're about to say something when she opens her mouth fully and rubs the top of your dick against the ridged roof or her mouith her tongue continues to work the bottom. The occasionally sensation of her sharp, pointed teeth lightly tugging at your skin informs you of the reason for her particular technique. Physiology prevents her from ever taking your cock inside, but her persistence over <<print either("several","several long","nearly ten")>> minutes at least gives you an enduring orgasm that lasts longer than expected, followed by a dozen little spasms of pleasure while she licks you fully clean. Looking up to you at last, you can help but laugh at the cute little tail wag she gives before you part company and resume your adventure. <<endif>>\ <<elseif $WORLD.datapasser is "fox forced anal">>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + 1>>\ <<if $Mon.sex is "herm">>\ "I have been defeated!" the fox-man lets out a very feminine cry, falls to the ground then looks up at you demurely. "Please be gentle." "No promises," you shrug, flipping him over onto his stomach and pulling his ankles apart. He protests slightly, but goes silent the moment he feels the tip of your penis against his anus. "...ok," he faintly moans, then gasps when you thrust suddenly inside. From that point he becomes completely cooperative and pushes back against you with your every thrust. He does make a kind of annoying chittering noise, but you figure that's just 'what the fox says' and continue humping away at him. After a couple minutes he starts to alternate between squeezing and pushing his rectum against you, and that pushes you over the edge into climax. Glancing at the brownish goo of your semen mixed with his stool, you wipe your dick off on his fur and then resume your adventure. <<elseif $Mon.sex is "male">>\ Weak on his knees, the fox collapses to the ground, unable to continue the fight. Unimpressed with the weird green color of his cock, you whip out yours and wave it in front of his face a few times. "Umm," he stutters. "I don't do...uhh, blowjobs." "Ok, that's fine," you nod, flipping him over onto his stomach and picking him by the hips. "Wait!" he objects. "Blowjobs are good! I give great blowjobs! Please!" "Too late," you shrug, plunging your cock balls deep into his asshole while he struggles to escape. "But I liked how you said please. Maybe you can lick me clean after I'm finished." He goes very quiet after that, leaving you to plunge the chocolatey depths of his hershey highway uninterrupted. When you're ready to cum you push his head to the ground and lean hard into his hips to let me know it's coming. Then you keep fucking his asshole for another couple minutres just to keep him in suspense before you do finally release your load. Cleaning yourself up after you finish, you notice him walking strangely as he leaves. <<else>>\ "I thought I could beat you," the fox-girl pouts briefly, then looks up at you with a glimmer of hope. "But perhaps I can still beat you off?" "I have something better in mind," you grin. "Turn around and get on your hands and knees." She blinks a few times, then wordlessly complies. You grab her well-muscled ass cheeks with both hands and begin roughly kneading them, your erection steadily growing and sliding its way up her thighs as it seeks its target. Sliding a finger delicately across her pussy lips, she then suddenly gasps when you thrust into the //other// hole. "That's not my pussy!" she cries out in shock. "That's my ass hole!" "I know!" you shout back, pressing her head to the ground and burrowing in and out of her with reckless abandon. Her sweet virgin ass is so tight it almost hurts, but as you start to cum the lubrication kicks in and you settle in for a nice long ride. Unfortunately the sensation is so ovewhelming you last barely a few minutes before you cry out in extasy and paint her intestines with a gallon of your sperm. By this time she's stopped objecting, and is waiting patiently for you to finish. Unwilling to hurry for her benefit, you take your time and keep thrusting until your dick begins to go soft, at last coming out of her with a 'plop' sound. "Such a waste of good cock," she sighs, then stands and walks sadly away. <<endif>>\ <<elseif $WORLD.datapasser is "fox vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ Collapsing to her knees, the fox-girl looks up at you in concern. Not wanting to disappoint her, you push her onto her back and climb between her legs. "Oh thank goodness," she sighs in relief. "I thought you were going to eat me." "No, figured I'd skip the foreplay," you joke, prompting a few giggles from her as she wraps her legs around you and hooks her ankles together behind your back. Leaning in to smell her neck, you nuzzle under her ear with your nose then bite her gently as you slide your engorged cock into her eager pussy. <<MaleVirginity $Mon.virgin>>\ Thrusting gently into her warm recesses, she gazes lustfully into your eyes and plays with your hair as you pick up the pace. Kneading her furry boobs in one hand while you caress her face with the other, meanwhile her claws lightly trace across your back as if trying to gently pull you even more deeply inside her. Happy to oblige, you slow your pace, but push harder and deeper with each thrust, eliciting moans of pleasure quickly followed by her first climax as her mouth goes wide and her pussy clenches around your cock as if trying to squeeze your climax out of you and into her. But you're not finished just yet. You grab her left ankle and pull its knee to her shoulder, scissoring her legs around your torso then thrusting so hard inside her that her eyes visibly bulge. Completely in your control, she's reduced to little more than lustful whimpering while you pound hard, then finally burst a frothy blast of seed with so much force that some richochets and spills out onto the ground beneath her. Panting together, she nods off to sleep with her arms still around you. <<elseif $WORLD.datapasser is "fox pussylick">>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<if $Mon.sex is "female">>\ "Your fur is very pretty," you smile admiringly at the defeated fox-girl. "I groom myself fairly often," she nods. "Mmm," your eyes go half-lidded. "I'd like you to groom me." "But you have no fur," she frowns. "Unless you wish me to lick your head? Sitting on the ground on your butt, you spread your knees high and wide, beckoning her over between your legs. "Oh, is this your first time with a fox-girl?" she giggles. "Very well. But remember you asked for this." <<else>>\ With the fox struggling to stay on his feet, you nonchalantly walk over and knock him to the ground with a light tap. He stays down, but when you lays out in front of him with your legs spread, he raises an eyebrow in confusion. "I beat you," you grin smugly. "So you're going to lick me until I spray girlcum in your face." "Are you serious?" he laughs. "Ok, well...you asked for it!" <<endif>>\ The fox is on you before you can stop to ask what $Mon.heshe means. You find out the moment $Mon.hisher roughly bristled tongue makes contact with your clitoris. After some adjustment the sensation is not totally unpleasant, but neither is it the sexy experience you had in mind. Running $Mon.hisher tongue up and down your labia, over your clit, occasionally inserting a clawed finger inside of you...$Mon.heshe's clearly putting a good effort in, but the longer $Mon.heshe goes, the more painful it becomes. <!-- what about damage reduction from achievements? -->\ <<ChangeStat $PChpcur -1>>\ @@color:Yellow;You take 1 point of damage!@@ <<if $PC[$CC][$PChpcur] < 1>>\ <<set _AllowNormalExit to false>>\ @@color:Red;You have died!@@ <<set $WORLD.diedby to "Cunnilingus with a fox-morph. Their tongues are bristled.">>\ \ <<AwardAchievement "Durable">>\ <hr>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) After life review" "Death">> <<set $DisableMenu to false>> <</link>>\ </span> <<else>>\ <<set _CapHack to $Mon.heshe>>\ <<set _CapHack to _CapHack.toUpperFirst()>>\ Eventually the pain becomes too great and you ask $Mon.himher to stop. <<print _CapHack>> shrugs and darts off into the distance, leaving you to resume your journey alone, and with a slightly awkward walk. <<endif>>\ <<elseif $WORLD.datapasser is "fox cowgirl">>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ \ The fox-man stumbles and falls to the ground. Not wasting any time, he struggles not at all and seems pretty pleased with himself as you step in and push him on his back. Grabbing his already-erect cock in one hand, you place its tip gently at your pussy lips and begin rubbing it up and down the length of your slit. Savoring the sensation with every thrust, you slide up and down on his cock just a few inches at a time at first, then a few more inches, then a more few more...gently reveling in every inch of his shaft as you slowly guide more and more of it inside you. With the lubricating help of his pre-cum, you eventually you work its entire length inside you to the point that the fur on his balls is tickling at your ass checks. <<FemaleVirginity $Mon.virgin>>\ <<if _pcpenis > 0>>\ Looking down, you see his mouth open with his tongue hanging out. Feeling deeply lustful and a bit mischievous, you take aim with your cock and begin stroking yourself off as you continue sliding gracefully up and down on his cock. \ <<if random(1,2) is 1>>\ You climax before he does, spraying a jet of semen across his face and mouth mere seconds before he paints your insides with his. <<else>>\ He climaxes before you do, the tell-tale twitch of his cock inside you prompting a waterhose gush of fox semen up inside you a mere second before you spray your own load of semen across his face. It takes him a moment to realize what it is, and you continue stroking yourself off in the meantime while your pussy clenches gleefully around his cock. <<PregnancyTest>>\ <<endif>>\ <<elseif _pcboobs > 0>>\ With your eyes now closed, you gasp at the unexpected sensation of his hands gently sliding up your torso and cupping your breasts. Liking this, you begin thrusting harder up and down on his cock while he squeezes your tits and his fingers dance over your nipples. It doesn't take long before his hands slide back down to firmly grip your hips and he starts thrusting up to meet your downward bounce on his cock. <<if random(1,2) is 1>>\ Content to relax and enjoy yourself, you let him set the pace as he fucks up into you. Reaching down with your fingers to run them gently through his fur, you lean forward to pull your hips away from him to make him thrust delightfully harder to fully reach you. The forceful energy of it brings you to climax first, and you settle back to enjoy his determined thrusting for a good minute longer before he finally ejaculate inside you, only to collapse exhausted immediately afterwards. His semen tickles its way down your thighs as you slowly pull yourself off of him, then get dressed to walk away as he slips into blissful unconsciousness. <<PregnancyTest>>\ <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived - $Mon.level>>\ Annoyed by his assertiveness, you slam your hips down hard to meet his, feeling every tingle and pulse of his cock inside you as he desperately squirms trying to generate some friction. He's barely on the edge of climax and so are you, but you make him wait to come down before you resume thrusting yourself up and down on his cock. Too slow for his tastes, but enough that you bring yourself to climax before he can, then get up and walk away, leaving him to frustratedly masturbate himself the rest of the way. <<endif>>\ <<else>>\ @@color:Yellow;Debug: No penis, no boobs found in fox sex event@@ <<endif>>\ <<else>>\ Error in fox sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "wolf pussylick">>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ Walking over to the defeated wolf, you drop your pants and give him a serious look. The uncertain look in his eyes tells you that he's confused more than scared, but the wagging of his tail and the hint of red tipped dick poking out of his sheath tells you that he's not wholly uninterested in what's on display. "Lick me," you command. His eyes light up and he happily sniffs his way bewteen your legs and begins licking uop and down between your labial lips. Planting your hands on his head and watching in amusement as his tail continues to wag behind him, you don't object very much when he slides his arms between your knees with his hands on your butt, then pushes your knees apart to slide you gently to the ground. More comfortable now, the wolf continue to lavish your pussy with his long, slippery tongue, the tip of his nose cold and occasioanlly brushing against your stomache as you climax. After a few minutes of bliss, he begins climbing up your torso to mount you missionary style, but you bop him on the nose and tell him to get back to licking. Whining but obediant, he resumes his licking and brings you to a second climax before you decide you've had enough and release him. Glancing at his thick, red cock as you put your clothes back on, you briefly consider letting him fuck you, but by this time he's already furiously masturbating on the ground and you find yourself too amused at his antics to interrupt. Instead you simply enjoy the show, chuckling to yourself as his ejaculation sprays up his chest and nearly to his chin, making a mess of his fur in the process. <<elseif $WORLD.datapasser is "wolf anal">>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ Dropping your pants and walking over to the defeated wolf, his eyes bulge at your cock as he futilely tries crawling backwards away from you. "Wait!" he objects. "I thought you were a girl! "Wow, really?" you feign surprise. "I though the same about you!" Scrambling away as you advance on him, the wolf instinctively gets down on all fours to run, giving you easy access to his tail. Grabbing onto it and haulling him back, you pull his hips up and press his head to the ground, positioning the tip of your cock at his asshole then begin rubbing it up and down. "I'm not into men!" he insists. "That's ok," you assure him with a gentle pat on the head. "I'll be into you instead." Plunging balls deep into the wolf on your first thrust, he cries out in pain and fury as you hold him in place and ride his asshole. He continues to struggle, but weakened as he is from the fight it's easy for you to hold him in place, your cock gliding effortlessly in and out of his tight ass. Eventually his struggles cease and you curiously reach underneath him to find his own cock surprisingly erect for someone who fought so hard to avoid this. You briefly consider stroking him off when you cum, but shrug off the thought and instead grip his hips with your hands and bring your entire body weight down to bear, mashing his face and chest into the ground as you do. "Huuurrrrrunnngh!!!" you cry out, painting the wolf's intestines with your semen while he squirms underneath you. By this time the wolf is reaching for his own dick, but you pull out and drop him to the ground before he can. Then, wiping your dick on his fur, you thank him for being such a good fuck and continue on your way. <<else>>\ Error in wolf sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ <<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated human <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "human blowjob">>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + 1>>\ <<set _r to random(1,4)>>\ <<if _r is 1>>Knocked briefly off her feet, the girl sits up just in time to see you drop your pants, revealing your cock at full mast and ready to go. \ <<elseif _r is 2>>Stumbling and collapsing to her knes, the girl soon finds herself nose to nose with your fully erect cock. \ <<elseif _r is 3>>Collapsing with a dainty squeek, <<else>>You drop your pants and walk over to where the girl sits, still dazed and hurt from the battle. <<endif>>\ <<set _r to random(1,3)>>\ <<if _r is 1>>For a moment she looks up at you in anger, but then a look of realization slowly washes over her. <<elseif _r is 2>>From the battle-worn look of her gear, you'd guess she's been adventuring for a long time. Surely it can't be much of a surprise to her what happens she she loses a battle. <<else>>She's clearly annoyed by this, but after looking at your cock for only a few seconds instantly deflates with a look of resignation plastered all over her face. <<endif>>\ <<set _r to random(1,2)>>\ <<if _r is 1>>\ "Could be worse," she admits finally with a sigh. "How so?" <<if $PC[$CC][$PCmorph] is "human">>\ At least you're human," she looks at you. "Some of the things in here...aren't. And sometimes monster cocks are disturbingly bulbous and-" "Yeah, <<print either("that's about the last thing I want to hear right now","not interested","I think I'll pass on that story")>>," you shudder, almost losing your erection when she saves the day by parting her lips and gracefully sliding your cock across her tongue. "Much better," you sigh, looking down to meet her gaze looking up at you. She seems to be getting into it, and you think you detect a hint of a smile in her eyes as she starts inhaling and exhaling on your cock to pick up the pace. Surprised by her growign enthusaism, you let her set the pace and settle in for a lengthy "Mouth's getting tired," she admits at last. Deciding you're content with her performance, you grab her hair and start humping her face while she puts in a good effort with her lips and tongue to cover as much of your cock as possible at it thrusts in and out of her. It only takes a few minutes after that. <<if random(1,2) is 1>>\ Deciding to to cum inside, you grip the back of her head to let her know she's going to swallow. She doesn't resist, and it only takes her a couple swallows to get it all down. "Good girl," you pat her on the head, then turn to leave. <<else>>\ On a whim you pull out at the last minute and cum all over her face and chest. "Not on the dress!" she shouts in annoyance. "Too late," you shrug. "Swallow more next time." <<endif>>\ <<else>>\ "At least you're not human," she shrugs. "Why do you think I come here in the first place? With that she takes your cock into her mouth with a delighted cooing sound and goes to work sucking and slurping it down. Gasping at her eagerness, you nearly stumble forward from the industria-strength suctioning she gives you, all while masterfully fondling your balls in one hand and reaching around to squeeze your ass cheeks with the other. "Oh fuck," you pant, steadying yourself with your hands on the top of head. It doesn't take her long to being you to climax. "Oh yeah," she grins, licking your semen from her lips. "I've still got it." <<endif>>\ <<else>>\ "I don't suppose you'd be willing to let me go because I'm human?" "<<print either("Nope","Not a chance","I don't think so")>>," you say, grabbing her head and impaling it onto your cock. "Oh yeah," you pant, face-fucking her with gusto. "Healers give the best head. "Mmmmrrmmhh!!" she tries to speak around your cock slamming itself across her tongue. Annoyed, you take your cock out and look at her pointedly. "I said-" And then you mash her face balls-deep back onto your cock, just in time to spray a geyser down her throat. Too busy swallowing to keep from drowning, she stops trying to speak. Deciding you prefer it that way, you keep your cock in her mouth until your erection starts to fade, then quickly slip out and walk away. <<endif>>\ <<elseif $WORLD.datapasser is "human male anal">>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ "As the victor of this battle, I am entitled to my reward!" you shout at the fallen man. "And what better way is there than this?" He looks up at you fearfully, unsure whether what's to come will bring painful submission or blissful release. You reach for his hips and pull him forward onto his knees as your other hand reaches down to grab hold of his cock. You feel it harden in anticipation, ready for you to take control. Pressing $Mon.himher head down towards the ground, you hear $Mon.hisher gasp as your dick probes into $Mon.hisher ass while you simultaneously stroke $Mon.himher off. Thrusting now into $Mon.hisher tight asshole, you can feel $Mon.himher relax into submission, give <<print $Mon.himher>>self over to you completely. It doesn't take long before $Mon.hisher uncontrolled moans push you over the edge, and the two of you climax together, leaving $Mon.himher in a veritable pool of your mixed fluids. <<elseif $WORLD.datapasser is "human vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ "You're mine," you tell $Mon.himher simply, standing over $Mon.himher as $Mon.heshe helplessly tries to crawl away from you on all fours. You grab $Mon.himher by an ankle and yank hard, dragging $Mon.himher several feet against the ground until she stops resisting. <<print $Mon.hisher.toUpperFirst()>> shuddering makes it plain that $Mon.heshe knows what's about to happen, but is powerless to stop it. You lean downwards onto $Mon.hisher back until $Mon.hisher head hits the ground, then carelessly toss aside the flowery length of $Mon.hisher dress to reveal a body now exposed for your pleasure alone. You slide your hands underneath to grab $Mon.hisher breasts, pinching nipples between thumbs and fingers while simultanously pushing $Mon.hisher legs apart with your knees to reveal what you're really after. By now the girl is moaning in anticipation, and the moment your cock reaches $Mon.hisher sex you thrust into $Mon.himher with all the force within you, feeling $Mon.hisher delicate pussy walls tightly clench around you like a vice grip while the rest of $Mon.himher writhes beneath you as if begging for more of what only moments ago was the unwanted invasion of a conqueror. <<print $Mon.heshe.toUpperFirst()>> cums before you do, and when you at last do fill $Mon.himher to the brim with your seed, $Mon.heshe cums again, then passes out. <<elseif $WORLD.datapasser is "human motorboat">>\ You are the victor, and you feel yourself growing aroused as your opponent lies helplessly beneath you on the battlefield. <<print $Mon.himher.toUpperFirst()>> breasts are magnificently large. So big that they almost seem to be a part of $Mon.himher torso rather than just another appendage. You reach down and fondle them, marveling at their size, your hands gliding over their soft skin with ease. Your lips reach hers with a passionate kiss while you cup and squeeze her breasts with an insistence that grows stronger by the second. Wrapping one arm aroud her back, she leans her head back as you squish at first your nose, and then your cheeks between her gigantic, ponderous mounds of bouncy and bountiful pleasure and joy. It takes a surprisingly long time before your nose at last reaches $Mon.himher chest, which you gleefully flick with your tongue while you shake and wiggle your head back and forth, kneading and pressing $Mon.hisher breasts into your face with both hands. Satisfied with that, you pull back only to see a silent longing in $Mon.hisher eyes, a longing fated to remain unsatisfied as you give $Mon.himher one last lustful look, then turn to continue on your journey. <<else>>\ Error in fox sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<!-- slime -->\ <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr> \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "slime custom hole">>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven +1>>\ Knowing that slimes are amoeboid blobs that only assume human form to trick humans, you grab the slime by a random section of what only looks like a torso, pull it out like a big stream of stretchy taffy and jam it onto you dick. The slime, equally happy to dispense with the pretense, happily dissolves the entierty of its humanoid form and gathers itself as a giant, bulbous blob around your pelvis. Content to let it do the work, you lay back as the creatures goes to work on your cock in a way that feels kind of like a back-and-forth stream of very gloopy liquid flowing on and off of you. It's sort of like fucking a bowl of jello, but a bit more like being sucked off by a pool full of jello. Jello that doesn't crumble into distinct gelantinous chunks, but instead slides over your member with smooth determination and precision. Not in any hurry, you relax into the jello-like blowjob for several delightful minutes until you come to a leisurely climax. And it is a blowjob, you decide, given that the slime is planning to eat your semen. <<if _pcboobs > 0>>\ <<set $PC[$CC][$PCsexACTS].milked to $PC[$CC][$PCsexACTS].milked $Mon.level>>\ Not content with just that, however, the slime slides a pair of tendrils up your chest and begins kneading your breasts with its soft jello-likeness. It feels sort of like the inside of a pair of breasts massaging your own, and the extra sensation brings you to shoot your load into its body even as it begins sucking the milk from your chest. You give into the sensation and doze off into a pleasant post-coital nap while the slime drinks you dry. You wake up some time later feeling very satisfied, but the slime is gone. <<else>>\ When at last you climax, you watch with mild interest as a streak of white fluid remains visible through the translucency of the slime's body, spreading out and slowly disspiating inside it. Not content with what its' been given, the slime continues to suck on your spent cock with a rhythmic slurping that keeps you on the edge for several more minutes before you finally come back down. <<endif>>\ <<elseif $WORLD.datapasser is "slime vaginal/anal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + 1>>\ Caring not one tiny bit for the peculiarities of slime anatomy, you walk over to the fallen slime with your cock out. Grabbing it by the hips and pushing its head to the ground, you then plunge your cock into one of its wet holes, you don't pay much attention to which. The sensation around your cock is cool and moist, and a wet //shlop shlop shlop// echoes against the stone walls around you with every thrust. The slime seems unbothered by this, and in fact acts with complete cooperation. You are feeding it, after all. Glancing down, you notice that in fact the slime only has a single hole between its legs, but as you gaze at the point of penetration, the slime seems to sense your attention and a second hole forms before your eyes as if to invite you. Shrugging, you pull out from the first hole and thrust into the other. You think this is supposed to be an ass hole, truth be told, you can't tell the difference. Curious now, you alternate between holes with each thrust and image it's two different girls you're fucking. You cum immediately. After pulling out, you can see your long strand of semen through the slime's translucent skin, which then diffuses outwards and dissolves into nothingness. Looking down at your dick, you notice that it's completely clean and dry, every last drop of liquid absorbed into the slime's digestive track. Glad that slime's don't eat flesh, you wave goodbye as it slinks off into the distance. <<elseif $WORLD.datapasser is "slime female variety pack">>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + ($Mon.level * 3)>>\ Given slime phsyiology, you're not entirely sure how to approach this. In their nature state slimes are just amoeba-like blobs that feed on sexual fluids, and they form humanoid-looking bodies purely to that end. There isn't really such a thing as a male or female slime, or masculine or feminine slime body parts. Any slime can shape itself however it wants. Throwing caution to the wind, you disrobe completely and lay down near it. \ <<if $Mon.penis is true>>\ The slime immediately responds by growing out its dick like a growing tentacle thet reaches between your legs. But when it gets there, the tip of its dick is no longer mushrom, shaped, but instead it's become a tongue, which licks you with its slippery surface. Relaxing into the pleasantnes of the situation, you're surprised when you feel a sharp bit of pain high up on your inner thigh mere inches from your pussy. Looking down you see that a second tentacle has sprouted from the first and it's visibly injecting you with something. An aphrodisiac, you realize, as the pleasure from the slime-tongue at your pussy increases ten-fold and you instantly climax and gush girlcum for the slime to absorb. <<else>>\ The slime immediately responds by extended its tongue like a several footlong tentacle and slides so effortlessly into your pussy that it's like water pouring into a hole. Grabbing at the tenatcle betwen your legs, you feel the fluids rushing through it, growing to try to fill your entire vaginal cavity through the inch-thick bit in your hand. Your efforts to pull it out utterly fail, and a sharp sensation deep inside you followed by an overwhleming sense of comfort and pleasure tells you that the slime has injected an aphrodisiac through the fleshy wall of your vagina perhaps an inch away from your cervix. <<endif>>\ <<FemaleVirginity $Mon.virgin>>\ Not caring anymore that the slime is feeding on you, you give yourself to the pleasure as several more slime-tentacles sprout from its body to explore your own. With one now pouring itself in and out of your pussy, another in your ass, \ <<if _pcboobs > 0>>\ <<set $PC[$CC][$PCsexACTS].milked to $PC[$CC][$PCsexACTS].milked + $Mon.level>>\ and a third now encircling your breasts to pump and suction milk from your nipples. \ <<else>>\ and a third freely roaming across your chest and torso. \ <<endif>>\ With an alternating piston-like action of thrusts in your ass and pussy, at all times there's both something entering into you as well as sliding out. When you cry out in extasy, a //fourth// tentacle emerges and quickly slides down your throat. Absentmidledly you bite down on it, but it effortlessly flows around and between your teeth to siphon food from your stomach. But it's not all take, as occasional pulses of rigidity and fluid make it clear that the slime is also ejaculating its seed into all three of your orifices, prompting yet more climaxes from you as shudder again and again in extasy until at last, you fall unconscious from the pleasure. <<if _pcboobs > 0>>\ When you awake, the slime is gone, but your belly is visibly distended and your nipples feel strangely sensitive. <<else>>\ When you awake, the slime is gone, but your belly is visibly distended. <<endif>>\ <<PregnancyTest "slime">> @@color:Yellow;Dev note@@: despite the message to the contrary, slime pregnancy is not actually implemented <<if 0 is "implemented">>\ slime overrides/eat prior pregnancy <<endif>>\ <<else>>\ Error in slime sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<widget "Consume">>\ <<if $DebugMode is true>>\ Before: <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ _i) <<print setup.Stringify($PC[$CC][$PCbp][_i])>><br>\ <</for>>\ <hr>\ <<endif>>\ \ <<set _EatTarget to $args[0]>>\ <<set _DoTF to true>>\ \ <<if _EatTarget > -1>>\ \ <!-- get list of body parts player has -->\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PCparts to []>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _PCparts[_i] to $PC[$CC][$PCbp][_i].type>>\ <</for>>\ \ <!-- get list of possible transform body parts from monster type -->\ <<DescribeItem $PC[$CC][$PCinven][_EatTarget]>>\ <<set _SkipSex to false>>\ <<if $ItemPoke.fullname.includes("demon")>>\ <<set _Morph to "demon">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("tentacle")>>\ <<set _Morph to "tentacle">>\ <<set _TFList to [$BPtentacle, $BPtentacle, $BPtentacle, $BPtentacle, $BPpenis, $BPpenis, $BPpenis, $BPpenis]>>\ <<set _SkipSex to true>>\ <<elseif $ItemPoke.fullname.includes("centaur")>>\ <<set _Morph to "centaur">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("hellhound")>>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "hellhound">>\ <<elseif $ItemPoke.fullname.includes("drider")>>\ <<set _Morph to "drider">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPlegs, $BPlegsl]>>\ <<elseif $ItemPoke.fullname.includes("spider")>>\ <<set _Morph to "spider">>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<set _Morph to "slime">>\ <<set _TFList to [$BPchest]>>\ <<elseif $ItemPoke.fullname.includes("horse")>>\ <<set _Morph to "horse">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("wolf")>>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "wolf">>\ <<elseif $ItemPoke.fullname.includes("goblin")>>\ <<set _Morph to "goblin">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("succubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("incubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis]>>\ <<elseif $ItemPoke.fullname.includes("omnibus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("cow")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("minotaur")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("imp")>>\ <<set _Morph to "imp">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("human")>>\ <<set _Morph to "human">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("bunny")>>\ <<set _Morph to "bunny">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("fox")>>\ <<set _Morph to "fox">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("cat")>>\ <<set _Morph to "cat">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.foodval > 0>>\ <<set _DoTF to false>>\ <<set $TFFoodOutput to "You feel less hungry">>\ <<set $WORLD.datapasser to "consume item">>\ <<else>>\ <<set _DoTF to false>>\ <<set $TFFoodOutput to "Error: unrecognized consumable.">>\ <<endif>>\ \ <<set _EatMe to $ItemPoke.foodval>>\ <<if _EatMe > 0>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] - _EatMe>>\ <<if $PC[$CC][$PChunger] < 0>>\ <<set $PC[$CC][$PChunger] to 0>>\ <<endif>>\ <<endif>>\ <<ShowHunger>>\ \ <<if _DoTF is true>>\ <<set $TFFoodOutput to "Food based transformations temporarily disabled">>\ <<endif>>\ <!-- if _DoTF is true -->\ <<if 1 is 0>>\ <!-- generate an array to mark whether body parts in each list have been processed yet -->\ <<set _PlayerHas to []>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<set _PlayerHas[_i] to []>>\ <<set _PlayerHas[_i][0] to _PCparts[_i]>>\ <<set _PlayerHas[_i][1] to -1>>\ <</for>>\ <<set _MonsterHas to []>>\ <<for _i to 0; _i < _TFList.length; _i++>>\ <<set _MonsterHas[_i] to []>>\ <<set _MonsterHas[_i][0] to _TFList[_i]>>\ <<set _MonsterHas[_i][1] to -1>>\ <</for>>\ \ <<set _a to _PlayerHas>>\ <<set _b to _MonsterHas>>\ <<set _c to []>>\ \ <<for _i to 0; _i < _a.length; _i++>>\ <<if setup.FindInANotB(_a[_i][0], _b) is "yes">>\ <<set _a[_i][1] to "used">>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _a[_i][0]>>\ <<set _c[_NextC][1] to "remove">>\ <<endif>>\ <</for>>\ <<for _i to 0; _i < _a.length; _i++>>\ <<if _a[_i][1] is "used">>\ <<else>>\ <<set _Both to setup.FindInBoth(_a[_i][0], _b)>>\ <<if _Both > -1>>\ <<set _a[_i][1] to "used">>\ <<set _b[_Both][1] to "used">>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _a[_i][0]>>\ <<set _c[_NextC][1] to "convert">>\ <<endif>>\ <<endif>>\ <</for>>\ <<for _i to 0; _i < _b.length; _i++>>\ <<if _b[_i][1] is "used">>\ <<else>>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _b[_i][0]>>\ <<set _c[_NextC][1] to "add">>\ <<endif>>\ <</for>>\ \ <!-- add name data -->\ <<for _i to 0; _i < _c.length; _i++>>\ <<set _c[_i][2] to setup.bpptrtoname(_c[_i][0], "formal")>>\ <</for>>\ \ <<if $DebugMode is true>>\ @@color:Gold;Possible transformations:@@ <<for _i to 0; _i < _c.length; _i++>>\ _i) <<print _c[_i]>> <</for>>\ <<endif>>\ \ <!-- correct for consume type -->\ <<set $SkipSex to false>>\ <<if $SkipSex is false>>\ <<if $ItemPoke.fullname.includes("meat")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if (_c[_i][2] is "Breasts")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[_i][2] is "Pussy")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[_i][2] is "Penis")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("milk")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if _c[_i][2] is "Penis">>\ <<set _c[_i][1] to "(Override) remove">>\ <<elseif _c[_i][2] is "Breasts">>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif _c[_i][2] is "Pussy">>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("semen")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if _c[_i][2] is "Breasts">>\ <<set _c[_i][1] to "(Override) remove">>\ <<elseif _c[_i][2] is "Pussy">>\ <<set _c[_i][1] to "(Override) remove">>\ <<elseif _c[_i][2] is "Penis">>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if (_c[_i][1] is "remove")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<else>>\ <<set $TFFoodOutput to "@@color:Red;Error: This isn't meat, milk, or semen. What is this?@@">>\ <<endif>>\ <<endif>>\ \ \ <<if _c.length > 0>>\ <<set _PickATF to random(0, _c.length)>>\ <<set _SelectedTF to _c[_PickATF]>>\ <<set _TheBP to _SelectedTF[0]>>\ <<set _TheAction to _SelectedTF[1]>>\ <<set _TheEnglish to _SelectedTF[2]>>\ <<if $DebugMode is true>>\ @@color:Gold;Transformation output:@@ <hr>\ @@color:Yellow;Debug section 1:@@ Pick: _PickATF c zero: _c[0] c: _c selectedtf: _SelectedTF thebp: _TheBP theaction: _TheAction theenglish: _TheEnglish <hr>\ @@color:Yellow;Debug section 2:@@ <<endif>>\ <<if _TheAction.includes("remove")>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, _TheBP)>> <<if $DebugMode is true>>\ bpremoved: _BPRemoved keys of: <<print Object.keys(_BPRemoved)>>\ <<endif>>\ <<set _MorphHack to setup.bpptrtoname(_TheBP, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _BPRemoved.morph)>>\ <<set $TFFoodOutput to "You have lost your " + _MorphHack>>\ <<elseif _TheAction.includes("convert")>>\ <<set _GetBP to setup.FetchBodyPart($CC, _TheBP)>>\ <<if $DebugMode is true>>\ GetBP: _GetBP TheBP: _TheBP <<endif>>\ <<set _HackA to setup.TFTextHack($PC[$CC][$PCbp][_GetBP].morph, _TheBP)>>\ <<set _HackB to setup.TFTextHack(_Morph, _TheBP)>>\ <<if $PC[$CC][$PCbp][_GetBP].morph is _Morph>>\ You feel more <<print _Morph>>-like, but observe no outward effects. <<else>>\ <<set $TFFoodOutput to "Your " + _HackA[0] + _HackB[1]>>\ <<set $PC[$CC][$PCbp][_GetBP].morph to _Morph>>\ <<TFAdderHelper _GetBP>>\ <<endif>>\ <<elseif _TheAction.includes("add")>>\ <<set _BPAdded to setup.AddBodyPart($CC, _TheBP)>>\ <<if $DebugMode is true>>\ bpadded: <<print setup.Stringify(_BPAdded)>> keys of: <<print Object.keys(_BPAdded)>> <<endif>>\ <<set $PC[$CC][$PCbp][_BPAdded].morph to _Morph>>\ <<set _MorphHack to setup.bpptrtoname(_TheBP, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ <<set $TFFoodOutput to "You have gained a " + _MorphHack>>\ <<TFAdderHelper _BPAdded>>\ <<else>>\ <br>\ Error in selected TF: _SelectedTF 1: _SelectedTF[0], _TheBP 2: _SelectedTF[1], _TheAction 3: _SelectedTF[2], _TheEnglish <<endif>>\ <<else>>\ <<set $TFFoodOutput to "Debug: No possible transformations in c">>\ <<endif>>\ <<endif>>\ <<else>>\ <<set $TFFoodOutput to "@@color:Red;Error in Consume: I don't know what inv item" + _EatTarget_ + " points to@@">>\ <<endif>>\ \ <<UpdateMorphs>>\ \ <<if $DebugMode is true>>\ <hr>\ After: <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ _i) <<print setup.Stringify($PC[$CC][$PCbp][_i])>><br>\ <</for>>\ <hr>\ <<endif>>\ <</widget>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true)>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven + 1>>\ <<if _pcpenis > 0>>\ Collapsing to your knees in defeat, the horse boldly trots over to you with a snort and stands over you so that your face is just barely level with his massive cock. When you raise your hands to object, the horse rolls his eyes and leans down to nose you over onto your belly. "Wait, wait, wait!" you shout, thinking that sucking on a two-foot-long horse's cock is probably preferable to having your insides torn to pieces by that same cock. <<else>>\ Collapsing to your knees in defeat, the horse boldly trots over to you with a snort and stands over you so that your face is just barely level with his massive cock. You understand imediately what he intends, but the sheer size of it is daunting. You cannot possibly fit something that massive in your mouth. <<endif>>\ Snorting impatientaly, he thrusts forward and stabs you in the face with it, knocking you backwards onto your hands. Curling his neck around, he gazes at you with one eye with a look that says if you don't suck him off, he's going to mount you like he would a mare. Terrified at what that would do to you, you swallow nervously and hesitantly reach out to take his dick in both hands as if holding a firehose. Licking its tip while the rippling muscles roll in your hands, you open your mouth as wide asi t will go and manage to get it at most 2-3 inches insides you. "It's just too big," you swallow nervously, licking your tongue across the tip while sliding your hands on and down its tremendous length. Thankfully the stallion seems content with this, and you you muster up as much enthusiasm as you can while doing your best to give him an experience the mares in his life cannot. It takes only a few short minutes before it twitches, and your entire face and chest are blasted with a gallon of horse semen. Pausing only to briefly lick the top of your head in appreciation, the horse then gallops off, leaving you in a pool of his sticky spunk. <<elseif $Mon.pussy is true>> The mare gives you what are very obviously bedroom eyes as you fall to your knees in defeat. Leaning down, she affectionately nibbles and licks at the top of your head. Thinking this might not be so bad, you reach up to give her affactionate pats on the side of her neck. That's when she pushes down on you with her muzzle, forcing you to the ground and planting her ass on your face. She's not rough about it, not exactly. But when a 2000 pound horse decides to sit on you, it's not exactly gentle either. Her already-flowing pussy juices make it clear what she intends, and you do your best to accomodate. Licking up and down her several inch long slit, you find her taste sweet and pleasant, making the experience much easier for both of you. Before long you have her nickering and whinnying in delight as you do your best to service her. It's a bit of a streth, but with a little effort you do manage to reach your tongue to her clitoris at the far bottom end of her length, and by focusing on it it you're able to bring the her to a deligthful climax. After she lets you up, she nuzzles you affectionately and you watch as she trots away. Then you collapse from exhaustion. <<else>>\ defeat by horse: Unrecognzied sex part combination <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","horse"]>> <<AdvanceTime 480>> <</link>>\ </span> <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<set _Horse to "mare">>\ <<if $Mon.sex is "male">>\ <<set _Horse to "stallion">>\ <<endif>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "horse sex">>\ <<if $Mon.pussy is true>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven + 1>>\ Wasting no time, you quickly approach the defeated mare with your cock quickly hardending. At first she seems too exhaused to struggle, but as you roughly squeeze her heaily muscled flanks, her soft whinny of pleasure clues you in that perhaps she's not too exhausted to resist, but simply doesn't want to. Caressing your hands over every inch of her posterir within your reach, you eagerly place for cock at her moist entrance. Before you can even push inside, her marehood //winks// at you, impatiently suctioning your cock into its eager depths. Gasping at the sensation, you barely need move at all as her powerfully muscled vagina massages your cock in and out. Marvelling at her...or perhaps, marevelling? ...at her dextrous orifice, you breath deeply in and out while moaning in perfect rythem with her throaty panting. Your movements together with hers are so fluid, so purposeful, that you feel as if the two of you had been practicing together for years. She climaxes first, and she turns her head around to look you straight in the eye when you climax toomere seconds later. Both pleased by what you have shared, you stay inside her for a few minute longer, gently stroking and patting her fur while she affectionately nibbles and licks at your hair. <<else>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven + 1>>\ Watching as the stallion collapses to the ground, you quickly approach with a rapdily hardening cock. Taking in the way the sweat in his coat glistens beautifully in the sunlight, you give him an affectionate pat on the flank as you climb around behind him. Laying on his side like he is, you grab his upward-facing flank and place your proud cock at his generous ass hole. Large as it is, you slide effortlessly inside and begin plunging away at him. The stallion contorts his head around to watch, and when he raises an eyebrow at yoy in askance, you simply wave and smile. Snorting, he lays his head back down and lets you finish undisturbed. <<endif>>\ <<elseif $WORLD.datapasser is "horse licks you">>\ <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<if $Mon.sex is "male">>\ Watching the stallion collapse to $Mon.hisher belly, you find yourself taken with his hard muscles and musky scent. Laying down in front of him, you spread your legs and gesture between them. <<else>>\ Watching the mare collapse to her belly, you take in her smooth curves and luscious coat with your eyes. Laying down in front of her, you spread your legs and gesture between them. <<endif>>\ Perhaps curious about your scent, $Mon.heshe leans foward and takes a sniff. Apparently liking what $Mon.heshe smells, $Mon.heshe reaches out with $Mon.hisher tongue and slathers you from thigh to thigh with a single lick. As large as a hand, $Mon.hisher tongue isn't exactly a subtle tool, but what it lacks in precision it makes up for with a muscled tenacity that quickly has you gripping the grass with clenched fists. <<print $Mon.heshe.toUpperFirst()>> quickly brings you to climax, which simply motivates $Mon.himher to eagerly lap up the delicious juices now flowing freely from you. Your eyes roll back up your head with pleasure, and the relentless _Horse manages to bring you <<print either("two","three","four")>> more orgasms before at last you both come to rest. <<elseif $WORLD.datapasser is "horse boobplay">>\ The defeated mare collapses at first to her foreknees, and then keels over onto her side. Curious more than aything, you approach and delicately run your fingers up and down her belly. Audibly pantting, she hardly reacts but to continue breathing as you slowly but deliberately slide your hands further towards her hind quarter. When you reach her mare tits, her breathing slows, and she turns her massive head all the way round to look at what you're doing. Undeterred, you take a horse boob in each hand and begin decliately squeezing, alternating with one hand then the other. She snorts at this, but when your fingers reach her nipples and begin dancing in deliate little circles aroudn them, her snorts turn to gasps. Sitting down on your knees for better access, it occurs to you that her pussy is...well, it's fully a foot away and around the corner so to speak, but your sheer faschination with crotch-boobs keeps you occupied with what you have. Eventually, your curiosity staisfied, you give the perplexed mare an affectionate pat on the head and continue on your way. <<else>>\ Error in horse sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true)>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ implement male spider on female character <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ implement male spider on male character <<endif>>\ <<else>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ implement female spider on female character <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ implement female spider on male character <<endif>>\ <<endif>>\ \ <span id="KeypSpace">\ <<link "space) Pass out in sheer horror" "Church">> <<set $WORLD.datapasser to ["sex","spider"]>> <<AdvanceTime 480>> <</link>>\ </span><<if (_mhasdick is false) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].pussylickreceived to $PC[$CC][$PCsexACTS].pussylickreceived +1>>\ <<elseif (_mhasdick is true) and (_phasdick is false)>> <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + random(2,6)>>\ <<elseif (_mhasdick is false) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven +1>>\ <<elseif (_mhasdick is true) and (_phasdick is true)>> <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven +1>>\ <<endif>>\ <hr> <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> $PC[$CC][$PCsexACTS].bjgiven $PC[$CC][$PCsexACTS].bjreceived $PC[$CC][$PCsexACTS].pussylickreceived $PC[$CC][$PCsexACTS].vaginalreceived $PC[$CC][$PCsexACTS].analreceived $PC[$CC][$PCsexACTS].semengiven $PC[$CC][$PCsexACTS].semenreceived $PC[$CC][$PCsexACTS].milked <<widget "DescribeItem">>\ <<silently>>\ <<set _di to $args[0]>>\ \ <<set _iname to "error?">>\ <<set _equippable to false>>\ <<set _mindam to 0>>\ <<set _maxdam to 0>>\ <<set _attacktype to "">>\ <<set _armor to 0>>\ <<set _quantity to 0>>\ <<set _tooleffect to 0>>\ <<set _material to "">>\ <<set _hands to 0>>\ <<set _slot to -1>>\ <<set _flirt to 0>>\ <<set _restrict to "none">> <<set _stackable to false>> <<set _price to 0>> <<set _foodval to 0>> <<set _bang to false>> <<set _forcename to "">> <!-- slots 1 head/heml 2 neck/amulet 3 chest 4 cloak 5 arms/equipped 6 pairs of gloves 7 sets of fingers 8 waist 9 pairs of legs 10 pairs of feet --> \ <!-- tool effects 1=rope 2=cut meat/string 3=cut wood 4=lockpick 5=bash lock 6=available 7=dildo 8= holy symbol 9=liquid container 10=eat 11=drink 12=spellbook 13=cosmetic read text -->\ <<if _di[0] is 0>>\ <<set _iname to "none">>\ <<elseif _di[0] is 100>>\ <<set _iname to "coil~ of rope">>\ <<set _tooleffect to 1>>\ <<set _stackable to true>> <<set _price to 10>> <<elseif _di[0] is 101>>\ <<set _iname to "small hammer">>\ <<set _tooleffect to 5>>\ <<set _price to 10>> <<elseif _di[0] is 102>>\ <<set _iname to "chunk~ of ! meat">>\ <<set _bang to true>> <<set _tooleffect to 10>>\ <<set _stackable to true>> <<set _price to 1>> <<set _foodval to 300>>\ <<elseif _di[0] is 103>>\ <<set _iname to "dildo">>\ <<set _tooleffect to 7>>\ <<set _price to 20>> <<elseif _di[0] is 104>>\ <<set _iname to "holy symbol">>\ <<set _tooleffect to 8>>\ <<elseif _di[0] is 105>>\ <<set _iname to "wooden log~">>\ <<set _stackable to true>> <<set _price to 5>> <<elseif _di[0] is 106>>\ <<set _iname to "apple~">>\ <<set _stackable to true>>\ <<set _price to 5>>\ <<set _tooleffect to 10>>\ <<set _foodval to 100>>\ <<elseif _di[0] is 107>>\ <<set _iname to "roll~ of cheese">>\ <<set _stackable to true>>\ <<set _tooleffect to 10>>\ <<set _price to 25>>\ <<set _foodval to 250>>\ <<elseif _di[0] is 108>>\ <<set _iname to "empty bottle~">>\ <<set _price to 5>>\ <<set _tooleffect to 1>>\ <<set _stackable to true>> <<elseif _di[0] is 109>>\ <<set _iname to "bottle~ of !">>\ <<set _bang to true>> <<set _foodval to 1>>\ <<set _price to 10>>\ <<set _tooleffect to 11>>\ <<set _stackable to true>> <<elseif _di[0] is 110>>\ <<set _iname to "bread roll~">>\ <<set _foodval to 150>>\ <<set _tooleffect to 10>>\ <<set _price to 10>>\ <<set _stackable to true>>\ <<elseif _di[0] is 111>>\ <<set _iname to "spellbook">>\ <<set _tooleffect to 12>>\ <<set _price to 100>>\ <<elseif _di[0] is 112>>\ <<set _iname to "book">>\ <<set _tooleffect to 13>>\ <<set _price to 50>>\ <<elseif _di[0] is 113>>\ <<set _iname to "butcher's knife">>\ <<set _tooleffect to 2>>\ <<set _price to 5>> \ \ <<elseif _di[0] is 200>>\ <<set _iname to "dagger">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _tooleffect to 1>>\ <<set _attacktype to "stab">>\ <<set _hands to 1>>\ <<set _tooleffect to 2>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 201>>\ <<set _iname to "club">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "blunt">> <<set _hands to 1>>\ <<set _price to 30>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 202>>\ <<set _iname to "hatchet">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _tooleffect to 3>>\ <<set _attacktype to "cleave">>\ <<set _hands to 1>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 203>>\ <<set _iname to "pitchfork">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "stab">>\ <<set _hands to 2>>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 204>>\ <<set _iname to "staff">>\ <<set _mindam to 1>>\ <<set _maxdam to 4>>\ <<set _attacktype to "blunt">> <<set _hands to 2>>\ <<set _price to 25>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 205>>\ <<set _iname to "sword">>\ <<set _mindam to 2>>\ <<set _maxdam to 10>>\ <<set _attacktype to "slash">>\ <<set _hands to 1>>\ <<set _price to 125>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 206>>\ <<set _iname to "mace">>\ <<set _mindam to 1>>\ <<set _maxdam to 8>>\ <<set _tooleffect to 5>>\ <<set _attacktype to "blunt">>\ <<set _hands to 1>>\ <<set _price to 100>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 207>>\ <<set _iname to "axe">>\ <<set _mindam to 4>>\ <<set _maxdam to 8>>\ <<set _tooleffect to 3>>\ <<set _attacktype to "cleave">>\ <<set _price to 25>>\ <<set _hands to 2>>\ <<set _price to 125>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 208>>\ <<set _iname to "small shield">>\ <<set _armor to 10>>\ <<set _attacktype to "block">>\ <<set _hands to 1>>\ <<set _price to 50>>\ <<set _slot to $BPwield>>\ <<elseif _di[0] is 209>>\ <<set _iname to "cooking knife">>\ <<set _mindam to 1>>\ <<set _maxdam to 2>>\ <<set _tooleffect to 1>>\ <<set _attacktype to "stab">>\ <<set _hands to 1>>\ <<set _price to 10>>\ <<set _tooleffect to 2>>\ <<set _slot to $BPwield>>\ \ \ <<elseif _di[0] is 300>>\ <<set _iname to "plain shirt">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _flirt to 5>>\ <<set _price to 5>> <<elseif _di[0] is 301>>\ <<set _iname to "blouse">>\ <<set _armor to 1>>\ <<set _slot to $BPchest>>\ <<set _flirt to 5>>\ <<set _price to 7>> <<elseif _di[0] is 302>>\ <<set _iname to "belt">>\ <<set _armor to 1>>\ <<set _slot to $BPwaist>>\ <<set _flirt to 1>>\ <<set _price to 4>> <<elseif _di[0] is 303>>\ <<set _iname to "pants">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 10>> <<elseif _di[0] is 304>>\ <<set _iname to "skirt">>\ <<set _armor to 1>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 12>> <<elseif _di[0] is 305>>\ <<set _iname to "shoes">>\ <<set _armor to 1>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 3>> <<elseif _di[0] is 306>>\ <<set _iname to "boots">>\ <<set _armor to 2>>\ <<set _slot to $BPfeet>>\ <<set _restrict to "horse">>\ <<set _price to 12>> <<set _price to 12>> <<elseif _di[0] is 350>>\ <<set _iname to "chainmail shirt">>\ <<set _armor to 10>>\ <<set _slot to $BPchest>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 351>>\ <<set _iname to "chainmail chemise">>\ <<set _armor to 15>>\ <<set _slot to $BPchest>>\ <<set _flirt to 1>>\ <<set _price to 150>> <<set _price to 150>> <<elseif _di[0] is 352>>\ <<set _iname to "chainmail hauberk">>\ <<set _armor to 20>>\ <<set _slot to $BPchest>>\ <<set _price to 200>> <<set _price to 200>> <<elseif _di[0] is 353>>\ <<set _iname to "chainmail leggings">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 354>>\ <<set _iname to "chainmail coif">>\ <<set _armor to 10>>\ <<set _slot to $BPhead>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 355>>\ <<set _iname to "chainmail gloves">>\ <<set _armor to 5>>\ <<set _slot to $BPhands>>\ <<set _price to 70>> <<set _price to 70>> <<elseif _di[0] is 356>>\ <<set _iname to "chainmail bra">>\ <<set _armor to 2>>\ <<set _slot to $BPboobs>>\ <<set _flirt to 5>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 357>>\ <<set _iname to "chainmail skirt">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 1>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 358>>\ <<set _iname to "chainmail miniskirt">>\ <<set _armor to 10>>\ <<set _slot to $BPlegs>>\ <<set _flirt to 2>>\ <<set _price to 100>> <<set _price to 100>> <<elseif _di[0] is 359>>\ <<set _iname to "chainmail gorget">>\ <<set _armor to 2>>\ <<set _slot to $BPneck>>\ <<set _price to 40>> <<set _price to 40>> <<elseif _di[0] is 360>>\ <<set _iname to "chainmail tail armor">>\ <<set _armor to 5>>\ <<set _slot to $BPtail>>\ <<set _price to 50>> <<set _price to 50>> <<elseif _di[0] is 361>>\ <<set _iname to "chainmail wing armor">>\ <<set _armor to 10>>\ <<set _slot to $BPwings>>\ <<set _price to 200>> <<set _price to 200>> <<endif>>\ \ <<if _di[1] is 100>>\ <<elseif _di[1] is 101>>\ <<set _material to "wooden">>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 5>>\ <<endif>>\ <<elseif _di[1] is 102>>\ <<set _material to "copper">>\ <<set _price to Math.trunc(_price * .8)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam -1>>\ <<set _maxdam to _maxdam -1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor - 2>>\ <<endif>>\ <<elseif _di[1] is 103>>\ <<set _material to "brass">>\ <<elseif _di[1] is 104>>\ <<set _material to "iron">>\ <<set _price to Math.trunc(_price * 1.2)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +1>>\ <<set _maxdam to _maxdam +1>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 2>>\ <<endif>>\ <<elseif _di[1] is 105>>\ <<set _material to "steel">>\ <<set _price to Math.trunc(_price * 1.5)>>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +2>>\ <<set _maxdam to _maxdam +5>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 5>>\ <<endif>>\ <<elseif _di[1] is 106>>\ <<set _price to Math.trunc(_price * 2)>>\ <<set _material to "mithril">>\ <<if _maxdam > 0>>\ <<set _mindam to _mindam +5>>\ <<set _maxdam to _maxdam +10>>\ <<elseif _armor > 0>>\ <<set _armor to _armor + 10>>\ <<endif>>\ <<elseif _di[1] is 150>>\ <<set _material to "cloth">>\ <<elseif _di[1] is 151>>\ <<set _material to "leather">>\ <<set _flirt to _flirt +1>>\ <<elseif _di[1] is 152>>\ <<set _material to "silk">>\ <<set _price to _price * 3>>\ <<endif>>\ \ <<if _price < 0>>\ <<set _price to 0>>\ <<endif>>\ \ <<if _mindam < 0>>\ <<set _mindam to 0>>\ <<endif>>\ <<if _maxdam < 0>>\ <<set _maxdam to 0>>\ <<endif>>\ <<if _armor < 0>>\ <<set _armor to 0>>\ <<endif>>\ \ \ \ <<set _fullname to _iname>>\ \ \ \ <<if _stackable is true>>\ <<set _quantity to _di[2]>> <<set _fullname to setup.pluralize(_fullname, _quantity)>>\ <<else>>\ <!-- can we make enchantments out of negative numbers? --> <<endif>>\ <<if _bang is true>>\ <<set _rep to "error">>\ <<if _di[3] is 100>>\ <<set _rep to "human">>\ <<elseif _di[3] is 101>>\ <<set _rep to "dog">>\ <<elseif _di[3] is 102>>\ <<set _rep to "cat">>\ <<elseif _di[3] is 103>>\ <<set _rep to "wolf">>\ <<elseif _di[3] is 104>>\ <<set _rep to "spider">>\ <<elseif _di[3] is 105>>\ <<set _rep to "horse">>\ <<elseif _di[3] is 106>>\ <<set _rep to "goblin">>\ <<elseif _di[3] is 107>>\ <<set _rep to "demon">>\ <<elseif _di[3] is 108>>\ <<set _rep to "succubus">>\ <<elseif _di[3] is 109>>\ <<set _rep to "incubus">>\ <<elseif _di[3] is 110>>\ <<set _rep to "fox">>\ <<elseif _di[3] is 111>>\ <<set _rep to "rabbit">>\ <<elseif _di[3] is 112>>\ <<set _rep to "cow">>\ <<elseif _di[3] is 113>>\ <<set _rep to "minotaur">>\ <<elseif _di[3] is 114>>\ <<set _rep to "imp">>\ <<elseif _di[3] is 115>>\ <<set _rep to "hellhound">>\ <<elseif _di[3] is 116>>\ <<set _rep to "unidentifiable">>\ <<elseif _di[3] is 200>>\ <<set _rep to "human semen">>\ <<elseif _di[3] is 201>>\ <<set _rep to "dog semen">>\ <<elseif _di[3] is 202>>\ <<set _rep to "cat semen">>\ <<elseif _di[3] is 203>>\ <<set _rep to "wolf semen">>\ <<elseif _di[3] is 204>>\ <<set _rep to "spider semen">>\ <<elseif _di[3] is 205>>\ <<set _rep to "horse semen">>\ <<elseif _di[3] is 206>>\ <<set _rep to "goblin semen">>\ <<elseif _di[3] is 207>>\ <<set _rep to "demon semen">>\ <<elseif _di[3] is 208>>\ <<set _rep to "this should never appear">>\ <<elseif _di[3] is 209>>\ <<set _rep to "incubus semen">>\ <<elseif _di[3] is 210>>\ <<set _rep to "fox semen">>\ <<elseif _di[3] is 211>>\ <<set _rep to "rabbit semen">>\ <<elseif _di[3] is 212>>\ <<set _rep to "this should never appear">>\ <<elseif _di[3] is 213>>\ <<set _rep to "minotaur semen">>\ <<elseif _di[3] is 214>>\ <<set _rep to "imp semen">>\ <<elseif _di[3] is 215>>\ <<set _rep to "hellhound semen">>\ <<elseif _di[3] is 216>>\ <<set _rep to "unidentified semen">>\ <<elseif _di[3] is 300>>\ <<set _rep to "human breast milk">>\ <<elseif _di[3] is 301>>\ <<set _rep to "dog milk">>\ <<elseif _di[3] is 302>>\ <<set _rep to "cat milk">>\ <<elseif _di[3] is 303>>\ <<set _rep to "wolf milk">>\ <<elseif _di[3] is 304>>\ <<set _rep to "spider's don't have milk do they?">>\ <<elseif _di[3] is 305>>\ <<set _rep to "horse milk">>\ <<elseif _di[3] is 306>>\ <<set _rep to "goblin breast milk">>\ <<elseif _di[3] is 307>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 308>>\ <<set _rep to "succubus breast milk">>\ <<elseif _di[3] is 309>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 310>>\ <<set _rep to "fox milk">>\ <<elseif _di[3] is 311>>\ <<set _rep to "rabbit milk">>\ <<elseif _di[3] is 312>>\ <<set _rep to "cow milk">>\ <<elseif _di[3] is 313>>\ <<set _rep to "minotaur milk">>\ <<elseif _di[3] is 314>>\ <<set _rep to "should never appear">>\ <<elseif _di[3] is 315>>\ <<set _rep to "hellhound milk">>\ <<elseif _di[3] is 316>>\ <<set _rep to "unidentifiable milk">>\ <<elseif _di[3] is 400>>\ <<set _rep to "slime goo">>\ <<elseif _di[3] is 401>>\ <<set _rep to "water">>\ <<set _price to 5>>\ <<elseif _di[3] is 402>>\ <<set _rep to "beer">>\ <<set _price to 7>>\ <<elseif _di[3] is 403>>\ <<set _rep to "wine">>\ <<set _price to 9>>\ <<elseif _di[3] is 404>>\ <<set _rep to "aphrodisiac">>\ <<set _price to 100>>\ <<endif>>\ <<set _foo to "di3 is: " + _di[3] + ", rep is: " + _rep>> <<AddToLog _foo>> <<set _puppies to setup.Bang(_fullname, _rep)>> <<set _fullname to _puppies>> <<else>> <<if _di[3] is 500>> <<set _forcename to "spellbook of up">> <<elseif _di[3] is 501>> <<set _forcename to "spellbook of down">> <<elseif _di[3] is 502>> <<set _forcename to "spellbook of portal">> <<elseif _di[3] is 503>> <<set _forcename to "spellbook of map">> <<elseif _di[3] is 504>> <<set _forcename to "spellbook of firebolt">> <<elseif _di[3] is 505>> <<set _forcename to "spellbook of poison">> <<elseif _di[3] is 506>> <<set _forcename to "spellbook of armor">> <<elseif _di[3] is 507>> <<set _forcename to "spellbook of heal">> \ \ <<elseif _di[3] is 550>> <<set _forcename to "A Treatise on Ponerology">> <<elseif _di[3] is 551>> <<set _forcename to "Etymology of the Echidna">> <<endif>> <<endif>> \ <<if _material neq "">>\ <<set _fullname to _material + " " + _iname>>\ <<endif>>\ <<if _forcename neq "">>\ <<set _fullname to _forcename>>\ <<endif>>\ <<if _maxdam > 0>>\ <<set _fullname to _fullname + " (damage: " + _mindam + "-" + _maxdam + ")">>\ <<endif>>\ <<if _armor > 0>>\ <<set _fullname to _fullname + " [armor: " + _armor + "]">>\ <<endif>>\ <<if _flirt > 0>>\ <<set _fullname to _fullname + " {sexy: " + _flirt + "}">>\ <<endif>>\ <<if 1 is 0 >>\ <<set _asd to setup.bpptrtoname(_slot, "formal")>>\ <<set _fullname to _fullname + " (Equip to: " + _asd +")">>\ <<endif>>\ \ <<set $ItemPoke to { name: _iname, fullname: _fullname, mindam: _mindam, maxdam: _maxdam, attacktype: _attacktype, handsreq: _hands, armor:_armor, tooleffect: _tooleffect, qty: _quantity, slot: _slot, flirt: _flirt, restrict: _restrict, foodval: _foodval, price: _price, stackable: _stackable }>>\ <</silently>>\ <</widget>>\ <<widget "EasyRestock">> <<set $WORLD.restock to $WORLD.day>>\ \ <<!-- clear all? Do we want that? -->\ <<for _i to 0; _i < 10; _i++>>\ <<set $STORE[$Tavern][_i] to [0,0,0,0]>>\ <<set $STORE[$Selene][_i] to [0,0,0,0]>>\ <<set $STORE[$Smith][_i] to [0,0,0,0]>>\ <<set $STORE[$GStore][_i] to [0,0,0,0]>>\ <<set $STORE[$Tavern][_i] to [0,0,0,0]>>\ <</for>>\ <!-- pawn store loses half of items -->\ <<for _i to 0; _i < 10; _i++>>\ <<if $STORE[$Pawn][_i] neq [0,0,0,0]>>\ <<if random(1,2) is 1>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>>\ <<endif>>\ <<endif>>\ <</for>>\ \ <!-- Tanya's tavern -->\ <!-- always 2 bottles of plain drinks -->\ <<set _pool to setup.getfrom(2, [401, 402, 403])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][0] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][1] to [109, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 of boring food -->\ <<set _pool to setup.getfrom(2, [106, 107, 110])>>\ <<set _era to random(2,6)>>\ <<set _erb to random(2,6)>>\ <<set $STORE[$Tavern][2] to [parseInt(_pool[0]), 0, _era, 0]>>\ <<set $STORE[$Tavern][3] to [parseInt(_pool[1]), 0, _erb, 0]>>\ <!-- 2 sketchy meat -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [101, 102, 103, 110, 111, 112])>>\ <<set $STORE[$Tavern][4] to [102, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][5] to [102, 0, _erb, parseInt(_pool[1])]>>\ <!-- 2 sketchy milk -->\ <<set _era to random(1,3)>>\ <<set _erb to random(1,3)>>\ <<set _pool to setup.getfrom(2, [301, 302, 303, 310, 311])>>\ <<set $STORE[$Tavern][6] to [109, 0, _era, parseInt(_pool[0])]>>\ <<set $STORE[$Tavern][7] to [109, 0, _erb, parseInt(_pool[1])]>>\ \ <!-- Selene's -->\ <<set _era to random(2, 4)>>\ <<set $STORE[$Selene][0] to [108, 0, _era, 0]>>\ \ <!-- Smith -->\ <<set $STORE[$Smith][0] to [202,0,0,0]>>\ <<set $STORE[$Smith][1] to [either(200, 209),0,0,0]>>\ <<set $STORE[$Smith][2] to [either(201, 203, 204, 205),0,0,0]>>\ <<set $STORE[$Smith][3] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][4] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][5] to [random(350, 361),0,0,0]>>\ <<set $STORE[$Smith][6] to [random(350, 361),0,0,0]>>\ <<if random(1, 2) is 1>>\ <<set $STORE[$Smith][7] to [0,0,0,0]>>\ <<endif>>\ <<for _i to 1; _i < 7; _i++>>\ <<set $STORE[$Smith][_i][1] to either(102, 102, 103, 103, 104, 105)>>\ <</for>>\ \ <!-- General store --> <<set $STORE[$GStore][0] to [113,0,0,0]>> <<if random(1,2) is 1>><<set $STORE[$GStore][1] to [100,0,random(2,4),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][2] to [101,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][3] to [103,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][4] to [104,0,0,0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][5] to [105,0,random(2,5),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][6] to [106,0,random(1,4),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][7] to [107,0,random(1,3),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][8] to [108,0,random(1,3),0]>><<endif>>\ <<if random(1,2) is 1>><<set $STORE[$GStore][9] to [109,0,random(1,3),404]>><<endif>>\ <</widget>>\ <<widget "Store">>\ <<set _s to $args[0]>>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[_s].length; _i++>>\ <<set _item to $STORE[_s][_i]>>\ <<if _item[0] > 0>>\ <<capture _i, _s>>\ <<button "[Buy]">> <<set _buttonitem to $STORE[_s][_i]>>\ <<DescribeItem _buttonitem>>\ <<set _p to $ItemPoke.price>>\ <<set _st to $ItemPoke.stackable>>\ <<set _foo to "Item: " + _buttonitem + "stackable: " + _st>>\ <<AddToLog _foo>>\ <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> <<set _try to setup.additemtoinv($CC, _buttonitem, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <<if $STORE[_s][_i][2] > 1>>\ <<set $STORE[_s][_i][2] to $STORE[_s][_i][2] -1>> <<else>> <<set $STORE[_s][_i] to [0,0,0,0]>> <<endif>> <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <</button>> \ <</capture>>\ <<set _item to $STORE[_s][_i]>>\ <<DescribeItem _item>>\ <<set _p to $ItemPoke.price>>\ <<set _st to $ItemPoke.stackable>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <<print $ItemPoke.fullname>>, cost: <<print $ItemPoke.price>> \ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Inventory@@ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<if _desc neq "none">>\ <<print _desc>> <<endif>>\ <</capture>>\ <</for>>\ <hr>\ <span id="storereport"></span>\ <</widget>>\ <<widget "Pawn">>\ @@color:Gold;For sale@@ <<for _i to 0; _i < $STORE[$Pawn].length; _i++>>\ <<set _item to $STORE[$Pawn][_i]>>\ <<if _item[0] > 0>>\ <<if $DebugMode>>(_item): <<endif>>\ <<DescribeItem _item>>\ <<set _p to $ItemPoke.price * 2>>\ <<set _st to $ItemPoke.stackable>>\ <<capture _i, _p, _st>>\ <<button "[Buyback]">> <<if $PC[$CC][$PCcoins] < _p>>\ <<replace "#storereport">>Not enough money: _p<</replace>>\ <<else>> \ <<set _ByValHack to []>>\ <<set _ByValHack[0] to $STORE[$Pawn][_i][0]>> <<set _ByValHack[1] to $STORE[$Pawn][_i][1]>> <<set _ByValHack[2] to 1>> <<set _ByValHack[3] to $STORE[$Pawn][_i][3]>> \ <<set _try to setup.additemtoinv($CC, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>No room in inventory<</replace>>\ <<else>> << <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $STORE[$Pawn][_i][2] > 1>>\ <<set $STORE[$Pawn][_i][2] to $STORE[$Pawn][_i][2] -1>> <<else>>\ <<set $STORE[$Pawn][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <<endif>> <</button>> \ <</capture>>\ <<if $DebugMode is true>>(<<print _item>>) <<endif>>\ <!-- fetch data for actual item, not 1-quantity ByVal hack, so that quantities display correctly -->\ <<DescribeItem $STORE[$Pawn][_i]>>\ <<print $ItemPoke.fullname>>, cost: _p \ <<if $ItemPoke.stackable is true>>each<<endif>>\ <br>\ <<endif>>\ <</for>>\ \ <<unset _item>>\ \ <hr>\ @@color:Gold;Inventory@@ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set _st to $ItemPoke.stackable>>\ <<if _desc neq "none">>\ <<if $DebugMode>>(_item): <<endif>>\ <<set _buttontext to "[Pawn for " + _p + " gold]">>\ <<button "_buttontext">> <!-- Sugarcube does not clone values until passage refresh -->\ <<set _AAAA to $PC[$CC][$PCinven][_i][0]>> <<set _BBBB to $PC[$CC][$PCinven][_i][1]>> <<set _CCCC to 1>> <<set _DDDD to $PC[$CC][$PCinven][_i][3]>> <<set _ByValHack to [_AAAA, _BBBB, _CCCC, _DDDD]>> <<DescribeItem _ByValHack>> <<set _st to $ItemPoke.stackable>>\ <<set _try to setup.additemtostore($Pawn, _ByValHack, _st)>> <<if _try < 0>> <<replace "#storereport">>Store has no more room<</replace>>\ <<else>> <<set _desc to $ItemPoke.fullname>>\ <<set _p to $ItemPoke.price / 2>>\ <<set _p to Math.trunc(_p)>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + _p>> <!-- if has qty, subtract one, otherwise remove -->\ <<if $PC[$CC][$PCinven][_i][2] > 1>>\ <<set $PC[$CC][$PCinven][_i][2] to $PC[$CC][$PCinven][_i][2] -1>> <<else>>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<endif>>\ <<set _asd to Engine.play(passage(), true)>> <<endif>> <</button>> _desc <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\<<set _EatTarget to $WORLD.datapasser>>\ <<if _EatTarget > -1>>\ <<DescribeItem $PC[$CC][$PCinven][_EatTarget]>>\ \ <<set _SkipSex to false>>\ \ <<if $ItemPoke.fullname.includes("demon")>>\ <<set _Morph to "demon">>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("tentacle")>>\ <<set _Morph to "tentacle">>\ <<set _TFList to [$BPtentacle, $BPtentacle, $BPtentacle, $BPtentacle, $BPpenis, $BPpenis, $BPpenis, $BPpenis]>>\ <<set _SkipSex to true>>\ <<elseif $ItemPoke.fullname.includes("centaur")>>\ <<set _Morph to "centaur">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("hellhound")>>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "hellhound">>\ <<elseif $ItemPoke.fullname.includes("drider")>>\ <<set _Morph to "drider">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPlegs, $BPlegsl]>>\ <<elseif $ItemPoke.fullname.includes("spider")>>\ <<set _Morph to "spider">>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<set _Morph to "slime">>\ <<set _TFList to [$BPchest]>>\ <<elseif $ItemPoke.fullname.includes("horse")>>\ <<set _Morph to "horse">>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("wolf")>>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "wolf">>\ <<elseif $ItemPoke.fullname.includes("goblin")>>\ <<set _Morph to "goblin">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("succubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("incubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis]>>\ <<elseif $ItemPoke.fullname.includes("omnibus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("cow")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("minotaur")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("imp")>>\ <<set _Morph to "imp">>\ <<set _TFList to [$BPhead, $BPhorns, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("human")>>\ <<set _Morph to "human">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("bunny")>>\ <<set _Morph to "bunny">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("fox")>>\ <<set _Morph to "fox">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("cat")>>\ <<set _Morph to "cat">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<else>>\ Don't recognize monster source <<endif>>\ \ <<if $ItemPoke.fullname.includes("meat")>>\ <<set _Sex to "none">>\ <<set _TFList to setup.RemoveEveryOneOf($BPpenis, _TFList)>>\ <<set _TFList to setup.RemoveEveryOneOf($BPboobs, _TFList)>>\ <<set _TFList to setup.RemoveEveryOneOf($BPpussy, _TFList)>>\ <<endif>>\ \ <<if $SkipSex is false>>\ <<if $ItemPoke.fullname.includes("semen")>>\ <<set _Sex to "male">>\ <<elseif $ItemPoke.fullname.includes("milk")>>\ <<set _Sex to "female">>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<set _Sex to "slime">>\ <<else>>\ Item is unrecognized <<endif>>\ <<endif>>\ \ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PCparts to []>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _PCparts[_i] to $PC[$CC][$PCbp][_i].type>>\ <</for>>\ \ <!-- wow --> <<set _a to _PCparts>>\ <<set _b to _TFList>>\ \ <<for _i to 0; _i < _b.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _a.length; _j++>>\ <<if _FoundOne is false>>\ <<if _a[_j] is _b[_i]>>\ <<set _FoundOne to true>>\ <<set _a[_j] to "prune">>\ <<set _b[_i] to "prune">>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ \ <!-- round 2: remove eveything marked for purge --> <<for _i to _a.length -1; _i > -1; _i-->>\ <<if (_a[_i] is "prune")>>\ <<set _meh to _a.splice(_i, 1)>> <<endif>>\ <</for>>\ <<for _i to _b.length -1; _i > -1; _i-->>\ <<if (_b[_i] is "prune")>>\ <<set _meh to _b.splice(_i, 1)>> <<endif>>\ <</for>>\ \ <!-- round 3: add negatives -->\ <<for _i to 0; _i < _a.length; _i++>>\ <<set _b[_b.length] to (_a[_i] * -1)>>\ <</for>>\ <!-- good to go! --> \ <hr> debug, final list: <<for _i to 0; _i < _b.length; _i++>>\ <<if _b[_i] < 0>>\ <<set _MakeNegative to _b[_i] * -1>>\ (Lose: <<print setup.bpptrtoname(_MakeNegative, "formal")>>) \ <<else>>\ (Gain: <<print setup.bpptrtoname(_b[_i], "formal")>>) \ <<endif>>\ <</for>>\ <hr> <<if _a.length < 1>>\ replace "#inverr">Debug: no new transforms from this item<</replace <<else>> <<set _SelectedTF to _b[random(0, _b.length)>>\ Selected result is: \ <<if _SelectedTF < 0>>\ <<set _MakeNegative to _b[_i] * -1>>\ (Lose: <<print setup.bpptrtoname(_MakeNegative, "formal")>>) <<else>>\ (Gain: <<print setup.bpptrtoname(_SelectedResult, "formal")>>) <<endif>>\ replace "#inverr">Selected transform is: <<print _a[_SelectedTF]>>/replace <<print _a[_SelectedTF]>> <<endif>>\ <<else>>\ @@color:Red;Error in Consume: I don't know what inv item (_EatTarget_) points to@@ <<endif>>\ <hr>\ <span id="KeypOne">\ <<link "space) continue" $ReturnFromMenu>> <<set $DisableMenu to false>>\ <</link>>\ </span>\ no replace for easy debug, change button link in inventory to go to here <<set _EatTarget to $WORLD.datapasser>>\ <<set _DoTF to true>>\ \ <<if _EatTarget > -1>>\ \ <!-- get list of body parts player has -->\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PCparts to []>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _PCparts[_i] to $PC[$CC][$PCbp][_i].type>>\ <</for>>\ \ <!-- get list of possible transform body parts from monster type -->\ <<DescribeItem $PC[$CC][$PCinven][_EatTarget]>>\ <<set _SkipSex to false>>\ <<if $ItemPoke.fullname.includes("demon")>>\ <<set _Morph to "demon">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("tentacle")>>\ <<set _Morph to "tentacle">>\ <<set _TFList to [$BPtentacle, $BPtentacle, $BPtentacle, $BPtentacle, $BPpenis, $BPpenis, $BPpenis, $BPpenis]>>\ <<set _SkipSex to true>>\ <<elseif $ItemPoke.fullname.includes("centaur")>>\ <<set _Morph to "centaur">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("hellhound")>>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "hellhound">>\ <<elseif $ItemPoke.fullname.includes("drider")>>\ <<set _Morph to "drider">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPlegs, $BPlegs, $BPlegsl]>>\ <<elseif $ItemPoke.fullname.includes("spider")>>\ <<set _Morph to "spider">>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<set _Morph to "slime">>\ <<set _TFList to [$BPchest]>>\ <<elseif $ItemPoke.fullname.includes("horse")>>\ <<set _Morph to "horse">>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPfeet, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("wolf")>>\ <<set _TFList to [$BPhead, $BPneck, $BPchest, $BPlegs, $BPlegs, $BPtail]>>\ <<set _Morph to "wolf">>\ <<elseif $ItemPoke.fullname.includes("goblin")>>\ <<set _Morph to "goblin">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("succubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("incubus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis]>>\ <<elseif $ItemPoke.fullname.includes("omnibus")>>\ <<set _Morph to "demon">>\ <<set _SkipSex to true>>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet, $BPpenis, $BPboobs]>>\ <<elseif $ItemPoke.fullname.includes("cow")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("minotaur")>>\ <<set _Morph to "cow">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("imp")>>\ <<set _Morph to "imp">>\ <<set _TFList to [$BPhead, $BPhorn, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPtail, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("human")>>\ <<set _Morph to "human">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet]>>\ <<elseif $ItemPoke.fullname.includes("bunny")>>\ <<set _Morph to "bunny">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("fox")>>\ <<set _Morph to "fox">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.fullname.includes("cat")>>\ <<set _Morph to "cat">>\ <<set _TFList to [$BPhead, $BPneck, $BPback, $BPchest, $BPwield, $BPwield, $BPhands, $BPring, $BPring, $BPwaist, $BPlegs, $BPfeet, $BPtail]>>\ <<elseif $ItemPoke.foodval > 0>>\ <<set _DoTF to false>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] - $ItemPoke.foodval>>\ <<if $PC[$CC][$PChunger] < 0>>\ <<set $PC[$CC][$PChunger] to 0>>\ <<endif>>\ <<else>>\ <<set _DoTF to false>>\ Error: unrecognized consumable. <<endif>>\ \ \ <<if _DoTF is true>>\ <!-- generate an array to mark whether body parts in each list have been processed yet -->\ <<set _PlayerHas to []>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<set _PlayerHas[_i] to []>>\ <<set _PlayerHas[_i][0] to _PCparts[_i]>>\ <<set _PlayerHas[_i][1] to -1>>\ <</for>>\ <<set _MonsterHas to []>>\ <<for _i to 0; _i < _TFList.length; _i++>>\ <<set _MonsterHas[_i] to []>>\ <<set _MonsterHas[_i][0] to _TFList[_i]>>\ <<set _MonsterHas[_i][1] to -1>>\ <</for>>\ \ <<set _a to _PlayerHas>>\ <<set _b to _MonsterHas>>\ <<set _c to []>>\ \ <<for _i to 0; _i < _a.length; _i++>>\ <<if setup.FindInANotB(_a[_i][0], _b) is "yes">>\ <<set _a[_i][1] to "used">>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _a[_i][0]>>\ <<set _c[_NextC][1] to "remove">>\ <<endif>>\ <</for>>\ <<for _i to 0; _i < _a.length; _i++>>\ <<if _a[_i][1] is "used">>\ <<else>>\ <<set _Both to setup.FindInBoth(_a[_i][0], _b)>>\ <<if _Both > -1>>\ <<set _a[_i][1] to "used">>\ <<set _b[_Both][1] to "used">>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _a[_i][0]>>\ <<set _c[_NextC][1] to "convert">>\ <<endif>>\ <<endif>>\ <</for>>\ <<for _i to 0; _i < _b.length; _i++>>\ <<if _b[_i][1] is "used">>\ <<else>>\ <<set _NextC to _c.length>>\ <<set _c[_NextC] to []>>\ <<set _c[_NextC][0] to _b[_i][0]>>\ <<set _c[_NextC][1] to "add">>\ <<endif>>\ <</for>>\ \ <!-- add name data -->\ <<for _i to 0; _i < _c.length; _i++>>\ <<set _c[_i][2] to setup.bpptrtoname(_c[_i][0], "formal")>>\ <</for>>\ \ <<if $DebugMode is true>>\ @@color:Gold;Possible transformations:@@ <<for _i to 0; _i < _c.length; _i++>>\ _i) <<print _c[_i]>> <</for>>\ <<endif>>\ \ <!-- correct for consume type -->\ <<if $SkipSex is false>>\ <<if $ItemPoke.fullname.includes("meat")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if (_c[_i][2] is "Breasts")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[i][2] is "Pussy")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[_i][2] is "Penis")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("milk")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if _c[_i][2] is "Penis">>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("semen")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if _c[_i][2] is "Breasts">>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif _c[i][2] is "Pussy">>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif _c[_i][2] is "Penis">>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<for _i to 0; _i < _c.length; _i++>>\ <<if (_c[_i][1] is "remove") and (_c[_i][2] is "Breasts")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[_i][1] is "remove") and (_c[i][2] is "Pussy")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<elseif (_c[_i][1] is "remove") and (_c[_i][2] is "Penis")>>\ <<set _c[_i][1] to "(Override) convert">>\ <<endif>>\ <</for>>\ <<else>>\ @@color:Red;Error: This isn't meat, milk, or semen. What is this?@@ <<endif>>\ <<endif>>\ \ Debug: c: _c selectedtf: _SelectedTF \ <<if _c.length > 0>>\ <<set _SelectedTF to _c[random(0, _c.length)]>>\ <<set _TheBP to _SelectedTF[0]>>\ <<set _TheAction to _SelectedTF[1]>>\ <<set _TheEnglish to _SelectedTF[2]>>\ thebp: _TheBP theaction: _TheAction tehenglish: _TheEnglish <<if _TheAction is "remove">>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, _TheBP)>> You have gained <<print setup.bpptrtoname(_TheBP, "formal")>> <<elseif _TheAction is "add">>\ <<set _BPAdded to setup.AddBodyPart($CC, _TheBP)>>\ <<set $PC[$CC][PCbp][_BPAdded].morph to _Morph>>\ You have lost <<print setup.bpptrtoname(_TheBP, "formal")>> <<elseif _TheAction is "convert">>\ <<set _GetBP to setup.FetchBodyPart($CC, _TheBP)>>\ debug: _GetBP , _TheBP Your <<print $PC[$CC][$PCbp][_GetBP].morph>> <<print setup.bpptrtoname(_TheBP, "formal")>> has become a _Morph <<print setup.bpptrtoname(_TheBP, "formal")>>! <<set $PC[$CC][$PCbp][_GetBP].morph to _Morph>>\ <<else>>\ <br>\ Error in selected TF: _SelectedTF 1: _SelectedTF[0], _TheBP 2: _SelectedTF[1], _TheAction 3: _SelectedTF[2], _TheEnglish <<endif>>\ <<endif>>\ <<endif>>\ <<else>>\ @@color:Red;Error in Consume: I don't know what inv item (_EatTarget_) points to@@ <<endif>>\ <hr>\ <span id="KeypOne">\ <<link "space) continue" $ReturnFromMenu>> <<set $DisableMenu to false>>\ <</link>>\ </span>\ <<set $WORLD.datapasser to "default Victory Sex">>\ \ <<set _wonby to "fight">>\ <<set _psex to $PC[$CC][$PCsex]>>\ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<set _NextSpot to 0>>\ <<set _LinkArray to []>>\ <<set _NoSex to false>>\ \ <<if $Mon.morph is "bunny">>\ <<set _TargetPassage to "VictoryBunny">>\ <<if $Mon.boobs is true>>\ <<set _temp to "Fondle " + $Mon.himher + " boobs">>\ <<set _LinkArray[_NextSpot] to [_temp, "bunny boob fondle"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcboobs > 0) and ($Mon.boobs is true)>>\ <<set _LinkArray[_NextSpot] to ["Two-way boob play", "bunny boobplay"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is true)>>\ <<set _temp to "Fuck " + $Mon.himher>>\ <<set _LinkArray[_NextSpot] to [_temp, "bunny vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0)>>\ <<set _temp to "Fuck " + $Mon.himher + " in the ass">>\ <<set _LinkArray[_NextSpot] to [_temp, "bunny ass rape"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.sex is "male") and (_pcpenis is 0)>>\ <<set _temp to "Give him a handjob">>\ <<set _LinkArray[_NextSpot] to [_temp, "bunny handjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if $Mon.sex is "herm">>\ <<set _LinkArray[_NextSpot] to ["Suck her dick", "bunny suck her dick"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "horse">>\ <<set _TargetPassage to "VictoryHorse">>\ <<if _pcpenis > 0>>\ <<set _temp to "Fuck " + $Mon.himher>>\ <<set _LinkArray[_NextSpot] to [_temp, "horse sex"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if _pcpussy > 0>>\ <<set _temp to "Have " + $Mon.himher + " lick you">>\ <<set _LinkArray[_NextSpot] to [_temp, "horse licks you"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if $Mon.boobs is true>>\ <<set _temp to "Fondle " + $Mon.himher + " boobs">>\ <<set _LinkArray[_NextSpot] to [_temp, "horse boobplay"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "fox">>\ <<set _TargetPassage to "VictoryFox">>\ <<if _pcpenis > 0>>\ <<set _temp to "Have " + $Mon.himher + " suck you off">>\ <<set _LinkArray[_NextSpot] to [_temp, "fox blowjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<set _temp to "Anally rape " + $Mon.himher>>\ <<set _LinkArray[_NextSpot] to [_temp, "fox forced anal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is true)>>\ <<set _temp to "Fuck " + $Mon.himher>>\ <<set _LinkArray[_NextSpot] to [_temp, "fox vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<set _temp to "Have " + $Mon.himher + " eat you out">>\ <<set _LinkArray[_NextSpot] to [_temp, "fox pussylick"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpussy > 0) and ($Mon.penis is true)>>\ <<set _temp to "Ride " + $Mon.hisher + " cock cowgirl style">>\ <<set _LinkArray[_NextSpot] to [_temp, "fox cowgirl"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "cat">>\ <<set _TargetPassage to "VictoryCat">>\ <<if $Mon.boobs is true >>\ <<set _temp to "Play with " + $Mon.himher + " boobs">>\ <<set _LinkArray[_NextSpot] to [_temp, "cat boobplay"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is true)>>\ <<set _LinkArray[_NextSpot] to ["Fuck the pussycat", "cat vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.penis is true)>>\ <<set _temp to "Let " + $Mon.himher + " fuck you">>\ <<set _LinkArray[_NextSpot] to [_temp, "cat fucks you"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.penis is true) and (_pcpenis is 0)>>\ <<set _temp to "Stroke " + $Mon.hisher + " cock">>\ <<set _LinkArray[_NextSpot] to [_temp, "cat handjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "wolf">>\ <<set _TargetPassage to "VictoryWolf">>\ <<if ($Mon.penis is true) and (_pcpenis is 0)>>\ <<set _temp to "Have " + $Mon.himher + " lick your pussy">>\ <<set _LinkArray[_NextSpot] to [_temp, "wolf pussylick"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.penis is true) and (_pcpenis > 0)>>\ <<set _temp to "Fuck " + $Mon.hisher + " ass">>\ <<set _LinkArray[_NextSpot] to [_temp, "wolf anal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "wolfquad">>\ <<set _TargetPassage to "VictoryWolfquad">>\ <<set _temp to "Play with " + $Mon.hisher + " dick">>\ <<set _LinkArray[_NextSpot] to [_temp, "wolf handjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<if (_pcpenis > 999)>>\ <<set _temp to "Stick your dick in " + $Mon.hisher + " mouth">>\ <<set _LinkArray[_NextSpot] to [_temp, "wolf blowjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "goblin">>\ <<set _TargetPassage to "VictoryGoblin">>\ <<if (_pcpussy > 0) and ($Mon.pussy is true)>>\ <<set _temp to "Have " + $Mon.himher + " lick your pussy">>\ <<set _LinkArray[_NextSpot] to [_temp, "goblin pussylick"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpussy > 0) and ($Mon.penis is true)>>\ <<set _temp to "Ride " + $Mon.hisher + " cock cowgirl style">>\ <<set _LinkArray[_NextSpot] to [_temp, "goblin cowgirl"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is true)>>\ <<set _temp to "Fuck " + $Mon.hisher + " pussy">>\ <<set _LinkArray[_NextSpot] to [_temp, "goblin vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.penis is true)>>\ <<set _temp to "Fuck " + $Mon.himher + " in the ass">>\ <<set _LinkArray[_NextSpot] to [_temp, "goblin assfuck"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "slime">>\ <<set _TargetPassage to "VictorySlime">>\ <<if _pcpenis > 0>>\ <<set _LinkArray[_NextSpot] to ["Make your own hole and fuck it", "slime custom hole"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<set _LinkArray[_NextSpot] to ["Fuck the holes already present", "slime vaginal/anal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<set _LinkArray[_NextSpot] to ["Get naked and see where this goes", "slime female variety pack"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "human">>\ <<set _TargetPassage to "VictoryHuman">>\ <<if (_pcpenis > 0) and ($Mon.penis is false)>>\ <<set _temp to "Blowjob time">>\ <<set _LinkArray[_NextSpot] to [_temp, "human blowjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is true)>>\ <<set _temp to "Rape " + $Mon.himher>>\ <<set _LinkArray[_NextSpot] to [_temp, "human vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpenis > 0) and ($Mon.pussy is false)>>\ <<set _temp to "Rape him">>\ <<set _LinkArray[_NextSpot] to [_temp, "human male anal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.boobs is true)>>\ <<set _temp to "Motorboat " + $Mon.hisher + " boobs">>\ <<set _LinkArray[_NextSpot] to [_temp, "human motorboat"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "naga">>\ <<set _TargetPassage to "VictoryNaga">>\ <<if _pcpenis > 0>>\ <<set _temp to "Snake-girl blowjob time">>\ <<set _LinkArray[_NextSpot] to [_temp, "naga blowjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.penis is true)>>\ <<set _temp to "Check out the double dicks">>\ <<set _LinkArray[_NextSpot] to [_temp, "naga double dicks"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.boobs is true)>>\ <<set _temp to "Fondle " + $Mon.hisher + " tits">>\ <<set _LinkArray[_NextSpot] to [_temp, "naga boob fondle"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "snake">>\ <<set _NoSex to true>>\ <<elseif $Mon.morph is "minotaur">>\ <<set _TargetPassage to "VictoryMinotaur">>\ <<if (_pcpenis > 0) and ($Mon.penis is false)>>\ <<set _temp to "Have " + $Mon.himher + " suck your dick">>\ <<set _LinkArray[_NextSpot] to [_temp, "minotaur blowjob"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if ($Mon.boobs is true)>>\ <<set _temp to "Fondle " + $Mon.hisher + " tits">>\ <<set _LinkArray[_NextSpot] to [_temp, "minotaur boob fondle"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<elseif $Mon.morph is "spider">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictorySpider">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "drider">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryDrider">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "ant">>\ <<set _TargetPassage to "VictoryAnt">>\ <<if _pcpenis > 0>>\ <<set _temp to "Fuck " + $Mon.hisher>>\ <<set _LinkArray[_NextSpot] to [_temp, "ant vaginal"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "scorpion">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryScorpion">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "harpy">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryHarpy">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "ratkin">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryRatkin">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "hydra">>\ <<set _TargetPassage to "VictoryHydra">>\ <<if ($Mon.penis is true)>>\ <<set _temp to "Check out " + $Mon.hisher + " cock">>\ <<set _LinkArray[_NextSpot] to [_temp, "hydra cock"]>>\ <<set _NextSpot to _NextSpot +1>>\ <<endif>>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "troll">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryTroll">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ <<elseif $Mon.morph is "hellhound">>\ <<set _NoSex to true>>\ <<set _TargetPassage to "VictoryHellhound">>\ <<if _pcpenis > 0>>\ <<endif>>\ <<if (_pcpussy > 0)>>\ <<endif>>\ \ <<else>>\ @@color:Red;Error in Victory include: $Mon.morph is not recognized@@ <<endif>>\ \ \ \ <<if _NoSex is true>>\ <<else>>\ <<if _NextSpot is 0>>\ @@color:Yellow;Warning:@@ no possible sex positions for $Mon.morph when (player is $PC[$CC][$PCsex]) and (monster is $Mon.sex) <<if $DebugMode is true>>\ MonPenis: $Mon.penis MonPussy: $Mon.pussy MonBoobs: $Mon.boobs PCPenis: _pcpenis PCPussy: _pcpussy PCBoobs: _pcboobs <<endif>>\ <<else>>\ <<for _Shuffle to 0; _Shuffle < _LinkArray.length; _Shuffle++>>\ <<set _r to random(0, _LinkArray.length -1)>>\ <<set _TempArray to _LinkArray[_Shuffle]>>\ <<set _LinkArray[_Shuffle] to _LinkArray[_r]>>\ <<set _LinkArray[_r] to _TempArray>>\ <</for>>\ \ <<if $PC[$CC][$PChunger] < 50>>\ Too tired for sex <<else>>\ <<set _Keypresses to ["KeypQ","KeypNorth","KeypE","KeypR","KeypT","KeypY"]>>\ <<set _Letters to ["q) ", "w) ", "e) ", "r) ", "t) ", "y) "]>>\ <<for _ShowLinks to 0; _ShowLinks < _LinkArray.length; _ShowLinks++>>\ <<capture _ShowLinks>>\ <span @id="_Keypresses[_ShowLinks]">\ <<set _concat to _Letters[_ShowLinks] + _LinkArray[_ShowLinks][0]>>\ <<link _concat _TargetPassage>> <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] - 50>> <<set $PC[$CC][$PChornycur] to 0>> <<set $WORLD.datapasser to _LinkArray[_ShowLinks][1]>> <<set $DisableMenu to false>> <<if (setup.PtrToClass($PC[$CC][$PCclass]) is "prostitute") and ($PC[$CC][$PClevel] > 6)>> <<AwardXP $Mon.level "sex xp">>\ <<endif>>\ <</link>> (-50 stamina) </span>\ <</capture>>\ <</for>>\ <<endif>>\ <<endif>>\ <<endif>>\<<if (setup.IsNan($WORLD.house.piggybank) is true) and (setup.IsNan($WORLD.Piggybank)is false)>><<set $WORLD.house.piggybank to $WORLD.Piggybank>><<endif>>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ \ <<set _ExitLinks to "AllowLeave">>\ \ <<set _Hammer to setup.HasItemA(101)>>\ <<set _PlainwoodPTR to setup.HasItemA(105)>>\ <<set _PlainwoodQty to 0>>\ <<if _PlainwoodPTR > -1>>\ <<set _PlainwoodQty to $PC[$CC][$PCinven][_PlainwoodPTR][2]>>\ <<endif>>\ <<set _HardwoodPTR to setup.HasItemA(120)>>\ <<set _HardwoodQty to 0>>\ <<if _HardwoodPTR > -1>>\ <<set _HardwoodQty to $PC[$CC][$PCinven][_HardwoodPTR][2]>>\ <<endif>>\ <<set _SteelwoodPTR to setup.HasItemA(121)>>\ <<set _SteelwoodQty to 0>>\ <<if _SteelwoodPTR > -1>>\ <<set _SteelwoodQty to $PC[$CC][$PCinven][_SteelwoodPTR][2]>>\ <<endif>>\ <<set _FaeriewoodPTR to setup.HasItemA(122)>>\ <<set _FaeriewoodQty to 0>>\ <<if _FaeriewoodPTR > -1>>\ <<set _FaeriewoodQty to $PC[$CC][$PCinven][_FaeriewoodPTR][2]>>\ <<endif>>\ \ <<if $WORLD.house.state is 0>>\ <<SimplePic "abandoned.jpg">>\ <<set $WORLD.house.state to 1>>\ @@color:Gold;Abandoned wooden building@@ <hr>\ This place looks equally as dilapidated on the inside as it does from outside. The wood is rotten in places, cobwebs and rat droppings are spread in every corner, and it smells faintly of old urine. It's unclear what purpose this building once served, but it's clearly abandoned. <<elseif $WORLD.house.state is 1>>\ <<SimplePic "abandoned.jpg">>\ @@color:LightGreen;Abandoned wooden building@@ <hr>\ <<set _AllowUpdate to false>>\ <<if (_Hammer > 0) or (_PlainwoodQty > 0)>>\ This building is in bad shape, with light shining through an opening in the ceiling and holes in the walls large enough for a small dog to walk though. In fact, while you do a quick survey a rat nearly as large as your arm casually walks past you like it owns the place. It's definitely a fixer-upper. But with a little care, you think you could make the place livable. It would certainly be nice to have a place to keep your things. To perform the upgrade, you'll need: <<set _AllowUpdate to true>>\ <<if _Hammer > -1>>\ @@color:LightGreen; * A hammer (have)@@ <<else>>\ <<set _AllowUpdate to false>>\ @@color:Red;* A hammer@@ <<endif>>\ <<if _PlainwoodQty > 99>>\ @@color:LightGreen; * 100 logs (have _PlainwoodQty)@@ <<elseif _PlainwoodQty > 0>>\ <<set _AllowUpdate to false>>\ @@color:Yellow; * 100 logs (have _PlainwoodQty)@@ <<else>>\ <<set _AllowUpdate to false>>\ @@color:LightRed; * 100 logs (have 0)@@ <<endif>>\ <<set _Hunger to Math.trunc($PC[$CC][$PChunger] / 5)>>\ <<if $PC[$CC][$PChunger] > 249>>\ @@color:LightGreen; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<elseif $PC[$CC][$PChunger] > 300>>\ @@color:Yellow; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<else>>\ <<set _AllowUpdate to false>>\ @@color:Red; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<endif>>\ <<else>>\ Apart from a couple scurrying rats, this building remains abandoned. There's probably nothing more you can do here for now. <<endif>>\ <hr>\ <<set _ExitLinks to "none">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Leave" "TownSquare">> <<AdvanceTime 5>> <</link>> </span>\ <<if _AllowUpdate is true>>\ <span id="KeypOne">\ <<link "1) Build" "House">> <<if $PC[$CC][$PCinven][_PlainwoodPTR][2] > 100>>\ <<set $PC[$CC][$PCinven][_PlainwoodPTR][2] to $PC[$CC][$PCinven][_PlainwoodPTR][2] -100>> <<else>> <<set $PC[$CC][$PCinven][_PlainwoodPTR] to [0,0,0,0]>> <<endif>> <<AdvanceTime 250>> <<set $WORLD.house.state to 2>> <<set $WORLD.house.storage to 5>> <</link>> </span>\ <<endif>> <<elseif $WORLD.house.state is 2>>\ <<set _ExitLinks to "house">>\ <<SimplePic "house.jpg">>\ @@color:Gold;Your house@@, storage capacity: <<print $WORLD.house.storage>>\ <<if $WORLD.house.piggybank > -1>>\ , current piggybank: <span id="piggybank"><<print $WORLD.house.piggybank>></span> gold\ <<endif>>\ <br>\ <span id="KeypSpace">\ <<link "space) Leave" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> \ <<if $WORLD.house.piggybank < 0>>\ <<if _HardwoodQty > 9>>\ <span id="KeypOne">\ <<link "1) Build piggybank" "House">> <<if $PC[$CC][$PCinven][_HardwoodPTR][2] > 10>>\ <<set $PC[$CC][$PCinven][_HardwoodPTR][2] to $PC[$CC][$PCinven][_HardwoodPTR][2] -10>> <<else>> <<set $PC[$CC][$PCinven][_HardwoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.house.piggybank to 0>> <<AdvanceTime 60>> <</link>> (costs 10 hardwood)\ </span> <<else>>\ 1) You could probably build a piggybank to store your gold with 10 hardwood <<endif>>\ <<elseif $WORLD.house.piggybank > -1>>\ <span id="KeypEast">\ <<link "d) Drop all gold to piggybank">> <<set $WORLD.house.piggybank to $WORLD.house.piggybank + $PC[$CC][$PCcoins]>> <<set $PC[$CC][$PCcoins] to 0>> <<replace "#piggybank">><<print $WORLD.house.piggybank>><</replace>> <<replace "#capcoins">><<print $PC[$CC][$PCcoins]>><</replace>> <</link>> </span>\ <span id="KeypG">\ <<link "g) Get gold from piggybank">> <<if $WORLD.house.piggybank > 0>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] + $WORLD.house.piggybank>> <<set $WORLD.house.piggybank to 0>> <<endif>>\ <<replace "#piggybank">><<print $WORLD.house.piggybank>><</replace>> <<replace "#capcoins">><<print $PC[$CC][$PCcoins]>><</replace>> <</link>> </span>\ <<endif>>\ <<if $WORLD.house.bed is 1>>\ <span id="KeypSouth">\ <<link "s) Sleep" "House">> <<AdvanceTime 480>>\ <<FullyHeal>>\ <</link>>\ </span> <<else>>\ <<if _HardwoodQty > 29>>\ <span id="KeypTwo">\ <<link "2) Build bed" "House">> <<if $PC[$CC][$PCinven][_HardwoodPTR][2] > 30>>\ <<set $PC[$CC][$PCinven][_HardwoodPTR][2] to $PC[$CC][$PCinven][_HardwoodPTR][2] -30>> <<else>> <<set $PC[$CC][$PCinven][_HardwoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.house.bed to 1>> <<AdvanceTime 60>> <</link>> (costs 30 hardwood)\ </span> <<else>>\ 2) You could probably build a bed to sleep on with 30 hardwood <<endif>>\ <<endif>>\ <<if $WORLD.house.storage < 10>>\ <<if _HardwoodQty > 49>>\ <span id="KeypThree">\ <<link "3) Upgrade storage" "House">> <<if $PC[$CC][$PCinven][_HardwoodPTR][2] > 50>>\ <<set $PC[$CC][$PCinven][_HardwoodPTR][2] to $PC[$CC][$PCinven][_HardwoodPTR][2] -50>> <<else>> <<set $PC[$CC][$PCinven][_HardwoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.house.storage to 10>> <<AdvanceTime 60>> <</link>> (costs 50 hardwood)\ </span> <<else>>\ 3) You could probably increase your storage space with 50 hardwood logs <<endif>>\ <<elseif $WORLD.house.storage < 15>>\ <<if _SteelwoodQty > 49>>\ <span id="KeypThree">\ <<link "3) Upgrade storage" "House">> <<if $PC[$CC][$PCinven][_SteelwoodPTR][2] > 50>>\ <<set $PC[$CC][$PCinven][_SteelwoodPTR][2] to $PC[$CC][$PCinven][_SteelwoodPTR][2] -50>> <<else>> <<set $PC[$CC][$PCinven][_SteelwoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.house.storage to 15>> <<AdvanceTime 60>> <</link>> (costs 50 steelwood)\ </span> <<else>>\ 3) You could probably increase your storage space with 50 steelwood logs <<endif>>\ <<elseif $WORLD.house.storage < 20>>\ <<if _FaeriewoodQty > 49>>\ <span id="KeypThree">\ <<link "3) Upgrade storage" "House">> <<if $PC[$CC][$PCinven][_FaeriewoodPTR][2] > 50>>\ <<set $PC[$CC][$PCinven][_FaeriewoodPTR][2] to $PC[$CC][$PCinven][_FaeriewoodPTR][2] -50>> <<else>> <<set $PC[$CC][$PCinven][_FaeriewoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.house.storage to 20>> <<AdvanceTime 60>> <</link>> (costs 50 faerie wood)\ </span> <<else>>\ 3) You could probably increase your storage space with 50 faeire wood logs <<endif>>\ <<endif>>\ <hr>\ <<AwardAchievement "Lumberjack">>\ <<else>>\ @@color:Red;Error@@: unrecognized house state. Attempting to fix. <<set $WORLD.house to {state: 0, piggybank: -1, bed: 0, storage: 0}>>\ <<endif>>\ <<if _ExitLinks is "none">>\ <<elseif _ExitLinks is "house">>\ <<House>> <span id="storereport"></span>\ <<else>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Leave" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <<endif>>\ <hr> <<set _a to [1,1,2,3]>> <<set _b to [1,2,2,3]>> <<set _c to []>> <<set _cptr to 0>> \ Start states: a: _a b: _b \ <<for _i to 0; _i < _b.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _a.length; _j++>>\ <<if _FoundOne is false>>\ <<if _a[_j] is _b[_i]>>\ <<set _FoundOne to true>>\ <<set _a[_j] to "prune">>\ <<set _b[_i] to "prune">>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ States after first round: a: _a b: _b <<for _i to _a.length -1; _i > -1; _i-->>\ <<if (_a[_i] is "prune")>>\ <<set _meh to _a.splice(_i, 1)>> <<endif>>\ <</for>>\ <<for _i to _b.length -1; _i > -1; _i-->>\ <<if (_b[_i] is "prune")>>\ <<set _meh to _b.splice(_i, 1)>> <<endif>>\ <</for>>\ Purge round: a: _a b: _b <<for _i to 0; _i < _b.length; _i++>>\ <<set _a[_a.length] to (_b[_i] * -1)>>\ <</for>>\ Final states, after third round: a: _a b: _b c: _c <hr> <hr> <hr> <<set _a to [100, 101, 102, 103, 104, 104, 105, 106, 106, 107, 108, 109, 113]>>\ <<set _b to [100, 101, 103, 108, 108, 110]>>\ a is: _a b is: _b <<for _i to 0; _i < _b.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _a.length; _j++>>\ <<if _FoundOne is false>>\ <<if _a[_j] is _b[_i]>>\ <<set _FoundOne to true>>\ <<set _a[_j] to "prune">>\ <<set _b[_i] to "prune">>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ After round 1: a is: _a b is: _b \ <!-- round 2: remove eveything marked for purge -->\ <<for _i to _a.length -1; _i > -1; _i-->>\ <<if (_a[_i] is "prune")>>\ <<set _meh to _a.splice(_i, 1)>> <<endif>>\ <</for>>\ <<for _i to _b.length -1; _i > -1; _i-->>\ <<if (_b[_i] is "prune")>>\ <<set _meh to _b.splice(_i, 1)>> <<endif>>\ <</for>>\ \ After round 2: a is: _a b is: _b <!-- round 3: add negatives -->\ <<for _i to 0; _i < _a.length; _i++>>\ <<set _b[_b.length] to (_a[_i] * -1)>>\ <</for>>\ <!-- good to go! --> \ <hr> debug: a: _a b: _b <hr> <<if _nc is false>>\ You climix immediately at the thought, closing your eyes and bouncing up and down in short, quick strokes of your buttcheecks against his pelvis to feel his full girth as deeply inside of you as you can. Looking down and seeing him still in submission, you gracefully slide your fingers over your boobs, almost wishing that he was the one feeling you up. But no, it's better that he lie still. Inhaling a deep breath, you stand to put your clothes back on, leaving him on the ground as you walk away. <<endif>>\ She walked over towards the man's naked form that laid sprawled across a bed in their shared hotel room where they were both staying after having just finished up with an intense battle between them, which she was now going to win by using every single one of his body parts as if it had been her own. She reached down and began stroking the man's erect penis through its thick veins that ran all over this male human form like a river flowing from head to toe; he could feel how wet she was getting with excitement just by being in such close proximity of his naked body, which made him want her even more than before. She leaned down and began kissing the man's neck as if it were some kind of sweet treat that had been left out for them to enjoy together; he could feel how wet she was getting with excitement just by being in such close proximity of his naked body, which made him want her even more than before. <!-- snippets (reference: Unable to continue, the fox-man collapses to the ground. Grabbing him under the jaw, you squeeze to force his mouth open and examine his teeth. They're sharper than you'd prefer, but nothing ventured nothing gained. Jamming your cock down his throat, the sensation of him gagging around your member fills you with unexpected lust. Figuring that if you push on his throat hard enough he won't be able to bite, you wrap your hands around the back of his head and begin ramming clear down to his esophagus. It's all he can do just to keep breathing, and the peculiar mouth-opening-and-closing motion his struggles make remind you of the endless licking of a cat eating peanut butter. Laughing at the thought, you shout "peanut butter!" and climax all over his throat. ) -->\ <!-- maybe-salvagable snippets from prior version _______________________________________ The bunny girl looks at you with interest. Collapsing to her knees, the bunny gives you a 'what now?' look. As if to answer, you walk over and stand over her with your legs slightly spread and reach down with both hands to cup her enormous breasts. "Ooohh!!" she giggles. "I can work with that." Gazing up into your eyes with a smile, she happily unbuckles your pants and inhales happily at the sight of your cock. "Oh noes, I have been defeated!" the bunny collapses to her knees with an exagerated sigh. "Whatever shall happen to me now?" Amused by her antics, your can't help but feel your gaze drawn to her enormous cock as she begins stroking it in your direction with her eyes half-lidded. You feel your pussy lips moisten just thinking about it, but it's as big as your forearm and "You won the fight," she reminds you, tracing a finger between her breasts with one hand while she continues to stroke her dripping cock. "Aren't you going to cum claim your prize?" -->\<<InitPC $CC>>\ <<set _availperks to $PC[$CC][$PCretirementcap]>>\ <<GrabData "achievements">>\ \ <<GainPerksFromAchievements>>\ <<set _statnames to ["Strength","Dexterity","Toughness","Intellect","Willpower"]>>\ @@color:LightGreen;Name:@@ <<textbox "$PC[$CC][$PCname]" $PC[$CC][$PCname]>> <<button "[Random]">>\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _foo to either("Atlas","Bahadur","Calderon","Dante","Einhard","Falkner","Gabriel","Hadrian","Icarus","Jacques","Kaden","Luke","Maximillian")>>\ <<else>>\ <<set _foo to either("Adria","Brunhilda","Cassandra","Deirdre","Elizabeth","Felicity","Gabrielle","Haley","Isabelle","Jade","Katalinka","Luna","Maeve")>>\ <<endif>>\ <<set $PC[$CC][$PCname] to _foo>>\ <<set _throwaway to setup.updatenametextbox()>>\ <</button>> @@color:LightGreen;Sex:@@ <span id ="sex"><<print $PC[$CC][$PCsex]>></span> \ <<button "[Male]">>\ <<replace "#sex">>Male<</replace>>\ <<set $PC[$CC][$PCsex] to "male">>\ <<set _p to $ImgPath + $PC[$CC][$PCsex] + $PC[$CC][$PCavatar] +".png">>\ <<replace "#avatar-img">>\ <img @src="_p" style="width:150px">\ <</replace>>\ <</button>> \ <<button "[Female]">>\ <<replace "#sex">>Female<</replace>>\ <<set $PC[$CC][$PCsex] to "female">>\ <<set _p to $ImgPath + $PC[$CC][$PCsex] + $PC[$CC][$PCavatar] +".png">>\ <<replace "#avatar-img">>\ <img @src="_p" style="width:150px">\ <</replace>>\ <</button>> @@color:LightGreen;Generation:@@ <<print $PC[$CC][$PCgen]>> \ <<set $PC[$CC][$PCavatar] to 1>>\ <<set _p to $ImgPath + "male1.png">>\ <span id="avatar-img">\ <img @src="_p" style="width:150px">\ </span>\ <br>\ <<button "<-">>\ <<set $PC[$CC][$PCavatar] to $PC[$CC][$PCavatar] -1>>\ <<if $PC[$CC][$PCavatar] < 1>>\ <<set $PC[$CC][$PCavatar] to 9>>\ <<endif>>\ <<set _p to $ImgPath + $PC[$CC][$PCsex] + $PC[$CC][$PCavatar] +".png">>\ <<replace "#avatar-img">>\ <img @src="_p" style="width:150px">\ <</replace>>\ <</button>>\ <<button "->">>\ <<set $PC[$CC][$PCavatar] to $PC[$CC][$PCavatar] +1>>\ <<if $PC[$CC][$PCavatar] > 9>>\ <<set $PC[$CC][$PCavatar] to 1>>\ <<endif>>\ <<set _p to $ImgPath + $PC[$CC][$PCsex] + $PC[$CC][$PCavatar] +".png">>\ <<replace "#avatar-img">>\ <img @src="_p" style="width:150px">\ <</replace>>\ <</button>> \ <hr>\ @@color:Yellow;Attribute points available@@: <span id="avail"><<print $PC[$CC][$PCunspentPoints]>></span> <<for _i to 7; _i < 12; _i++>>\ <<capture _i>>\ <<button "[+]">>\ <<set _bar to "#" + "stat_" + _i>>\ <<if ($PC[$CC][$PCunspentPoints] > 0) and ($PC[$CC][_i] < 14)>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][_i] to $PC[$CC][_i] + 1>>\ <<endif>>\ <<replace "#avail">>\ <<print $PC[$CC][$PCunspentPoints]>>\ <</replace>>\ <<replace _bar>>\ <<print $PC[$CC][_i]>>\ <</replace>>\ <<set _descstat to "#descstat" + _i>>\ <<replace _descstat>>\ <<DescribeStat _i>>\ <</replace>>\ <</button>> \ <<button "[-]">>\ <<set _bar to "#" + "stat_" + _i>>\ <<if ($PC[$CC][_i] > 6)>>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] + 1>>\ <<set $PC[$CC][_i] to $PC[$CC][_i] - 1>>\ <<endif>>\ <<replace "#avail">>\ <<print $PC[$CC][$PCunspentPoints]>>\ <</replace>>\ <<replace _bar>>\ <<print $PC[$CC][_i]>>\ <</replace>>\ <<set _descstat to "#descstat" + _i>>\ <<replace _descstat>>\ <<DescribeStat _i>>\ <</replace>>\ <</button>> \ <<set _foo to "stat_" + _i>>\ <span @id =_foo><<print $PC[$CC][_i]>></span> | \ <<print _statnames[_i -7]>> \ <<set _descstat to "descstat" + _i>>\ (<span @id="_descstat"><<DescribeStat _i>></span>)\ <</capture>>\ <br>\ <</for>>\ <hr> @@color:Gold;Character class@@: <span id="charclass">None</span> <<set $PC[$CC][$PCclass] to 0>>\ <<GrabData "class">>\ <span id="classdesc">\ You are an unremarkable nobody from the lower class, with no particular learned skills or abilities. </span>\ <span id="class0">\ <<button "[None]">>\ <<replace "#classdesc">>You are an unremarkable nobody from the lower class, with no particular learned skills or abilities.<br><</replace>>\ <<replace "#hint">><br><</replace>>\ <<set $PC[$CC][$PCclass] to 0>>\ <<set _asd to setup.ChangeButtonClass("class0","highlightb")>> <</button>> \ </span>\ \ <<for _i to 0; _i < _classes.length; _i++>>\ <<set _req to _classes[_i].aptr>>\ <<if $Achievements[_req] is true>>\ <<capture _i>>\ <<set _btext to "[" + _classes[_i].name + "]">>\ <<set _spanid to "class" + _i>>\ <span @id="_spanid">>\ <<button _btext>> <<set $PC[$CC][$PCclass] to _i>>\ <<replace "#classdesc">><<print _classes[_i].show>><</replace>>\ <<replace "#hint">>Unlocked by: <<print _classes[_i].clue>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<else>>\ <<capture _i>>\ <<set _btext to "[" + _classes[_i].name + "]">>\ <<set _spanid to "class" + _i>>\ <span class="grayb" @id="_bspanid">\ <<button "_btext">> <<replace "#hint">>@@color:LightGreen;Hint:@@ <<print _classes[_i].hint>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<endif>>\ <</for>> <span id ="hint"><br></span>\ \ <hr>\ \ @@color:Yellow;Perks@@: <span id="availperks">_availperks</span> <span id="perkdesc"><br></span>\ <span id="perk0">\ <<button "[Starter]">>\ <<if $PC[$CC][$PCperks][0] is 1>> <<set $PC[$CC][$PCperks][0] to 0>>\ <<set _availperks to _availperks +1>> <<replace "#perkdesc">><br><</replace>>\ <<replace "#perkhint">><br><</replace>>\ <<set _asd to setup.ChangeButtonClass("perk0","blueb")>> <<elseif _availperks < 1>> <<replace "#perkhint">>You don't have any perk points left<</replace>>\ <<else>>\ <<set $PC[$CC][$PCperks][0] to 1>>\ <<set _availperks to _availperks -1>> <<replace "#perkdesc">>Start with a weapon, food and some extra money<br><</replace>>\ <<replace "#perkhint">><br><</replace>>\ <<set _asd to setup.ChangeButtonClass("perk0","highlightb")>> <<endif>>\ <<replace "#availperks">>_availperks<</replace>>\ <</button>> \ </span>\ \ <<for _i to 1; _i < _achieves.length; _i++>>\ <<if _achieves[_i].type is "perk">>\ <<if $Achievements[_i] is 1>>\ <<capture _i>>\ <<set _btext to "[" + _achieves[_i].name + "]">>\ <<set _spanid to "perk" + _i>>\ <span @id="_spanid">\ <<button _btext>> <<set _bID to "perk" + _i>>\ <<if $PC[$CC][$PCperks][_i] is 1>> <<set $PC[$CC][$PCperks][_i] to 0>> <<set _availperks to _availperks +1>> <<replace "#perkdesc">><br><</replace>>\ <<replace "#perkhint">><br><</replace>>\ <<set _asd to setup.ChangeButtonClass(_bID, "blueb")>> <<elseif _availperks < 1>> <<replace "#perkhint">>You don't have any perk points left<</replace>>\ <<else>> <<set $PC[$CC][$PCperks][_i] to 1>>\ <<set _availperks to _availperks -1>> <<replace "#perkdesc">><<print _achieves[_i].gain>><br><</replace>>\ <<replace "#perkhint">>Unlocked by: <<print _achieves[_i].clue>><</replace>>\ <<set _asd to setup.ChangeButtonClass(_bID, "highlightb")>> <<endif>> <<replace "#availperks">>_availperks<</replace>>\ <</button>> \ </span>\ <</capture>>\ <<else>>\ <<capture _i>>\ <span class="grayb">\ <<set _btext to "[" + _achieves[_i].name + "]">>\ <<button _btext>> <<replace "#perkhint">>@@color:LightGreen;Hint:@@ <<print _achieves[_i].hint>><</replace>>\ <</button>> \ </span>\ <</capture>>\ <<endif>>\ <<endif>>\ <</for>>\ <br>\ <span id="perkhint"><br></span>\ <hr>\ <span id="KeypOne">\ <<link "1) Save and continue" "Preamble">> <<set _PTemp to []>>\ <<for _i to 0; _i < $PC[$CC][$PCperks].length; _i++>> <<if $PC[$CC][$PCperks][_i] is 1>> <<set _PTemp[_PTemp.length] to _achieves[_i].name>> <<endif>>\ <</for>> <<set $PC[$CC][$PCperks] to _PTemp>> <<set $PC[$CC][$PCstate] to "alive">> <<set $PC[$CC][$PChpcur] to $PC[$CC][$PCcon]>> <<set $PC[$CC][$PChpmax] to $PC[$CC][$PCcon]>> <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCint]>> <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCint]>> <<set $PC[$CC][$PChornymax] to $PC[$CC][$PCwil] * 10>>\ <<set _th to $PC[$CC][$PCdex] - 10>>\ <<set $PC[$CC][$PCtohit] to _th * 5>> <<if $PC[$CC][$PCsex] is "male">> <<set _ads to setup.addtoinven([300,150,0,0])>><!-- shirt --> <<set _ads to setup.addtoinven([303,150,0,0])>><!-- pants --> <<set _ads to setup.addtoinven([305,150,0,0])>><!-- shoes --> <<set _nextbp to setup.getnextbodypart()>>\ <<set _penis to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPpenis, equip: [-1,0,0,0], morph: "human", mascfem: 0, size: _penis, equippable: false}>>\ <<else>> <<set _boobs to 20+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _boobs * _boobs * 100>> <<set _pussy to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _ads to setup.addtoinven([301,150,0,0])>><!-- blouse --> <<set _ads to setup.addtoinven([304,150,0,0])>><!-- skirt --> <<set _ads to setup.addtoinven([306,151,0,0])>><!-- boots --> <<set _nextbp to setup.getnextbodypart()>>\ <<set $PC[_initwho][$PCbp][_nextbp] to { type: $BPboobs, equip: [-1,0,0,0], morph: "human", mascfem: 0, size: _boobs, equippable: false}>>\ <<set $PC[_initwho][$PCbp][_nextbp+1] to { type: $BPpussy, equip: [-1,0,0,0], morph: "human", mascfem: 0, size: _pussy, equippable: false}>>\ <<endif>> <<if setup.PlayerHasPerk("Starter") is true>> <!-- starter perk --> <<set _ads to setup.addtoinven([204,101,0,0])>><!-- staff --> <<set _ads to setup.addtoinven([106,0,3,0])>><!-- apples --> <<set $PC[$CC][$PCcoins] to 100>> <<endif>>\ <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>> <<if _job is "mage">>\ set $PC[$CC][$PCspellbook].firebolt to true>>\ set $PC[$CC][$PCspellbook].any to true>>\ <<endif>>\ <<if _job is "rogue">>\ <<set _ads to setup.addtoinven([115,0,3,0])>><!-- lockpicks --> <<endif>>\ <<UpdateAC>>\ <<GetPlayerAbsorption>>\ run memorize('TowerRoster', $PC) <<AutoSaveLoad "set">> <</link>>\ </span> <span id="KeypTwo">\ <<link "2) Cancel without saving" "Preamble">> <</link>>\ </span>\ unallocated ideas: Event 100 Fountain Event 101 "Strange puddle" money/acid/liquid?/slime? Event 102 "Shattered bedroom" take a nap: rest or monster rape Event 103 "Treasure chest" Event 104 food barrel Event 105 masturbating npc some sort of random sex event / walk in on somebody asking for sex help? Event 106 "Abandoned Bookcase" spellbook or learn spell 107 Prisoner cage 108 Statue 109 Throne 110 Glory hole 111 Kennel? 112 113 114 115 116 117 118 119 blacksmith setup.ItemData = function(which) { var item = {}; if (which[0] is 200) { item = { Name: "dagger", MinDam: 1, MaxDam: 4, AttType: "pierce", Hands: 1, Price: 50, Slot: "$BPWield", ToolEffect: 2 } } else if (which[0] is 201) { item = { Name: "club", MinDam: 1, MaxDam: 4, AttType: "crush", Hands: 1, Price: 30, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 202) { item = { Name: "hatchet", MinDam: 1, MaxDam: 4, AttType: "crush/slash", Hands: 1, Price: 50, Slot: "$BPWield", ToolEffect: 3 } } else if (which[0] is 203) { item = { Name: "pitchfork", MinDam: 1, MaxDam: 4, AttType: "pierce", Hands: 2, Price: 50, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 204) { item = { Name: "staff", MinDam: 1, MaxDam: 4, AttType: "crush", Hands: 2, Price: 25, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 205) { item = { Name: "sword", MinDam: 2, MaxDam: 10, AttType: "slash", Hands: 1, Price: 125, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 206) { item = { Name: "mace", MinDam: 1, MaxDam: 8, AttType: "crush", Hands: 1, Price: 100, Slot: "$BPWield", ToolEffect: 5 } } else if (which[0] is 207) { item = { Name: "axe", MinDam: 4, MaxDam: 8, AttType: "crush/slash", Hands: 2, Price: 125, Slot: "$BPWield", ToolEffect: 3 } } else if (which[0] is 208) { item = { Name: "small shield", MinDam: 0, MaxDam: 0, Armor: 10, AttType: "block", Hands: 1, Price: 50, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 209) { item = { Name: "cooking knife", MinDam: 1, MaxDam: 2, AttType: "pierce", Hands: 1, Price: 10, Slot: "$BPWield", ToolEffect: 2 } } else if (which[0] is 210) { item = { Name: "medium shield", MinDam: 1, MaxDam: 2, Armor: 20, AttType: "block", Hands: 1, Price: 150, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 211) { item = { Name: "tower shield", MinDam: 0, MaxDam: 0, Armor: 30, AttType: "block", Hands: 1, Price: 300, Slot: "$BPWield", ToolEffect: 0 } } else if (which[0] is 212) { item = { Name: "war hammer", MinDam: 0, MaxDam: 0, AttType: "crush", Hands: 1, Price: 300, Slot: "$BPWield", ToolEffect: 0 } }; return item; };<<silently>>\ <<AddToLog "Arriving in DunGen">>\ <<set _pz to $PC[$CC][$PCz]>>\ <<if $WORLD.dungenned[_pz] > 0>>\ @@color:Red;Error: Request to generate a level that already exists@@ Proceeding anyway... <<set _foo to "Requesting regen of zlevel: " + _pz>>\ <<AddToLog _foo>>\ <<endif>>\ \ <<set $WORLD.dungenned[$PC[$CC][$PCz]] to 1>>\ \ <<set $Dungeon[_pz] to []>>\ <<set $Dungeon[_pz] to setup.Snake()>>\ \ <!-- room description -->\ <<set _descriptions to []>> <<for _i to 0; _i < 49; _i++>>\ <<set _descriptions[_i] to _i>>\ <</for>>\ <<for _i to 0; _i < 49; _i++>>\ <<set _dgr to random(0, _descriptions.length-1)>>\ <<set _shuffletemp to _descriptions[_i]>>\ <<set _descriptions[_i] to _descriptions[_dgr]>>\ <<set _descriptions[_dgr] to _shuffletemp>>\ <</for>>\ <<set _dgcount to 0>>\ <<for _i to 0; _i < $WORLD.dundim +1; _i++>>\ <<for _j to 0; _j < $WORLD.dundim +1; _j++>>\ <<set $Dungeon[_pz][_i][_j][8] to _descriptions[_dgcount]>>\ <<set _dgcount = _dgcount +1>>\ <</for>>\ <</for>>\ \ <<if _pz is 1>>\ <<set _stairsx to either(0, 6)>>\ <<set _stairsy to either(0, 6)>>\ <<set $WORLD.TowerOrigin to [_stairsx, _stairsy]>>\ <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsDown">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<set $PC[$CC][$PCx] to _stairsx>>\ <<set $PC[$CC][$PCy] to _stairsy>>\ <<set _stairsx to random(2,4)>> <<set _stairsy to random(2,4)>> <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsUp">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<else>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <!-- implement: stairs should be placed via longest snake path -->\ <<set $Dungeon[_pz][_px][_py][11] to "StairsDown">>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<set _stairsx to _px - random(3,4)>>\ <<set _stairsy to _py - random(3,4)>>\ <<if _stairsx < 0>>\ <<set _stairsx to _stairsx + $WORLD.dundim>>\ <<elseif _stairsx > $WORLD.dundim -1>>\ <<set _stairsx to _stairsx - $WORLD.dundim>>\ <<endif>> <<if _stairsy < 0>>\ <<set _stairsy to _stairsy + $WORLD.dundim>>\ <<elseif _stairsy > $WORLD.dundim -1>>\ <<set _stairsy to _stairsy - $WORLD.dundim>>\ <<endif>> <<set $Dungeon[_pz][_stairsx][_stairsy][11] to "StairsUp">>\ <<set $Dungeon[_pz][_stairsx][_stairsy][12] to 0>>\ <<endif>>\ \ <<set _throwaway to setup.PlaceDunEvents(_pz)>>\ \ <<set _floor to either("Cobble","White","Brick")>>\ <<set _walls to 1>>\ <<set $WORLD.dungeonthemes[_pz] to [_floor, _walls]>>\ \ <<set $WORLD.dungenned[_pz +1] to 0>>\ <</silently>>\ Config.history.maxStates = 2; /* config.history.controls = false; */ config.saves.isAllowed = function () { return tags().contains("savable"); }; $('#ui-bar-toggle').remove(); setup.XpNeeded = function(level) { var n = (2^level) * 10; return n; }; /* Array/object functions: why are js array methods so obtuse? */ setup.Stringify = function(a) { return JSON.stringify(a); }; setup.RemoveEveryOneOf = function(This, FromThis) { var i; for (i = FromThis.length -1; i > -1; i--) { if (FromThis[i] == This) { FromThis.splice(i,1); }; }; return FromThis; }; setup.FindInANotB = function(a, b) { var i; for (i = 0; i < b.length; i++) { if (b[i][1] == "used") { } else { if (b[i][0] == a) { return -1; }; }; }; return "yes"; }; setup.FindInBoth = function(a, b) { var i; for (i = 0; i < b.length; i++) { if (b[i][1] == "used") { } else { if (b[i][0] == a) { return i; }; }; }; return -1; }; / * end array functions */ /* Quest functions */ setup.IsQuestFinished = function(which) { /* This would be terribly complicated. try to not need it */ var tf = false; if (which == 0) { } else if (which == 1) { var meep = 0; if (State.variables.WORLD.selene > 0) { meep = meep +1; }; if (State.variables.WORLD.smith > 0) { meep = meep +1; }; if (State.variables.WORLD.gstore > 0) { meep = meep +1; }; if (State.variables.WORLD.pawn > 0) { meep = meep +1; }; if (meep > 2) { tf = true; }; } else if (which == 2) { } else if (which == 3) { } else if (which == 4) { } else if (which == 5) { } else if (which == 6) { } else if (which == 7) { } else if (which == 8) { } else if (which == 9) { } else if (which == 10) { }; return tf; }; setup.ShowQuestProgress = function(which) { return "(Implement quest progress)"; }; /* End quest functions */ setup.PlayerHasPerk = function(Which) { var perks = State.variables.PC[State.variables.CC][State.variables.PCperks]; var i = 0; for (i = 0; i < perks.length; i++) { if (perks[i] == Which) { return true; }; }; return false; }; / * kill count ptr back and forth */ setup.MonNameToKillPTR = function(mon) { if (mon == "bunny") { return 0; } else if (mon == "cat") { return 1;} else if (mon == "fox") { return 2;} else if (mon == "wolf") { return 3;} else if (mon == "horse") { return 4;} else if (mon == "centaur") { return 5;} else if (mon == "human") { return 6;} else if (mon == "goblin") { return 7;} else if (mon == "slime") { return 8;} else if (mon == "spider") { return 9;} else if (mon == "imp") { return 10;} else if (mon == "hellhound") { return 11;} else if (mon == "cow") { return 12;} else if (mon == "minotaur") { return 12;} else if (mon == "drider") { return 13;} else if (mon == "tentacle") { return 14;} else if (mon == "demon") { return 15;} else if (mon == "succubus") { return 15;} else if (mon == "incubus") { return 15;} else if (mon == "omnibus") { return 15;} else { return "-1"; }; }; setup.KillPTRToMonName = function(ptr) { /* special cases can't go backwards with available data */ var mons = ["bunny","cat","fox","wolf","horse","centaur","human","goblin","slime","spider","imp","hellhound","minotaur","drider","tentacle","demon"]; return mons[ptr]; }; /* end kill count ptr back and forth */ setup.MapClick = function(a) { if (a == "Slums") { Engine.play("Slums"); } else if (a == "Garden") { Engine.goToPassage("Garden"); }; }; setup.al = function(what) { var foo = State.variables.GameLog + what + "<br>"; State.variables.GameLog = foo; }; setup.AddBodyPart = function(who, bp) { var n = setup.getnextbodypart(); var bpPTR = State.variables.PCbp; var haircol = either("blonde","brown","red"); if (bp == State.variables.BPhead) { State.variables.PC[who][bpPTR][n] = { type: bp, equip: [0,0,0,0], morph: "human", mascfem: 0, hair: haircol, length: 3, equippable: true}; } else if (bp == State.variables.BPwield) { State.variables.PC[who][bpPTR][n] = { type: bp, equip: [0,0,0,0], morph: "human", mascfem: 0, equippable: true, attacktype: "punch", mindam: 1, maxdam: 2, attackdesc: ""}; } else { State.variables.PC[who][bpPTR][n] = { type: bp, equip: [0,0,0,0], morph: "human", mascfem: 0, equippable: true}; }; return n; }; setup.RemoveBodyPart = function(who, type){ var bpPTR = State.variables.PCbp; var i = 0; var body = State.variables.PC[who][bpPTR]; for (i = body.length -1; i > -1; i--) { if (body[i].type == type) { alert(JSON.stringify(State.variables.PC[who][bpPTR][i])); var meh = State.variables.PC[who][bpPTR].splice(i, 1); alert(JSON.stringify(meh)); return meh[0]; }; }; }; setup.FetchBodyPart = function(who, type){ var bpPTR = State.variables.PCbp; var i = 0; var body = State.variables.PC[who][bpPTR]; for (i = body.length -1; i > -1; i--) { if (body[i].type == type) { return i; }; }; }; setup.GetMorphFormatted = function(TheMorph) { var r = "Error: unrecognized morph: " + TheMorph; if (TheMorph == "bunny") { r = "@@color:LightGreen;bunny@@"; } else if (TheMorph == "cat") { r = "@@color:LightGreen;cat@@"; } else if (TheMorph == "fox") { r = "@@color:LightGreen;fox@@"; } else if (TheMorph == "wolf") { r = "@@color:LightGreen;wolf@@"; } else if (TheMorph == "horse") { r = "@@color:LightGreen;horse@@"; } else if (TheMorph == "centaur") { r = "@@color:LightGreen;centaur@@"; } else if (TheMorph == "human") { r = "@@color:Aqua;human@@"; } else if (TheMorph == "goblin") { r = "@@color:Yellow;goblin@@"; } else if (TheMorph == "slime") { r = "@@color:Yellow;slime@@"; } else if (TheMorph == "spider") { r = "@@color:Yellow;spider@@"; } else if (TheMorph == "imp") { r = "@@color:Yellow;imp@@"; } else if (TheMorph == "hellhound") { r = "@@color:Orange;hellhound@@"; } else if (TheMorph == "cow") { r = "@@color:Orange;cow@@"; } else if (TheMorph == "minotaur") { r = "@@color:Orange;minotaur@@"; } else if (TheMorph == "drider") { r = "@@color:Orange;drider@@"; } else if (TheMorph == "tentacle") { r = "@@color:Red;tentacle@@"; } else if (TheMorph == "demon") { r = "@@color:Red;@@"; } else if (TheMorph == "succubus") { r = "@@color:Red;demon@@"; } else if (TheMorph == "incubus") { r = "@@color:Red;demon@@"; } else if (TheMorph == "omnibus") { r = "@@color:Red;demon@@"; } else { r = "format needed for this morph: " + TheMorph; }; return r; }; setup.GetStandardSex = function() { var CC = State.variables.CC; var sexptr = State.variables.PCsex; var sex = State.variables.PC[CC][sexptr]; var monsex = "female"; if (sex == "female") { if (random(1,10) < 8) { monsex = "male"; }; } else if (sex == "male") { if (random(1,10) < 4) { monsex = "male"; }; } else { if (random(1,10) < 6) { monsex = "male"; }; }; if (random(1,10) < 3) { monsex = "herm"; }; return monsex; }; setup.HasQuestMonsterParts = function(PartType, MonsterSource) { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == PartType) { if (Inven[i][3] == MonsterSource) { return i; } }; }; return -1; }; setup.HasRope = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 1) { return i; }; }; return -1; }; setup.HasHammer = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 101) { return i; } else if (Inven[i][0] == 206) { return i; }; }; return -1; }; setup.HasPick = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 115) { return i; }; }; return -1; }; setup.HasAxe = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 202) { return i; } else if (Inven[i][0] == 207) { return i; }; }; return -1; }; setup.HasBottle = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 180) { return i; }; }; return -1; }; setup.HasButcherTool = function() { var Inven = State.variables.PC[State.variables.CC][State.variables.PCinven]; var i; for (i = 0; i < Inven.length; i++) { if (Inven[i][0] == 113) { return i; } else if (Inven[i][0] == 200) { return i; } else if (Inven[i][0] == 209) { return i; }; }; return -1; }; setup.additemtoinv = function(who, item, stackable) { var PCinven = State.variables.PCinven; var PCmaxinvenPTR = State.variables.PCmaxinven; var actualloops = State.variables.PC[who][PCmaxinvenPTR]; var i = 0; var holder = 0; if (stackable == true) { item[2] = 1; for (i = 0; i < actualloops; i++) { var a = item[0]; var b = parseInt(State.variables.PC[who][PCinven][i][0]); var c = item[3]; var d = parseInt(State.variables.PC[who][PCinven][i][3]); if (a == b) { if (c == d) { State.variables.PC[who][PCinven][i][2]++; return [i, true]; }; }; }; }; for (let i = 0; i < actualloops; i++) { if (State.variables.PC[who][PCinven][i][0] == 0) { State.variables.PC[who][PCinven][i] = item; return [i, false]; }; }; return [-1, false]; }; setup.additemtostore = function(which, item, stackable) { var STORE = State.variables.STORE[which]; var actualloops = STORE.length; var i = 0; var holder = 0; if (stackable == true) { for (i = 0; i < actualloops; i++) { var a = parseInt(item[0]); var b = parseInt(STORE[i][0]); var c = parseInt(item[3]); var d = parseInt(STORE[i][3]); if (a == b) { if (c == d) { State.variables.STORE[which][i][2] = State.variables.STORE[which][i][2] +1; return [i, true]; }; }; }; }; for (let i = 0; i < actualloops; i++) { if (State.variables.STORE[which][i][0] == 0) { State.variables.STORE[which][i] = item; return [i, false]; }; }; return [-1, false]; }; /* Custom functions */ setup.pluralize = function (itemdesc, qty) { var foo; if (qty > 1) { foo = "" + qty + " " + itemdesc.replace("~", "s"); } else { foo = qty + " " + itemdesc.replace("~", ""); }; return foo; }; setup.Bang = function (fullname, rep) { var foo = fullname.replace("!", rep); return foo; }; setup.getfrom = function(qty, pool) { var i = 0; var onlythese = []; for (i = 0; i < qty; i++) { onlythese[i] = pool.splice(random(0, (pool.length -1)),1); }; return onlythese; }; setup.stringhack = function (foo) { var thisis = foo.toString(); var very = thisis; var strange = very.substr(0,5); return strange; }; setup.updatenametextbox = function() { var CC = State.variables.CC; var nameptr = State.variables.PCname; document.getElementById("textbox-pcccpcname").value = State.variables.PC[CC][nameptr]; }; setup.getnextbodypart = function() { var CC = State.variables.CC; var PCbp = State.variables.PCbp; var bp = State.variables.PC[CC][PCbp]; return bp.length; }; setup.getbpqty = function(who, type) { var PCbp = State.variables.PCbp; var bp = State.variables.PC[who][PCbp]; var count = 0; for (let i = 0; i < bp.length; i++) { if (bp[i].type == type) { count = count +1; } }; return count; }; setup.getparttypeqty = function(who, type) { var PCbp = State.variables.PCbp; var bp = State.variables.PC[who][PCbp]; var count = 0; for (let i = 0; i < bp.length; i++) { if (bp[i].morph == type) { count = count +1; } }; return count; }; setup.getnextinvslot = function(who) { var PCinven = State.variables.PCinven; var PCmaxinven = State.variables.PCmaxinven; for (let i = 0; i < PCmaxinven; i++) { if (State.variables.PC[who][PCinven][i][0] == 0) { return i; } }; return -1; }; setup.getunequippedofslottype = function(who, slottype) { var PCbp = State.variables.PCbp; var bp = State.variables.PC[who][PCbp]; for (let i = 0; i < bp.length; i++) { if (bp[i].type == slottype) { if (bp[i].equip[0] == 0) { return i; } } }; return -1; }; setup.DoesPlayerHave = function(itemreq) { var who = State.variables.CC; var PCinven = State.variables.PCinven; var PCmaxinven = State.variables.PCmaxinven; var a = itemreq[0]; var b = itemreq[1]; var c = itemreq[2] var d = itemreq[3] var comp = [0,0,0,0]; var i = 0; for (i = 0; i < PCmaxinven; i++) { comp = State.variables.PC[who][PCinven][i]; if (a == "*" || comp[0] == itemreq[0]) { if (b == "*" || comp[1] == itemreq[1]) { if (c == "*" || comp[2] == itemreq[2]) { if (d == "*" || comp[3] == itemreq[3]) { return i; }; }; }; }; }; return -1; }; setup.addtoinven = function(item) { var CC = State.variables.CC; var PCinven = State.variables.PCinven; var PCmaxinven = State.variables.PCmaxinven; for (let i = 0; i < PCmaxinven; i++) { if (State.variables.PC[CC][PCinven][i][0] == 0) { State.variables.PC[CC][PCinven][i] = item; return i; } }; return -1; }; setup.RemoveOneItemFromInv = function(who, slot) { var CurQty = State.variables.PC[who][State.variables.PCinven][slot][2]; if (CurQty < 2) { State.variables.PC[who][State.variables.PCinven][slot] = [0,0,0,0]; } else { State.variables.PC[who][State.variables.PCinven][slot] = CurQty -1; }; return true; }; setup.GenLoot = function(mon, sex) { var loot = [100,0,0,0]; if (mon == "goblin") { loot = [103,0,0,0]; } else if (mon == "slime girl") { loot = [103,0,0,0]; }; return loot; }; setup.HasTool = function(effect) { return -1; }; setup.ChangeButtonClass = function(what, towhat) { document.getElementById(what).className = towhat; }; setup.PtrToClass = function(charclass) { var n = "error in setup.PtrToClass: " + charclass; if (charclass == 0) { n = "peasant"; } else if (charclass == 1) { n = "lumberjack"; } else if (charclass == 2) { n = "prostitute"; } else if (charclass == 3) { n = "warrior"; } else if (charclass == 4) { n = "scholar"; } else if (charclass == 5) { n = "priest"; } else if (charclass == 6) { n = "rogue"; } else if (charclass == 7) { n = "mage"; } else if (charclass == 8) { n = "barbarian"; } else if (charclass == 9) { n = "monk"; } else if (charclass == 10) { n = "ninja"; } else if (charclass == 11) { n = "paladin"; }; return n; }; setup.TFTextHack = function(morph, bp) { var a = "error"; var b = "error"; if (bp == 100) { a = morph + " head has become a "; b = morph + " head"; } else if (bp == 101) { a = morph + " neck has become a "; b = morph + " neck"; } else if (bp == 102) { a = morph + " back has become a "; b = morph + " back"; } else if (bp == 103) { a = morph + " chest has become a "; b = morph + " chest"; } else if (bp == 104) { a = morph + " arms have become "; b = morph + " arms"; } else if (bp == 105) { a = morph + " hands have become "; b = morph + " hands"; } else if (bp == 106) { a = morph + " fingers have become "; b = morph + " fingers"; } else if (bp == 107) { a = morph + " waist has become a "; b = morph + " waist"; } else if (bp == 108) { a = morph + " legs have become "; b = morph + " legs"; } else if (bp == 109) { a = morph + " feet have become "; b = morph + " feet"; } else if (bp == 110) { a = morph + " tail has become a "; b = morph + " tail"; } else if (bp == 111) { a = morph + "horns have become "; b = morph + " horns"; } else if (bp == 112) { a = morph + " wings have become "; b = morph + " wings"; } else if (bp == 113) { a = morph + " penis has become a "; b = morph + " penis"; } else if (bp == 114) { a = morph + " breasts have become "; b = morph + " breasts"; } else if (bp == 115) { a = morph + " pussy has become a "; b = morph + " pussy"; } else if (bp == 116) { a = "tentacles have "; b = "grown larger"; } else if (bp == 117) { a = morph + " stinger has become a "; b = morph + " stinger"; }; return [a,b]; }; setup.bpptrtoname = function(bp, formal) { var c = "error in setup.bpptrtoname: " + bp; var f = "error in setup.bpptrtoname: " + bp; var tf = "error in setup.bpptrtoname: " + bp; if (bp == 100) { f = "Head"; c = "head"; tf = "~ head"; } else if (bp == 101) { f = "Neck"; c = "neck"; tf = "~ neck"; } else if (bp == 102) { f = "Back"; c = "back"; tf = "~ back"; } else if (bp == 103) { f = "Chest"; c = "chest"; tf = "~ chest"; } else if (bp == 104) { f = "Wield"; c = "pair of arms"; tf = "pair of ~ arms"; } else if (bp == 105) { f = "Hands"; c = "pair of hands"; tf = "pair of ~ hands"; } else if (bp == 106) { f = "Ring"; c = "set of fingers"; tf = "~ fingers"; } else if (bp == 107) { f = "Waist"; c = "waist"; tf = "~ waist"; } else if (bp == 108) { f = "Legs"; c = "pair of legs"; tf = "pair of ~ legs"; } else if (bp == 109) { f = "Feet"; c = "pair of feet"; tf = "pair of ~ feet"; } else if (bp == 110) { f = "Tail"; c = "tail"; tf = "~ tail"; } else if (bp == 111) { f = "Horns"; c = "horns"; tf = "~ horns"; } else if (bp == 112) { f = "Wings"; c = "pair of wings"; tf = "pair of ~ wings"; } else if (bp == 113) { f = "Penis"; c = "penis"; tf = "~ penis"; } else if (bp == 114) { f = "Breasts"; c = "pair of breasts"; tf = "~ breasts"; } else if (bp == 115) { f = "Pussy"; c = "pussy"; tf = "~ pussy"; } else if (bp == 116) { f = "Tentacle"; c = "tentacle"; tf = "tentacle"; } else if (bp == 117) { f = "Stinger"; c = "stinger"; tf = "~ stinger"; }; if (formal == "casual") { return c; } else if (formal == "tf") { return tf; } else { return f; } }; setup.ChooseMon = function() { var CC = State.variables.CC; var PCz = State.variables.PCz; var diff = State.variables.PC[CC][PCz]; var mon = "goblin"; if (diff == 1) { mon = "goblin"; } else if (diff == 2) { mon = "goblin"; } else if (diff == 3) { mon = "goblin"; }; return mon; }; setup.GetFlirtPower = function(morph) { var frommorph = 0; var frompenis = 0; var fromboobs = 0; var frompussy = 0; var fromequip = State.variables.WORLD.FlirtFromEquip; var p = 0; var ispenis = State.variables.BPpenis; var isboobs = State.variables.BPboobs; var ispussy = State.variables.BPpussy; var CC = State.variables.CC; var PCbp = State.variables.PCbp; var bod = State.variables.PC[CC][PCbp]; var bp; var i = 0; for (i = 0; i < bod.length; i++) { bp = bod[i]; if (bp.morph == morph) { frommorph = frommorph + 1; }; if (bp.type == ispenis) { frompenis = frompenis + bp.size; } else if (bp.type == ispussy) { p = 80 - bp.size; if (p < 20) { p = 20; }; frompussy = frompussy + p; } else if (bp.type == isboobs) { fromboobs = fromboobs + bp.size; }; }; frompenis = frompenis / 10; frompussy = frompussy / 10; fromboobs = fromboobs / 100; return [frommorph, frompenis, fromboobs, frompussy, fromequip]; }; setup.DrawMap = function(px, py, tilesize) { var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var CC = State.variables.CC; var pcz = State.variables.PCz; var CurDunLev = State.variables[CC][pcz]; var Dungeon = State.variables.Dungeon[CurDunLev]; var DunDim = State.variables.WORLD.dundim; for (let i = 0; i < DunDim +1; i++) { for (let j = 0; j < DunDim +1; j++) { var imgname = "Map-"; if (Dungeon[i][j][0] > 0) { imgname = imgname + "N"; }; if (Dungeon[i][j][1] > 0) { imgname = imgname + "E"; }; if (Dungeon[i][j][2] > 0) { imgname = imgname + "S"; }; if (Dungeon[i][j][3] > 0) { imgname = imgname + "W"; }; if (imgname == "Map-") { imgname = "Map-Blank"; }; if (Dungeon[i][j][11] == "StairsUp") { imgname = "UpStairsBottom"; } else if (Dungeon[i][j][11] == "StairsDown") { imgname = "DownStairs"; }; if (Dungeon[i][j][15] == 0) { imgname = "Map-Blank"; }; if (tilesize == 64) { imgname = imgname + "64"; }; var img = document.getElementById(imgname); ctx.drawImage(img, i * tilesize, j * tilesize); }; }; ctx.fillStyle = "#fef4f4"; var ppx = 11 + (px * tilesize); var ppy = 11 + (py * tilesize); ctx.fillRect(ppx, ppy, (tilesize / 4), 10); }; setup.DrawForestMap64 = function(x, y, z, tilesize) { var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var Theme = State.variables.WORLD.ForestTheme; var allowdraw = false; var floor = "S64Forest-Grass" + Theme; var Forest = State.variables.ForestMap; var ForestDims = State.variables.WORLD.ForestDims; for (let i = 0; i <= ForestDims[0]; i++) { for (let j = 0; j < ForestDims[1]; j++) { allowdraw = true; /* Allow view by distance? */ var img = document.getElementById(floor); ctx.drawImage(img, i * tilesize, j * tilesize); /* Draw plants here */ if (Forest[i][j] == 0) { imgname = "empty"; } else if (Forest[i][j] == 1) { var imgname = "S64Forest-TallGrass"; } else if (Forest[i][j] == 2) { var imgname = "S64Forest-RedFlower"; } else if (Forest[i][j] == 3) { var imgname = "S64Forest-YellowFlower"; } else if (Forest[i][j] == 4) { var imgname = "S64Forest-BlueFlower"; } else if (Forest[i][j] == 5) { var imgname = "S64Forest-PurpleFlower"; } else if (Forest[i][j] == 99) { var imgname = "S64Forest-TreeTrunk"; } else if (Forest[i][j] == 100) { var imgname = "S64Forest-Tree1"; } else if (Forest[i][j] == 101) { var imgname = "S64Forest-Tree2"; } else if (Forest[i][j] == 102) { var imgname = "S64Forest-Tree3"; }; if (imgname == "empty") { } else { img = document.getElementById(imgname); ctx.drawImage(img, i * tilesize, j * tilesize); }; }; }; /* Minimap avatar */ img = document.getElementById("MiniAV"); ctx.drawImage(img, x * tilesize, y * tilesize); }; setup.DrawMap64 = function(x, y, z, tilesize) { var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var WORLD = State.variables.WORLD; var Theme = WORLD.dungeonthemes[z]; var allowdraw = false; var foo = "pcx: " + x + ", pcy: " + y + ", pcz: " + z + ", Theme: " + Theme; /* alert(foo); */ var floor = "S64FloorWhite"; floor = "S64Floor" + Theme[0]; var Dungeon = State.variables.Dungeon[z]; var DunDim = State.variables.WORLD.dundim; for (let i = 0; i < DunDim +1; i++) { for (let j = 0; j < DunDim +1; j++) { allowdraw = false; if (Dungeon[i][j][15] > 0) { allowdraw = true; }; var imgname = "S64Map-"; if (Dungeon[i][j][0] > 0) { imgname = imgname + "N"; }; if (Dungeon[i][j][1] > 0) { imgname = imgname + "E"; }; if (Dungeon[i][j][2] > 0) { imgname = imgname + "S"; }; if (Dungeon[i][j][3] > 0) { imgname = imgname + "W"; }; if (imgname == "Map-") { allowdraw = false; }; if (Dungeon[i][j][15] == 0) { allowdraw = false; }; if (allowdraw == true) { var img = document.getElementById(floor); ctx.drawImage(img, i * tilesize, j * tilesize); if (imgname == "S64Map-NESW") { } else { img = document.getElementById(imgname); ctx.drawImage(img, i * tilesize, j * tilesize); }; if (Dungeon[i][j][11] == "StairsUp") { if (Dungeon[i][j][3] > 0) { imgname = "S64StairsUpRight"; img = document.getElementById(imgname); } else { imgname = "S64StairsUpLeft"; img = document.getElementById(imgname); }; ctx.drawImage(img, i * tilesize, j * tilesize); } else if (Dungeon[i][j][11] == "StairsDown") { imgname = "S64StairsDown"; img = document.getElementById(imgname); ctx.drawImage(img, i * tilesize, j * tilesize); }; }; }; }; /* Minimap avatar */ img = document.getElementById("MiniAV"); ctx.drawImage(img, x * tilesize, y * tilesize); }; /* meters */ window.Health2 = function (CurHP, MaxHP, BarID, Horizontal, Container) { if (Container == undefined) { Container = document; } var HP = parseInt((CurHP / MaxHP) * 100); if (HP < 0) HP = 0; if (HP > 100) HP = 100; var BarElement = $(Container).find("#" + BarID); if (Horizontal) { BarElement.css( { width : HP + "%" } ); } else { BarElement.css( { height : HP + "%" } ); } // Hue goes from -20 to 240 = red (hue = 0) -> green -> blue (hue = 240) var col = "hsl(" + (Math.floor(HP * 2.6) - 20) + ", 100%, 50%)"; BarElement.css("background-color", col); BarElement.attr("title", CurHP + "/" + MaxHP + " HP"); $(Container).find("#" + BarID + "bkg").attr("title", CurHP + "/" + MaxHP + " HP"); }; /* Keypress */ $(document).on("keyup", function(dir) { if(dir.keyCode == 49){ $('#KeypOne a').trigger("click"); } else if(dir.keyCode == 50){ $('#KeypTwo a').trigger("click"); } else if(dir.keyCode == 51){ $('#KeypThree a').trigger("click"); } else if(dir.keyCode == 52){ $('#KeypFour a').trigger("click"); } else if(dir.keyCode == 53){ $('#KeypFive a').trigger("click"); } else if(dir.keyCode == 54){ $('#KeypSix a').trigger("click"); } else if(dir.keyCode == 55){ $('#KeypSeven a').trigger("click"); } else if(dir.keyCode == 56){ $('#KeypEight a').trigger("click"); } else if(dir.keyCode == 57){ $('#KeypNine a').trigger("click"); } else if(dir.keyCode == 32){ $('#KeypSpace a').trigger("click"); } else if(dir.keyCode == 87){ $('#KeypNorth a').trigger("click"); } else if(dir.keyCode == 68){ $('#KeypEast a').trigger("click"); } else if(dir.keyCode == 83){ $('#KeypSouth a').trigger("click"); } else if(dir.keyCode == 65){ $('#KeypWest a').trigger("click"); } else if(dir.keyCode == 67){ $('#KeypC a').trigger("click"); } else if(dir.keyCode == 70){ $('#KeypF a').trigger("click"); } else if(dir.keyCode == 82){ $('#KeypR a').trigger("click"); } else if(dir.keyCode == 89){ $('#KeypY a').trigger("click"); } else if(dir.keyCode == 78){ $('#KeypN a').trigger("click"); } else if(dir.keyCode == 73){ $('#KeypI a').trigger("click"); } else if(dir.keyCode == 81){ $('#KeypQ a').trigger("click"); } else if(dir.keyCode == 69){ $('#KeypE a').trigger("click"); } else if(dir.keyCode == 84){ $('#KeypT a').trigger("click"); } }); setup.ForestSnake = function() { var i = 0; var j = 0; var ForestDims = State.variables.WORLD.ForestDims; var ForestDimX = ForestDims[0]; var ForestDimY = ForestDims[1]; var Forest = []; for (i = 0; i <= ForestDimX; i++) { Forest[i] = []; for (j = 0; j < ForestDimY; j++) { Forest[i][j] = either(0,0,0,0,0,0,0,0,0,0,100,100,100,100,101,101,101,102); if (random(1,33) == 1) { Forest[i][j] = 1; } else if (random(1,100) == 42) { Forest[i][j] = either(2,3,4,5); }; }; }; /* this breaks easy forest redimensioning */ var maskhackleft = either(2,4); for (i = 0; i < 5; i++) { Forest[i][maskhackleft] = 0; }; var maskhackright = either(2,4); for (i = 10; i < 15; i++) { Forest[i][maskhackright] = 0; }; if (maskhackleft == 2) { if (maskhackright == 2) { Forest[5][1] = 0; Forest[5][0] = 0; Forest[6][0] = 0; Forest[7][0] = 0; Forest[7][1] = 0; Forest[8][1] = 0; Forest[8][2] = 0; Forest[9][2] = 0; } else { Forest[4][3] = 0; Forest[4][4] = 0; Forest[5][4] = 0; Forest[5][5] = 0; Forest[6][5] = 0; Forest[6][6] = 0; Forest[7][6] = 0; Forest[8][6] = 0; Forest[9][6] = 0; Forest[9][5] = 0; Forest[10][4] = 0; }; } else { if (maskhackright == 2) { Forest[4][3] = 0; Forest[5][3] = 0; Forest[5][2] = 0; Forest[6][2] = 0; Forest[7][2] = 0; Forest[8][2] = 0; Forest[8][1] = 0; Forest[9][1] = 0; Forest[10][1] = 0; Forest[11][1] = 0; Forest[11][2] = 0; Forest[11][3] = 0; } else { Forest[4][3] = 0; Forest[5][3] = 0; Forest[6][3] = 0; Forest[7][3] = 0; Forest[7][4] = 0; Forest[7][5] = 0; Forest[8][5] = 0; Forest[9][5] = 0; Forest[10][5] = 0; }; }; return Forest; }; setup.Snake = function() { var CC = State.variables.CC; var PCx = State.variables.PCx; var PCy = State.variables.PCy; var PCz = State.variables.PCz; var DunDims = State.variables.WORLD.dundim; DunDims = 7; var Dungeon = []; var Visited = []; var i = 0; var j = 0; for (i = 0; i < DunDims; i++) { Dungeon[i] = []; Visited[i] = []; for (j = 0; j < DunDims; j++) { Dungeon[i][j] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; Visited[i][j] = false; }; }; var StartX = State.variables.PC[CC][PCx]; var StartY = State.variables.PC[CC][PCy]; var zlevel = State.variables.PC[CC][PCz]; var SnakeX = 2; var SnakeY = 2; var whereto = 0; var wherefrom = 0; var pathstack = []; var endofstack = 0; var silly; var modX = 0; var modY = 0; var plen = 0; var dunpasser = []; Visited[SnakeX][SnakeY] = true; var bar = "Snake starts at: (" + SnakeX + ", " + SnakeY + ")"; setup.al(bar); var VisitedCount = 0; var TargetVisits = DunDims * DunDims; /* for (i = 0; i < 50; i++) { */ while (true) { dunpasser = Dungeon[SnakeX][SnakeY]; whereto = setup.DunGenDeadEnd(dunpasser, SnakeX, SnakeY, Visited); if (whereto < 0) { if (pathstack.length < 1) { return Dungeon; } else if (VisitedCount > TargetVisits -2) { return Dungeon; } else { /* alert("We acknowlege no path was available"); */ var foo = "Before, the pathstack is " + pathstack; /* alert(foo); */ setup.al(foo); silly = pathstack.pop(); /* alert("We have popped the pathstack"); */ var foo = "After,the pathstack is " + pathstack; /* alert(foo); */ /* setup.al(foo); */ endofstack = pathstack.length -1; SnakeX = pathstack[endofstack][0]; SnakeY = pathstack[endofstack][1]; }; } else { if (whereto == 0) { /* alert("Snake went north"); */ /* setup.al("Snake went north"); */ modX = 0; modY = -1; wherefrom = 2; } else if (whereto == 1) { /* alert("Snake went east"); */ /* setup.al("Snake went east"); */ modX = 1; modY = 0; wherefrom = 3; } else if (whereto == 2) { /* alert("Snake went south"); */ /* setup.al("Snake went south"); */ modX = 0; modY = 1; wherefrom = 0; } else if (whereto == 3) { /* alert("Snake went west"); */ /* setup.al("Snake went west"); */ modX = -1; modY = 0; wherefrom = 1; }; Dungeon[SnakeX][SnakeY][whereto] = 1; plen = pathstack.length; pathstack[plen] = [99, 99]; SnakeX = SnakeX + modX; SnakeY = SnakeY + modY; if (Visited[SnakeX][SnakeY] == true) { alert("Snaked visited a place he's already been to"); }; Visited[SnakeX][SnakeY] = true; VisitedCount = VisitedCount +1; bar = "Snake now visiting: (" + SnakeX + ", " + SnakeY + ")"; /* setup.al(bar); */ var snakepos = "Snake now at X: " + SnakeX + ", Y: " + SnakeY; pathstack[plen][0] = SnakeX; pathstack[plen][1] = SnakeY; if (SnakeX < 0) { alert("SnakeX < 0"); } ; if (SnakeY < 0) { alert("SnakeY < 0"); } ; Dungeon[SnakeX][SnakeY][wherefrom] = 1; }; }; return Dungeon; }; setup.DunGenDeadEnd = function(d, x, y, Visited) { var n = [0, d[0]]; var e = [1, d[1]]; var s = [2, d[2]]; var w = [3, d[3]]; var pool = [n,e,s,w]; var silly; var DunDims = 7; var foo; var i = 0; if (y < 1) { /* alert("Snake will crash if he goes north"); */ for (i = 0; i < pool.length; i++) { if (pool[i][0] == 0) { silly = pool.splice(i, 1); /* alert("And so north was removed"); */ }; }; }; if (x == DunDims -1) { /* alert("Snake will crash if he goes east"); */ for (i = 0; i < pool.length; i++) { if (pool[i][0] == 1) { silly = pool.splice(i, 1); /* alert("And so east was removed"); */ }; }; }; if (y == DunDims -1) { /* alert("Snake will crash if he goes south"); */ for (i = 0; i < pool.length; i++) { if (pool[i][0] == 2) { silly = pool.splice(i, 1); /* alert("And so south was removed"); */ }; }; }; if (x < 1) { /* alert("Snake will crash if he goes west"); */ for (i = 0; i < pool.length; i++) { if (pool[i][0] == 3) { silly = pool.splice(i, 1); /* alert("And so west was removed"); */ }; }; }; if (y > 0) { if (Visited[x][y -1] == true) { for (i = 0; i < pool.length; i++) { if (pool[i][0] == 0) { silly = pool.splice(i, 1); /* alert("north was removed because it's been visited"); */ }; }; }; }; if (x < DunDims -1) { if (Visited[x+1][y] == true) { for (i = 0; i < pool.length; i++) { if (pool[i][0] == 1) { silly = pool.splice(i, 1); /* alert("east was removed because it's been visited"); */ }; }; }; }; if (y < DunDims -1) { if (Visited[x][y +1] == true) { for (i = 0; i < pool.length; i++) { if (pool[i][0] == 2) { silly = pool.splice(i, 1); /* alert("south was removed because it's been visited"); */ }; }; }; }; if (x > 0) { if (Visited[x-1][y] == true) { for (i = 0; i < pool.length; i++) { if (pool[i][0] == 3) { silly = pool.splice(i, 1); /* alert("west was removed because it's been visited"); */ }; }; }; }; foo = "pool size is: " + pool.length; /* alert(foo); */ if (pool.length < 1) { /* alert("No options in pool, so snake must backtrack"); */ setup.al("No options in pool, so snake must backtrack"); return -1; }; var pickone = random(0, pool.length-1); if (pool[pickone][0] == 0) { foo = "Snake intends to go north"; } else if (pool[pickone][0] == 1) { foo = "Snake intends to go east"; } else if (pool[pickone][0] == 2) { foo = "Snake intends to go south"; } else if (pool[pickone][0] == 3) { foo = "Snake intends to go west"; }; /* alert(foo); */ return pool[pickone][0]; }; setup.GetMonByDLEV = function(lev) { var m = []; var p = []; if (lev < 1) { m = ["bunny","cat","fox","wolf"]; p = [25,25,25,25]; } else if (lev == 1) { m = ["human","goblin","slime"]; p = [20,50,30]; } else if (lev == 2) { m = ["human","goblin","slime"]; p = [10,50,40]; } else if (lev == 3) { m = ["human","goblin","slime","imp","demon"]; p = [10,30,40,10,5]; } else if (lev == 4) { m = ["human","goblin","slime","imp","tentacle","demon"]; p = [10,10,50,20,5,5]; } else if (lev == 5) { m = ["goblin","slime","imp","hound","tentacle","demon"]; p = [10,40,20,10,5,5]; } else if (lev == 6) { m = ["slime","imp","hound","tentacle","demon"]; p = [40,20,20,10,10]; } else if (lev == 7) { m = ["slime","hound","tentacle","demon"]; p = [10,50,10,10]; } else if (lev == 8) { m = ["hound","drider","tentacle","demon"]; p = [40,40,10,10]; } else if (lev == 9) { m = ["hound","drider","tentacle","demon"]; p = [30,40,15,15]; } else if (lev == 10) { m = ["hound","drider","minotaur","tentacle","demon"]; p = [20,50,20,5,5]; } else if (lev == 11) { m = ["drider","minotaur","tentacle","demon"]; p = [30,30,5,5]; } else if (lev == 12) { m = ["drider","minotaur","tentacle","demon"]; p = [20,50,5,5]; } else if (lev == 13) { m = ["minotaur","tentacle","demon"]; p = [30,5,5]; } else if (lev == 14) { m = ["minotaur","tentacle","demon"]; p = [20,10,10]; } else if (lev == 15) { m = ["imp","hound","tentacle","demon"]; p = [10,20,20,20]; } else if (lev == 16) { m = ["imp","hound","tentacle","demon"]; p = [10,20,30,30]; } else if (lev == 17) { m = ["imp","hound","demon"]; p = [10,20,40]; } else if (lev == 18) { m = ["imp","hound","demon"]; p = [10,20,50]; } else if (lev == 19) { m = ["hound","demon"]; p = [20,40]; } else if (lev == 20) { m = ["demon"]; p = [30]; }; var total = 0 var i = 0; for (i = 0; i < m.length; i++) { total = total + m[i][1]; }; var which = setup.WeightedRandom(p); return m[which]; }; setup.WeightedRandom = function(probarray) { var i = 0; var sum = 0; var total = 0; for (i in probarray) { total = total + probarray[i]; }; var r = random(0, total); for (i in probarray) { sum += probarray[i]; if (r <= sum) return i; }; } setup.PlaceDunEvents = function(pz) { var dx = 0; var dy = 0; var dundim = State.variables.WORLD.dundim; var Dungeon = State.variables.Dungeon[pz]; var infloop = true; var e = ""; /* Fixed floor events */ /* NOTE: Event 102 should only occur on floors 1-4, has hard-coded rand than assumes this */ if (pz == 1) { var _e = "Event" + random(100,104); } else if (pz == 2) { var _e = "Event" + random(100,104); } else if (pz == 3) { var _e = "Event" + random(100,104); } else if (pz == 4) { /* blacksmith hammer */ e = "Event119"; var _e = "Event" + random(100,104); } else if (pz == 5) { /* Floor 5 event */ } else if (pz == 6) { var _e = "Event" + random(100,104); } else if (pz == 7) { var _e = "Event" + random(100,104); } else if (pz == 8) { var _e = "Event" + random(100,104); } else if (pz == 9) { var _e = "Event" + random(100,104); } else if (pz == 10) { /* Floor 10 event */ var _e = "Event" + random(100,104); } else if (pz == 11) { var _e = "Event" + random(100,104); } else if (pz == 12) { var _e = "Event" + random(100,104); } else if (pz == 13) { var _e = "Event" + random(100,104); } else if (pz == 14) { var _e = "Event" + random(100,104); } else if (pz == 15) { /* Floor 15 event */ var _e = "Event" + random(100,104); } else if (pz == 16) { var _e = "Event" + random(100,104); } else if (pz == 17) { var _e = "Event" + random(100,104); } else if (pz == 18) { var _e = "Event" + random(100,104); } else if (pz == 19) { /* Floor 19 event */ var _e = "Event" + random(100,104); } else if (pz == 20) { /* Floor 20 event */ var _e = "Event" + random(100,104); }; /* event */ infloop = true; while (infloop == true) { dx = random(0, dundim); dy = random(0, dundim); if (Dungeon[dx][dy][11] == 0) { State.variables.Dungeon[pz][dx][dy][11] = _e; State.variables.Dungeon[pz][dx][dy][12] = 0; infloop = false; }; }; /* monster */ infloop = true; while (infloop == true) { dx = random(0, dundim); dy = random(0, dundim); if (Dungeon[dx][dy][11] == 0); { State.variables.Dungeon[pz][dx][dy][11] = "Monster"; State.variables.Dungeon[pz][dx][dy][12] = setup.GetMonByDLEV(pz); infloop = false; }; }; /* trap */ infloop = true; while (infloop == true) { dx = random(0, dundim); dy = random(0, dundim); if (Dungeon[dx][dy][11] == 0); { State.variables.Dungeon[pz][dx][dy][11] = "Trap"; State.variables.Dungeon[pz][dx][dy][12] = 0; infloop = false; }; }; }; <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree"]>>\ <<set _KeyChars to ["1","2","3"]>>\ <span @id="_SpanTexts[_who]">\ <<set _LinkText to _KeyChars[_who] + ") " + _LinkText>>\ <<capture _who>>\ <<link _LinkText _action>> <<set $CC to _who>> <</link>> <</capture>>\ </span>\ <<widget "SetStandardMale">>\ <<set $Mon.penis to true>>\ <<set $Mon.pussy to false>>\ <<set $Mon.boobs to false>>\ <<set $Mon.heshe to "he">>\ <<set $Mon.himher to "him">>\ <<set $Mon.hisher to "his">>\ <</widget>>\ <<widget "SetStandardFemale">>\ <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <</widget>>\ <<widget "SetStandardHermaphrodite">>\ <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <</widget>>\ <<widget "GetMon">>\ <<silently>>\ <<set $Mon to {}>> \ <<set _DunLev to $PC[$CC][$PCz]>> <<if $PC[$CC][$PClocation] is "forest">> <<set _DunLev to $PC[$CC][$PCfz]>> <<elseif $PC[$CC][$PClocation] is "desert">> <<set _DunLev to $PC[$CC][$PCdz]>> <<else>>\ <<set _DunLev to $PC[$CC][$PCz]>> <<endif>>\ \ <!-- sex selector --> <<set $Mon.sex to "female">> <<if $PC[$CC][$PCsex] is "female">>\ <<if random(1,10) < 8>> <<set $Mon.sex to "male">> <<endif>>\ <<endif>> <<set _whichmon to setup.GetMonByDLEV($PC[$CC][$PClocation], _DunLev)>>\ \ <<if $ForceMon[0] is "random">> <<else>> <<set _whichmon to $ForceMon[0]>> <<endif>> <<if ($ForceMon[1] neq "random")>> <<set $Mon.sex to $ForceMon[1]>> <<else>> <<set $Mon.sex to setup.GetStandardSex()>> <<endif>> <<if $ForceMon[2] > 0>>\ <<set _DunLev to $ForceMon[2]>>\ <<endif>>\ <!-- NOTE: some monsters ovveride specific parts and pronouns --> <<if $Mon.sex is "male">> <<SetStandardMale>> <<elseif $Mon.sex is "female">> <<SetStandardFemale>> <<else>>\ <<SetStandardHermaphrodite>> <<endif>> <!-- end sex selector --> \ <!-- override for testing --> <<if (0 is 1)>>\ <<set _whichmon to "slime">>\ <<endif>>\ \ <!-- Baseline values --> <<set _WhichArea to $PC[$CC][$PClocation]>>\ <<if $ForceMon[0] is "Charyss">>\ <<set _WhichArea to "tower">>\ <<set _DunLev to 3>>\ <<endif>>\ <<if _WhichArea is "tower">> <<set _BaseToHit to 75 + (_DunLev * 25)>> <<set _BaseMaxDam to 8 + (_DunLev * 2)>> <<set _BaseSpecialToHit to _DunLev * 2>> <<set _BaseFlirtTH to 10 + _DunLev>> <<set _BaseFlirtDam to 14 + _DunLev>> <<set _BaseWillpower to 6 + (_DunLev * 5)>> <<set _BaseArmor to 25 + (_DunLev * 25)>> <<set _BaseHealth to 20 + (_DunLev * 50)>> <<set $Mon.xp to _DunLev * 5>> <<set _BaseGold to random((_DunLev * 5), (_DunLev * 25))>> <<elseif _WhichArea is "desert">> <<set _BaseToHit to 10 + (_DunLev * 40)>> <<set _BaseMaxDam to 6 + (_DunLev * 3)>> <<set _BaseSpecialToHit to _DunLev * 2>> <<set _BaseFlirtTH to 8 + (_DunLev * 2)>> <<set _BaseFlirtDam to 14 + _DunLev>> <<set _BaseWillpower to 5 + (_DunLev * 3)>> <<set _BaseArmor to 55 + (_DunLev * 35)>> <<set _BaseHealth to 60 + (_DunLev * 60)>> <<set $Mon.xp to _DunLev * 3>> <<set _BaseGold to random((_DunLev * 3), (_DunLev * 15))>> <<else>>\ <<set _BaseToHit to _DunLev * 10>> <<set _BaseMaxDam to 4 + _DunLev>> <<set _BaseSpecialToHit to _DunLev>> <<set _BaseFlirtTH to _DunLev * 2>> <<set _BaseFlirtDam to 10 + _DunLev>> <<set _BaseWillpower to _DunLev +5>> <<set _BaseArmor to 40 + (_DunLev * 10)>> <<set _BaseHealth to 10 + (_DunLev * 10)>> <<set $Mon.xp to _DunLev>> <<set _BaseGold to random(_DunLev, (_DunLev * 7))>> <!-- newbie proofing-->\ <<if _DunLev is 1>>\ <<set _BaseMaxDam to 4>> <<set _BaseArmor to 30>> <<set _BaseToHit to 0>> <<endif>>\ <<endif>>\ <<set $ForceMon to ["random","random", 0]>> <!-- BEGIN BOILERPLATE --> <<set $Mon.level to _DunLev>> <<set $Mon.boss to 0>> <<set $Mon.unique to false>>\ <<set $Mon.HitBySpells to 0>>\ <<set $Mon.TakesGold to true>>\ <!-- clear debuffs --> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.bleeding to 0>> <<set $Mon.stunned to 0>> <<set $Mon.Powerup to 0>> <<set $Mon.AI to 0>>\ <!--reset arrays --> <<set $Mon.loot to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.anatomy to []>> <<set $Mon.resists to []>> <!-- only a few monsters have these different from baseline --> <<set $Mon.arpen to 0>> <<set $Mon.flurryQTY to 0>> <<set $Mon.regen to 0>> <!-- some monsters might adjust these from baseline --> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.hpcur to _BaseHealth>> <<set $Mon.hpmax to _BaseHealth>> <<set $Mon.armor to _BaseArmor>> <<set $Mon.SymbolEffect to "">> <<set $Mon.magres to 0>> <<set $Mon.fireheal to false>> <<set $Mon.poisonheal to false>> <!-- END BOILERPLATE --> \ <<if _whichmon is "goblin">>\ <<set $Mon.name to "goblin">> <<set $Mon.morph to "goblin">> <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "goblin" "male" "notail">>\ <<set $Mon.pic to "goblinM.png">> <<set $Mon.virgin to "a male goblin">> <<set $Mon.desc to "A fairly typical male goblin. Short, horny, angry, ready to rape and beat anyone into submission. Not neccesarily in that order.">> <<set $Mon.MeatSemenMilk to [107,207,-1]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "takes a swing at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["physical", 1, _BaseMaxDam, _BaseToHit, "whacks you with his club", "swings at you but misses", "whacks you with his club, but the blow glances off you"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "grins and licks his lips at you eagerly", "leers at you", "grins at you, but you're not impressed"]>>\ <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "goblin" "female" "notail">>\ <<set $Mon.pic to "goblinF.png">> <<set $Mon.virgin to "a female goblin">> <<set $Mon.MeatSemenMilk to [107,-1,307]>> <<if $PC[$CC][$PCsex] is "female">>\ <<set $Mon.desc to "A short goblin with huge sexy tits. She's giving you a half-aroused, half-furious stare. You suspect she's envious of your height, but simultaneously turned on by it, and struggling to find a happy medium between angry and horny.">> <<else>> <<set $Mon.desc to "A short goblin with huge sexy tits, if you're into that kind of thing. And from the look she's giving you, you suspect she'd love for you to be into it. Or her, for that matter.">> <<endif>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "whacks you with one of her boobs", "swings her boobs at you but fails to connect", "whacks you with her boobs but it doesn't hurt much"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "sticks a finger in her pussy then licks it", "tries to call attention to her pussy but fails", "fondles herself to try to distract you, but you ignore it"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "pulls a breast to her lips and licks its", "reaches for her chest but slips", "fondles herself to try to distract you, but you ignore it"]>>\ <<else>> <<set $Mon.pic to "goblinH.png">> <<SetStandardMale>> <<if random(1,2) is 1>>\ <<AssignHumanoidAnatomyToMon "goblin" "herm" "notail">>\ <<set $Mon.virgin to "a goblin hermaphrodite">> <<set $Mon.pussy to true>> <<else>>\ <<AssignHumanoidAnatomyToMon "goblin" "male" "notail">>\ <<set $Mon.virgin to "a goblin crossdresser">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.desc to "A somewhat sexually ambiguous goblin. He clearly has a dick, but he's unusually feminine for a male goblin, and you're not entirely sure whether that hole he's leering at you with is a pussy, or just his ass hole.">> <<set $Mon.MeatSemenMilk to [107,207,307]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "takes a swipe at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "stokes himself and invites you to take over", "strokes himself, but fails to distract you", "strokes himself, but you ignore it"]>>\ <<endif>> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 25>> <<set $Mon.gold to _BaseGold +5>> <<if _DunLev > 4>> <<set $Mon.att[2] to ["flirt", 2, _BaseFlirtDam, _BaseFlirtTH, "throws a vial full of sweet-smelling pink liquid on you", "throws a vial of pink liquid at you, but you dodge", "throws pink liquid on you, but you quickly brush it off"]>>\ <<endif>> <<elseif _whichmon is "slime">>\ <<set $Mon.name to "slime">> <<set $Mon.morph to "slime">> <<set $Mon.resists[0] to ["blunt",50]>>\ <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "slime" "male" "notail">>\ <<set $Mon.pic to "slimeM.png">> <<set $Mon.virgin to "a slime man">> <<set $Mon.desc to "A large, powerfully built man of slime. At least, he looks powerful. You're not entirely sure just how strong something made of slime can be, but he certainly looks the part. His cock is visibly dripping some sort of fluid, and you can't help but wonder whether that's actually semen, or whether it's simply his insides leaking out. Goo physiology is a little odd.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "slime" "female" "notail">>\ <<set $Mon.pic to "slimeF.png">> <<set $Mon.virgin to "a slime girl">> <<set $Mon.desc to "A lithe and lovely slime girl. Ironically, being made of goo probably makes it easy for her to maintain her figure. If she gains weight, she can simply bulge it out into whatever direction she wants. From the size of her breasts, you imagine she must eat well.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<else>> <<AssignHumanoidAnatomyToMon "slime" "herm" "tail">>\ <<set $Mon.MeatSemenMilk to [400,400,400]>> <<set $Mon.virgin to "a slime">> <<if random(1,1) is 1>> <<set $Mon.pic to "slimeHa.png">> <<set $Mon.desc to "A slime sporting a variety of parts that make its gender and species a bit ambiguious. The huge cock pointed at you is clear enough, but she's also sporting hips big enuogh to give birth to a basketball and some admittedly small, but unmistakable breasts. And also slime cat ears, a slime tail, and what looks like a slime dog's nose...because why not? After all, when you can shape your body into anything you want, why not flaunt it?">> <<else>> <<set $Mon.pic to "slimeHb.png">> <<set $Mon.desc to "Implement slime Hb">> <<endif>> <<endif>> <<set $Mon.Willpower to _BaseWillpower +2>> <<set $Mon.poisonheal to true>> <<set $Mon.chase to 40>> <!-- override values --> <<set $Mon.arpen to 1>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "extends a tendril in your direction, but misses", "hits you with a tendril, but it squishes on impact"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "shifts its body around to be more to your liking", "tries to shift its body around", "shifts its body around, but the result is not an improvement"]>>\ <<set $Mon.att[2] to ["POISON", 1, 1, _BaseSpecialToHit, "stabs you with a tendril that spurts some fluid into you", "pokes at you ineffectually with a tendril", "poke you with a tendril, but you grab it before it can do anything"]>>\ <<elseif _whichmon is "bunny">>\ <<set $Mon.name to "bunny">> <<set $Mon.morph to "bunny">> <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "bunny" "male" "tail">>\ <<set $Mon.virgin to "a bunny boy">> <<set $Mon.pic to "bunnyM.png">> <<set $Mon.desc to "Hopping around on his hands and knees, you suspect this bunny boy's chosen form of locomotion doubles both for sexual purposes, as well as simply to help him stay in character.">> <<set $Mon.MeatSemenMilk to [100,200,-1]>> <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "bunny" "female" "tail">>\ <<set $Mon.pic to "bunnyF.png">> <<set $Mon.virgin to "a bunny girl">> <<set $Mon.desc to "With tits nearly as big as her head, this bunny girl giggles happiliy as she comes at you with a look in her eyes that you're not entirely sure is lethal or lustful intent.">> <<set $Mon.MeatSemenMilk to [100,-1,300]>> <<else>> <<AssignHumanoidAnatomyToMon "bunny" "herm" "tail">>\ <<set $Mon.pic to "bunnyH.png">> <<set $Mon.virgin to "a futa bunny dickgirl">> <<set $Mon.desc to "With a cock even more masive than her humongous breasts, her eyes glisten as she eyes up and down your torso, eventually settling on a spot between your legs she finds especially interesting. 'Bend over for me, dear,' she whispers as she strokes her cock.">> <<set $Mon.MeatSemenMilk to [100,200,300]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower -2>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "cat">>\ <<set $Mon.name to "cat">> <<set $Mon.morph to "cat">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "cat" "male" "tail">>\ <<set $Mon.pic to "catM.png">> <<set $Mon.virgin to "a manly cat man">> <<set $Mon.desc to "A powerfully built muscle-man with cat ears and tail. The way he looks at you makes it clear that he's used to getting his way, and if you're not careful, his way is going to be with you. Though whether sexually, or simply dragging you to the gym with him is unclear.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "points suggestively at his barbed cock", "points at his cock, but the barbs are far from a turn-on", "points at his cock, but the barbs are far from a turn-on"]>>\ <<set $Mon.MeatSemenMilk to [101,201,-1]>> <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "cat" "female" "tail">>\ <<set $Mon.pic to "catF.png">> <<set $Mon.virgin to "a buxom catgirl">> <<set $Mon.desc to "A buxom catgirl wih huge breasts and child-bearing hips looks at you with an air of casual indifference that belies the insistence of her attacks. Still, she would almost be cute if she weren't trying to murder you. Or is she? From one moment to the next, it's hard to tell.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "demurely insists that it's not like she likes you or anything", "insists that she doesn't like you, but her expression keeps it from sounding ironic", "insists that she doesn't like you, but you shrug it off"]>>\ <<set $Mon.MeatSemenMilk to [101,-1,301]>> <<else>> <<AssignHumanoidAnatomyToMon "cat" "herm" "tail">>\ <<set $Mon.pic to "catH.png">> <<set $Mon.virgin to "a futa catgirl">> <<set $Mon.desc to "A catgirl futa with plump breasts and an erect cock already dribbling with pre-cum. Seeing the light-teal of her pubic hair and mane, you can't help but notice that the carpet does match the drapes.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "squeezes her boobs together and invites you to do the same", "squeezes a boob with one hand and strokes her cock with the other", "gropes herself, but is too distracted by her own body for it to really be called flirtatious"]>>\ <<set $Mon.MeatSemenMilk to [101,201,301]>> <<endif>> <<elseif _whichmon is "fox">>\ <<set $Mon.name to "fox">> <<set $Mon.morph to "fox">> <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "fox" "male" "tail">>\ <<set $Mon.penis to true>> <<set $Mon.boobs to false>> <<set $Mon.pussy to false>> <<set $Mon.pic to "foxM.png">> <<set $Mon.virgin to "a fox-man">> <<set $Mon.desc to "An anthropomorphic fox-man with a green dick. A dick that he's already stroking as he looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "strokes himself and invites you to take over", "strokes himself, but you ignore it", "strokes himself, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,-1]>> <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "fox" "female" "tail">>\ <<set $Mon.penis to false>> <<set $Mon.boobs to true>> <<set $Mon.pussy to true>> <<set $Mon.pic to "foxF.jpg">> <<set $Mon.virgin to "a fox-girl">> <<set $Mon.desc to "An attractive fox-girl covered in a thin layer of brown fur. Her tail twitches occasionally as she looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "slashes at you with her claws", "slashes at you, but misses", "slashes you with her claws, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,-1,302]>> <<else>> <<AssignHumanoidAnatomyToMon "fox" "male" "tail">>\ <<set $Mon.penis to true>> <<set $Mon.boobs to false>> <<set $Mon.pussy to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "foxH.png">> <<set $Mon.virgin to "an effeminate fox-boy">> <<set $Mon.desc to "An effeminate fox-boy with a suspicious bulge in his panties. ">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "rubs his bulge and winks suggestively", "rubs his bulge and winks at you, but you ignore it", "rubs his bulge and winks at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,302]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<elseif _whichmon is "wolf">>\ <<AssignHumanoidAnatomyToMon "wolf" "male" "tail">>\ <<set $Mon.name to "wolf">> <<set $Mon.morph to "wolf">> <<set $Mon.sex to "male">> <<SetStandardMale>> <!-- probably need to at least at wolf girls, yeah? --> <<set $Mon.pic to "wolfM.png">> <<set $Mon.virgin to "a burly wolf-man">> <<set $Mon.MeatSemenMilk to [103,203,-1]>> <<set $Mon.desc to "A burly wolf-man with a thick, meaty cock he'd like to share with you.">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "snaps at you with his jaws, but misses", "bites you, but fails to pierce your flesh"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "points suggestively at his erection", "pumps his cock a few times, but you ignore it", "pumps his cock a few times, but you ignore it"]>>\ <<elseif _whichmon is "wolfquad">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "wolf" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "wolf" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "wolf" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "wolf" }>>\ <<set $Mon.anatomy[4] to { type: $BPlegs, morph: "wolf" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "wolf" }>>\ <<set $Mon.anatomy[6] to { type: $BPfeet, morph: "wolf" }>>\ <<set $Mon.anatomy[7] to { type: $BPfeet, morph: "wolf" }>>\ <<set $Mon.anatomy[8] to { type: $BPwaist, morph: "wolf" }>>\ <<set $Mon.anatomy[9] to { type: $BPtail, morph: "wolf" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.name to "wolf">> <<set $Mon.morph to "wolfquad">> <<set $Mon.sex to "male">> <<SetStandardMale>> <<set $Mon.pic to "wolfquadM.jpg">> <<set $Mon.virgin to "a horny wolf">> <<set $Mon.MeatSemenMilk to [117,217,-1]>> <<set $Mon.desc to "While presenting the form of an animal, this wolf eyes you with both lust and intelligence that lead you to wonder if it was once human.">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 80>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam +1, _BaseToHit, "bites you", "snaps at you with his jaws, but misses", "bites you, but fails to pierce your flesh"]>>\ <<elseif _whichmon is "horse">>\ <<set $Mon.name to "horse">> <<set $Mon.morph to "horse">> <<set $Mon.AI to "horse">> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "horse" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "horse" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "horse" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "horse" }>>\ <<set $Mon.anatomy[4] to { type: $BPlegs, morph: "horse" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "horse" }>>\ <<set $Mon.anatomy[6] to { type: $BPfeet, morph: "horse" }>>\ <<set $Mon.anatomy[7] to { type: $BPfeet, morph: "horse" }>>\ <<set $Mon.anatomy[8] to { type: $BPwaist, morph: "horse" }>>\ <<set $Mon.anatomy[9] to { type: $BPtail, morph: "horse" }>>\ <<set $Mon.TakesGold to false>>\ <<if $Mon.sex is "male">> <<set $Mon.anatomy[10] to { type: $BPpenis, morph: "horse" }>>\ <<set $Mon.penis to true>> <<set $Mon.boobs to false>> <<set $Mon.pussy to false>> <<set $Mon.pic to "horseM.png">> <<set $Mon.virgin to either("a strapping","a horny") + either(" stallion","horse")>>\ <<set $Mon.desc to "With a cock easily two feet long, erect, and dripping with fluids, you can only imagine what this horse intends to do to you. Except that you don't have to imagine, because his lust is abundantly clear in the look he's giving you.">>\ <<set $Mon.att[0] to ["physical", _DunLev, _BaseMaxDam, _BaseToHit +10, "lashes out with a speedy kick", "kicks, but misses you", "kicks you but his hooves slide easily off of you"]>>\ <<set $Mon.att[1] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "bites at you", "bites you, but it barely pierces skin"]>>\ <<set $Mon.MeatSemenMilk to [104,204,-1]>> <<else>>\ <<set $Mon.anatomy[10] to { type: $BPpussy, morph: "horse" }>>\ <<set $Mon.anatomy[11] to { type: $BPboobs, morph: "horse" }>>\ <<set $Mon.sex to "female">> <<set $Mon.penis to false>> <<set $Mon.boobs to true>> <<set $Mon.pussy to true>> <<set $Mon.pic to "horseF.png">> <<set $Mon.virgin to either("a lovely","a graceful","a gentle") + " mare">> <<set $Mon.desc to "While it may be tempting to think that this horse has her privates on display for your amusement, it could be a coincidence: You can't help but notice her powerful rear legs primed to strike.">> <<set $Mon.att[0] to ["physical", _DunLev, _BaseMaxDam, _BaseToHit +10, "lashes out with a speedy kick", "kicks, but misses you", "kicks you but her hooves slide easily off of you"]>>\ <<set $Mon.att[1] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "bites at you", "bites you, but it barely pierces skin"]>>\ <<set $Mon.MeatSemenMilk to [104,-1,304]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 100>> <<set $Mon.gold to 0>> <<elseif _whichmon is "cow">>\ <<set $Mon.name to "cow">> <<set $Mon.morph to "cow">> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "cow" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "cow" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "cow" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "cow" }>>\ <<set $Mon.anatomy[4] to { type: $BPlegs, morph: "cow" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "cow" }>>\ <<set $Mon.anatomy[6] to { type: $BPfeet, morph: "cow" }>>\ <<set $Mon.anatomy[7] to { type: $BPfeet, morph: "cow" }>>\ <<set $Mon.anatomy[8] to { type: $BPwaist, morph: "cow" }>>\ <<set $Mon.anatomy[9] to { type: $BPtail, morph: "cow" }>>\ <<set $Mon.TakesGold to false>>\ <<if $Mon.sex is "male">> <<set $Mon.anatomy[10] to { type: $BPhorns, morph: "cow" }>>\ <<set $Mon.anatomy[11] to { type: $BPpenis, morph: "cow" }>>\ <<set $Mon.penis to true>> <<set $Mon.boobs to false>> <<set $Mon.pussy to false>> <<set $Mon.pic to "cowM.png">> <<set $Mon.virgin to either("a horny") + either(" steer","bull")>>\ <<set $Mon.desc to "Describe bull">>\ <<set $Mon.att[0] to ["physical", _DunLev, _BaseMaxDam, _BaseToHit -10, "clumsily butts you with his horns", "harmlessly waves his antlers at you", "barely scrapes you with his antlers"]>>\ <<set $Mon.MeatSemenMilk to [102,202,-1]>> <<else>>\ <<set $Mon.anatomy[10] to { type: $BPpussy, morph: "cow" }>>\ <<set $Mon.anatomy[11] to { type: $BPboobs, morph: "cow" }>>\ <<set $Mon.sex to "female">> <<set $Mon.penis to false>> <<set $Mon.boobs to true>> <<set $Mon.pussy to true>> <<set $Mon.pic to "cowF.png">> <<set $Mon.virgin to either("a cuddly","an affectionate","a gentle") + " cow">> <<set $Mon.desc to "Describe cow">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH -2, "affectionately moos at you", "moos at you, but you ignore it", "moos at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,-1,302]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower -2>> <<set $Mon.chase to 0>> <<set $Mon.gold to 0>> <<elseif _whichmon is "snake">>\ <<set $Mon.name to "snake">> <<set $Mon.morph to "snake">> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "snake" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "snake" }>>\ <<set $Mon.anatomy[3] to { type: $BPtail, morph: "snake" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.hpcur to _DunLev>> <<set $Mon.hpmax to _DunLev>> <<set $Mon.armor to _BaseArmor + 50>> <<if $Mon.sex is "male">> <<set $Mon.anatomy[4] to { type: $BPpenis, morph: "snake" }>>\ <<set $Mon.penis to true>>\ <<set $Mon.boobs to false>>\ <<set $Mon.pussy to false>>\ <<set $Mon.pic to "snakeALL.jpg">>\ <<set $Mon.virgin to "a snake">>\ <<set $Mon.desc to "A small green snake hisses at you.">>\ <<set $Mon.att[0] to ["POISON", 1, 1, _BaseSpecialToHit, "bites you", "bites at you but misses", "bites you but fails to penetrate skin"]>>\ <<set $Mon.MeatSemenMilk to [116,216,-1]>> <<else>>\ <<set $Mon.anatomy[4] to { type: $BPpussy, morph: "snake" }>>\ <<set $Mon.sex to "female">> <<set $Mon.penis to false>> <<set $Mon.boobs to false>> <<set $Mon.pussy to true>> <<set $Mon.pic to "snakeALL.jpg">> <<set $Mon.virgin to "a snake">> <<set $Mon.desc to "A small green snake hisses at you.">> <<set $Mon.att[0] to ["POISON", 1, 1, _BaseSpecialToHit, "bites you", "bites at you but misses", "bites you but fails to penetrate skin"]>>\ <<set $Mon.MeatSemenMilk to [116,-1,-1]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower +10>> <<set $Mon.chase to 0>> <<set $Mon.gold to 0>> <<elseif _whichmon is "ant">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "insect" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "insect" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "insect" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "insect" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "insect" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "insect" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "insect" }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: "insect" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "insect" }>>\ <<set $Mon.anatomy[9] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[11] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[12] to { type: $BPwaist, morph: "insect" }>>\ <<set $Mon.anatomy[13] to { type: $BPboobs, morph: "insect" }>>\ <<set $Mon.anatomy[14] to { type: $BPpussy, morph: "insect" }>>\ <<set $Mon.name to "ant">> <<set $Mon.morph to "ant">> <<set $Mon.sex to "female">> <<SetStandardFemale>> <<set $Mon.pic to "antF.png">> <<set $Mon.virgin to either("a worker ant","a gatherer ant")>> <<set $Mon.MeatSemenMilk to [118,-1,-1]>> <<set $Mon.desc to "While most people don't realize it, worker ants are exclusively female. This one is no exception.">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 20>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "waves her pincers at you ineffectively", "bites you, but fails to pierce your flesh"]>>\ <<elseif _whichmon is "scorpion">>\ <<set $Mon.anatomy[0] to { type: $BPchest, morph: "insect" }>>\ <<set $Mon.anatomy[1] to { type: $BPback, morph: "insect" }>>\ <<set $Mon.anatomy[2] to { type: $BPpincer, morph: "insect" }>>\ <<set $Mon.anatomy[3] to { type: $BPpincer, morph: "insect" }>>\ <<set $Mon.anatomy[4] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[6] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[7] to { type: $BPlegs, morph: "insect" }>>\ <<set $Mon.anatomy[8] to { type: $BPwaist, morph: "insect" }>>\ <<set $Mon.anatomy[9] to { type: $BPtail, morph: "scorpion" }>>\ <<set $Mon.anatomy[10] to { type: $BPstinger, morph: "insect" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.AI to "scorpion">> <<set $Mon.name to "scorpion">> <<set $Mon.morph to "scorpion">> <<if $Mon.sex is "male">> <<set $Mon.pic to "scorpionM.png">> <<set $Mon.MeatSemenMilk to [119,219,-1]>> <<set $Mon.sex to "male">> <<else>>\ <<set $Mon.pic to "scorpionM.png">> <<set $Mon.MeatSemenMilk to [119,-1,-1]>> <<set $Mon.sex to "female">> <<endif>>\ <<SetStandardFemale>> <<set $Mon.virgin to "a giant scorpion">> <<set $Mon.desc to "A large, venomous arachnid with a hard, segmented carapace, eight legs, and a pair of pincers.">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 20>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "waves her pincers at you ineffectively", "bites you, but fails to pierce your flesh"]>>\ <<elseif _whichmon is "harpy">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "harpy" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "harpy" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "harpy" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "harpy" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "harpy" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "harpy" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "harpy" }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: "harpy" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "harpy" }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: "harpy" }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: "harpy" }>>\ <<set $Mon.anatomy[11] to { type: $BPfeet, morph: "harpy" }>>\ <<set $Mon.anatomy[13] to { type: $BPtail, morph: "harpy" }>>\ <<set $Mon.anatomy[13] to { type: $BPwings, morph: "harpy" }>>\ <<set $Mon.anatomy[15] to { type: $BPboobs, morph: "harpy" }>>\ <<set $Mon.anatomy[16] to { type: $BPpussy, morph: "harpy" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.name to "harpy">> <<set $Mon.morph to "harpy">> <<set $Mon.sex to "female">> <<SetStandardFemale>> <<set $Mon.pic to "harpyF.jpg">> <<set $Mon.virgin to "a harpy">> <<set $Mon.MeatSemenMilk to [120,-1,320]>> <<set $Mon.desc to "Mostly human from the waist and mostly eagle from the waist down, this harpy glares at you with cruel and malicious intent.">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 20>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "claws you", "slashes at you with her claws, but misses", "slashes you, but her claws fail to penetrate skin"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "jiggles her boobs at you", "jiggles her boobs at you, but you ignore it", "jiggles her boobs at you, but you ignore it"]>>\ <<elseif _whichmon is "human">>\ <<set $Mon.name to "adventurer">> <<set $Mon.morph to "human">> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<if $Mon.sex is "male">> <<AssignHumanoidAnatomyToMon "human" "male" "notail">>\ <<set $Mon.pic to "humanM.jpg">> <<set $Mon.virgin to "a human swordsman">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a swordsman.">> <<set $Mon.MeatSemenMilk to [106,206,-1]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<elseif $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "human" "female" "notail">>\ <<set $Mon.pic to "humanF.jpg">> <<set $Mon.magres to 1>> <<set $Mon.virgin to "a human sorceress">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a spellcaster.">> <<set $Mon.MeatSemenMilk to [106,-1,306]>> <<set $Mon.att[0] to ["magic", 1, _DunLev, _BaseToHit, "hurls a fireball at you", "hurls a fireball at you, but misses", "hurls a fireball at you, but it just grazes you"]>>\ <<set $Mon.att[1] to ["magic", 1, _DunLev, _BaseToHit, "hurls a bolt of lightning at you", "hurls lightning at you, but misses", "hurls lightning at you, but it just grazes you"]>>\ <<set $Mon.att[2] to ["magic", 1, _DunLev, _BaseToHit, "hurls a frost bolt at you", "hurls a frost bolt at you, but misses", "hurls a frost bolt at you, but it just grazes you"]>>\ <<set $Mon.att[3] to ["heal", 1, _DunLev, 100, "heals herself ", "Can't miss heals", "Can't absorb heals"]>>\ <<else>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<if random(1,2) is 1>>\ <<AssignHumanoidAnatomyToMon "human" "herm" "notail">>\ <<set $Mon.virgin to "a hermaphrodite human adventurer">> <<set $Mon.pussy to true>> <<else>>\ <<AssignHumanoidAnatomyToMon "human" "male" "notail">>\ <<set $Mon.virgin to "a crossdressing human adventurer">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.pic to "humanH.jpg">> <<set $Mon.desc to "A somewhat sexually ambiguous human adventurer. Though small, those are clearly breasts. But the broad shoulders and visible adam's apple lead you to suspect that there's probably a bulge in those pants.">> <<set $Mon.MeatSemenMilk to [106,206,306]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<endif>> <<elseif _whichmon is "minotaur">>\ <<set $Mon.name to "minotaur">> <<set $Mon.morph to "minotaur">> <<set $Mon.resists[0] to ["cut",50]>>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "cow" }>>\ <<set $Mon.anatomy[1] to { type: $BPhorns, morph: "cow" }>>\ <<set $Mon.anatomy[2] to { type: $BPneck, morph: "human" }>>\ <<set $Mon.anatomy[3] to { type: $BPback, morph: "human" }>>\ <<set $Mon.anatomy[4] to { type: $BPchest, morph: "human" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "human" }>>\ <<set $Mon.anatomy[6] to { type: $BPwield, morph: "human" }>>\ <<set $Mon.anatomy[7] to { type: $BPhands, morph: "human" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "human" }>>\ <<set $Mon.anatomy[9] to { type: $BPring, morph: "human" }>>\ <<set $Mon.anatomy[10] to { type: $BPwaist, morph: "cow" }>>\ <<set $Mon.anatomy[11] to { type: $BPtail, morph: "cow" }>>\ <<set $Mon.anatomy[12] to { type: $BPlegs, morph: "cow" }>>\ <<set $Mon.anatomy[13] to { type: $BPfeet, morph: "cow" }>>\ <<if $Mon.sex is "male">> <<set $Mon.anatomy[14] to { type: $BPpenis, morph: "cow" }>>\ <<set $Mon.pic to "minotaurM.png">> <<set $Mon.virgin to "a minotaur">> <<set $Mon.desc to "A mountain of muscle with cow horns and tail, this creature is technically mostly human. The nearly two foot long bull cock hanging between his legs notwithstanding.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.anatomy[14] to { type: $BPboobs, morph: "human" }>>\ <<set $Mon.anatomy[15] to { type: $BPpussy, morph: "cow" }>>\ <<set $Mon.pic to "minotaurF.png">> <<set $Mon.virgin to "a female minotaur">> <<set $Mon.desc to "A furry, half-human, half-cow, this minotaur's morphology is curiously mixed, with soft fur that extends well into her otherwise mostly-human parts.">> <<set $Mon.MeatSemenMilk to [112,-1,312]>> <<else>> <<set $Mon.anatomy[14] to { type: $BPpenis, morph: "cow" }>>\ <<set $Mon.anatomy[15] to { type: $BPboobs, morph: "human" }>>\ <<set $Mon.anatomy[16] to { type: $BPpussy, morph: "cow" }>>\ <<set $Mon.pic to "minotaurH.png">> <<set $Mon.virgin to "A huge herm minotaur">> <<set $Mon.desc to either("Taking the expression 'cow girl' perhaps a bit too literally, this minotaur towers sufficiently high above you that her humongous bull-cock reaches nearly to shoulders. Given her gleeful smile as she strokes and points at it you, she clearly plans to put both it to use, and you.","With mostly the top half a human and the mostly bottom half of a cow, this minotaur stands a good eight feel tall. Clearly coming from her bovien heritage, her foot-and-a-half long cock is erect and visibly dripping, leaving you to wonder what exactly is the point that that g-string she's wearing.")>> <<set $Mon.MeatSemenMilk to [112,212,312]>> <<endif>> <<set $Mon.hpcur to $Mon.hpcur +10>> <<set $Mon.hpmax to $Mon.hpcur +10>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold * 2>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "spider">>\ <<set $Mon.anatomy[0] to { type: $BPback, morph: "spider" }>>\ <<set $Mon.anatomy[1] to { type: $BPchest, morph: "spider" }>>\ <<set $Mon.anatomy[2] to { type: $BPlegs, morph: "spider" }>>\ <<set $Mon.anatomy[3] to { type: $BPlegs, morph: "spider" }>>\ <<set $Mon.anatomy[4] to { type: $BPlegs, morph: "spider" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "spider" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.name to "giant spider">>\ <<set $Mon.morph to "spider">>\ <<set $Mon.virgin to "a giant spider">>\ <<set $Mon.pic to "spider.png">>\ <<set $Mon.resists[0] to ["cleave",50]>>\ <<if $Mon.sex is "male">>\ <<set $Mon.sex to "male">>\ <<set $Mon.desc to "A powerful pursuit predator, this massive spider is built to chase down fast opponents. As it darts around on eight legs all built for speed, you suspect you won't be escaping from this creature.">>\ <<set $Mon.MeatSemenMilk to [109,209,-1]>>\ <<set $Mon.anatomy[6] to { type: $BPpenis, morph: "spider" }>>\ <<set $Mon.att[0] to ["physical", 1, (_BaseMaxDam -1), (_BaseToHit +50), "rakes your flesh with a hairy leg", "tries to kick you but misses", "barely grazes you with a hairy leg"]>>\ <<set $Mon.att[1] to ["WEB", 1, _BaseMaxDam, _BaseSpecialToHit, "sprays sticky webbing on you", "sprays webbing at you but misses", "sprays some webbing on you, but you quickly brush it off."]>>\ <<elseif $Mon.sex is "female">>\ <<set $Mon.sex to "female">>\ <<set $Mon.desc to "As giant spiders go, this one is relatuively smaller than average. that is to say, it stands at only about waist high rather than chest high. But with a body and legs that trail fullly eight feet behind it, it's still rather large. And as if that wasn't intimidating enough, the glowing green ichor dripping from its fangs probably makes up for what it lacks in size.">>\ <<set $Mon.MeatSemenMilk to [109,-1,-1]>>\ <<set $Mon.anatomy[6] to { type: $BPpussy, morph: "spider" }>>\ <<set $Mon.att[0] to ["physical", 1, (_BaseMaxDam -1), _BaseToHit, "rakes your flesh with a hairy leg", "tries to kick you but misses", "barely grazes you with a hairy leg"]>>\ <<set $Mon.att[1] to ["POISON", 1, 1, _BaseSpecialToHit, "bites you", "bites at you but misses", "bites you but fails to penetrate skin"]>>\ <<else>>\ <<set $Mon.sex to "heramphrodite">>\ <<set $Mon.desc to "A medium-sized giant spider. Its beady eyes reach roughly to your navel and it probably weighs a couple hundred pounds. And yet terrifying as it is, something about it puts you relatively at ease. Perhaps it's its scent? Maybe it's the little noises it makes as it skitters along the ground? Whatever it is, it kind of makes you want to go up and give it headpats.">>\ <<set $Mon.MeatSemenMilk to [109,209,-1]>>\ <<set $Mon.anatomy[6] to { type: $BPpenis, morph: "spider" }>>\ <<set $Mon.anatomy[7] to { type: $BPpussy, morph: "spider" }>>\ <<set $Mon.att[0] to ["physical", 1, (_BaseMaxDam -1), (_BaseToHit -20), "grazes your flesh with a hairy leg", "tries to kick you but misses", "barely grazes you with a hairy leg"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "sprays pheromones at you", "sprays pheromones at you, but you resist", "sprays pheromones at you, but you resist"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "makes cute chittering noises", "makes strange noises", "makes strange noises"]>>\ <<endif>>\ <<set $Mon.armor to _BaseArmor -10>>\ <<set $Mon.magres to _DunLev>> \ <<set $Mon.Willpower to _BaseWillpower>>\ <<set $Mon.chase to 999>>\ <<set $Mon.gold to Math.trunc(_BaseGold / 2)>> <<elseif _whichmon is "naga">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "snake" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "human" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "human" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "human" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "human" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "human" }>>\ <<set $Mon.anatomy[7] to { type: $BPtail, morph: "snake" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "human" }>>\ <<set $Mon.anatomy[9] to { type: $BPring, morph: "human" }>>\ <<set $Mon.anatomy[10] to { type: $BPwaist, morph: "snake" }>>\ <<set $Mon.anatomy[11] to { type: $BPboobs, morph: "human" }>>\ <<set $Mon.anatomy[12] to { type: $BPpussy, morph: "snake" }>>\ <<set $Mon.name to "naga">> <<set $Mon.morph to "naga">> <<set $Mon.resists[0] to ["cleave",50]>>\ <<if $Mon.sex is "male">> <<set $Mon.sex to "female">> <<endif>>\ <<if $Mon.sex is "female">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "bites at you but misses", "bites you but fails to penetrate skin"]>>\ <<set $Mon.att[1] to ["physical", 1, _BaseMaxDam, _BaseToHit, "strikes you with her tail", "strikes at you with her tail, but misses", "delivers a glancing blow with her tail"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "gazes hypnotically at you", "gazes at you", "gazes at you to no effect"]>>\ <<set $Mon.pic to "nagaF.jpg">> <<set $Mon.virgin to either("a horny naga","a powerful naga")>> <<set $Mon.desc to "A huge snake from the waist down and marginally human from the waist up, this white and yellow naga bares a pair of heaving breasts as large as your head as if trying to distract you. You notice however, that her eyes don't seem to be tracking you and her forked tongue flicks in and out before every turn of her body. Perhap her eyesight is poor, but the heavily muscled twenty foot long tail coiled behind her makes the danger she poses very clear.">> <<set $Mon.MeatSemenMilk to [116,-1,316]>> <<else>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "cups a breast in one hand, strokes a cock with enother, and beckons you with her other two", "fondles herself suggestively", "fondles herself suggestively"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "strokes both her cocks with four hands. It's hard not to notice.", "strokes both her cocks", "strokes both her cocks"]>>\ <<set $Mon.pic to "nagaH.jpg">> <<set $Mon.virgin to "a naga with not one, but two dicks">> <<set $Mon.desc to "With two giant breasts and two even gianter cocks, this naga eyes you with great interest. And great erections. You barely even notice that she has four arms.">> <<set $Mon.MeatSemenMilk to [116,216,316]>> <<set $Mon.anatomy[12] to { type: $BPpenis, morph: "snake" }>>\ <<set $Mon.anatomy[13] to { type: $BPpenis, morph: "snake" }>>\ <<endif>>\ <<set $Mon.armor to _BaseArmor -10>> <<set $Mon.magres to _DunLev>> <<set $Mon.Willpower to _BaseWillpower -2>> <<set $Mon.chase to 40>> <<set $Mon.gold to Math.trunc(_BaseGold / 2)>> <<elseif _whichmon is "hellhound">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "hellhound" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "hellhound" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "hellhound" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "hellhound" }>>\ <<set $Mon.anatomy[4] to { type: $BPwaist, morph: "hellhound" }>>\ <<set $Mon.anatomy[5] to { type: $BPlegs, morph: "hellhound" }>>\ <<set $Mon.anatomy[6] to { type: $BPlegs, morph: "hellhound" }>>\ <<set $Mon.anatomy[7] to { type: $BPtail, morph: "hellhound" }>>\ <<set $Mon.anatomy[8] to { type: $BPpenis, morph: "hellhound" }>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.name to "hellhound">> <<set $Mon.morph to "hellhound">> <<set $Mon.resists[0] to ["pierce",50]>>\ <<set $Mon.fireheal to true>> <<set $Mon.magres to _DunLev>> <<set $Mon.Willpower to _BaseWillpower +2>> <<set $Mon.SymbolEffect to "damage">> <<set $Mon.sex to "male">> <<if $Mon.sex is "male">> <<set $Mon.pic to "hellhoundM.jpg">> <<set $Mon.virgin to "a horny hellhound">> <<set $Mon.desc to "A large dog with a two foot long horse cock spurting flames for semen, mirrored with a fiery burning lust in his eyes.">> <<set $Mon.MeatSemenMilk to [111,211,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "hellhoundF.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe female hellhound.">> <<set $Mon.MeatSemenMilk to [111,-1,311]>> <<set $Mon.anatomy[7] to { type: $BPboobs, morph: "hellhound" }>>\ <<set $Mon.anatomy[8] to { type: $BPpussy, morph: "hellhound" }>>\ <<else>> <<set $Mon.heshe to "he">>\ <<set $Mon.himher to "him">>\ <<set $Mon.hisher to "his">>\ <<set $Mon.pic to "hellhoundH.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe h hellhound.">> <<set $Mon.MeatSemenMilk to [111,211,311]>> <<set $Mon.anatomy[8] to { type: $BPboobs, morph: "hellhound" }>>\ <<set $Mon.anatomy[9] to { type: $BPpussy, morph: "hellhound" }>>\ <<endif>> <<set $Mon.chase to 100>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "snaps at you with its jaws but misses", "bites you but fails to penetrate skin"]>>\ <<set $Mon.att[1] to ["magic", 1, _BaseMaxDam, _BaseToHit, "breathes fire at you", "breathes fire at you somehow misses", "breathes fire at you but you cover yourself"]>>\ <<elseif _whichmon is "troll">>\ <<set $Mon.name to "troll">> <<set $Mon.morph to "troll">> <<if $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "troll" "female" "notail">>\ <<set $Mon.pic to "trollF.png">> <<set $Mon.virgin to "a big hairy troll">> <<set $Mon.desc to "A large troll with green fur and girl-cum eagerly driping down her thighs.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<else>> <<set $Mon.sex to "male">> <<AssignHumanoidAnatomyToMon "troll" "male" "notail">>\ <<set $Mon.pic to "trollM.png">> <<set $Mon.virgin to "A smelly troll">> <<set $Mon.desc to "A large troll with green fur and an obvious bulge in his pants.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<endif>> <<set $Mon.regen to _DunLev>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "ratkin">>\ <<set $Mon.name to "ratkin">> <<set $Mon.morph to "ratkin">> <<if $Mon.sex is "herm">>\ <<set $Mon.sex to either("male","female")>>\ <<endif>>\ <<if $Mon.sex is "female">> <<AssignHumanoidAnatomyToMon "ratkin" "female">>\ <<set $Mon.pic to "ratkinF.png">> <<set $Mon.virgin to "A fluffy rat-girl">> <<set $Mon.desc to "An rat-girl with cute mouse ears wearing an uncharacteristically anachronistic schoolgirl uniform.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<else>> <<AssignHumanoidAnatomyToMon "ratkin" "male">>\ <<set $Mon.pic to "ratkinM.png">> <<set $Mon.virgin to "A lecherous rat-man">> <<set $Mon.desc to "An rat-man wearing a curiously anachronistic school uniform.">> <<set $Mon.MeatSemenMilk to [112,212,312]>> <<endif>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold + 5>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "hydra">>\ <<set _HeadCount to either(2, 3)>>\ <<if _HeadCount is 2>>\ <<set $Mon.flurryQTY to 2>> <<set $Mon.name to "two-headed hydra">> <<set $Mon.desc to "A huge reptile weighing easily several tons. While the number of heads a hydra has varies, this particular specimen has two. Fortunately, unless dragons, hydras do not breath fire. Unfortunately, each of its heads is able to attack.">> <<set $Mon.pic to "hydraTwo.png">> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[1] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[2] to { type: $BPneck, morph: "snake" }>>\ <<set $Mon.anatomy[3] to { type: $BPneck, morph: "snake" }>>\ <<else>>\ <<set $Mon.flurryQTY to 3>> <<set $Mon.name to "two-headed hydra">> <<set $Mon.desc to "A huge reptile weighing easily several tons. While the number of heads a hydra has varies, this particular specimen has three. Fortunately, unless dragons, hydras do not breath fire. Unfortunately, each of its heads is able to attack.">> <<set $Mon.pic to "hydraThree.png">> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[1] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[2] to { type: $BPhead, morph: "snake" }>>\ <<set $Mon.anatomy[3] to { type: $BPneck, morph: "snake" }>>\ <<set $Mon.anatomy[4] to { type: $BPneck, morph: "snake" }>>\ <<set $Mon.anatomy[5] to { type: $BPneck, morph: "snake" }>>\ <<endif>>\ <<set _GetNextBP to $Mon.anatomy.length>> <<set $Mon.anatomy[_GetNextBP] to { type: $BPback, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +1] to { type: $BPchest, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +2] to { type: $BPwaist, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +3] to { type: $BPlegs, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +4] to { type: $BPlegs, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +5] to { type: $BPtail, morph: "snake" }>>\ \ <<set $Mon.morph to "hydra">> <<set _GetNextBP to $Mon.anatomy.length>> <<if $Mon.sex is "female">> <<set $Mon.virgin to "A hydra">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<set $Mon.anatomy[_GetNextBP] to { type: $BPboobs, morph: "snake" }>>\ <<set $Mon.anatomy[_GetNextBP +1] to { type: $BPpussy, morph: "snake" }>>\ <<else>> <<set $Mon.sex to "male">>\ <<set $Mon.anatomy[_GetNextBP] to { type: $BPpenis, morph: "snake" }>>\ <<set $Mon.virgin to "A powerful hydra">> <<set $Mon.MeatSemenMilk to [112,212,312]>> <<endif>> <<set $Mon.regen to _DunLev>> <<set $Mon.chase to 40>> <<set $Mon.gold to _BaseGold * 2>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "snaps at you, but misses", "bites you but fails to break skin"]>>\ <<set $Mon.att[1] to ["flurry", 1, _BaseMaxDam, _BaseToHit, "bites you", "snaps at you, but misses", "bites you but fails to break skin"]>>\ <<elseif _whichmon is "drider">>\ <<set $Mon.name to "drider">> <<set $Mon.morph to "drider">> <<set $Mon.resists[0] to ["cleave",50]>>\ <<set $Mon.sex to "female">> <<if $Mon.sex is "male">> <<set $Mon.pic to "driderM.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe male drider.">> <<set $Mon.MeatSemenMilk to [113,213,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "driderF.jpg">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe female drider.">> <<set $Mon.MeatSemenMilk to [113,-1,313]>> <<else>> <<set $Mon.pic to "driderH.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.MeatSemenMilk to [113,213,313]>> <<endif>> <<set $Mon.Willpower to _BaseWillpower>> <<set $Mon.chase to 1>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "demon">>\ <<set $Mon.anatomy[0] to { type: $BPhead, morph: "demon" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "demon" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "demon" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "demon" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "demon" }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: "demon" }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: "demon" }>>\ <<set $Mon.anatomy[11] to { type: $BPhooves, morph: "demon" }>>\ <<set $Mon.anatomy[12] to { type: $BPhorns, morph: "demon" }>>\ <<set $Mon.anatomy[13] to { type: $BPtail, morph: "demon" }>>\ <<set $Mon.anatomy[14] to { type: $BPpenis, morph: "demon" }>>\ <<set $Mon.SymbolEffect to "damage">> <<set $Mon.name to "demon">> <<set $Mon.morph to "demon">> <<set $Mon.resists[0] to ["cut",50]>>\ <<set $Mon.fireheal to true>> <<set $Mon.magres to _DunLev>> <<set $Mon.Willpower to _BaseWillpower +5>> <<if $Mon.sex is "male">> <<set $Mon.pic to "demonM.png">> <<set $Mon.virgin to "an incubus">> <<set $Mon.desc to "A muscular demon with a big, fat cock. His look brooks no nonsense.">> <<set $Mon.MeatSemenMilk to [115,215,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "demonF.jpg">> <<set $Mon.virgin to "a succubus">> <<set $Mon.desc to "A gorgeous female demon with a devilish grin.">> <<set $Mon.MeatSemenMilk to [115,-1,315]>> <<set $Mon.anatomy[14] to { type: $BPboobs, morph: "demon" }>>\ <<set $Mon.anatomy[15] to { type: $BPpussy, morph: "demon" }>>\ <<else>> <<set $Mon.pic to "demonH.jpg">> <<set $Mon.virgin to "an omnibus">> <<set $Mon.desc to "A demon with comically oversized breasts and a cock sized for a horse. She returns your gaze with interest.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.anatomy[15] to { type: $BPboobs, morph: "demon" }>>\ <<set $Mon.anatomy[16] to { type: $BPpussy, morph: "demon" }>>\ <<endif>> <<set $Mon.armor to _BaseArmor +10>> <<set $Mon.chase to 1>> <!- override values --> <<set $Mon.arpen to 1>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["magic", 1, _BaseMaxDam, _BaseToHit, "hurls a lighting bolt at you", "throws a lightning bolt but somehow misses", "hurls a lightning bolt at you, but you resist"]>>\ <<set $Mon.att[1] to ["magic", 1, _BaseMaxDam, _BaseToHit, "hurls a firebolt at you", "throws a firebolt but somehow misses", "hurls a firebolt at you, but you resist"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "tentacle">>\ <<set $Mon.flurryQTY to random(2,5)>>\ <<set _Tqty to random(5,12)>>\ <<for _i to 0; _i < _Tqty; _i++>> <<set $Mon.anatomy[_i] to { type: $BPtentacle, morph: "tentacle" }>>\ <</for>>\ <<set $Mon.TakesGold to false>>\ <<set $Mon.resists[0] to ["blunt",50]>>\ <<set $Mon.name to "tentacle">> <<set $Mon.morph to "tentacle">> <<set $Mon.sex to "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "it">> <<set $Mon.himher to "it">> <<set $Mon.hisher to "its">> <<set $Mon.pic to "tentacleA.png">> <<set $Mon.virgin to "a tentacle monster">> <<set $Mon.desc to "A swirling mass of pulsating tentacles trailing sticky globs of thick fluids that make its intentions towards you very clear.">> <<set $Mon.MeatSemenMilk to [-1,-1,-1]>> <<set $Mon.armor to _BaseArmor -10>> <<set $Mon.Willpower to _BaseWillpower +5>> <<set $Mon.chase to 100>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["flurry", 1, _BaseMaxDam, _BaseToHit, "hits you with a tentacle", "pokes at you with a tentacle", "brushes against you with a tentacle"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "coils a tentacle up and between your thighs", "reaches for your thighs but misses", "reaches a tentacle between your legs but you bat it away"]>>\ <<set $Mon.att[2] to ["REMOVEARMOR", 1, (1 + _DunLev), (50 + _DunLev), "grabs onto your clothes and dislodges them slightly", "tries to grab you, but you evade", "grabs your clothing with a tendril, but you hastily bat it aside "]>>\ <<elseif _whichmon is "Charyss">>\ <<set $Mon.unique to true>>\ <<set $Mon.boss to 2>> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "demon" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "demon" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "demon" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "demon" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "demon" }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: "demon" }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: "demon" }>>\ <<set $Mon.anatomy[11] to { type: $BPhooves, morph: "demon" }>>\ <<set $Mon.anatomy[12] to { type: $BPhorns, morph: "demon" }>>\ <<set $Mon.anatomy[13] to { type: $BPtail, morph: "demon" }>>\ <<set $Mon.anatomy[14] to { type: $BPpenis, morph: "demon" }>>\ <<set $Mon.anatomy[15] to { type: $BPboobs, morph: "demon" }>>\ <<set $Mon.anatomy[16] to { type: $BPpussy, morph: "demon" }>>\ <<set $Mon.SymbolEffect to "damage">> <<set $Mon.name to "Charyss">> <<set $Mon.morph to "demon">> <<set $Mon.resists[0] to ["cut",50]>>\ <<set $Mon.resists[1] to ["cleave",50]>>\ <<set $Mon.fireheal to true>>\ <<set $Mon.magres to _DunLev>>\ <<set $Mon.Willpower to _BaseWillpower +5>> <<set $Mon.pic to "demonH.jpg">> <<set $Mon.virgin to "Charyss">> <<set $Mon.desc to "A demon with comically oversized breasts and a cock sized for a horse. She seemed only marginally interested in fighting you, and is mumbling under her breath about how all she wanted was a beer.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.armor to _BaseArmor +10>> <<set $Mon.chase to -99>> <<set $Mon.arpen to 1>> <<set $Mon.gold to _BaseGold>> <<set $Mon.att[0] to ["physical", 5, _BaseMaxDam +5, _BaseToHit, "smacks you with her tail", "swings her tail at you, but misses", "smacks you with her tail, but it only grazes you"]>>\ <<set $Mon.att[1] to ["magic", 5, _BaseMaxDam +5, _BaseToHit, "hurls a firebolt at you", "throws a firebolt but somehow misses", "hurls a firebolt at you, but you resist"]>>\ <<set $Mon.att[2] to ["POISON", 1, 1, _BaseSpecialToHit +5, "casts poison at you", "casts a spell at you, but you resist", "casts a spell at you, but you resist"]>>\ <<set $Mon.att[3] to ["flirt", 5, _BaseFlirtDam +5, _BaseFlirtTH, "blows you a kiss", "blows you a kiss, but you ignore it", "blows you a kiss, but you ignore it"]>>\ <<elseif _whichmon is "Zehtalia">>\ <<set $Mon.unique to true>>\ <<set $Mon.boss to 1>> <<set $Mon.AI to "Zehtalia">> <<set $Mon.resists[0] to ["cleave",50]>>\ <<set $Mon.SymbolEffect to "damage">> <<set $Mon.name to "Zehtalia, the Spider Queen">> <<set $Mon.morph to "Zehtalia">> <<set $Mon.sex to "female">> <<SetStandardFemale>> <<set $Mon.pic to "Zehtalia.png">> <<set $Mon.virgin to "Zetahlia, the Spider Queen">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.hpcur to 200>> <<set $Mon.hpmax to 200>> <<set $Mon.armor to _BaseArmor>> <<set $Mon.magres to 10>> <<set $Mon.poisonheal to true>> <<set $Mon.Willpower to (_BaseWillpower * 2)>> <<set $Mon.chase to 999>> <<set $Mon.arpen to 5>> <<set $Mon.gold to 200>> <<set $Mon.TakesGold to false>>\ <<set $Mon.xp to 50>> <<set $Mon.att[0] to ["physical", 5, 10, _BaseToHit, "rakes your flesh with her leg spines", "tries to kick you but misses", "barely grazes you with a hairy leg"]>>\ <<set $Mon.att[1] to ["WEB", 1, 4, 10, "sprays you with webbing that makes it harder to move", "sprays webbing at you, but you evade", "sprays webbing on you, but you quickly brush it off"]>>\ <<set $Mon.att[2] to ["POISON", 1, 1, 10, "sprays a cloud of poison around you", "sprays a cloud of poison, but you dodge", "sprays a cloud of poison around you, but you avoid the worst of it"]>>\ <!-- unique loot --> <<set _Ipsimus to setup.FindUnique(700)>> <<set _Custodia to setup.FindUnique(701)>> <<if (_Ipsimus[0] is false) and (_Custodia[0] is false)>> <<set $Mon.desc to "A cute anime waifu with glowing eyes from the waist up, and a horrible, hideous spider from the waist down. Swinging the massive flail @@color:LightBlue;'Ipsismus'@@ over her head in one hand and cradling the sword @@color:LightBlue;'Custodia'@@ in the other, she eyes you with dull interest.">> <<set $Mon.att[3] to ["physical", 5, 10, _BaseToHit, "smashes you with @@color:LightBlue;'Ipsismus'@@", "swings at you, but misses", "smashes you with her flail, but it is a glancing blow"]>>\ <<set $Mon.att[4] to ["physical", 3, 8, _BaseToHit, "slashes you with @@color:LightBlue;'Custodia'@@", "swings at you, but misses", "slashes you with @@color:LightBlue;'Custodia'@@, but it is a glancing blow"]>>\ <<set $Mon.loot to [either(700,701),0,0,0]>> <<elseif (_Ipsimus[0] is false) and (_Custodia[0] is true)>> <<set $Mon.desc to "A cute anime waifu with glowing eyes from the waist up, and a horrible, hideous spider from the waist down. She is carrying the massive flail @@color:LightBlue;'Ipsismus'@@ in both hands, and glaring at you with hatred.">> <<set $Mon.att[3] to ["physical", 5, 10, _BaseToHit, "smashes you with @@color:LightBlue;'Ipsismus'@@", "swings at you, but misses", "smashes you with her flail, but it is a glancing blow"]>>\ <<set $Mon.loot to [700,0,0,0]>> <<elseif (_Ipsimus[0] is true) and (_Custodia[0] is false)>> <<set $Mon.desc to "A cute anime waifu with glowing eyes from the waist up, and a horrible, hideous spider from the waist down. The is holding the sword @@color:LightBlue;'Custodia'@@ protectively with both hands, and glaring at you with hatred.">> <<set $Mon.att[3] to ["physical", 3, 8, _BaseToHit, "smashes you with @@color:LightBlue;'Custodia'@@", "swings at you, but misses", "smashes you with her flail, but it is a glancing blow"]>>\ <<set $Mon.loot to [701,0,0,0]>> <<else>> <<set $Mon.desc to "Empty-handed, Zehtalis is frothing at the mouth in sheer fury.">> <<set $Mon.loot to [0,0,0,0]>> <<endif>>\ <<elseif _whichmon is "Neris">>\ <<set $Mon.unique to true>>\ <<set $Mon.boss to 3>> <<set $Mon.anatomy[0] to { type: $BPhead, morph: "demon" }>>\ <<set $Mon.anatomy[1] to { type: $BPneck, morph: "demon" }>>\ <<set $Mon.anatomy[2] to { type: $BPback, morph: "demon" }>>\ <<set $Mon.anatomy[3] to { type: $BPchest, morph: "demon" }>>\ <<set $Mon.anatomy[4] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[5] to { type: $BPwield, morph: "demon" }>>\ <<set $Mon.anatomy[6] to { type: $BPhands, morph: "demon" }>>\ <<set $Mon.anatomy[7] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[8] to { type: $BPring, morph: "demon" }>>\ <<set $Mon.anatomy[9] to { type: $BPwaist, morph: "demon" }>>\ <<set $Mon.anatomy[10] to { type: $BPlegs, morph: "demon" }>>\ <<set $Mon.anatomy[11] to { type: $BPhooves, morph: "demon" }>>\ <<set $Mon.anatomy[12] to { type: $BPhorns, morph: "demon" }>>\ <<set $Mon.anatomy[13] to { type: $BPtail, morph: "demon" }>>\ <<set $Mon.anatomy[14] to { type: $BPpenis, morph: "demon" }>>\ <<set $Mon.anatomy[15] to { type: $BPboobs, morph: "demon" }>>\ <<set $Mon.anatomy[16] to { type: $BPpussy, morph: "demon" }>>\ <<set $Mon.SymbolEffect to "damage">> <<set $Mon.name to "Neris">> <<set $Mon.AI to "Neris">> <<set $Mon.morph to "Neris">> <<set $Mon.SymbolEffect to "blink">> <<set $Mon.resists[0] to ["cut",20]>>\ <<set $Mon.resists[1] to ["cleave",20]>>\ <<set $Mon.resists[2] to ["blunt",20]>>\ <<set $Mon.resists[3] to ["pierce",20]>>\ <<set $Mon.fireheal to true>>\ <<set $Mon.magres to _DunLev>>\ <<set $Mon.poisonheal to true>> <<set $Mon.Willpower to _BaseWillpower +999>> <<set $Mon.pic to "Neris.png">> <<set $Mon.virgin to "Neris">> <<set $Mon.desc to "A smallish girl with demon horns, and wings sprouting from her back. Her dress is tattered, and she wears manacles on her wrists and ankles, a few feet of shredded chains dangling from them. Despite the battle raging around her, she merely looks at you sadly.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.armor to 0>> <<set $Mon.chase to -99>> <<set $Mon.arpen to 1>> <<set $Mon.gold to 2000>> <<set $Mon.TakesGold to false>>\ <<set $Mon.att[0] to ["physical", 5, _BaseMaxDam +5, _BaseToHit, "smacks you with her tail", "swings her tail at you, but misses", "smacks you with her tail, but it only grazes you"]>>\ <<set $Mon.att[1] to ["magic", 5, _BaseMaxDam +5, _BaseToHit, "hurls a lightning bolt at you", "throws a bolt of lightning but somehow misses", "hurls lightning at you, but it grounds itself harmlessly"]>>\ <<else>>\ <<set _LogText to "Error in GetMon: unrecognized monster requested: ( + " _whichmon + ")">>\ <<AddToLog _LogText>>\ <<endif>>\ <</silently>>\ <</widget>>\ <<widget "GetMon">>\ <<silently>>\ <<set $poisoned to 0>> \ <<set _DunLev to $PC[$CC][$PCz]>> <<if $PC[$CC][$PClocation] is "forest">> <<set _DunLev to $PC[$CC][$PCfz]>> <<endif>>\ <<if _DunLev < 0>> @@color:Red;Error in GetMon: DunLev is negative@@ <<set _DunLev to _DunLev * -1>> <<endif>> <<set _multi to 1>> <<if _DunLev > 15>>\ <<set _multi to 4>>\ <<elseif _DunLev > 10>>\ <<set _multi to 3>>\ <<elseif _DunLev > 5>>\ <<set _multi to 2>>\ <<endif>>\ \ <<set $Mon to {}>> <<set $Mon.sex to "female">> <<if $PC[$CC][$PCsex] is "female">>\ <<if random(1,10) < 8>> <<set $Mon.sex to "male">> <<endif>>\ <<endif>> <<set _whichmon to setup.GetMonByDLEV($PC[$CC][$PCz])>>\ \ <<if $ForceMon[0] is "random">> <<else>> <<set _whichmon to $ForceMon[0]>> <<endif>> <<if ($ForceMon[1] neq "random")>> <<set $Mon.sex to $ForceMon[1]>> <<else>> <<set $Mon.sex to setup.GetStandardSex()>> <<endif>> \ <<if (0 is 1)>>\ <<set _whichmon to "fox">>\ <<endif>>\ \ <<set $Mon.level to _DunLev>> \ <<if _whichmon is "goblin">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "goblin">> <<set $Mon.morph to "goblin">> <<set $Mon.att to []>> <<if $Mon.sex is "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "goblinM.png">> <<set $Mon.virgin to "a male goblin">> <<set $Mon.desc to "A fairly typical male goblin. Short, horny, angry, ready to rape and beat anyone into submission. Not neccesarily in that order.">> <<set $Mon.MeatSemenMilk to [107,207,-1]>> <<set $Mon.att[0] to ["physical", 1, (1 + _multi), (5 + _DunLev), "hits you", "takes a swing at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["physical", 1, (1 + _multi), (5 + _DunLev), "whacks you with his club", "swings at you but misses", "whacks you with his club, but the blow glances off you"]>>\ <<set $Mon.att[2] to ["flirt", 1, (1 + _multi), 50 + (5 * _multi), "grins and licks his lips at you eagerly", "leers at you", "grins at you, but you're not impressed"]>>\ <<elseif $Mon.sex is "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "goblinF.png">> <<set $Mon.virgin to "a female goblin">> <<if $PC[$CC][$PCsex] is "female">>\ <<set $Mon.desc to "A short goblin with huge sexy tits. She's giving you a half-aroused, half-furious stare. You suspect she's envious of your height, but simultaneously turned on by it, and struggling to find a happy medium between angry and horny.">> <<set $Mon.MeatSemenMilk to [107,-1,307]>> <<else>> <<set $Mon.desc to "A short goblin with huge sexy tits, if you're into that kind of thing. And from the look she's giving you, you suspect she'd love for you to be into it. Or her, for that matter.">> <<endif>> <<set $Mon.att[0] to ["physical", 1, (1 + _multi), (5 + _DunLev), "whacks you with one of her boobs", "swings her boobs at you but fails to connect", "whacks you with her boobs but it doesn't hurt much"]>>\ <<set $Mon.att[1] to ["flirt", 1, (1 + _multi), 50 + (5 * _multi), "sticks a finger in her pussy then licks it", "tries to call attention to her pussy but fails", "fondles herself to try to distract you, but you ignore it"]>>\ <<set $Mon.att[2] to ["flirt", 1, (1 + _multi), 50 + (5 * _multi), "pulls a breast to her lips and licks its", "reaches for her chest but slips", "fondles herself to try to distract you, but you ignore it"]>>\ <<else>> <<set $Mon.pic to "goblinH.png">> <<set $Mon.penis to true>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<if random(1,2) is 1>>\ <<set $Mon.virgin to "a goblin hermaphrodite">> <<set $Mon.pussy to true>> <<else>>\ <<set $Mon.virgin to "a goblin crossdresser">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.desc to "A somewhat sexually ambiguous goblin. He clearly has a dick, but he's unusually feminine for a male goblin, and you're not entirely sure whether that hole he's leering at you with is a pussy, or just his ass hole.">> <<set $Mon.MeatSemenMilk to [107,207,307]>> <<set $Mon.att[0] to ["physical", 1, (1 + _multi), (5 + _DunLev), "hits you", "takes a swipe at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["flirt", 1, (1 + _multi), 50 + (5 * _multi), "stokes himself and invites you to take over", "strokes himself, but fails to distract you", "strokes himself, but you ignore it"]>>\ <<endif>> <<if _DunLev > 4>> <<set $Mon.att[2] to ["flirt", 2, (1 + _multi), 50 + (5 * _multi), "throws a vial full of sweet-smelling pink liquid on you", "throws a vial of pink liquid at you, but you dodge", "throws pink liquid on you, but you quickly brush it off"]>>\ <<set $Mon.loot[1] to [109,0,1,404]>>\ <<endif>> <<set $Mon.hpcur to 30 + (5 * _DunLev)>> <<set $Mon.hpmax to 30 + (5 * _DunLev)>> <<set $Mon.armor to 30 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 25>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(4,20) + _multi>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to either(true, false)>> <<set $Mon.loot[1] to [103,0,0,0]>><!-- dildo -->\ <<elseif _whichmon is "slime">>\ <<set $Mon.name to "slime">> <<set $Mon.morph to "slime">> <<if $Mon.sex is "male">> <<set $Mon.pic to "slimeM.png">> <<set $Mon.virgin to "a slime man">> <<set $Mon.desc to "A large, powerfully built man of slime. At least, he looks powerful. You're not entirely sure just how strong something made of slime can be, but he certainly looks the part. His cock is visibly dripping some sort of fluid, and you can't help but wonder whether that's actually semen, or whether it's simply his insides leaking out. Goo physiology is a little odd.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "slimeF.png">> <<set $Mon.virgin to "a slime girl">> <<set $Mon.desc to "A lithe and lovely slime girl. Ironically, being made of goo probably makes it easy for her to maintain her figure. If she gains weight, she can simply bulge it out into whatever direction she wants. From the size of her breasts, you imagine she must eat well.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<else>> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<set $Mon.virgin to "a slime">> <<if random(1,1) is 1>> <<set $Mon.pic to "slimeHa.png">> <<set $Mon.desc to "A slime sporting a variety of parts that make its gender and species a bit ambiguious. The huge cock pointed at you is clear enough, but she's also sporting hips big enuogh to give birth to a basketball and some admittedly small, but unmistakable breasts. And also slime cat ears, a slime tail, and what looks like a slime dog's nose...because why not? After all, when you can shape your body into anything you want, why not flaunt it?">> <<else>> <<set $Mon.pic to "slimeHb.png">> <<set $Mon.desc to "Implement slime Hb">> <<endif>> <<endif>> <<set $Mon.hpcur to 10 + (5 * _DunLev)>> <<set $Mon.hpmax to 10 + (5 * _DunLev)>> <<set $Mon.armor to 70 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 10>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 1>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(4,20)>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, (2 +_multi), (50 + _DunLev), "hits you", "extends a tendril in your direction, but misses", "hits you with a tendril, but it squishes on impact"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), 50 + (5 * _multi), "shifts its body around to be more to your liking", "tries to shift its body around", "shifts its body around, but the result is not an improvement"]>>\ <<set $Mon.att[2] to ["debuffAC", 1, (1 + _DunLev), (50 + _DunLev), "grabs onto your clothes with a tendril and dislodges them slightly", "tries to grab you, but you evade", "grabs your clothing with a tendril, but you hastily bat it aside "]>>\ <<set $Mon.att[3] to ["debuffPOISON", 1, 1, 50 + (5 * _multi), "stabs you with a tendril that spurts some fluid into you", "pokes at you ineffectually with a tendril", "poke you with a tendril, but you grab it before it can do anything"]>>\ <<elseif _whichmon is "bunny">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "bunny">> <<set $Mon.morph to "bunny">> <<if $Mon.sex is "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.virgin to "a bunny boy">> <<set $Mon.pic to "bunnyM.png">> <<set $Mon.desc to "Hopping around on his hands and knees, you suspect this bunny boy's chosen form of locomotion doubles both for sexual purposes, as well as simply to help him stay in character.">> <<set $Mon.MeatSemenMilk to [100,200,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "bunnyF.png">> <<set $Mon.virgin to "a bunny girl">> <<set $Mon.desc to "With tits nearly as big as her head, this bunny girl giggles happiliy as she comes at you with a look in her eyes that you're not entirely sure is lethal or lustful intent.">> <<set $Mon.MeatSemenMilk to [100,-1,300]>> <<else>> <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "bunnyH.png">> <<set $Mon.virgin to "a futa bunny dickgirl">> <<set $Mon.desc to "With a cock even more masive than her humongous breasts, her eyes glisten as she eyes up and down your torso, eventually settling on a spot between your legs she finds especially interesting. 'Bend over for me, dear,' she whispers as she strokes her cock.">> <<set $Mon.MeatSemenMilk to [100,200,300]>> <<endif>> <<set $Mon.hpcur to 10 + (2 * _DunLev)>> <<set $Mon.hpmax to 10 + (2 * _DunLev)>> <<set $Mon.armor to 20 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "cat">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "cat">> <<set $Mon.morph to "cat">> <<set $Mon.hpcur to 10 + (2 * _DunLev)>> <<set $Mon.hpmax to 10 + (2 * _DunLev)>> <<set $Mon.armor to 20 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<if $Mon.sex is "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "catM.png">> <<set $Mon.virgin to "a manly cat man">> <<set $Mon.desc to "A powerfully built muscle-man with cat ears and tail. The way he looks at you makes it clear that he's used to getting his way, and if you're not careful, his way is going to be with you. Though whether sexually, or simply dragging you to the gym with him is unclear.">> <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "points suggestively at his barbed cock", "points at his cock, but the barbs are far from a turn-in", "points at his cock, but the barbs are far from a turn-in"]>>\ <<set $Mon.MeatSemenMilk to [101,201,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "catF.png">> <<set $Mon.virgin to "a buxom catgirl">> <<set $Mon.desc to "A buxom catgirl wih huge breasts and child-bearing hips looks at you with an air of casual indifference that belies the insistence of her attacks. Still, she would almost be cute if she weren't trying to murder you. Or is she? From one moment to the next, it's hard to tell.">> <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "demurely insists that it's not like she likes you or anything", "insists that she doesn't like you, but her expression keeps it from sounding ironic", "insists that she doesn't like you, but you shrug it off"]>>\ <<set $Mon.MeatSemenMilk to [101,-1,301]>> <<else>> <<set $Mon.pic to "catH.png">> <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "it">> <<set $Mon.himher to "its">> <<set $Mon.hisher to "its">> <<set $Mon.virgin to "a futa catgirl">> <<set $Mon.desc to "A catgirl futa with plump breasts and an erect cock already dribbling with pre-cum. Seeing the light-teal of her pubic hair and mane, you can't help but notice that the carpet does match the drapes.">> <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "squeezes her boobs together and invites you to do the same", "squeezes a boob with one hand and strokes her cock with the other", "gropes herself, but is too distracted by her own body for it to really be called flirtatious"]>>\ <<set $Mon.MeatSemenMilk to [101,201,301]>> <<endif>> <<elseif _whichmon is "fox">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "fox">> <<set $Mon.morph to "fox">> <<set $Mon.att to []>> <<if $Mon.sex is "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "foxM.png">> <<set $Mon.virgin to "a fox-man">> <<set $Mon.desc to "An anthropomorphic fox-man with a green dick. A dick that he's already stroking as he looks at you.">> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "strokes himself and invites you to take over", "strokes himself, but you ignore it", "strokes himself, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "foxF.jpg">> <<set $Mon.virgin to "a fox-girl">> <<set $Mon.desc to "An attractive fox-girl covered in a thin layer of brown fur. Her tail twitches occasionally as she looks at you.">> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "slashes at you with her claws", "slashes at you, but misses", "slashes you with her claws, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,-1,302]>> <<else>> <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "foxH.png">> <<set $Mon.virgin to "an effeminate fox-boy">> <<set $Mon.desc to "An effeminate fox-boy with a suspicious bulge in his panties. ">> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "rubs his bulge and winks suggestively", "rubs his bulge and winks at you, but you ignore it", "rubs his bulge and winks at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,302]>> <<endif>> <<set $Mon.hpcur to 10 + (2 * _DunLev)>> <<set $Mon.hpmax to 10 + (2 * _DunLev)>> <<set $Mon.armor to 20 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<elseif _whichmon is "wolf">>\ <<set $Mon.name to "wolf">> <<set $Mon.morph to "wolf">> <<set $Mon.sex to "male">> <<set $Mon.pic to "wolfM.png">> <<set $Mon.virgin to "a burly wolf-man">> <<set $Mon.MeatSemenMilk to [103,203,-1]>> <<set $Mon.desc to "A burly wolf-man with a thick, meaty cock he'd like to share with you.">> <<set $Mon.hpcur to 10 + (2 * _DunLev)>> <<set $Mon.hpmax to 10 + (2 * _DunLev)>> <<set $Mon.armor to 40 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to 0>> <<set $Mon.xp to _DunLev>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "bites you", "snaps at you with his jaws, but misses", "bites you, but fails to pierce your flesh"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "points suggestively at his erection", "pumps his cock a few times, but you ignore it", "pumps his cock a few times, but you ignore it"]>>\ <<elseif _whichmon is "human">>\ <<set $Mon.name to "adventurer">> <<set $Mon.morph to "human">> <<set $Mon.hpcur to 10 + (5 * _DunLev)>> <<set $Mon.hpmax to 10 + (5 * _DunLev)>> <<set $Mon.armor to 20 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<if $Mon.sex is "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "humanM.png">> <<set $Mon.virgin to "a human swordsman">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a swordsman.">> <<set $Mon.MeatSemenMilk to [106,206,-1]>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<elseif $Mon.sex is "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "humanF.jpg">> <<set $Mon.virgin to "a human sorceress">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a spellcaster.">> <<set $Mon.MeatSemenMilk to [106,-1,306]>> <<set $Mon.att[0] to ["magic", 1, _DunLev, (50 + _DunLev), "hurls a fireball at you", "hurls a fireball at you, but misses", "hurls a fireball at you, but it just grazes you"]>>\ <<set $Mon.att[1] to ["magic", 1, _DunLev, (50 + _DunLev), "hurls a bolt of lightning at you", "hurls lightning at you, but misses", "hurls lightning at you, but it just grazes you"]>>\ <<set $Mon.att[2] to ["magic", 1, _DunLev, (50 + _DunLev), "hurls a frost bolt at you", "hurls a frost bolt at you, but misses", "hurls a frost bolt at you, but it just grazes you"]>>\ <<set $Mon.att[3] to ["heal", 1, _DunLev, 100, "heals herself ", "Can't miss heals", "Can't absorb heals"]>>\ <<else>> <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<if random(1,2) is 1>>\ <<set $Mon.virgin to "a hermaphrodite human adventurer">> <<set $Mon.pussy to true>> <<else>>\ <<set $Mon.virgin to "a crossdressing human adventurer">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.pic to "humanH.jpg">> <<set $Mon.desc to "A somewhat sexually ambiguous human adventurer. Though small, those are clearly breasts. But the broad shoulders and visible adam's apple lead you to suspect that there's probably a bulge in those pants.">> <<set $Mon.MeatSemenMilk to [106,206,306]>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<endif>> <<elseif _whichmon is "minotaur">>\ <<set $Mon.name to "minotaur">> <<set $Mon.morph to "minotaur">> <<if $Mon.sex is "male">> <<set $Mon.pic to "minotaurM.png">> <<set $Mon.virgin to "a minotaur">> <<set $Mon.desc to "Describe male minotaur.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "minotaurF.png">> <<set $Mon.virgin to "a female minotaur">> <<set $Mon.desc to "Describe female minotaur.">> <<set $Mon.MeatSemenMilk to [112,-1,312]>> <<else>> <<set $Mon.pic to "minotaurH.png">> <<set $Mon.virgin to "a minotaur hermaphrodite">> <<set $Mon.desc to "Describe h minotaur.">> <<set $Mon.MeatSemenMilk to [112,212,312]>> <<endif>> <<set $Mon.hpcur to 10 + (10 * _DunLev)>> <<set $Mon.hpmax to 10 + (10 * _DunLev)>> <<set $Mon.armor to 50 + (5 * _DunLev)>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "imp">>\ <<set $Mon.name to "imp">> <<set $Mon.morph to "imp">> <<if $Mon.sex is "male">> <<set $Mon.pic to "impM.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe male imp.">> <<set $Mon.MeatSemenMilk to [110,210,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "impF.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe female imp.">> <<set $Mon.MeatSemenMilk to [110,-3,310]>> <<else>> <<set $Mon.pic to "impH.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe h imp.">> <<set $Mon.MeatSemenMilk to [110,210,310]>> <<endif>> <<set $Mon.hpcur to 10 + (2 * _DunLev)>> <<set $Mon.hpmax to 10 + (2 * _DunLev)>> <<set $Mon.armor to 20 + (5 * _DunLev)>> <<set $Mon.magres to (5 * _DunLev)>> <<set $Mon.resistflirt to 0>> <<set $Mon.chase to 40>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "hellhound">>\ <<set $Mon.name to "hellhound">> <<set $Mon.morph to "hellhound">> <<if $Mon.sex is "male">> <<set $Mon.pic to "houndM.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe male hellhound.">> <<set $Mon.MeatSemenMilk to [111,211,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "houndF.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe female hellhound.">> <<set $Mon.MeatSemenMilk to [111,-1,311]>> <<else>> <<set $Mon.pic to "houndH.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe h hellhound.">> <<set $Mon.MeatSemenMilk to [111,211,311]>> <<endif>> <<set $Mon.hpcur to 50 + (5 * _DunLev)>> <<set $Mon.hpmax to 50 + (5 * _DunLev)>> <<set $Mon.armor to 50 + (5 * _DunLev)>> <<set $Mon.magres to _DunLev>> <<set $Mon.resistflirt to 100>> <<set $Mon.chase to 100>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to 0>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "drider">>\ <<set $Mon.name to "drider">> <<set $Mon.morph to "drider">> <<if $Mon.sex is "male">> <<set $Mon.pic to "driderM.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe male drider.">> <<set $Mon.MeatSemenMilk to [113,213,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "driderF.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe female drider.">> <<set $Mon.MeatSemenMilk to [113,-1,313]>> <<else>> <<set $Mon.pic to "driderH.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.MeatSemenMilk to [113,213,313]>> <<endif>> <<set $Mon.hpcur to 50 + (5 * _DunLev)>> <<set $Mon.hpmax to 50 + (5 * _DunLev)>> <<set $Mon.armor to 50 + (5 * _DunLev)>> <<set $Mon.magres to _DunLev>> <<set $Mon.resistflirt to 50>> <<set $Mon.chase to 1>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1, _DunLev)>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "demon">>\ <<set $Mon.name to "demon">> <<set $Mon.morph to "demon">> <<if $Mon.sex is "male">> <<set $Mon.pic to "demonM.png">> <<set $Mon.virgin to "an incubus">> <<set $Mon.desc to "Describe male demon.">> <<set $Mon.MeatSemenMilk to [115,215,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "demonF.png">> <<set $Mon.virgin to "a succubus">> <<set $Mon.desc to "Describe female demon.">> <<set $Mon.MeatSemenMilk to [115,-1,315]>> <<else>> <<set $Mon.pic to "demonH.png">> <<set $Mon.virgin to "an omnibus">> <<set $Mon.desc to "Describe h demon.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<endif>> <<set $Mon.hpcur to 50 + (5 * _DunLev)>> <<set $Mon.hpmax to 50 + (5 * _DunLev)>> <<set $Mon.armor to 50 + (5 * _DunLev)>> <<set $Mon.magres to _DunLev>> <<set $Mon.resistflirt to 50>> <<set $Mon.chase to 1>> <<set $Mon.arpen to 1>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to random(1, _DunLev)>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "tentacle">>\ <<set $Mon.name to "tentacle">> <<set $Mon.morph to "tentacle">> <<set $Mon.sex to "male">> <<set $Mon.pic to "tentacleM.png">> <<set $Mon.virgin to "a tentacle monster">> <<set $Mon.desc to "Describe tentacle monster.">> <<set $Mon.MeatSemenMilk to [-1,-1,-1]>> <<set $Mon.hpcur to 10 + _DunLev>> <<set $Mon.hpmax to 10 + _DunLev>> <<set $Mon.armor to 20 + _DunLev>> <<set $Mon.magres to 0>> <<set $Mon.resistflirt to 50>> <<set $Mon.chase to 1>> <<set $Mon.arpen to 0>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to 0>> <<set $Mon.xp to _DunLev +2>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [114,214,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, _DunLev, (50 + _DunLev), "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, (5 +_multi), (50 + _DunLev), "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "Boss A">>\ <<set $Mon.name to "Zetahlia, the Spider Queen">> <<set $Mon.morph to "drider">> <<set $Mon.sex to "female">> <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "BossA.png">> <<set $Mon.virgin to "Zetahlia, the Spider Queen">> <<set $Mon.desc to "A cute anime waifu with glowing eyes from the waist up, and a horrible, hideous spider from the waist down. Swinging a massive flail in one hand and carrying a sword in the other, she eyes you with interest.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.hpcur to 100>> <<set $Mon.hpmax to 100>> <<set $Mon.armor to 100>> <<set $Mon.magres to 10>> <<set $Mon.resistflirt to 50>> <<set $Mon.chase to 1>> <<set $Mon.arpen to 5>> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <<set $Mon.gold to 100>> <<set $Mon.xp to 50>> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <<set $Mon.att[0] to ["physical", 1, 10, 80, "stabs you you", "stabs at you, but misses", "stabs you, but somehow you deflect the hit"]>>\ <<set $Mon.att[1] to ["physical", 1, 10, 80, "smashes you with her flail", "swings at you, but misses", "smashes you with her flail, but it is a glancing blow"]>>\ <<set $Mon.att[2] to ["flirt", 5, 10, 80, "sprays pheromones at you", "sprays pheromones at you, but you resist", "sprays pheromones at you, but you resist"]>>\ <<set $Mon.att[3] to ["debuffAC", 1, 4, 50, "sprays you with webbing that makes it harder to move", "sprays webbing at you, but you evade", "sprays webbing on you, but you quickly brush it off"]>>\ <<set $Mon.att[4] to ["debuffPOISON", 1, 1, 50, "sprays a cloud of poison aroudn you", "sprays a cloud of poison, but you dodge", "sprays a cloud of poison around you, but you avoid the worst of it"]>>\ <<else>>\ <<AddToLog "Error in GetMon: unrecognized monster requested">>\ <<endif>>\ <</silently>>\ <</widget>>\ <<widget "SetStandardMale">>\ <<set $Mon.penis to true>>\ <<set $Mon.pussy to false>>\ <<set $Mon.boobs to false>>\ <<set $Mon.heshe to "he">>\ <<set $Mon.himher to "him">>\ <<set $Mon.hisher to "his">>\ <</widget>>\ <<widget "SetStandardFemale">>\ <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <<set $Mon.pic to "goblinF.png">> <</widget>>\ <<widget "SetStandardHermaphrodite">>\ <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <</widget>>\ <<widget "GetMon">>\ \ <<set _DunLev to $PC[$CC][$PCz]>> <<if $PC[$CC][$PClocation] is "forest">> <<set _DunLev to $PC[$CC][$PCfz]>> <<endif>>\ <<if _DunLev < 0>> @@color:Red;Error in GetMon: _DunLev is negative@@ <<set _DunLev to _DunLev * -1>> <<endif>> \ <!-- sex selector --> <<set $Mon to {}>> <<set $Mon.sex to "female">> <<if $PC[$CC][$PCsex] is "female">>\ <<if random(1,10) < 8>> <<set $Mon.sex to "male">> <<endif>>\ <<endif>> <<set _whichmon to setup.GetMonByDLEV($PC[$CC][$PCz])>>\ \ <<if $ForceMon[0] is "random">> <<else>> <<set _whichmon to $ForceMon[0]>> <<endif>> <<if ($ForceMon[1] neq "random")>> <<set $Mon.sex to $ForceMon[1]>> <<else>> <<set $Mon.sex to setup.GetStandardSex()>> <<endif>> <!-- NOTE: some monsters ovveride specific parts and pronouns --> <<if $Mon.sex is "male">> <<SetStandardMale>> <<elseif $Mon.sex is "female">> <<SetStandardFemale>> <<else>>\ <<SetStandardHermaphrodite>> <<endif>> <!-- end sex selector --> \ <!-- override for testing --> <<if (1 is 1)>>\ <<set _whichmon to "fox">>\ <<endif>>\ \ <!-- Baseline values --> <<if $PC[$CC][$PClocation] is "forest">> <<set _BaseToHit to 1>> <<set _BaseMaxDam to 1>> <<set _BaseFlirtTH to 1>> <<set _BaseFlirtDam to 1>> <<set _BaseFlirtResist to 1>> <<set _BaseArmor to 1>> <<set _BaseHealth to 1>> <<set $Mon.xp to 1>> <<elseif $PC[$CC][$PClocation] is "tower">> <<set _BaseToHit to 1>> <<set _BaseMaxDam to 1>> <<set _BaseFlirtTH to 1>> <<set _BaseFlirtDam to 1>> <<set _BaseFlirtResist to 1>> <<set _BaseArmor to 1>> <<set _BaseHealth to 1>> <<set $Mon.xp to 1>> <<else>>\ <!-- defaulting to forest -->\ <<set _BaseToHit to 1>> <<set _BaseMaxDam to 1>> <<set _BaseFlirtTH to 1>> <<set _BaseFlirtDam to 1>> <<set _BaseFlirtResist to 1>> <<set _BaseArmor to 1>> <<set _BaseHealth to 1>> <<endif>>\ <!-- BEGIN BOILERPLATE --> <<set $Mon.level to _DunLev>> <!-- clear debuffs --> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <!--reset arrays <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <!-- only a few monsters have these different from baseline --> <<set $Mon.arpen to 0>> <!-- some monsters might adjust these from baseline --> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.hpcur to _BaseHealth>> <<set $Mon.hpmax to _BaseHealth>> <<set $Mon.armor to _BaseArmor>> <<set $Mon.magres to 0>> <!-- END BOILERPLATE --> <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "fox">> <<set $Mon.morph to "fox">> <<if $Mon.sex is "male">> <<set $Mon.pic to "foxM.png">> <<set $Mon.virgin to "a fox-man">> <<set $Mon.desc to "An anthropomorphic fox-man with a green dick. A dick that he's already stroking as he looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "strokes himself and invites you to take over", "strokes himself, but you ignore it", "strokes himself, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "foxF.jpg">> <<set $Mon.virgin to "a fox-girl">> <<set $Mon.desc to "An attractive fox-girl covered in a thin layer of brown fur. Her tail twitches occasionally as she looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "slashes at you with her claws", "slashes at you, but misses", "slashes you with her claws, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,-1,302]>> <<else>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "foxH.png">> <<set $Mon.virgin to "an effeminate fox-boy">> <<set $Mon.desc to "An effeminate fox-boy with a suspicious bulge in his panties. ">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "rubs his bulge and winks suggestively", "rubs his bulge and winks at you, but you ignore it", "rubs his bulge and winks at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,302]>> <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <</widget>>\ <<widget "SetStandardMale">>\ <<set $Mon.penis to true>>\ <<set $Mon.pussy to false>>\ <<set $Mon.boobs to false>>\ <<set $Mon.heshe to "he">>\ <<set $Mon.himher to "him">>\ <<set $Mon.hisher to "his">>\ <</widget>>\ <<widget "SetStandardFemale">>\ <<set $Mon.penis to false>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <</widget>>\ <<widget "SetStandardHermaphrodite">>\ <<set $Mon.penis to true>> <<set $Mon.pussy to true>> <<set $Mon.boobs to true>> <<set $Mon.heshe to "she">> <<set $Mon.himher to "her">> <<set $Mon.hisher to "her">> <</widget>>\ <<widget "GetMon">>\ <<silently>>\ \ <<set _DunLev to $PC[$CC][$PCz]>> <<if $PC[$CC][$PClocation] is "forest">> <<set _DunLev to $PC[$CC][$PCfz]>> <<endif>>\ <<if _DunLev < 0>> @@color:Red;Error in GetMon: _DunLev is negative@@ <<set _DunLev to _DunLev * -1>> <<endif>> \ <!-- sex selector --> <<set $Mon to {}>> <<set $Mon.sex to "female">> <<if $PC[$CC][$PCsex] is "female">>\ <<if random(1,10) < 8>> <<set $Mon.sex to "male">> <<endif>>\ <<endif>> <<set _whichmon to setup.GetMonByDLEV($PC[$CC][$PCz])>>\ \ <<if $ForceMon[0] is "random">> <<else>> <<set _whichmon to $ForceMon[0]>> <<endif>> <<if ($ForceMon[1] neq "random")>> <<set $Mon.sex to $ForceMon[1]>> <<else>> <<set $Mon.sex to setup.GetStandardSex()>> <<endif>> <!-- NOTE: some monsters ovveride specific parts and pronouns --> <<if $Mon.sex is "male">> <<SetStandardMale>> <<elseif $Mon.sex is "female">> <<SetStandardFemale>> <<else>>\ <<SetStandardHermaphrodite>> <<endif>> <!-- end sex selector --> \ <!-- override for testing --> <<if (0 is 1)>>\ <<set _whichmon to "fox">>\ <<endif>>\ \ <!-- Baseline values --> <<if $PC[$CC][$PClocation] is "forest">> <<set _BaseToHit to _DunLev * 10>> <<set _BaseMaxDam to 4 + _DunLev>> <<set _BaseFlirtTH to _DunLev * 2>> <<set _BaseFlirtDam to _DunLev>> <<set _BaseFlirtResist to _DunLev +5>> <<set _BaseArmor to 40 + (_DunLev * 10)>> <<set _BaseHealth to 10 + (_DunLev * 10)>> <<set $Mon.xp to _DunLev>> <<elseif $PC[$CC][$PClocation] is "tower">> <<set _BaseToHit to _DunLev * 50>> <<set _BaseMaxDam to _DunLev 5 + ((_DunLev -1) * 5)>> <<set _BaseFlirtTH to 6 + (_DunLev * 10)>> <<set _BaseFlirtDam to 1 + (_DunLev * 5)>> <<set _BaseFlirtResist to _DunLev +5>> <<set _BaseArmor to (_DunLev * 50)>> <<set _BaseHealth to 10 + (_DunLev * 10)>> <<set $Mon.xp to _DunLev +2>> <<else>>\ <!-- defaulting to forest -->\ <<set _BaseToHit to _DunLev * 10>> <<set _BaseMaxDam to 4 + _DunLev>> <<set _BaseFlirtTH to _DunLev * 2>> <<set _BaseFlirtDam to _DunLev>> <<set _BaseFlirtResist to _DunLev +5>> <<set _BaseArmor to 40 + (_DunLev * 10)>> <<set _BaseHealth to 10 + (_DunLev * 10)>> <<endif>>\ <!-- BEGIN BOILERPLATE --> <<set $Mon.level to _DunLev>> <!-- clear debuffs --> <<set $Mon.thbuff to 0>> <<set $Mon.teased to 0>> <<set $Mon.poisoned to 0>> <!--reset arrays --> <<set $Mon.loot to []>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [0,0,0,0]>> <<set $Mon.att to []>> <!-- only a few monsters have these different from baseline --> <<set $Mon.arpen to 0>> <!-- some monsters might adjust these from baseline --> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.hpcur to _BaseHealth>> <<set $Mon.hpmax to _BaseHealth>> <<set $Mon.armor to _BaseArmor>> <<set $Mon.magres to 0>> <!-- END BOILERPLATE --> \ <<if _whichmon is "goblin">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "goblin">> <<set $Mon.morph to "goblin">> <<if $Mon.sex is "male">> <<set $Mon.pic to "goblinM.png">> <<set $Mon.virgin to "a male goblin">> <<set $Mon.desc to "A fairly typical male goblin. Short, horny, angry, ready to rape and beat anyone into submission. Not neccesarily in that order.">> <<set $Mon.MeatSemenMilk to [107,207,-1]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "takes a swing at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["physical", 1, _BaseMaxDam, _BaseToHit, "whacks you with his club", "swings at you but misses", "whacks you with his club, but the blow glances off you"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "grins and licks his lips at you eagerly", "leers at you", "grins at you, but you're not impressed"]>>\ <<elseif $Mon.sex is "female">> <<set $Mon.virgin to "a female goblin">> <<if $PC[$CC][$PCsex] is "female">>\ <<set $Mon.desc to "A short goblin with huge sexy tits. She's giving you a half-aroused, half-furious stare. You suspect she's envious of your height, but simultaneously turned on by it, and struggling to find a happy medium between angry and horny.">> <<set $Mon.MeatSemenMilk to [107,-1,307]>> <<else>> <<set $Mon.desc to "A short goblin with huge sexy tits, if you're into that kind of thing. And from the look she's giving you, you suspect she'd love for you to be into it. Or her, for that matter.">> <<endif>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "whacks you with one of her boobs", "swings her boobs at you but fails to connect", "whacks you with her boobs but it doesn't hurt much"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "sticks a finger in her pussy then licks it", "tries to call attention to her pussy but fails", "fondles herself to try to distract you, but you ignore it"]>>\ <<set $Mon.att[2] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "pulls a breast to her lips and licks its", "reaches for her chest but slips", "fondles herself to try to distract you, but you ignore it"]>>\ <<else>> <<set $Mon.pic to "goblinH.png">> <<SetStandardMale>> <<if random(1,2) is 1>>\ <<set $Mon.virgin to "a goblin hermaphrodite">> <<set $Mon.pussy to true>> <<else>>\ <<set $Mon.virgin to "a goblin crossdresser">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.desc to "A somewhat sexually ambiguous goblin. He clearly has a dick, but he's unusually feminine for a male goblin, and you're not entirely sure whether that hole he's leering at you with is a pussy, or just his ass hole.">> <<set $Mon.MeatSemenMilk to [107,207,307]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "takes a swipe at you but misses", "hits you, but you shrug off the attack"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "stokes himself and invites you to take over", "strokes himself, but fails to distract you", "strokes himself, but you ignore it"]>>\ <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 25>> <<set $Mon.gold to random(4,20)>> <<set $Mon.loot[0] to either(true, false)>> <<set $Mon.loot[1] to [103,0,0,0]>><!-- dildo -->\ <<if _DunLev > 4>> <<set $Mon.att[2] to ["flirt", 2, _BaseFlirtDam, _BaseFlirtTH, "throws a vial full of sweet-smelling pink liquid on you", "throws a vial of pink liquid at you, but you dodge", "throws pink liquid on you, but you quickly brush it off"]>>\ <<set $Mon.loot[1] to [109,0,1,404]>>\ <<endif>> <<elseif _whichmon is "slime">>\ <<set $Mon.name to "slime">> <<set $Mon.morph to "slime">> <<if $Mon.sex is "male">> <<set $Mon.pic to "slimeM.png">> <<set $Mon.virgin to "a slime man">> <<set $Mon.desc to "A large, powerfully built man of slime. At least, he looks powerful. You're not entirely sure just how strong something made of slime can be, but he certainly looks the part. His cock is visibly dripping some sort of fluid, and you can't help but wonder whether that's actually semen, or whether it's simply his insides leaking out. Goo physiology is a little odd.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "slimeF.png">> <<set $Mon.virgin to "a slime girl">> <<set $Mon.desc to "A lithe and lovely slime girl. Ironically, being made of goo probably makes it easy for her to maintain her figure. If she gains weight, she can simply bulge it out into whatever direction she wants. From the size of her breasts, you imagine she must eat well.">> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<else>> <<set $Mon.MeatSemenMilk to [400,400,400]>> <<set $Mon.virgin to "a slime">> <<if random(1,1) is 1>> <<set $Mon.pic to "slimeHa.png">> <<set $Mon.desc to "A slime sporting a variety of parts that make its gender and species a bit ambiguious. The huge cock pointed at you is clear enough, but she's also sporting hips big enuogh to give birth to a basketball and some admittedly small, but unmistakable breasts. And also slime cat ears, a slime tail, and what looks like a slime dog's nose...because why not? After all, when you can shape your body into anything you want, why not flaunt it?">> <<else>> <<set $Mon.pic to "slimeHb.png">> <<set $Mon.desc to "Implement slime Hb">> <<endif>> <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist +2>> <<set $Mon.chase to 40>> <!-- override values --> <<set $Mon.arpen to 1>> <<set $Mon.gold to random(4,20)>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "extends a tendril in your direction, but misses", "hits you with a tendril, but it squishes on impact"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "shifts its body around to be more to your liking", "tries to shift its body around", "shifts its body around, but the result is not an improvement"]>>\ <<set $Mon.att[2] to ["debuffAC", 1, (1 + _DunLev), (50 + _DunLev), "grabs onto your clothes with a tendril and dislodges them slightly", "tries to grab you, but you evade", "grabs your clothing with a tendril, but you hastily bat it aside "]>>\ <<set $Mon.att[3] to ["debuffPOISON", 1, 1, 50 + _BaseToHit, "stabs you with a tendril that spurts some fluid into you", "pokes at you ineffectually with a tendril", "poke you with a tendril, but you grab it before it can do anything"]>>\ <<elseif _whichmon is "bunny">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "bunny">> <<set $Mon.morph to "bunny">> <<if $Mon.sex is "male">> <<set $Mon.virgin to "a bunny boy">> <<set $Mon.pic to "bunnyM.png">> <<set $Mon.desc to "Hopping around on his hands and knees, you suspect this bunny boy's chosen form of locomotion doubles both for sexual purposes, as well as simply to help him stay in character.">> <<set $Mon.MeatSemenMilk to [100,200,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "bunnyF.png">> <<set $Mon.virgin to "a bunny girl">> <<set $Mon.desc to "With tits nearly as big as her head, this bunny girl giggles happiliy as she comes at you with a look in her eyes that you're not entirely sure is lethal or lustful intent.">> <<set $Mon.MeatSemenMilk to [100,-1,300]>> <<else>> <<set $Mon.pic to "bunnyH.png">> <<set $Mon.virgin to "a futa bunny dickgirl">> <<set $Mon.desc to "With a cock even more masive than her humongous breasts, her eyes glisten as she eyes up and down your torso, eventually settling on a spot between your legs she finds especially interesting. 'Bend over for me, dear,' she whispers as she strokes her cock.">> <<set $Mon.MeatSemenMilk to [100,200,300]>> <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist -2>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "cat">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "cat">> <<set $Mon.morph to "cat">> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<if $Mon.sex is "male">> <<set $Mon.pic to "catM.png">> <<set $Mon.virgin to "a manly cat man">> <<set $Mon.desc to "A powerfully built muscle-man with cat ears and tail. The way he looks at you makes it clear that he's used to getting his way, and if you're not careful, his way is going to be with you. Though whether sexually, or simply dragging you to the gym with him is unclear.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "points suggestively at his barbed cock", "points at his cock, but the barbs are far from a turn-in", "points at his cock, but the barbs are far from a turn-in"]>>\ <<set $Mon.MeatSemenMilk to [101,201,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "catF.png">> <<set $Mon.virgin to "a buxom catgirl">> <<set $Mon.desc to "A buxom catgirl wih huge breasts and child-bearing hips looks at you with an air of casual indifference that belies the insistence of her attacks. Still, she would almost be cute if she weren't trying to murder you. Or is she? From one moment to the next, it's hard to tell.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "demurely insists that it's not like she likes you or anything", "insists that she doesn't like you, but her expression keeps it from sounding ironic", "insists that she doesn't like you, but you shrug it off"]>>\ <<set $Mon.MeatSemenMilk to [101,-1,301]>> <<else>> <<set $Mon.pic to "catH.png">> <<set $Mon.virgin to "a futa catgirl">> <<set $Mon.desc to "A catgirl futa with plump breasts and an erect cock already dribbling with pre-cum. Seeing the light-teal of her pubic hair and mane, you can't help but notice that the carpet does match the drapes.">> <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "squeezes her boobs together and invites you to do the same", "squeezes a boob with one hand and strokes her cock with the other", "gropes herself, but is too distracted by her own body for it to really be called flirtatious"]>>\ <<set $Mon.MeatSemenMilk to [101,201,301]>> <<endif>> <<elseif _whichmon is "fox">>\ <<set $Mon.SexDialogueVersion to 2>> <<set $Mon.name to "fox">> <<set $Mon.morph to "fox">> <<if $Mon.sex is "male">> <<set $Mon.pic to "foxM.png">> <<set $Mon.virgin to "a fox-man">> <<set $Mon.desc to "An anthropomorphic fox-man with a green dick. A dick that he's already stroking as he looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "strokes himself and invites you to take over", "strokes himself, but you ignore it", "strokes himself, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "foxF.jpg">> <<set $Mon.virgin to "a fox-girl">> <<set $Mon.desc to "An attractive fox-girl covered in a thin layer of brown fur. Her tail twitches occasionally as she looks at you.">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "slashes at you with her claws", "slashes at you, but misses", "slashes you with her claws, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,-1,302]>> <<else>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<set $Mon.pic to "foxH.png">> <<set $Mon.virgin to "an effeminate fox-boy">> <<set $Mon.desc to "An effeminate fox-boy with a suspicious bulge in his panties. ">> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "rubs his bulge and winks suggestively", "rubs his bulge and winks at you, but you ignore it", "rubs his bulge and winks at you, but you ignore it"]>>\ <<set $Mon.MeatSemenMilk to [102,202,302]>> <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<elseif _whichmon is "wolf">>\ <<set $Mon.name to "wolf">> <<set $Mon.morph to "wolf">> <<set $Mon.sex to "male">> <<SetStandardMale>> <!-- probably need to at least at wolf girls, yeah? --> <<set $Mon.pic to "wolfM.png">> <<set $Mon.virgin to "a burly wolf-man">> <<set $Mon.MeatSemenMilk to [103,203,-1]>> <<set $Mon.desc to "A burly wolf-man with a thick, meaty cock he'd like to share with you.">> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 40>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "bites you", "snaps at you with his jaws, but misses", "bites you, but fails to pierce your flesh"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "points suggestively at his erection", "pumps his cock a few times, but you ignore it", "pumps his cock a few times, but you ignore it"]>>\ <<elseif _whichmon is "human">>\ <<set $Mon.name to "adventurer">> <<set $Mon.morph to "human">> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<if $Mon.sex is "male">> <<set $Mon.pic to "humanM.png">> <<set $Mon.virgin to "a human swordsman">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a swordsman.">> <<set $Mon.MeatSemenMilk to [106,206,-1]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<elseif $Mon.sex is "female">> <<set $Mon.pic to "humanF.jpg">> <<set $Mon.magres to 1>> <<set $Mon.virgin to "a human sorceress">> <<set $Mon.desc to "An adventurer like yourself, climbing the tower in search of treasure and glory. This one appears to be a spellcaster.">> <<set $Mon.MeatSemenMilk to [106,-1,306]>> <<set $Mon.att[0] to ["magic", 1, _DunLev, _BaseToHit, "hurls a fireball at you", "hurls a fireball at you, but misses", "hurls a fireball at you, but it just grazes you"]>>\ <<set $Mon.att[1] to ["magic", 1, _DunLev, _BaseToHit, "hurls a bolt of lightning at you", "hurls lightning at you, but misses", "hurls lightning at you, but it just grazes you"]>>\ <<set $Mon.att[2] to ["magic", 1, _DunLev, _BaseToHit, "hurls a frost bolt at you", "hurls a frost bolt at you, but misses", "hurls a frost bolt at you, but it just grazes you"]>>\ <<set $Mon.att[3] to ["heal", 1, _DunLev, 100, "heals herself ", "Can't miss heals", "Can't absorb heals"]>>\ <<else>> <<set $Mon.heshe to "he">> <<set $Mon.himher to "him">> <<set $Mon.hisher to "his">> <<if random(1,2) is 1>>\ <<set $Mon.virgin to "a hermaphrodite human adventurer">> <<set $Mon.pussy to true>> <<else>>\ <<set $Mon.virgin to "a crossdressing human adventurer">> <<set $Mon.pussy to false>> <<endif>>\ <<set $Mon.pic to "humanH.jpg">> <<set $Mon.desc to "A somewhat sexually ambiguous human adventurer. Though small, those are clearly breasts. But the broad shoulders and visible adam's apple lead you to suspect that there's probably a bulge in those pants.">> <<set $Mon.MeatSemenMilk to [106,206,306]>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "cuts you with his sword", "swings his sword at you, but misses", "barely nicks you with his sword"]>>\ <<endif>> <<elseif _whichmon is "minotaur">>\ <<set $Mon.name to "minotaur">> <<set $Mon.morph to "minotaur">> <<if $Mon.sex is "male">> <<set $Mon.pic to "minotaurM.png">> <<set $Mon.virgin to "a minotaur">> <<set $Mon.desc to "Describe male minotaur.">> <<set $Mon.MeatSemenMilk to [112,212,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "minotaurF.png">> <<set $Mon.virgin to "a female minotaur">> <<set $Mon.desc to "Describe female minotaur.">> <<set $Mon.MeatSemenMilk to [112,-1,312]>> <<else>> <<set $Mon.pic to "minotaurH.png">> <<set $Mon.virgin to "a minotaur hermaphrodite">> <<set $Mon.desc to "Describe h minotaur.">> <<set $Mon.MeatSemenMilk to [112,212,312]>> <<endif>> <<set $Mon.hpcur to $Mon.hpcur +10>> <<set $Mon.hpmax to $Mon.hpcur +10>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "imp">>\ <<set $Mon.name to "imp">> <<set $Mon.morph to "imp">> <<if $Mon.sex is "male">> <<set $Mon.pic to "impM.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe male imp.">> <<set $Mon.MeatSemenMilk to [110,210,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "impF.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe female imp.">> <<set $Mon.MeatSemenMilk to [110,-3,310]>> <<else>> <<set $Mon.pic to "impH.png">> <<set $Mon.virgin to "a small imp">> <<set $Mon.desc to "Describe h imp.">> <<set $Mon.MeatSemenMilk to [110,210,310]>> <<endif>> <<set $Mon.armor to _BaseArmor -10>> <<set $Mon.magres to _DunLev)>> <<set $Mon.resistflirt to _BaseFlirtResist -2>> <<set $Mon.chase to 40>> <<set $Mon.gold to random(1,5) + _DunLev>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "hellhound">>\ <<set $Mon.name to "hellhound">> <<set $Mon.morph to "hellhound">> <<if $Mon.sex is "male">> <<set $Mon.pic to "houndM.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe male hellhound.">> <<set $Mon.MeatSemenMilk to [111,211,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "houndF.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe female hellhound.">> <<set $Mon.MeatSemenMilk to [111,-1,311]>> <<else>> <<set $Mon.heshe to "he">>\ <<set $Mon.himher to "him">>\ <<set $Mon.hisher to "his">>\ <<set $Mon.pic to "houndH.png">> <<set $Mon.virgin to "a hellhound">> <<set $Mon.desc to "Describe h hellhound.">> <<set $Mon.MeatSemenMilk to [111,211,311]>> <<endif>> <<set $Mon.magres to _DunLev>> <<set $Mon.resistflirt to _BaseFlirtResist +2>> <<set $Mon.chase to 100>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "drider">>\ <<set $Mon.name to "drider">> <<set $Mon.morph to "drider">> <<if $Mon.sex is "male">> <<set $Mon.pic to "driderM.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe male drider.">> <<set $Mon.MeatSemenMilk to [113,213,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "driderF.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.desc to "Describe female drider.">> <<set $Mon.MeatSemenMilk to [113,-1,313]>> <<else>> <<set $Mon.pic to "driderH.png">> <<set $Mon.virgin to "a drider">> <<set $Mon.MeatSemenMilk to [113,213,313]>> <<endif>> <<set $Mon.resistflirt to _BaseFlirtResist>> <<set $Mon.chase to 1>> <<set $Mon.gold to random(1, _DunLev)>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "demon">>\ <<set $Mon.name to "demon">> <<set $Mon.morph to "demon">> <<if $Mon.sex is "male">> <<set $Mon.pic to "demonM.png">> <<set $Mon.virgin to "an incubus">> <<set $Mon.desc to "Describe male demon.">> <<set $Mon.MeatSemenMilk to [115,215,-1]>> <<elseif $Mon.sex is "female">> <<set $Mon.pic to "demonF.png">> <<set $Mon.virgin to "a succubus">> <<set $Mon.desc to "Describe female demon.">> <<set $Mon.MeatSemenMilk to [115,-1,315]>> <<else>> <<set $Mon.pic to "demonH.png">> <<set $Mon.virgin to "an omnibus">> <<set $Mon.desc to "Describe h demon.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<endif>> <<set $Mon.armor to _BaseArmor +10>> <<set $Mon.magres to _DunLev>> <<set $Mon.resistflirt to _BaseFlirtResist +5>> <<set $Mon.chase to 1>> <!- override values --> <<set $Mon.arpen to 1>> <<set $Mon.gold to random(1, _DunLev)>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "tentacle">>\ <<set $Mon.name to "tentacle">> <<set $Mon.morph to "tentacle">> <<set $Mon.sex to "male">> <<set $Mon.penis to true>> <<set $Mon.pussy to false>> <<set $Mon.boobs to false>> <<set $Mon.heshe to "it">> <<set $Mon.himher to "it">> <<set $Mon.hisher to "its">> <<set $Mon.pic to "tentacleM.png">> <<set $Mon.virgin to "a tentacle monster">> <<set $Mon.desc to "Describe tentacle monster.">> <<set $Mon.MeatSemenMilk to [-1,-1,-1]>> <<set $Mon.armor to _BaseArmor -10>> <<set $Mon.resistflirt to _BaseFlirtResist +5>> <<set $Mon.chase to 1>> <<set $Mon.gold to 0>> <<set $Mon.att[0] to ["physical", 1, _BaseMaxDam, _BaseToHit, "hits you", "swats at you, but misses", "swats at you, but it ends up being more affectionate than painful"]>>\ <<set $Mon.att[1] to ["flirt", 1, _BaseFlirtDam, _BaseFlirtTH, "smiles at you and winks suggestively", "smiles at you, but you ignore it", "smiles at you, but you ignore it"]>>\ <<elseif _whichmon is "Boss A">>\ <<set $Mon.name to "Zetahlia, the Spider Queen">> <<set $Mon.morph to "drider">> <<set $Mon.sex to "female">> <<SetStandardFemale>> <<set $Mon.pic to "BossA.png">> <<set $Mon.virgin to "Zetahlia, the Spider Queen">> <<set $Mon.desc to "A cute anime waifu with glowing eyes from the waist up, and a horrible, hideous spider from the waist down. Swinging a massive flail in one hand and carrying a sword in the other, she eyes you with interest.">> <<set $Mon.MeatSemenMilk to [115,215,315]>> <<set $Mon.hpcur to 100>> <<set $Mon.hpmax to 100>> <<set $Mon.armor to _BaseArmor>> <<set $Mon.magres to 10>> <<set $Mon.resistflirt to (_BaseFlirtResist * 2)>> <<set $Mon.chase to 1>> <<set $Mon.arpen to 5>> <<set $Mon.gold to 100>> <<set $Mon.xp to 50>> <<set $Mon.loot[0] to false>> <<set $Mon.loot[1] to [206,105,0,0]>> <<set $Mon.att[0] to ["physical", 5, 10, 80, "stabs you you", "stabs at you, but misses", "stabs you, but somehow you deflect the hit"]>>\ <<set $Mon.att[1] to ["physical", 5, 10, 80, "smashes you with her flail", "swings at you, but misses", "smashes you with her flail, but it is a glancing blow"]>>\ <<set $Mon.att[2] to ["flirt", 5, 10, 80, "sprays pheromones at you", "sprays pheromones at you, but you resist", "sprays pheromones at you, but you resist"]>>\ <<set $Mon.att[3] to ["debuffAC", 1, 4, 50, "sprays you with webbing that makes it harder to move", "sprays webbing at you, but you evade", "sprays webbing on you, but you quickly brush it off"]>>\ <<set $Mon.att[4] to ["debuffPOISON", 1, 1, 50, "sprays a cloud of poison around you", "sprays a cloud of poison, but you dodge", "sprays a cloud of poison around you, but you avoid the worst of it"]>>\ <<else>>\ <<AddToLog "Error in GetMon: unrecognized monster requested">>\ <<endif>>\ <</silently>>\ <</widget>>\ <<widget "DoTransform">>\ <<set _TFMethod to setup.Shuffle(["copy","delete","morph"])>>\ <<set _PCparts to $PC[$CC][$PCbp]>>\ \ <!-- for combat TF, invert sex parts because: -->\ <!-- sex with a male, makes you more female -->\ <!-- sex with a female, makse you more male -->\ <<set _CopyMorph to $args[0][0].morph>>\ <<if $Mon.sex is "male">>\ <<for _i to 0; _i < $args[0].length; _i++>>\ <<if $args[0][_i].type is $BPpenis>>\ <<set $args[0][_i].type to $BPpussy>>\ <<set _CopyMorph to $args[0][_i].morph>>\ <<endif>>\ <</for>>\ <<set $args[0][$args[0].length] to { type: $BPboobs, morph: _CopyMorph }>>\ <<elseif $Mon.sex is "female">>\ <<for _i to ($args[0].length -1); _i > -1; _i-->>\ <<if ($args[0][_i].type is $BPpussy)>>\ <<set $args[0][_i].type to $BPpenis>>\ <<set _CopyMorph to $args[0][_i].morph>>\ <<elseif ($args[0][_i].type is $BPboobs)>>\ <<set _throwaway to $args[0].deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<else>>\ <!-- theoretically no action required? -->\ <<endif>>\ \ <<if $DebugMode is true>>\ debug source data 1: <<set _DONORparts to clone($args[0])>>\ <<for _i to 0; _i < _DONORparts.length; _i++>>\ _i) a: <<print _DONORparts[_i].type>> b: <<print _DONORparts[_i].morph>> <</for>>\ <hr> <<endif>>\ \ <<for _TryAllThree to 0; _TryAllThree < 3; _TryAllThree++>>\ <<if _TFMethod[_TryAllThree] is "copy">>\ <<set _DONORparts to clone($args[0])>>\ <!-- generate list of parttype monster has that player lacks, morp will copy with it -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _DONORparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _PCparts.length; _j++>>\ <<if _DONORparts[_i].type is _PCparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to ["gain a new", _DONORparts[_i].morph, _DONORparts[_i].type]>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _Morph to _TFArray[_r][1]>>\ <<set _PartTypeToAdd to _TFArray[_r][2]>>\ <<set _LocOfNewPart to setup.AddBodyPart($CC, _PartTypeToAdd)>>\ <<set $PC[$CC][$PCbp][_LocOfNewPart].morph to _Morph>>\ <<set _MorphHack to setup.bpptrtoname(_PartTypeToAdd, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ @@color:Yellow;you have gained a _MorphHack@@\ <<TFAdderHelper _LocOfNewPart>>\ <<set _TryAllThree to 999>>\ <<else>>\ <<if $DebugMode is true>>Debug: tried to copy, but found no monster part type the player doesn't already have (not neccesarily an error)<<endif>>\ <<endif>>\ <<elseif _TFMethod[_TryAllThree] is "delete">>\ <<set _DONORparts to clone($args[0])>>\ <!-- generate list of part types player has that monster lacks, not caring about morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _DONORparts.length; _j++>>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to _i>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r]>>\ <<set _PartToRemove to $PC[$CC][$PCbp][_PTR].type>>\ <<set _PartMorph to $PC[$CC][$PCbp][_PTR].morph>>\ <<set _Try to 13289>>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<if _WhatItem[0] > 0>>\ <<set _InvItem to "true">>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<set _Try to setup.addtoinven(_WhatItem)>>\ <<endif>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, _PartToRemove)>> <<set _MorphHack to setup.bpptrtoname(_PartToRemove, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _PartMorph)>>\ @@color:Yellow;you have lost your <<print _MorphHack>>@@\ <<if _Try is 13289>>\ <<elseif _Try is -1>>\ @@color:Yellow;DEBUG: there was an item in that slot and the player has no inventory space. Implement dropping@@ <<else>>\ The item on that body part has been returned to inventory. <<endif>>\ <<set _TryAllThree to 999>>\ <<endif>>\ <<else>>\ <<set _DONORparts to clone($args[0])>>\ <!-- generate list of part types that both have, but with different morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<for _j to (_DONORparts.length -1); _j > 0; _j-->>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<if _PCparts[_i].morph is _DONORparts[_j].morph>>\ <<else>>\ <<set _FoundOne to true>>\ <<set _TFArray[_counter] to [_i, "becomes", _DONORparts[_j].morph]>>\ <<set _throwaway to _DONORparts.deleteAt(_j)>>\ <<set _counter to _counter +1>>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r][0]>>\ <<set _PartToMorph to setup.bpptrtoname(_PCparts[_PTR].type, "tf")>>\ <<set _OldMorph to _PCparts[_PTR].morph>>\ <<set _NewMorph to _TFArray[_r][2]>>\ @@color:Yellow;your <<print setup.TFTextOutputter(_PCparts[_PTR].type, _OldMorph, _NewMorph)>>@@\ <<set $PC[$CC][$PCbp][_PTR].morph to _NewMorph>>\ <<TFAdderHelper _PTR>>\ <!-- stop loop -->\ <<set _TryAllThree to 999>>\ <<else>>\ <<if $DebugMode is true>>Debug: tried to morph, but found no matching part type with a different morph (not neccesarily an error)<<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<Recalc>>\ <<ShowHealth>>\ <</widget>>\ <<widget "TFAdderHelper">>\ <<set _WhichBodyPart to $args[0]>>\ <<set _Type to $PC[$CC][$PCbp][_WhichBodyPart].type>>\ <<set _Morph to $PC[$CC][$PCbp][_WhichBodyPart].morph>>\ <<set _Equip to $PC[$CC][$PCbp][_WhichBodyPart].equip>>\ <<set _MascFem to $PC[$CC][$PCbp][_WhichBodyPart].mascfem>>\ \ <<if _Type is $BPleg>>\ <<if _Morph is "horse">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "kick">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 8>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 0>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 0>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPfeet>>\ <<if (_Morph is "horse") or (_Morph is "cow") or (_Morph is "spider") or (_Morph is "hellhound")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].equippable to false>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].equippable to true>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPhead>>\ <<if _Morph is "horse">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 6>>\ <<elseif (_Type is $BPhead) and (_Morph is "spider")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "poison bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 1>>\ <<elseif (_Type is $BPhead) and (_Morph is "naga")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 6>>\ <<elseif (_Type is $BPhead) and (_Morph is "wolf")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPhead) and (_Morph is "hellhound")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "magic">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "breath">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 2>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 8>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 0>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 0>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPwield>>\ <<if _Morph is "fox">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "cut">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "claw">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPwield) and (_Morph is "cat")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "cut">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "claw">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPwield) and (_Morph is "human")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPwield) and (_Morph is "goblin")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPwield) and (_Morph is "minotaur")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 2>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 7>>\ <<endif>>\ <<endif>>\ \ <</widget>>\ <<set _DONORparts to []>> <<set _DONORparts[0] to { type: $BPhead, morph: "bunny" }>>\ <<set _DONORparts[1] to { type: $BPneck, morph: "bunny" }>>\ <<set _DONORparts[2] to { type: $BPback, morph: "bunny" }>>\ <<set _DONORparts[3] to { type: $BPchest, morph: "bunny" }>>\ <<set _DONORparts[4] to { type: $BPwield, morph: "bunny" }>>\ <<set _DONORparts[5] to { type: $BPwield, morph: "bunny" }>>\ <<set _DONORparts[6] to { type: $BPhands, morph: "bunny" }>>\ <<set _DONORparts[7] to { type: $BPring, morph: "bunny" }>>\ <<set _DONORparts[8] to { type: $BPring, morph: "bunny" }>>\ <<set _DONORparts[9] to { type: $BPwaist, morph: "bunny" }>>\ <<set _DONORparts[10] to{ type: $BPlegs, morph: "bunny" }>>\ <<set _DONORparts[11] to { type: $BPfeet, morph: "bunny" }>>\ <<set _DONORparts[12] to { type: $BPtail, morph: "bunny" }>>\ <<set _DONORparts[13] to { type: $BPwings, morph: "bunny" }>>\ <<set _TFMethod to setup.Shuffle(["copy","delete","morph"])>>\ <<set _PCparts to $PC[$CC][$PCbp]>>\ <<for _TryAllThree to 0; _TryAllThree < 3; _TryAllThree++>>\ <<if _TFMethod[_TryAllThree] is "copy">>\ <!-- generate list of parttype monster has that player lacks, morp will copy with it -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _DONORparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _PCparts.length; _j++>>\ <<if _DONORparts[_i].type is _PCparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to ["gain a new", _DONORparts[_i].morph, _DONORparts[_i].type]>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _Morph to _TFArray[_r][1]>>\ <<set _PartTypeToAdd to _TFArray[_r][2]>>\ <<set _LocOfNewPart to setup.AddBodyPart($CC, _PartTypeToAdd)>>\ <<set $PC[$CC][$PCbp][_LocOfNewPart].morph to _Morph>>\ <<set _MorphHack to setup.bpptrtoname(_PartTypeToAdd, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ @@color:Yellow;You have gained a _MorphHack@@ <<set _TryAllThree to 999>>\ <<else>>\ Debug: tried to copy, but found no monster part type the player doesn't already have (not neccesarily an error) <<endif>>\ <<elseif _TFMethod[_TryAllThree] is "delete">>\ <!-- generate list of part types player has that monster lacks, not caring about morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _DONORparts.length; _j++>>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to _i>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r]>>\ <<set _PartToRemove to $PC[$CC][$PCbp][_PTR].type>>\ <<set _PartMorph to $PC[$CC][$PCbp][_PTR].morph>>\ <<set _Try to 13289>>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<if _WhatItem[0] > 0>>\ <<set _InvItem to "true">>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<set _Try to setup.addtoinven(_WhatItem)>>\ <<endif>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, _PartToRemove)>> <<set _MorphHack to setup.bpptrtoname(_PartToRemove, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _PartMorph)>>\ @@color:Yellow;You have lost your <<print _MorphHack>>@@ <<if _Try is 13289>>\ <<elseif _Try is -1>>\ @@color:Yellow;DEBUG: there was an item in that slot and the player has no inventory space. Implement dropping@@ <<else>>\ The item on that body part has been returned to inventory. <<endif>>\ <<set _TryAllThree to 999>>\ <<endif>>\ <<else>>\ <<set _DONORparts to []>> <<set _DONORparts[0] to { type: $BPhead, morph: "bunny" }>>\ <<set _DONORparts[1] to { type: $BPneck, morph: "bunny" }>>\ <<set _DONORparts[2] to { type: $BPback, morph: "bunny" }>>\ <<set _DONORparts[3] to { type: $BPchest, morph: "bunny" }>>\ <<set _DONORparts[4] to { type: $BPwield, morph: "bunny" }>>\ <<set _DONORparts[5] to { type: $BPwield, morph: "bunny" }>>\ <<set _DONORparts[6] to { type: $BPhands, morph: "bunny" }>>\ <<set _DONORparts[7] to { type: $BPring, morph: "bunny" }>>\ <<set _DONORparts[8] to { type: $BPring, morph: "bunny" }>>\ <<set _DONORparts[9] to { type: $BPwaist, morph: "bunny" }>>\ <<set _DONORparts[10] to{ type: $BPlegs, morph: "bunny" }>>\ <<set _DONORparts[11] to { type: $BPfeet, morph: "bunny" }>>\ <!-- generate list of part types that both have, but with different morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<for _j to (_DONORparts.length -1); _j > 0; _j-->>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<if _PCparts[_i].morph is _DONORparts[_j].morph>>\ <<else>>\ <<set _FoundOne to true>>\ <<set _TFArray[_counter] to [_i, "becomes", _DONORparts[_j].morph]>>\ <<set _throwaway to _DONORparts.deleteAt(_j)>>\ <<set _counter to _counter +1>>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r][0]>>\ <<set _PartToMorph to setup.bpptrtoname(_PCparts[_PTR].type, "tf")>>\ <<set _OldMorph to _PCparts[_PTR].morph>>\ <<set _NewMorph to _TFArray[_r][2]>>\ <<print setup.TFTextOutputter(_PCparts[_PTR].type, _OldMorph, _NewMorph)>>! <<set $PC[$CC][$PCbp][_PTR].morph to _NewMorph>>\ <!-- stop loop -->\ <<set _TryAllThree to 999>>\ <<else>>\ Debug: tried to morph, but found no matching part type with a different morph (not neccesarily an error) <<endif>>\ <<endif>>\ <</for>>\ <<link "Town Square" "TownSquare">> <</link>> <<SimplePic "merchant.png">>\ <<set _AllowStore to true>>\ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ <<set _Gerard to "gerard">>\ <<if $WORLD.gstore is 0>>\ <<set _Gerard to "shopkeeper">> <<endif>>\ \ @@color:LightGreen;Pawnshop@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> \ <span id="KeypC">\ <<link "c) Chat" "StoreGeneral">> <<set $WORLD.datapasser to "chat">> <</link>> </span>\ <hr> <<if $WORLD.gstore is "chat">>\ <<set $WORLD.datapasser to "">> <<AdvanceTime 5>> <<if $WORLD.gstore is 0>>\ <<set $WORLD.gstore to 1>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello," you greet the proprieter. "I'm $PC[$CC][$PCname]." @@color:Aqua;<<print _Gerard>>@@: "Gerard," the man replies. "Are you here to climb the tower?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "<<print either("Yes, was it that obvious?","That's the plan.","")>>" @@color:Aqua;<<print _Gerard>>@@: "Pretty much the only reason peopel come this far north. Well, let me be the first to welcome you to Falconhearss. I run the general store here, so please come to me for any of your provisioning needs." <<elseif $WORLD.gstore is 1>>\ <<set $WORLD.gstore to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I notice your stock seems kind of low" @@color:Aqua;<<print _Gerard>>@@: "Everyone's little low right now on account of the war down south," he explains. "It was already bad before, but now? Caravans can't hardly get through the pass. <<elseif $WORLD.gstore is 2>>\ <<set $WORLD.gstore to 3>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Aqua;<<print _Gerard>>@@: "" <<else>>\ (Dev note: end of generic Gerard dialogue. Implement more) <<endif>> <<else>>\ "Hello," the shopkeeper greets you. "What can I get you?" <<endif>>\ <hr>\ <<if _AllowStore is true>>\ <<Store $GStore>> <<endif>>\ <<SimplePic "witch.jpg">>\ @@color:LightGreen;Store name@@ <<if ($WORLD.selene is 0) or ($WORLD.selene is 2)>>\ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <<set $WORLD.selene to 0>> <</link>>\ </span> <<endif>>\ <hr>\ <<set _ExitLinks to "base">>\ <<set _Witch to "The Witch">>\ <<if $PC[$CC][$PCSeleneChat][1] is 2>>\ <<set _Witch to "Selene">>\ <<endif>>\ \ <<if $WORLD.selene is 0>>\ <<set _ExitLinks to "store">>\ <<if $PC[$CC][$PCSeleneChat][1] is 2>>\ <<endif>>\ \ <<if $PC[$CC][$PCSeleneChat][1] is 2>>\ <<set _c to "c) chat with Selene">>\ <<else>>\ <<set _c to "c) Converse with the woman">>\ <<endif>>\ \ <span id="KeypC">\ <<link _c "StoreSelene">> <<set $WORLD.selene to 1>>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<elseif $WORLD.selene is 1>>\ <<set _ExitLinks to "questions">>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ <<if _CurrentQuestion is 0>>\ <<set $PC[$CC][$PCSeleneChat][0] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello. I'm here to explore the tower. My name is <<print $PC[$CC][$PCname]>>." @@color:Red;<<print _Witch>>@@: "" <!-- Unlocks -->\ <<set $PC[$CC][$PCasd][1] to 1>><!-- -->\ <<set $PC[$CC][$PCasd][2] to 1>><!-- -->\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCSeleneChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's your name?" @@color:Red;Selene@@: "" <!-- unlocks -->\ <<set $PC[$CC][$PCSeleneChat][4] to 1>><!-- Why did they burn down your hut? -->\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCasd][13] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Red;Selene@@: "" <<endif>>\ <<elseif $WORLD.selene is 2>>\ <<set _ExitLinks to "store">>\ @@color:Red;Selene@@: "Anything else I can do for you?" <<elseif $WORLD.selene is 3>>\ <<set $WORLD.selene to 2>>\ <<set _ExitLinks to "continue">>\ Special case handler <<else>>\ Unreocgnized state: <<endif>>\ <hr>\ \ \ \ <<if _ExitLinks is "base">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm just here to shop, thanks" "StoreSelene">> <<set $WORLD.selene to 2>>\ <<AdvanceTime 5>> <</link>>\ </span> <<elseif _ExitLinks is "continue">>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "StoreSelene">> <<set $WORLD.selene to 2>>\ <<AdvanceTime 5>> <</link>>\ </span> <<elseif _ExitLinks is "questions">>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <<for _i to 0; _i < $PC[$CC][$PCSeleneChat].length; _i++>>\ <<if $PC[$CC][$PCSeleneChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Introduce yourself">>\ <<set _QuestionPool[1] to "Ask about ">>\ <<set _QuestionPool[2] to "Ask about the tower">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done asking questions for now" "StoreSelene">> <<set $WORLD.selene to 2>> <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StoreSelene">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<elseif _ExitLinks is "store">>\ <<Store $Selene>> <<if $DebugMode is true>>\ debug: <<for _i to 0; _i < $STORE[_s].length; _i++>>\ _i) <<print $STORE[$Selene][_i]>> <</for>>\ <<endif>>\ <<endif>>\ \ <<if $DebugMode is true>>\ <hr>\ debug 1: SeleneChat is: <<print $PC[$CC][$PCSeleneChat]>> 2: AsktheseQs is: <<print _AskTheseQuestions>> <hr>\ <<endif>>\ @@color:Gold;Graveyard@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSquare">> <<AdvanceTime 5>> <</link>>\ </span> <hr>\ <<SimplePic "graveyard.jpg">>\ <<if $RETIREES[0].name is "none">>\ The graveyard is empty. <<else>>\ <<for _i to 0; _i < 10; _i++>> <<if $RETIREES[_i].name is "none">>\ <<else>>\ @@color:LightGreen;$RETIREES[_i].name@@: level $RETIREES[_i].level $RETIREES[_i].class, retired on \ <<if $RETIREES[_i].year > 0>>year $RETIREES[_i].year, <<endif>>day $RETIREES[_i].day \ <<if $RETIREES[_i].won > 0>> * Battles won: $RETIREES[_i].won<br><<endif>>\ <<if $RETIREES[_i].gold > 0>> * Retired with $RETIREES[_i].gold gold<br>\<<endif>>\ <<if $RETIREES[_i].maxforest > 0>> * Highest forest level: $RETIREES[_i].maxforest<br><<endif>>\ <<if setup.TypeOf($RETIREES[_i].maxdesert) is "number">>\ <<if $RETIREES[_i].maxdesert > 0>> * Highest desert level: $RETIREES[_i].maxdesert<br><<endif>>\ <<endif>>\ <<if $RETIREES[_i].maxtower > 0>> * Highest tower level: $RETIREES[_i].maxforest<br><<endif>>\ <<if $RETIREES[_i].death is "retired">>\ @@color:Yellow;Retired peacefully@@ <<else>>\ @@color:Red;Killed by $RETIREES[_i].death>>\ <<endif>>\ <hr>\ <<endif>>\ <</for>> <<endif>>\ <<widget "DoTransform">>\ <<set _TFMethod to setup.Shuffle(["copy","delete","morph"])>>\ <<set _PCparts to $PC[$CC][$PCbp]>>\ \ <!-- for combat TF, invert sex parts because: -->\ <!-- sex with a male, makes you more female -->\ <!-- sex with a female, makse you more male -->\ <<set _Atype to $args[0][0].type>>\ 1<<print $Mon.sex>> 2<<print $args[0].length>> 3<<print $args[0][0]>> 4<<print $args[0][1]>> 5<<print $args[0][2]>> 6<<print $args[0][3]>> <<if $Mon.sex is "male">>\ here <<for _i to 0; _i < $args[0].length; _i++>>\ <<if $args[0][_i].type is $BPpenis>>\ _i) <<print $args[0][_i].type>> , <<print $args[0][_i].morph>> <<set $args[0][_i].type to $BPpussy>>\ <<set _Atype to $args[0][_i].type>>\ <<endif>>\ <</for>>\ <<set $args[0][$args[0].length] to { type: $BPboobs, morph: _Atype }>>\ <<elseif $Mon.sex is "female">>\ <<for _i to ($args[0].length -1); _i > -1; _i-->>\ <<if ($args[0].type is $BPpussy) or ($args[0].type is $BPboobs)>>\ <<set _Atype to $args[0][_i].type>>\ <!-- won't this copymorph method result in female centaurs giving human instead of horse penises? -->\ <<set _CopyMorph to $args[0][_i].morph>> <<set _throwaway to $args[0].deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<set $args[0][$args[0].length] to { type: $BPpenis, morph: _CopyMorph}>>\ <<else>>\ <!-- theoretically no action required? -->\ <<endif>>\ \ <<for _TryAllThree to 0; _TryAllThree < 3; _TryAllThree++>>\ <<if _TFMethod[_TryAllThree] is "copy">>\ <<set _DONORparts to $args[0]>>\ <!-- generate list of parttype monster has that player lacks, morp will copy with it -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _DONORparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _PCparts.length; _j++>>\ <<if _DONORparts[_i].type is _PCparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to ["gain a new", _DONORparts[_i].morph, _DONORparts[_i].type]>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _Morph to _TFArray[_r][1]>>\ <<set _PartTypeToAdd to _TFArray[_r][2]>>\ <<set _LocOfNewPart to setup.AddBodyPart($CC, _PartTypeToAdd)>>\ <<set $PC[$CC][$PCbp][_LocOfNewPart].morph to _Morph>>\ 1debug: _Morph <<set _MorphHack to setup.bpptrtoname(_PartTypeToAdd, "tf")>>\ 2debug: _MorphHack <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ 3debug: _MorphHack @@color:Yellow;you have gained a _MorphHack@@\ <<set _TryAllThree to 999>>\ <<else>>\ Debug: tried to copy, but found no monster part type the player doesn't already have (not neccesarily an error) <<endif>>\ <<elseif _TFMethod[_TryAllThree] is "delete">>\ <<set _DONORparts to $args[0]>>\ <!-- generate list of part types player has that monster lacks, not caring about morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<set _FoundOne to false>>\ <<for _j to 0; _j < _DONORparts.length; _j++>>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<set _FoundOne to true>>\ <<endif>>\ <</for>>\ <<if _FoundOne is false>>\ <<set _TFArray[_counter] to _i>>\ <<set _counter to _counter +1>>\ <<endif>>\ <</for>>\ \ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r]>>\ <<set _PartToRemove to $PC[$CC][$PCbp][_PTR].type>>\ <<set _PartMorph to $PC[$CC][$PCbp][_PTR].morph>>\ <<set _Try to 13289>>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<if _WhatItem[0] > 0>>\ <<set _InvItem to "true">>\ <<set _WhatItem to $PC[$CC][$PCbp][_PTR].equip>>\ <<set _Try to setup.addtoinven(_WhatItem)>>\ <<endif>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, _PartToRemove)>> <<set _MorphHack to setup.bpptrtoname(_PartToRemove, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _PartMorph)>>\ @@color:Yellow;you have lost your <<print _MorphHack>>@@\ <<if _Try is 13289>>\ <<elseif _Try is -1>>\ @@color:Yellow;DEBUG: there was an item in that slot and the player has no inventory space. Implement dropping@@ <<else>>\ The item on that body part has been returned to inventory. <<endif>>\ <<set _TryAllThree to 999>>\ <<endif>>\ <<else>>\ <<set _DONORparts to $args[0]>>\ <!-- generate list of part types that both have, but with different morphs -->\ <<set _TFArray to []>>\ <<set _counter to 0>>\ <<for _i to 0; _i < _PCparts.length; _i++>>\ <<for _j to (_DONORparts.length -1); _j > 0; _j-->>\ <<if _PCparts[_i].type is _DONORparts[_j].type>>\ <<if _PCparts[_i].morph is _DONORparts[_j].morph>>\ <<else>>\ <<set _FoundOne to true>>\ <<set _TFArray[_counter] to [_i, "becomes", _DONORparts[_j].morph]>>\ <<set _throwaway to _DONORparts.deleteAt(_j)>>\ <<set _counter to _counter +1>>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ <!-- if anything's in the list, pick one and we're done -->\ <<if _counter > 0>>\ <<set _r to random(0, _counter -1)>>\ <<set _PTR to _TFArray[_r][0]>>\ <<set _PartToMorph to setup.bpptrtoname(_PCparts[_PTR].type, "tf")>>\ <<set _OldMorph to _PCparts[_PTR].morph>>\ <<set _NewMorph to _TFArray[_r][2]>>\ @@color:Yellow;your <<print setup.TFTextOutputter(_PCparts[_PTR].type, _OldMorph, _NewMorph)>>@@\ <<set $PC[$CC][$PCbp][_PTR].morph to _NewMorph>>\ <!-- stop loop -->\ <<set _TryAllThree to 999>>\ <<else>>\ Debug: tried to morph, but found no matching part type with a different morph (not neccesarily an error) <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ <<set $AllowNav to false>>\ \ <<if $WORLD.CombatInterrupt is "defeated Zehtalia">>\ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<endif>>\ <<if $Dungeon[_pz][_px][_py][12] is 99>>\ <<set $Dungeon[5][6][2][11] to "Magic Circle">>\ <<set $Dungeon[5][6][2][12] to 0>>\ <<set $Dungeon[5][7][1][11] to "StairsUp">>\ <<set $Dungeon[5][7][1][12] to 0>>\ <<if $WORLD.Circle < 5>>\ <<set $WORLD.Circle to 5>>\ <<endif>>\ <<replace "#eventtext">>\ <<set _RightPic to $ImgPath + "Zehtalia.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $AllowNav to true>>\ @@color:Red;Zehtalia@@:"WHAT HAVE YOU DONE?!?" the creature screams, collapsing to four of her knees. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "<<print either("Defeated you?","I've defeated you.","Killed a spider bitch?")>>" @@color:Red;Zehtalia@@:"NO. YOU HAVE MERELY DESTROYED THIS BODY," she scowls. "BUT WE OF THE ONE TRUE MIND ARE MORE THAN OUR PHYSICAL HUSKS. PRAY, MORTAL, THAT WE NEVER MEET AGAIN." With that, the rest of her huge ponderous bulk falls to the stone floor and dissolves to dust. @@color:Gold;Congratulations!@@ You have defeated the level 5 dungeon boss, Zehtalia, Queen of Spiders.\ <<AwardAchievement "Black Mage">>\ <</replace>>\ <<elseif $Dungeon[_pz][_px][_py][12] is "End of content note">>\ <<if $WORLD.Circle < 5>>\ <<set $WORLD.Circle to 5>>\ <<set $Dungeon[5][6][2][11] to "Magic Circle">>\ <<set $Dungeon[5][6][2][12] to 0>>\ <<set $Dungeon[5][7][1][11] to "StairsUp">>\ <<set $Dungeon[5][7][1][12] to 0>>\ <<endif>>\ <<replace "#eventtext">>\ <<set _RightPic to $ImgPath + "Zehtalia.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $AllowNav to true>>\ @@color:Gold;Congratulations!@@ You have defeated the level 5 dungeon boss, Zehtalia, Queen of Spiders. <<AwardAchievement "Black Mage">>\ Sadly, this marks the end of content for the current release. You can of course continue playing, or even reset the tower and confront Zehtalia again. But the stairs to the next level won't spawn in the current version of the game. If you've enjoyed playing @@color:Gold;Tower of Triumph, An Humble Pilgrimage to the Shrine of the Goddess of Primal Darkness@@, please consider heading over to <a href="https://subscribestar.adult/arcdragon" target="_blank" rel="noopener noreferrer">SubscribeStar</a> and subscribing to support further development. If you'd like to share your thoughts or discuss the game with other players, the current discussion home for Tower of Triumph is at tfgames.site. Thank you for playing, and I hope you've enjoyed everything so far!\ <</replace>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 0>>\ <<replace "#eventtext">>\ <<set _RightPic to $ImgPath + "Zehtalia.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ @@color:Red;Zehtalia@@ "WRETCHED MORTAL, HEAR ME!" Uh-oh. <hr>\ <span id="KeypOne">\ <<link "1) Listen to what she has to say" "Zehtalia">> <<set $Dungeon[_pz][_px][_py][12] to 1>> <</link>> </span>\ <span id="KeypTwo">\ <<link "2) Attack immediately" "Combat">>\ <<set $ForceMon to ["Zehtalia","female",5]>> <<set $WORLD.CombatInterrupt to "Zehtalia", 1>>\ <</link>>\ </span>\ <</replace>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 1>>\ <<SimplePic "Zehtalia.png">>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ <hr>\ Holding back for now, you listen to what the creature has to say. @@color:Red;Zehtalia@@: "WELCOME TO MY LAIR, PATHETIC MORTAL! YOU ARE NOT THE FIRST TO MAKE IT THIS FAR. NOR WILL YOU BE THE LAST. FOR YOU WILL DIE THIS DAY, AND THIS ROOM WILL BE YOUR FINAL RESTING PLACE." Glancing around the room, you notice several piles of gnawed bones. @@color:Red;Zehtalia@@:"BUT REJOICE!" she continues. "FOR LOWLY MORTALS SUCH AS YOU SERVE A VITAL ROLE IN MY PLAN TO REFORGE THE WORLD. INDEED, YOUR LIVING FLESH WILL SERVE TO FEED MY MYRIAD BROOD WHO VERY SOON SHALL GROW IN STRENGTH AND NUMBER BEYOND WHAT CAN BE CONTAINED. EVEN NOW, THIS WRETCHED TOWER FILLS WITH THEIR NUMBER." As she speaks, she aims a spinneret in your direction and sprays you with webbing. It's going to be harder to escape now. <<set _throwaway to setup.ApplyEffect("webbed", 1)>>\ <<ShowActiveEffects>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Ask about her plan" "Zehtalia">><<set $Dungeon[_pz][_px][_py][12] to 2>><</link>></span> <span id="KeypTwo"><<link "2) Enough talking! Die!" "Combat">><<set $ForceMon to ["Zehtalia","female",5]>><<set $WORLD.CombatInterrupt to "Zehtalia", 1>><</link>></span> <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ <<SimplePic "Zehtalia.png">>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's this about a plan?" Before answering, she spays a cloud of noxious fumes at you. Secured to the floor by the webs as you are, you can't avoid it. You begin to feel ill. <<set _throwaway to setup.ApplyEffect("poisoned", 1)>>\ <<ShowActiveEffects>>\ @@color:Red;Zehtalia@@: "INDEED, A PLAN. BUT THE MERE WORD INSUFFICIENT. THE LANGUAGE OF LESSER BEING SUCH AS YOURSELF CANNOT CONVEY THE TRUE GLORY I INTEND. WHEN THIS WORLD WAS FIRST BORN, THE WARDEN OF THE UNMANIFEST DECREED THAT WE DEMONS, ITS JUST AND TRUE MASTERS, WOULD BE CONFINED TO THE BLIGHTED NETHERS. THE BARREN WASTES. THE VILE EMPTINESS. THAT TEEMING INNIFINITY WHICH LAY BEYOND, UNSEEN, UNKNOWN, AND GUARDED ONLY BY THIS WORTHLESS PILLAR OF STONE YOU FOOLISHLY CALL A TOWER." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Warden of the unmanifest?" you puzzle. "You don't mean the Goddess of Primal Darkness, do you?" @@color:Red;Zehtalia@@: "SHE IS NO GODDESS," she scoffs. "AT BEST SHE IS A POORLY LOCKED DOOR. BUT CALL HER WHAT YOU WILL. IT MATTERS NOT IF AN ANT PERCEIVES A DORMOUSE AS A GIANT. SOON MY PLAN WILL BE CONSUMATED, AND IT IS YOUR WORLD THAT WILL BURN AS FUEL TO POWER WHAT IS IT COME." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And what is to come?" @@color:Red;Zehtalia@@: "WE, YOUR RIGHTFUL MASTERS," she pauses. "WILL BE FREE." <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Free of what?" "Zehtalia">><<set $Dungeon[_pz][_px][_py][12] to 3>><</link>></span> <span id="KeypTwo"><<link "2) Enough talking! Die!" "Combat">><<set $ForceMon to ["Zehtalia","female",5]>><<set $WORLD.CombatInterrupt to "Zehtalia", 1>><</link>></span> <<if $PC[$CC][$PCSmithDemonChat][6] is 2>>\ <span id="KeypThree"><<link "3) Would rightful masters include an omnibus named Charyss?" "Zehtalia">><<set $Dungeon[_pz][_px][_py][12] to 10>><</link>></span> <<endif>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 3>>\ <<SimplePic "Zehtalia.png">>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Free of what?" you ask. "free of the tower? Why is that even a problem? I just walked in. Surely nothing's stopping you from leaving?" <<if $WORLD.SmithQuests[1] > 0>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "That's not true though," you correct her. "I've met a demon outside the tower. @@color:Red;Zehtalia@@: "CEASE WITH YOUR LIES," she dissmisses you. "I CANNOT BE DECEIVED. WHAT YOU SPEAK IS IMPOSSBLE." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No really," you continue. "She had an adventurer trapped in a cage out in the wetern forest. Said her name was Charyss, and-" @@color:Red;Zehtalia@@: "HOW DO YOU KNOW THAT NAME?" Zehtalia snarls at you, coming at you with her blackened flail in hand. "YOU SHALL PAY DEARLY FOR SPEAKING THAT DESPICABLE NAME...THE NAME OF MY TORMENTER." <<else>>\ @@color:Red;Zehtalia@@: "OF COURSE ONE SUCH AS YOU WOULD FAIL TO REALIZE," she scoffs at you. "THAT WE ONE THE ONE TRUE MIND ARE TOO GREAT TO BE CONTAINED BY THIS FLIMSY MATERIAL REALM YOU CALL HOME. AND YET NEVERTHLESS THIS LOATHSOME STRUCTURE HINDERS US IN WAYS BEYOND YOUR KEN. THIS TRAVESTY WILL BE CORRECTED BY MY OWN HANDS. BUT, ENOUGH TALK. YOU HAVE WASTED ENOUGH OF MY TIME WITH YOUR INANE PRATTLING. NOW, YOU DIE." <<endif>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne">\ <<link "1) Time to fight" "Combat">> <<set $ForceMon to ["Zehtalia","female",5]>> <<set $WORLD.CombatInterrupt to "Zehtalia", 1>> <</link>> </span>\ <<elseif $Dungeon[_pz][_px][_py][12] is 10>>\ <<SimplePic "Zehtalia.png">>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Totally unrelated," you segue. "Would the 'true masters' you speak of include an omnibus named Charyss?" She seems annoyed by the quesion. @@color:Red;Zehtalia@@: "YES, THOUGH BUT A PETULANT CHILD, THAT ONE IS NEVERTHELESS OF THE TRUE MIND. WHAT OF HER? AND HOW DOES A MORTAL SUCH AS YOURSELF KNOW A DEMON SUCH AS HER BY NAME?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I bumped into her in the forest west of town. @@color:Red;Zehtalia@@: "WHAT?" she seems taken aback. "A TRUE DEMON, OUTSIDE THE TOWER? IMPOSSIBLE. FOR YOUR LIES I WILL SEE YOU SUFFER FIRST BEFORE YOU FEED MY BROOD." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "No, it's completely true," you object. "She even mentioned you. Said you weren't really the queen of spiders." @@color:Red;Zehtalia@@: "SILENCE! SPEAK NOT OF THAT WHICH YOU DO NOT UNDERSTAND." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "She said you were just an ordinary demon who lost a fight with- @@color:Red;Zehtalia@@: "ENOUGH OF THIS HERESY!" she brandishes her weapon and charges at you. "DIE!" <hr>\ @@color:Gold;Option@@ <span id="KeypOne">\ <<link "1) (Hard mode) It seems you've made her mad" "Combat">> <<set $ForceMon to ["Zehtalia","female",5]>> <<set $WORLD.CombatInterrupt to "Zehtalia", 1>> <<set $Dungeon[_pz][_px][_py][12] to "hard mode Zehtalia">>\ <</link>> </span>\ <<else>>\ Error: unrecognized '12' state in Zehtalia event: <<print $Dungeon[_pz][_px][_py][12]>> Attempting recovery... <<set $AllowNav to true>>\ <<endif>>\ <<if $DebugMode is true>>\ <hr> @@color:Gold;Active effects@@ <<for _SAE to 0; _SAE < $PC[$CC][$PCeffects].length; _SAE++>>\ <<print $PC[$CC][$PCeffects][_SAE][0]>>: <<print $PC[$CC][$PCeffects][_SAE][1]>> <</for>>\ <<endif>>\ <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ Wrapping around you like a python, the giant snake girl wastes no time asserting her dominance. Coiling tightly against you, you feel the entire length of her beady skin flow across your flesh in a manner that is both sinister and erotic. "Yesssss," he hisses. "You'll make sssuitable prey." Nowcrushing you too tightly to speak, you can do nothing but lay helpless in her grasp as she brings her massiv head to your chest and licks you with her long slippery tongue. "Your sssalt," she hisses. "Isss deliciousss." <<if _pcpenis > 0>>\ Sliding down from you chest, she brings her tongue down your stomach until it flicks indelicately across the tip of your cock. Uncertain what she intends, you gasp suddenly usesher tongue to grip your cock tightly at thebase, forcing blood into it to give you an erection not of yoru own doing. From there she slides its slimy length in a corkscrew motion from the base of your cock, around and around until it covers its entire length. The ensation is erotic, but //bizarre// as the coiling motion stimulates you not in a familiar in-and-out manner, but aroudn and around every centimeter of your length from balls to glans. Meanwhile her tail has you fully encircles from wasit to head, and eyes and nostrils are filled with the sight and scent of snake. Scarcely able to breath from the pressure on your lungs, you shudder out a terrible orgasm that consumes the last bit of oxyegn frominside you and leaves you barely on the edge of consciousness as she at licks up every last drop of your fluids, then slithers off deeper into the tower's depths. <<else>>\ Encircling your breasts with her tongue, you feel your nipples harder as she systematiclly slathers every inch of your chest with her tongue. The sensationis enormous, and yet every time you think you're able to bear it she indelicate flicks her forked tongue across yoru nipples, inciting you to an even deeper torment of pleasure until at last, you cum. "Yesss!!" she breathes huskily, thenin an instant tears your knees apart and repositions her head bweteen them. "Ssstay ssstill," she commands. Before your brain can process the command, her tongue darts deep inside you. At last she relaxes her grip on yourtorso, allow you to desperately gasp for air while her tongue just keeps going. It's as if it's a dozen feet long, perpetually sliding inside and coiling up into a growing ball so large that you see your belly distend from its bulk. Nomming her entire mouth onto your pelvis, you cum a second time while she sucks every drop of fluid from inside you, her coiled=-up tongue spinning like a whirlwind inside you as you cum yet again and again. At last the naga releases you to the ground with an audible thunking noise, the last sensation you feel before passing out being the length of her slippery tongue beginning its long slide back out from within you. <<endif>> \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","bunny"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "naga double dicks">>\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ Unable to contain your curiosity about her double-dick anatomy, you sit down next to her to get a closer look. <<elseif _r is 1>>\ Feeling drawn to the naga's curious anatomy, you lean over her fallen form and reach out to touch one of her dicks with a finger. At first she shys away, but, quickly realizing that you're not going to hurt her, she relaxes and simply watches you with her own curiosity. <<else>>\ "Two dicks?" you marvel out loud, staring at her curious anatomy without reservation. \ <<endif>>\ <<set _r to random(1,3)>>\ <<if _r is 1>>\ Bulbous and thick, both dicks are covered in little lumps that look hard, but you quickly realize are like little jutting bits of vein, pupmped full of just enough blood to provide a ...ribbing texture. Gripping one in each hand, you watch in fascination as you begin to jack them both off as if on autopilot. The naga, clearly not objecting to this treatment, puts both hands behind her head and sighs happily. "I forget that you adventurers are like this," she chuckles. "I must remember not to waste so much energy fighting those who give so freely.." <<elseif _r is 2>>\ "What would you even do with two dicks?" "You want me to show you?" she waggles her eyebrows at you. Shaking your head at the thought, you nevertheless slide the fingers of one hand around one, then firmly grab onto it. "Oh," she grins. "Perhaps you'd rather show me?" You ignore her, but neither do you stop. Instead, you reach out with your other hand to grab the other dick and begin to playfully stroke them up and down, alternating in opposite directiosn witheach hand as if milking a cow. "Mmm," the naga settles down comfortably onto her back, curling the end of her tail around you and tickling your belly with it while you continue to stroke her. <<else>>\ Utterly fascinated by the ribbing, you feel one of the bulbous lumps and push down on it. It recedes, but then quickly fills back up with blood. "If you think they're fun to play with," she waggles her eyebrows at you, "imagaine what a delight they must be to taste." Stifling a blush, you set aside her comment and instead take both cocks in your hands and bring them to your lips for closer inspection. "Well, maybe just a taste," you mumble under the sound of her snickering, licking the tip of one cock and the transferring a bit of pre-cum from one to the other. "Solely for lubrication," you insist to the smiling naga. <<endif>>\ <<set _r to random(1,2)>>\ <<if _r is 1>>\ Pistoning both cocks up and down in alternating fashion like milking a cow, it doesn't take long before the 'milk' comes, first one the left cock and then the right. Despite the temptation you manage to refrain from eagerly licking her clean, but the abdundant fluids do make finishing the handjob much easier. "Thank you, come again!" the naga laughs, then slithers off alone. Done with the foreplay, you begin to jack her off for real now, having some difficulty coordinating with both hands together. <<else>>\ Each dick is large enough to be more than a handful, and you briefly try moving both hands to the same cock to give it more full attention. The naga frowns at this, and with a sigh yougo back to handling them both toegther. "Usually these are for fucking both holes at the same time," she comments, prompting all sorts of visuals in your mind as you continue to stroke them. "But you are doing quiet well." Encouraging by her words, you pick up the pace, and before long you're rewarded with a faceful of snake sperm in your face. The flavor is utterrly unique and not entirely disagereable, but you wipe rather than lick most of it off. The naga seems unbothered by this, and slithers off with a tired yawn to find some secluded place for a warm nap. <<endif>>\ <<elseif $WORLD.datapasser is "naga blowjob">>\ Uncertain where this creature even keeps her vagina, if she even has one, you drop your pants and wave your dick in her face. "Snakes like warmth, right?" you ask. "How about you suck some warmth straight from the source?" She seems to consider this for a moment, then nods agreeably and slithers over between your legs. Taking your dick fully into her mouth withotu a fuss, she quickly gets to work sucking on it. Her mouth is shockingly cool, and you realize that maybe she literally does need your body heat. Happy to provide, you reach down with yoru arms to fondle her enormous tits with an underhanded grip, and she response by sliding her tail between your legs from behind and coiling herself up your thigh. The action of her mouth is mechanical, but thorough, almost as if she has no sense of the sexual implicatiosn of the act and is simply sucking on your toenjoy the heat like a peculiar invese of how one might enjoy sucking on a popsicle. There's no arguing with the results, however, as her lickign and sucking is relentless, withotu the slightest hint of tiring. Sliding your hands up from her chest, onto her shoulders and down her back, you massage your fingers across her cool flesh...but that's just an excuse. Really, you're trying to keep from falling over from how difficult it is to stand with this monster-machin of a cocke-sucker not even bothering to breath with how powerfully she's tryign to suck your cock in and out of her thoat. By this time you're no longer even standing, instead supporting yourself uproght on the bulk of her tail while you gasp and shudder in a blowjob that simply won't end. She's sucking like her life depends on it, and yet your balls insistently refuse to give up their sperm for a timeless eternity. It's not until she looks up at youwith an appreciative smile that at last you gush a loarious climax down her eager throat, shuddering and leaning against her in uncontrollable ectasy. Collapsing finally on top of her, she seems perfectly content with this, curling her cool body around your for its warmth. Youdrift off into a brief but comforting sleep, your face resting gently between her firm and inviting breasts. You awake some time later with the naga still curled around you, her breasts rising and falling genrtly with her breath. Giving them one last squeeze, you wipe your dick dry againsther lips, watching in amusement as her tongue instinctively reaches out for it, then pat her nicely on the head and turn to continue your adventure. <<elseif $WORLD.datapasser is "naga boob fondle">>\ The air become noticebly thicker with the scent of snake musk as you approach the fallen naga, her tail still thrashing and coiling wildly in the aftermath of your battle. Plaing one hand on her chest, you can feel her heartbeat though the giant, ponderous flesh her breasts. Faster than you expected. But calming. Takign both breasts in your hands, you kneadly gently but joyfully. THey're truly spectacular both in their imrepssive size and in their unqiueness of chafacter. The skin is slightly textures and cool to the touch. Lifting one, you judge it to be easily 7 or 8 pounds, and it's remarkable how completely supple and pliable they are. As for the naga, she seems unbothered by your touch. In fact, her tail is even now coiling itself around oen of your legs, climbing up your thigh in an easy spiral as if seeking out your body heat. "If that's what you want," you nod to her, "I'm sure we can come to an arrangenment." You end up with the snake girl half curled up into your lap and half curled around you, purring into the warmth of your chest while you delightfully fondle hers. Its smooth skin. The curiosity of her lack of nipples. You end up falling into a pleasant sleep together before eventually waking up, feeling much refreshed and ready to continue your adventure. <<else>>\ Error in fox sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<set _StoreMusic to $WORLD.music>>\ <<PlayBGM "town">>\ \ <span id="KeypESC">\ <<link "">> <<PlayBGM _StoreMusic>> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>> </span>\ \ <<SimplePic "glinda.jpg">>\ <hr>\ <<set _PressurePlate to false>>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set _StandingOn to $Dungeon[_pz][_px][_py]>>\ <<if _StandingOn[11] is "PressurePlate">>\ <<set _PressurePlate to true>>\ <<endif>>\ <<endif>>\ <<if _PressurePlate is true>>\ @@color:Gold;Glinda the Rescue Fairy appears in a shower of pretty sparkles!@@ @@color:Aqua;Glinda@@: "Hello, <<print $PC[$CC][$PCname]>>. I notice you're standing on a pressure plate. //Surely// you're not trying to use the Fairy Rescue System to cheat your way through a dungeon puzzle?" <<link "What? No, there's legitimately a problem. Really. Please help me!" "TownSquare">> <<set $DisableMenu to false>>\ <<TogglePressurePlate _StandingOn[12]>>\ <<script>> Dialog.close(); <</script>> <</link>> <<link "Uhh, maybe?">> <<set $DisableMenu to false>>\ <<PlayBGM _StoreMusic>> <<script>> Dialog.close(); <</script>> <</link>>\ <<elseif $Glinda is 0>>\ @@color:Gold;Glinda the Rescue Fairy appears in a shower of pretty sparkles!@@ @@color:Aqua;Glinda@@: "Hello, <<print $PC[$CC][$PCname]>>. Are you in need of assistance?" <hr>\ <<set _YesMessage to "Yes, I'm stuck. Please teleport me back to town.">>\ <<set _NoMessage to "No, I was just curious to see what this button did.">>\ <<if passage() is "Combat">>\ <<set _YesMessage to "Yes, combat is legitimately broken. Please help.">>\ <<set _NoMessage to "No, I would never abuse the Rescue Fairy system to avoid losing a fight.">>\ <<endif>>\ <<link _YesMessage "TownSquare">> <<set $DisableMenu to false>>\ <<script>> Dialog.close(); <</script>> <</link>> <<link _NoMessage>> <<set $DisableMenu to false>>\ <<PlayBGM _StoreMusic>> <<script>> Dialog.close(); <</script>> <</link>>\ <<else>> @@color:Aqua:Glinda@@ "Oh no!" Glinda cries out. "The Fairy Rescue system has broken! Things must be really bad for that to happen!" <<link "I have faith in you, Glinda. Please just do your best!">> <<set $DisableMenu to false>>\ <<script>> Dialog.close(); Engine.play("TownSquare"); <</script>> <</link>>\ <<endif>>\ <<set $WORLD.SmithQuests[1] to 99>>\ \ @@color:Gold;A grateful adventurer@@ <hr>\ <<SimplePic _SuccessPic>>\ @@color:LightGreen;Adventurer@@: "Thank you! Than you so much! I thought I was never going to get out of there!" <<if $WORLD.smith is 3>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Kind of serves you right though. You're the thief who stole Finley's hammer, aren't you?" @@color:LightGreen;Adventurer@@: "...stole?" _AdvenHeShe turns white. "No, no,no...I just, uhh...//borrowed// it. But now that you're here I can give it to you to give back to him, so no harm no foul. Right?" <<if setup.getnextinvslot($CC) < 0>>\ <<set $WORLD.SmithQuests[1] to "smith has it">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Unfortunately my bags are full and I don't have any room to carry it. If I let you go, will you promise to return it for me?" @@color:LightGreen;Adventurer@@: "Oh, absolutely!" _AdvenHeShe nods vigrously. "I definitely wouldn't take advantage of the opportunity to sneak off into the night instead and head south to Talven where I can get lost without anyone ever finding me!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Good," you nod agreably. "I'm sure I can trust someone who stole a hammer to be true to their word." Feeling complete and total faith that the now freed adventurer will return the very valuable hammer to the blacksmith without any further need for supervision, you wave goodbye and as _AdvenHeShe runs off into the distance. <<else>>\ <<set $WORLD.SmithQuests[1] to "player has it">>\ <<set _ads to setup.addtoinven([101,105,0,0])>>\ <<print _AdvenHeShe.toUpperFirst()>> gives you the hammer. To your disappointment, it seems to be a small smithing hammer, and not at all like something you could use in combat. Still, having what you came for, your wave to the adventurer as _AdvenHeShe heads back to town. <<endif>>\ <<else>>\ <<set _ExitLinks to "return to forest, clear event">>\ <<set $WORLD.SmithQuests[1] to "player doesn't know smith has it">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Happy to help. So, how does this whole master/slave thing work. I just tell you what to do and you have to do it, right?" @@color:LightGreen;Adventurer@@: "Hahaha," _AdvenHeShe laughs. "Don't be silly. I know you're here to retreive that blacksmith's smithing hammer. <<print _AdvenHeShe.toUpperFirst()>> holds out a steel smithing hammer for you. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What are you talking about, slave? I never picked up a quest like that." @@color:LightGreen;Adventurer@@: "Hahaha," _AdvenHisHer laughing starts to sound oddly forced. "I'm so glad my noble and gracious rescuer has such a good sense of humor. Hahaha...right?" <<if $PC[$CC][$PCsex] is "female">>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Besides, you're my slave now, so everything you own is mine anyway. Hand it over." <<else>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Besides, you're my slave now, so everything you own is mine anyway. Hand it over. Also, you won't be needing your clothes anymore. Take them off." <<endif>>\ @@color:LightGreen;Adventurer@@: "Oh look," _AdvenHeShe points behind you. "The omnibus is coming back! She sure looks angry!" You turn to look, but see nothing. Then turn back just in time to see the adventurer running back towards town. <<endif>>\ <<set $WORLD.smith to 4>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Forest">> <<AdvanceTime 5>> <</link>>\ </span>\ Quest query <<elseif $WORLD.datapasser[1] is 4>><!-- Tower level 5 -->\\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hey, Rina. What can you yell me about the abandoned church in town?" @@color:Pink;Rina@@: "It used to belong to the Order of Immaculate Purity, but they shut down for lack of followers. Hard to convince people around these parts to remain chaste. The internet hasn't been invented yet, so most people go to orgies for their social networking." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Right. So who runs it now??" @@color:Pink;Rina@@: "" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:Pink;Rina@@: "" <<elseif $WORLD.datapasser[1] is 5>><!-- Abandoned church -->\ quest 5 <<elseif $WORLD.datapasser[1] is 6>><!-- Babies -->\\ <<if $PC[$CC][$PCsex] is "male">>\ @@color:Pink;Rina@@: "Do you like sex?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sure, I guess. I mean, I'm playing a porn game, aren't I?" @@color:Pink;Rina@@: "You'd be surprised. Anyway, for this next quest I want you to go find a sexy monster babe and fuck her." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I'm guessing there's a catch." @@color:Pink;Rina@@: "Yep. You can't just fuck her, you have to make her pregnant." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Still waiting for the catch." @@color:Pink;Rina@@: "Afterwards, she'll carry the child to term and eventually a brand new baby will show up on your doorstep!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "And there's the catch. Explain to me please, why would I do this?" @@color:Pink;Rina@@: "It's an important game mechanic. No, really! It is. Honest." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...right. Ok, so supposing I do this, is there anything else I need to know?" @@color:Pink;Rina@@: "Yep. Monster sex only rarely results in impregnation. I recommend you talk to the alchemist in town to see if she has anything to help with that." <<else>>\ @@color:Pink;Rina@@: "Do you like babies?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Sure, I guess?" @@color:Pink;Rina@@: "Great! Because for this next quest, I want you to go get fucked by some monster and become pregnant, then give birth." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "...uhh, how about, no?" @@color:Pink;Rina@@: "No, seriously. Just go find a wolf or a slime or a goblin or whatever, let it beat you up then pump you full of monster babies! Doesn't that sound fun?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Rina, I think you need profesional help." @@color:Pink;Rina@@: "Of course, only vaginal sex can result in pregnancy, and even then, not always. That alchemist who lives over by the tower might have something that can help with that." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Rina, just stop." @@color:Pink;Rina@@: "Gee, I sure wish I was an adventurer! Then I could do super awesome amazing fun quests like this one!" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "If you want, I could hop over onto that side of the desk and you could do it instead?" @@color:Pink;Rina@@: "Nah, I'll pass, thanks. " <<endif>>\ quest turnin @@color:Pink;Rina@@: "Implement quest turn in: defeat the level 5 tower boss" <<elseif _FocusedQuest is 7>>\ @@color:Pink;Rina@@: "Implement quest turn in: proceed to area south" <<elseif _FocusedQuest is 8>>\ @@color:Pink;Rina@@: "Implement quest turn in: defeat the level 10 tower boss" <<elseif _FocusedQuest is 9>>\ @@color:Pink;Rina@@: "Implement quest turn ins!" <<widget "Use">>\ <<set _iPTR to $args[0]>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _UseDepleteItem to true>>\ <<set _EndCombatTurn to true>>\ <<unset $InventoryInterrupt>>\ \ <<set _MSM to "meat">>\ <<if $ItemPoke.fullname.includes("semen")>>\ <<set _MSM to "semen">>\ <<elseif $ItemPoke.fullname.includes("milk")>>\ <<set _MSM to "milk">>\ <<endif>>\ <<if $ItemPoke.fullname.includes("bunny")>>\ <<set _Morph to "bunny">>\ <<elseif $ItemPoke.fullname.includes("fox")>>\ <<set _Morph to "fox">>\ <<elseif $ItemPoke.fullname.includes("cat")>>\ <<set _Morph to "cat">>\ <<elseif $ItemPoke.fullname.includes("wolf")>>\ <<set _Morph to "wolf">>\ <<elseif $ItemPoke.fullname.includes("horse")>>\ <<set _Morph to "horse">>\ <<elseif $ItemPoke.fullname.includes("cow")>>\ <<set _Morph to "cow">>\ <<elseif $ItemPoke.fullname.includes("centaur")>>\ <<set _Morph to "centaur">>\ <<elseif $ItemPoke.fullname.includes("slime")>>\ <<set _Morph to "slime">>\ <<elseif $ItemPoke.fullname.includes("goblin")>>\ <<set _Morph to "goblin">>\ <<elseif $ItemPoke.fullname.includes("human")>>\ <<set _Morph to "human">>\ <<elseif $ItemPoke.fullname.includes("spider")>>\ <<set _Morph to "spider">>\ <<elseif $ItemPoke.fullname.includes("minotaur")>>\ <<set _Morph to "cow">>\ <<elseif $ItemPoke.fullname.includes("hellhound")>>\ <<set _Morph to "hellhound">>\ <<elseif $ItemPoke.fullname.includes("imp")>>\ <<set _Morph to "imp">>\ <<elseif $ItemPoke.fullname.includes("drider")>>\ <<set _Morph to "drider">>\ <<elseif $ItemPoke.fullname.includes("succubus")>>\ <<set _Morph to "demon">>\ <<elseif $ItemPoke.fullname.includes("incubus")>>\ <<set _Morph to "demon">>\ <<elseif $ItemPoke.fullname.includes("omnibus")>>\ <<set _Morph to "demon">>\ <<elseif $ItemPoke.fullname.includes("tentacle")>>\ <<set _Morph to "tentacle">>\ <<elseif $ItemPoke.fullname.includes("demon")>>\ <<set _Morph to "demon">>\ <<elseif $ItemPoke.fullname.includes("strange green")>>\ <!-- naga -->\ <<set _Morph to "human">>\ <<elseif $ItemPoke.fullname.includes("snake")>>\ <<set _Morph to "snake">>\ <<else>>\ <<set _Morph to "Error: unrecognized morphology for transformative consumable.">>\ <<endif>>\ \ <<if $PC[$CC][$PCinven][_iPTR][0] is 117>><!-- hair dye --> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _HeadPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPhead>>\ <<set _HeadPTR to _i>>\ <<endif>>\ <</for>>\ <<if _HeadPTR < 0>>\ <<set _UseDepleteItem to false>>\ <<set _Message to "You don't have a head to apply this to">>\ <<else>>\ <<set _NewColor to $ItemPoke.usedata>>\ <<set $PC[$CC][$PCbp][_HeadPTR].hair to _NewColor>>\ <<set _Message to "You dye your hair " + _NewColor>>\ <<endif>>\ <<elseif ($ItemPoke.tooleffect is 10)>><!-- normal food -->\ <<set _Message to "You feel less hungry">>\ <<set _EatMe to $ItemPoke.foodval>>\ <<if _EatMe > 0>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] + _EatMe>>\ <<if $PC[$CC][$PChunger] > 500>>\ <<set $PC[$CC][$PChunger] to 500>>\ <<endif>>\ <<endif>>\ <<ShowHunger>>\ <<elseif ($ItemPoke.tooleffect is 11)>><!-- normal drink -->\ <<set _Message to "You feel less thirsty">>\ <<set _EatMe to $ItemPoke.foodval>>\ <<if _EatMe > 0>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] + _EatMe>>\ <<if $PC[$CC][$PChunger] > 500>>\ <<set $PC[$CC][$PChunger] to 500>>\ <<endif>>\ <<endif>>\ <<ShowHunger>>\ <<elseif ($ItemPoke.tooleffect is 20)>><!-- transformative food -->\ <<set _UIOVERRIDE to true>>\ <<replace "#inverr">><<DoTransform _Morph _MSM>><</replace>>\ <<set _EatMe to $ItemPoke.foodval>>\ <<if _EatMe > 0>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] + _EatMe>>\ <<if $PC[$CC][$PChunger] > 500>>\ <<set $PC[$CC][$PChunger] to 500>>\ <<endif>>\ <<endif>>\ <<ShowHunger>>\ <<elseif ($ItemPoke.tooleffect is 21)>><!-- transformative drink -->\ <<set _UIOVERRIDE to true>>\ <<replace "#inverr">><<DoTransform _Morph _MSM>><</replace>>\ <<set _EatMe to $ItemPoke.foodval>>\ <<if _EatMe > 0>>\ <<set $PC[$CC][$PChunger] to $PC[$CC][$PChunger] + _EatMe>>\ <<if $PC[$CC][$PChunger] > 500>>\ <<set $PC[$CC][$PChunger] to 500>>\ <<endif>>\ <<endif>>\ <<ShowHunger>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 103>><!-- dildo --> <<set _UseDepleteItem to false>>\ <<if $GameState is "combat">>\ <<set _EndCombatTurn to false>>\ <<set _Message to "You cannot use this in combat, but the " + $Mon.name + " enjoys watching you try.">>\ <<else>>\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _Message to "There's nothing you can do with this.">>\ <<else>>\ <<if $PC[$CC][$PChornycur] is 0>>\ <<set _Message to "You're not horny enough to use this.">>\ <<else>>\ <<set $PC[$CC][$PChornycur] to 0>>\ <<ShowHorny>>\ <<set _Message to "You feel less aroused">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 135>><!-- fleshlight --> <<set _UseDepleteItem to false>>\ <<if $GameState is "combat">>\ <<set _EndCombatTurn to false>>\ <<set _Message to "You cannot use this in combat, but the " + $Mon.name + " is amused by your attempt.">>\ <<else>>\ <<if $PC[$CC][$PCsex] is "female">>\ <<set _Message to "There's nothing you can do with this.">>\ <<else>>\ <<if $PC[$CC][$PChornycur] is 0>>\ <<set _Message to "You're not horny enough to use this.">>\ <<else>>\ <<set $PC[$CC][$PChornycur] to 0>>\ <<ShowHorny>>\ <<set _Message to "You feel less aroused">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 118>><!-- healing potion --> <<set _HealAmount to random(1,10) + $PC[$CC][$PClevel]>>\ <<ChangeStat $PChpcur _HealAmount>>\ <<set _Message to "You are @@color:Aqua;healed for " + _HealAmount + "@@ health">>\ <<if $PC[$CC][$PChpcur] >= $PC[$CC][$PChpmax]>>\ <<set _Message to "You are healed to full!">>\ <<endif>>\ <<ShowHealth>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 119>><!-- fire resist potion --> <<ApplyEffect "resist fire" 1>>\ <<ShowActiveEffects>>\ <<set _Message to "Your skin becomes cool to the touch">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 123>><!-- antivenom --> <<if setup.GetEffect("oison") > 0>> <<set _Message to "You drink the antivenom and feel much better">>\ <<for _CBE to $PC[$CC][$PCeffects].length -1; _CBE > -1; _CBE-->>\ <<if $PC[$CC][$PCeffects][_CBE][0].includes("oison")>>\ <<set _throwaway to $PC[$CC][$PCeffects].deleteAt(_CBE)>>\ <<endif>>\ <</for>>\ <<ShowActiveEffects>>\ <<else>>\ <<set _Message to "You drink the antivenom, but you were not poisoned">>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 124>><!-- magic resist potion --> <<ApplyEffect "resist magic" 1>>\ <<ShowActiveEffects>>\ <<set _Message to "Your skin begins to sparkle">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 125>><!-- penis growth --> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PenisPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPpenis>>\ <<set _PenisPTR to _i>>\ <<endif>>\ <</for>>\ <<if _PenisPTR < 0>>\ <<set _penis to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _nextbp to setup.getnextbodypart()>>\ <<set $PC[$CC][$PCbp][_nextbp] to { type: $BPpenis, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _penis, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set _Message to "You sprout a brand new penis!">>\ <<else>>\ <<if $PC[$CC][$PCbp][_PenisPTR].size gte 170>>\ <<set _Message to "You're fairly certain your penis can't get any larger">>\ <<else>>\ <<if $PC[$CC][$PCbp][_PenisPTR].size > 120>>\ <<set _PGrow to random(120,170) - $PC[$CC][$PCbp][_PenisPTR].size>>\ <<if _PGrow > 0>>\ <<set $PC[$CC][$PCbp][_PenisPTR].size to $PC[$CC][$PCbp][_PenisPTR].size +5>>\ <<set _Message to "Your penis grows" + $PC[$CC][$PCbp][_PenisPTR].size>>\ <<else>>\ <<set _Message to "You feel some tingling, but it's hard to tell how much difference it made">>\ <<endif>>\ <<else>>\ <<set $PC[$CC][$PCbp][_PenisPTR].size to $PC[$CC][$PCbp][_PenisPTR].size +5>>\ <<set _Message to "Your penis grows">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 126>><!-- penis reduction -->\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PenisPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPpenis>>\ <<set _PenisPTR to _i>>\ <<endif>>\ <</for>>\ <<if _PenisPTR < 0>>\ <<set _Message to "You drink the liquid down but don't have penis for it to affect">>\ <<else>>\ <<set _PenisSize to $PC[$CC][$PCbp][_PenisPTR].size -5>>\ <<if _PenisSize < 1>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, $BPpenis)>> <<set _Message to "The last bit of your penis shrivels up and disappears">>\ <<UpdateMorphs>>\ <<else>>\ <<set _Message to "Your penis shrinks">>\ <<set $PC[$CC][$PCbp][_PenisPTR].size to _PenisSize>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 127>><!-- breast growth --> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _BoobPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPboobs>>\ <<set _BoobPTR to _i>>\ <<endif>>\ <</for>>\ <<if _BoobPTR < 0>>\ <<set _nextbp to setup.getnextbodypart()>>\ <<set _boobs to $PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _boobs to _boobs * 10>> <<set $PC[$CC][$PCbp][_nextbp] to { type: $BPboobs, equip: [0,0,0,0], equippable: true, morph: "human", mascfem: 0, hair: "", size: _boobs, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set _Message to "You grow a brand new pair of boobs!">>\ <<else>>\ <<set _BoobSize to $PC[$CC][$PCbp][_BoobPTR].size + random(30,70)>>\ <<if _BoobSize > 1199>>\ <<set _Message to "You're fairly certain your chest can't get any larger">>\ <<set <<set $PC[$CC][$PCbp][_BoobPTR].size to 1200>>\ <<elseif _BoobSize > 0>>\ <<set $PC[$CC][$PCbp][_BoobPTR].size to _BoobSize>>\ <<set _Message to "Your breasts grow larger">>\ <<else>>\ <<set _Message to "Your nipples tiggle a bit, but it's hard to tell how much difference it made">>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 128>><!-- breast reduction --> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _BoobPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPboobs>>\ <<set _BoobPTR to _i>>\ <<endif>>\ <</for>>\ <<if _BoobPTR < 0>>\ <<set _Message to "You drink the liquid down but don't have any breasts for it to affect">>\ <<else>>\ <<set _BoobSize to $PC[$CC][$PCbp][_BoobPTR].size - random(30, 70)>>\ <<if _BoobSize < 1>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, $BPboobs)>> <<set _Message to "The last bit of mammary tissue fades from your breasts and all that remains is muscle">>\ <<UpdateMorphs>>\ <<else>>\ <<set _Message to "Your breasts shrink">>\ <<set $PC[$CC][$PCbp][_BoobPTR].size to _BoobSize>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 139>><!-- pussy growth --> <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PussyPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPpussy>>\ <<set _PussyPTR to _i>>\ <<endif>>\ <</for>>\ <<if _PussyPTR < 0>>\ <<set _pussy to 35+$PC[$CC][$PCstr]+$PC[$CC][$PCcon]>> <<set _nextbp to setup.getnextbodypart()>>\ <<set $PC[$CC][$PCbp][_nextbp+2] to { type: $BPpussy, equip: [0,0,0,0], equippable: false, morph: "human", mascfem: 0, hair: "", size: _pussy, attackdesc: "", attacktype: "", mindam: 0, maxdam: 0}>>\ <<set _Message to "You grow a vagina!">>\ <<else>>\ <<if $PC[$CC][$PCbp][_PussyPTR].size gte 170>>\ <<set _Message to "You're fairly certain your pussy can't get any deeper">>\ <<else>>\ <<if $PC[$CC][$PCbp][_PussyPTR].size > 120>>\ <<set _PGrow to random(120,170) - $PC[$CC][$PCbp][_PussyPTR].size>>\ <<if _PGrow > 0>>\ <<set $PC[$CC][$PCbp][_PussyPTR].size to $PC[$CC][$PCbp][_PussyPTR].size +5>>\ <<set _Message to "Your pussy grows " + $PC[$CC][$PCbp][_PussyPTR].size>>\ <<else>>\ <<set _Message to "You feel some tingling, but it's hard to tell how much difference it made">>\ <<endif>>\ <<else>>\ <<set $PC[$CC][$PCbp][_PussyPTR].size to $PC[$CC][$PCbp][_PussyPTR].size +5>>\ <<set _Message to "Your pussy grows deeper">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 140>><!-- pussy reduction -->\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _PussyPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPpussy>>\ <<set _PussyPTR to _i>>\ <<endif>>\ <</for>>\ <<if _PussyPTR < 0>>\ <<set _Message to "You drink the liquid down but don't have pussy for it to affect">>\ <<else>>\ <<set _PussySize to $PC[$CC][$PCbp][_PussyPTR].size -5>>\ <<if _PussySize < 1>>\ <<set _BPRemoved to setup.RemoveBodyPart($CC, $BPpussy)>> <<set _Message to "The last bit flesh fills in and your pussy disappears!">>\ <<UpdateMorphs>>\ <<else>>\ <<set _Message to "Your pussy shrinks">>\ <<set $PC[$CC][$PCbp][_PussyPTR].size to _PenisSize>>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 129>><!-- aphrodisiac --> <<set _Aroused to random(20,30)>>\ <<ChangeStat $PChornycur _Aroused>>\ <<ShowHorny>>\ <<set _Message to "You become more aroused">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 130>><!-- fertili-tea --> <<ApplyEffect "fertile" 1440>>\ <<ShowActiveEffects>>\ <<set _Message to "You feel fertile (@@color:Yellow;Dev note: pregnancy doesn't work yet@@">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 131>><!-- contraceptive --> <<ApplyEffect "barren" 1440>>\ <<ShowActiveEffects>>\ <<set _Message to "You feel barren">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 132>><!-- scissors --> <<set _UseDepleteItem to false>>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<set _HeadPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPhead>>\ <<set _HeadPTR to _i>>\ <<endif>>\ <</for>>\ <<if _HeadPTR < 0>>\ <<set _UseDepleteItem to false>>\ <<set _Message to "You don't have a head with hair to cut">>\ <<elseif $PC[$CC][$PCbp][_HeadPTR].size < 1>>\ <<set _Message to "You don't have any hair to cut">>\ <<else>>\ <<set _H to $PC[$CC][$PCbp][_HeadPTR].size -1>>\ <<set $PC[$CC][$PCbp][_HeadPTR].size to _H>>\ <<set _Message to "You trim an inch or so off your hair">>\ <<if $PC[$CC][$PCbp][_HeadPTR].size < 1>>\ <<set $PC[$CC][$PCbp][_HeadPTR].size to 0>>\ <<set _Message to "You cut the last bit of hair from your head. You're now bald.">>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 133>><!-- hair growth --> <<set _HeadPTR to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPhead>>\ <<set _HeadPTR to _i>>\ <<endif>>\ <</for>>\ <<if _HeadPTR < 0>>\ <<set _UseDepleteItem to false>>\ <<set _Message to "You don't have a head to apply this to">>\ <<else>>\ <<set _NewLength to $PC[$CC][$PCbp][_HeadPTR].size + random(1,2)>>\ <<if _NewLength > 0>>\ <<set $PC[$CC][$PCbp][_HeadPTR].size to _NewLength>>\ <<set _Message to "Your hair grows longer">>\ <<endif>>\ <<endif>>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 136>><!-- strange green liquid --> <<set _Message to "The liquid feels unpleasant going down your throat, but you notice no outwardly obvious effect.">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 137>><!-- stoneskin potion --> <<ApplyEffect "stoneskin" 1>>\ <<ShowActiveEffects>>\ <<set _Message to "Your skin begins to sparkle">>\ <<elseif $PC[$CC][$PCinven][_iPTR][0] is 111>><!-- spellbook --> <<if $GameState is "combat">>\ <<set _UseDepleteItem to false>>\ <<set _EndCombatTurn to false>>\ <<set _Message to "You cannot use this in combat">>\ <<else>>\ <<if $PC[$CC][$PCinven][_iPTR][3] is 500>>\ <<set _Result to setup.LearnSpell("firebolt")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 501>>\ <<set _Result to setup.LearnSpell("heal")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 502>>\ <<set _Result to setup.LearnSpell("armor")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 503>>\ <<set _Result to setup.LearnSpell("poison")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 504>>\ <<set _Result to setup.LearnSpell("up")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 505>>\ <<set _Result to setup.LearnSpell("down")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 506>>\ <<set _Result to setup.LearnSpell("portal")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 507>>\ <<set _Result to setup.LearnSpell("light")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 508>>\ <<set _Result to setup.LearnSpell("map")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 509>>\ <<set _Result to setup.LearnSpell("passwall")>> <<elseif $PC[$CC][$PCinven][_iPTR][3] is 510>>\ <<set _Result to setup.LearnSpell("soultrap")>> <<else>>\ <<set _Result to "@@color:Yellow;Error in Use:@@ " + $PC[$CC][$PCinven][_iPTR][3] + " is not a recognized spellbook">>\ <<endif>>\ <<replace "#inverr">><<print _Result>><<SpellAchieveCheck>><</replace>>\ <<set _UIOVERRIDE to true>>\ <<endif>>\ <<else>>\ <<replace "#inverr">>@@color:Yellow;Error@@: item ($ItemPoke.fullname) has no Use entry: tooleffect is: <<print $ItemPoke.tooleffect>>, iPTR is_iPTR, manual fetch shows: $PC[$CC][$PCinven][_iPTR] <</replace>>\ <<endif>>\ <<if _UseDepleteItem is true>>\ <<set _throwaway to setup.RemoveOneItemFromInv($CC, _iPTR)>>\ <<replace "#InventoryGoesHere">><<ShowInventory>><</replace>>\ <<endif>>\ <<if $GameState is "combat">>\ <<if _EndCombatTurn is true>>\ <<set _Message to ["INVENTORY",-1,_Message]>>\ <<script>> Dialog.close(); <</script>> <<CombatAttack _Message>> <<run Health2($Mon.hpcur, $Mon.hpmax, "monhpnbar", true)>>\ <<MonsterTurn false>>\ <<else>>\ <<replace "#inverr">><<print _Message>><</replace>>\ <<endif>>\ <<else>>\ <<if _UIOVERRIDE is true>><<else>>\ <<replace "#inverr">><<print _Message>><</replace>>\ <<endif>>\ <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <<endif>>\ <</widget>>\ <<widget "ShowEquipment">>\ @@color:Gold;Wearing@@ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.equippable is true>>\ <<if $PC[$CC][$PCbp][_i].equip[0] is 0>>\ <span class="grayb"><<button "[Unequip]">><</button>></span> \ @@color:Gold;<<print setup.bpptrtoname(_bp.type, "formal")>>@@\ <<DescribeItem _bp.equip>>: none <<if $DebugMode is true>>(<<print _bp.type>>)<<endif>> <<else>>\ <<capture _i>>\ <<button "[Unequip]">> <<if $GameState is "combat">>\ <<replace "#inverr">>Cannot remove equipment during combat<</replace>> <<else>>\ <<set _whereto to setup.getnextinvslot($CC)>>\ <<if _whereto < 0>> <<replace "#inverr">>No room in inventory<</replace>> <<elseif $PC[$CC][$PCbp][_i].equip[0] is 0>> <<replace "#inverr">>Nothing equipped in that slot: _i<</replace>> <<else>> <<DescribeItem $PC[$CC][$PCbp][_i].equip>>\ <<set _itemname to $ItemPoke.name>>\ <<if $PC[$CC][$PCbp][_i].equip[2] > 0>>\ <<set _ToSlot to setup.additemtoinv($CC, $PC[$CC][$PCbp][_i].equip, true)>>\ <<if _ToSlot < 0>> <<replace "#inverr">>Error: unequip failed?<</replace>> <<else>>\ <<set $PC[$CC][$PCbp][_i].equip to [0,0,0,0]>> <<endif>>\ <<else>>\ <<set $PC[$CC][$PCinven][_whereto] to $PC[$CC][$PCbp][_i].equip>> <<set $PC[$CC][$PCbp][_i].equip to [0,0,0,0]>> <<endif>>\ <<replace "#inverr">>Unequipped <<print _itemname>><</replace>> <<replace "#EquipmentGoesHere">><<ShowEquipment>><</replace>>\ <<replace "#InventoryGoesHere">><<ShowInventory>><</replace>>\ <<endif>>\ <<endif>>\ <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <</button>> \ @@color:Gold;<<print setup.bpptrtoname(_bp.type, "formal")>>@@\ <<DescribeItem _bp.equip>>: <<print $ItemPoke.fullname>> \ <<if $DebugMode is true>>\ (<<print $PC[$CC][$PCbp][_i].type>>) <<else>>\ <br>\ <<endif>>\ <</capture>>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "ReportInvFullness">>\ <<set _InvCount to 0>>\ <<for _RIF to 0; _RIF < $PC[$CC][$PCmaxinven]; _RIF++>>\ <<if $PC[$CC][$PCinven][_RIF][0] > 0>>\ <<set _InvCount to _InvCount +1>>\ <<endif>>\ <</for>>\ <<print _InvCount>>/<<print $PC[$CC][$PCmaxinven]>>\ <</widget>>\ <<widget "ShowInventory">>\ @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> \ <<button "[Mode]">> <<if $InvenMode is "use">>\ <<set $InvenMode to "destroy">>\ <<else>>\ <<set $InvenMode to "use">>\ <<endif>>\ <<replace "#InventoryGoesHere">><<ShowInventory>><</replace>> <</button>> <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<if _desc neq "none">>\ <<if $InvenMode is "destroy">>\ <<capture _i>>\ <span class="redb">\ <<button "[DESTROY]">>\ <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<replace "#InventoryGoesHere">><<ShowInventory>><</replace>> <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <</button>> _desc </span>\ <</capture>>\ <<elseif $ItemPoke.slot < 0>>\ <<capture _i>>\ <<if $ItemPoke.tooleffect is 6>>\ <<button "[-Use-]">> <<Use _i>>\ <</button>> _desc <<elseif $ItemPoke.tooleffect is 16>>\ <<button "[-Use-]">> <<Use _i>>\ <</button>> _desc <<elseif $ItemPoke.tooleffect is 7>>\ <<button "[-Use-]">> <<Use _i>>\ <</button>> _desc <<elseif ($ItemPoke.tooleffect is 10) or ($ItemPoke.tooleffect is 20)>>\ <<button "[-Eat-]">> <<if $GameState is "combat">>\ <<replace "#inverr">>Cannot eat during combat<</replace>> <<else>>\ <<set $WORLD.datapasser to "">>\ <<Use _i>>\ <<endif>>\ <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <</button>> _desc <<elseif ($ItemPoke.tooleffect is 11) or ($ItemPoke.tooleffect is 21)>>\ <<button "[Drink]">> <<if $GameState is "combat">>\ <<replace "#inverr">>Cannot drink non-potion items during combat<</replace>> <<else>>\ <<set $WORLD.datapasser to "">>\ <<Use _i>>\ <<endif>>\ <</button>> _desc <<elseif $ItemPoke.tooleffect is 12>>\ <<button "[Read ]">> <<Use _i>>\ <</button>> _desc <<elseif $ItemPoke.tooleffect is 13>>\ <<button "[Read ]">> <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <</button>> _desc (not implemented) <<elseif $ItemPoke.tooleffect is 15>>\ <<button "[Drink]">> <<set $WORLD.datapasser to "">>\ <<Use _i>> <</button>> _desc <<else>>\ <span class="grayb"><<button "[Equip]">><</button>></span> <<print _desc>> <<endif>>\ <</capture>>\ <<else>>\ <<set _slottype to $ItemPoke.slot>>\ <<if _slottype > -1>>\ <<capture _i, _slottype>>\ <<button "[Equip]">>\ <<if $GameState is "combat">>\ <<replace "#inverr">>Cannot change equipment during combat<</replace>> <<else>>\ <<DescribeItem $PC[$CC][$PCinven][_i]>>\ <<set _slotdesc to setup.bpptrtoname(_slottype, "formal")>>\ <<set _try to setup.getunequippedofslottype($CC, _slottype)>> <<if _try < 0>> <<replace "#inverr">>No <<print _slotdesc>> available<</replace>> <<else>> <<if $PC[$CC][$PCinven][_i][2] > 1>>\ <<set $PC[$CC][$PCbp][_try].equip to clone($PC[$CC][$PCinven][_i])>> <<set $PC[$CC][$PCbp][_try].equip[2] to 1>> <<set $PC[$CC][$PCinven][_i][2] to $PC[$CC][$PCinven][_i][2] -1>> <<else>>\ <<set $PC[$CC][$PCbp][_try].equip to $PC[$CC][$PCinven][_i]>> <<set $PC[$CC][$PCinven][_i] to [0,0,0,0]>> <<endif>>\ <<replace "#EquipmentGoesHere">><<ShowEquipment>><</replace>>\ <<replace "#InventoryGoesHere">><<ShowInventory>><</replace>>\ <<replace "#inverr">>Equipped to <<print _slotdesc>><</replace>> <<endif>>\ <<replace "#InvQty">><<ReportInvFullness>><</replace>>\ <<endif>>\ <</button>> _desc (<<print setup.bpptrtoname(_slottype, "formal")>>) <</capture>>\ <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if $DebugMode is true>>\ <hr>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ _1) <<print $PC[$CC][$PCinven][_i]>> <</for>>\ <<endif>>\ <</widget>>\ <<widget "EnchanterHelper">>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<capture _i>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<set _desc to $ItemPoke.fullname>>\ <<set _st to $ItemPoke.stackable>>\ <<if _desc neq "none">>\ <<if (_st is true) or ($ItemPoke.equippable is false)>>\ <span class="grayb"><<button "[Cannot]">><</button>></span> _desc <<elseif (_item[1] > 549) and (_item[1] < 560)>>\ <span class="grayb"><<button "[Cannot]">><</button>></span> _desc <<elseif $ItemPoke.slot > -1>>\ <<if $DebugMode>>(_item): <<endif>>\ <<button "[Select]">>\ <<set _asd to setup.ChangeButtonClass("foo","blueb")>>\ <<set $SelectedItem to _i>>\ <<replace "#Result">><</replace>>\ <<replace "#EnchantMe">>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<DescribeItem _item>>\ <<print $ItemPoke.fullname>>\ <</replace>>\ <</button>> _desc <<else>>\ <span class="grayb"><<button "[Cannot]">><</button>></span> _desc <<endif>>\ <<endif>>\ <</capture>>\ <</for>>\ <</widget>>\ <<widget "ShowStatsButtonsButtons">>\ <<if $CurrentStatsScreen is "Main">>\ <span class="greenb"><<button "[Main]">><<ShowPageMain>><</button>> | </span>\ <<else>>\ <<button "[Overview]">><<ShowPageOverview>><</button>> | \ <<endif>>\ <<if $CurrentStatsScreen is "Combat">>\ <span class="greenb"><<button "[Combat]">><<ShowPageCombat>><</button>> | </span>\ <<else>>\ <<button "[Overview]">><<ShowPageOverview>><</button>> | \ <<endif>>\ <<if $CurrentStatsScreen is "Statistics">>\ <span class="greenb"><<button "[Stats]">><<ShowPageStats>><</button>> | </span>\ <<else>>\ <<button "[Overview]">><<ShowPageOverview>><</button>> | \ <<endif>>\ <</widget>>\ <<widget "ShowPageMain">>\ <<replace "#StatsPortal">>\ <</replace>>\ <</widget>>\ <<widget "ShowPageOverview">>\ <<replace "#StatsPortal">>\ <</replace>>\ <</widget>>\ <<widget "ShowPageStats">>\ <<replace "#StatsPortal">>\ <</replace>>\ <</widget>>\ <<widget "ShowPageBody">>\ <<if $WORLD.Bodyview is 0>>\ <<UpdateMorphs>>\ @@color:Gold;Body@@ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.type is $BPhead>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@, \ <<set _sz to _bp.size>>\ <<set _c to _bp.hair>>\ <<if _sz > 23>>\ with long, voluminous _c hair, several feet in length <<elseif _sz > 17>>\ with very long _c hair, stretching _sz inches from your head. <<elseif _sz > 11>>\ with _sz inches of long _c hair, that drapes down your back. <<elseif _sz > 5>>\ with _c hair that brushes past your shoulders, at about _sz inches in length. <<elseif _sz > 3>>\ with _c hair, about _sz inches long. <<elseif _sz > 1>>\ with short _c hair, only _sz inches long. <<elseif _sz > 0>>\ with very short _c hair, only _sz inches long. <<else>>\ that's been shaved bald <<endif>>\ <<elseif _bp.type is $BPneck>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPback>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPchest>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPwield>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPhands>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPwaist>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPlegs>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPfeet>>\ <!-- hack should be better implemented -->\ <<if _bp.morph is "cow">>\ You have @@color:LightGreen;cow hooves@@ <<elseif _bp.morph is "horse">>\ You have @@color:Green;horse hooves@@ <<else>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<endif>>\ <<elseif _bp.type is $BPtentacle>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPring>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPstinger>>\ You have a @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@ <<elseif _bp.type is $BPtail>>\ <<if _bp.morph is "demon">>\ You have a @@color:Red;spiked demon tail@@ <<elseif _bp.morph is "cow">>\ You have a @@color:Orange;cow tail@@ <<else>>\ You have a @@color:Green;fluffy <<print _bp.morph>> tail@@ <<endif>>\ <<elseif _bp.type is $BPhorn>>\ <<if _bp.morph is "demon">>\ You have a pair of @@color:Red;demonic horns@@ <<elseif _bp.morph is "cow">>\ You have a pair of @@color:Orange;cow horns@@ <<else>>\ You have a pair of @@color:Yellow;horns@@ <<endif>>\ <<elseif _bp.type is $BPwings>>\ <<if _bp.morph is "demon">>\ You have a pair of @@color:Red;demon wings@@ <<else>>\ You have a pair of @@color:White;feathered angel wings@@ <<endif>>\ <<elseif _bp.type is $BPboobs>>\ <<elseif _bp.type is $BPpenis>>\ <<elseif _bp.type is $BPpussy>>\ <<else>>\ unrecognized body part: <<print setup.bpptrtoname(_bp.type, "casual")>> (_bp.type) <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Sex organs@@ <<set _OrganCount to 0>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <<if _bp.type is $BPpenis>>\ <<set _OrganCount to _OrganCount +1>>\ <<set _sz to _bp.size>>\ You have a <<print setup.GetMorphFormatted(_bp.morph)>> @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@. It is about <<print _bp.size / 10>> inches long. <<elseif _bp.type is $BPboobs>>\ <<set _OrganCount to _OrganCount +1>>\ <<set _sz to _bp.size>>\ <<set _cup to "You wear an A cup.">>\ <<if _sz > 999>>\ <<set _cup to "Your breasts are enormous">>\ <<elseif _sz > 799>>\ <<set _cup to "You wear a G cup.">>\ <<elseif _sz > 699>>\ <<set _cup to "You wear a F cup.">>\ <<elseif _sz > 599>>\ <<set _cup to "You wear a E cup.">>\ <<elseif _sz > 499>>\ <<set _cup to "You wear a DD cup.">>\ <<elseif _sz > 399>>\ <<set _cup to "You wear a D cup.">>\ <<elseif _sz > 299>>\ <<set _cup to "a You wear a C cup.">>\ <<elseif _sz > 199>>\ <<set _cup to "You wear a B cup.">>\ <<endif>>\ You have a <<print setup.GetMorphFormatted(_bp.morph)>> @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@., about <<print _sz>>cc in volume. <<print _cup>> \ <<elseif _bp.type is $BPpussy>>\ You have a <<print setup.GetMorphFormatted(_bp.morph)>> @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@. \ <<set _OrganCount to _OrganCount +1>>\ <<if _bp.virgin is true>>\ You are a virgin. <<else>>\ <<set _sz to _bp.size / 10>>\ <<if _sz > 10>>\ You're comfortably able to accomodate monster docks well in excess of _sz inches. It would take a horse to satisfy you. <<elseif _sz > 8>>\ You're can take cocks up unto the _sz inch range, which is quite large. <<elseif _sz > 6>>\ You're comfortable with dicks as much as _sz inches long. <<elseif _sz > 4>>\ You can only comfortably take dick up to _sz inches. Anything more than that is painful. <<else>>\ It is tiny, and only able to accomodate dicks up to _sz inches. <<endif>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _OrganCount is 0>>\ You have no sexual organs. <<endif>>\ <hr>\ @@color:Gold;Morphology@@ <<if $PC[$CC][$PCmorphQTY].human > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].human>> baseline human parts <<endif>>\ <<if $PC[$CC][$PCmorphQTY].bunny > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].bunny>> bunny parts, for +<<print $PC[$CC][$PCmorphQTY].bunny>> to hit with flirt attacks <<endif>>\ <<if $PC[$CC][$PCmorphQTY].cat > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].cat>> cat parts, for +<<print $PC[$CC][$PCmorphQTY].cat>> to damage with morph intrinsic attacks <<endif>>\ <<if $PC[$CC][$PCmorphQTY].fox > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].fox>> fox parts, for +<<print $PC[$CC][$PCmorphQTY].fox>> to hit with morph intrinsic attacks <<endif>>\ <<if $PC[$CC][$PCmorphQTY].wolf > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].wolf>> wolf parts, for +<<print $PC[$CC][$PCmorphQTY].wolf>> health <<endif>>\ <<if $PC[$CC][$PCmorphQTY].horse > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].horse>> horse parts, for +<<print $PC[$CC][$PCmorphQTY].horse * 2>> health <<endif>>\ <<if $PC[$CC][$PCmorphQTY].cow > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].cow>> cow parts, for +<<print $PC[$CC][$PCmorphQTY].cow * 2>> health <<endif>>\ <<if $PC[$CC][$PCmorphQTY].goblin > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].goblin>> goblin parts, for +<<print $PC[$CC][$PCmorphQTY].goblin>> flirt damage <<endif>>\ <<if $PC[$CC][$PCmorphQTY].slime > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].slime>> slime parts, causing you to take <<print $PC[$CC][$PCmorphQTY].slime * 2>>% less physical damage <<endif>>\ <<if $PC[$CC][$PCmorphQTY].insect > 0>>\ <!-- includes ant and scorpion -->\ You have <<print $PC[$CC][$PCmorphQTY].insect>> insect/arthropod parts, for +<<print $PC[$CC][$PCmorphQTY].insect * 2>> armor <<endif>>\ <<if $PC[$CC][$PCmorphQTY].hellhound > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].hellhound>> hellhound parts, for -<<print $PC[$CC][$PCmorphQTY].hellhound>> fire damage <<endif>>\ <<if $PC[$CC][$PCmorphQTY].dinosaur > 0>>\ <!-- includes hydra -->\ You have <<print $PC[$CC][$PCmorphQTY].dinosaur>> dinosaur parts, for +<<print $PC[$CC][$PCmorphQTY].dinosaur * 3>> health <<endif>>\ <<if $PC[$CC][$PCmorphQTY].spider > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].spider>> spider parts, for +<<print $PC[$CC][$PCmorphQTY].spider>> melee to-hit <<endif>>\ \ \ \ <<if $PC[$CC][$PCmorphQTY].harpy > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].harpy>> harpy parts, for (not implemented) <<endif>>\ <<if $PC[$CC][$PCmorphQTY].snake > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].snake>> reptile parts, for (not implemented) <<endif>>\ <<if $PC[$CC][$PCmorphQTY].tentacle > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].tentacle>> tentacle parts, for (not implemented) <<endif>>\ <<if $PC[$CC][$PCmorphQTY].demon > 0>>\ You have <<print $PC[$CC][$PCmorphQTY].demon>> demon parts, for (not implemented) <<endif>>\ <<else>>\ @@color:Gold;Body@@ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<set _bp to $PC[$CC][$PCbp][_i]>>\ <!-- hoof hack needs a better solution -->\ <<set _HoofHack to false>>\ <<if _bp.type is $BPfeet>>\ <<if (_bp.morph is "cow") or (_bp.morph is "horse")>>\ <<set _HoofHack to true>>\ You have a @@color:LightGreen;<<print _bp.morph>>@@ hooves\ <<endif>>\ <<endif>>\ <<if _HoofHack is false>>\ You have a <<print setup.GetMorphFormatted(_bp.morph)>> \ @@color:LightGreen;<<print setup.bpptrtoname(_bp.type, "casual")>>@@\ <<endif>>\ <<if _bp.type is $BPpenis>>\ <<set _sz to _bp.size>>\ It is about <<print _bp.size / 10>> inches long <<elseif _bp.type is $BPboobs>>\ <<set _sz to _bp.size>>\ <<set _cup to "You wear an A cup.">>\ <<if _sz > 999>>\ <<set _cup to "Your breasts are so enormous that you pretty much can't find bras that fit.">>\ <<elseif _sz > 799>>\ <<set _cup to "You wear a G cup.">>\ <<elseif _sz > 699>>\ <<set _cup to "You wear a F cup.">>\ <<elseif _sz > 599>>\ <<set _cup to "You wear a E cup.">>\ <<elseif _sz > 499>>\ <<set _cup to "You wear a DD cup.">>\ <<elseif _sz > 399>>\ <<set _cup to "You wear a D cup.">>\ <<elseif _sz > 299>>\ <<set _cup to "a You wear a C cup.">>\ <<elseif _sz > 199>>\ <<set _cup to "You wear a B cup.">>\ <<endif>>\ , about <<print _sz>>cc in volume. <<print _cup>>\ <<elseif _bp.type is $BPpussy>>\ <<if _bp.virgin is true>>\ You are a @@color:pink;virgin@@\ <<else>>\ <<set _sz to _bp.size / 10>>\ <<if _sz > 10>>\ You're comfortably able to accomodate monster docks well in excess of _sz inches. It would take a horse to satisfy you.\ <<elseif _sz > 8>>\ You're can take cocks up unto the _sz inch range, which is quite large.\ <<elseif _sz > 6>>\ You're comfortable with dicks as much as _sz inches long.\ <<elseif _sz > 4>>\ You can only comfortably take dick up to _sz inches. Anything more than that is painful.\ <<else>>\ It is tiny, and only able to accomodate dicks up to _sz inches.\ <<endif>>\ <<endif>>\ <<elseif _bp.type is $BPwings>>\ <<elseif _bp.type is $BPhorn>>\ <<elseif _bp.type is $BPtail>>\ <<elseif _bp.type is $BPhead>>\ <<set _sz to _bp.size>>\ <<set _c to _bp.hair>>\ <<if _sz > 23>>\ You have long, voluminous _c hair, several feet in length\ <<elseif _sz > 17>>\ You have veery long _c hair, stretching _sz inches from your head.\ <<elseif _sz > 11>>\ You have _sz inches of long _c hair, that drapes down your back.\ <<elseif _sz > 5>>\ Your _c hair brushes past your shoulders, at about _sz inches in length.\ <<elseif _sz > 3>>\ You have _c hair, about _sz inches long.\ <<elseif _sz > 1>>\ You have short _c hair, only _sz inches long.\ <<else>>\ You have very short _c hair, only _sz inches long.\ <<endif>>\ <<endif>><br>\ <</for>>\ <<endif>>\ <</widget>>\ <<widget "ShowAchPerms">>\ Achievements in this category grants rewards that are always active. <hr>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].show is "y">>\ <<if _MOO[_i].type is "perm">>\ <<if $Achievements[_i] > 0>>\ @@color:LightGreen;<<print _MOO[_i].name>>@@ <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>> Reward: <<print _MOO[_i].does>> <<else>>\ @@color:Gray;<<print _MOO[_i].name>>: (Locked) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>>@@ <<endif>>\ <br>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "ShowAchChargen">>\ These achievements unlock new race/sex/class options during character creation <hr>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].show is "y">>\ <<set _a to _MOO[_i].type>>\ <<if (_a is "class") or (_a is "sex")>>\ <<if $Achievements[_i] > 0>>\ @@color:LightGreen;<<print _MOO[_i].name>>@@ <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>> Reward: <<print _MOO[_i].does>> <<else>>\ @@color:Gray;<<print _MOO[_i].name>>: (Locked) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>>@@ <<endif>>\ <br>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "ShowAchPerks">>\ These achievements unlock perks at character creation <hr>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].show is "y">>\ <<if _MOO[_i].type is "perk">>\ <<if $Achievements[_i] > 0>>\ @@color:LightGreen;<<print _MOO[_i].name>>@@ <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>> Reward: <<print _MOO[_i].does>> <<else>>\ @@color:Gray;<<print _MOO[_i].name>>: (Locked) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>>@@ <<endif>>\ <br>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "ShowAchPerkPoints">>\ These achievements will grant more perk points at character creation <hr>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].show is "y">>\ <<if _MOO[_i].type is "perkpoints">>\ <<if $Achievements[_i] > 0>>\ @@color:LightGreen;<<print _MOO[_i].name>>@@ <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>> Reward: <<print _MOO[_i].does>> <<else>>\ @@color:Gray;<<print _MOO[_i].name>>: (Locked) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>>@@ <<endif>>\ <br>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "ShowAchHighestLevels">>\ Your highest level retired as each class grants unique bonuses to all characters <hr>\ <<for _i to 0; _i < _MOO.length; _i++>>\ <<if _MOO[_i].show is "y">>\ <<if _MOO[_i].type is "highest">>\ <<if $Achievements[_i] > 0>>\ @@color:LightGreen;<<print _MOO[_i].name>>@@ (Level: $Achievements[_i]) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>> Reward: <<print _MOO[_i].does>> <<else>>\ @@color:Gray;<<print _MOO[_i].name>>: (Locked) <<if $DebugMode is true>>(Dev note: <<print _MOO[_i].note>>)<<endif>> Unlock: <<print _MOO[_i].spoil>>@@ <<endif>>\ <br>\ <<endif>>\ <<endif>>\ <</for>>\ <</widget>>\ <<widget "StatsScreenAchievementCheck">>\ <<set _StatsTwelve to 0>>\ <<set _StatsTwenty to false>>\ <<for _AchCheck to 7; _AchCheck < 12; _AchCheck++>>\ <<if $PC[$CC][_AchCheck] > 19>>\ <<set _StatsTwelve to _StatsTwelve +1>>\ <<set _StatsTwenty to true>>\ <<elseif $PC[$CC][_AchCheck] > 11>>\ <<set _StatsTwelve to _StatsTwelve +1>>\ <<endif>>\ <</for>>\ <<replace "#statsinfo">>\ <<if _StatsTwelve is 5>>\ <<AwardAchievement "Jack of All Stats">>\ <<endif>>\ <<if _StatsTwenty is true>>\ <<AwardAchievement "Genetic Lottery">>\ <<endif>>\ <<if $PC[$CC][$PClevel] > 9>>\ <<AwardAchievement "Power Leveler">>\ <<endif>>\ <<if $PC[$CC][$PChpmax] > 199>>\ <<AwardAchievement "Guardian">>\ <<endif>>\ <</replace>>\ <</widget>>\ <<widget "ShowHelpControls">>\ @@color:Gold;Save often!@@ Remember to save your game! <hr>\ @@color:Gold;Help! I found bug and the game is messed up!@@ In the event of a game-ending bug, Glinda the rescue fairy is ready to assist. Click on "I'm stuck" on the sidebar. <hr>\ @@color:Gold;Game controls:@@ Town navigation is via mouse. Click on the location you want to visit. Movement outside of town is controlled by WASD: * W - north * D - east * S - south * A - west You can usually access the menu options on the sidebar via keyboard shortcuts: * Status Screen: Z * Inventory: I * Examine Self: X * Spellbook: B * Unlocks: U Escape will close menu overlays. Spacebar serves as both "continue" and as a means of backing out of non-crucial areas and menus like stores. Important choices will generally be selected via numbers Combat additionally makes use of Q,W,E for the spell column once you've learned magic, and F and R can be used to flirt and run. Spells available for combat can be selected from the spellbook. Note that neither equipment nor active spells can be changed once combat has started, but you can use certain items like potions from the inventory menu. <</widget>>\ <<widget "ShowHelpTips">>\ @@color:LightGreen;Very early on@@ <<Bullet>> Don't be afraid of losing battles. Most transformations will help you. <<Bullet>> Explore every building. <<Bullet>> //Important!// If you can't find the church, your screen may be too small to show the entire map. Mobile compatibility is on the development wishlist, but for now try adjusting your zoom to see further on the right edge of the map. <<Bullet>> //Do guild quests!// It's the center doorway on the north end of town <<Bullet>> Tf you're desperate for money, try picking up an axe to cut down trees. You can sell them in bulk at the lumber mill on the south end of town <<Bullet>> When in doubt, //reincarnate//. Reincarnation is a crucial game mechanic. Learn how it works. @@color:LightGreen;Slightly less early@@ <<Bullet>> Focus on unlocking classes and building up reincarnation points and permanent rewards. It's much easier to become stronger this way than by simply grinding levels. <<Bullet>> There's a slightly secret way to pass equipment and gold between characters. Once you unlock it, you'll never need to start with nothing again. <</widget>> <<widget "AvatarShowHuman">>\ <<ShowAvatar "Human" 100>>\ <<ShowAvatar "Human" 101>>\ <<ShowAvatar "Human" 102>>\ <<ShowAvatar "Human" 103>>\ <<ShowAvatar "Human" 104>>\ <<ShowAvatar "Human" 105>>\ <<ShowAvatar "Human" 106>>\ <<ShowAvatar "Human" 107>>\ <</widget>>\ <<widget "AvatarShowAnthro">>\ <<ShowAvatar "Anthro" 100>>\ <<ShowAvatar "Anthro" 101>>\ <<ShowAvatar "Anthro" 102>>\ <<ShowAvatar "Anthro" 103>>\ <<ShowAvatar "Anthro" 104>>\ <<ShowAvatar "Anthro" 105>>\ <<ShowAvatar "Anthro" 106>>\ <</widget>>\ <<widget "AvatarShowAnimal">>\ <<ShowAvatar "Animal" 100>>\ <<ShowAvatar "Animal" 101>>\ <<ShowAvatar "Animal" 102>>\ <<ShowAvatar "Animal" 103>>\ <</widget>>\ <<widget "AvatarShowDemon">>\ <<ShowAvatar "Demon" 100>>\ <</widget>>\ <<widget "AvatarShowGoblin">>\ <<ShowAvatar "Goblin" 100>>\ <<ShowAvatar "Goblin" 101>>\ <</widget>>\ <<widget "AvatarShowMonster">>\ <<ShowAvatar "Monster" 100>>\ <</widget>>\ <<widget "AvatarShowSlime">>\ <<ShowAvatar "Slime" 100>>\ <</widget>>\ <<widget "ShowAvatar">>\ <<set _SAa to $args[0]>>\ <<set _SAb to $args[1]>>\ <<set _SAp to $AvatarPath + _SAa + _SAb + ".png">>\ <<capture _SAa _SAb>>\ <<link [img[_SAp]]>> <<set $PC[$CC][$PCavatar] to [_SAa, _SAb]>> <<set _SAp to $AvatarPath + _SAa + _SAb + ".png">>\ <<replace "#CapAvatar">><img @src="_SAp" style="width:200px"><</replace>>\ <</link>>\ <</capture>>\ <</widget>>\ <<widget "ClassInfo">>\ <<set _CINF to _args[0]>>\ <<if _CINF is "peasant">>\ @@color:Gold;Peasant@@ @@color:LightGreen;Class bonus:@@ +1 hp per level @@color:LightGreen;Achievement bonus:@@ +1 hp per highest retired level @@color:LightGreen;Level 7 ability:@@ * None @@color:LightGreen;Starting equipment:@@ * Pitchfork * Basic clothes <<elseif _CINF is "lumberjack">>\ @@color:Gold;Lumberjack@@ @@color:LightGreen;Class bonus:@@ +1 damage with axes per level @@color:LightGreen;Achievement bonus:@@ +5 to-hit with axes per highest retired level @@color:LightGreen;Unlocked by:@@ Completing a construction project @@color:LightGreen;Class unique effect:@@ * +1 to tree-cutting power @@color:LightGreen;Level 7 ability:@@ * Gain twice as much wood when cutting trees @@color:LightGreen;Starting equipment:@@ * Hatchet * Basic clothes <<elseif _CINF is "prostitute">>\ @@color:Gold;Prostitute@@ @@color:LightGreen;Class bonus:@@ +1 damage with flirt attacks per level @@color:LightGreen;Achievement bonus:@@ -1 target will per highest retired level when flirting @@color:LightGreen;Unlocked by:@@ 5 flirt victories @@color:LightGreen;Class unique effect:@@ * Gain xp from sex @@color:LightGreen;Level 7 ability:@@ * All lust damage taken is reduced in half @@color:LightGreen;Starting equipment:@@ * Stripper gear * Growth formula <<elseif _CINF is "warrior">>\ @@color:Gold;Warrior@@ @@color:LightGreen;Class bonus:@@ +10 to-hit with weapons per level @@color:LightGreen;Achievement bonus:@@ +5 to-hit with weapons per highest retired level @@color:LightGreen;Unlocked by:@@ Deliver 20 or more damage in a single attack with a weapon @@color:LightGreen;Level 7 ability:@@ * Riposte: automatically deliver a quick counterattack after every non-special physical attack received @@color:LightGreen;Starting equipment:@@ * Claymore * Medium shield * Hauberk <<elseif _CINF is "scholar">>\ @@color:Gold;Scholar@@ @@color:LightGreen;Class bonus:@@ Gain +1 xp per level from combat @@color:LightGreen;Achievement bonus:@@ -1 leveling xp requirements per highest retired level @@color:LightGreen;Unlocked by:@@ Learn any spell @@color:LightGreen;Level 7 ability:@@ * When reading spellbooks, gain 2 spell levels instead of 1 @@color:LightGreen;Starting equipment:@@ * Basic clothing <<elseif _CINF is "priest">>\ @@color:Gold;Priest@@ @@color:LightGreen;Class bonus:@@ +1 spell healing per level @@color:LightGreen;Achievement bonus:@@ +1 spell healing per highest retired level Unlocked by: Accumulate 100 total spell healing @@color:LightGreen;Class unique effect:@@ * Holy symbols are twice as effective @@color:LightGreen;Level 7 ability:@@ * Heal spells also cure poison and bleed effects @@color:LightGreen;Starting spell:@@ * Heal @@color:LightGreen;Starting equipment:@@ <<elseif _CINF is "rogue">>\ @@color:Gold;Rogue@@ @@color:LightGreen;Class bonus:@@ 5% chance per level to dodge power moves @@color:LightGreen;Achievement bonus:@@ +1 gold found per highest retired level after combat with monsters that carry gold @@color:LightGreen;Unlocked by:@@ Evade 3 tower traps in a single lifetime @@color:LightGreen;Class unique effect:@@ * All traps and locks are treated as if generated 3 levels lower @@color:LightGreen;Level 7 ability:@@ * ??? @@color:LightGreen;Starting equipment:@@ * Lockpicks * Basic clothes <<elseif _CINF is "mage">>\ @@color:Gold;Mage@@ @@color:LightGreen;Class bonus:@@ +1 max mana per level @@color:LightGreen;Achievement bonus:@@ +1 max mana per highest retired level @@color:LightGreen;Unlocked by:@@ Learning every spell on the same character @@color:LightGreen;Starting spell:@@ * Firebolt @@color:LightGreen;Level 7 ability:@@ * Once per sleep, can restore mana to full @@color:LightGreen;Starting equipment:@@ <<elseif _CINF is "barbarian">>\ @@color:Gold;Barbarian@@ @@color:LightGreen;Class bonus:@@ +1 damage with morph intrinsic attacks per class level @@color:LightGreen;Achievement bonus:@@ +5% to hit with morph intrinics attacks per highest retired level @@color:LightGreen;Unlocked by:@@ Defeating a tower monster while naked, without using magic @@color:LightGreen;Class unique effect:@@ * Damage absorption: takes -1 damage from all physical attacks @@color:LightGreen;Level 7 ability:@@ * Claw attacks apply a bleed effect @@color:LightGreen;Starting equipment:@@ * A selection of raw meat <<elseif _CINF is "monk">>\ @@color:Gold;Monk@@ @@color:LightGreen;Class bonus:@@ Every empty equipment slot gives +1 defense per class level @@color:LightGreen;Achievement bonus:@@ +5 defense per highest retired level @@color:LightGreen;Unlocked by:@@ Defeating a tower monster while barehanded, without using magic @@color:LightGreen;Level 7 ability:@@ * Chance to fully dodge non-special physical attacks @@color:LightGreen;Starting equipment:@@ * None * No money <<elseif _CINF is "ninja">>\ @@color:Gold;Ninja@@ @@color:LightGreen;Class bonus:@@ Gain 1% chance per level to critical strike with weapon attacks for double damage @@color:LightGreen;Achievement bonus:@@ @@color:LightGreen;Unlocked by:@@ One-shot a tower monster before it can attack, without using magic @@color:LightGreen;Class unique effects:@@ * Can sneak past encounters of lower level ?Increased chance to succesfully run from combat? @@color:LightGreen;Level 7 ability:@@ * @@color:LightGreen;Starting equipment:@@ * Katana * Ninja uniform <<elseif _CINF is "paladin">>\ @@color:Gold;Paladin@@ @@color:LightGreen;Class bonus:@@ Gain willpower equal to class level @@color:LightGreen;Achievement bonus:@@ ??? @@color:LightGreen;Unlocked by:@@ Reach level 7 while still a virgin, having previously reached level 7 as both warrior and priest. @@color:LightGreen;Class unique effect:@@ * Immune to transformation @@color:LightGreen;Level 7 ability:@@ * Once per adventure, a blow that reduces health to zero will instead restore health to 50%, resets on visit to town ?Gain immunity to poison? @@color:LightGreen;Starting spells:@@ * Heal * Light @@color:LightGreen;Starting equipment:@@ * Holy symbol * Warhammer * Tower shield * Hauberk <<elseif _CINF is "guardian">>\ @@color:Gold;Guardian@@ @@color:LightGreen;Class bonus:@@ +1 damage absorption per level @@color:LightGreen;Achievement bonus:@@ Gain +2 health and defense per highest retired guardian level @@color:LightGreen;Unlocked by:@@ Reach 200 maximum health @@color:LightGreen;Starting spell:@@ * Armor @@color:LightGreen;Level 7 ability:@@ * Gain double armor effect from shields @@color:LightGreen;Starting equipment:@@ * Tower shield * Hauberk <<else>>\ Error in ClassInfo: _CINF <<endif>>\ <</widget>>\ <<widget "ShowHelpClasses">>\ <<set _HClist to ["peasant","lumberjack","prostitute","warrior","scholar","priest","rogue","mage","barbarian","monk","guardian"]>>\ <<set _HCi to 0>>\ <<capture _HCi>>\ <<for _HCi to 0; _HCi < _HClist.length - 1; _HCi++>>\ <<set _TUP to "[" + _HClist[_HCi] + "]">>\ <<button _TUP>>\ <<replace "#HelpClassInfo">>\ <<ClassInfo _HClist[_HCi]>>\ <</replace>>\ <</button>> | \ <</for>>\ <<set _ASD to "[" + _HClist[_HClist.length -1] + "]">>\ <<button _ASD>>\ <<replace "#HelpClassInfo">>\ <<set _ASD to _HClist[_HClist.length -1]>>\ <<ClassInfo _ASD>>\ <</replace>>\ <</button>> <</capture>>\ <span id="HelpClassInfo"></span> <</widget>>\ <<widget "ShowHelpTransformation">>\ @@color:Gold;There are three sources of body transformation:@@ @@color:LightGreen;Sex@@ When you //lose// a fight, most monsters will try to rape you. Sex following defeat will generally move you one step closer towarrds the monster's preferred partner. Generally this will be their same monster type, and of whatever sex they have the parts to interact with. For example, sex with a male goblin will move you towards becoming a female goblin. Sex with a female minotaur will move you towards becoming a male minotaur. And hermaphrodites, being interesting in both sexes, will transform you in whatever sexual direction strikes their fancy. Sex after winning a fight is (mostly) safe and will generally not transform you. @@color:LightGreen;Consumables@@ There are three types of transforming consumables: meat, semen, and breast milk. * Semen will transform you towards becoming a male of the monster type that it came from. * Milk will transform you towatrds becoming a female of the monster type that it came from. * Meat will make you more like the monster type, but will //not// affect sex at all. @@color:LightGreen;Traps and special events@@ There exist a number of specific events that can result in transformation. Most notably, there is a trap that does this. These events will tend to be "anything goes" types of affairs. @@color:LightGreen;Simple way to think about it@@ * Transformations from sex make you more like whatever the monster wants to have sex with * Transformations from consumables make you more ilke whatever produced the consumable * Transformations from traps are random, and could be anything. @@color:LightGreen;Special considerations for hybrid types@@ Some monsters are chimera. For example, a centaur is a human/horse chimera. A hippogriff is a horse/eagle chimera. Sex with chimera will move you towards becoming like their type, but consumables from them can be specific to one of their types. When in doubt, pay attention to the descripion of the consumables. For example, a minotaur is half-human, half-cow. If a consumable says "human" then it will make you more human, which probably means gaining human parts. if it says "cow" then it will make you more like a cow, which probably means gaining cow parts. But if it says //minotaur// it will make you more like a minotaur, which could mean a transition towards either human //or// cow parts. <</widget>>\ <<widget "ShowHelpFAQ">>\ @@color:Gold;What does prayer do?@@ Praying reduces the effectiveness of flirt attacks against you by directly reducing their damage. For example, if a flirt attack lands for 10 lust damage and you have 5 prayer stacks built up you'll only take 5 damage. Build up enough stacks and you can become effectively immune to flirt attacks. But it might take several rounds to do this, and that's time that you could have spent delivering damage yourself. It also requires equipping a holy symbol in a wield slot rather than a weapon or shield. On the other hand, with prayer you might be able to put fewer points into willpower. Priests pray at double effectiveness. In some rare instances, prayer can result in direct damage to certain monsters. @@color:Gold;What's the math behind flirt attacks?@@ (Last updated: build 23.7.01) @@color:LighGreen;Your flirt attack to-hit is:@@ * Your 'Flirt Power' for the current target, as shown in stats, computed based on compatible body parts * Plus the number of body morphs you have that match the morph of your target (easier to flirt with a human if you're a human, etc.) * Plus your total 'sexy' bonus from equipment * Plus your current level, if a Prostitute * Plus any to-hit bonuses from morphs, (bunny for example) * Minus your current Praying status effect * Plus a random number from 1-10 If this total if greater that the target's willpower, your flirt is successful @@color:LighGreen;Your flirt damage is:@@ Base damage is determined by generating a random number from 1 to your Total Flirt Power for the current target, then modified as followed: * Plus your current level, if a Prostitute * Plus any damage bonuses from morphs, (goblin for example) * Minus your current Praying status effect * Minus any unique monster damage-reducing effects <hr>\ <</widget>><span id="KeypSpace">\ <<link "space) close window">> <<script>> Dialog.close(); <</script>> <</link>>\ </span>\ \ <<set _StatsTwelve to 0>>\ <<set _StatsTwenty to false>>\ <<for _AchCheck to 7; _AchCheck < 12; _AchCheck++>>\ <<if $PC[$CC][_AchCheck] > 19>>\ <<set _StatsTwelve to _StatsTwelve +1>>\ <<set _StatsTwenty to true>>\ <<elseif $PC[$CC][_AchCheck] > 11>>\ <<set _StatsTwelve to _StatsTwelve +1>>\ <<endif>>\ <</for>>\ <<if _StatsTwelve is 5>>\ <<AwardAchievement "Jack of All Stats">>\ <<endif>>\ <<if _StatsTwenty is true>>\ <<AwardAchievement "Genetic Lottery">>\ <<endif>>\ \ <hr>\ \ <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>>\ \ <<UpdateMorphs>>\ @@color:Gold;<<print $PC[$CC][$PCname]>>@@ <<set _job to setup.PtrToClass($PC[$CC][$PCclass])>>\ <<print $PC[$CC][$PCsex]>> <<print $PC[$CC][$PCmorph]>> _job <<set _lev to $PC[$CC][$PClevel]>>\ <<set _xp to $PC[$CC][$PCxp]>>\ <<set _xpneed to setup.XpNeeded($PC[$CC][$PClevel])>>\ Level: _lev, _xp/_xpneed experience <hr>\ <<if $PC[$CC][$PCunspentPoints] > 0>>\ @@color:Gold;Attributes@@ <span id="unspentpoints">Available points: <<print $PC[$CC][$PCunspentPoints]>></span> <<button "[+]" "ViewStats">>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCstr] to $PC[$CC][$PCstr] + 1>>\ <<replace "#unspentpoints">><<if $PC[$CC][$PCunspentPoints] > 0>>Available points: <<print $PC[$CC][$PCunspentPoints]>><<endif>><</replace>> <</button>> @@color:LightGreen;Strength :@@ <<print $PC[$CC][$PCstr]>> <<button "[+]" "ViewStats">>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCdex] to $PC[$CC][$PCdex] + 1>>\ <<replace "#unspentpoints">><<if $PC[$CC][$PCunspentPoints] > 0>>Available points: <<print $PC[$CC][$PCunspentPoints]>><<endif>><</replace>> <</button>> @@color:LightGreen;Dexterity :@@ <<print $PC[$CC][$PCdex]>> <<button "[+]" "ViewStats">>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCcon] to $PC[$CC][$PCcon] + 1>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] + $PC[$CC][$PClevel]>>\ <<set $PC[$CC][$PChpmax] to $PC[$CC][$PChpmax] + $PC[$CC][$PClevel]>>\ <<replace "#unspentpoints">><<if $PC[$CC][$PCunspentPoints] > 0>>Available points: <<print $PC[$CC][$PCunspentPoints]>><<endif>><</replace>> <<run Health2($PC[$CC][$PChpcur], $PC[$CC][$PChpmax], "hzhealthbar", true)>>\ <</button>> @@color:LightGreen;Toughness :@@ <<print $PC[$CC][$PCcon]>> <<button "[+]" "ViewStats">>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCint] to $PC[$CC][$PCint] + 1>>\ <<set $PC[$CC][$PCmanacur] to $PC[$CC][$PCmanacur] + ($PC[$CC][$PClevel] * 10)>>\ <<set $PC[$CC][$PCmanamax] to $PC[$CC][$PCmanamax] + ($PC[$CC][$PClevel] * 10)>>\ <<replace "#unspentpoints">><<if $PC[$CC][$PCunspentPoints] > 0>>Available points: <<print $PC[$CC][$PCunspentPoints]>><<endif>><</replace>> <</button>> @@color:LightGreen;Intellect :@@ <<print $PC[$CC][$PCint]>> <<button "[+]" "ViewStats">>\ <<set $PC[$CC][$PCunspentPoints] to $PC[$CC][$PCunspentPoints] - 1>>\ <<set $PC[$CC][$PCwil] to $PC[$CC][$PCwil] + 1>>\ <<set $PC[$CC][$PChornycur] to $PC[$CC][$PChornycur] + 10>>\ <<set $PC[$CC][$PChornymax] to $PC[$CC][$PChornymax] + 10>>\ <<run Health2($PC[$CC][$PChornycur], $PC[$CC][$PChornymax], "hzhornybar", true)>>\ <<replace "#unspentpoints">><<if $PC[$CC][$PCunspentPoints] > 0>>Available points: <<print $PC[$CC][$PCunspentPoints]>><<endif>><</replace>> <</button>> @@color:LightGreen;Willpower :@@ <<print $PC[$CC][$PCwil]>> <<else>>\ @@color:Gold;Attributes@@ @@color:LightGreen;Strength :@@ <<print $PC[$CC][$PCstr]>> (<<DescribeStat $PCstr>>) @@color:LightGreen;Dexterity:@@ <<print $PC[$CC][$PCdex]>> (<<DescribeStat $PCdex>>) @@color:LightGreen;Toughness:@@ <<print $PC[$CC][$PCcon]>> (<<DescribeStat $PCcon>>) @@color:LightGreen;Intellect:@@ <<print $PC[$CC][$PCint]>> (<<DescribeStat $PCint>>) @@color:LightGreen;Willpower:@@ <<print $PC[$CC][$PCwil]>> (<<DescribeStat $PCwil>>) <<endif>>\ <hr>\ \ <<set _BestPeasant to setup.AchievementHandler("Best Peasant", "HAS?", -1)>>\ <<set _BestLumberjack to setup.AchievementHandler("Best Lumberjack", "HAS?", -1)>>\ <<set _BestBarbarian to setup.AchievementHandler("Best Barbarian", "HAS?", -1)>>\ <<set _BestWarrior to setup.AchievementHandler("Best Warrior", "HAS?", -1)>>\ <<set _BestProstitute to setup.AchievementHandler("Best Prostitute", "HAS?", -1)>>\ \ @@color:Gold;Offense@@ @@color:LightGreen;Weapon attacks@@ To-hit bonus from dexterity: <<FormatPosNeg $PC[$CC][$PCtohit] "%">> To-hit bonus from morphs: <<FormatPosNeg $PC[$CC][$PCmorphBONI].th "%">> <<set _str_mod to $PC[$CC][$PCstr] -10>>\ <<if _BestLumberjack > 0>>\ +<<print _BestLumberjack>> (with axes) from Best Lumberjack level achievement <<endif>>\ <<if _BestWarrior > 0>>\ +<<print _BestWarrior>> from Best Warrior level achievement <<endif>>\ Damage from strength: <<FormatPosNeg _str_mod>> @@color:LightGreen;Body attacks@@ To-hit bonus from dexterity: <<FormatPosNeg $PC[$CC][$PCtohit] "%">> <<set _THFM to $PC[$CC][$PCmorphBONI].th + $PC[$CC][$PCmorphBONI].bodyth>>\ To-hit bonus from morphs: <<FormatPosNeg _THFM "%">> <<if _BestBarbarian > 0>>\ +<<print _BestBarbarian>> from Best Barbarian level achievement <<endif>>\ <<set _str_mod to $PC[$CC][$PCstr] -10>>\ Damage from strength: <<FormatPosNeg _str_mod>> Damage from morphs: <<FormatPosNeg $PC[$CC][$PCmorphBONI].bodydam>> <<UpdateAC>>\ <<set _AcTotal to 0>>\ <<for _AcCycle to 0; _AcCycle < $PC[$CC][$PCac].length; _AcCycle++>>\ <<set _AcTotal to _AcTotal + $PC[$CC][$PCac][_AcCycle]>>\ <</for>>\ <<set _AcTotal to $PC[$CC][$PCac][0] + $PC[$CC][$PCac][1]>>\ @@color:Gold;Defense@@ Defense from armor: <<FormatPosNeg $PC[$CC][$PCac][1] "%">> Defense from stats: <<FormatPosNeg $PC[$CC][$PCac][0] "%">> Defense from morphs: <<FormatPosNeg $PC[$CC][$PCac][2] "%">> <<if $PC[$CC][$PCac][3] > 0>>\ Defense from magic: <<FormatPosNeg $PC[$CC][$PCac][3] "%">> <<endif>>\ Total melee defense: <<FormatPosNeg _AcTotal "%">> Damage absorption: <<GetPlayerAbsorption "show">> Magic resistance: <<print $PC[$CC][$PCwil]>> <<Recalc>>\ @@color:Gold;Maximum Health@@ (Level * toughness) = <<print $PC[$CC][$PClevel]>> * <<print $PC[$CC][$PCcon]>> = <<print $PC[$CC][$PClevel] * $PC[$CC][$PCcon]>> <<if $PC[$CC][$PCmorphQTY].wolf > 0>>\ + <<print $PC[$CC][$PCmorphQTY].wolf>> from wolf morphs <<endif>>\ <<if $PC[$CC][$PCmorphQTY].horse > 0>>\ + <<print $PC[$CC][$PCmorphQTY].horse * 2>> from horse morphs <<endif>>\ <<if $PC[$CC][$PCmorphQTY].cow > 0>>\ + <<print $PC[$CC][$PCmorphQTY].cow * 2>> from cow/minotaur morphs <<endif>>\ <<if _BestPeasant > 0>>\ +<<print _BestPeasant>> from Best Peasant level achievement <<endif>>\ Total maximum health: <<print $PC[$CC][$PChpmax]>> @@color:Gold;Flirt power@@ <<set _gfp to setup.GetFlirtPower("none")>>\ @@color:LightGreen;From penis:@@ <<print _gfp[1]>> @@color:LightGreen;From boobs:@@ <<print _gfp[2]>> @@color:LightGreen;From pussy:@@ <<print _gfp[3]>> @@color:LightGreen;From equip:@@ <<print _gfp[4]>> @@color:LightGreen;From morphs:@@ <<print $PC[$CC][$PCmorphBONI].flirtth>> <<set _tvM to (_gfp[2] * 10) + (_gfp[3] * 10) + (_gfp[4] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10)>>\ <<set _tvF to (_gfp[1] * 10) + (_gfp[4] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10)>>\ <<set _tvH to (_gfp[1] * 10) + (_gfp[2] * 10) + (_gfp[3] * 10) + (_gfp[4] * 10) + ($PC[$CC][$PCmorphBONI].flirtth * 10)>>\ <<set _tvM to Math.trunc(_tvM) / 10>>\ <<set _tvF to Math.trunc(_tvF) / 10>>\ <<set _tvH to Math.trunc(_tvH) / 10>>\ @@color:LightGreen;Total vs males:@@ _tvM @@color:LightGreen;Total vs females:@@ _tvF @@color:LightGreen;Total vs herms:@@ _tvH @@color:LightGreen;Bonus flirt damage vs all:@@ <<print $PC[$CC][$PCmorphBONI].flirtdam>> <<if _job is "prostitute">>\ +5% to all flirt actions, both good and bad (prostitute class bonus) <<endif>>\ <<if _BestProstitute > 0>>\ +<<print _BestProstitute>> (not implemented) from Best Prostitute level achievement <<endif>>\ @@color:Gold;Perks@@ <<if $PC[$CC][$PCperks].length <1>>\ None <<else>>\ <<for _i to 0; _i < $PC[$CC][$PCperks].length; _i++>>\ [<<print $PC[$CC][$PCperks][_i]>>] \ <</for>> <<endif>>\ @@color:Gold;Sex stats@@ <<set _vstats to 0>>\ <<if $PC[$CC][$PCsexACTS].malevirgin is true>>\ <<else>>\ <<set _vstats to 1>>\ <<endif>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin is true>>\ <<else>>\ <<set _vstats to _vstats +1>>\ <<endif>>\ <<set _f to $PC[$CC][$PCsexACTS]>>\ <<set _TechVirgin to _f.bjgiven + _f.bjreceived + _f.pussylickgiven + _f.pussylickreceived + _f.analgiven + _f.analreceived>>\ <<set _ShowFullStats to true>>\ <<if (_vstats is 0) and _TechVirgin is 0>>\ You are a beautiful, pristine virgin <<set _ShowFullStats to false>>\ <<elseif (_vstats is 0)>>\ You are still //technically// a virgin <<else>>\ <<if _vstats is 2>>\ You gave your male virginity to a $PC[$CC][$PCsexACTS].malevirgin You female virginity was taken by $PC[$CC][$PCsexACTS].femalevirgin <<else>>\ <<if $PC[$CC][$PCsexACTS].malevirgin neq true>>\ You gave your virginity to $PC[$CC][$PCsexACTS].malevirgin <<endif>>\ <<if $PC[$CC][$PCsexACTS].femalevirgin neq true>>\ Your virginity was taken by $PC[$CC][$PCsexACTS].femalevirgin <<endif>>\ <<endif>>\ <<endif>>\ <<if _ShowFullStats is true>>\ <<if $PC[$CC][$PCsexACTS].bjgiven > 0>>\ Blowjobs given: <<print $PC[$CC][$PCsexACTS].bjgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].bjreceived > 0>>\ Blowjobs received: <<print $PC[$CC][$PCsexACTS].bjreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].pussylickgiven > 0>>\ Pussies licked: <<print $PC[$CC][$PCsexACTS].pussylickgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].pussylickreceived > 0>>\ Times your pussy has been licked: <<print $PC[$CC][$PCsexACTS].pussylickreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].vaginalreceived > 0>>\ Fucked in the pussy: <<print $PC[$CC][$PCsexACTS].vaginalreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].vaginalgiven > 0>>\ Cummed in a pussy: <<print $PC[$CC][$PCsexACTS].vaginalgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].analgiven > 0>>\ Asses fucked: <<print $PC[$CC][$PCsexACTS].analgiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].analreceived > 0>>\ Fucked in the ass: <<print $PC[$CC][$PCsexACTS].analreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].semengiven > 0>>\ Total semen delivered: <<print $PC[$CC][$PCsexACTS].semengiven>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].semenreceived > 0>>\ Total semen received: <<print $PC[$CC][$PCsexACTS].semenreceived>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].milked > 0>>\ Total milked volume: <<print $PC[$CC][$PCsexACTS].milked>> <<endif>>\ <<if $PC[$CC][$PCsexACTS].scissored > 0>>\ Total vaginal scissoring: <<print $PC[$CC][$PCsexACTS].scissored>> <<endif>>\ <<endif>>\ @@color:Gold;Miscellaneous stats@@ @@color:LightGreen;Battles fought@@: $PC[$CC][$PCmisc].battles @@color:LightGreen;Battles lost@@: $PC[$CC][$PCmisc].battleslost @@color:LightGreen;Battles won@@: $PC[$CC][$PCmisc].battleswon @@color:LightGreen;Battles fled@@: $PC[$CC][$PCmisc].battlesfled @@color:LightGreen;Traps triggered@@: $PC[$CC][$PCmisc].traptrigger @@color:LightGreen;Traps avoided@@: $PC[$CC][$PCmisc].trapavoid @@color:LightGreen;Gold earned@@: $PC[$CC][$PCmisc].gold @@color:LightGreen;Deaths@@: $PC[$CC][$PCmisc].deaths @@color:Gold;Adventuring stats@@ @@color:LightGreen;Highest tower level@@: $PC[$CC][$PChtze] @@color:LightGreen;Highest forest level@@: $PC[$CC][$PChfze] <<set _NameList to ["bunny","cat","fox","wolf","horse","centaur","human","goblin","slime","spider","imp","hellhound","minotaur","drider","tentacle","demon","naga"]>>\ <<for _i to 0; _i < _NameList.length; _i++>>\ <<if $PC[$CC][$PCkills][_i] > 0>>\ @@color:LightGreen;<<print _NameList[_i].toUpperFirst()>> kills@@: <<print $PC[$CC][$PCkills][_i]>> <<endif>>\ <</for>><<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventpuddle.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Strange puddle@@ <<if $Dungeon[_pz][_px][_py][12] is 0>><!-- start state-->\ <<elseif $Dungeon[_pz][_px][_py][12] is 98>><!-- perma murky water->\ <<elseif $Dungeon[_pz][_px][_py][12] is 99>><!-- used-->\ The tile floor here is heavily eroded, with a few moist traces of liquid. <<else>>\ @@color:Red;Error in Event101: state <<print $Dungeon[_pz][_px][_py][12]>> is not recognized@@ <<endif>>\ <hr> <</replace>>\<<if $Mon.name.includes("Zehtalia")>>\ <<SimplePic "Zehtalia.png">>\ @@color:Yellow;Dungeon Boss: Zehtalia, Queen of the Spiders@@ <hr>\ Collapsing to the ground, Zehtalia walks over and stands with her massive spider abdomen above you. @@color:Red;Zehtalia@@: "REJOICE, MORTAL. YOU WILL NOW BE HOST TO MY NEWEST BROOD." As she descends on you, you feel a stabbing sensation in your stomach, then everything goes dark. <hr>\ @@color:Gold;You have died@@ <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Used as a living incubator by Zehtalia, Queen of Spiders">> <</link>>\ </span>\ <<elseif $Mon.name.includes("Neris")>>\ \ <!-- Important! -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>>\ \ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ You collapse to the ground, your fall somewhat softened by a pile of dust you don't recall standing in. Looking down, you see large portions of your body now missing, apparently having been consumed by the plague curse. As your vision goes dark, you feel Neris standing by your side, whispering softly. @@color:Red;Neris@@: "I forgive you," she soothes you. "Thank you for trying." <hr>\ @@color:Gold;You have died@@ <span id="KeypSpace">\ <<link "Press space to continue" "Death">> <<set $WORLD.diedby to "Killed by the plague curse">> <</link>>\ </span>\ <<else>>\ @@color:Red;Error: unrecognized boss: <<print $Mon.name>>\ <<link "Error recovery" "TownSquare">>\ <</link>>\ <<endif>>\ <<widget "CombatAttack">>\ <<set _ArrayReceived to $args[0]>>\ \ <<set _a to "CombatAttack received: " + _ArrayReceived + "<br>">><<AddToLog _a>>\ \ <<set _attacktype to _ArrayReceived[0]>>\ <<set _slot to _ArrayReceived[1]>>\ <<if _ArrayReceived[2].includes("shield")>>\ <<set _attacktype to "bash">>\ <<endif>>\ <<set _strmod to $PC[$CC][$PCstr] -10>>\ <<set _mindam to 1>>\ <<set _maxdam to 2>>\ <<set _th to $PC[$CC][$PCtohit]>>\ <<set _missmessage to "default miss">>\ <<set _hitmessage to "default attack">>\ <<set _absorbmessage to "default absorb">>\ <<set _endcombat to "normal">>\ <<set _heshe to "he">>\ <<if $Mon.sex is "female">>\ <<set _heshe to "she">>\ <<elseif $Mon.sex is "herm">>\ <<set _heshe to "it">>\ <<endif>>\ \ <<set _TheMon to "the " + $Mon.name + " ">>\ <<if $Mon.name.includes("Zehtalia")>>\ <<set _TheMon to "Zehtalia ">>\ <<endif>>\ \ \ <<set _GlobalSpellBonus to setup.AchievementHandler("Best Archmage", "HAS?", -1)>>\ \ <<if _attacktype is "body">>\ <<set _bp to $PC[$CC][$PCbp][_slot]>>\ <<set _attacktype to _bp.attacktype>>\ <<set _attackdesc to _bp.attackdesc>>\ <<set _th to random(1, 100) - $Mon.armor + $PC[$CC][$PCtohit]>>\ <<set _th to _th + $PC[$CC][$PCmorphBONI].bodyth>>\ <<if _th < 1>>\ <<set _Message to "You try to " + _attacktype + " " + _attackdesc + " at " + _TheMon>>\ <<else>>\ <<set _mindam to _bp.mindam>>\ <<set _maxdam to _bp.maxdam>>\ <<set _TD to random(_mindam, _maxdam) + _strmod + $PC[$CC][$PCmorphBONI].bodydam>>\ <<if _TD < 1>>\ <<set _Message to "You " + _attacktype + " " + _attackdesc + " at " + _TheMon + " but " + _heshe + " shrugs off the attack like it was nothing">>\ <<else>>\ <<set _m to "You " + _attacktype + " " + _attackdesc + " at " + _TheMon + " for " + _TD + " damage">>\ <<set $Mon.hpcur to $Mon.hpcur - _TD>>\ <<endif>>\ <<endif>>\ <<CombatLog _Message>>\ \ <<elseif _attacktype is "weapon">>\ <<set _bp to $PC[$CC][$PCbp][_slot]>>\ <<set _item to _bp.equip>>\ <<DescribeItem _item>>\ <<set _WeaponName to $ItemPoke.name>>\ <<set _AttackDesc to "attack with your">>\ <<set _AttackType to $ItemPoke.attacktype>>\ <<if _AttackType is "slash">>\ <<set _AttackDesc to "You swing your " + _WeaponName + " at " + _TheMon>> <<elseif _AttackType is "blunt">> <<set _AttackDesc to "You swing your " + _WeaponName + " at " + _TheMon>> <<elseif _AttackType is "cleave">> <<set _AttackDesc to "You swing your " + _WeaponName + " at " + _TheMon>> <<elseif _AttackType is "pierce">> <<set _AttackDesc to "You thrust your " + _WeaponName + " at " + _TheMon>> <<endif>>\ \ <<set _mindam to $ItemPoke.mindam>>\ <<set _maxdam to $ItemPoke.maxdam>>\ <<set _hitmessage to "You " + _attackdesc + $Mon.name>>\ <<set _missmessage to <<set _foo to either("hit","punch")>>\ <<set _th to random(1, 100) - $Mon.armor + $PC[$CC][$PCtohit] + $PC[$CC][$PCmorphBONI].th>>\ <<if _th < 1>>\ <<set _Message to "You " + _AttackDesc + $Mon.name + " but miss">>\ <<else>>\ <<set _mindam to _bp.mindam>>\ <<set _maxdam to _bp.maxdam>>\ <<set _TD to random(_mindam, _maxdam) + _strmod>>\ \ <<set _ResSuffix to "">>\ <<for _RES to 0; _RES < $Mon.resists.length; _RES++>> <<if _attacktype is $Mon.resists[0]>>\ <<set _TD to Math.trunc((_TD * 50) / $Mon.resists[1])>>\ <<set _ResSuffix to _ResSuffix + "() <<endif>> <</for>>\ \ <<if _TD < 1>>\ <<set _absorbmessage to _hitmessage + " but " + _heshe + " absorbs the blow for no effect">>\ <<set _Message to "You " + _attacktype + " " + _attackdesc + " at " + _TheMon + " but " + _heshe + " shrugs off the attack like it was nothing">>\ <<else>>\ <<set _m to "You " + _attacktype + " " + _attackdesc + " at " + _TheMon + " for " + _TD + " damage">>\ <<set $Mon.hpcur to $Mon.hpcur - _TD>>\ <<endif>>\ <<endif>>\ <<CombatLog _Message>>\ <<if _td > 19>>\ <<AwardAchievement "Warrior">>\ <<endif>>\ <<elseif _attacktype is "bash">>\ <<if $Mon.stunned < 0>>\ <<set _CombatMessage to _TheMon.toUpperFirst() + " @@color:Yellow;anticipates the blow and dodges@@">>\ <<else>>\ <<set _StunChance to random(-2, 2) + $PC[$CC][$PCstr]>>\ <<if $PC[$CC][$PClocation] is "tower">>\ <<set _StunChance to _StunChance - ($PC[$CC][$PCz] * 3)>>\ <<else>>\ <<set _StunChance to _StunChance - $PC[$CC][$PCfz]>>\ <<endif>>\ <<if _StunChance > 0>>\ <<if $Mon.name.includes("slime")>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;the slime absorbs the blow@@">>\ <<elseif $Mon.name.includes("tentacle")>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;the creature casually deflects it with a tentacle@@">>\ <<elseif $Mon.name.includes("Zehtalia")>>\ <<if $Mon.Powerup is 1>>\ <<set _CombatMessage to "You smash Zehtalia with your shield and @@color:Aqua;she stops screaming@@">>\ <<else>>\ <<set _CombatMessage to "You @@color:Aqua;smash Zehtalia with your shield@@">>\ <<endif>>\ <<set $Mon.Powerup to 0>>\ <<set $Mon.stunned to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<set $Mon.stunned to 1>>\ <<set _CombatMessage to "You @@color:Aqua;bash " + _TheMon + " with your shield@@, knocking " + $Mon.himher + " off balance">>\ <<endif>>\ <<else>>\ <<set _CombatMessage to "You swing your shield but @@color:Yellow;don't connect with enough force@@">>\ <<endif>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "firebolt">>\ <<if $PC[$CC][$PCmanacur] > 0>>\ <<set _MinDam to 1>>\ <<set _MaxDam to $PC[$CC][$PClevel] * $PC[$CC][$PCint]>>\ <<set _TD to random(_MinDam, _MaxDam) + _GlobalSpellBonus + $PC[$CC][$PCspellbook].firebolt>>\ <<set _CombatMessage to "You fling a firebolt at " + _TheMon>>\ <<if $Mon.name.includes("hellhound")>>\ <<set $Mon.hpcur to $Mon.hpcur + _td>>\ <<if ($Mon.hpcur +1) > $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _CombatMessage to "Your firebolt @@color:Red;heals the hellhound to full health!@@">>\ <<else>>\ <<set _CombatMessage to "Your firebolt @@color:Red;heals the hellhound@@ for " + TD + "damage!">>\ <<endif>>\ <<else>>\ <<set $Mon.hpcur to $Mon.hpcur - _TD>>\ <<endif>>\ <<ChangeStat $PCmanacur -1>>\ <<ShowMana>>\ <<else>>\ <<set _CombatMessage to "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _attacktype is "heal">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<set _HealEffect to $PC[$CC][$PClevel] + _GlobalSpellBonus + $PC[$CC][$PCspellbook].heal>> <<if ($PC[$CC][$PChpcur] + _HealEffect) gte $PC[$CC][$PChpmax]>>\ <<set _m to "You @@color:LightGreen;heal yourself to full!@@">>\ <<else>>\ <<set _m to "You @@color:LightGreen;heal yourself@@ for " + _HealEffect>>\ <<endif>>\ <<ChangeStat $PChpcur _HealEffect>>\ <<ShowHealth>>\ <<ChangeStat $PCmanacur -2>>\ <<ShowMana>>\ <<CombatLog _m>>\ <<if _HealEffect > ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<set _HealEffect to ($PC[$CC][$PChpmax] - $PC[$CC][$PChpcur])>>\ <<endif>>\ <<set $PC[$CC][$PCspellbook].totalheal to $PC[$CC][$PCspellbook].totalheal + _HealEffect>>\ <<if $PC[$CC][$PCspellbook].totalheal > 99>>\ <<AwardAchievement "Priest">>\ <<endif>>\ <<else>>\ <<CombatLog "You try to heal yourself, but @@color:Yellow;you're out of mana@@">>\ <<endif>>\ <<elseif _attacktype is "armor">>\ <<set _endcombat to "skip player">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<ChangeStat $PCmanacur -1>>\ <<ShowMana>>\ <<if setup.GetEffect("armor") > 0>>\ <<CombatLog "You cast armor, but that spell is already active">>\ <<else>>\ <<set _Armor to ($PC[$CC][$PClevel] * 10) + _GlobalSpellBonus + $PC[$CC][$PCspellbook].armor>>\ <<set _throwaway to setup.ApplyEffect("armor", _Armor)>>\ <!-- implement update active effects on caption -->\ <<set _m to "You gain @@color:Purple;" + _Armor + " armor@@ for the rest of this battle">>\ <<CombatLog _m>>\ <<endif>>\ <<else>>\ <<set _th to -99>>\ <<CombatLog "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<endif>>\ <<elseif _attacktype is "poison">>\ <<if $PC[$CC][$PCmanacur] > 1>>\ <<set _th to 1000>>\ <<set _td to $PC[$CC][$PCspellbook].poison + _GlobalSpellBonus>>\ <<set $Mon.poisoned to $Mon.poisoned + _td>>\ <<set _m to "You @@color:ForestGreen;poison the " + $Mon.name + "@@">>\ <<CombatLog _m>>\ <<ChangeStat $PCmanacur -1>>\ <<ShowMana>>\ <<else>>\ <<set _m to "You try to cast a spell, but @@color:Yellow;you're out of mana@@">>\ <<CombatLog _m>>\ <<endif>>\ <<elseif _attacktype is "run">>\ <<set _Webbed to setup.GetEffect("webbed")>>\ <<if _Webbed > 0>>\ <<CombatLog "The @@color:Yellow;webbing prevents you from running!@@">>\ <<MonsterTurn false>> <<else>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<set _FleeMessage to "You turn and " + either("run", "flee") + _TheMon.toUpperFirst() + " doesn't give chase.">>\ \ <<set _PlayerFlee to $PC[$CC][$PCdex] + ($PC[$CC][$PClevel] * 5)>>\ <<set _PlayerFlee to _PlayerFlee * ($PC[$CC][$PChpcur] / $PC[$CC][$PChpmax])>>\ <<set _MonsterChase to random(1,10) + $Mon.chase + $Mon.teased - $Mon.poisoned>>\ <<set _MonsterChase to _MonsterChase * ($Mon.hpcur / $Mon.hpmax)>>\ <<if ($PC[$CC][$PClocation] is "tower") and ($Dungeon[_pz][_px][_py][11] is 0)>><<else>>\ <<set _MonsterChase to 999>>\ <<set _FleeMessage to"You try to " + either("run","flee","run away") + " but " + _TheMon + either(" is tenacious!"," is determined to continue the fight!"," blocks your escape!")>> <<elseif $PC[$CC][$PClocation] is "forest">>\ <<set _MonsterChase to _MonsterChase -5>>\ <<endif>>\ <<if _PlayerFlee > _MonsterChase>>\ <<set _fleemess to "You turn and " + either("run", "flee") + _TheMon.toUpperFirst() + " doesn't give chase.">>\ <<CombatLog _FleeMessage>>\ <<set _endcombat to "yes">>\ <<else>>\ <<CombatLog _FleeMessage>>\ <<MonsterTurn false>> <<endif>>\ <<endif>>\ <<elseif _attacktype is "flirt">>\ <<set _flirtarray to setup.GetFlirtPower($Mon.morph)>>\ <<set _flirtpower to _flirtarray[0]>>\ <<if $Mon.sex is "male">>\ <<set _flirtpower to _flirtpower + _flirtarray[2] + _flirtarray[3]>>\ <<elseif $Mon.sex is "female">>\ <<set _flirtpower to _flirtpower + _flirtarray[1]>>\ <<else>>\ <<set _flirtpower to _flirtpower + _flirtarray[1] + _flirtarray[2] + _flirtarray[3]>>\ <<endif>>\ \ <<set _th to _flirtpower + $PC[$CC][$PCmorphBONI].flirtth - $Mon.resistflirt>>\ <!-- implement clothes bonus -->\ <<set _td to random(0, _flirtpower) + $PC[$CC][$PCmorphBONI].flirtdam>>\ \ <<if $PC[$CC][$PCsex] is "male">>\ <<set _frand to random(1,4)>>\ <<if _frand is 1>>\ <<set _hitmessage to "You wink suggestively at the " + $Mon.name>>\ <<elseif _frand is 2>>\ <<set _hitmessage to "You strike a pose and curl your biceps">>\ <<elseif _frand is 3>>\ <<set _hitmessage to "You point between your legs and whistle at the " + $Mon.name>>\ <<else>>\ <<set _hitmessage to "You give a winning smile to the " + $Mon.name>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " just rolls " + $Mon.hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<set _absorbmessage to _missmessage>>\ <<elseif $PC[$CC][$PCsex] is "female">>\ <<set _frand to random(1,4)>>\ <<if _frand is 1>>\ <<set _hitmessage to "You lick your lips at " + _TheMon>>\ <<elseif _frand is 2>>\ <<set _hitmessage to "You look away and pretend to accidentally jiggle your boobs">>\ <<elseif _frand is 3>>\ <<set _hitmessage to "You blow a kiss to " + _TheMon>>\ <<else>>\ <<set _hitmessage to "You squeeze your legs together and sigh longingly at " + _TheMon>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " just rolls " + _hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + $Mon.heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + $Mon.hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<set _absorbmessage to _missmessage>>\ <<else>>\ <<set _frand to random(1,8)>>\ <<if _frand is 1>>\ <<set _hitmessage to "You wink suggestively at + $Mon.name>>\ <<elseif _frand is 2>>\ <<set _hitmessage to "You strike a pose and curl your biceps">>\ <<elseif _frand is 3>>\ <<set _hitmessage to "You point between your legs and whistle at the " + $Mon.name>>\ <<elseif _frand is 4>>\ <<set _hitmessage to "You give a winning smile to the " + $Mon.name>>\ <<elseif _frand is 5>>\ <<set _hitmessage to "You lick your lips at the " + $Mon.name>>\ <<elseif _frand is 6>>\ <<set _hitmessage to "You look away and pretend to accidentally jiggle your boobs">>\ <<elseif _frand is 7>>\ <<set _hitmessage to "You blow a kiss to " + _TheMon>>\ <<else>>\ <<set _hitmessage to "You squeeze your legs together and sigh longingly at " + _TheMon>>\ <<endif>>\ <<set _frand to random(1,3)>>\ <<if _frand is 1>>\ <<set _missmessage to _hitmessage + ", but " + _heshe + " just rolls " + _hisher + " eyes at you">>\ <<set _hitmessage to _hitmessage + ". " + _heshe.toUpperFirst() + " is visibly aroused.">>\ <<elseif _frand is 2>>\ <<set _missmessage to _hitmessage + ", but " + _heshe + " doesn't seem interested.">>\ <<set _hitmessage to _hitmessage + ". " + _heshe.toUpperFirst() + " is definitely interested.">>\ <<else>>\ <<set _missmessage to _hitmessage + ", but " + _heshe + " is unimpressed.">>\ <<set _hitmessage to _hitmessage + ". " + _hisher.toUpperFirst() + " cheeks flush red.">>\ <<endif>>\ <<set _absorbmessage to _missmessage>>\ <<endif>>\ <<elseif _attacktype is "INVENTORY">>\ <<CombatLog _ArrayReceived[2]>>\ <<set _endcombat to "skip player">>\ <<elseif _attacktype is "debug kill">>\ <<set _th to 9999>>\ <<set _td to 9999>>\ <<set _hitmessage to "You zap " + _TheMon>>\ <<else>>\ <!-- defaults -->\ <<set _MaybeError to "CombatLog defaulted: " + _args[0] + ", " + _args[1] + ", " + _args[2]>>\ <<CombatLog _MaybeError>>\ <<endif>>\ \ <<if _endcombat is "yes">>\ <<replace "#monhealth">><</replace>>\ <<replace "#monflirt">><</replace>>\ <<replace "#combatcontrols">>\ @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Continue" $ReturnFromMenu>> <<ClearTemporaryEffects>>\ <</link>>\ </span> <</replace>>\ <<elseif _endcombat is "skip player">>\ <<elseif _endcombat is "normal">>\ <<if _th < 1>>\ <<set _m to _missmessage>>\ <<else>>\ <<if _td < 1>>\ <<set _m to _absorbmessage>>\ <<elseif _attacktype is "flirt">>\ <<set _m to _hitmessage>>\ <<set $Mon.teased to $Mon.teased + _td>>\ <<else>>\ <!-- account for resistences? -->\ <<set _m to _hitmessage + " for " + _td + " damage">>\ <<set $Mon.hpcur to $Mon.hpcur - _td>>\ <<endif>>\ <<endif>>\ <<CombatLog _m>>\ <<else>> <<CombatLog "@@color:Red;Error in combat: do we resolve or no?@@">>\ <<endif>>\ <<if $Mon.poisoned > 0>>\ <<if $Mon.name.includes("slime") or ($Mon.name.includes("Zehtalia"))>>\ <<set $Mon.hpcur to $Mon.hpcur + $Mon.poisoned>>\ <<if $Mon.hpcur gte $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _m to "The " + $Mon.name + " is @@color:Yellow;healed to full by the poison!@@">>\ <<CombatLog _m>>\ <<else>>\ <<set _m to "The " + $Mon.name + " is @@color:Yellow;healed for " + $Mon.poisoned + " by the poison!@@">>\ <<CombatLog _m>>\ <<endif>>\ <<else>>\ <<set $Mon.hpcur to $Mon.hpcur - $Mon.poisoned>>\ <<set _m to "The " + $Mon.name + " takes " + $Mon.poisoned + " @@color:LawnGreen;damage from poison@@">>\ <<CombatLog _m>>\ <<endif>>\ <<endif>>\ <<ShowActiveEffects>>\ <</widget>>\ \ <<widget "CombatLog">>\ <<set $ComLog[0] to $ComLog[1]>>\ <<set $ComLog[1] to $ComLog[2]>>\ <<set $ComLog[2] to $ComLog[3]>>\ <<set $ComLog[3] to $ComLog[4]>>\ <<set $ComLog[4] to $ComLog[5]>>\ <<set $ComLog[5] to $ComLog[6]>>\ <<set $ComLog[6] to $ComLog[7]>>\ <<set $ComLog[7] to $ComLog[8]>>\ <<set $ComLog[8] to $ComLog[9]>>\ <<set $ComLog[9] to $ComLog[10]>>\ <<set $ComLog[10] to $ComLog[11]>>\ <<set $ComLog[11] to $ComLog[12]>>\ <<set $ComLog[12] to $ComLog[13]>>\ <<set $ComLog[13] to $ComLog[14]>>\ <<set $ComLog[14] to $ComLog[15]>>\ <<set $ComLog[15] to $args[0]>>\ <!-- <<set _floof to setup.advanceLog()>> -->\ <<for _i to 0; _i < 16; _i++>> <<set _foo to "#combatlog" + _i>> <<replace _foo>>\ <<print $ComLog[_i]>>\ <</replace>>\ <</for>>\ <</widget>>\ <<widget "MonsterAttack">>\ <<CombatLog "monster attack goes here">>\ <</widget>>\ \ <<widget "MonsterTurn">>\ <<set _TheMon to "The " + $Mon.name + " ">>\ <<if $Mon.name.includes("Zehtalia")>>\ <<set _TheMon to $Mon.name + " ">>\ <<endif>>\ \ <<if $Mon.hpcur < 1>>\ \ <<ClearTemporaryEffects>>\ \ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ \ <<set _MonKillPTR to setup.MonNameToKillPTR($Mon.morph)>>\ <<set $PC[$CC][$PCkills][_MonKillPTR] to $PC[$CC][$PCkills][_MonKillPTR] +1>>\ \ <<replace "#monhealth">><</replace>>\ <<replace "#monflirt">><</replace>>\ <<replace "#combatcontrols">>\ @@color:LightGreen;You are victorious!@@ <<set $PC[$CC][$PCmisc].battleswon to $PC[$CC][$PCmisc].battleswon +1>>\ \ <<set $LogKills to $LogKills +1>>\ <<if $Mon.xp > 0>>\ <<AwardXP $Mon.xp>>\ <<endif>>\ <<if $Mon.gold > 0>>\ <<set _BonusGold to 0>>\ <<set _TotalGold to $Mon.gold>>\ <<if setup.PlayerHasPerk("Greedy") is true>> <<set _BonusGold to Math.trunc($Mon.gold / 10)>>\ <<set _TotalGold to _TotalGold + _BonusGold>>\ <<endif>>\ <<if _BonusGold > 0>>\ You find <<print $Mon.gold>>@@color:LightGreen;(+<<print _BonusGold>> from Greedy perk)@@ coins on <<print _TheMon>> <<else>>\ You find <<print $Mon.gold>> coins on the <<print $Mon.name>>. <<endif>>\ <<set $PC[$CC][$PCmisc].gold to $PC[$CC][$PCmisc].gold + _TotalGold>>\ <<GainGold _TotalGold>>\ <<endif>>\ \ <<set _AllowRape to true>>\ <<set _AllowDrop to true>>\ <<set _AllowButcher to true>>\ <<set _AllowBottle to true>>\ <<set _AllowBlood to true>>\ <<if $WORLD.CombatInterrupt is "smith quest omnibus">>\ <<set $WORLD.CombatInterrupt to "defeated smith omnibus">>\ <<set _AllowRape to false>>\ <<set _AllowDrop to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <<elseif $WORLD.CombatInterrupt is "Zehtalia">>\ <<set $WORLD.CombatInterrupt to "defeated Zehtalia">>\ <<set _AllowRape to false>>\ <<set _AllowButcher to false>>\ <<set _AllowBottle to false>>\ <<set _AllowBlood to false>>\ <<else>>\ <<set $WORLD.CombatInterrupt to "">>\ <<endif>>\ \ <<if _AllowDrop is true>>\ <<if _pz > 0>>\ <<set _LootChance to random(1,5)>>\ <<if $Dungeon[_pz][_px][_py][11] neq 0>>\ <<set _LootChance to 1>>\ <<endif>>\ <<set _Loot to $Mon.loot>>\ <<if (_Loot[0] is 0) and (_LootChance is 1)>> <<set _Loot to setup.GenLoot($Mon.name, $Mon.sex, _pz, $PC[$CC][$PClocation])>>\ <<endif>>\ <<if _Loot[0] is 0>>\ <<else>>\ <<DescribeItem _Loot>>\ <<set _name to $ItemPoke.name>>\ <<if _name is "none">>\ <<if $DebugMode is true>>\ @@color:Yellow;Debug: Fixed-placement tower $Mon.name generated no item: (_Loot)@@ <<endif>>\ <<else>>\ <<if setup.getnextinvslot($CC) < 0>>\ You find a <<print _name>>, but @@color:Yellow;you have no room in inventory@@ and abandon it. <<else>>\ You find a <<print _name>> and take it with you. <<set _asd to setup.addtoinven(_Loot)>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<endif>>\ <hr>\ <<endif>>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <</link>> </span>\ <<if _AllowRape is true>>\ <<include "Victory">>\ <<endif>>\ <<if _AllowButcher is true>>\ <<if setup.HasButcherTool() > -1>>\ <hr>\ <<set _foo to "b) Butcher the " + $Mon.name + " for meat">>\ <span id="KeypB">\ <<link _foo $ReturnFromMenu>> <<set _foo to setup.additemtoinv($CC, [102, 0, 1, $Mon.MeatSemenMilk[0]], true)>> <</link>> </span>\ <<else>>\ <br>\ <<endif>>\ <<endif>>\ <<if _AllowBottle is true>>\ <<set _BottleSlot to setup.HasBottle()>>\ <<if _BottleSlot > -1>>\ <<if (setup.getnextinvslot($CC) > -1) or ($PC[$CC][$PCinven][_BottleSlot][2] is 1)>>\ <!-- implement case for no room, but already have stackable type -->\ <span id="KeypFour">\ <<link "4) Collect sexual fluids" "Butcher">> <<set $DisableMenu to false>> <<set _foo to setup.RemoveOneItemFromInv($CC, _BottleSlot)>> <<set _foo to setup.additemtoinv($CC, [102, 0, 1, $Mon.MeatSemenMilk[0]], true)>> <</link>> </span>\ <<else>>\ No room in inventory for additional fluids <<endif>>\ <<endif>>\ <<endif>>\ <</replace>>\ <!-- TOWER ONLY: remove monster and place blood -->\ <<if _AllowBlood is true>>\ <<if _pz > 0>>\ <<if ($Dungeon[_pz][_px][_py][11] is 0) or $Dungeon[_pz][_px][_py][11] is "Monster">>\ <<set $Dungeon[_pz][_px][_py][8] to 100>>\ <<set $Dungeon[_pz][_px][_py][11] to 0>>\ <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <<endif>>\ <<endif>>\ <<endif>>\ <<else>>\ <!-- REMOVE SUBSEQUENT STUN IMMUNITY -->\ <<if $Mon.stunned is -1>>\ <<set $Mon.stunned to 0>>\ <<endif>>\ <!-- PROCESS POISON -->> <<set _PlayerPoisoned to setup.GetEffect("poison")>>\ <<if _PlayerPoisoned > 0>>\ <<set _PoisonMessage to "You take @@color:Green;" + _PlayerPoisoned + " damage from poison!@@">>\ <<CombatLog _PoisonMessage>>\ <<set _PlayerPoisoned to (_PlayerPoisoned * -1)>>\ <<ChangeStat $PChpcur _PlayerPoisoned>>\ <<endif>>\ <!-- CHOOSE AN ATTACK TYPE -->\ <<if $Mon.att.length > 0>>\ <<else>>\ <<AddToLog "Error in MonsterTurn: no valid attacks in array">>\ <<endif>>\ <<set _WhichAttack to random(0, $Mon.att.length -1)>>\ <<if (_MonAttackType is "heal") and ($Mon.hpcur gte $Mon.hpmax)>>\ <<set _WhichAttack to 0>>\ <<endif>>\ <<if ($Mon.teased > random(1,100)) and (_MonAttackType is "flirt")>>\ <<set _WhichAttack to 0>>\ <<set _changeattack to _TheMon + " seems agitated">>\ <<CombatLog _changeattack>>\ <<endif>>\ <<set _MonAttackType to $Mon.att[_WhichAttack][0]>>\ <!-- ************************************************************* -->\ \ <!-- CALC PLAYER NET ARMOR FOR PHYSICAL ATTACKS ONLY -->\ <<set _PlayerTotalAC to 0>>\ <<for _AcCycle to 0; _AcCycle < $PC[$CC][$PCac].length; _AcCycle++>>\ <<set _PlayerTotalAC to _PlayerTotalAC + $PC[$CC][$PCac][_AcCycle]>>\ <<set _Webbed to setup.GetEffect("webbed")>>\ <<if _Webbed > 0>>\ <<set _PlayerTotalAC to _PlayerTotalAC - _Webbed>>\ <<endif>>\ <</for>>\ <!-- ************************************************************* -->\ \ <!-- CALC PLAYER ABSORPTION AFTER ARMOR PENETRATION --> <<set _NetAbsorb to $PC[$CC][$PCabsorb] - $Mon.arpen>>\ <<if _NetAbsorb < 0>>\ <<set _TotalAbsorb to 0>>\ <<endif>>\ <!-- ************************************************************* -->\ \ <<set _LosebyLust to false>>\ \ <!-- AI -->\ <<if $Mon.AI is "Zehtalia">>\ <<if (_MonAttackType is "POISON") and ($PC[$CC][$PCcon] > 14)>>\ <<if random(1,2) is 1>>\ <<set _WhichAttack to 0>>\ <<set _MonAttackType to "physical">>\ <<endif>>\ <<elseif (_MonAttackType is "WEB") and ($PC[$CC][$PCdex] > 14)>>\ <<if random(1,2) is 1>>\ <<set _WhichAttack to 0>>\ <<set _MonAttackType to "physical">>\ <<endif>>\ <<endif>>\ <<if $Mon.Powerup > 0>>\ <<set _MonAttackType to "ZEHTALIA">>\ <<elseif setup.GetEffect("poisoned") is 0>>\ <<set _WhichAttack to 3>>\ <<set _MonAttackType to "POISON">>\ <<elseif random(1,3) is 1>>\ <<set _MonAttackType to "ZEHTALIA">>\ <<endif>>\ <<endif>>\ \ <!-- PERFORM MONSTER ATTACK -->\ <<if $Mon.stunned > 0>>\ <<set $Mon.stunned to -1>>\ <<set _CombatMessage to "@@color:Aqua;" + _TheMon + either("is too dazed to attack","is reeling"," takes a moment to catch " + $Mon.hisher + " breath")>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "physical">>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - _PlayerTotalAC>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2]) - _NetAbsorb>>\ <<if _Damage > 0>>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "magic">>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - $PC[$CC][$PCwil]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2]) - _NetAbsorb>>\ <<if _Damage > 0>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "flirt">>\ <!-- to hit here should be increased by player sexy clothing -->\ <<set _ToHit to random(1, $Mon.att[_WhichAttack][3]) + $Mon.teased - $PC[$CC][$PClevel] - $PC[$CC][$PCwil]>>\ <<if _ToHit > 0>>\ <!-- does anything directly reduce flirt damage? -->\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4] + ", @@color:Pink;+" + _Damage + " arousal@@">>\ <<ChangeStat $PChornycur _Damage>>\ <<CombatLog _CombatMessage>>\ <<if $PC[$CC][$PChornycur] < 1>>\ <<set _LosebyLust to true>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<CombatLog _CombatMessage>>\ <<endif>>\ <<elseif _MonAttackType is "ZEHTALIA">>\ <<if $Dungeon[_pz][_px][_py][12] is "hard mode Zehtalia">>\ <<set _Zshout to "Zehtalia screams, @@color:Yellow;" + either("DIE, HERETIC!","YOUR LIES WILL BE SILENCED!") + "@@">>\ <<set _Zmulti to 3>>\ <<set _ZmissRNG to 1>>\ <<else>>\ <<set _Zshout to "Zehtalia screams, @@color:Yellow;" + either("ANNIHILATION COMES!","DOOM UPON YOU!","TASTE MY WRATH, PUNY MORTAL!","I AM THE GOD OF HELLFIRE!") + "@@">>\ <<set _Zmulti to 2>>\ <<set _ZmissRNG to 2>>\ <<endif>>\ <<if $Mon.Powerup is 0>>\ <<CombatLog _Zshout>>\ <<set $Mon.Powerup to 1>>\ <<else>>\ <<set $Mon.Powerup to 0>>\ <<set _Damage to +_Zmulti * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "Zehtalia @@color:Red;slams you into the floor for " + _Damage + " damage!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<if random(1, _ZmissRNG) is 1>>\ <<set _Damage to 2 * random($Mon.att[0][1], $Mon.att[0][2])>>\ <<set _CombatMessage to "You are too stunned to avoid her @@color:Red;followup blow for " + _Damage + " more!@@">>\ <<CombatLog _CombatMessage>>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<if _Zmulti is 1>>\ <<set _throwaway to setup.ApplyEffect("poisoned", 1)>>\ <<set _throwaway to setup.ApplyEffect("webbed", 1)>>\ <<set _CombatMessage to _TheMon + " @@color:Yellow;poisons and webs you@@ while you're down!">>\ <<endif>>\ <<endif>>\ <<endif>>\ <<elseif _MonAttackType is "WEB">>\ <<set _ToHit to random(1, 20) + $Mon.level - $PC[$CC][$PClevel] - $PC[$CC][$PCdex]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <!-- no absorption for web -->\ <<set _throwaway to setup.ApplyEffect("webbed", _Damage)>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4]>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "POISON">>\ <<set _ToHit to random(1, 20) + $Mon.level - $PC[$CC][$PClevel] - $PC[$CC][$PCcon]>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <!-- no absorption for poison -->\ <<set _throwaway to setup.ApplyEffect("poisoned", _Damage)>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][4]>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <<elseif _MonAttackType is "flurry">>\ <<for _flurry to 0; _flurry < $Mon.flurryQTY; _flurry++>>\ <<set _ToHit to random(1, 100) + $Mon.att[_WhichAttack][3] - _PlayerTotalAC>>\ <<if _ToHit > 0>>\ <<set _Damage to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2]) - _NetAbsorb>>\ <<if _Damage > 0>>\ <<set _CombatMessage to _TheMon + $Mon.att[_WhichAttack][4] + " for @@color:Red;" + _Damage + " damage@@">>\ <<set _Damage to (_Damage * -1)>>\ <<ChangeStat $PChpcur _Damage>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][6]>>\ <<endif>>\ <<else>>\ <<set _CombatMessage to _TheMon + " " + $Mon.att[_WhichAttack][5]>>\ <<endif>>\ <<CombatLog _CombatMessage>>\ <</for>>\ <<elseif _MonAttackType is "REMOVEARMOR">>\ <<CombatLog "@@color:Yellow;Debug: implement armor debuff@@">>\ <<elseif _MonAttackType is "debuffTH">>\ <<CombatLog "@@color:Yellow;Debug: to-hit debuff@@">>\ <<elseif _MonAttackType is "fertility">>\ <<CombatLog "@@color:Yellow;Debug: implement fertility attacks@@">>\ <<elseif _MonAttackType is "heal">>\ <<set _Heal to random($Mon.att[_WhichAttack][1], $Mon.att[_WhichAttack][2])>>\ <<set $Mon.hpcur to $Mon.hpcur + _Heal>>\ <<if $Mon.hpcur > $Mon.hpmax>>\ <<set $Mon.hpcur to $Mon.hpmax>>\ <<set _CombatMessage to _TheMon + " " + "@@color:Yellow;" + $Mon.att[_WhichAttack][4] + " to full health!@@">>\ <<else>>\ <<set _foo to _TheMon + " " + "@@color:Yellow;" + $Mon.att[_WhichAttack][4] + " for " + _Heal + " health@@">>\ <<endif>>\ <<else>>\ <<AddToLog "Error in combat widget: unrecognized attack type">>\ <<endif>>\ \ <<ShowHealth>>\ <<ShowHorny>>\ \ <<if _LoseByLust is true>>\ <<CombatLog "You have been defeated!">>\ <<replace "#combatcontrols">>\ @@Color:Red;You submit to the <<print $Mon.name>> in a fit of lust!@@ <hr>\ <span id="KeypOne">\ <<link "1) Continue" "DefeatSex">> <<ClearTemporaryEffects>>\ <</link>>\ </span>\ <</replace>>\ <<elseif $PC[$CC][$PChpcur] < 1>>\ <<set $PC[$CC][$PCmisc].battleslost to $PC[$CC][$PCmisc].battleslost +1>>\ <<CombatLog "You have been defeated!">>\ <<replace "#combatcontrols">>\ @@Color:Red;You have been defeated!@@ <<if setup.PlayerHasPerk("Rich") is true>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] / 4)>>\ <<if _GoldLost is 1>>\ <<print _TheMon>> takes your last piece of gold. <<elseif _GoldLost is 0>>\ <<else>>\ <<print _TheMon>> takes <<print _GoldLost>> of your gold. <<endif>>\ <<else>>\ <<set _GoldLost to Math.trunc($PC[$CC][$PCcoins] /2)>>\ <<if _GoldLost is 1>>\ <<print _TheMon>> takes your last piece of gold. <<elseif _GoldLost is 0>>\ <<else>>\ <<print _TheMon>> takes <<print _GoldLost>> of your gold. <<endif>>\ <<endif>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _GoldLost>>\ <<if $PC[$CC][$PCcoins] < 0>>\ Debug: monster took more gold than the player had. Attempting to fix. <<set $PC[$CC][$PCcoins] to 0>>\ <<endif>>\ <hr>\ <span id="KeypSpace">\ <<link "space) Continue" "DefeatSex">> <<ClearTemporaryEffects>>\ <</link>>\ </span>\ <</replace>>\ <<endif>>\ <<ShowActiveEffects>>\ <<endif>>\ <</widget>>\ <<widget "GetAttackArray">>\ <<AddToLog "@@color:LightGreen;GetAttackArray has been called!@@">>\ <<set $AttackArray to []>>\ <<set _arcount to 0>>\ <<set _bpqty to $PC[$CC][$PCbp].length>>\ <<for _i to 0; _i < _bpqty; _i++>>\ <<if $PC[$CC][$PCbp][_i].type is $BPwield>>\ <<if $PC[$CC][$PCbp][_i].equip[0] > 0>>\ <<DescribeItem $PC[$CC][$PCbp][_i].equip>>\ <<set _fulldesc to $ItemPoke.name + " attack">>\ <<set $AttackArray[_arcount] to ["weapon", _i, _fulldesc]>>\ <<set _arcount to _arcount +1>>\ <<elseif $PC[$CC][$PCbp][_i].hasOwnProperty("attacktype")>>\ <<set _fulldesc to $PC[$CC][$PCbp][_i].attacktype>>\ <<set $AttackArray[_arcount] to ["body", _i, _fulldesc]>>\ <<set _arcount to _arcount +1>>\ <<endif>>\ <<endif>>\ <</for>>\ \ <<if $AttackArray.length < 1>>\ @@color:Red;Probably an error: no valid body parts or weapons to attack with@@ <<endif>>\ \ <<unset $ItemPoke>>\ <</widget>>\<<set $PC[$CC][$PCz] to 0>>\ <<set $PC[$CC][$PClocation] to "town">>\ <<script>>Engine.play("TownSquare");<</script>>\ cut trap string code not used to prevent infinite free trap avoidance gains. Does that matter? <<set _HasCuttingTool to -1>>\ <<for _DISARM to 0; _DISARM < $PC[$CC][$PCmaxinven]; _DISARM++>>\ <<if ($PC[$CC][$PCinven][_DISARM][0] is 113) or ($PC[$CC][$PCinven][_DISARM][0] is 132)>>\ <<set _HasCuttingTool to _DISARM>>\ <<endif>>\ <</for>>\ <<if _HasCuttingTool > -1>>\ <<DescribeItem $PC[$CC][$PCinven][_HasCuttingTool]>>\ <<set _cutname to $ItemPoke.name>> You have a _cutname with you, so you could cut the string if you'd like. Otherwise you could simply leave, but you risk possibly tripping over it if you pass through this room again. <span id="KeypC">\ <<link "c) cut the string">> <<set $Dungeon[_pz][_px][_py][8] to 102>> <<set $Dungeon[_pz][_px][_py][11] to 0>> <<set $Dungeon[_pz][_px][_py][12] to 0>> <<ShowRoomDesc>> <</link>>\ <span>\ <<else>>\ <br>If you had a knife or scissors, you could probably safely cut the string. Lacking this, you decide to leave the string alone. You'll have to be careful to avoid it if you pass through this room again. <<set $AllowNav to true>>\ <<set _ExitLink to "none">>\ <<endif>>\ <<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven + 1>>\ <<if random(1,2) is 1>>\ The wolf wastes no time pouncing on you, ripping through your clothes with sharp claws and teeth. You kick and scream to no avail, the savage beast now straddled on your hips, pinning you down on all fours with such weight as to preclude any chance of escape. With the wolf's paws bearing down on your back, all you can do is look forward as a meaty cock slides its way between your thighs and plants itself just beweten your pussy lips. For an excruciating moment, nothing happens. You try to nudge your hips away, but the wolf merely leans in keep his cosk where it is, still inside you. When you come up off your knees to pull your hips away even further, he leans in yet again to keep just his tip inside, and no further. It's not long before your mucles begin straining under his weight. Content to wait you out, the wolf waits patiently until at last you relax your knees back to the ground, sliding your treacherously dripping pussy down onto his cock as you do. Taking your apparently willful action as submission, that's when he grips onto your hips with his forepaws and begins eagerly thrusting into you. <<FemaleVirginity "a wolf">>\ As first you tell yourself that you're simply too tired to resist, but before long, the ryhthmic swaying of your hips back onto the wolf's cock make it clear just how much you're into him being into you. Or at least, the wolf and your body are both into it, approval from the rest of you seemingly not required. Before long yor pussy is autonomically clenching itself around the full mast of the wolf's cock, relaxign with every thrust and tightening as it to keep him inside you when he pulls back. When his climax comes, he thrusts down on your back and leans forward to gain the cooperation of gravity to give every drop of his semen the best possible chance of climbing upward inside you to take root. Only after this does he force the bulbous knot at the base of his cock between your pussy lips to lock his cock inside you, and then inexpcliacably climaxes //again// fully knotted inside you. That's when you pass out. <<else>>\ See you struggling to crawl away on hands and knees, the wolf wastes no time mounting you from behind, his hardened member bouncing frantically between your thighs as it seeks a port of entry. Gasped at first contact when he finds it, you can't help but let out a moan of pleasure when he pushes slowly inside you. You then feel your knees lifted off the ground as the huge wolf stands at his full height to fuck you while your legs dangle helplessly beneath him, your hips held securely in teh grip of his forelegs wrapped aroudn you like steel bands. Before long you feel your body moving in rhythm with his, your quick throaty gasps echoing in time with a deep, guttural growl you feel as much as hear above you with his every thrust. The wolf's claws dug lightly but deeply enough to leave marks on both sides, while you desperately hold your top half up to keep your face from being mashed into the ground. His frantic pace doesn't last long however, and within minutes you feel the telltale twiching of his cock that leads to a powerful gush of sperm inside you. Collpasing down onto your chest, your lower half is still trapped around his cock, still pumping occasional twitchy bursts of semen to be held inside you by the tight fit of his bulbous knot inside you. Settling down for what seems like it could be a long wait, you come to a climax yourself from the sensation of his warm semen now sloshing audibbly around inside you, seeking to take root, your last thought before falling unconscoius being a wild imagining of what it would be like to be impregnated and to carry around an entire litter of this wolf's pups. <<endif>>\ <<else>> <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analgiven to $PC[$CC][$PCsexACTS].analgiven + 1>>\ The wolf wastes no time to assert control, using his superior strength to force you into a submissive position on all fours With his powerful forepaws now locked tightly around your hips, you struggle in vain to crawl away while he thrusts his rubbery cock at your ass cheeks. He seems to be having difficulty getting it in, however, and clenching your ass tightly closed you feel a glint of hope. That's when he bites down hard around your neck, squeezing hard enough to draw blood until you stop moving. "You're my bitch now," he growls through his teeth, shocking you into submission at hearing a human voice coming from a wolf. "You were human once?" you whisper in dread at the implication. "Shut up, fucktoy!" he snarls, slamming a paw down on the middle of your back to hole your prone, then drilling his rock-hard cock fully eight inches into your ass hole. Too stunned to struggle, you simply lie there while the wolf get to work, pumping in and out of you roughly while he grunts and growls menacingly. Thankfully it's not long until his generous pre-cum coats and lubricates your insides, making his cock easier to take. But he doesn't let me, keeping you forcefully pinned to the ground With the smell of his dog-like breath filling your nostisl from above and his thick, meaty cock filling you from benathe, you can do little but take it, scarecly aware of the slobbery bits of drool eagerly dribbling across your back as if to mirror his cum dribbling inside you. When at last he cums, he digs his claws into your hips and throws his head back with a howl. "Awwwuuuuuu!!!" The sound of his howl and his semen bursting inside you are your last thoughts before everything goes dark. <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","wolfquad"]>> <<AdvanceTime 480>> <</link>>\ </span> <<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "wolf handjob">>\ With the wolf lying on his side panting, you find your eyes drawn to his disproportionately large cock. At roughly 8 inches it's a size that could reasonably fit on a human, but on a creature whose head only barely reaches you navel, it seems almost grotesquely large. Watching it pulse with his every gasp of breath, you find yourself fascinated with it, drawn to its thicky, veinly length. Figuring that since you won the fight, that cock belongs to you now, you sit down next to the wolf, and roll him all the way onto his back. With a cock erect enough to stick up into the air at an angle, the wolf doesn't object when you delicately glide a single finger from just between his balls and across its great length. The tip of his cock is strangely pointed, shaped almost like a straw cut at an angle. Curious, you reach down lick it, the smell of wolf musks hitting you as you grasp the base of his cock with both hands and begin to stroke. At first tempted to suck his balls dry, you instead sit down between splayed legs to watch yourself stroke wolf cock. Amused at the change in his breathing, you gently massage his balls in one hand and squeeze the tip of his cock between thumb and finger with the other, taking note as the knit at the base of his cock grows and hardens as if to lock him inside a prospective partner. Grasping now with both hands and sliding them up and down the wolf's glroious length, it doesn't take long before he jettisons a spray of musky semen fully six feet away from you and onto the grass. Wondering briefly what it would be like to feel that eruption inside you, you wipe your hands clean and continue on your way, leaving the wolf curled up and asleep on the ground. <<elseif $WORLD.datapasser is "wolf blowjob">>\ <<set $PC[$CC][$PCsexACTS].bjgiven to $PC[$CC][$PCsexACTS].bjgiven +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ Glancing at the wolf's large testicles dangling from a particularly magnificent cock, you can't help but reach out and give it a quick stroke. Already moist with the wolf's fluids, your hand glides up and down easily, prompting the wolf to spread his hind legs to give you easier access. Deciding you can make better use of that space, you lean down with a grin and lick the length of his shaft with your tongue. The taste is exquisite, and you nibble and kiss every inch with your lips, licking up tasy little dribbles of fluid as you go. Feeling daring yet also wanting more, you work your way up to his tip, give it a single flick with your tongue and purse your lips tightly aroudn him to begin a long, slow descent. Hearing the wolf begin to pant, you push your head down on his member with just enough force that it parts your lips and spreads your jaw as you own breathing intensifies. Massaging his fleshy belly with your hands, his cock slides easily between your your tongue and the roof of your mouth, his musky scent filling your tongue more growing intensity until at last his cock nudges against the back of your throat, already twitching and pulsing as if about to burst. With still a few inches to go, you suppress your gag reflex and press down until your nose brushes against his belly, just in time for the spasm of his balls to tickle your chin before he bursts with a spray of delicious wolf semen inside you, which you eagerly accept over the course of several swallows. You would have preferred for it to last a little longer, but the wolf seems fully satsified, and you wait for him to fall asleep before at last you slowly slide his cock back out across your tongue, giving it one last lick and a kiss before you at last return to your feet to continue your journey. <<else>>\ Error in wolf sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\ setup.GetMorphology(WhichMon, WhichSex) = function { var BPhead = State.variables.BPhead; var BPneck = State.variables.BPneck; var BPback = State.variables.BPback; var BPchest = State.variables.BPchest; var BPwield = State.variables.BPwield; var BPhands = State.variables.BPhands; var BPring = State.variables.BPring; var BPwaist = State.variables.BPwaist; var BPlegs = State.variables.BPlegs; var BPfeet = State.variables.BPfeet; var BPtail = State.variables.BPtail; var BPhorn = State.variables.BPhorn; var BPwings = State.variables.BPwings; var BPtentacle = State.variables.BPtentacle; var BPstinger = State.variables.BPstinger; var BPpenis = State.variables.BPpenis; var BPpussy = State.variables.BPpussy; var BPboobs = State.variables.BPboobs; var anatomy = {}; var Extras = []; if (WhichMon == "bunny" ) { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "cat" ) { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "fox" ) { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "wolf" ) { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "horse" || WhichMon == "warg" || WhichMon == "hellhound" ))) { anatomy[0] = [BPhead, Morph]; anatomy[1] = [BPneck, Morph]; anatomy[2] = [BPback, Morph]; anatomy[3] = [BPchest, Morph]; anatomy[4] = [BPwaist, Morph]; anatomy[5] = [BPtail, Morph]; anatomy[6] = [BPlegs, Morph]; anatomy[7] = [BPlegs, Morph]; anatomy[8] = [BPfeet, Morph]; anatomy[9] = [BPfeet, Morph]; if (Sex == "male) { anatomy[anatomy.length] = [BPpenis, Morph]; } elseif (Sex == "female) { anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } elseif (Sex == "herm") { anatomy[anatomy.length] = [BPpenis, Morph]; anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; }; } else if (WhichMon == "centaur" ) { if (WhichSex == "male") { } else if (WhichSex == "female") { } else if (WhichSex == "herm") { }; } else if (WhichMon == "human" ) { anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "goblin" ) { anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "slime" ) { if (WhichSex == "male") { anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichSex == "female") { anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichSex == "herm") { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); }; } else if (WhichMon == "naga" ) { if (WhichSex == "male") { } else if (WhichSex == "female") { } else if (WhichSex == "herm") { }; } else if (WhichMon == "spider" ) { anatomy[0] = [BPhead, Morph]; anatomy[1] = [BPback, Morph]; anatomy[2] = [BPlegs, Morph]; anatomy[3] = [BPlegs, Morph]; anatomy[4] = [BPlegs, Morph]; anatomy[5] = [BPlegs, Morph]; if (Sex == "male) { anatomy[anatomy.length] = [BPpenis, Morph]; } elseif (Sex == "female) { anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } elseif (Sex == "herm") { anatomy[anatomy.length] = [BPpenis, Morph]; anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; }; } else if (WhichMon == "minotaur" ) { Extras = ["tail","horns"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "imp" ) { Extras = ["tail"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "drider" ) { anatomy[0] = [BPhead, Morph]; anatomy[1] = [BPneck, Morph]; anatomy[2] = [BPback, Morph]; anatomy[3] = [BPchest, Morph]; anatomy[4] = [BPwaist, Morph]; anatomy[5] = [BPwield, Morph]; anatomy[6] = [BPwield, Morph]; anatomy[7] = [BPhands, Morph]; anatomy[8] = [BPring, Morph]; anatomy[9] = [BPring, Morph]; anatomy[10] = [BPtail, Morph]; anatomy[11] = [BPlegs, Morph]; anatomy[12] = [BPlegs, Morph]; anatomy[13] = [BPlegs, Morph]; anatomy[14] = [BPlegs, Morph]; if (Sex == "male) { anatomy[anatomy.length] = [BPpenis, Morph]; } elseif (Sex == "female) { anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } elseif (Sex == "herm") { anatomy[anatomy.length] = [BPpenis, Morph]; anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; }; } else if (WhichMon == "demon" ) { Extras = ["tail","horns"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon == "tentacle" ) { if (WhichSex == "male") { } else if (WhichSex == "female") { } else if (WhichSex == "herm") { }; } else if (WhichMon == "chimera" ) { } else if (WhichMon == "Charyss" ) { Extras = ["tail","horns"]; anatomy = setup.GetStandardBiped(WhichMon, WhichSex, Extras); } else if (WhichMon.includes("Zehtalia")) { anatomy[0] = [BPhorns, Morph]; anatomy[1] = [BPhead, Morph]; anatomy[2] = [BPneck, Morph]; anatomy[3] = [BPback, Morph]; anatomy[4] = [BPchest, Morph]; anatomy[5] = [BPwaist, Morph]; anatomy[6] = [BPtail, Morph]; anatomy[7] = [BPlegs, Morph]; anatomy[8] = [BPlegs, Morph]; anatomy[9] = [BPlegs, Morph]; anatomy[10] = [BPlegs, Morph]; if (Sex == "male) { anatomy[anatomy.length] = [BPpenis, Morph]; } elseif (Sex == "female) { anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } elseif (Sex == "herm") { anatomy[anatomy.length] = [BPpenis, Morph]; anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; }; }; }; setup.GetStandardBiped = function(Morph, Sex, Extras) { var BPhead = State.variables.BPhead; var BPneck = State.variables.BPneck; var BPback = State.variables.BPback; var BPchest = State.variables.BPchest; var BPwield = State.variables.BPwield; var BPhands = State.variables.BPhands; var BPring = State.variables.BPring; var BPwaist = State.variables.BPwaist; var BPlegs = State.variables.BPlegs; var BPfeet = State.variables.BPfeet; var BPtail = State.variables.BPtail; var BPhorn = State.variables.BPhorn; var BPwings = State.variables.BPwings; var BPtentacle = State.variables.BPtentacle; var BPstinger = State.variables.BPstinger; var BPpenis = State.variables.BPpenis; var BPpussy = State.variables.BPpussy; var BPboobs = State.variables.BPboobs; var anatomy = []; anatomy[0] = [BPhead, Morph]; anatomy[1] = [BPneck, Morph]; anatomy[2] = [BPback, Morph]; anatomy[3] = [BPchest, Morph]; anatomy[4] = [BPwield, Morph]; anatomy[5] = [BPwield, Morph]; anatomy[6] = [BPhands, Morph]; anatomy[7] = [BPring, Morph]; anatomy[8] = [BPring, Morph]; anatomy[9] = [BPwaist, Morph]; anatomy[10] = [BPlegs, Morph]; anatomy[11] = [BPfeet, Morph]; for (i = 0; i < Extras.length; i++) { var a = Extras[i]; anatomy[anatomy.length] = [a, Morph]; }; if (Sex == "male) { anatomy[anatomy.length] = [BPpenis, Morph]; } elseif (Sex == "female) { anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } elseif (Sex == "herm") { anatomy[anatomy.length] = [BPpenis, Morph]; anatomy[anatomy.length] = [BPpussy, Morph]; anatomy[anatomy.length] = [BPboobs, Morph]; } else { /* no sex for food items */ }; return anatomy };@@color:LightGreen;What is maximum stat spread?@@ Your stat spread is the difference between your highest and lowest stat. Maximum spread is the biggest difference that is allowed. At the start of teh game , this is 8. So for example if your lowest stat is 6, your highest stat cannot be more than 14. The spread can be increased be completing certain achievements. @@color:Gold;Transformation and morphology@@ @@color:LightGreen;What are the effects of on-human body parts?@@ As of this writing, for each body part of each type: * bunny +1 flirt attack (run away bonus?) * cat +1 melee damage when attacked unarmed * fox +1 melee to hit when attacking unarmed * wolf +1hp * horse +2hp * centaur (removed) * insect +2ac * goblin +1 flirt dam (-lust cap?) * slime ? (2% blunt resistance (-health?)) * human None * cow +2hp * spider +2 all/melee to hit * imp ? * hellhound ? * demon (spelldam?) * tentacle ? <hr> @@color:Gold;Combat@@ @@color:Gold;How does shield bashing work?@@ A succesful shield bash stuns your opponent for a single turn. As it costs you a turn to bash and there's a chance to fail, shield bash is primarily useful in only two cases. First, if your opponent is taking periodic poison damage, every turn you delay them is basically a turn of free damage against them. Second, some opponents have "powerup" moves that do nothing on the rougd they're activated, but that buff their following attack. Bashing after thr powerup allows you to "interrupt" the power move so that it never occurs. @@color:Gold;How does prayer work?@@ By brandishing a holy symbol in combat, you can accumlate 'prayer' buffs which reduce the lust damage of all of your opponents attacks. Against some opponents this can be extremely effective, as it doesn't take many turns to build up enough stacks to become immune to their damage. Especially if you're a priest, as priests receive double the normal effect from prayer. However, this strategy comes as a significant cost as it means puttting a holy symbol in your off hand instead of a shield, which generally means losing a lot of armor. Of course, if you have more than two arms, the cost may be negligible. If general, prayer is only a viable strategy in some specific cases. @@color:Gold;I keep losing to lust attacks@@ In general this is simply a result of low stats. Lust attacks operate on a 1-10 roll, not a 1-100 roll like melee. the +10 flirt resistance you'd get from 10 willpower is the equivalent of +100 melee defense. @@color:LightGreen;How does flirting work?@@ By default, you have a 0% chance to succeed at flirting. * Every body part you have that matches the morph type of your target increases this by 1%. This value is not shown on your character sheet, but if you check under 'Examine Self' on the sidebar, you can see how many of which body part morphologies you have. Your target then has preferences for whichever body parts complement theirs. Males like flirts from character with female body parts. That is, boobs and pussies. Females like flirts from characters with male body parts. That is to say, penises. Hermaphrodites like flirts from characters with any parts. If your target likes the parts you have: * Every inch of penis you have increases your success by 1%. For example, a character with 2 six-inch penises gain an extra 12% * Every 100cc of boob volume increases your success by 1%. For example, a character with a pair of 400cc boobs would gain an extra 4%. * For pussy, a base 2% is gained, and the bonus is increased by every inch of depth less than 8 inches. That is, smaller is better. For example, a pussy able to accomodate a 12 inch cock would be worth 2%, whereas a pussy only comfortably able to take a 4 inch cock would be worth 6%. @@color:GoldArmor penetration and damage absorption@@ Physical damage is reduced by damage absorption (being a barbarian, various perks, etc.) Absorption is reduced by monster armor penetration. Armor penetration cannot reduce absorption below zero. That is to say, it's not a straight damage adjustment, it only reduce the amount of reduction that can happen. @@color:Gold;How do you beat Zehtalia?@@ Zehtalia has very low fire resistence, so if you're a spellcaster, you may be able to simply firebolt her down. Do //not// try to poison her, as it will heal her just like it heals slimes. If you're fighting with melee only, her key mechanic is her powerup smash. When she screams at you, her next move will land for on averge 225% of her base attack, and this move will never miss. Interrupt it with a shield bash and the attack will never land, resulting her her powerup turn being wasted. Zhetalis resists stun the same as any dungeon level 5 monster, so with 13 strength you'll never succeed, every point above 13 will give you a 20% succeess rate, up to 100% at a strength of 18. If you can't afford that many stat points, it's possible to simply outheal her damage with potions or spells, though that method is somewhat RNG dependant, as it's possible for her to powerup multiple turns in a row. Healing as a strategy is only recommend if you can put out at least 12 healing per turn. Note that while it is possible to become unhittable to her regular attacks at a defense of 300%, it's impractical to reach that target with the content currently in-game. A more reasonable target is 225-250 defense, though be aware that her powerup attacks never miss. Finally, Zehtalia is an armored-typed monster, so it's best to not use swords on her. <span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>> </span>\ <hr>\ @@color:Gold;July 5, 2023: Bugfixes for July 2 update@@ @@color:Aqua;New content:@@ * Added discord link @@color:Aqua;Bug fixes:@@ * A problem relating to scorpion body parts has been fixed * Added a body part checker to remove irrecoverably broken body parts (scorpion *cough cough*) * Harpies have been removed from the spawn table (they're not ready) * Fixed a problem that caused update to not correctly update breast equippability for some characters * Fixed a problem that could break the desert for some players * Sex part potions should now be able to grow entirely new parts * Fixed graveyard reporting * Avatars no longer appear on gravestones * Starving to death in the tower works again * Fixed some problems with monk dodging * Dungeon bedrooms now prompt you to sleep again rather than auto-healing you * Fixed a problem with slime damage * Fixed a problem that prevented stairs from generating on level 5 for some people <hr>\ @@color:Gold;July 3, 2023: Hotfix@@ * Fixed a problem that caused Zehtalia's artifact finder to fail for players with less than a full roster <hr>\ @@color:Gold;July 2, 2023: Classes and deserts and new boss, oh my!@@ Note: this was a huge update, and there are probably bugs. @@color:Aqua;New content:@@ * Tower level 6-10 have been unlocked * New boss: Neris the Cursed * The bridge can now be built * New zone: southern desert * 7 new monsters: ant, scorpion, ratkin, hellhound, hydra, troll, drider! (verify all) * 5 new sex scenes: wolfquad blowjob, antgirl vaginal, hydra cock, ratkin defeat, hellhound defeat * (Experimental) new equipment enchantment mechanic to prevent body parts from transforming * New items: cactus, pussy growth/reduction potions, several new armor types * Finley's quest for steel is now available * 3 new help topics: Class, transformation info, and a FAQ. * Inventory now reports fullnness/capacity * Inactive characters now appear on the map * Unique item artifacts now exist * Zehtalia has been given a loot upgrade * New class: Guardian! * Moonstone now enchants for increased maximum mana (verify) * New dungeon mechanics: levers and pressure plates @@color:Aqua;Major class revision:@@ * Class mechanics have been significantly revised, and every class now receives a unique effect that improves with level. These effects stack with retirement bonuses, and the combined bonuses can be substantial. It is advised that you read over the new class info help texts. Some classes that were formerly only useful for their retiremwent bonuses may be considerably more effective than they were previously. @@color:Aqua;Rule changes:@@ * Achievement/class unlock criteria are no longer hidden * Naga have been moved to higher tower levels * The retirement quest now awards 40 instead of 30 xp. Just enough to make a new character immediately eliible to complete the death quest. * Rebalanced armor values and costs, added a few new armor types, and generally scaled armor/cost ratios so that better armor costs proportionately more and bad armor is more cost efficient. * Bras can now be worn on boobs * Strength is now a factor in mining success * Prostitute class is now unlocked after only 5 flirt victories * The player flirt system has been significantly revised * Running from combat now consumes stamina * Shield bash success chance improved slightly * Tower traps should trend towards 2 per level now * Living characters inside the tower during a reset will now be teleported to town. Dead characters will become lost. * Bonuses from the first three gem enchanments have been massively increased * Chest stregth requirements have been reduced @@color:Aqua;Bug fixes:@@ * Fixed a text display error when praying at demons (verify) * Not-yet-implemented classes and perks no longer appear during character generation (ninja, paladin, breeder, etc.) * Reversed white/black mage unlock texts have been un-reversed * Internal code ID for slots no longer appears on inventory screen * Fixed some problems with sex stat tracking for bunny girls * Selene's dialogue should remember prior converstions now * Caves should now no longer reset with every map transition/game reload * Fixed a Charyss dialogue option that wasn't showing * Damage absorption now reports correctly * starter rolls of cheese now correctly stack. Fix is not retroactive. * Fixed another bug with transformation chest traps * A couple bugs with soul trap mana costs have been fixed, and "real" costs are now visible in the spellbook during combat * Probably fixed a bug that caused traps to sometimes overwrite stairs * Fixed a graphical glitch that caused floor tiles to be drawn on top of tower fountains * Damage absorption no longer reduces damage from magic attacks * Improved morph description handling. You shouldn't be a monstrosity quite as often now. * Combat loot drops should stack now (verify) * Fire healing now works as intended * (probably) fixed a bug that could cause trap placement to overwrite dungeon events <hr>\ @@color:Gold;June 4, 2023: Caves, mining, mobile mode, bugfixes@@ @@color:Aqua;New content:@@ * Caves now appear in the forest * Mining picks can mine gems in caves * Daphne can now enchant amulets * 2 new monsters * 6 new sex scenes * 6 new avatars @@color:Aqua;Mobile/Small screen compatibility mode:@@ * Horizontal shrink for Crescentheart North * Button press for avatar change during character generation @@color:Aqua;Rule changes:@@ * Hunger has been renamed stamina * Victory sex now reduces lust at the cost of stamina * Pawn store no longer doubles the cost of items * Pawn value of gems has been cut in half * Firebolt damage has been nerfed * Loss by lust now results in gold loss the same as from combat losses * Monsters without hands (horses, spiders, etc.) no longer take gold @@color:Aqua;Bug fixes:@@ * House inventory fix * Players who have level 10 charcters will be retroactively awarded the Power Leveler achievement * chest transformation trap (verify) * Hunger/stamina descriptive text should now update instantly * The priest class can now be unlocked when healing out of combat * The level 7 priest achievment 'Parson' should now award correctly * Fixed a bunch of problems with minotaurs * Horses now drop horse parts instead of fox parts * Unimplemented flowers should no longer generate in the forest * Visiting forest level 11 no longer generates errors * New characters that start at level 2 from scholar bonus now receive a stat point from the free levelup * Stoneskin and resist potions are no longer permanent * Rina's quest dialogue has been changed to make the Three's Company acheivement criteria more clear * It should be a little easier to be classified as a horse or naga now. * Cleaned up some issues with body display. More remain. * Fixed an error that sometimes prevented human adventurers from stealing items * Creatures without fluids no longer give bottles of error * Several problems relating to naga/snake parts have been fixed * Bunny victory sex events are now properly logged * CombatUI damage reporting for weapons now no longer incorrectly include bodymorph bonuses * Fixed the pluralization error with stackable combat drops <hr>\ @@color:Gold;May 15, 2023: Crescentheart South, Enchanting, and Bugfixes@@ @@color:Aqua;New features and content:@@ * New zone: Crescentheart South * New shop: lumber mill, which can bulk buy and sell wood * New shop: Daphne's jewelry * Game save/loading has been added to the main menu * Enchanting is now available from Daphne * Gems have been added to the loot tables * New avatars, and avatars can now be changed at any time from the stats menu * Arrow keys can now be used to move * 1 new character map icon * Items in inventory can now be destroyed * You can now build a bed and upgrade storage in your house * Change log added to menu * You can now "visualize defeat/fantasize" about being overcome to more easily lose battles * Pawnshop and house inventories should remain vertically stationary now * Minotaurs now have combat decriptions @@color:Aqua;Rule and balance changes:@@ * Meat/semen/milk can now be pawned for money * Food/hunger values of meat/semen/milk have been adjusted * Scholars no longer start with firebolt, and instead gain an extra +1 xp per combat victory * Unlocking prositute now only requires 10 flirt victories * being ressurected now restores you to full health * Penis and breast reduction serums can now fully remove parts * Newly constructed houses start with 5 storage instead of 10, but are now upgradable to 20 * The distribution of tree tiers has been significantly smoothed over larger number of forest zones * Defeat by goblin now results in waking up in the church rather than being stuck at low health * Ordinary and transformative food and drink can no longer be consumed during combat. Potions still can be. * Items formerly lost when the player loses a limb but lacks inventory space, are now sold to Skitters at the Pawnshop * Snake milk has been removed from the tavern * Firebolt mana costs now scale with damage, and will cause feedback damage if they reduce you below 0 mana * Increased gold drops in the forest by about 33% * Finley's restocking has been made sligthly more favorable @@color:Aqua;Bugfixes:@@ * The transformation code has been completely rewritten from scratch, theoretically solving several related bugs * Transformative food and drink should now work correctly * Charyss event will no longer disappear if you talk to her then initiate combat * Charyss is now correctly treated as a demon type for fire effects * Unimplemented spell "passwall" has been removed from tower bookcase events * Wolf part health bonus now updates instantly * Fixed bug that prevented new body parts from being able to equiping/unequip gear: note does not apply retraoctively, bugged parts are still bugged * fixed penis growth serum * Power level perk should now be awarded correctly * Earning the black mage achievement no longer results in an error cascade, and the damage bonus now correctly only applies if you have the perk * Mage class perk description is now phrased correctly * slime either ( error has been fixed * tower monsters defeated by flirt no longer bleed all over the floor * Up highest zone is now properly reset when the tower is reset * Peace in the Calm of the Horny can now be unlocked * Minotaur defeat event should now be accessible * Defeat by goblin female should no longer result in getting stuck * Morphology reporting now includes goblins and slimes * "giant spider" name/morph error fixed * Selene no longer resets her quests when a new player talks to her (looks ok, but verify as stated) * Pit trap error when returning to a previously destroyed floor fixed * Spiders should no longer give snake meat * Horse legs can now kick. Note that this bug occured at assignment, and the fix doesn't retroactively correct limbs from prior versions. * Visual error preventing Best Lumberjack bonus from showing in the UI has been fixed * With suffficient Best Scholar levels, it is now possible for new characters to start at level 2 * Fixed a bug that could cause items of same type but different material to collapse into each other\ * Stats screen no longer mixes up barbarian and paladin bonuses * Monk and barbarian unlock requirements have been fixed <hr>\ \ @@color:Gold;May 1, 2023: Bugfixes and rebalancing@@ * Early game difficulty reduced, new NPC dialogue added to explain certain game concepts * Bugfixes for traps, the ressurection quest, and various other things. * Food based transofrmations temporarily disabled. System needs an overhaul. \ <hr>\ \ @@color:Aqua;April 30, 2023: Initial release@@@@color:Gold;Savefile update@@ <hr>\ <<if setup.TypeOf($WORLD.house) is "number">>\ @@color:Yellow;Old house data detected@@: Attempting to update <<set _OldState to $WORLD.house>>\ <<set $WORLD.house to {state: 0, piggybank: -1, bed: 0, storage: 0}>>\ <<if _OldState is 0>>\ <<set $WORLD.house.state to 0>>\ <<elseif _OldState is 1>>\ <<set $WORLD.house.state to 1>>\ <<elseif _OldState is 2>>\ <<set $WORLD.house.state to 1>>\ <<elseif _OldState is 3>>\ <<set $WORLD.house.state to 2>>\ <<set $WORLD.house.storage to 5>>\ <<elseif _OldState is 4>>\ <<set $WORLD.house.state to 2>>\ <<set $WORLD.house.storage to 5>>\ <<elseif _OldState is 5>>\ <<set $WORLD.house.state to 2>>\ <<set $WORLD.house.storage to 5>>\ <<set $WORLD.house.piggybank to $WORLD.Piggybank>>\ <<endif>>\ <<endif>>\ \ <<if $PC[0][$PCavatar][1] > 99>>\ <<else>>\ @@color:Yellow;Old avatar data format detected@@: Applying new format and assigning an avatar... NOTE: you can now change avatars at any time on the sidebar <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if $PC[_AllPCS][$PCicon] is "icon4">>\ <<set $PC[_AllPCS][$PCicon] to "icon8">>\ <<endif>>\ <<set _st to $PC[_AllPCS][$PCstate]>>\ <<if (_st is "alive") or (_st is "dead") or (_st is "lost") or (_st is "retired")>>\ <<if $PC[_AllPCS][$PCavatar][0] is "male">>\ <<set $PC[_AllPCS][$PCavatar] to ["Human", 103]>>\ <<else>>\ <<set $PC[_AllPCS][$PCavatar] to ["Human", 101]>>\ <<endif>>\ <<endif>>\ <</for>>\ <<endif>>\ <<if setup.TypeOf($WORLD.bridge) is "number">>\ <<else>>\ @@color:Yellow;Town south@@ Building a bridge... <<set $WORLD.bridge to 0>>\ Initializing dialogue... <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<set $PC[_AllPCS][$PCBoltmanChat] to [0,0,0,0,0]>>\ <<set $PC[_AllPCS][$PCDaphneChat] to [0,0,0,0,0,0,0,0]>>\ <</for>>\ Setting up Daphne's quests... <<set $WORLD.DaphneQuests to [0,0,0,0,0,0,0,0,0,0]>>\ Building stores... <<set $LumberMill to 6>>\ <<set $Daphne to 7>>\ <<set $STORE[$LumberMill] to []>>\ <<set $STORE[$Daphne] to []>>\ <<for _i to 0; _i < 10; _i++>>\ <<set $STORE[$LumberMill][_i] to [0,0,0,0]>>\ <<set $STORE[$Daphne][_i] to [0,0,0,0]>>\ <</for>>\ <<Restock "lumbermill">>\ <<Restock "daphne">>\ <<endif>>\ \ <<if setup.TypeOf($WORLD.ForestCaves) is "object">>\ <<else>>\ @@color:Yellow;Initializing forest caves...@@ <<set _throwaway to setup.InitForestCaves()>>\ <<endif>>\ \ \ \ <<set _HouseFixCount to 0>>\ <<for _HousePTR to 0; _HousePTR < 20; _HousePTR++>>\ <<if $STORE[$House][_HousePTR]>>\ <<else>>\ <<set $STORE[$House][_HousePTR] to [0,0,0,0]>>\ <<set _HouseFixCount to _HouseFixCount +1>>\ <<endif>>\ <</for>>\ <<if _HouseFixCount > 0>>\ @@color:Yellow;Fixing _HouseFixCount house inventory slots broken by Build 23.5.15...@@ <<endif>>\ \ <<if setup.TypeOf($WORLD.MobileMode) is "number">>\ <<else>>\ <<set $WORLD.MobileMode to 0>>\ @@color:Yellow;Adding mobile compatibility mode toggle...@@ <<endif>>\ \ <<if setup.AchievementHandler("Power Leveler", "HAS?", -1)>>\ <<else>>\ <<set _PowerLevelCheck to false>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if setup.TypeOf($PC[_AllPCS][$PClevel]) is "number">>\ <<if $PC[_AllPCS][$PClevel] > 9>>\ <<set _PowerLevelCheck to true>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _PowerLevelCheck is true>>\ @@color:Yellow;Awarding skipped Power Level achievement...@@ <<AwardAchievement "Power Leveler">>\ <<endif>>\ <<endif>>\ <!-- desert update -->\ <<if setup.TypeOf($WORLD.HDZE) is "number">>\ <<else>>\ @@color:Yellow;Applying desert update...@@ <<set $PCdx to 58>>\ <<set $PCdy to 59>>\ <<set $PCdz to 60>>\ <<set $PChdze to 61>>\ <<set $PC[0][$PCdx] to 0>>\ <<set $PC[0][$PCdy] to 0>>\ <<set $PC[0][$PCdz] to 0>>\ <<set $PC[0][$PChdze] to 0>>\ <<set $WORLD.HDZE to 0>>\ <<set $WORLD.DesertDims to []>>\ <<set $WORLD.DesertDims[0] to 14>>\ <<set $WORLD.DesertDims[1] to 14>>\ <<set $BPstinger to 117>> <<set $BPpincer to 118>> <<endif>>\ <<set _DesertProblems to 0>>\ <<set _ListOfPTRs to [$PCdx, $PCdy, $PCdz, $PChdze]>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if setup.CharacterExists(_AllPCS) is true>>\ <<for _i to 0; _i < _ListOfPTRs.length; _i++>>\ <<if setup.TypeOf($PC[_AllPCS][_ListOfPTRs[_i]]) is "number">>\ <<else>>\ <<set $PC[_AllPCS][_ListOfPTRs[_i]] to 0>>\ <<set _DesertProblems to _DesertProblems +1>>\ <<endif>>\ <</for>>\ <<endif>>\ <</for>>\ <<if _DesertProblems > 0>>\ @@color:Yellow;Initializing (<<print _DesertProblems>>) missing desert update character variables...@@ <<endif>>\ \ <<if setup.TypeOf($WORLD.circle) is "number">>\ <<else>>\ <<set $WORLD.circle to 0>>\ @@color:Yellow;You don't have a magic circle tracker? Really? Ok, creating one...@@ <<endif>>\ <<if ($WORLD.circle > 0) and ($Dungeon[5][7][1][11] neq "StairsUp")>>\ @@color:Yellow;Zehtalia defeated: UNLOCKING STAIRS ON TOWER LEVEL 5!@@ <<set $Dungeon[5][7][1][11] to "StairsUp">>\ <<endif>>\ <<if setup.TypeOf($WORLD.CharLocs) is "array">>\ <<else>>\ @@color:Yellow;Updating character interaction location data...@@ <<set $WORLD.CharLocs to []>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<set $WORLD.CharLocs[_AllPCS] to []>>\ <<PlaceCharForMultiChar _AllPCS>>\ <</for>>\ <<endif>>\ \ <<set _BoobsChanged to 0>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if setup.CharacterExists(_AllPCS) is true>>\ <<for _i to 0; _i < $PC[_AllPCS][$PCbp].length; _i++>>\ <<if $PC[_AllPCS][$PCbp][_i].type is $BPboobs>>\ <<if $PC[_AllPCS][$PCbp][_i].equippable is false>>\ <<set _BoobsChanged to _BoobsChanged +1>>\ <<set $PC[_AllPCS][$PCbp][_i].equippable to true>>\ <<endif>>\ <<endif>>\ <</for>>\ <<endif>>\ <</for>>\ <<if _BoobsChanged > 0>>\ @@color:Yellow;Making _BoobsChanged pairs of boobs equippable...@@ <<endif>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if setup.CharacterExists(_AllPCS) is true>>\ <<if setup.TypeOf($PC[_AllPCS][$PCFlirtFromEquip]) is "number">>\ <<else>>\ <<set $PC[_AllPCS][$PCFlirtFromEquip] to 0>>\ @@color:Yellow;Adding flirt from equipment tracker...@@ <<endif>>\ <<endif>>\ <</for>>\ \ <!-- Update kill pointers -->\ <<set _CurrentHighestTarget to 28>>\ <<for _i to 0; _i < _CurrentHighestTarget +1; _i++>>\ <<if setup.TypeOf($PC[0][$PCkills][_i]) is "number">>\ <<else>>\ <<set _PTRfor to setup.KillPTRToMonName(_i)>>\ @@color:Yellow;Adding kill counters for monster type: '<<print _PTRfor>>'...@@ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if $PC[_AllPCS][$PCstate] is "alive">>\ <<set $PC[_AllPCS][$PCkills][_i] to 0>>\ <<endif>>\ <</for>>\ <<endif>>\ <</for>>\ \ <!-- global corrections -->\ @@color:Yellow;Applying general fixes...@@ <<set $BPstinger to 117>>\ <<set $BPpincer to 118>>\ <<set _InvalidBPcounter to 0>>\ <<for _AllPCS to 0; _AllPCS < 3; _AllPCS++>>\ <<if setup.CharacterExists(_AllPCS) is true>>\ <<for _i to $PC[_AllPCS][$PCbp].length -1; _i > -1; _i-->>\ <<if setup.TypeOf($PC[_AllPCS][$PCbp][_i].type) is "number">>\ <<else>>\ <<set _InvalidBPcounter to _InvalidBPcounter +1>>\ <<set _throwaway to $PC[_AllPCS][$PCbp].deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<endif>>\ <</for>>\ <<if _InvalidBPcounter > 0>>\ @@color:Orange;WARNING:@@ Removing <<print _InvalidBPcounter>> broken body parts... <<if _InvalidBPcounter > 3>>\ (_InvalidBPcounter) is a suspiciously high number. Please back up your save before you accept this. <<endif>>\ <<endif>>\ \ \ \ @@color:Yellow;Running Recalc...@@ <<Recalc>>\ \ @@color:Yellow;Updating version number@@ <<set $WORLD.GameVersion to "Build 23.7.05">>\ \ <hr>\ @@color:Gold;Results@@ If you didn't get any bright red errors, the update probably worked fine. If you do run into problems, try resetting your world state from the menu. \ <hr>\ @@color:Gold;Options@@ <<link "Save changes and continue" "Preamble">> <<AutoSaveLoad "set">> <</link>> <<link "Do NOT save changes" "Preamble">> <</link>> <span id="KeypESC">\ <<link "esc) close window">> <<script>> Dialog.close(); document.activeElement.blur(); <</script>> <</link>>\ </span>\ \ <hr>\ \ <table>\ <tr>\ <td style="vertical-align: top;border: 20px solid #111111;">\ \ <<button "[Human]">> <<replace "#AvatarChooserPortal">><<AvatarShowHuman>><</replace>>\ <</button>> <<button "[Animal]">> <<replace "#AvatarChooserPortal">><<AvatarShowAnimal>><</replace>>\ <</button>> <<button "[Anthro]">> <<replace "#AvatarChooserPortal">><<AvatarShowAnthro>><</replace>>\ <</button>> <<button "[Goblin]">> <<replace "#AvatarChooserPortal">><<AvatarShowGoblin>><</replace>>\ <</button>> <hr> \ </td>\ <td style="vertical-align: top;border: 8px solid #111111;">\ <span id="AvatarChooserPortal"><<AvatarShowHuman>></span>\ \ </td>\ </tr>\ </table>\ <!-- <<button "[Demon]">> <<replace "#AvatarChooserPortal">><<AvatarShowDemon>><</replace>>\ <</button>> <<button "[Monster]">> <<replace "#AvatarChooserPortal">><<AvatarShowMonster>><</replace>>\ <</button>> <<button "[Slime]">> <<replace "#AvatarChooserPortal">><<AvatarShowSlime>><</replace>>\ <</button>> -->\<<timed 200ms>>\ <<audio "menu_bgm" stop>>\ <</timed>>\ <<PlayBGM "town">>\ \ <<set _throwaway to setup.InitDesertCaves()>>\ \ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ \ <<set $PC[$CC][$PCz] to 0>>\ <<set $PC[$CC][$PClocation] to "town">>\ \ <<MapCrescentheartSouth>>\ <hr>\ \ <<set $WORLD.datapasser to "">>\ Crescentheart's southern half is skirted by the Aubergis river, the last source of fresh water for many miles. On the far side you can see a rocky badlands leading to a flat, dry desert dotted with salt flats. <hr>\ \ <<if $PC[$CC][$PChpcur] < 1>>\ <<if $PC[$CC][$PChunger] < 1>>\ <<set $WORLD.diedby to "Starved to death">>\ @@color:Red;You have starved to death!@@ It's unfortunate, but you do need to eat. If food is too expensive, you could try carrying around a butcher knife to carve up some of those monsters you keep fighting. Of course, that probably has side effects.\ <<AwardAchievement "Starve to death">>\ <<else>>\ <<set $WORLD.diedby to "Ran out of health in town, but not by starvation?">>\ @@color:Red;You have died!@@ @@color:Yellow;Debug: how did this happen?@@ <<endif>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "Death">> <</link>>\ </span> <<else>>\ @@color:Gold;Zone Navigation@@ - click on the map to visit locations <span id="KeypNorth"><span id="KeypUP">\ <<link "w) North, to Crescentheart North" "TownSquare">> <<AdvanceTime 10>> <</link>>\ </span></span> <<if $WORLD.bridge is 1>>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "d) South, into the desert" "Desert">> <<set $PC[$CC][$PCdz] to 1>> <<set $PC[$CC][$PCdx] to Math.trunc($WORLD.ForestDims[0] / 2)>> <<set $PC[$CC][$PCdy] to 0>> <<set $WORLD.datapasser to "reset desert">> <<AdvanceTime 30>> <</link>>\ </span></span> <<else>>\ s) The bridge is destroyed <<endif>>\ <hr> @@color:Gold;Options@@ <<link "Save and exit to character menu" "Preamble">> <<AutoSaveLoad "set">> <</link>>\ <<endif>>\ <<set _ChatAvailable to false>>\ <<for _i to 0; _i < $PC[$CC][$PCBoltmanChat].length; _i++>>\ <<if $PC[$CC][$PCBoltmanChat][_i] is 1>>\ <<set _ChatAvailable to true>>\ <<endif>>\ <</for>>\ <<if $PC[$CC][$PCBoltmanChat][0] is 0>>\ <<set _ChatAvailable to true>>\ <<endif>>\ \ <<if $BoltmanTalk is "yes">>\ <<SimplePic "boltman.jpg">>\ @@color:LightGreen;Lumber mill@@ <hr>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ \ <<if _CurrentQuestion is 0>>\ <<if $PC[$CC][$PCBoltmanChat][0] is 0>>\ <<set $PC[$CC][$PCBoltmanChat][0] to 2>>\ The shopkeeper here is a plain-looking man with a brown beard. You glance over him looking for transformations, but nothing particularly stands out. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hi," you greet him. "I'm $PC[$CC][$PCname]." @@color:LightGreen;Shopkeeper@@: "Boltman," he replies. "Are you here to buy or sell?" <!-- Unlocks -->\ <<if $PC[$CC][$PCBoltmanChat][1] is 0>>\ <<set $PC[$CC][$PCBoltmanChat][1] to 1>><!-- Ask about the lumber trade-->\ <<endif>>\ <<if $PC[$CC][$PCBoltmanChat][2] is 0>>\ <<set $PC[$CC][$PCBoltmanChat][2] to 1>><!-- Ask about the bridge -->\ <<endif>>\ <<else>>\ @@color:LightGreen;Boltman@@: "<<print either("Good to see you","Hello again")>>, <<print $PC[$CC][$PCname]>>. What can I get for you?" <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCBoltmanChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about the lumber trade?" @@color:LightGreen;Boltman@@: "What do you mean? My business in general, or the product itself?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Both?" @@color:LightGreen;Boltman@@: "Not much to tell," he shrugs. "There are four basic types of wood in these parts. Hardwood, steelwood, faerie wood, and anything that isn't one of those three. Hardwood and steelwood are the best building materials for general construction. Faerie wood's for high-end fancy stuff and magic. And the others, pine and cedar mostly...those are pretty soft, so they're mostly used for small crafts and interior decoration. And they'll work for plugging up holes in a pinch, but you probably wouldn't want to build a foundation out of them. Too soft." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Which do you sell?" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "All four types. And I buy in bulk too, so if you fancy yourself a forester, feel free to cut 'em down and bring to me. Saves me the trouble of logging myself. I sell hatchet's if you need one." <!-- unlocks -->\ <<if $PC[$CC][$PCBoltmanChat][3] is 0>>\ <<set $PC[$CC][$PCBoltmanChat][3] to 1>><!-- Ask about hatchet quality -->\ <<endif>>\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCBoltmanChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Any idea what happened to the bridge out front?" He glances around before answering you. @@color:LightGreen;Boltman@@: "Had to demolish it," he explains with a whisper. "Bunch of ant-men from the desert down south tried to come in and bust up the town. Fortunately I was here to save the day." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What happened to the bodies?" @@color:LightGreen;Boltman@@: "Uhh...I cut them up and threw them in the river?" he asks as if thinking, then nods as if suddenly sure. "Yep, that's what I did. Didn't want them stinking up the place, so they're all gone now. Sorry." <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCBoltmanChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Does hatchet quality make a difference?" @@color:LightGreen;Boltman@@: "Sure does," he nods. "Softer metals are easier to shape, but a blade needs to be at least as hard as the wood it's cutting if you're to fell a tree with it. Copper will barely even cut some of the plain wood trees out there. Brass is a bit better, but for hardwood you'll need at least iron, to say nothing of steel or faerie wood. Of course, an experienced lumberjack can usually get more use out of his tool than your average Joe. All the same, I recommend buying the best tool you can afford. It will pay off in the long run." <!-- unlocks -->\ <<if $PC[$CC][$PCBoltmanChat][8] is 0>>\ <<set $PC[$CC][$PCBoltmanChat][8] to 1>> <<endif>>\ <<elseif _CurrentQuestion is 4>>\ <<set $PC[$CC][$PCBoltmanChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "" @@color:LightGreen;Boltman@@: "" <<elseif _CurrentQuestion is 5>>\ <<elseif _CurrentQuestion is 6>>\ <<elseif _CurrentQuestion is 7>>\ <<elseif _CurrentQuestion is 8>>\ <<else>>\ Error: unrecognized question: _CurrentQuestion <<endif>>\ <hr>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <!-- questions unlocked by external events go here-->\ \ <<for _i to 0; _i < $PC[$CC][$PCBoltmanChat].length; _i++>>\ <<if $PC[$CC][$PCBoltmanChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Introduce yourself">>\ <<set _QuestionPool[1] to "Ask about the shop">>\ <<set _QuestionPool[2] to "Ask about the broken bridge">>\ <<set _QuestionPool[3] to "Ask about hatchets">>\ <<set _QuestionPool[4] to "q4">>\ <<set _QuestionPool[5] to "q5">>\ <<set _QuestionPool[6] to "q6">>\ <<set _QuestionPool[7] to "q7">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done talking for now" "StoreLumber">> <<set $WORLD.gstore to 2>>\ <<AdvanceTime 5>> <<unset $BoltmanTalk>>\ <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StoreLumber">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<else>>\ <<SimplePic "boltman.jpg">>\ @@color:LightGreen;Lumber mill@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSouth">> <<AdvanceTime 5>> <</link>>\ </span> <<if _ChatAvailable is false>>\ c) No chats available <<elseif $PC[$CC][$PCBoltmanChat][1] is 2>>\ <span id="KeypC">\ <<link "c) Chat with Boltman" "StoreLumber">> <<set $BoltmanTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<else>>\ <span id="KeypC">\ <<link "c) Chat with the shopkeeper" "StoreLumber">> <<set $BoltmanTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<endif>>\ <hr>\ <<LumberMill>> <<endif>>\ <<if $DebugMode is true>>\ <hr>\ Boltman: <<print $PC[$CC][$PCBoltmanChat]>> <<endif>>\<<set _ChatAvailable to false>>\ <<for _i to 0; _i < $PC[$CC][$PCDaphneChat].length; _i++>>\ <<if $PC[$CC][$PCDaphneChat][_i] is 1>>\ <<set _ChatAvailable to true>>\ <<endif>>\ <</for>>\ <<if $PC[$CC][$PCDaphneChat][0] is 0>>\ <<set _ChatAvailable to true>>\ <<endif>>\ \ <<if $DaphneTalk is "enchant">>\ <<SimplePic "daphne.png">>\ @@color:LightGreen;Daphne's Fine Jewelry@@ <hr>\ @@color:LightGreen;Daphne@@: "What can I enchant for you, <<print either("dear","darling")>>?" <hr>\ <<set $RingOrAmulet to 500>>\ <<button "Enchant Type">>\ <<if $RingOrAmulet is 500>>\ <<set $RingOrAmulet to 501>> <<replace "#RingOrAmuletText">>Amulet<</replace>> <<else>>\ <<set $RingOrAmulet to 500>> <<replace "#RingOrAmuletText">>Ring<</replace>> <<endif>>\ <</button>>: <span id="RingOrAmuletText">Ring</span>\ <hr>\ <<set $DaphneTalk to "ring">>\ <span id="DaphneEnchantPortal"></span>\ <<set _AvailableGems to []>>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<if (_item[0] > 549) and (_item[0] < 560)>>\ <<if (_item[3] > 0) and (_item[3] < 21)>>\ <<set _AvailableGems[_AvailableGems.length] to _i>>\ <<endif>>\ <<endif>>\ <</for>>\ \ <<for _i to 0; _i < _AvailableGems.length; _i++>>\ <<set _ItemPTR to _AvailableGems[_i]>>\ <<set _item to $PC[$CC][$PCinven][_ItemPTR]>>\ <<DescribeItem _item>>\ <<set _ItemName to $ItemPoke.fullname>>\ <<set _GemType to $PC[$CC][$PCinven][_ItemPTR][0]>>\ <<if _GemType is 550>><!-- quartz: health 1:5 -->\ <<set _Enchant to "of health">>\ <<set _Multi to 1>>\ <<elseif _GemType is 551>><!-- garnet defense 1:4 -->\ <<set _Enchant to "of defense">>\ <<set _Multi to 1>>\ <<elseif _GemType is 552>><!-- citrine tohit 1:3 -->\ <<set _Enchant to "of accuracy">>\ <<set _Multi to 1>>\ <<elseif _GemType is 553>><!-- moonstrate mp 1:1 -->\ <<set _Enchant to "of mana">>\ <<set _Multi to 1>>\ <<elseif _GemType is 554>>\ <<set _Enchant to "">>\ <<set _Multi to 1>>\ <<elseif _GemType is 555>>\ <<set _Enchant to "">>\ <<set _Multi to 1>>\ <<else>>\ <<set _Enchant to "error: " + _GemType>>\ <<set _Multi to 1>>\ <<endif>>\ <<set _MultiplyBy to ($PC[$CC][$PCinven][_ItemPTR][3] ** 2)>>\ <<set _Cost to 100 * (_GemType - 549) * _MultiplyBy>>\ <<set _ButtonText to "[Enchant for " + _Cost + "]">>\ <<if $PC[$CC][$PCcoins] gte _Cost>>\ <<capture _ItemPTR, _Cost>>\ <<button _ButtonText "StoreDaphne">>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - _Cost>> <<ShowCoins>> <<set _OldGem to $PC[$CC][$PCinven][_ItemPTR]>> <<set _AAA to $RingOrAmulet>>\ <<set _BBB to _OldGem[0]>>\ <<set _CCC to 0>>\ <<set _DDD to _OldGem[3]>>\ <<set _QuestUnlock to _BBB -550>> <<set $WORLD.DaphneQuests[_QuestUnlock] to 2>> <<set _NewJewelry to [_AAA, _BBB, _CCC, _DDD]>>\ <<set $PC[$CC][$PCinven][_ItemPTR] to _NewJewelry>>\ <<unset $DaphneTalk>>\ <</button>> <<print _ItemName>>: <<print _Enchant>> <</capture>>\ <<else>>\ <span class="grayb"><<button _ButtonText>><</button>></span> <<print _ItemName>>: <<print _Enchant>> <<endif>>\ <</for>>\ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Cancel" "StoreDaphne">> <<set $WORLD.gstore to 2>>\ <<AdvanceTime 5>> <<unset $DaphneTalk>> <<unset $RingOrAmulet>> <<set $PC[$CC][$PCDaphneChat][7] to 1>><!-- perpetual gem correlation reminder -->\ <</link>>\ </span> \ \ \ <<elseif $DaphneTalk is "yes">>\ <<SimplePic "daphne.png">>\ @@color:LightGreen;Daphne's Fine Jewelry@@ <hr>\ <<set _CurrentQuestion to $WORLD.datapasser>>\ \ <<if _CurrentQuestion is 0>>\ <<if $PC[$CC][$PCDaphneChat][0] is 0>>\ <<set $PC[$CC][$PCDaphneChat][0] to 2>>\ The prioprieter is a tall slime-girl sporting a pair of large breasts and four very phallic tentacles sprouting from her back. As you examine her, she watches you with half-lidded eyes. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Hello," you introduce yourself. "I'm $PC[$CC][$PCname]." @@color:LightGreen;Shopkeeper@@: "Welcome to Daphne's Fine Jewelry," the woman purrs. "Are you here for business or pleasure?" <!-- Unlocks -->\ <<if $PC[$CC][$PCDaphneChat][1] is 0>>\ <<set $PC[$CC][$PCDaphneChat][1] to 1>><!-- Business-->\ <<endif>>\ <<if $PC[$CC][$PCDaphneChat][2] is 0>>\ <<set $PC[$CC][$PCDaphneChat][2] to 1>><!-- Pleasure -->\ <<endif>>\ <<else>>\ @@color:LightGreen;Daphne@@: "<<print either("Hello, darling.","Welcome back, darling.")>> <<print either("What can I do for you?","Are you here to buy, or just to admire what's on display?")>> <<endif>>\ <<elseif _CurrentQuestion is 1>>\ <<set $PC[$CC][$PCDaphneChat][1] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I'm here for business," you nod at some of the stonesunder glass. "Tell me about your wares. You sell gems?" @@color:LightGreen;Daphne@@: "Oh, you poor dear," she pities you, then dramatically throws her arms wide, her slime boobs jiggling as she does. "I am an //enchantress// and my trade is to keep brave tower adventurers supplied with the greatest and finest magic in all of the Crescentheart! These precious gems you see are merely but tools of the trade that I offer for the convenience of my customers." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You can enchant my gear?" <<set _PCaddress to "lady">>\ <<if $PC[$CC][$PCsex] is "male">>\ <<set _PCaddress to "gentleman">>\ <<endif>>\ @@color:LightGreen;Daphne@@: "Not just //any// gear, darling. Only the //finest// and most priceless of rings and jewelry, splendid and decadent in their lustrous beauty! Oh yes, my dear...the most precious of gems set in a glistening ring or necklace of your choice, and wrapped up in glorious magic! That is what you long for, isn't it? Just a tiny extra glimpse of true power? No? Oh, I see. Yes, of course. I see it in your eyes. Such a discerning <<print _PCaddress>> as yourself would never settle for a pittance. So why not go large? If you wish, in time, I could make you one of the most powerful adventurers ever to grace my shop! You can have it all, wrapped up in an exquisite package of splendor and beauty...and all for but a //tiny// sum of gold, just a token payment really, a trifle." Something about the glint in her eyes when she tells you how inexpensive her enchantments are keeps you on edge. <!-- unlocks -->\ <<if $PC[$CC][$PCDaphneChat][3] is 0>>\ <<set $PC[$CC][$PCDaphneChat][3] to 1>><!-- Enchanting overview -->\ <<endif>>\ <<if $PC[$CC][$PCDaphneChat][4] is 0>>\ <<set $PC[$CC][$PCDaphneChat][4] to 1>><!-- What enchantments are available-->\ <<endif>>\ <<elseif _CurrentQuestion is 2>>\ <<set $PC[$CC][$PCDaphneChat][2] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I'm here for pleasure," you whisper throatily, staring at her body. @@color:LightGreen;Daphne@@: "Oh, are you now?" she giggles. Despite being taken in by her charm, you find yourself suddenly leaping back at the unexpected sensation of a goo-tentacle sliding moistly between your thighs. @@color:LightGreen;Daphne@@: "A little jumpy, aren't we?" she teases. "Maybe try again when you're feeling less skittish, dear. I prefer not to have to chase after my meals." <<elseif _CurrentQuestion is 3>>\ <<set $PC[$CC][$PCDaphneChat][3] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Ok. So how does this work? I give you money and you give me magic equipment?" @@color:LightGreen;Daphne@@: "Oh, but darling..." she smiles sadly at you. "It's not quite that simple. The magic of the Goddess never is, it seems. If you want to harness true power, you'll need to unlock it one step at a time." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How?" @@color:Gold;Enchanting 101@@ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Aqua;Step 1:@@ Learn the soul trap spell. Note this this spell is very mana intensive, with costs that scale with the level of the target to be captured. In general it is recommended to not try enchanting until you have at least 20 mana. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Aqua;Step 2:@@ Acquire and equip a gemstone. With the gemstone equipped, cast soul trap on a //tower// monster, then win the battle to trap the target's soul in the gem. Spell effect is determined by gemstone type, while the strength of its effect is determined by the level of the soul captured. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@color:Aqua;Step 3:@@ Return to Daphne, pay an exorbitant fee to permanently enchant the gem's magic into a piece of equippable jewelry. @@color:LightGreen;Daphne@@: "Oh, do ignore that last bit," Daphne waves a hand dismissively. "My fees are //very// reasonable, but nonsense like that keeps the lawyers happy." <<elseif _CurrentQuestion is 4>>\ <<set $PC[$CC][$PCDaphneChat][4] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What exactly do enchamentments do?" @@color:LightGreen;Daphne@@: "Many things," she draws out her words for emphasis "But most often they provide passive effects so long as you keep an item equipped. A simple enchanment might increase your health or reduce the damage you take. A more powerful item might allow you to siphon blood from your defeated foes to heal yourself. It all depends on the gem." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Can you tell me which gems do what?" @@color:LightGreen;Daphne@@: "Sadly no," she raises the back of one hand to her forehead and sighs dramatically, then latches onto your ankle with a tentacle to pull you in closer. "Of course I would //love// to tell you precisely what each and every gem in my store does, darling. Believe me, I would. But, alas...the magic of the goddess isn't quite so simple as that, and //unfortunately// dear, you'll just have to buy each and every single stone that I painstakingly stock at great personal expense for the //good// of fellow adventurers like yourself, in order to experiment with them one by one. Alas, it's barely a break-even proposition for me most of the time, but such a kind and gerenous soul as myself is simply obliged to share the goodness." Between the glint in her eyes and her nipples very obviously hardening when she mentions buying her products, you're a little skeptical that she's telling the the whole truth. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Do you know Rina at the guildhall, by chance?" @@color:LightGreen;Daphne@@: "Oh, yes!" she smiles. "Charming girl. I still remember all those years ago when she took over from Lyta, the prior guild clerk. My, how time flies." <!-- unlocks -->\ <<if $PC[$CC][$PCDaphneChat][5] is 0>>\ <<set $PC[$CC][$PCDaphneChat][5] to 1>><!-- ? -->\ <<endif>>\ <<elseif _CurrentQuestion is 5>>\ <<set $PC[$CC][$PCDaphneChat][5] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Were you an adventurer once?" @@color:LightGreen;Daphne@@: "Can't you tell, dear?" she smiles in amusement, waving her goo-tentacles behind her. "Made it impressively far, I might add. But I found that I enjoyed myself a bit too much, almost as much as the creatures in their enjoyed myself, I suspect. After a time it simply became too much of a burden, and so I retired." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What sort of creatures are up there in the higher levels?" @@color:LightGreen;Daphne@@: "Oh, all sorts of lovely things," she glances down at her own body. "I wasn't always like this, you know." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I guessed that." @@color:LightGreen;Daphne@@: "No dear, you misunderstand," she hefts her gooey slime breasts in both hands. "I didn't used to have these, you see. I was once a strapping yound lad, remarkably well endowed, shall we say. I took to adventuring because of the bunny girls...oh, such good times those were. And when I graduated to the tower, first it was busty goblins, then naga, so //eager// for my embrace, slimes, cow girls...such a lovely variety of ladies, all waiting in line for my pleasure, it seemed." <!-- unlocks -->\ <<if $PC[$CC][$PCDaphneChat][6] is 0>>\ <<set $PC[$CC][$PCDaphneChat][6] to 1>><!-- ? -->\ <<endif>>\ <<elseif _CurrentQuestion is 6>>\ <<set $PC[$CC][$PCDaphneChat][6] to 2>>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What happened?" @@color:LightGreen;Daphne@@: "I climbed too high," she smiles deviously at you. "And got caught by a tentacle monster. By the time it was done with me, my...manhood was not quite so manly as it had once been, and in its place was the very thing I sought to enjoy. I came back another time to try to reclaim myself, and another, and another...but each time I became more soft, more supple, more deliciously //desireable// myself until at last I realized I wasn't even trying to win anymore. I wasn't even going to enjoy myself. I was going...to be enjoyed. And I knew then, that I didn't have much time left." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What do you mean?" @@color:LightGreen;Daphne@@: "Don't make me say it, darling," she admonishes you. "All the 'creatures' in the forest, and probably most in the tower, I'd wager...let's just say I was among the early settlers in this region, and back then it wasn't nearly so...populated." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "You mean the monsters were //human// once?" you gasp at the implication. "Adventurers? All of them, turned?" @@color:LightGreen;Daphne@@: "Who can say?" she shrugs dismissively. " <<elseif _CurrentQuestion is 7>>\ <!-- this remains always avaialble -->\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Would you remind me which enchantments have been unlocked?" <<set _DUnlocks to 0>>\ <<for _i to ($WORLD.DaphneQuests.length -1); _i > -1; _i-->>\ <<if $WORLD.DaphneQuests[_i] is 2>>\ <<set _DUnlocks to _DUnlocks +1>>\ <<endif>>\ <</for>>\ <<if _DUnlocks > 0>>\ @@color:LightGreen;Daphne@@: "Of course, dear." <<set _Gems to ["Quartz","Garnet","Citrine","Moonstone","Amythyst","Aquamarine","Star Opal","Emerald","Sapphire","Diamond"]>>\ <<set _Descs to []>>\ <<set _Descs[0] to "increases health, +5 per soul level">>\ <<set _Descs[1] to "Increases defense, +4 per soul level">>\ <<set _Descs[2] to "Increase accuracy, +3 per soul level">>\ <<set _Descs[3] to "Increase max mana, +1 per soul level">>\ <<set _Descs[4] to "is NOT IMPLEMENTED">>\ <<set _Descs[5] to "is NOT IMPLEMENTED">>\ <<set _Descs[6] to "is NOT IMPLEMENTED">>\ <<set _Descs[7] to "is NOT IMPLEMENTED">>\ <<set _Descs[8] to "is NOT IMPLEMENTED">>\ <<set _Descs[9] to "is NOT IMPLEMENTED">>\ <<for _i to 0; _i < $WORLD.DaphneQuests.length; _i++>>\ <<if $WORLD.DaphneQuests[_i] is 2>>\ &nbsp;<<Bullet>>&nbsp;@@color:Aqua;<<print _Gems[_i]>>@@: <<print _Descs[_i]>> <<endif>>\ <</for>>\ <<else>>\ @@color:LightGreen;Daphne@@: "I would love to darling, but unfortunately you haven't enchanted anything yet." <<endif>>\ <<else>>\ Error: unrecognized question: _CurrentQuestion <<endif>>\ <hr>\ <<set _AskTheseQuestions to []>>\ <<set _CurrentQuestionPTR to 0>>\ \ <<set _UnaskedCantAsk to 0>>\ <<set _UnaskedCANAsk to 1>>\ <<set _AlreadyAnswered to 2>>\ \ <!-- questions unlocked by external events go here-->\ \ <<for _i to 0; _i < $PC[$CC][$PCDaphneChat].length; _i++>>\ <<if $PC[$CC][$PCDaphneChat][_i] is 1>>\ <<set _AskTheseQuestions[_CurrentQuestionPTR] to _i>>\ <<set _CurrentQuestionPTR to _CurrentQuestionPTR +1>>\ <<endif>>\ <</for>>\ \ <<set _QuestionPool to []>>\ <<set _QuestionPool[0] to "Default intro">>\ <<set _QuestionPool[1] to "I'm here for business">>\ <<set _QuestionPool[2] to "I'm here for pleasure">>\ <<set _QuestionPool[3] to "How does this work?">>\ <<set _QuestionPool[4] to "What do enchantments do?">>\ <<set _QuestionPool[5] to "Were you an adventurer?">>\ <<set _QuestionPool[6] to "What happened?">>\ <<set _QuestionPool[7] to "Would you remind me which gem does what?">>\ \ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) I'm done talking for now" "StoreDaphne">> <<set $WORLD.gstore to 2>>\ <<AdvanceTime 5>> <<unset $DaphneTalk>>\ <<set $PC[$CC][$PCDaphneChat][7] to 1>><!-- perpetual gem correlation reminder -->\ <</link>>\ </span> \ <<set _SpanTexts to ["KeypOne","KeypTwo","KeypThree","KeypFour","KeypFive","KeypSix"]>>\ <<set _KeyChars to ["1","2","3","4","5","6"]>>\ \ <<set _NextQuestion to 0>>\ <<for _i to 0; _i < _AskTheseQuestions.length; _i++>>\ <span @id="_SpanTexts[_NextQuestion]">\ <<set _NextQuestion to _NextQuestion +1>>\ <<set _LinkText to _KeyChars[_i] + ") " + _QuestionPool[_AskTheseQuestions[_i]]>>\ <<capture _i>>\ <<link _LinkText "StoreDaphne">> <<set $WORLD.datapasser to _AskTheseQuestions[_i]>>\ <</link>> <</capture>>\ </span>\ <</for>>\ <<else>>\ <<SimplePic "daphne.png">>\ @@color:LightGreen;Daphne's Fine Jewelry@@ <span id="KeypSpace">\ <<link "space) Return to town" "TownSouth">> <<AdvanceTime 5>> <</link>>\ </span> <<if _ChatAvailable is false>>\ c) No chats available <<elseif $PC[$CC][$PCDaphneChat][1] is 2>>\ <span id="KeypC">\ <<link "c) Chat with Daphne" "StoreDaphne">> <<set $DaphneTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<else>>\ <span id="KeypC">\ <<link "c) Chat with the shopkeeper" "StoreDaphne">> <<set $DaphneTalk to "yes">>\ <<set $WORLD.datapasser to 0>>\ <</link>>\ </span> <<endif>>\ \ <!-- enchanting -->\ \ <<set _SoulGemsReady to 0>>\ <<for _i to 0; _i < $PC[$CC][$PCmaxinven]; _i++>>\ <<set _item to $PC[$CC][$PCinven][_i]>>\ <<if (_item[0] > 549) and (_item[0] < 560)>>\ <<if (_item[3] > 0) and (_item[3] < 21)>>\ <<set _SoulGemsReady to _SoulGemsReady +1>>\ <<endif>>\ <<endif>>\ <</for>>\ <<if _SoulGemsReady > 0>>\ <span id="KeypE">\ <<link "e) Enchanting" "StoreDaphne">> <<set $DaphneTalk to "enchant">>\ <<set $WORLD.datapasser to "">>\ <</link>>\ </span> <<endif>>\ <span id="KeypWest">\ <<link "a) Armor enchanting" "Test">> <</link>>\ </span> \ <hr>\ <<Store $Daphne>> <<endif>>\ \ <<if $DebugMode is true>>\ <hr>\ DaphneChat: <<print $PC[$CC][$PCDaphneChat]>> Stock: <<for _i to 0; _i < 10; _i++>>\ _i) <<print $STORE[$Daphne][_i]>> <</for>>\ <<endif>>\<<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "main">>\ \ <<set _ExitLinks to "AllowLeave">>\ \ <<set _Hammer to setup.HasItemA(101)>>\ <<set _PlainwoodPTR to setup.HasItemA(105)>>\ <<set _PlainwoodQty to 0>>\ <<if _PlainwoodPTR > -1>>\ <<set _PlainwoodQty to $PC[$CC][$PCinven][_PlainwoodPTR][2]>>\ <<endif>>\ <<set _HardwoodPTR to setup.HasItemA(120)>>\ <<set _HardwoodQty to 0>>\ <<if _HardwoodPTR > -1>>\ <<set _HardwoodQty to $PC[$CC][$PCinven][_HardwoodPTR][2]>>\ <<endif>>\ <<set _SteelwoodPTR to setup.HasItemA(121)>>\ <<set _SteelwoodQty to 0>>\ <<if _SteelwoodPTR > -1>>\ <<set _SteelwoodQty to $PC[$CC][$PCinven][_SteelwoodPTR][2]>>\ <<endif>>\ \ <<if $WORLD.bridge is 1>>\ @@color:Gold;Bridge@@ With the bridge repaired, you can now access the southern desert. <hr> <span id="KeypSpace">\ <<link "space) Return to town" "TownSouth">> <<AdvanceTime 5>> <</link>>\ </span> <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) South into the desert" "Desert">> <<set $PC[$CC][$PCdz] to 1>> <<set $PC[$CC][$PCdx] to Math.trunc($WORLD.ForestDims[0] / 2)>> <<set $PC[$CC][$PCdy] to 0>> <<set $WORLD.datapasser to "reset desert">> <<AdvanceTime 30>> <</link>>\ </span></span> <<else>>\ @@color:Gold;Broken bridge@@ <hr> The bridge is thoroughly smashed up, cut up by an axe from the look of it. Unfortunately, as is tradition for hardened adventurers the world over, you never learned how to swim despite how obviously useful a skill it would be. <<if (_Hammer > 0) or (_PlainwoodQty > 0) or (_SteelwoodQty > 0)>>\ Surveying the bridge, you find serviceable stone foundations, but the wood is throroughly smashed and will need to be completely replaced. To perform the upgrade, you'll need: <<set _AllowUpgrade to true>>\ <<if _Hammer > -1>>\ @@color:LightGreen; * A hammer (have)@@ <<else>>\ <<set _AllowUpgrade to false>>\ @@color:Red;* A hammer@@ <<endif>>\ <<if _PlainwoodQty > 49>>\ @@color:LightGreen; * 50 logs (have _PlainwoodQty)@@ <<elseif _PlainwoodQty > 0>>\ <<set _AllowUpgrade to false>>\ @@color:Yellow; * 50 logs (have _PlainwoodQty)@@ <<else>>\ <<set _AllowUpgrade to false>>\ @@color:LightRed; * 50 logs (have 0)@@ <<endif>>\ <<if _SteelwoodQty > 9>>\ @@color:LightGreen; * 10 steelwood (have _SteelwoodQty)@@ <<elseif _SteelwoodQty > 0>>\ <<set _AllowUpgrade to false>>\ @@color:Yellow; * 10 steelwood (have _SteelwoodQty)@@ <<else>>\ <<set _AllowUpgrade to false>>\ @@color:LightRed; * 10 steelwood (have 0)@@ <<endif>>\ <<set _Hunger to Math.trunc($PC[$CC][$PChunger] / 5)>>\ <<if $PC[$CC][$PChunger] > 249>>\ @@color:LightGreen; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<elseif $PC[$CC][$PChunger] > 300>>\ @@color:Yellow; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<else>>\ <<set _AllowUpgrade to false>>\ @@color:Red; * Stamina of at least 50% (Currently at <<print _Hunger>>%) <<endif>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "TownSouth">> <<AdvanceTime 5>> <</link>>\ </span> <<if _AllowUpgrade is true>>\ <span id="KeypR">\ <<link "r) Repair the bridge" "Bridge">> <<if $PC[$CC][$PCinven][_PlainwoodPTR][2] > 100>>\ <<set $PC[$CC][$PCinven][_PlainwoodPTR][2] to $PC[$CC][$PCinven][_PlainwoodPTR][2] -100>> <<else>> <<set $PC[$CC][$PCinven][_PlainwoodPTR] to [0,0,0,0]>> <<endif>> <<if $PC[$CC][$PCinven][_SteelwoodPTR][2] > 100>>\ <<set $PC[$CC][$PCinven][_SteelwoodPTR][2] to $PC[$CC][$PCinven][_SteelwoodPTR][2] -100>> <<else>> <<set $PC[$CC][$PCinven][_SteelwoodPTR] to [0,0,0,0]>> <<endif>> <<set $WORLD.bridge to 1>> <<AdvanceTime 250>> <</link>>\ </span> <<endif>>\ <<else>>\ Perhaps with the right tools and materials you could repair it. <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" "TownSouth">> <<AdvanceTime 5>> <</link>>\ </span> <<endif>>\ <<endif>>\ <<widget "DoTransform">>\ <!-- source anatomy must accomodate swaps below -->\ <<set $ClonedPlayerAnatomy to clone($PC[$CC][$PCbp])>>\ <<set _source to $args[1]>>\ \ <!-- apply sex part filters -->\ <<if $DebugMode is true>>\ Debug: DoTransform morph is: <<print $args[0]>> Debug: DoTransform source is: _source <<endif>>\ <<if _source is "fountain">>\ <<set $SourceAnatomy to clone($args[0])>>\ <<elseif _source is "chest">>\ <<set $SourceAnatomy to clone($args[0])>>\ <<for _j to $ClonedPlayerAnatomy.length -1; _j gte 0 ; _j-->>\ <<if $ClonedPlayerAnatomy[_j].type is $BPhead>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPneck>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPback>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPchest>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPwield>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPhands>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPring>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPwaist>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPlegs>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPfeet>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<endif>>\ <</for>>\ <<elseif _source is "meat">>\ <<set $ForceMon to [$args[0], "male", $Mon.level]>>\ <<GetMon>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<for _i to $SourceAnatomy.length -1; _i gte 0 ; _i-->>\ <<if $SourceAnatomy[_i].type is $BPpenis>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<elseif $SourceAnatomy[_i].type is $BPpussy>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<elseif $SourceAnatomy[_i].type is $BPboobs>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<for _j to $ClonedPlayerAnatomy.length -1; _j gte 0 ; _j-->>\ <<if $ClonedPlayerAnatomy[_j].type is $BPpenis>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPpussy>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<elseif $ClonedPlayerAnatomy[_j].type is $BPboobs>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<endif>>\ <</for>>\ <<elseif _source is "semen">>\ <<set $ForceMon to [$args[0], "male", $Mon.level]>>\ <<GetMon>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<elseif _source is "milk">>\ <<set $ForceMon to [$args[0], "female", $Mon.level]>>\ <<GetMon>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<elseif _source is "sex">>\ <<if $Mon.sex is "male">>\ <<if $DebugMode is true>>\ Debug: Requesting $Mon.morph female <<endif>>\ <<set $ForceMon to [$Mon.morph, "female", $Mon.level]>>\ <<GetMon>>\ <<elseif $Mon.sex is "female">>\ <<if $DebugMode is true>>\ Debug: Requesting $Mon.morph male <<endif>>\ <<set $ForceMon to [$Mon.morph, "male", $Mon.level]>>\ <<GetMon>>\ <<else>>\ <<if $DebugMode is true>>\ Debug: No sex request, mon is $Mon.sex <<endif>>\ <!-- no action required for herms? -->\ <<endif>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<else>>\ @@color:Red;Error in DoTransform: unrecognized Tf source: _source <<endif>>\ \ \ <<if $DebugMode is true>>\ @@color:Gold;Source anatomy@@ <<for _i to 0; _i < $SourceAnatomy.length ; _i++>>\ <<set _TFa to setup.bpptrtoname($SourceAnatomy[_i].type, "casual")>>\ _i) <<print _TFa>>, <<print $SourceAnatomy[_i].morph>> <</for>>\ @@color:Gold;Player anatomy before transform@@ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_i].type, "casual")>>\ _i) <<print _TFa>>, <<print $PC[$CC][$PCbp][_i].morph>> <</for>>\ <<endif>>\ \ <<for _i to $SourceAnatomy.length -1; _i gte 0 ; _i-->>\ <<set _Stop to false>>\ <<for _j to $ClonedPlayerAnatomy.length -1; _j gte 0 ; _j-->>\ <<if _Stop is false>>\ <<if ($SourceAnatomy[_i].type is $ClonedPlayerAnatomy[_j].type) and ($SourceAnatomy[_i].morph is $ClonedPlayerAnatomy[_j].morph)>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<set _Stop to true>>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ \ <<if $DebugMode is true>>\ <hr> @@color:Gold;Source anatomy AFTER PRUNE@@ <<for _i to 0; _i < $SourceAnatomy.length ; _i++>>\ _i) <<print $SourceAnatomy[_i].type>>, <<print $SourceAnatomy[_i].morph>> <</for>>\ @@color:Gold;Player anatomy AFTER PRUNE@@ <<for _i to 0; _i < $ClonedPlayerAnatomy.length ; _i++>>\ _i) <<print $ClonedPlayerAnatomy[_i].type>>, <<print $ClonedPlayerAnatomy[_i].morph>> <</for>>\ <hr>\ <<endif>>\ \ <<set _WhichList to "source">>\ <<if ($SourceAnatomy.length is 0) and ($ClonedPlayerAnatomy.length is 0)>>\ <<set _WhichList to "none">>\ <<elseif ($ClonedPlayerAnatomy.length > $SourceAnatomy.length)>>\ <<set _WhichList to "player">>\ <<elseif $SourceAnatomy.length is 0>>\ <<set _WhichList to "player">>\ <<endif>>\ \ <<if $DebugMode is true>>\ @@color:LightGreen;Selected list is:@@ _WhichList <<endif>>\ \ <<if _WhichList is "source">>\ <<set _SelectedSource to random(0, $SourceAnatomy.length -1)>>\ <<if $DebugMode is true>>\ @@color:LightGreen;We've chosen to look for a: @@ $SourceAnatomy[_SelectedSource].type in the destination body <<endif>>\ <<set _LookingFor to []>>\ <<set _LookingFor[0] to $SourceAnatomy[_SelectedSource].type>>\ <<set _LookingFor[1] to $SourceAnatomy[_SelectedSource].morph>>\ \ <<set _TargetToChange to -1>>\ <<for _i to 0; _i < $ClonedPlayerAnatomy.length; _i++>>\ <<if $ClonedPlayerAnatomy[_i].type is _LookingFor[0]>>\ <<set _TargetToChange to _i>>\ <<endif>>\ <</for>>\ <<if _TargetToChange is -1>>\ <<set _TFa to setup.bpptrtoname($SourceAnatomy[_SelectedSource].type, "casual")>>\ <!-- @@color:Yellow;You have gained $SourceAnatomy[_SelectedSource].morph _TFa<<print "!">> -->\ <<if $DebugMode is true>>\ Doesn't exist, so add one! Adding a $SourceAnatomy[_SelectedSource].morph $SourceAnatomy[_SelectedSource].type to player <<endif>>\ <<set _Morph to $SourceAnatomy[_SelectedSource].morph>>\ <<set _PartTypeToAdd to $SourceAnatomy[_SelectedSource].type>>\ <<set _LocOfNewPart to setup.AddBodyPart($CC, _PartTypeToAdd)>>\ <<set $PC[$CC][$PCbp][_LocOfNewPart].morph to _Morph>>\ <<set _MorphHack to setup.bpptrtoname(_PartTypeToAdd, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ @@color:Yellow;you have gained a _MorphHack@@\ <<TFAdderHelper _LocOfNewPart>>\ <<else>>\ <<if $DebugMode is true>>\ @@color:Aqua;We've found a :@@ $ClonedPlayerAnatomy[_TargetToChange].type in slot: _TargetToChange of the pruned list, now find on real body <<endif>>\ <<set _RealSlotToChange to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is _LookingFor[0]) and ($PC[$CC][$PCbp][_i].morph neq _LookingFor[1])>>\ <<set _RealSlotToChange to _i>>\ <<endif>>\ <</for>>\ <<if _RealSlotToChange > -1>>\ <<if $PC[$CC][$PCbp][_RealSlotToChange].equip[3] is 700>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa would have become $SourceAnatomy[_SelectedSource].morph _TFb<<print ",">> but your enchantment of @@color:LightGreen;immuntability has prevented it!@@ <<else>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ <<set _TFb to setup.bpptrtoname($SourceAnatomy[_SelectedSource].type, "casual")>>\ @@color:Yellow;Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa has become $SourceAnatomy[_SelectedSource].morph _TFb<<print "!">>@@\ <<if $DebugMode is true>>\ Success! Converting player's $PC[$CC][$PCbp][_RealSlotToChange].morph $PC[$CC][$PCbp][_RealSlotToChange].type to a $SourceAnatomy[_SelectedSource].morph $SourceAnatomy[_SelectedSource].type <<endif>>\ <<set $PC[$CC][$PCbp][_RealSlotToChange].morph to $SourceAnatomy[_SelectedSource].morph>>\ <<TFAdderHelper _RealSlotToChange>>\ <<endif>>\ <<else>>\ @@color:Red;Error in Transform@@: couldn't find a _LookingFor[1] _LookingFor[0] <<endif>>\ <<endif>>\ <<elseif _WhichList is "player">>\ <<set _SelectedTarget to random(0, $ClonedPlayerAnatomy.length -1)>>\ <<if $DebugMode is true>>\ @@color:LightGreen;We've chosen to look for a: @@ $ClonedPlayerAnatomy[_SelectedTarget].type to convert to whatever morph the source has for that type <<endif>>\ <<set _LookingFor to []>>\ <<set _LookingFor[0] to $ClonedPlayerAnatomy[_SelectedTarget].type>>\ <<set _LookingFor[1] to $ClonedPlayerAnatomy[_SelectedTarget].morph>>\ \ <<set _LocatedSource to -1>>\ <<for _i to 0; _i < $SourceAnatomy.length; _i++>>\ <<if ($SourceAnatomy[_i].type is _LookingFor[0]) and ($SourceAnatomy[_i].morph neq _LookingFor[1])>>\ <<set _LocatedSource to _i>>\ <<endif>>\ <</for>>\ <<if _LocatedSource is -1>>\ <<if $DebugMode is true>>\ Doesn't exist! Look for a $ClonedPlayerAnatomy[_SelectedTarget].type to remove! <<endif>>\ \ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is $ClonedPlayerAnatomy[_SelectedTarget].type)>>\ <<if $PC[$CC][$PCbp][_i].equip[3] is 700>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_i].type, "casual")>>\ You almost lost your $PC[$CC][$PCbp][_i].morph _TFa<<print ",">> but your enchantment of @@color:LightGreen;immuntability has prevented it!@@ <<else>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_i].type, "casual")>>\ @@color:Yellow;Your have lost your $PC[$CC][$PCbp][_i].morph _TFa<<print "!">>@@\ <<if $PC[$CC][$PCbp][_i].equippable is true>>\ <<set _Try to 13289>>\ <<set _WhatItem to $PC[$CC][$PCbp][_i].equip>>\ <<if _WhatItem[0] > 0>>\ <<set _InvItem to "true">>\ <<set _WhatItem to $PC[$CC][$PCbp][_i].equip>>\ <<set _Try to setup.addtoinven(_WhatItem)>>\ <<endif>>\ <<if _Try is 13289>>\ <<elseif _Try is -1>>\ @@color:Yellow;NOTE: You had equipment on the body part you just lost. It has been delivered to Skitters at the pawn shop.@@ <<set _GS to _WhatItem>>\ <<AddToStore $Pawn _GS>>\ <<else>>\ The item on that body part has been returned to inventory. <<endif>>\ <<endif>>\ <<if $DebugMode is true>>\ Success: removing $PC[$CC][$PCbp][_i].morph $PC[$CC][$PCbp][_i].type from slot _i <<endif>>\ <<set _throwaway to $PC[$CC][$PCbp].deleteAt(_i)>>\ <<set _i to 9999>>\ <<endif>>\ <<endif>>\ <</for>>\ \ <<else>>\ <<if $DebugMode is true>>\ @@color:Aqua;We've found a :@@ $SourceAnatomy[_LocatedSource].type in slot: _LocatedSource <<endif>>\ <<set _RealSlotToChange to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is _LookingFor[0]) and ($PC[$CC][$PCbp][_i].morph is _LookingFor[1])>>\ <<set _RealSlotToChange to _i>>\ <<endif>>\ <</for>>\ <<if _RealSlotToChange > -1>>\ <<if $PC[$CC][$PCbp][_RealSlotToChange].equip[3] is 700>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ <<set _TFb to setup.bpptrtoname($SourceAnatomy[_LocatedSource].type, "casual")>>\ Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa would have become $SourceAnatomy[_SelectedSource].morph _TFb<<print ",">> but your enchantment of @@color:LightGreen;immuntability has prevented it!@@ <<else>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ <<set _TFb to setup.bpptrtoname($SourceAnatomy[_LocatedSource].type, "casual")>>\ @@color:Yellow;Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa are now $SourceAnatomy[_LocatedSource].morph _TFb<<print "!">>@@\ <<if $DebugMode is true>>\ Success! Converting player's $PC[$CC][$PCbp][_RealSlotToChange].morph $PC[$CC][$PCbp][_RealSlotToChange].type to a $SourceAnatomy[_LocatedSource].morph $SourceAnatomy[_LocatedSource].type <<endif>>\ <<set $PC[$CC][$PCbp][_RealSlotToChange].morph to $SourceAnatomy[_LocatedSource].morph>>\ <<TFAdderHelper _RealSlotToChange>>\ <<endif>>\ <<else>>\ @@color:Red;Error in Transform@@: couldn't find a _LookingFor[1] _LookingFor[0] <<endif>>\ <<endif>>\ <<else>>\ @@color:LightGreen;You have fully converted into a <<print $Mon.morph>>!@@ <<endif>>\ \ <<if $DebugMode is true>>\ @@color:Gold;Source anatomy@@ <<for _i to 0; _i < $SourceAnatomy.length; _i++>>\ _i) <<print $SourceAnatomy[_i].type>>, <<print $SourceAnatomy[_i].morph>> <</for>>\ @@color:Gold;Player anatomy after transform@@ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ _i) <<print $PC[$CC][$PCbp][_i].type>>, <<print $PC[$CC][$PCbp][_i].morph>> <</for>>\ <<endif>>\ <<unset $SourceAnatomy>>\ <<unset $ClonedPlayerAnatomy>>\ <<Recalc>>\ <<ShowHealth>>\ <</widget>>\ <<widget "TFAdderHelper">>\ <<set _WhichBodyPart to $args[0]>>\ <<set _Type to $PC[$CC][$PCbp][_WhichBodyPart].type>>\ <<set _Morph to $PC[$CC][$PCbp][_WhichBodyPart].morph>>\ <<set _Equip to $PC[$CC][$PCbp][_WhichBodyPart].equip>>\ <<set _MascFem to $PC[$CC][$PCbp][_WhichBodyPart].mascfem>>\ \ <<if _Type is $BPlegs>>\ <<if _Morph is "horse">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "kick">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 8>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 0>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 0>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPfeet>>\ <<if (_Morph is "horse") or (_Morph is "cow") or (_Morph is "spider") or (_Morph is "hellhound")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].equippable to false>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].equippable to true>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPstinger>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "impale">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 8>>\ <<endif>>\ <<if _Type is $BPhead>>\ <<if _Morph is "horse">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 6>>\ <<elseif (_Type is $BPhead) and (_Morph is "spider")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "poison bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 1>>\ <<elseif (_Type is $BPhead) and (_Morph is "naga")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 6>>\ <<elseif (_Type is $BPhead) and (_Morph is "wolf")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPhead) and (_Morph is "wolfquad")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "pierce">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "bite">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Type is $BPhead) and (_Morph is "hellhound")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "magic">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "breath">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 2>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 8>>\ <<else>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 0>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 0>>\ <<endif>>\ <<endif>>\ <<if _Type is $BPwield>>\ <<if _Morph is "fox">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "cut">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "claw">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Morph is "cat")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "cut">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "claw">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Morph is "human")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Morph is "goblin")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 1>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 4>>\ <<elseif (_Morph is "minotaur")>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attacktype to "blunt">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].attackdesc to "punch">>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].mindam to 2>>\ <<set $PC[$CC][$PCbp][_WhichBodyPart].maxdam to 7>>\ <<endif>>\ <<endif>>\ \ <</widget>>\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $RoomPTR to passage()>>\ <<set $AllowNav to false>>\ \ <<if $WORLD.CombatInterrupt is "defeated Neris">>\ <<set $Dungeon[_pz][_px][_py][12] to 98>>\ <<set $WORLD.CombatInterrupt to "">>\ <<endif>>\ <<if $Dungeon[_pz][_px][_py][12] is 98>>\ <<set $Dungeon[_pz][_px][_py][12] to 99>>\ <<if $WORLD.Circle < 5>>\ <<set $WORLD.Circle to 10>>\ <<set $Dungeon[10][6][2][11] to "Magic Circle">>\ <<set $Dungeon[10][6][2][12] to 0>>\ <!-- set $Dungeon[5][7][1][11] to "StairsUp" -->\ <!-- set $Dungeon[5][7][1][12] to 0 --> <<endif>>\ <<set _RightPic to $ImgPath + "Neris.png">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<replace "#eventtext">>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $AllowNav to true>>\ \ Her body now failing, Neris collapses to her knees in a bloody pulp. And yet despite her broken body, she nevertheless looks up at you in relief. @@color:Aqua;Neris@@: "Thank you adventurer," she smiles through her final, dying breaths. "At last I am free. If you survive the curse, please tell my friends that I forgive them for abandoning me." With that, her smoldering body finally fails, collapsing to the stone floor in pieces that slowly disintegrate to dust. @@color:Gold;Congratulations!@@ You have defeated the level 10 dungeon boss, Neris the Cursed. <<AwardAchievement "White Mage">>\ Sadly, this marks the end of content for the current release. You can of course continue playing, but the stairs to the next level won't spawn in the current version of the game. If you've enjoyed playing @@color:Gold;Tower of Triumph, An Humble Pilgrimage to the Shrine of the Goddess of Primal Darkness@@, please consider heading over to <a href="https://subscribestar.adult/arcdragon" target="_blank" rel="noopener noreferrer">SubscribeStar</a> and subscribing to support further development. If you'd like to share your thoughts or discuss the game with other players, the current discussion home for Tower of Triumph is at tfgames.site. Thank you for playing, and I hope you've enjoyed everything so far!\ <</replace>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 99>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>\ <<set $AllowNav to true>>\ With Neris dead, this marks the end of content for the current release. You can of course continue playing, but the stairs to the next level won't spawn in the current version of the game. If you've enjoyed playing @@color:Gold;Tower of Triumph, An Humble Pilgrimage to the Shrine of the Goddess of Primal Darkness@@, please consider heading over to <a href="https://subscribestar.adult/arcdragon" target="_blank" rel="noopener noreferrer">SubscribeStar</a> and subscribing to support further development. If you'd like to share your thoughts or discuss the game with other players, the current discussion home for Tower of Triumph is at tfgames.site. Thank you for playing, and I hope you've enjoyed everything so far!\ <</replace>>\ <<elseif $Dungeon[_pz][_px][_py][12] is 0>>\ <<replace "#eventtext">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ Approaching the altar, you see a pale girl with demon wings and horns. Her dress is tattered, and manacles with torn chains dangle from her wrist and ankles. Seeing you approach, she gazes down at you in sadness. @@color:Red;Neris@@: "Please stay away." There is no anger in her voice, no venom. Only sadness. While clearly a demon, she doesn't seem to be acting very demonic. <hr>\ <span id="KeypOne">\ <<link "1) Talk to her" "Neris">> <<set $Dungeon[_pz][_px][_py][12] to 1>> <</link>> </span>\ <span id="KeypTwo">\ <<link "2) Attack" "Combat">>\ <<set $ForceMon to ["Neris","female",10]>> <<set $WORLD.CombatInterrupt to "Neris", 1>>\ <</link>> </span>\ <span id="KeypThree">\ <<link "3) Keep your distance" "Dungeon64">>\ <<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>> <<set $Dungeon[_pz][_px][_py][12] to 0>>\ <</link>>\ </span>\ <</replace>>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 1>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Who are you? Why should I stay away?" @@color:Red;Neris@@: "I'm cursed," she speaks plainly. "If you approach, you will die. It may be too late already." You wait for her to elaborate, but she does not. <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <hr>\ @@color:Gold;Option@@ <hr>\ <span id="KeypOne"><<link "1) Ask questions" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 2>><</link>></span> <span id="KeypTwo"><<link "2) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypThree"><<link "3) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 2>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "How were you cursed? What curse?" Rather than answer right away, she merely looks at you. Glancing down you see a dark smoke that matches the color of her wings begin to erupt from your skin. @@color:Red;Neris@@: "With what little time you have, you deserve answers at least." She pauses before continuing as if collecting her thoughts. @@color:Red;Neris@@: "I was once an adventurer like yourself," she explains. "Climbing the tower for some dream I've long since forgotten with my good friends. Kleaton. Finley. Nesbitt. These and others, my loyal companions now fallen. One day we encountered a demon spider. Zehtalia. We fought her. We failed. This was my punishment." <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ Unfortunately, the curse has taken it's toll, and you have died before you could ask any more questions. <hr>@@color:Gold;Option@@ <span id="KeypSpace"><<link "Press space to continue" "Death">><<set $WORLD.diedby to "Killed by the plague curse">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><</link>></span> <<else>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Zehtalia has been defeated" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 3>><</link>></span> <span id="KeypTwo"><<link "2) Finley the blacksmith?" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 4>><</link>></span> <span id="KeypThree"><<link "3) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypFour"><<link "4) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <<endif>>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 3>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Zehtalia, Queen of the Spiders is dead," you proclaim. @@color:Red;Neris@@: "Dead? No. You may have destroyed her body, but unlike those who merely wear demonic transformations like myself, true demons are not of this world. Destroying their body merely returns them from whence they came. On the bright, when she returns she won't be any stronger for having been defeated. And it may be some time before she's able to deliver a curse like the one she placed on me. And Zehtalia is but one of many. Still, you've done the world a great service by holding at least one of their number at bay. For that, I thank you." <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ Unfortunately, the curse as taken it's toll, and you have died before you could ask any more questions. <hr>@@color:Gold;Option@@ <span id="KeypSpace"><<link "Press space to continue" "Death">><<set $WORLD.diedby to "Killed by the plague curse">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><</link>></span> <<else>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) True demons?" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 5>><</link>></span> <span id="KeypTwo"><<link "2) Tell me more about this curse" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 6>><</link>></span> <span id="KeypThree"><<link "3) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypFour"><<link "4) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <<endif>>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 4>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Finley?" you ask. "Finley the blacksmith?" @@color:Red;Neris@@: "Blacksmith?" she raises an eyebrow curiously. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Yes," you nod. "Crescentheart's blacksmith is a former adventurer named Finley. Grayed beard? Slightly overweight? Completely unintelligible accent?" @@color:Red;Neris@@: "That's him," she allows herself a smile. "I was the last of my party to fall, and I saw the others cocooned in her web, but it seems at least one of my friends managed to escaped." The joy of her smile is diminished by the growing smoke erupting from your body amidst growing pain. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is there any cure for this?" @@color:Red;Neris@@: "The curse? No, once afflicted you will surely die. And this is the fate that the Spider Queen doomed me with. To kill all I come into contact with, whether friend or foe. It's why I hide here in this tower, alone. But there is one thing you can do."" @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's that?" @@color:Red;Neris@@: "Kill me," she gazes into your eyes solemnly. "Before you die, and before I curse anyone else." <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ Unfortunately, the curse as taken it's toll, and you have died before you could ask any more questions. <hr>@@color:Gold;Option@@ <span id="KeypSpace"><<link "Press space to continue" "Death">><<set $WORLD.diedby to "Killed by the plague curse">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><</link>></span> <<else>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypTwo"><<link "2) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <<endif>>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 5>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What are true demons?" @@color:Red;Neris@@: "Those of the 'One True Mind' they call themselves. Lesser demons such as I are merely former humans transformed. Little differetn from the deranged bunny girls and cat men of the nearby forest. Some consumed by lust, while others retain greater bits of their dwindling sanity." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "I've met a few of those," you nod. "And the One True Mind?" @@color:Red;Neris@@: "All I can tell you is that what we call demons are not natives to this world, and they form sort of loosely knit hivemind. They share a communcal awareness, but also retain a sense of self and the ability to act independently. In some way I don't understand, the magic of the Tower, the wish-fulfillment nature of the goddess that fills this place has allows them to break through to this reality and create bodies to inhabit." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Did somebody wish for this?" @@color:Red;Neris@@: "Perhaps." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What's their plan?" @@color:Red;Neris@@: "I don't know." <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ Unfortunately, the curse as taken it's toll, and you have died before you could ask any more questions. <hr>@@color:Gold;Option@@ <span id="KeypSpace"><<link "Press space to continue" "Death">><<set $WORLD.diedby to "Killed by the plague curse">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><</link>></span> <<else>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Tell me more about this curse" "Neris">><<set $Dungeon[_pz][_px][_py][12] to 6>><</link>></span> <span id="KeypTwo"><<link "2) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypThree"><<link "3) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <<endif>>\ <!-- ---------------------------------- -->\ <<elseif $Dungeon[_pz][_px][_py][12] is 6>>\ <<SimplePic "Neris.png">>\ @@color:Yellow;Dungeon Boss: Neris the Cursed@@ <hr>\ While the pain of the curse is growing ever worse, you steel your resolve and continue your questions. @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can you tell me about this curse?" @@color:Red;Neris@@: "I know little about it," she stares at the ground. "Zehtalia selected me alone among my companions to receive it. I was too cheerful for her tastes, too friendly...a 'pompous magical girl' she called me. It rubbed her the wrong way, and she decided to hurt me in the worst way possible: to doom me to kill any and all I should ever come into contact with, that I would die alone among the corpses of those who might otherwise have become my friends." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "Is that all?" you frown. "No grand plan to conquer the world? Just personal, petty vegeance because she didn't like you?" @@color:Red;Neris@@: "I am but one casualty," she chokes on her words. "Not important enough to be told of the greater evils she has in mind for this world." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "She didn't even give you a villain speech where she revealed all her plans?" @@color:Red;Neris@@: "Sadly no," she looks at the growing mist erupting from your body. "But it would not help you if she had. For you and I are both dead, and there is but one last service you can perform before you succumb. One way to at least assure that no one else will fall." @@color:Green;<<print $PC[$CC][$PCname]>>@@: "What can I do?" @@color:Red;Neris@@: "Kill me." <<set _throwaway to setup.ApplyEffect("plague curse", 1)>>\ <<set $PC[$CC][$PChpcur] to $PC[$CC][$PChpcur] - setup.GetEffect("plague curse")>>\ <<ShowActiveEffects>><<ShowHealth>>\ <<if $PC[$CC][$PChpcur] < 1>>\ Unfortunately, the curse as taken it's toll, and you have died before you could ask any more questions. <hr>@@color:Gold;Option@@ <span id="KeypSpace"><<link "Press space to continue" "Death">><<set $WORLD.diedby to "Killed by the plague curse">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><</link>></span> <<else>>\ <hr>\ @@color:Gold;Option@@ <span id="KeypOne"><<link "1) Attack" "Combat">><<set $ForceMon to ["Neris","female",10]>><<set $WORLD.CombatInterrupt to "Neris", 1>><</link>></span> <span id="KeypTwo"><<link "2) Leave" "Dungeon64">><<set $PC[$CC][$PCy] to $PC[$CC][$PCy] +1>><<set $Dungeon[_pz][_px][_py][12] to 0>><</link>></span>\ <<endif>>\ <<else>>\ Error: unrecognized '12' state in Neris event: <<print $Dungeon[_pz][_px][_py][12]>> Attempting recovery... <<set $AllowNav to true>>\ <<endif>>\ <<if $DebugMode is true>>\ <hr> @@color:Gold;Active effects@@ <<for _SAE to 0; _SAE < $PC[$CC][$PCeffects].length; _SAE++>>\ <<print $PC[$CC][$PCeffects][_SAE][0]>>: <<print $PC[$CC][$PCeffects][_SAE][1]>> <</for>>\ <<endif>>\ <!-- source anatomy must accomodate swaps below -->\ <<set $ClonedPlayerAnatomy to clone($PC[$CC][$PCbp])>>\ <<set _source to $TWO>>\ \ <!-- apply sex part filters -->\ <<if $DebugMode is true>>\ Debug: DoTransform source is: _source <<endif>>\ <<if _source is "meat">>\ <<set $SourceAnatomy to clone($args[0])>>\ <<for _i to $SourceAnatomy.length -1; _i gte 0 ; _i-->>\ <<if $SourceAnatomy[_i].type is $BPpenis>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<elseif $SourceAnatomy[_i].type is $BPpussy>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<elseif $SourceAnatomy[_i].type is $BPboobs>>\ <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<for _j to $ClonedPlayerAnatomy.length -1; _j gte 0 ; _j-->>\ <<if $ClonedPlayerAnatomy[_i].type is $BPpenis>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_i)>>\ <<elseif $ClonedPlayerAnatomy[_i].type is $BPpussy>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_i)>>\ <<elseif $ClonedPlayerAnatomy[_i].type is $BPboobs>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_i)>>\ <<endif>>\ <</for>>\ <<elseif _source is "semen">>\ <<set $ForceMon to [$Mon.morph, "male", $Mon.level]>>\ <<GetMon>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<elseif _source is "milk">>\ <<set $ForceMon to [$Mon.morph, "female", $Mon.level]>>\ <<GetMon>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<elseif _source is "sex">>\ <<if $Mon.sex is "male">>\ <<if $DebugMode is true>>\ Debug: Requesting $Mon.morph female <<endif>>\ <<set $ForceMon to [$Mon.morph, "female", $Mon.level]>>\ <<GetMon>>\ <<elseif $Mon.sex is "female">>\ <<if $DebugMode is true>>\ Debug: Requesting $Mon.morph male <<endif>>\ <<set $ForceMon to [$Mon.morph, "male", $Mon.level]>>\ <<GetMon>>\ <<else>>\ <<if $DebugMode is true>>\ Debug: No sex request, mon is $Mon.sex <<endif>>\ <!-- no action required for herms? -->\ <<endif>>\ <<set $SourceAnatomy to clone($Mon.anatomy)>>\ <<else>>\ @@color:Red;Error in DoTransform: unrecognized Tf source: _source <<endif>>\ \ \ <<if $DebugMode is true>>\ @@color:Gold;Source anatomy@@ <<for _i to 0; _i < $SourceAnatomy.length ; _i++>>\ <<set _TFa to setup.bpptrtoname($SourceAnatomy[_i].type, "casual")>>\ _i) <<print _TFa>>, <<print $SourceAnatomy[_i].morph>>, <<print $SourceAnatomy[_i].type>> <</for>>\ @@color:Gold;Player anatomy before transform@@ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_i].type, "casual")>>\ _i) <<print _TFa>>, <<print $PC[$CC][$PCbp][_i].morph>>, <<print $PC[$CC][$PCbp][_i].type>> <</for>>\ <<endif>>\ \ <<for _i to $SourceAnatomy.length -1; _i gte 0 ; _i-->>\ <<set _Stop to false>>\ <<for _j to $ClonedPlayerAnatomy.length -1; _j gte 0 ; _j-->>\ <<if _Stop is false>>\ <<if ($SourceAnatomy[_i].type is $ClonedPlayerAnatomy[_j].type) and ($SourceAnatomy[_i].morph is $ClonedPlayerAnatomy[_j].morph)>>\ ____________ i: _i j: _j $SourceAnatomy[_i].type $ClonedPlayerAnatomy[_j].type ($SourceAnatomy[_i].morph $ClonedPlayerAnatomy[_j].morph <<set _throwaway to $SourceAnatomy.deleteAt(_i)>>\ <<set _throwaway to $ClonedPlayerAnatomy.deleteAt(_j)>>\ <<set _Stop to true>>\ <<endif>>\ <<endif>>\ <</for>>\ <</for>>\ \ <<if $DebugMode is true>>\ <hr> @@color:Gold;Source anatomy AFTER PRUNE@@ <<for _i to 0; _i < $SourceAnatomy.length ; _i++>>\ _i) <<print $SourceAnatomy[_i].type>>, <<print $SourceAnatomy[_i].morph>> <</for>>\ @@color:Gold;Player anatomy AFTER PRUNE@@ <<for _i to 0; _i < $ClonedPlayerAnatomy.length ; _i++>>\ _i) <<print $ClonedPlayerAnatomy[_i].type>>, <<print $ClonedPlayerAnatomy[_i].morph>> <</for>>\ <hr>\ <<endif>>\ \ <<set _WhichList to "source">>\ <<if ($SourceAnatomy.length is 0) and ($ClonedPlayerAnatomy.length is 0)>>\ <<set _WhichList to "none">>\ <<elseif ($ClonedPlayerAnatomy.length > $SourceAnatomy.length)>>\ <<set _WhichList to "player">>\ <<elseif $SourceAnatomy.length is 0>>\ <<set _WhichList to "player">>\ <<endif>>\ \ <<if $DebugMode is true>>\ @@color:LightGreen;Selected list is:@@ _WhichList <<endif>>\ \ <<if _WhichList is "source">>\ <<set _SelectedSource to random(0, $SourceAnatomy.length -1)>>\ <<if $DebugMode is true>>\ @@color:LightGreen;We've chosen to look for a: @@ $SourceAnatomy[_SelectedSource].type in the destination body <<endif>>\ <<set _LookingFor to []>>\ <<set _LookingFor[0] to $SourceAnatomy[_SelectedSource].type>>\ <<set _LookingFor[1] to $SourceAnatomy[_SelectedSource].morph>>\ \ <<set _TargetToChange to -1>>\ <<for _i to 0; _i < $ClonedPlayerAnatomy.length; _i++>>\ <<if $ClonedPlayerAnatomy[_i].type is _LookingFor[0]>>\ <<set _TargetToChange to _i>>\ <<endif>>\ <</for>>\ <<if _TargetToChange is -1>>\ <<set _TFa to setup.bpptrtoname($SourceAnatomy[_SelectedSource].type, "casual")>>\ <!-- @@color:Yellow;You have gained $SourceAnatomy[_SelectedSource].morph _TFa<<print "!">> -->\ <<if $DebugMode is true>>\ Doesn't exist, so add one! Adding a $SourceAnatomy[_SelectedSource].morph $SourceAnatomy[_SelectedSource].type to player <<endif>>\ <<set _Morph to $SourceAnatomy[_SelectedSource].morph>>\ <<set _PartTypeToAdd to $SourceAnatomy[_SelectedSource].type>>\ <<set _LocOfNewPart to setup.AddBodyPart($CC, _PartTypeToAdd)>>\ <<set $PC[$CC][$PCbp][_LocOfNewPart].morph to _Morph>>\ <<set _MorphHack to setup.bpptrtoname(_PartTypeToAdd, "tf")>>\ <<set _MorphHack to _MorphHack.replace("~", _Morph)>>\ @@color:Yellow;you have gained a _MorphHack@@\ <<TFAdderHelper _LocOfNewPart>>\ <<else>>\ <<if $DebugMode is true>>\ @@color:Aqua;We've found a :@@ $ClonedPlayerAnatomy[_TargetToChange].type in slot: _TargetToChange of the pruned list, now find on real body <<endif>>\ <<set _RealSlotToChange to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is _LookingFor[0]) and ($PC[$CC][$PCbp][_i].morph neq _LookingFor[1])>>\ <<set _RealSlotToChange to _i>>\ <<endif>>\ <</for>>\ <<if _RealSlotToChange > -1>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ <<set _TFb to setup.bpptrtoname($SourceAnatomy[_SelectedSource].type, "casual")>>\ @@color:Yellow;Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa has become $SourceAnatomy[_SelectedSource].morph _TFb<<print "!">>@@\ <<if $DebugMode is true>>\ Success! Converting player's $PC[$CC][$PCbp][_RealSlotToChange].morph $PC[$CC][$PCbp][_RealSlotToChange].type to a $SourceAnatomy[_SelectedSource].morph $SourceAnatomy[_SelectedSource].type <<endif>>\ <<set $PC[$CC][$PCbp][_RealSlotToChange].morph to $SourceAnatomy[_SelectedSource].morph>>\ <<TFAdderHelper _RealSlotToChange>>\ <<else>>\ @@color:Red;Error in Transform@@: couldn't find a _LookingFor[1] _LookingFor[0] <<endif>>\ <<endif>>\ <<elseif _WhichList is "player">>\ <<set _SelectedTarget to random(0, $ClonedPlayerAnatomy.length -1)>>\ <<if $DebugMode is true>>\ @@color:LightGreen;We've chosen to look for a: @@ $ClonedPlayerAnatomy[_SelectedTarget].type to convert to whatever morph the source has for that type <<endif>>\ <<set _LookingFor to []>>\ <<set _LookingFor[0] to $ClonedPlayerAnatomy[_SelectedTarget].type>>\ <<set _LookingFor[1] to $ClonedPlayerAnatomy[_SelectedTarget].morph>>\ \ <<set _LocatedSource to -1>>\ <<for _i to 0; _i < $SourceAnatomy.length; _i++>>\ <<if ($SourceAnatomy[_i].type is _LookingFor[0]) and ($SourceAnatomy[_i].morph neq _LookingFor[1])>>\ <<set _LocatedSource to _i>>\ <<endif>>\ <</for>>\ <<if _LocatedSource is -1>>\ <<if $DebugMode is true>>\ Doesn't exist! Look for a $ClonedPlayerAnatomy[_SelectedTarget].type to remove! <<endif>>\ \ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is $ClonedPlayerAnatomy[_SelectedTarget].type)>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_i].type, "casual")>>\ @@color:Yellow;Your have lost your $PC[$CC][$PCbp][_i].morph _TFa<<print "!">>@@\ <<if $PC[$CC][$PCbp][_i].equippable is true>>\ <<set _Try to 13289>>\ <<set _WhatItem to $PC[$CC][$PCbp][_i.equip>>\ <<if _WhatItem[0] > 0>>\ <<set _InvItem to "true">>\ <<set _WhatItem to $PC[$CC][$PCbp][_i].equip>>\ <<set _Try to setup.addtoinven(_WhatItem)>>\ <<endif>>\ <<if _Try is 13289>>\ <<elseif _Try is -1>>\ @@color:Yellow;NOTE: You had equipment on the body part you just lost. It has been delivered to Skitters at the pawn shop.@@ <<set _GS to _WhatItem>>\ <<AddToStore $Pawn _GS>>\ <<else>>\ The item on that body part has been returned to inventory. <<endif>>\ <<endif>>\ <<if $DebugMode is true>>\ Success: removing $PC[$CC][$PCbp][_i].morph $PC[$CC][$PCbp][_i].type from slot _i <<endif>>\ <<set _throwaway to $PC[$CC][$PCbp].deleteAt(_i)>>\ <<set _i to 9999>>\ <<endif>>\ <</for>>\ \ <<else>>\ <<if $DebugMode is true>>\ @@color:Aqua;We've found a :@@ $SourceAnatomy[_LocatedSource].type in slot: _LocatedSource <<endif>>\ <<set _RealSlotToChange to -1>>\ <<for _i to 0; _i < $PC[$CC][$PCbp].length ; _i++>>\ <<if ($PC[$CC][$PCbp][_i].type is _LookingFor[0]) and ($PC[$CC][$PCbp][_i].morph is _LookingFor[1])>>\ <<set _RealSlotToChange to _i>>\ <<endif>>\ <</for>>\ <<if _RealSlotToChange > -1>>\ <<set _TFa to setup.bpptrtoname($PC[$CC][$PCbp][_RealSlotToChange].type, "casual")>>\ <<set _TFb to setup.bpptrtoname($SourceAnatomy[_LocatedSource].type, "casual")>>\ @@color:Yellow;Your $PC[$CC][$PCbp][_RealSlotToChange].morph _TFa are now $SourceAnatomy[_LocatedSource].morph _TFb<<print "!">>@@\ <<if $DebugMode is true>>\ Success! Converting player's $PC[$CC][$PCbp][_RealSlotToChange].morph $PC[$CC][$PCbp][_RealSlotToChange].type to a $SourceAnatomy[_LocatedSource].morph $SourceAnatomy[_LocatedSource].type <<endif>>\ <<set $PC[$CC][$PCbp][_RealSlotToChange].morph to $SourceAnatomy[_LocatedSource].morph>>\ <<TFAdderHelper _RealSlotToChange>>\ <<else>>\ @@color:Red;Error in Transform@@: couldn't find a _LookingFor[1] _LookingFor[0] <<endif>>\ <<endif>>\ <<else>>\ @@color:LightGreen;You have fully converted into a <<print $Mon.morph>>!@@ <<endif>>\ \ <<if $DebugMode is true>>\ @@color:Gold;Source anatomy@@ <<for _i to 0; _i < $SourceAnatomy.length; _i++>>\ _i) <<print $SourceAnatomy[_i].type>>, <<print $SourceAnatomy[_i].morph>> <</for>>\ @@color:Gold;Player anatomy after transform@@ <<for _i to 0; _i < $PC[$CC][$PCbp].length; _i++>>\ _i) <<print $PC[$CC][$PCbp][_i].type>>, <<print $PC[$CC][$PCbp][_i].morph>> <</for>>\ <<endif>>\ <<unset $SourceAnatomy>>\ <<unset $ClonedPlayerAnatomy>>\ <<Recalc>>\ <<ShowHealth>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Forest cave@@ <<set _px to $PC[$CC][$PCfx]>>\ <<set _py to $PC[$CC][$PCfy]>>\ <<set _pz to $PC[$CC][$PCfz]>>\ <<set _RightPic to $ImgPath + "forestcave.png">>\ \ <<if $WORLD.CombatInterrupt is "defeated cave">>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $WORLD.ForestCaves[_pz][0] to "none">>\ <<endif>>\ \ <<set _cave to $WORLD.ForestCaves[_pz]>>\ \ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<if $DebugMode is true>>\ Debug, cave is: _cave <<endif>>\ <<if _cave[3] is 0>>\ There is an empty cave here.\ <<elseif _cave[0] is "none">>\ <<set _PickSlot to setup.HasMiningPick()>>\ <<if _PickSlot > -1>>\ <<set _PickMat to $PC[$CC][$PCinven][_PickSlot][1]>>\ <<set _GemType to _cave[3]>>\ <<set _MineDifficulty to (_GemType - 550)>>\ <<set _MineStrength to (_PickMat - 102) + ($PC[$CC][$PCstr] - 12)>>\ <<if _MineStrength > _MineDifficulty>>\ There is a gemstone desposit here. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Mine">> <<set _Gem to [_GemType, 0, 1, 0]>>\ <<set _foo to setup.additemtoinv($CC, _Gem, true)>>\ <<set $WORLD.ForestCaves[_pz][3] to 0>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You mine a gem<</replace>>\ <</link>>\ </span>\ <<elseif setup.getnextinvslot($CC) < 0>>\ There is a gemstone deposit here, but your inventory is full.\ <<else>>\ There is a gemstone deposit here, but your mining strength is too low to mine it.\ <<endif>>\ <<else>>\ There is a gemstone deposit here, but you have nothing to mine with.\ <<endif>>\ <<else>>\ You find a cave. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Explore" "Combat">> <<set $WORLD.CombatInterrupt to "cave">>\ <<set $ForceMon to [_cave[0], "male", (_pz +1)]>>\ <</link>>\ </span>\ <<endif>>\ <</replace>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ Your muscles lock up from the effect of the snake's poison, and you collapse onto your back. You lie there for several moments unable to move before you feel the snake wriggling against your foot, then up between your legs. Completely paralyzed, you can do little but take it as the snake slithers up onto your pelvis and...wiggles? No, wait. There's definitely something penetrating you. Barely. From the loudly insistent hissing you get the distinct impression that you're absolutely making this snake's day, or maybe his entire month. But you can barely feel more than a tickle perhaps a quarter inch inside you, barely making it past your labia. You find yourself more curious than bothered, and if it weren't for the paralytic effect of the poison you'd be very tempted to watch. <<FemaleVirginity "a snake">>\ As is, there's little you can do but wait for him to finish. And you only know that he does from the scant few droplets of liquid dripping down your pelvis and into your buttcrack. After a brief few moments of silence, he then slithers away, leaving you still paralyzed, alone. <<elseif (_pcpenis > 0)>>\ <<set $PC[$CC][$PCsexACTS].bjreceived to $PC[$CC][$PCsexACTS].bjreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ Your muscles completely lock up from the effect of the snake's poison, and you collapse onto your back. You lie there for several moments unable to move before you feel the snake wriggling against your leg. Completely paralyzed, you can do little but wait as the snake slithers up between your legs, then unexpecedtly flicks the slippery tip of its cock across the tip of your penis. That's when you discover that the paralytic effect of the poison apparently doesn't stop erections. Engulfing your cock into its mouth, the snake slowly works its mouth aroudn yoru dock and down towards your pelvis, stretching and sliding its way a quarter of an inch at a time. Its shockingly erotic, and by the time its nose is pressed against your belly, your cock is fully engorged and ready to go. But there's no motion, and barely any lubrication. With only the constrictions of its muscles rolling across your length, it takes only a few minutes before you cum, the tip of your penis fully a third of way down inside its entire length. Satisfied with this, the snake rests for a few moments before reversing course and slowly sliding its way back off your cock. As your erection subsides, the snake has an easier time, and before long it slithers silently off into the grass, leaving you alone and still paralyzed. <<else>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ Your muscles completely lock up from the effect of the snake's poison, and you collapse onto your back. You lie there for several moments unable to move before you feel the snake wriggling against your leg. Completely paralyzed, you can do little but wait as the snake slithers up between your legs and begins probing at your ass hole. It tickles a little bit, but more than anything you're baffled. What you feel is entirely too large to be a snake penis, and as best as you can tell the snake seems to be crawling entirely up into your ass, head first. Concerned about the possibility that it might crawl up there and asphyxiate, you can do little but hope this particular breed of snake can breath through its skin. For the next several minutes it wriggles and shudders inside you. Then without warning, it unceremoniously wriggles back out, then slithers off into the grass, leaving you unsure whether it ever even came. <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","snake"]>> <<AdvanceTime 480>> <</link>>\ </span><<set $NoDoubleKeypress to 1>>\ \ <<timed 500ms>>\ <<audio "menu_bgm" stop>>\ <</timed>>\ <<PlayBGM "explore">>\ \ <<ClearTemporaryEffects>>\ \ <<set $PC[$CC][$PClocation] to "desert">>\ \ <<set _px to $PC[$CC][$PCdx]>>\ <<set _py to $PC[$CC][$PCdy]>>\ <<set _pz to $PC[$CC][$PCdz]>>\ \ <<if _pz > $PC[$CC][$PChdze]>>\ <<set $PC[$CC][$PChdze] to _pz>>\ <<endif>>\ <<if _pz > $WORLD.HFDE>>\ <<set $WORLD.HFDE to _pz>>\ <<endif>>\ \ <<if ($WORLD.datapasser is "reset desert") or ($DesertMap.length is 0)>>\ <<AddToLog "Arriving in desert">>\ <<set $DesertMap to []>>\ <<set $DesertMap to setup.DesertSnake()>>\ <!-- Don't stand on trees -->\ <<set $DesertMap[_px][_py] to 0>>\ <<set $DesertMap[_px][_py+1] to 0>>\ <<set $DesertMap[_px][_py-1] to 0>>\ <<else>>\ <<endif>>\ <<set $WORLD.datapasser to 0>>\ \ <!-- Material level of our best axe? -->\ <<set $WORLD.TreeCutter to setup.AxeLevel()>>\ \ <<set $DisableMenu to false>>\ <<set $ReturnFromMenu to passage()>>\ <<set $GameState to "desert">>\ <<set $WORLD.dialogue to 0>>\ \ <<set _DesertLevel to $PC[$CC][$PCdz]>>\ <<if _DesertLevel is 0>>\ @@color:Red;Error:Desert should never be level zero@@\ <<elseif _DesertLevel is 1>>\ @@color:Gold;Southern Desert, level 1 (near town)@@\ <<else>>\ @@color:Gold;Southern Desert, level _DesertLevel@@\ <<endif>>\ <hr>\ <span id="right-img"></span>\ <canvas id="myCanvas" width="960" height="450" style="border:0px solid #f47373;"> Your browser does not support the HTML canvas tag. </canvas> <hr>\ <span id ="roomdesc"></span>\ <span id ="eventtext"></span> <hr>\ <span id="navcontrols"><<ShowDesertNavControls>></span> <span id="debug"></span>\ \ <<set _tempname to "S64Desert">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64CactusStump">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64CactusA">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64CactusB">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64CactusC">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Sign">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Grave">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _tempname to "S64Cave">>\ <<set _pic to $ImgPath + _tempname + ".png">>\ <img @id="_tempname" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[0][4] + ".png">>\ <img id="MiniAV0" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[1][4] + ".png">>\ <img id="MiniAV1" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<set _pic to $ImgPath + "icon" + $WORLD.CharLocs[2][4] + ".png">>\ <img id="MiniAV2" height="1" style="visibility: hidden;" img @src="_pic"/>\ \ <<timed 300ms>>\ <<DesertMoveRefresh>>\ <<set _throwaway to setup.DrawDesertMap64(_px, _py, _pz, 64)>>\ <<set $NoDoubleKeypress to 0>>\ <</timed>>\<<widget "ShowDesertNavControls">>\ <<set _px to $PC[$CC][$PCdx]>>\ <<set _py to $PC[$CC][$PCdy]>>\ <<set _pz to $PC[$CC][$PCdz]>>\ \ <<if $PC[$CC][$PChpcur] < 1>>\ <<if $PC[$CC][$PChunger] < 1>>\ <<set $WORLD.diedby to "Starved to death">>\ @@color:Red;You have starved to death!@@ It's unfortunate, but you do need to eat. If food is too expensive, you could try carrying around a butcher knife to carve up some of those monsters you keep fighting. Of course, that probably has side effects.\ <<AwardAchievement "Starve to death">>\ <<else>>\ @@color:Red;You have bled to death!@@ Be careful of those cactus thorns. They're pointy.\ <<set $WORLD.diedby to "Pricked to death by cactus">>\ @@color:Red;You have died!@@ <<endif>>\ <span id="KeypSpace">\ <<link "space) Continue" "Death">> <</link>>\ </span> <<elseif $AllowNav is true>>\ <!-- avoid array out of bounds -->\ <<set _n to 0>>\ <<set _e to 0>>\ <<set _s to 0>>\ <<set _w to 0>>\ <<set _AllowMoveNorth to false>>\ <<set _AllowMoveSouth to false>>\ <<if _px is 0>>\ <<set _e to $DesertMap[_px +1][_py]>>\ <<set _w to 9999>>\ <<elseif _px >= $WORLD.DesertDims[0]>>\ <<set _e to 9999>>\ <<set _w to $DesertMap[_px -1][_py]>>\ <<else>>\ <<set _e to $DesertMap[_px +1][_py]>>\ <<set _w to $DesertMap[_px -1][_py]>>\ <<endif>>\ <<if _py is 0>>\ <<set _s to $DesertMap[_px][_py +1]>>\ <<set _AllowMoveNorth to true>>\ <<elseif _py >= $WORLD.DesertDims[1] -1>>\ <<set _n to $DesertMap[_px][_py -1]>>\ <<set _AllowMoveSouth to true>>\ <<else>>\ <<set _n to $DesertMap[_px][_py -1]>>\ <<set _s to $DesertMap[_px][_py +1]>>\ <<endif>>\ \ <!-- AXE CUTTING -->\ <<if (_n > 199) and (_n < 210)>>\ <<if $WORLD.TreeCutter > 0>>\ <<set _n to "cut">>\ <<else>>\ <<set _n to "push">>\ <<endif>>\ <<endif>>\ <<if (_e > 199) and (_e < 210)>>\ <<if $WORLD.TreeCutter > 0>>\ <<set _e to "cut">>\ <<else>>\ <<set _e to "push">>\ <<endif>>\ <<endif>>\ <<if (_s > 199) and (_s < 210)>>\ <<if $WORLD.TreeCutter > 0>>\ <<set _s to "cut">>\ <<else>>\ <<set _s to "push">>\ <<endif>>\ <<endif>>\ <<if (_w > 199) and (_w < 210)>>\ <<if $WORLD.TreeCutter > 0>>\ <<set _w to "cut">>\ <<else>>\ <<set _w to "push">>\ <<endif>>\ <<endif>>\ <!-- END TREE CUTTING -->\ \ @@color:LightGreen;Navigation@@ <<if _AllowMoveNorth is true>>\ <<if _pz < 2>>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) Return to town" "TownSouth">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<endif>>\ <</link>>\ </span></span> <<else>>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "d) Head back towards town" "Desert">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set $WORLD.datapasser to "reset desert">> <<set $PC[$CC][$PCdy] to $WORLD.DesertDims[1] -1>> <<set $PC[$CC][$PCdz] to $PC[$CC][$PCdz] -1>> <<endif>>\ <</link>>\ </span> <<endif>>\ <<elseif _n is "cut">>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) Cut through cactus">> <<AdvanceTime 10>> <<set _py to _py -1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "cut cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<elseif _n is "push">>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) Push through cactus">> <<AdvanceTime 10>> <<set _py to _py -1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "push cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<else>>\ <span id="KeypNorth"><span id="KeypUP">\ <<link "w) North">> <<AdvanceTime 1>> <<set _py to _py -1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "no cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<endif>>\ <<if _e is 9999>>\ East - edge of map <<elseif _e is "cut">>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) Cut through cactus">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px + 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "cut cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<elseif _e is "push">>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) Push through cactus">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px + 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "push cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<else>>\ <span id="KeypEast"><span id="KeypRIGHT">\ <<link "d) East">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set _px to _px + 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "no cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<endif>>\ <<if _AllowMoveSouth is true>>\ <<if _pz > 9>>\ <span id="KeypSouth"><span id="KeypDOWN">\ s - Town of Talvin not implemented </span></span>\ <<else>>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) Head deeper into the desert" "Desert">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set $WORLD.datapasser to "reset desert">> <<set $PC[$CC][$PCdy] to 0>> <<set $PC[$CC][$PCdz] to $PC[$CC][$PCdz] +1>> <<endif>>\ <</link>>\ </span> <<endif>>\ <<elseif _s is "cut">>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) Cut through cactus">> <<AdvanceTime 10>> <<set _py to _py + 1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "cut cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<elseif _s is "push">>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) Push through cactus">> <<AdvanceTime 10>> <<set _py to _py + 1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "push cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<else>>\ <span id="KeypSouth"><span id="KeypDOWN">\ <<link "s) South">> <<AdvanceTime 1>> <<set _py to _py + 1>> <<set $PC[$CC][$PCdy] to _py>>\ <<set $WORLD.datapasser to "no cactus">> <<DesertMoveRefresh>> <</link>>\ </span></span> <<endif>>\ <<if _w is 9999>>\ West - edge of map <<elseif _w is "cut">>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) Cut through cactus">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px - 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "cut cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<elseif _w is "push">>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) Push through cactus">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 10>> <<set _px to _px - 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "push cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<else>>\ <span id="KeypWest"><span id="KeypLEFT">\ <<link "a) West">> <<if $NoDoubleKeypress is 0>>\ <<AdvanceTime 1>> <<set _px to _px - 1>> <<set $PC[$CC][$PCdx] to _px>>\ <<set $WORLD.datapasser to "no cactus">> <<DesertMoveRefresh>> <<endif>>\ <</link>>\ </span></span> <<endif>>\ <<endif>>\ <</widget>>\ <<widget "DesertMoveRefresh">>\ <<set _px to $PC[$CC][$PCdx]>>\ <<if _px > -1>>\ <<set _py to $PC[$CC][$PCdy]>>\ <<set _pz to $PC[$CC][$PCdz]>>\ <<replace "#right-img">><</replace>>\ \ \ \ <!-- did we chop down cactus? -->\ <<set _CosmeticText to "">>\ <<if $WORLD.datapasser is "cut cactus">>\ <<set _Terrain to $DesertMap[_px][_py]>>\ <<if (_Terrain > 199) and (_Terrain < 210)>> <<set $DesertMap[_px][_py] to 199>>\ <<if setup.getnextinvslot($CC) < 0>>\ <<set _CosmeticText to "@@color:LightYellow;You cut down the cactus but have no room to carry it@@">> <<else>>\ <<set _foo to setup.additemtoinv($CC, [138,0,1,0], true)>> <<set _CosmeticText to "@@color:LightGreen;You cut through the cactus and add it to your inventory@@">> <<endif>>\ <<ChangeStat $PChpcur -1>>\ <<ShowHealth>>\ <<else>> <!-- not cactus? -->\ <<endif>>\ <<elseif $WORLD.datapasser is "push cactus">>\ <<set _CosmeticText to "You push through the cactus">>\ <<ChangeStat $PChpcur -1>>\ <<ShowHealth>>\ <<else>>\ <<endif>>\ \ <<set _throwaway to setup.DrawDesertMap64(_px, _py, _pz, 64)>>\ <<if _throwaway is 1>>\ <<else>>\ <<script>>alert("Error: DrawDesertMap64 failed to complete");<</script>>\ <<endif>>\ \ <<set $WORLD.turnssincecombat to $WORLD.turnssincecombat +1>>\ <<replace "#time">><<ShowTime>><</replace>>\ <<ShowHunger>>\ \ <<if $DebugMode is true>>\ <<replace "#debug">>\ @@color:Gold;Debug info@@ fx,fy,fz: <<print $PC[$CC][$PCdx]>>, <<print $PC[$CC][$PCdy]>>, <<print $PC[$CC][$PCdz]>> Tile: <<print $DesertMap[_px][_py]>> Theme: <<print $WORLD.DesertTheme>> Since Last combat: <<print $WORLD.turnssincecombat>> Treecutter: <<print $WORLD.TreeCutter>> <</replace>>\ <<endif>>\ \ <<set _DesertEventNow to $DesertMap[_px][_py]>> \ <<if _DesertEventNow is 110>> <<include "EventSmith">>\ <<elseif _DesertEventNow is 111>>\ <<set _CosmeticText to "@@color:Yellow;Dev note@@: This is the last zone with meaningful desert content. You can delve deeper, but there are no further events in later zones.">>\ <<elseif _DesertEventNow is 112>>\ <<include "PlayerCorpse">>\ <<elseif _DesertEventNow is 113>>\ <<include "DesertCave">>\ <<elseif (_DesertEventNow > 0) and (_DesertEventNow < 10)>>\ <<set _Flowers to _DesertEventNow -1>>\ <<replace "#roomdesc">><</replace>>\ <<set _HerbNames to ["daisies","skretch grass","sunflower","roses","goose berries","brown mushrooms","weather glass","unnamed flower 8","unnamed flower 9","unnamed flower 10"]>>\ <<if $WORLD.SeleneQuests[_Flowers] is 1>>\ <<set $WORLD.SeleneQuests[_Flowers] to 2>>\ <<set _CosmeticText to "@@color:LightGreen;New herb found!@@" + "<br>You pick up a sample of @@color:Aqua;" + _HerbNames[_Flowers] + "@@ for Selene. " + either("Hopefully it will be useful.","Wonder what she'll be able to make from it?","Hopefully this makes something good.")>> <<else>>\ <<set _CosmeticText to "Some " + _HerbNames[_Flowers]>>\ <<endif>>\ <<elseif (_DesertEventNow is 0) or (_DesertEventNow is 199)>>\ <<if $WORLD.turnssincecombat > 20>>\ <<if random(20,50) < $WORLD.turnssincecombat>>\ <<set $AllowNav to false>>\ <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">>\ <<set $ForceMon to ["random", "random"]>>\ @@color:Gold;Monster encounter!@@ <span id="KeypOne">\ <<link "1) Fight" "Combat">> <<set $WORLD.turnssincecombat to 0>> <<set $DisableMenu to true>> <</link>>\ </span>\ <<if $DebugMode>>\ <hr>\ @@color:Gold;Debug info@@ (Random encounter) Turns since last combat: <<print $WORLD.turnssincecombat>> 'Force' data being set: $ForceMon <<endif>>\ <</replace>>\ <<else>>\ <<set $AllowNav to true>> <<replace "#eventtext">><</replace>>\ <<endif>>\ <<else>>\ <<set $AllowNav to true>> <<replace "#roomdesc">><</replace>>\ <<replace "#eventtext">><</replace>>\ <<endif>>\ <<elseif (_DesertEventNow > 199) and (_DesertEventNow < 210)>>\ <!-- cactus -->\ <<else>>\ <<replace "#eventtext">>\ @@color:Yellow;Error in DesertMoveRefresh: _DesertEventNow@@ <</replace>>\ <<endif>>\ <<replace "#roomdesc">><<print _CosmeticText>><</replace>>\ <<replace "#navcontrols">><<ShowDesertNavControls>><</replace>>\ <<endif>>\ <</widget>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<replace "#eventtext">>\ @@color:LightGreen;Desert cave@@ <<set _px to $PC[$CC][$PCdx]>>\ <<set _py to $PC[$CC][$PCdy]>>\ <<set _pz to $PC[$CC][$PCdz]>>\ <<set _RightPic to $ImgPath + "forestcave.png">>\ \ <<if $WORLD.CombatInterrupt is "defeated cave">>\ <<set $WORLD.CombatInterrupt to "">>\ <<set $WORLD.DesertCaves[_pz][0] to "none">>\ <<endif>>\ \ <<set _cave to $WORLD.DesertCaves[_pz]>>\ \ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ <<if $DebugMode is true>>\ Debug, cave is: _cave <<endif>>\ <<if _cave[3] is 0>>\ There is an empty cave here.\ <<elseif _cave[0] is "none">>\ <<set _PickSlot to setup.HasMiningPick()>>\ <<if _PickSlot > -1>>\ <<set _PickMat to $PC[$CC][$PCinven][_PickSlot][1]>>\ <<set _GemType to _cave[3]>>\ <<set _MineDifficulty to 2 + (_GemType - 550)>>\ <<set _MineStrength to (_PickMat - 102) + ($PC[$CC][$PCstr] - 12)>>\ <<if _MineStrength > _MineDifficulty>>\ <<set _FluxChance to 0>>\ <<if $WORLD.smithLevel is 1>> <<set _FluxChance to $PC[$CC][$PCdz] * 10>>\ <<endif>>\ <<if random(1,30) lte _FluxChance>>\ There is a large deposit of powdery white stone here. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Mine">> <<set $WORLD.smith to 7>>\ <<set $WORLD.DesertCaves[_pz][3] to 0>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You mine a sample of the material. Perhaps smith Finley in Crescentheart has a use for it.<</replace>>\ <</link>>\ </span>\ <<else>>\ There is a gemstone desposit here. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Mine">> <<set _Gem to [_GemType, 0, 1, 0]>>\ <<set _foo to setup.additemtoinv($CC, _Gem, true)>>\ <<set $WORLD.DesertCaves[_pz][3] to 0>>\ <<replace "#right-img">><</replace>>\ <<replace "#eventtext">>You mine a gem<</replace>>\ <</link>>\ </span>\ <<endif>>\ <<elseif setup.getnextinvslot($CC) < 0>>\ There is a gemstone deposit here, but your inventory is full.\ <<else>>\ There is a gemstone deposit here, but your pick isn't strong enough to mine it.\ <<endif>>\ <<else>>\ There is a gemstone deposit here, but you have nothing to mine with.\ <<endif>>\ <<else>>\ You find a cave. @@color:Gold;Options@@ <span id="KeypOne">\ <<link "1) Explore" "Combat">> <<set $WORLD.CombatInterrupt to "cave">>\ <<set $ForceMon to [_cave[0], "random", (_pz +1)]>>\ <</link>>\ </span>\ <<endif>>\ <</replace>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ Implement ant on female <<elseif (_pcpenis > 0)>>\ Implement ant on male <<else>>\ Imlpement ant on anal <<endif>>\ \ <hr>\ INSECT @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","insect"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ Implement harpy on female <<elseif (_pcpenis > 0)>>\ Implement harpy on male <<else>>\ Imlpement harpy on anal <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","harpy"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ Implement scorpion on female <<elseif (_pcpenis > 0)>>\ Implement scorpion on male <<else>>\ Imlpement scorpion on anal <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","scorpion"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "ant vaginal">>\ <<set $PC[$CC][$PCsexACTS].vaginalgiven to $PC[$CC][$PCsexACTS].vaginalgiven + 1>>\ <<set $PC[$CC][$PCsexACTS].semengiven to $PC[$CC][$PCsexACTS].semengiven + $PC[$CC][$PClevel]>>\ The ant-girl lays on the ground, panting from exhaustion as you approach with confidence. Kneeling down beside her, you gently reach out to caress her bruised carapace before tenderly kissing her lips. Her antenna swirl around to face you and she hesitantly returns the kiss with a frown as if confused/ Thinking to clear up any possibel confusion over your intentions, you brandish your already-engored cock, and motion for her to turn around. She gives your cock in your hand a momentary look of confusion, followed by realization then shock. "I'm not of breeding caste!" she objects, her wide eyes fixated on your cock in her hands as her breathing hastens. "I'm not...allowed." "<<print either("I won't tell your queen if you don't","")>>, you <<print either("smile","shrug","pat her nicely on the head","affectionately wrap an arm around her")>>. "Really?" she boggles, then nods eagerly and spins around, raising and thrusting the hind portion of her abdomen towards you. Reaching underneath with one hand it takes you a moment to find her entrance, a tiny bit of moist warmth in the middle of a vast, smooth sea of shiny ant chitin. Placing the tip of your cock just a few inches inside her, the ant-girl gasps and shudders. <<MaleVirginity "a grateful ant-girl">>\ "I've never..." she whispers, "I never even thought..." Happy to be the dream she never belived she could have, you grasp her hind quarter in both hands and begin thrusting <<print either("mildly","gently")>> insde her. "This is such an honor for one of my station," she cries happy tears of joy. "Thank you so much for this." She's a little clueless about what to do, her gratitude more than makes up for it, and with a little gentle coaching from you it's not long before she's eagerly pushing back on you with a smile you can feel radiating from her even as she faces away. After you climax, she envelops you with all six of her legs and both arms in a tightly grateful hug. "Thank you so much," she cries into your chest. "I'll remember you, I'll remember this moment...forever and always." <<else>> Error in VictoryAnt: $WORLD.datapasser <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "harpy sex">>\ <<if $Mon.pussy is true>>\ <<endif>>\ <<elseif $WORLD.datapasser is "harpy licks you">>\ <<elseif $WORLD.datapasser is "harpy boobplay">>\ <<else>>\ Error in harpy sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "scorpion sex">>\ <<if $Mon.pussy is true>>\ <<endif>>\ <<elseif $WORLD.datapasser is "scorpion licks you">>\ <<elseif $WORLD.datapasser is "scorpion boobplay">>\ <<else>>\ Error in scorpion sex event, unrecognized sex act: <<print $WORLD.datapasser>> <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ Implement hydra on female <<elseif (_pcpenis > 0)>>\ Implement hydra on male <<else>>\ Imlpement hydra on anal <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","hydra"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ @@color:Gold;Sexy times with a defeated <<print $Mon.name>>@@ <<set $WORLD.dialogue to 0>>\ <<set _AllowNormalExit to true>>\ <hr>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if $WORLD.datapasser is "default Victory Sex">>\ Error/fallthrough result: <<print $WORLD.datapasser>> <<elseif $WORLD.datapasser is "hydra cock">>\ <<AdvanceTime 30>> Curious more than anything, you walk around the hydra to see what he has between his legs. With four legs and multiple necks all of similar width, it takes you a moment to sort out which is which, and to your surprise what you thought for a moment was a neck is in fact a ginormous cock easily as thick as your torso. It's so massive it seems almost impossible to handle, but you're determined not to let this opportunity pass you by without at least giving it a try. Placing hand on opposite sides, you give it your best to stroke him off, but even with your palms fully open you're barely getting coverage around a quarter of its girth. Fascinating is this experience is, the lack of resposne from teh hdra leaves you unconvinced you're really doing much for him. You're nto even sure he's conscoius. That is, until you feel an unexpected twitch betwen your hands and are suddenly blasted with a firehose worth of sticky, pungent fluid as thick as honey. It takes a bit of effort to clear the gunk out from your eyes, and it seems to be rapidly congealing to become thicker, as if its intended to form a seal to keep from leaking out from the insides of its recipient. The inconvenince of it leaves you cleaning yourself for the next half hour, and youwonder if the smell will ever fully come out of your clothes. The hydra meanwhile, sleeps through it all, and is still dozing peacefully by the time you finally recover enough to walk away. <<else>>\ Error in VictoryHydra: $WORLD.datapasser <<endif>>\ <<if _AllowNormalExit is true>>\ <hr> @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Continue" $ReturnFromMenu>> <<set $DisableMenu to false>> <</link>>\ </span> <<endif>>\<<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if (_pcpussy > 0)>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<if $Mon.penis is true>> <<if _pcboobs > 0>>\ "Hoo boy!" the rat-man eagerly catches you before you fall, jamming his face between your breasts and gleefully motorboating you. His enthusiasm is flattering, almost, but the way he's dry-humping you through is clothes is a little off-putting. You're a little tempted to "OH, YES!" he cries <<else>>\ "Hoo boy!" the rat-man eagerly catches you before you fall, them looks at your chest in disappointment. "Aww, boobs are my favorite thing!" he whines. "Guess I'll just have to fuck you instead." Confused about his priorities but too exhausted to protest, you offer no resistence when he pushes you to know knees and sticks his surprisingly normal dick in your mouth. But after only a couple thrusts he then turns you around and lets you fall to your hands and knees, then slides thumb and middle finger into your ass and pussy together while making noises as if taste-tasting wine. <<if random(1,2) is 1>>\ "Hmm," he thinks out loud. "Pussy it is." <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ <<else>>\ "Hmm," he thinks out loud. "Ass it is." <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ The Rat Man was excited to finally have the opportunity for some doggy-style action! He had been waiting patiently and now that his chance has arrived he is determined not to let it pass him by without giving her everything she deserves in terms of pleasure, both physically and emotionally. As they begin their passionate coupling, Rat Man can feel the energy building up inside himself as well; this was going to be a night neither one would ever forget! He knew that he had to give it his all if he wanted her to have an experience she'd never forget either - and so with renewed vigor they continued their mutual pleasure-giving until finally, together in perfect harmony, Rat Man and Girl reached the height of ecstasy. <<endif>>\ <<endif>>\ <<else>>\ <<endif>>\ <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived + 1>>\ <<if (_pcpenis > 0)>>\ Callapsing onto your back, the rat-girl stands with her legs straddled over you at the knees. Laciviously running her eyes and down your body, she at last settles "Do you want some of this?" she blushes, stroking both hands down her stomach and between her legs. "Oh, fuck yes," you feel your erection harden. "Do you?" she grins in a way that leaves you feeling a bit unsure. "Do you really?" "Yay!" she cheers, dropping her skirt to reveal a large pink dildo trapped onto her pelvis. "Time to get some!" <<else>>\ The rat girl stands triumphantly you, her victory over an adventurer like yourself clearly very satisfying to her as her eyes run eagerly up and down your fallen form. Glancing at her shapely legs and tiny waist, you begin to think her victory won't be so bad. That's when she drops her skirt to reveal a large pink dildo strapped onto her pelvis. "Wait," you object. "No!" she grins, flipping you over onto your stomach and lifting your hips to hers with a strength that belies her size. Moments later you feel the smooth rubbery tip poking insistently at your anus. "Oops" she laughs. "Forgot to make you suck on it for lubircation. "Oh well!" <<endif>>\ With a slow, inexolerable thrust that can't go any faster on your dry hole, she works the dildo "Pink looks good on you," she giggles, picking up her pace now that she's decently well inside. "Or I guess, pink looks good //in// you? Something like that." You're too busy trying to relax and position your hips for minimal friction to object to her phrasing. She takes your silence as submission and slaps a hand down onto your lower back then throws her other hand into the air and starts making whooping noises like a cowgirl. "Woo, yeah!" she shouts. "That's my hoss! I'm your Gumby and you're my Pokey! I'm your mane gal, so gimme some lovin'!" The next several minutes before passing out are filled with a littany of bad cowgirl puns delivered with every dildo thrust. <<endif>>\ \ <hr>\ @@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) Pass out from exhaustion" "Church">> <<set $WORLD.datapasser to ["sex","ratkin"]>> <<AdvanceTime 480>> <</link>>\ </span><<SimplePic $Mon.pic>>\ \ <<set _pcpenis to setup.getbpqty($CC, $BPpenis)>>\ <<set _pcpussy to setup.getbpqty($CC, $BPpussy)>>\ <<set _pcboobs to setup.getbpqty($CC, $BPboobs)>>\ \ <<if ($Mon.penis is true)>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ implement male troll on female character <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ <<set $PC[$CC][$PCsexACTS].semenreceived to $PC[$CC][$PCsexACTS].semenreceived + $Mon.level>>\ implement male troll on male character <<endif>>\ <<else>>\ <<if _pcpussy > 0>>\ <<set $PC[$CC][$PCsexACTS].vaginalreceived to $PC[$CC][$PCsexACTS].vaginalreceived +1>>\ implement female troll on female character <<else>>\ <<set $PC[$CC][$PCsexACTS].analreceived to $PC[$CC][$PCsexACTS].analreceived +1>>\ implement female troll on male character <<endif>>\ <<endif>>\ \ <span id="KeypSpace">\ <<link "space) Pass out in sheer horror" "Church">> <<set $WORLD.datapasser to ["sex","troll"]>> <<AdvanceTime 480>> <</link>>\ </span><!-- lever -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventlever.jpg">> <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ <<if $DebugMode is true>>\ Lever Debug: 11: <<print $Dungeon[_pz][_px][_py][11]>> 12: <<print $Dungeon[_pz][_px][_py][12]>> 12-0: <<print $Dungeon[_pz][_px][_py][12][0]>> 12-1: <<print $Dungeon[_pz][_px][_py][12][1]>> <<endif>>\ \ <<if $Dungeon[_pz][_px][_py][11] is "LeverLeftUp">>\ <<ShowLever "LeverLeftUp">>\ <<elseif $Dungeon[_pz][_px][_py][11] is "LeverLeftDown">>\ <<ShowLever "LeverLeftDown">>\ <<elseif $Dungeon[_pz][_px][_py][11] is "LeverRightUp">>\ <<ShowLever "LeverRightUp">>\ <<elseif $Dungeon[_pz][_px][_py][11] is "LeverRightDown">>\ <<ShowLever "LeverRightDown">>\ <<else>>\ @@color:Red;Error in lever: unrecognized state: <<print $Dungeon[_pz][_px][_py][11]>>@@ <<endif>>\ <</replace>>\@@color:Gold;Options@@ <span id="KeypSpace">\ <<link "space) leave" "StoreDaphne">> <<unset $SelectedItem>> <</link>>\ </span> <hr> \ <<set $SelectedItem to -1>>\ \ @@color:Yellow;Experimental:@@ Wearing equipment with this enchantment will prevent the body part wearing it from being transformed. This is a highly requested feature that may take some time to properly balance and integrate into the game. Feel free to play with it, but be aware that it's probably going to evolve over time. <hr> @@color:LightGreen;Selected item@@ <span class="grayb" id="foo">\ <<button "[1000 gold]">>\ <<if $SelectedItem < 0>>\ <<elseif $PC[$CC][$PCcoins] < 1000>>\ <<replace "#Result">>Not enough gold"<</replace>>\ <<else>>\ <<set $PC[$CC][$PCinven][$SelectedItem][3] to 700>>\ <<set $PC[$CC][$PCcoins] to $PC[$CC][$PCcoins] - 1000>>\ <<replace "#capcoins">><<print $PC[$CC][$PCcoins]>><</replace>>\ <<replace "#EnchantInventoryPool">><<EnchanterHelper>><</replace>>\ <<set $SelectedItem to -1>>\ <<replace "#EnchantMe">><</replace>>\ <<set _asd to setup.ChangeButtonClass("foo","grayb")>> <<replace "#Result">>Success!<</replace>>\ <<endif>>\ <</button>>\ </span> <span id="EnchantMe"></span> <hr>\ <span id="Result"></span> <hr> @@color:Gold;Inventory@@ <span id="InvQty"><<ReportInvFullness>></span> <span id="EnchantInventoryPool">\ <<EnchanterHelper>>\ </span>\<!-- Pressure Plate -->\ <<set _px to $PC[$CC][$PCx]>>\ <<set _py to $PC[$CC][$PCy]>>\ <<set _pz to $PC[$CC][$PCz]>>\ <<set $AllowNav to true>>\ <<set $RoomPTR to passage()>>\ \ <<set _RightPic to $ImgPath + "eventplate.jpg">>\ <<replace "#right-img">><img @src="_RightPic"/><</replace>>\ \ <<replace "#eventtext">>\ <<if $DebugMode is true>>\ Pressure plate debug: 11: <<print $Dungeon[_pz][_px][_py][11]>> 12: <<print $Dungeon[_pz][_px][_py][12]>> <<endif>>\ \ <!-- thisonly works if the first change is to remove a wall and not place one -->\ <<set _StandingOn to $Dungeon[_pz][_px][_py]>>\ <<set _FirstPlateState to _StandingOn[12]>>\ <<set _DunXtoChange to _FirstPlateState[0][0]>>\ <<set _DunYtoChange to _FirstPlateState[0][1]>>\ <<set _ArrayPosToChange to _FirstPlateState[0][2]>>\ <<set _NewValue to 0>>\ <<if $Dungeon[_pz][_DunXtoChange][_DunYtoChange][_ArrayPosToChange] is _NewValue>>\ <!-- plate has already been activated -->\ <<else>>\ <<TogglePressurePlate $Dungeon[_pz][_px][_py][12]>>\ <<endif>>\ <</replace>>\