Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
<br/>
<br/>
<br/>
<h1 class='title'>H A R D L I F E (v. <<print setup.ENGINE.gameVersion>>)</h1>
<br/>
<br/>
<p class='sub-title'>select your character</p>
<br/>
<br/>
<p><<print setup.ENGINE.char_select_menu()>></p><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doRest('sleep', 5); >><<set _time = setup.ENGINE.getTime();>>
<<if ("05:30"<_time)&&(_time<"07:30")>>
<<run setup.ENGINE.giveFeedback("You wake up at first light, but the store won't be open for another hour. What do you do?");>>
<</if>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>> <<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('run', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You get to the end of the parking lot before you realize just how out of shape you are. Your comfortable lifestyle has made you soft.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('run'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>><<print setup.ENGINE.setupPassage();>><<print setup.ENCOUNTERS[_encounter].beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENCOUNTERS[_encounter].replacePassage(); >><<else>>
<<run setup.ENGINE.doExplore('search', 30/60); >>
<<set _found to setup.ENGINE.findChange(10, 100, true) >>
<<set $GAMEDATA.PC.MATRIX.money += _found>>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You find $$ <<print _found.toFixed(2)>> as you wander around the parking lot.</p>
<</if>>
<<print setup.ENCOUNTERS[_encounter].afterPassage();>>
<p></p>
<p></p>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.addMinutes(5); >>
<<replace '#datetime'>>
<<include 'DATETIME'>><</replace>>
<p class='narrow'>What did you wish to do?</p>
<p></p>
<p class='narrow'>[[CHECKOUT APPAREL]]</p>
<p class='narrow'>[[CHECKOUT AUTOMOTIVE]]</p>
<p class='narrow'>[[CHECKOUT ELECTRONICS]]</p>
<p class='narrow'>[[CHECKOUT FURNITURE]]</p>
<p class='narrow'>[[CHECKOUT GROCERY]]</p>
<p class='narrow'>[[CHECKOUT GARDEN]]</p>
<p class='narrow'>[[CHECKOUT HARDWARE]]</p>
<p class='narrow'>[[CHECKOUT HOUSEHOLD]]</p>
<p class='narrow'>[[CHECKOUT HYGENE]]</p>
<p class='narrow'>[[CHECKOUT OFFICE]]</p>
<p class='narrow'>[[CHECKOUT PHARMACY]]</p>
<p class='narrow'>[[CHECKOUT SEASONAL]]</p>
<p class='narrow'>[[CHECKOUT SPORTING GOODS]]</p>
<p></p>
<p class='narrow'>[[ENTER BATHROOM]]</p>
<p class='narrow'>[[FILLOUT APPLICATION]]</p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<run setup.ENGINE.do_status_update();>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>>
<<print setup.ENGINE.replacePassage();>>
<<link 'RETURN'>><<goto "GO HOME">><</link>>
<<else>>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<<replace '#quick_menu'>><<include 'MENU'>><</replace>>
<<replace '#feedback'>><<include 'FEEDBACK'>><</replace>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _max_workout = Math.max(0, setup.ENGINE.maxHours($GAMEDATA.PC.STATE.lastExercise))>>
<<set _minutes = (_max_workout * 60).toFixed(1)>>
<<run setup.ENGINE.doWorkout($GAMEDATA.PC.STATE.lastExercise, _max_workout); >>
<<run setup.ENGINE.doRest("sleep", 10/60); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>Gritting your teeth you push through the pain and keep going for another until you pass out. (after _minutes minutes)</p>
<p>Some time later, you come to.</p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><div class='left framed'>
<p>ACTIONS</p>
<p>What will you do today?</p>
<p></p>
<<include "ACTIONS CAR">>
<p></p>
<<include "ACTIONS PARKING LOT">>
<p></p>
<p class='narrow'><<link 'EAT SOMETHING' >><<run setup.ENGINE.show_menu('FOOD'); >><</link>></p>
<p class='narrow'><<link 'CHANGE CLOTHES'>><<run setup.ENGINE.show_menu('EQUIP');>><</link>></p>
<p class='narrow'><<link 'USE SOMETHING' >><<run setup.ENGINE.show_menu('STUFF');>>><</link>></p>
<p></p>
<p></p>
<p class='narrow'><<link 'EXAMINE SELF'>><<run setup.ENGINE.show_menu('SELF'); >><</link>></p>
</div>Double-click this passage to edit it.Double-click this passage to edit it.<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D01">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D02">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D03">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D04">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D05">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D07">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D08">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D09">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D11">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D13">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<p>You ask for an application and are immediately told they are under a hiring freeze.</p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<run Config.passages.nobr = true;>>
<<include "GAME DATA">>
<<replace '#title'>><<include 'TITLE'>><</replace>>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<<replace '#feedback'>><<include 'FEEDBACK'>><</replace>>
<<run setup.ENGINE.hide_menu();>><div class='left framed'>
<h3>RESOURCES</h3>
<div class='resources'>
<<print setup.ENGINE.getResource('kcal') >>
<<print setup.ENGINE.getResource('protein') >>
<<print setup.ENGINE.getResource('sugar') >>
<p></p>
<<print setup.ENGINE.getResource('petro') >>
<<print setup.ENGINE.getResource('money') >>
<p></p>
<<print setup.ENGINE.getResource('karma') >>
<<print setup.ENGINE.getResource('qi') >>
<p></p>
<div class='energy-matrix half-glass'>
<<print setup.ENGINE.getResource('tough') >>
<<print setup.ENGINE.getResource('power') >>
<<print setup.ENGINE.getResource('vigor') >>
<<print setup.ENGINE.getResource('skill') >>
<<print setup.ENGINE.getResource('train') >>
<<print setup.ENGINE.getResource('regen') >>
<<print setup.ENGINE.getResource('vital') >>
<<print setup.ENGINE.getResource('force') >>
<<print setup.ENGINE.getResource('guard') >>
<<print setup.ENGINE.getResource('metab') >>
<<print setup.ENGINE.getResource('fight') >>
<<print setup.ENGINE.getResource('react') >>
<<print setup.ENGINE.getResource('focus') >>
<<print setup.ENGINE.getResource('aware') >>
<<print setup.ENGINE.getResource('psych') >>
</div>
</div>
</div><div class='left framed'>
<h3>STATS</h3>
<table class='stats'>
<tr> <th><<print setup.ENGINE.karmic_link('STR')>>:</th> <th><<print ($GAMEDATA.PC.STATS.STR).toFixed(2)>></th> </tr>
<tr> <th><<print setup.ENGINE.karmic_link('END')>>:</th> <th><<print ($GAMEDATA.PC.STATS.END).toFixed(2)>></th> </tr>
<tr> <th><<print setup.ENGINE.karmic_link('SPD')>>:</th> <th><<print ($GAMEDATA.PC.STATS.SPD).toFixed(2)>></th> </tr>
<tr> <th><<print setup.ENGINE.karmic_link('PHY')>>:</th> <th><<print ($GAMEDATA.PC.STATS.PHY).toFixed(2)>></th> </tr>
<tr> <th><<print setup.ENGINE.karmic_link('INS')>>:</th> <th><<print ($GAMEDATA.PC.STATS.INS).toFixed(2)>></th> </tr>
<tr> <th><<print setup.ENGINE.karmic_link('WSD')>>:</th> <th><<print ($GAMEDATA.PC.STATS.WSD).toFixed(2)>></th> </tr>
<tr><td><p></p></td><td><p></p></td></tr>
<tr> <td>age:</td> <td><<print setup.ENGINE.char_metric('age')>></td> </tr>
<tr> <td><<print setup.ENGINE.karmic_link('height')>>:</td> <td><<print setup.ENGINE.char_metric('ht')>></td> </tr>
<tr> <td><<print setup.ENGINE.karmic_link('weight')>>:</td> <td><<print setup.ENGINE.char_metric('wt')>></td> </tr>
<tr> <td>BMI:</td> <td><<print setup.ENGINE.char_metric('BMI')>></td> </tr>
<tr> <td>Bodyfat:</td> <td><<print setup.ENGINE.char_metric('bodyfat')>></td> </tr>
<tr><td><p></p></td><td><p></p></td></tr>
<tr> <td>bicep:</td> <td><<print setup.ENGINE.char_metric('bicep')>></td> </tr>
<tr> <td>quads:</td> <td><<print setup.ENGINE.char_metric('quads')>></td> </tr>
<tr><td><p></p></td><td><p></p></td></tr>
<tr> <td>chest:</td> <td><<print setup.ENGINE.char_metric('chest')>></td> </tr>
<tr> <td><<print setup.ENGINE.karmic_link('cup')>>:</td> <td><<print setup.ENGINE.char_metric('cup')>></td> </tr>
<tr> <td>waist:</td> <td><<print setup.ENGINE.char_metric('waist')>></td> </tr>
<tr> <td>hips:</td> <td><<print setup.ENGINE.char_metric('hips')>></td> </tr>
</table>
<p></p>
<div>
<h4>CONDITION:</h4>
<<set _i=0>>
<<for _status, _data range $GAMEDATA.PC.STATUS>>
<<set _i++>><p><i>_status</i></p>
<</for>>
<<if _i<1 >>
<p><i>normal</i></p>
<</if>>
</div>
</div><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doRest('rest', 20/60); >>
<<run setup.ENGINE.giveFeedback("You rest for a few minutes to recover your strength.");>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>> <<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('walk', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You get to the end of the parking lot before you realize just how out of shape you are. Your comfortable lifestyle has made you soft.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('walk'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>> <<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('jog', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You get to the end of the parking lot before you realize just how out of shape you are. Your comfortable lifestyle has made you soft.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('jog'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>> <<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('calisthenics', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You try to do some basic calesthenics, but its not long till you're out of breath.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('calisthenics'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>>
<p>[[CONTINUE->GO HOME]]</p>
<p>[[I'M NOT DONE YET!->PUSH YOURSELF]]</p><<nobr>>
<<set $GAMEDATA = { /* PLAYER DATA */
'PC': {
},
/* gamedata-state moved into PC/CHARS, a new WORLD branch to store global state will be implemented in future */
'CHARS':{
/* reserved for future expansion, character swapping */
},
}>>
<<include 'setup.ENGINE'>>
<<include 'setup.FLAGS'>>
<<include 'setup.STATUSES'>>
<<include 'setup.ACTIONS'>>
<<include 'setup.CHARS'>>
<<include 'setup.ROLES'>>
<<include 'setup.AISLES'>>
<<include 'setup.ITEMS'>>
<<include 'setup.ENCOUNTERS'>>
<<include 'setup.PASSAGES'>>
<<include 'setup.DESC'>>
<<include 'setup.NAMES'>>
<<include 'setup.MODS'>>
<</nobr>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D06">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D10">><<include 'LIST AISLES FOR DEPT'>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<set _dept = "D12">>
<<if true>>
<h2><<print setup.AISLES[_dept].name>></h2>
<h3><<print setup.AISLES[_dept].desc>></h3>
There's nothing here... try back next season.
<<else>>
<<include 'LIST AISLES FOR DEPT'>>
<</if>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<if $GAMEDATA.PC.STUFF['D08_A09_I03']>>
<<linkreplace "GET CLEANED UP">>
<p>You pull out an old washcloth from your purse, left over from the last time you had to do this, wet it and add some hand soap. Then you go into a stall and take a quick spongebath, making several trips back to the sink to rinse the cloth.</p>
<p></p>
<p>Hardly elegant, but at least you don't stink.</p>
<<run
setup.ENGINE.depleteItem('D08_A09_I03');
$GAMEDATA.PC.MATRIX.regen += 10;
setup.ENGINE.do_status_update();
>>
<</linkreplace>>
<<else>>
<p>If you had another washcloth, you could get cleaned up.</p>
<</if>>
<p></p>
<p class='narrow'><<link 'EXAMINE SELF'>><<run setup.ENGINE.show_menu('SELF'); >><</link>></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>Double-click this passage to edit it.<div class='left framed'>
<p>ACTIONS</p>
<p>What will you do today?</p>
<p></p>
<<include "ACTIONS MOTEL ROOM">>
<p></p>
<p class='narrow'><<link 'EAT SOMETHING' >><<run setup.ENGINE.show_menu('FOOD'); >><</link>></p>
<p class='narrow'><<link 'CHANGE CLOTHES'>><<run setup.ENGINE.show_menu('EQUIP');>><</link>></p>
<p class='narrow'><<link 'USE SOMETHING' >><<run setup.ENGINE.show_menu('STUFF');>>><</link>></p>
<p></p>
<p></p>
<p class='narrow'><<link 'EXAMINE SELF'>><<run setup.ENGINE.show_menu('SELF'); >><</link>></p>
</div>Double-click this passage to edit it.<hr/>
<<print setup.AISLES[_dept].AISLES[_aisle].name +": "+ setup.AISLES[_dept].AISLES[_aisle].desc>><br/>
<<for _item_id, _item_data range setup.ITEMS>>
<<if _aisle == _item_id.substr(0,7)>>
<<print setup.ENGINE.itemCard(_item_id);>>
<</if>>
<</for>>
<hr/><<print setup.ENGINE.getFeedback();>><table id="game-window"><tr>
<td id="sidebar">
<table class='full'>
<tr><td id="title"></td></tr>
<tr><td id="quick_menu"></td></tr>
<tr><td id="detail"></td></tr>
</table>
</td>
<td id="main">
<table class='full'>
<tr><td id="datetime"></td></tr>
<tr><td id="feedback"></td></tr>
<tr><td id="container">
<div id="passages" class="passage"></div>
<div id='menu'></div>
</td></tr>
</table>
</td>
</tr></table><ul class='items stuff'>
<<for _item_id, _uses range $GAMEDATA.PC.STUFF>>
<<if !(("consumable"==setup.ROLES.ALL[setup.ITEMS[_item_id].role].type)||("wearable"==setup.ROLES.ALL[setup.ITEMS[_item_id].role].type)) >>
<li><<print
setup.ITEMS[_item_id].name +" ("+ _uses + " uses remaining)"
>></li>
<</if>>
<</for>>
</ul>
<hr/>
<ul class='items junk'>
<<for _jid, _jname range $GAMEDATA.PC.JUNK>>
<li><<print _jname >></li>
<</for>>
</ul>
<p></p>
<p></p>
<p><<link 'RETURN'>><<run setup.ENGINE.hide_menu();>><</link>></p><div class='framed'>
<h3>Attire</h3>
<ul class='items'>
<<for _slot, _item_id range $GAMEDATA.PC.EQUIP>>
<<if _item_id>>
<li><<print "
<<link '"+ _slot +": "+ setup.ITEMS[_item_id].name +"'>>
<<if setup.ENGINE.removeItem( '" + _item_id + "' )>>
<<else>>
<</if>>
<<run setup.ENGINE.show_menu('EQUIP');>>
<</link>>
">></li>
<</if>>
<</for>>
</ul>
</div>
<hr/>
<hr/>
<div class='framed'>
<h3>Wardrobe</h3>
<ul class='items'>
<<for _item_id, _uses range $GAMEDATA.PC.STUFF>>
<<if "wearable"==setup.ROLES.ALL[setup.ITEMS[_item_id].role].type >>
<li><<print "
<<link '"+ setup.ITEMS[_item_id].name +" ("+ _uses + " uses remaining)'>>
<<if setup.ENGINE.useItem( '" + _item_id + "' )>>
<<else>>
<</if>>
<<run setup.ENGINE.show_menu('EQUIP');>>
<</link>>
">></li>
<</if>>
<</for>>
</ul>
</div>
<p></p>
<p></p>
<p></p>
<p><<link 'RETURN'>>
<<run
if('GO HOME'==State.passage) { Engine.play(State.passage, true); }
setup.ENGINE.hide_menu();
>>
<</link>></p><table class='items'>
<<for _item_id, _uses range $GAMEDATA.PC.STUFF>>
<<if "consumable"==setup.ROLES.ALL[setup.ITEMS[_item_id].role].type >>
<<set _pack = _uses % setup.ITEMS[_item_id].uses>>
<<print
"<tr><td>"+ setup.ITEMS[_item_id].name +
"</td><td>("+ _uses +"x)
</td><td>
<<link '[have one]'>>
<<if setup.ENGINE.useItem( '"+ _item_id +"' )>>
<<else>>
<</if>>
<<run setup.ENGINE.show_menu('FOOD');>>
<</link>>
</td><td>
<<if _pack>0>>
<<link '[finish package]'>>
<<if setup.ENGINE.useItem( '"+ _item_id +"', "+ _pack +" )>>
<<else>>
<</if>>
<<run setup.ENGINE.show_menu('FOOD');>>
<</link>>
<</if>>
</td></tr>
">>
<</if>>
<</for>>
</table>
<p></p>
<p></p>
<p></p>
<p><<link 'RETURN'>>
<<run
if('GO HOME'==State.passage) { Engine.play(State.passage, true); }
setup.ENGINE.hide_menu();
>>
<</link>></p><<if ($GAMEDATA.PC.STATE)>><<print setup.ENGINE.getTime(); >> <<print setup.ENGINE.getLongDate(); >><</if>><hr/><br/><br/><hr/>
<ul class='side-menu'>
<li><<link "Stats & Metrics">><<replace "#detail">><<set $GAMEDATA.PC.STATE.detail="STATS"; >><<include "STATS" >><</replace>><</link>></li>
<li><<link "Resources" >><<replace "#detail">><<set $GAMEDATA.PC.STATE.detail="RESOURCES"; >><<include "RESOURCES">><</replace>><</link>></li>
<hr/>
<li><<link "Food" >><<run setup.ENGINE.show_menu('FOOD'); >><</link>></li>
<li><<link "Clothing" >><<run setup.ENGINE.show_menu('EQUIP');>><</link>></li>
<li><<link "Stuff" >><<run setup.ENGINE.show_menu('STUFF');>><</link>></li>
<li><<link "Self" >><<run setup.ENGINE.show_menu('SELF'); >><</link>></li>
</ul>
<hr/><br/><br/><hr/><a target="_blank" href='http://patreon.com/ShadowRx'>ShadowRx</a>StoryBannerStoryCaption<h3>HardLife</h3>
<small>
v<<print setup.ENGINE.gameVersion>> by<br/>
<a target="_blank" href='http://patreon.com/ShadowRx'>ShadowRx</a><br/>
<small>(<<print setup.ENGINE.buildVersion>>)</small><br/>
</small>
<br/>
<hr/>
<ul class='side-menu'>
<li><<link "Save/Load">><<script>>UI.saves()<</script>><</link>></li>
<li><<link "Settings">><<script>>UI.settings()<</script>><</link>></li>
<li><<link "Restart">><<script>>UI.restart()<</script>><</link>></li>
</ul><p>You had it. You were a rising star, just finished your third small film and were about to be married to the hottest producer on the indy scene. You had EVERYTHING. Everything you ever wanted... or so you thought.</p>
<p>Then you found out your movie director fiance has slept with EVERY girl on set, and someone new has caught his eye... your BEST FRIEND.</p>
<p>Nearly broke, and with no one to turn to, you go back to your old apartment only to find you've been evicted, and all your stuff is gone. Turns out the bastard didn't pay the rent like he promised, not surprising since he didn't pay you either.</p>
<p>Looks like you'll be living out of your car again, you thought those days were behind you.</p>
<p>Well, first thing's first, you step out into the chilly autumn air and put your last $20 in the gas tank. You have about $3 in coins in the cup holder, but you should probably save that for diner tomorrow.</p>
<p>You spend half the night looking for somewhere to park. The best you find is a dingy old S-Mart parking lot, with half the lights burned out, but at least they didn't run you off.</p>
<<run setup.ENGINE.setTime(23,1)>>
<p>Its gonna be a long day tomorrow, perhaps you should [[turn in->SLEEP IN CAR]].</p><<run setup.ENGINE.select_char('Cindy Phoenix');>>
<<goto $GAMEDATA.PC.PASSAGES.start >><div class='dialog'>
<p>Spend _cost Karma to raise base _label by _amt? _hint</p>
<b><<link 'YES'>>
<<run
$GAMEDATA.PC.MATRIX.karma -= _cost;
$GAMEDATA.PC[_type][_stat] += _amt;
setup.ENGINE.do_status_update();
if('GO HOME'==State.passage) { Engine.play(State.passage, true); }
setup.ENGINE.hide_menu();
>>
<</link>> / <<link 'NO'>><<run setup.ENGINE.hide_menu();>><</link>></b>
</div><p class='wide'>If only you had a proper mirror to use...</p>
<p class='wide'>You are <<desc "height">>, roughly <<val "height">>, and <<desc "weight">>, somewhere around <<val "weight">> when last you checked. You're <<desc "bodytone">>, with <<val "bodyfat">> body-fat.</p>
<p class='wide'>You have a <<desc "bust">> size <<val "cup">> chest with a wingspan of <<val "chest">>, which tapers to a <<desc "waist">> <<val "waist">> waist with <<desc "abs">> and curves out to <<desc "hips">> <<val "hips">> hips.</p>
<p class='wide'>Your arms are <<desc "arms">>, with <<desc "bicep">> biceps about <<val "bicep">>. Your legs <<desc "legs">>, measuring <<val "quads">> across your <<desc "quads">> quads and <<val "calf">> calves.</p>
<p class='wide'>Overall you are <<desc "health">> and <<desc "fitness">>.</p>
<p></p>
<p></p>
<p></p>
<p><<link 'RETURN'>><<run setup.ENGINE.hide_menu();>><</link>></p><<set setup.ITEMS={
'D01_A01_I02': {'name': "hair ties", 'cost': 2.00, 'uses': 100, 'role': "hairstyle", MATRIX:{} },
'D01_A01_I03': {'name': "watch", 'cost': 20.00, 'uses': 500, 'role': "bracelet", MATRIX:{} },
'D01_A02_I01': {'name': "azure sportsbra", 'cost': 16.00, 'uses': 100, 'role': "undershirt", MATRIX:{} },
'D01_A02_I02': {'name': "furry blue leg warmers", 'cost': 20.00, 'uses': 100, 'role': "socks", MATRIX:{} },
'D01_A02_I03': {'name': "pink metallic spandex leotard", 'cost': 30.00, 'uses': 100, 'role': "onepiece", MATRIX:{} },
'D01_A02_I04': {'name': "purple nylon unitard", 'cost': 40.00, 'uses': 100, 'role': "onepiece", MATRIX:{} },
'D01_A04_I01': {'name': "gray hoodie", 'cost': 10.00, 'uses': 500, 'role': "jacket", MATRIX:{} },
'D01_A04_I02': {'name': "vest", 'cost': 20.00, 'uses': 500, 'role': "vest", MATRIX:{} },
'D01_A04_I03': {'name': "winter-coat", 'cost': 60.00, 'uses': 500, 'role': "coat", MATRIX:{} },
'D01_A05_I01': {'name': "black miniskirt", 'cost': 30.00, 'uses': 500, 'role': "skirt", MATRIX:{} },
'D01_A05_I02': {'name': "sexy red dress", 'cost': 70.00, 'uses': 500, 'role': "dress", MATRIX:{} },
'D01_A05_I03': {'name': "simple black dress", 'cost': 50.00, 'uses': 500, 'role': "dress", MATRIX:{} },
'D01_A07_I01': {'name': "baseball cap", 'cost': 10.00, 'uses': 100, 'role': "hat", MATRIX:{} },
'D01_A07_I02': {'name': "beanie", 'cost': 5.00, 'uses': 100, 'role': "hat", MATRIX:{} },
'D01_A07_I03': {'name': "black fedora", 'cost': 45.00, 'uses': 100, 'role': "hat", MATRIX:{} },
'D01_A07_I04': {'name': "fuzzy earmuffs", 'cost': 15.00, 'uses': 100, 'role': "headband", MATRIX:{} },
'D01_A07_I05': {'name': "overpriced shades", 'cost': 190.00, 'uses': 100, 'role': "glasses", MATRIX:{} },
'D01_A07_I06': {'name': "pink headband", 'cost': 2.00, 'uses': 100, 'role': "headband", MATRIX:{} },
'D01_A07_I07': {'name': "stylish readers", 'cost': 10.00, 'uses': 100, 'role': "glasses", MATRIX:{} },
'D01_A07_I08': {'name': "white ski mask", 'cost': 5.00, 'uses': 100, 'role': "mask", MATRIX:{} },
'D01_A08_I01': {'name': "pearl earrings", 'cost': 25.00, 'uses': 200, 'role': "earrings", MATRIX:{} },
'D01_A08_I02': {'name': "silver belly chain", 'cost': 15.00, 'uses': 200, 'role': "sash", MATRIX:{} },
'D01_A08_I03': {'name': "silver garnet ring", 'cost': 20.00, 'uses': 200, 'role': "ring", MATRIX:{} },
'D01_A08_I04': {'name': "silver quartz bracelet", 'cost': 45.00, 'uses': 200, 'role': "bracelet", MATRIX:{} },
'D01_A08_I05': {'name': "sapphire pendant", 'cost': 430.00, 'uses': 200, 'role': "necklace", MATRIX:{} },
'D01_A08_I06': {'name': "topaz necklace", 'cost': 280.00, 'uses': 200, 'role': "necklace", MATRIX:{} },
'D01_A09_I01': {'name': "daisy dukes", 'cost': 45.00, 'uses': 100, 'role': "shorts", MATRIX:{} },
'D01_A09_I02': {'name': "jeans", 'cost': 20.00, 'uses': 100, 'role': "pants", MATRIX:{} },
'D01_A09_I03': {'name': "sweat-pants", 'cost': 10.00, 'uses': 100, 'role': "pants", MATRIX:{} },
'D01_A10_I01': {'name': "blouse", 'cost': 30.00, 'uses': 100, 'role': "overshirt", MATRIX:{} },
'D01_A10_I02': {'name': "colored t-shirt", 'cost': 9.00, 'uses': 100, 'role': "shirt", MATRIX:{} },
'D01_A10_I03': {'name': "white undershirt 3pk", 'cost': 6.00, 'uses': 180, 'role': "undershirt", MATRIX:{} },
'D01_A11_I01': {'name': "black loafers", 'cost': 40.00, 'uses': 200, 'role': "shoes", MATRIX:{} },
'D01_A11_I02': {'name': "red pumps", 'cost': 30.00, 'uses': 200, 'role': "shoes", MATRIX:{} },
'D01_A11_I03': {'name': "white sneakers", 'cost': 50.00, 'uses': 200, 'role': "shoes", MATRIX:{} },
'D01_A12_I02': {'name': "hot pink bikini top", 'cost': 20.00, 'uses': 50, 'role': "panties", MATRIX:{} },
'D01_A12_I02': {'name': "hot pink bikini thong", 'cost': 20.00, 'uses': 50, 'role': "panties", MATRIX:{} },
'D01_A13_I01': {'name': "ankle socks 10pk", 'cost': 6.00, 'uses': 200, 'role': "socks", MATRIX:{} },
'D01_A13_I02': {'name': "plain white bra", 'cost': 10.00, 'uses': 50, 'role': "bra", MATRIX:{} },
'D01_A13_I03': {'name': "plain white panties", 'cost': 10.00, 'uses': 50, 'role': "panties", MATRIX:{} },
'D01_A13_I04': {'name': "red thong", 'cost': 20.00, 'uses': 50, 'role': "panties", MATRIX:{} },
'D01_A13_I05': {'name': "sheer pantyhose 3pk", 'cost': 9.00, 'uses': 42, 'role': "socks", MATRIX:{} },
'D02_A02_I02': {'name': "oil", 'cost': 2.95, 'uses': 1, 'role': "engine oil", MATRIX:{} },
'D05_A04_I01': {'name': "4 pack energy drink", 'cost': 6.00, 'uses': 4, 'role': "drink", MATRIX:{'tough': 0.00, 'power': 0.00, 'vigor': 15.00, 'skill': -1.00, 'train': -1.00, 'regen': 3.00, 'vital': 1.20, 'force': 15.00, 'guard': 9.00, 'metab': 21.00, 'fight': 18.00, 'react': 12.00, 'focus': 12.00, 'aware': 9.00, 'psych': 9.00, 'qi': 8.15, 'karma': -0.10, 'kcal': 260.00, 'protein': 0.70, 'sugar': 62.70} },
'D05_A04_I02': {'name': "12 pack soda", 'cost': 3.98, 'uses': 12, 'role': "drink", MATRIX:{'tough': 0.00, 'power': 0.00, 'vigor': 3.00, 'skill': -2.00, 'train': -2.00, 'regen': 0.00, 'vital': -0.40, 'force': 9.00, 'guard': 3.00, 'metab': 9.00, 'fight': 3.00, 'react': 3.00, 'focus': 3.00, 'aware': 3.00, 'psych': 3.00, 'qi': 2.31, 'karma': -0.10, 'kcal': 160.00, 'protein': 0.00, 'sugar': 41.30} },
'D05_A04_I03': {'name': "water gallon refill", 'cost': 0.20, 'uses': 10, 'role': "drink", MATRIX:{'tough': 3.00, 'power': 3.00, 'vigor': 9.00, 'skill': 3.00, 'train': 3.00, 'regen': 9.00, 'vital': 3.00, 'force': 6.00, 'guard': 6.00, 'metab': 15.00, 'fight': 6.00, 'react': 6.00, 'focus': 6.00, 'aware': 6.00, 'psych': 6.00, 'qi': 6.00, 'karma': 0.10, 'kcal': 0.00, 'protein': 0.00, 'sugar': 0.00} },
'D05_A05_I01': {'name': "chocolate bar", 'cost': 0.89, 'uses': 1, 'role': "food", MATRIX:{'tough': 0.00, 'power': 0.00, 'vigor': 3.00, 'skill': -1.00, 'train': -1.00, 'regen': 0.00, 'vital': 0.00, 'force': 3.00, 'guard': 1.50, 'metab': 6.00, 'fight': 1.50, 'react': 0.90, 'focus': 1.50, 'aware': 0.60, 'psych': 1.20, 'qi': 1.15, 'karma': -0.10, 'kcal': 214.00, 'protein': 3.80, 'sugar': 19.70} },
'D05_A05_I02': {'name': "gummi bears 6lb bag", 'cost': 5.89, 'uses': 57, 'role': "food", MATRIX:{'tough': 0.00, 'power': 0.00, 'vigor': 3.00, 'skill': 1.20, 'train': 1.20, 'regen': 0.00, 'vital': 0.00, 'force': -0.10, 'guard': 1.20, 'metab': 6.00, 'fight': 0.90, 'react': 1.20, 'focus': -0.10, 'aware': 0.90, 'psych': 1.50, 'qi': 1.13, 'karma': -0.10, 'kcal': 130.00, 'protein': 3.00, 'sugar': 20.60} },
'D05_A05_I03': {'name': "peanut butter cups king size", 'cost': 1.39, 'uses': 4, 'role': "food", MATRIX:{'tough': 0.00, 'power': 0.00, 'vigor': 3.00, 'skill': -0.40, 'train': -0.40, 'regen': 0.00, 'vital': 0.00, 'force': 1.50, 'guard': 0.60, 'metab': 6.00, 'fight': 0.60, 'react': 0.60, 'focus': 0.60, 'aware': 0.30, 'psych': 0.60, 'qi': 0.87, 'karma': -0.10, 'kcal': 87.00, 'protein': 1.70, 'sugar': 8.40} },
'D05_A13_I01': {'name': "Apples (5lb)", 'cost': 5.24, 'uses': 12, 'role': "food", MATRIX:{'tough': 2.10, 'power': 3.20, 'vigor': 4.00, 'skill': 5.60, 'train': 6.60, 'regen': 3.30, 'vital': 7.10, 'force': 6.10, 'guard': 4.30, 'metab': 15.00, 'fight': 11.00, 'react': 13.00, 'focus': 7.40, 'aware': 8.10, 'psych': 9.30, 'qi': 7.07, 'karma': 0.10, 'kcal': 95.00, 'protein': 0.50, 'sugar': 19.00} },
'D05_A13_I02': {'name': "Artichokes", 'cost': 1.38, 'uses': 1, 'role': "hard food", MATRIX:{'tough': 2.10, 'power': 1.80, 'vigor': 1.80, 'skill': 4.40, 'train': 3.10, 'regen': 4.60, 'vital': 2.30, 'force': 1.70, 'guard': 1.40, 'metab': 15.00, 'fight': 1.70, 'react': 2.10, 'focus': 3.30, 'aware': 4.20, 'psych': 2.60, 'qi': 3.47, 'karma': 0.20, 'kcal': 60.00, 'protein': 4.20, 'sugar': 1.30} },
'D05_A13_I03': {'name': "Asparagus", 'cost': 2.60, 'uses': 9, 'role': "food", MATRIX:{'tough': 2.80, 'power': 4.80, 'vigor': 1.60, 'skill': 6.20, 'train': 5.30, 'regen': 6.10, 'vital': 3.70, 'force': 2.10, 'guard': 2.30, 'metab': 15.00, 'fight': 6.20, 'react': 1.40, 'focus': 2.10, 'aware': 1.10, 'psych': 1.70, 'qi': 4.16, 'karma': 0.20, 'kcal': 9.00, 'protein': 1.20, 'sugar': 0.90} },
'D05_A13_I04': {'name': "Avocados", 'cost': 2.59, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.20, 'vigor': 2.80, 'skill': 7.10, 'train': 5.60, 'regen': 18.60, 'vital': 5.40, 'force': 4.10, 'guard': 3.70, 'metab': 25.00, 'fight': 4.10, 'react': 6.20, 'focus': 7.80, 'aware': 8.40, 'psych': 21.60, 'qi': 8.31, 'karma': 0.10, 'kcal': 234.00, 'protein': 2.90, 'sugar': 1.00} },
'D05_A13_I05': {'name': "Bananas", 'cost': 0.73, 'uses': 4, 'role': "food", MATRIX:{'tough': 2.80, 'power': 3.80, 'vigor': 3.80, 'skill': 8.40, 'train': 7.20, 'regen': 9.70, 'vital': 6.10, 'force': 2.60, 'guard': 3.30, 'metab': 15.00, 'fight': 5.10, 'react': 4.30, 'focus': 8.70, 'aware': 9.20, 'psych': 6.30, 'qi': 6.42, 'karma': 0.10, 'kcal': 105.00, 'protein': 1.30, 'sugar': 14.00} },
'D05_A13_I06': {'name': "Beets", 'cost': 1.38, 'uses': 3, 'role': "hard food", MATRIX:{'tough': 4.80, 'power': 4.40, 'vigor': 1.60, 'skill': 4.60, 'train': 5.10, 'regen': 5.10, 'vital': 5.20, 'force': 4.40, 'guard': 5.20, 'metab': 15.00, 'fight': 7.10, 'react': 6.50, 'focus': 5.50, 'aware': 3.60, 'psych': 4.10, 'qi': 5.48, 'karma': 0.20, 'kcal': 59.00, 'protein': 2.20, 'sugar': 9.00} },
'D05_A13_I07': {'name': "Bell Peppers", 'cost': 0.59, 'uses': 4, 'role': "food", MATRIX:{'tough': 4.10, 'power': 2.80, 'vigor': 0.80, 'skill': 3.20, 'train': 4.70, 'regen': 3.60, 'vital': 1.60, 'force': 4.60, 'guard': 4.10, 'metab': 15.00, 'fight': 6.20, 'react': 4.10, 'focus': 3.20, 'aware': 1.40, 'psych': 2.10, 'qi': 4.10, 'karma': 0.20, 'kcal': 24.00, 'protein': 1.00, 'sugar': 2.90} },
'D05_A13_I08': {'name': "Blackberries", 'cost': 3.87, 'uses': 5, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.20, 'vigor': 2.80, 'skill': 1.70, 'train': 1.10, 'regen': 4.80, 'vital': 1.70, 'force': 3.70, 'guard': 3.60, 'metab': 15.00, 'fight': 4.10, 'react': 5.60, 'focus': 6.80, 'aware': 4.50, 'psych': 7.20, 'qi': 4.39, 'karma': 0.10, 'kcal': 43.00, 'protein': 1.00, 'sugar': 5.00} },
'D05_A13_I09': {'name': "Blueberries", 'cost': 4.63, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 0.60, 'vigor': 1.80, 'skill': 1.60, 'train': 1.40, 'regen': 2.20, 'vital': 1.30, 'force': 1.80, 'guard': 2.10, 'metab': 15.00, 'fight': 1.40, 'react': 1.80, 'focus': 13.10, 'aware': 7.20, 'psych': 14.70, 'qi': 4.54, 'karma': 0.10, 'kcal': 85.00, 'protein': 1.10, 'sugar': 15.00} },
'D05_A13_I10': {'name': "Broccoli", 'cost': 1.43, 'uses': 3, 'role': "food", MATRIX:{'tough': 3.10, 'power': 3.00, 'vigor': 2.30, 'skill': 3.70, 'train': 5.90, 'regen': 7.60, 'vital': 8.10, 'force': 4.60, 'guard': 2.20, 'metab': 15.00, 'fight': 8.60, 'react': 6.60, 'focus': 4.00, 'aware': 5.40, 'psych': 8.90, 'qi': 5.93, 'karma': 0.20, 'kcal': 50.00, 'protein': 4.20, 'sugar': 2.50} },
'D05_A13_I11': {'name': "Cabbage", 'cost': 0.84, 'uses': 2, 'role': "food", MATRIX:{'tough': 4.30, 'power': 2.60, 'vigor': 1.40, 'skill': 2.90, 'train': 7.30, 'regen': 6.40, 'vital': 6.20, 'force': 4.30, 'guard': 2.60, 'metab': 15.00, 'fight': 4.30, 'react': 5.40, 'focus': 2.60, 'aware': 1.70, 'psych': 2.40, 'qi': 4.63, 'karma': 0.20, 'kcal': 60.00, 'protein': 3.00, 'sugar': 7.00} },
'D05_A13_I12': {'name': "Cantalope", 'cost': 1.67, 'uses': 2, 'role': "food", MATRIX:{'tough': 3.50, 'power': 1.80, 'vigor': 1.90, 'skill': 2.40, 'train': 6.80, 'regen': 4.60, 'vital': 4.40, 'force': 2.20, 'guard': 1.90, 'metab': 15.00, 'fight': 1.60, 'react': 1.40, 'focus': 5.20, 'aware': 1.00, 'psych': 1.10, 'qi': 3.65, 'karma': 0.10, 'kcal': 93.00, 'protein': 2.30, 'sugar': 21.50} },
'D05_A13_I13': {'name': "Carrots", 'cost': 0.77, 'uses': 11, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.40, 'vigor': 2.40, 'skill': 7.30, 'train': 6.20, 'regen': 6.10, 'vital': 4.60, 'force': 3.10, 'guard': 2.70, 'metab': 15.00, 'fight': 2.00, 'react': 3.80, 'focus': 5.10, 'aware': 9.60, 'psych': 4.70, 'qi': 5.14, 'karma': 0.20, 'kcal': 25.00, 'protein': 0.60, 'sugar': 2.90} },
'D05_A13_I14': {'name': "Cauliflower", 'cost': 3.54, 'uses': 2, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.40, 'vigor': 2.60, 'skill': 3.80, 'train': 5.40, 'regen': 6.20, 'vital': 5.90, 'force': 1.50, 'guard': 2.10, 'metab': 15.00, 'fight': 1.40, 'react': 0.70, 'focus': 3.20, 'aware': 4.10, 'psych': 8.60, 'qi': 4.27, 'karma': 0.20, 'kcal': 73.00, 'protein': 5.50, 'sugar': 5.50} },
'D05_A13_I15': {'name': "Celery", 'cost': 1.16, 'uses': 4, 'role': "food", MATRIX:{'tough': 2.80, 'power': 0.90, 'vigor': 0.30, 'skill': 1.40, 'train': 7.60, 'regen': 3.10, 'vital': 2.10, 'force': -0.10, 'guard': 0.40, 'metab': 15.00, 'fight': 7.40, 'react': -0.10, 'focus': -0.10, 'aware': -0.10, 'psych': 4.00, 'qi': 2.97, 'karma': 0.30, 'kcal': 18.00, 'protein': 0.90, 'sugar': 2.10} },
'D05_A13_I16': {'name': "Cherries", 'cost': 4.58, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 5.40, 'vigor': 4.60, 'skill': 2.60, 'train': 3.40, 'regen': 15.40, 'vital': 6.70, 'force': 5.40, 'guard': 3.20, 'metab': 25.00, 'fight': 2.60, 'react': 7.20, 'focus': 9.60, 'aware': 6.50, 'psych': 9.90, 'qi': 7.31, 'karma': 0.10, 'kcal': 77.00, 'protein': 1.60, 'sugar': 13.00} },
'D05_A13_I17': {'name': "Chili Peppers", 'cost': 0.59, 'uses': 6, 'role': "food", MATRIX:{'tough': 10.50, 'power': 3.60, 'vigor': 5.40, 'skill': 1.80, 'train': 2.10, 'regen': 12.70, 'vital': 8.60, 'force': 13.40, 'guard': 5.70, 'metab': 25.00, 'fight': 9.80, 'react': 11.40, 'focus': 13.20, 'aware': -0.60, 'psych': 16.70, 'qi': 9.29, 'karma': 0.30, 'kcal': 30.00, 'protein': 1.40, 'sugar': 4.00} },
'D05_A13_I18': {'name': "Coconuts", 'cost': 1.47, 'uses': 2, 'role': "food", MATRIX:{'tough': 4.20, 'power': 6.20, 'vigor': 2.10, 'skill': 1.20, 'train': 2.50, 'regen': 7.44, 'vital': 7.40, 'force': 5.20, 'guard': 6.30, 'metab': 20.00, 'fight': 1.10, 'react': 1.30, 'focus': 7.70, 'aware': 3.40, 'psych': 11.40, 'qi': 5.83, 'karma': 0.10, 'kcal': 703.00, 'protein': 6.50, 'sugar': 25.00} },
'D05_A13_I19': {'name': "Corn Cob", 'cost': 0.62, 'uses': 1, 'role': "hard food", MATRIX:{'tough': 6.20, 'power': 3.40, 'vigor': 6.10, 'skill': 0.20, 'train': 0.60, 'regen': 1.20, 'vital': 0.80, 'force': -0.10, 'guard': 0.60, 'metab': 15.00, 'fight': -0.20, 'react': 2.10, 'focus': -0.10, 'aware': 2.20, 'psych': -0.40, 'qi': 2.51, 'karma': -0.10, 'kcal': 155.00, 'protein': 4.50, 'sugar': 32.00} },
'D05_A13_I20': {'name': "Cranberries", 'cost': 1.86, 'uses': 5, 'role': "food", MATRIX:{'tough': 2.80, 'power': 4.20, 'vigor': 3.60, 'skill': 2.10, 'train': 3.20, 'regen': 5.60, 'vital': 7.10, 'force': 2.80, 'guard': 1.70, 'metab': 15.00, 'fight': 6.20, 'react': 2.40, 'focus': 5.10, 'aware': 1.20, 'psych': 3.40, 'qi': 4.43, 'karma': 0.10, 'kcal': 46.00, 'protein': 0.40, 'sugar': 4.00} },
'D05_A13_I21': {'name': "Cucumbers", 'cost': 0.67, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.80, 'vigor': 0.20, 'skill': 1.20, 'train': 1.40, 'regen': 2.10, 'vital': 1.10, 'force': 0.70, 'guard': 0.20, 'metab': 15.00, 'fight': 1.00, 'react': 0.40, 'focus': 1.60, 'aware': 0.80, 'psych': 2.30, 'qi': 2.13, 'karma': 0.20, 'kcal': 2.00, 'protein': 0.10, 'sugar': 0.30} },
'D05_A13_I22': {'name': "Dragonfruit", 'cost': 2.47, 'uses': 1, 'role': "food", MATRIX:{'tough': 6.30, 'power': 5.60, 'vigor': 3.80, 'skill': 5.10, 'train': 4.40, 'regen': 13.80, 'vital': 8.70, 'force': 6.90, 'guard': 5.40, 'metab': 25.00, 'fight': 4.10, 'react': 3.60, 'focus': 2.80, 'aware': 6.20, 'psych': 8.40, 'qi': 7.34, 'karma': 0.10, 'kcal': 52.00, 'protein': 1.10, 'sugar': 11.00} },
'D05_A13_I23': {'name': "Eggplant", 'cost': 2.58, 'uses': 6, 'role': "food", MATRIX:{'tough': 3.10, 'power': 2.80, 'vigor': 1.90, 'skill': 2.60, 'train': 1.90, 'regen': 9.40, 'vital': 4.10, 'force': 5.20, 'guard': 3.30, 'metab': 15.00, 'fight': 1.50, 'react': 2.00, 'focus': 2.10, 'aware': 3.30, 'psych': 1.70, 'qi': 3.99, 'karma': 0.30, 'kcal': 20.00, 'protein': 0.80, 'sugar': 2.90} },
'D05_A13_I24': {'name': "Garlic", 'cost': 1.86, 'uses': 6, 'role': "food", MATRIX:{'tough': 8.40, 'power': 6.80, 'vigor': 4.10, 'skill': 7.70, 'train': 6.80, 'regen': 17.70, 'vital': 6.50, 'force': 7.80, 'guard': 8.10, 'metab': 25.00, 'fight': 4.00, 'react': 3.10, 'focus': 5.50, 'aware': -0.10, 'psych': 4.20, 'qi': 7.71, 'karma': 0.30, 'kcal': 102.00, 'protein': 4.30, 'sugar': 9.00} },
'D05_A13_I25': {'name': "Grapefruit", 'cost': 1.40, 'uses': 4, 'role': "food", MATRIX:{'tough': 3.50, 'power': 8.40, 'vigor': 5.60, 'skill': 5.60, 'train': 5.40, 'regen': 11.20, 'vital': 5.80, 'force': 6.20, 'guard': 5.70, 'metab': 25.00, 'fight': 7.10, 'react': 6.50, 'focus': -0.10, 'aware': 9.20, 'psych': -0.20, 'qi': 6.99, 'karma': 0.10, 'kcal': 52.00, 'protein': 0.90, 'sugar': 8.00} },
'D05_A13_I26': {'name': "Grapes Green", 'cost': 2.98, 'uses': 5, 'role': "food", MATRIX:{'tough': 1.10, 'power': 1.10, 'vigor': 2.80, 'skill': 3.80, 'train': 2.10, 'regen': 2.60, 'vital': 1.60, 'force': 2.20, 'guard': 2.60, 'metab': 15.00, 'fight': 0.40, 'react': 2.20, 'focus': 4.70, 'aware': 7.80, 'psych': 6.10, 'qi': 3.74, 'karma': 0.10, 'kcal': 59.00, 'protein': 0.50, 'sugar': 14.00} },
'D05_A13_I27': {'name': "Grapes Red", 'cost': 2.54, 'uses': 5, 'role': "food", MATRIX:{'tough': 1.30, 'power': 1.20, 'vigor': 2.40, 'skill': 2.20, 'train': 2.70, 'regen': 2.90, 'vital': 1.20, 'force': 2.30, 'guard': 3.10, 'metab': 15.00, 'fight': 0.20, 'react': 4.10, 'focus': 3.90, 'aware': 5.60, 'psych': 4.90, 'qi': 3.53, 'karma': 0.10, 'kcal': 68.00, 'protein': 0.60, 'sugar': 17.00} },
'D05_A13_I28': {'name': "Green Beans", 'cost': 1.36, 'uses': 5, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.20, 'vigor': 0.80, 'skill': 1.60, 'train': 1.40, 'regen': 5.60, 'vital': 2.10, 'force': 1.40, 'guard': 1.80, 'metab': 15.00, 'fight': 3.10, 'react': 2.80, 'focus': 2.50, 'aware': 2.00, 'psych': 1.60, 'qi': 3.00, 'karma': 0.20, 'kcal': 31.00, 'protein': 1.80, 'sugar': 0.50} },
'D05_A13_I29': {'name': "Green Onions (scallions)", 'cost': 2.19, 'uses': 10, 'role': "food", MATRIX:{'tough': 2.80, 'power': 2.60, 'vigor': 1.60, 'skill': 2.60, 'train': 2.40, 'regen': 6.10, 'vital': 4.40, 'force': 3.10, 'guard': 2.70, 'metab': 15.00, 'fight': 6.00, 'react': 5.80, 'focus': 7.70, 'aware': 8.10, 'psych': 1.80, 'qi': 4.85, 'karma': 0.20, 'kcal': 15.00, 'protein': 0.90, 'sugar': 0.90} },
'D05_A13_I30': {'name': "Guava", 'cost': 3.54, 'uses': 7, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.20, 'vigor': 3.80, 'skill': 2.10, 'train': 3.70, 'regen': 7.10, 'vital': 2.30, 'force': 2.80, 'guard': 1.40, 'metab': 15.00, 'fight': 7.10, 'react': 6.30, 'focus': 8.20, 'aware': 4.80, 'psych': 5.60, 'qi': 4.90, 'karma': 0.10, 'kcal': 38.00, 'protein': 1.40, 'sugar': 4.90} },
'D05_A13_I31': {'name': "Jalapenos", 'cost': 1.19, 'uses': 5, 'role': "food", MATRIX:{'tough': 25.90, 'power': 3.80, 'vigor': 6.80, 'skill': 8.90, 'train': 9.40, 'regen': 14.90, 'vital': 5.20, 'force': 9.90, 'guard': 6.70, 'metab': 25.00, 'fight': 9.60, 'react': 11.80, 'focus': 10.40, 'aware': -2.60, 'psych': 9.40, 'qi': 10.34, 'karma': 0.40, 'kcal': 26.00, 'protein': 0.80, 'sugar': 3.70} },
'D05_A13_I32': {'name': "Kale", 'cost': 2.27, 'uses': 6, 'role': "food", MATRIX:{'tough': 4.10, 'power': 2.30, 'vigor': 1.80, 'skill': 7.60, 'train': 7.30, 'regen': 38.60, 'vital': -1.80, 'force': 4.60, 'guard': 8.40, 'metab': 10.00, 'fight': -0.60, 'react': -1.40, 'focus': -0.10, 'aware': -0.80, 'psych': 7.10, 'qi': 5.81, 'karma': 0.40, 'kcal': 33.00, 'protein': 2.90, 'sugar': 1.60} },
'D05_A13_I33': {'name': "Kiwis", 'cost': 0.45, 'uses': 1, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.80, 'vigor': 2.30, 'skill': 3.40, 'train': 1.70, 'regen': 4.20, 'vital': 2.40, 'force': 2.30, 'guard': 4.10, 'metab': 15.00, 'fight': 4.80, 'react': 6.10, 'focus': 5.10, 'aware': 4.20, 'psych': 3.90, 'qi': 4.23, 'karma': 0.10, 'kcal': 42.00, 'protein': 0.80, 'sugar': 6.00} },
'D05_A13_I34': {'name': "Lemons", 'cost': 1.21, 'uses': 16, 'role': "food", MATRIX:{'tough': 12.40, 'power': 5.10, 'vigor': 6.20, 'skill': 9.60, 'train': 10.20, 'regen': 15.30, 'vital': 7.70, 'force': 8.70, 'guard': 7.70, 'metab': 25.00, 'fight': 8.60, 'react': 9.70, 'focus': 6.40, 'aware': 18.60, 'psych': -1.80, 'qi': 9.96, 'karma': 0.20, 'kcal': 9.00, 'protein': 0.30, 'sugar': 0.80} },
'D05_A13_I35': {'name': "Lettuce Iceberg", 'cost': 1.52, 'uses': 6, 'role': "food", MATRIX:{'tough': 0.20, 'power': 0.30, 'vigor': 0.10, 'skill': 1.40, 'train': 1.10, 'regen': 0.10, 'vital': 0.10, 'force': 1.20, 'guard': 1.10, 'metab': 15.00, 'fight': 1.40, 'react': 2.60, 'focus': 3.10, 'aware': 2.30, 'psych': 2.60, 'qi': 2.17, 'karma': 0.10, 'kcal': 10.00, 'protein': 1.00, 'sugar': 2.00} },
'D05_A13_I36': {'name': "Limes", 'cost': 1.49, 'uses': 6, 'role': "food", MATRIX:{'tough': 4.30, 'power': 3.80, 'vigor': 2.80, 'skill': 5.10, 'train': 4.40, 'regen': 10.70, 'vital': 12.10, 'force': 4.80, 'guard': 5.90, 'metab': 25.00, 'fight': 6.00, 'react': 4.00, 'focus': 7.10, 'aware': 6.90, 'psych': 11.80, 'qi': 7.65, 'karma': 0.10, 'kcal': 20.00, 'protein': 0.50, 'sugar': 1.10} },
'D05_A13_I37': {'name': "Mangos", 'cost': 1.61, 'uses': 1, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.80, 'vigor': 3.80, 'skill': 3.20, 'train': 2.60, 'regen': 7.80, 'vital': 7.40, 'force': 2.30, 'guard': 2.40, 'metab': 15.00, 'fight': -1.60, 'react': -0.10, 'focus': 3.20, 'aware': -0.10, 'psych': 4.10, 'qi': 3.66, 'karma': 0.10, 'kcal': 201.00, 'protein': 2.80, 'sugar': 46.00} },
'D05_A13_I38': {'name': "Mushrooms Portobello", 'cost': 4.53, 'uses': 5, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.40, 'vigor': 2.40, 'skill': 4.30, 'train': 3.60, 'regen': 12.20, 'vital': 3.20, 'force': 2.10, 'guard': 3.60, 'metab': 15.00, 'fight': -0.40, 'react': -0.10, 'focus': 7.20, 'aware': 8.10, 'psych': 16.90, 'qi': 5.51, 'karma': 0.20, 'kcal': 20.00, 'protein': 3.00, 'sugar': 2.00} },
'D05_A13_I39': {'name': "Nectarines", 'cost': 2.43, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.80, 'power': 2.80, 'vigor': 2.60, 'skill': 2.70, 'train': 4.40, 'regen': 7.80, 'vital': 5.10, 'force': 2.40, 'guard': 2.60, 'metab': 15.00, 'fight': 3.60, 'react': 4.90, 'focus': 6.20, 'aware': 2.90, 'psych': 5.10, 'qi': 4.73, 'karma': 0.10, 'kcal': 63.00, 'protein': 1.50, 'sugar': 11.00} },
'D05_A13_I40': {'name': "Olives", 'cost': 2.24, 'uses': 10, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.90, 'vigor': 1.40, 'skill': 4.20, 'train': 2.20, 'regen': 9.10, 'vital': 1.40, 'force': 3.00, 'guard': 2.40, 'metab': 15.00, 'fight': 6.70, 'react': 2.90, 'focus': 3.20, 'aware': 0.80, 'psych': 7.10, 'qi': 4.23, 'karma': 0.10, 'kcal': 56.00, 'protein': 6.00, 'sugar': 8.00} },
'D05_A13_I41': {'name': "Onions", 'cost': 1.14, 'uses': 13, 'role': "food", MATRIX:{'tough': 6.30, 'power': 5.40, 'vigor': 5.40, 'skill': 5.60, 'train': 4.30, 'regen': 11.30, 'vital': 2.10, 'force': 6.20, 'guard': 5.70, 'metab': 15.00, 'fight': 8.10, 'react': 9.60, 'focus': 3.00, 'aware': -0.10, 'psych': 4.70, 'qi': 6.17, 'karma': 0.20, 'kcal': 44.00, 'protein': 1.20, 'sugar': 4.70} },
'D05_A13_I42': {'name': "Oranges", 'cost': 1.15, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 4.80, 'vigor': 3.80, 'skill': 4.80, 'train': 5.70, 'regen': 17.40, 'vital': 15.20, 'force': 6.90, 'guard': 11.10, 'metab': 25.00, 'fight': 2.10, 'react': 4.40, 'focus': 5.90, 'aware': 6.30, 'psych': 11.70, 'qi': 8.48, 'karma': 0.10, 'kcal': 78.00, 'protein': 1.50, 'sugar': 15.00} },
'D05_A13_I43': {'name': "Papayas", 'cost': 1.63, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.60, 'vigor': 4.70, 'skill': 4.10, 'train': 5.30, 'regen': 8.60, 'vital': 6.80, 'force': 2.00, 'guard': 3.80, 'metab': 15.00, 'fight': 0.20, 'react': 2.90, 'focus': 1.60, 'aware': 5.10, 'psych': 4.40, 'qi': 4.61, 'karma': 0.10, 'kcal': 67.00, 'protein': 0.70, 'sugar': 12.00} },
'D05_A13_I44': {'name': "Passion Fruit", 'cost': 7.43, 'uses': 25, 'role': "food", MATRIX:{'tough': 5.30, 'power': 6.30, 'vigor': 8.90, 'skill': 6.90, 'train': 3.40, 'regen': 13.90, 'vital': 11.40, 'force': -0.60, 'guard': 6.90, 'metab': 15.00, 'fight': 3.40, 'react': 6.90, 'focus': 9.80, 'aware': 13.40, 'psych': 5.00, 'qi': 7.73, 'karma': 0.10, 'kcal': 17.00, 'protein': 0.40, 'sugar': 2.00} },
'D05_A13_I45': {'name': "Peaches", 'cost': 2.64, 'uses': 3, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.70, 'vigor': 6.20, 'skill': 4.70, 'train': 4.20, 'regen': 5.90, 'vital': 6.70, 'force': 2.30, 'guard': 3.00, 'metab': 15.00, 'fight': 6.20, 'react': 4.40, 'focus': 2.60, 'aware': 3.80, 'psych': 3.10, 'qi': 4.86, 'karma': 0.10, 'kcal': 59.00, 'protein': 1.40, 'sugar': 13.00} },
'D05_A13_I46': {'name': "Pears", 'cost': 1.38, 'uses': 2, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.30, 'vigor': 2.70, 'skill': 2.60, 'train': 3.70, 'regen': 2.40, 'vital': 1.90, 'force': 1.40, 'guard': 1.90, 'metab': 15.00, 'fight': 6.10, 'react': 8.60, 'focus': 4.40, 'aware': 2.20, 'psych': 1.30, 'qi': 3.84, 'karma': 0.10, 'kcal': 102.00, 'protein': 0.60, 'sugar': 17.00} },
'D05_A13_I47': {'name': "Pineapples", 'cost': 2.74, 'uses': 3, 'role': "food", MATRIX:{'tough': 6.50, 'power': 4.60, 'vigor': 7.40, 'skill': 6.10, 'train': 4.50, 'regen': 21.30, 'vital': 14.10, 'force': 4.40, 'guard': 5.80, 'metab': 25.00, 'fight': 2.40, 'react': 6.90, 'focus': 16.20, 'aware': 14.60, 'psych': 10.10, 'qi': 9.99, 'karma': 0.20, 'kcal': 151.00, 'protein': 1.60, 'sugar': 29.70} },
'D05_A13_I48': {'name': "Plums", 'cost': 1.68, 'uses': 1, 'role': "food", MATRIX:{'tough': 4.10, 'power': 2.30, 'vigor': 2.10, 'skill': 3.60, 'train': 4.90, 'regen': 6.70, 'vital': 4.10, 'force': 2.20, 'guard': 4.00, 'metab': 15.00, 'fight': 5.20, 'react': 1.80, 'focus': -0.10, 'aware': 1.20, 'psych': 2.00, 'qi': 3.94, 'karma': 0.10, 'kcal': 30.00, 'protein': 0.50, 'sugar': 7.00} },
'D05_A13_I49': {'name': "Pomegranate", 'cost': 1.13, 'uses': 3, 'role': "food", MATRIX:{'tough': 5.40, 'power': 1.70, 'vigor': 4.30, 'skill': 4.40, 'train': 4.10, 'regen': 9.60, 'vital': 8.70, 'force': -0.10, 'guard': 5.40, 'metab': 15.00, 'fight': 0.60, 'react': 17.10, 'focus': 6.70, 'aware': 2.60, 'psych': 7.40, 'qi': 6.19, 'karma': 0.10, 'kcal': 72.00, 'protein': 1.50, 'sugar': 12.00} },
'D05_A13_I50': {'name': "Potatoes (5lb bag)", 'cost': 2.64, 'uses': 12, 'role': "hard food", MATRIX:{'tough': 2.10, 'power': 1.40, 'vigor': 8.20, 'skill': 0.20, 'train': 0.60, 'regen': 2.70, 'vital': 3.30, 'force': 2.10, 'guard': 2.70, 'metab': 15.00, 'fight': 11.10, 'react': 5.10, 'focus': 4.60, 'aware': 3.50, 'psych': 2.40, 'qi': 4.33, 'karma': 0.10, 'kcal': 163.00, 'protein': 4.30, 'sugar': 1.70} },
'D05_A13_I51': {'name': "Pumpkin (2lb)", 'cost': 3.08, 'uses': 8, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.80, 'vigor': 4.40, 'skill': 2.10, 'train': 1.60, 'regen': 7.80, 'vital': 2.40, 'force': 1.40, 'guard': 2.90, 'metab': 15.00, 'fight': 6.40, 'react': 5.50, 'focus': 3.90, 'aware': 2.70, 'psych': 4.10, 'qi': 4.27, 'karma': 0.20, 'kcal': 30.00, 'protein': 1.20, 'sugar': 3.20} },
'D05_A13_I52': {'name': "Raspberries", 'cost': 2.98, 'uses': 4, 'role': "food", MATRIX:{'tough': 3.30, 'power': 1.30, 'vigor': 5.40, 'skill': 2.40, 'train': 4.40, 'regen': 16.10, 'vital': 6.10, 'force': 3.20, 'guard': 5.50, 'metab': 45.00, 'fight': 2.70, 'react': 6.20, 'focus': 7.10, 'aware': 14.20, 'psych': 9.20, 'qi': 8.81, 'karma': 0.10, 'kcal': 65.00, 'protein': 1.50, 'sugar': 5.00} },
'D05_A13_I53': {'name': "Spinach", 'cost': 6.07, 'uses': 3, 'role': "food", MATRIX:{'tough': 7.40, 'power': 27.60, 'vigor': 6.70, 'skill': 8.20, 'train': 7.10, 'regen': 11.40, 'vital': 13.10, 'force': 4.30, 'guard': 4.00, 'metab': 15.00, 'fight': 14.60, 'react': 2.10, 'focus': 1.90, 'aware': -1.20, 'psych': 4.70, 'qi': 8.46, 'karma': 0.30, 'kcal': 35.00, 'protein': 4.50, 'sugar': 0.50} },
'D05_A13_I54': {'name': "Squash", 'cost': 2.06, 'uses': 2, 'role': "food", MATRIX:{'tough': 4.70, 'power': 3.30, 'vigor': 2.60, 'skill': 2.60, 'train': 4.10, 'regen': 7.20, 'vital': 2.40, 'force': 2.60, 'guard': 1.40, 'metab': 15.00, 'fight': 7.10, 'react': 6.80, 'focus': 2.70, 'aware': 3.90, 'psych': 1.10, 'qi': 4.50, 'karma': 0.20, 'kcal': 76.00, 'protein': 1.80, 'sugar': 7.00} },
'D05_A13_I55': {'name': "Star fruit (carambola)", 'cost': 5.67, 'uses': 5, 'role': "food", MATRIX:{'tough': 3.50, 'power': 2.80, 'vigor': 5.80, 'skill': 3.30, 'train': 1.80, 'regen': 8.40, 'vital': 7.30, 'force': 6.30, 'guard': 7.10, 'metab': 15.00, 'fight': -1.70, 'react': 2.60, 'focus': 18.40, 'aware': 14.70, 'psych': 19.90, 'qi': 7.68, 'karma': 0.10, 'kcal': 28.00, 'protein': 0.90, 'sugar': 3.60} },
'D05_A13_I56': {'name': "Strawberries", 'cost': 6.29, 'uses': 6, 'role': "food", MATRIX:{'tough': 2.10, 'power': 0.60, 'vigor': 8.40, 'skill': 0.70, 'train': 0.40, 'regen': 4.60, 'vital': 2.80, 'force': -0.10, 'guard': 1.60, 'metab': 15.00, 'fight': 3.10, 'react': 2.70, 'focus': 1.60, 'aware': 6.80, 'psych': 16.20, 'qi': 4.43, 'karma': 0.10, 'kcal': 28.00, 'protein': 0.70, 'sugar': 4.20} },
'D05_A13_I57': {'name': "Sweet Potatoes", 'cost': 1.78, 'uses': 4, 'role': "food", MATRIX:{'tough': 3.10, 'power': 2.60, 'vigor': 5.50, 'skill': 1.60, 'train': 3.10, 'regen': 6.50, 'vital': 3.50, 'force': 2.60, 'guard': 2.80, 'metab': 15.00, 'fight': 4.90, 'react': 5.30, 'focus': 6.40, 'aware': 5.40, 'psych': 2.30, 'qi': 4.71, 'karma': 0.10, 'kcal': 114.00, 'protein': 2.10, 'sugar': 6.00} },
'D05_A13_I58': {'name': "Tangerines", 'cost': 3.04, 'uses': 5, 'role': "food", MATRIX:{'tough': 2.10, 'power': 2.40, 'vigor': 6.30, 'skill': 2.70, 'train': 3.40, 'regen': 11.10, 'vital': 7.10, 'force': 3.70, 'guard': 4.60, 'metab': 25.00, 'fight': -0.20, 'react': 3.00, 'focus': 6.50, 'aware': 8.00, 'psych': 7.70, 'qi': 6.23, 'karma': 0.10, 'kcal': 47.00, 'protein': 0.70, 'sugar': 9.00} },
'D05_A13_I59': {'name': "Tomatoes", 'cost': 2.87, 'uses': 4, 'role': "food", MATRIX:{'tough': 2.80, 'power': 1.50, 'vigor': 1.70, 'skill': 2.10, 'train': 4.30, 'regen': 7.50, 'vital': 3.20, 'force': 2.90, 'guard': 4.10, 'metab': 15.00, 'fight': 10.00, 'react': 6.60, 'focus': 2.30, 'aware': 4.10, 'psych': 3.80, 'qi': 4.79, 'karma': 0.10, 'kcal': 22.00, 'protein': 1.10, 'sugar': 3.20} },
'D05_A13_I60': {'name': "Watermelon (5lb)", 'cost': 3.14, 'uses': 8, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.30, 'vigor': 2.40, 'skill': 2.20, 'train': 3.10, 'regen': 5.70, 'vital': 4.40, 'force': 3.60, 'guard': 5.40, 'metab': 30.00, 'fight': 13.30, 'react': 9.70, 'focus': 4.20, 'aware': 5.10, 'psych': 1.20, 'qi': 6.25, 'karma': 0.10, 'kcal': 85.00, 'protein': 1.70, 'sugar': 17.00} },
'D05_A13_I61': {'name': "Zucchini", 'cost': 2.21, 'uses': 2, 'role': "food", MATRIX:{'tough': 4.10, 'power': 1.90, 'vigor': 1.20, 'skill': 2.50, 'train': 5.70, 'regen': 5.40, 'vital': 5.10, 'force': 2.60, 'guard': 6.10, 'metab': 15.00, 'fight': 6.70, 'react': 3.10, 'focus': 0.30, 'aware': 6.90, 'psych': -0.10, 'qi': 4.43, 'karma': 0.20, 'kcal': 44.00, 'protein': 3.20, 'sugar': 6.50} },
'D05_A14_I01': {'name': "Beef Jerky 10oz bag Teriyaki", 'cost': 11.95, 'uses': 10, 'role': "food", MATRIX:{'tough': 9.60, 'power': 13.40, 'vigor': 11.80, 'skill': -0.10, 'train': 3.30, 'regen': 4.60, 'vital': 1.40, 'force': 6.20, 'guard': 7.10, 'metab': 12.00, 'fight': 13.20, 'react': 11.80, 'focus': 6.10, 'aware': -1.20, 'psych': -4.00, 'qi': 6.35, 'karma': -0.10, 'kcal': 108.00, 'protein': 12.10, 'sugar': 1.00} },
'D05_A14_I02': {'name': "Mixed Nuts 1lb", 'cost': 4.95, 'uses': 13, 'role': "food", MATRIX:{'tough': 4.20, 'power': 6.70, 'vigor': 7.60, 'skill': 3.40, 'train': 4.10, 'regen': 1.20, 'vital': 2.60, 'force': 8.10, 'guard': 8.60, 'metab': 9.00, 'fight': 7.10, 'react': 6.20, 'focus': 8.40, 'aware': 6.10, 'psych': 7.10, 'qi': 6.03, 'karma': 0.10, 'kcal': 180.00, 'protein': 6.40, 'sugar': 4.00} },
'D05_A14_I03': {'name': "Potato Chips Family Size", 'cost': 4.29, 'uses': 14, 'role': "food", MATRIX:{'tough': 2.10, 'power': 1.00, 'vigor': 1.50, 'skill': 0.40, 'train': -0.10, 'regen': -0.40, 'vital': 0.40, 'force': 0.20, 'guard': -0.20, 'metab': 18.00, 'fight': -0.60, 'react': -0.80, 'focus': -2.00, 'aware': -0.60, 'psych': 2.10, 'qi': 1.40, 'karma': -0.10, 'kcal': 152.00, 'protein': 1.90, 'sugar': 15.00} },
'D08_A09_I01': {'name': "sheets", 'cost': 11.98, 'uses': 200, 'role': "bedding", MATRIX:{} },
'D08_A09_I02': {'name': "towel", 'cost': 6.98, 'uses': 120, 'role': "towel", MATRIX:{} },
'D08_A09_I03': {'name': "washcloth 2pk", 'cost': 0.98, 'uses': 70, 'role': "hygene", MATRIX:{} },
/* END setup.ITEMS */ }>><<set setup.ENGINE={ /* GAME ENGINE -- everything below this point */
'gameVersion' : 0.22,
'buildVersion' : "public build",
'versionUpdate' : function() {
/* v0.1-0.11 */
var out_of_date=false;
/* shift gamestate data to characters before running additional tests */
if(!$GAMEDATA.PC.STATE && $GAMEDATA.STATE) { $GAMEDATA.PC.STATE = $GAMEDATA.STATE; $GAMEDATA.STATE = null; }
if(!$GAMEDATA.PC.STATE.saveVersion && $GAMEDATA.PC.STATE.gameVersion) { $GAMEDATA.PC.STATE.saveVersion = $GAMEDATA.PC.STATE.gameVersion; $GAMEDATA.PC.STATE.gameVersion = null; }
if( !$GAMEDATA.PC.STATE.saveVersion ){ $GAMEDATA.PC.STATE.saveVersion = 0.10; }
if( $GAMEDATA.PC.STATE.saveVersion<setup.ENGINE.gameVersion ){
if($GAMEDATA.PC.STATE.saveVersion<0.21) {
/* do updates accordingly, default character is Cindy */
if(!$GAMEDATA.PC.METRICS.bust || $GAMEDATA.PC.METRICS.bust<0) { out_of_date=true; $GAMEDATA.PC.METRICS.bust = 2; }
if(!$GAMEDATA.PC.PASSAGES) { out_of_date=true; $GAMEDATA.PC.PASSAGES={ 'start':"START CINDY", 'home':"LIVING IN CAR" }; }
if(!$GAMEDATA.PC.STATE) { out_of_date=true; $GAMEDATA.PC.STATE={ 'Date': new Date() }; }
if(!$GAMEDATA.PC.STATE.lastPassage) { out_of_date=true; $GAMEDATA.PC.STATE.lastPassage = State.passage; }
if(!$GAMEDATA.PC.METRICS.base_ht) { out_of_date=true; $GAMEDATA.PC.METRICS.base_ht=setup.CHARS['Cindy Phoenix'].METRICS.base_ht; }
if(!$GAMEDATA.PC.METRICS.adj_wt) { out_of_date=true; $GAMEDATA.PC.METRICS.adj_wt=setup.CHARS['Cindy Phoenix'].METRICS.wt; }
if(!$GAMEDATA.PC.JUNK) { out_of_date=true; $GAMEDATA.PC.JUNK={}; }
}
if($GAMEDATA.PC.STATE.saveVersion<0.3) {
/* do updates accordingly */
if(!$GAMEDATA.PC.STATS.INS) { out_of_date=true; $GAMEDATA.PC.STATS.INS = $GAMEDATA.PC.STATS.level; }
if(!$GAMEDATA.PC.STATS.WSD) { out_of_date=true; $GAMEDATA.PC.STATS.WSD = $GAMEDATA.PC.STATS.level; }
if(!$GAMEDATA.PC.MATRIX.skill) { out_of_date=true; $GAMEDATA.PC.MATRIX.skill = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.train) { out_of_date=true; $GAMEDATA.PC.MATRIX.train = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.force) { out_of_date=true; $GAMEDATA.PC.MATRIX.force = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.guard) { out_of_date=true; $GAMEDATA.PC.MATRIX.guard = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.fight) { out_of_date=true; $GAMEDATA.PC.MATRIX.fight = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.react) { out_of_date=true; $GAMEDATA.PC.MATRIX.react = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.focus) { out_of_date=true; $GAMEDATA.PC.MATRIX.focus = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.aware) { out_of_date=true; $GAMEDATA.PC.MATRIX.aware = $GAMEDATA.PC.STATS.level**2; }
if(!$GAMEDATA.PC.MATRIX.psych) { out_of_date=true; $GAMEDATA.PC.MATRIX.psych = $GAMEDATA.PC.STATS.level**2; }
}
/* wait until all upgrade tests pass before updating version number... */
/* this way, if it requires player choice, like creed, it will keep prompting until a selection is made */
if(!out_of_date) { $GAMEDATA.PC.STATE.saveVersion = setup.ENGINE.gameVersion; }
}
},
'do_status_update' : function(CHAR){
CHAR=CHAR||$GAMEDATA.PC;
this.versionUpdate();
this.before_update(CHAR);
CHAR.METRICS.scale = CHAR.METRICS.ht / CHAR.METRICS.base_ht;
CHAR.METRICS.adj_wt = Math.round(setup.ENGINE.scale(CHAR.METRICS.wt, 3, CHAR));
if(isNaN(CHAR.MATRIX.kcal)) { CHAR.MATRIX.kcal=0; }
/* set metrics */
CHAR.STATS.level = ( CHAR.STATS.STR + CHAR.STATS.END + CHAR.STATS.SPD + CHAR.STATS.PHY ) / 4;
CHAR.STATS.workout_hrs = this.stack(CHAR.STATS.level)/60;
CHAR.METRICS.BMI = (CHAR.METRICS.adj_wt/(CHAR.METRICS.ht**2)*703);
CHAR.STATS.karmic_well = (
this.stack(CHAR.STATS.STR)
+ this.stack(CHAR.STATS.END)
+ this.stack(CHAR.STATS.SPD)
+ this.stack(CHAR.STATS.PHY)
+ this.stack(CHAR.STATS.INS)
+ this.stack(CHAR.STATS.WSD)
);
/* setup.ENGINE.scale(,2, CHAR); */
/* Variable Bodymass (VBM) is anything over 1 lb per inch of height can be either muscle or fat, the remainder is essential structures and organs */
var VBM = setup.ENGINE.scale(CHAR.METRICS.wt-CHAR.METRICS.ht, 3, CHAR);
var PHY_stack = (CHAR.STATS.PHY+1)*(CHAR.STATS.PHY/2);
var VBM_toned = PHY_stack/(PHY_stack+VBM);
CHAR.METRICS.bodyfat = ((1-VBM_toned)*(VBM/CHAR.METRICS.adj_wt)*100);
/* base calculations */
CHAR.METRICS.bicep = Math.max( 3, 3+(CHAR.STATS.STR*0.25) + ((CHAR.STATS.END +CHAR.STATS.PHY)/8) + (CHAR.METRICS.wt /84) ); /* 6.0, inches; max-curl = power*bicep/30; reps - max/3 */
CHAR.METRICS.quads = Math.max( 6, 7+(CHAR.STATS.STR*0.45) + ((CHAR.STATS.END +CHAR.STATS.PHY)/6.2) + (CHAR.METRICS.wt /62) ); /* 13.0, inches; max-squat = power*quad/15; reps - max/3 */
CHAR.METRICS.chest = Math.max( 15, 15+(CHAR.STATS.STR*0.75) + ((CHAR.STATS.END +CHAR.STATS.PHY)/5.4) + (CHAR.METRICS.wt /54) ); /* 23.0, */
CHAR.METRICS.waist = Math.max( 13, 16+(((CHAR.STATS.STR*0.15)+(CHAR.STATS.END*0.30)-(CHAR.STATS.PHY*0.4))*0.55) + ((CHAR.METRICS.wt-CHAR.METRICS.ht) /12.4) ); /* 19.0, */
CHAR.METRICS.hips = Math.max( 14, 13+(CHAR.STATS.STR*0.80) + ((CHAR.STATS.END +CHAR.STATS.PHY)/4.8) + (CHAR.METRICS.wt /44) ); /* 25.0, */
CHAR.METRICS.cup = Math.round(CHAR.METRICS.bust + (CHAR.METRICS.wt/60) + ((CHAR.METRICS.bodyfat/10)-5.4));
if(!setup.FLAGS.DISPLAY.base_metrics){
/* scale metrics */
CHAR.METRICS.bicep = setup.ENGINE.scale( CHAR.METRICS.bicep, 2, CHAR); /* 6.0, inches; max-curl = power*bicep/30; reps - max/3 */
CHAR.METRICS.quads = setup.ENGINE.scale( CHAR.METRICS.quads, 2, CHAR); /* 13.0, inches; max-squat = power*quad/15; reps - max/3 */
CHAR.METRICS.chest = setup.ENGINE.scale( CHAR.METRICS.chest, 2, CHAR); /* 23.0, */
CHAR.METRICS.waist = setup.ENGINE.scale( CHAR.METRICS.waist, 2, CHAR); /* 19.0, */
CHAR.METRICS.hips = setup.ENGINE.scale( CHAR.METRICS.hips, 2, CHAR); /* 25.0, */
CHAR.METRICS.cup = Math.round(setup.ENGINE.scale( CHAR.METRICS.cup, 2, CHAR));
}
/* put stats in upper bounds, do 1/10 cycle at default decay */
setup.ENGINE.energyBleedOff(0.1);
for(var status in setup.STATUSES) {
if(status in CHAR.STATUS) { /* see if it should be removed... */
if(false==setup.STATUSES[status].test()) {
delete CHAR.STATUS[status];
setup.STATUSES[status].onRemove();
}
} else { /* see if it should be added... */
if(true==setup.STATUSES[status].test()) {
CHAR.STATUS[status]=setup.STATUSES[status].text;
setup.STATUSES[status].onApply();
}
}
}
this.after_update(CHAR);
this.refresh_detail();
},
'energyBleedOff' : function(cycles, loss, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
cycles = cycles || 1.0;
loss = loss || 0.1;
var rate = 1 - loss;
var falloff = rate**cycles;
var kfalloff = (1 - (loss/10))**cycles;
/* put stats in upper bounds */
CHAR.MATRIX.tough = Math.min( CHAR.MATRIX.tough, (CHAR.STATS.STR * CHAR.STATS.END)*3 );
CHAR.MATRIX.power = Math.min( CHAR.MATRIX.power, (CHAR.STATS.STR * CHAR.STATS.SPD)*3 );
CHAR.MATRIX.vigor = Math.min( CHAR.MATRIX.vigor, (CHAR.STATS.STR * CHAR.STATS.PHY)*3 );
CHAR.MATRIX.skill = Math.min( CHAR.MATRIX.skill, (CHAR.STATS.STR * CHAR.STATS.INS)*3 );
CHAR.MATRIX.train = Math.min( CHAR.MATRIX.train, (CHAR.STATS.STR * CHAR.STATS.WSD)*3 );
CHAR.MATRIX.regen = Math.min( CHAR.MATRIX.regen, (CHAR.STATS.END * CHAR.STATS.SPD)*3 );
CHAR.MATRIX.vital = Math.min( CHAR.MATRIX.vital, (CHAR.STATS.END * CHAR.STATS.PHY)*3 );
CHAR.MATRIX.force = Math.min( CHAR.MATRIX.force, (CHAR.STATS.END * CHAR.STATS.INS)*3 );
CHAR.MATRIX.guard = Math.min( CHAR.MATRIX.guard, (CHAR.STATS.END * CHAR.STATS.WSD)*3 );
CHAR.MATRIX.metab = Math.min( CHAR.MATRIX.metab, (CHAR.STATS.SPD * CHAR.STATS.PHY)*3 );
CHAR.MATRIX.fight = Math.min( CHAR.MATRIX.fight, (CHAR.STATS.SPD * CHAR.STATS.INS)*3 );
CHAR.MATRIX.react = Math.min( CHAR.MATRIX.react, (CHAR.STATS.SPD * CHAR.STATS.WSD)*3 );
CHAR.MATRIX.focus = Math.min( CHAR.MATRIX.focus, (CHAR.STATS.PHY * CHAR.STATS.INS)*3 );
CHAR.MATRIX.aware = Math.min( CHAR.MATRIX.aware, (CHAR.STATS.PHY * CHAR.STATS.WSD)*3 );
CHAR.MATRIX.psych = Math.min( CHAR.MATRIX.psych, (CHAR.STATS.INS * CHAR.STATS.WSD)*3 );
CHAR.MATRIX.karma = Math.min(CHAR.MATRIX.karma, CHAR.STATS.karmic_well*CHAR.STATS.level);
CHAR.MATRIX.karma = Math.max(CHAR.MATRIX.karma, -(CHAR.STATS.karmic_well*CHAR.STATS.level));
CHAR.MATRIX.qi = CHAR.MATRIX.tough + CHAR.MATRIX.power + CHAR.MATRIX.vigor + CHAR.MATRIX.regen + CHAR.MATRIX.vital + CHAR.MATRIX.metab;
CHAR.STATS.max_qi = this.maxResource('tough') + this.maxResource('power') + this.maxResource('vigor') + this.maxResource('regen') + this.maxResource('vital') + this.maxResource('metab');
/* bleed off excessive energy at 10% per cycle */
if(CHAR.MATRIX.tough>(CHAR.STATS.STR * CHAR.STATS.END)) { CHAR.MATRIX.tough *= falloff; }
if(CHAR.MATRIX.power>(CHAR.STATS.STR * CHAR.STATS.SPD)) { CHAR.MATRIX.power *= falloff; }
if(CHAR.MATRIX.vigor>(CHAR.STATS.STR * CHAR.STATS.PHY)) { CHAR.MATRIX.vigor *= falloff; }
if(CHAR.MATRIX.skill>(CHAR.STATS.STR * CHAR.STATS.INS)) { CHAR.MATRIX.skill *= falloff; }
if(CHAR.MATRIX.train>(CHAR.STATS.STR * CHAR.STATS.WSD)) { CHAR.MATRIX.train *= falloff; }
if(CHAR.MATRIX.regen>(CHAR.STATS.END * CHAR.STATS.SPD)) { CHAR.MATRIX.regen *= falloff; }
if(CHAR.MATRIX.vital>(CHAR.STATS.END * CHAR.STATS.PHY)) { CHAR.MATRIX.vital *= falloff; }
if(CHAR.MATRIX.force>(CHAR.STATS.END * CHAR.STATS.INS)) { CHAR.MATRIX.force *= falloff; }
if(CHAR.MATRIX.guard>(CHAR.STATS.END * CHAR.STATS.WSD)) { CHAR.MATRIX.guard *= falloff; }
if(CHAR.MATRIX.metab>(CHAR.STATS.SPD * CHAR.STATS.PHY)) { CHAR.MATRIX.metab *= falloff; }
if(CHAR.MATRIX.fight>(CHAR.STATS.SPD * CHAR.STATS.INS)) { CHAR.MATRIX.fight *= falloff; }
if(CHAR.MATRIX.react>(CHAR.STATS.SPD * CHAR.STATS.WSD)) { CHAR.MATRIX.react *= falloff; }
if(CHAR.MATRIX.focus>(CHAR.STATS.PHY * CHAR.STATS.INS)) { CHAR.MATRIX.focus *= falloff; }
if(CHAR.MATRIX.aware>(CHAR.STATS.PHY * CHAR.STATS.WSD)) { CHAR.MATRIX.aware *= falloff; }
if(CHAR.MATRIX.psych>(CHAR.STATS.INS * CHAR.STATS.WSD)) { CHAR.MATRIX.psych *= falloff; }
/* bleed off excessive karma at 1% per cycle */
if(CHAR.MATRIX.karma>CHAR.STATS.karmic_well) { CHAR.MATRIX.karma *= 0.99; }
if(CHAR.MATRIX.karma<(-CHAR.STATS.karmic_well)) { CHAR.MATRIX.karma *= 0.99; }
},
'getSubEncounter' : function(sub_ENCOUNTERS) {
var sub_total = 0;
var sub_spin = Math.random();
var sub_WHEEL = {};
Object.keys(sub_ENCOUNTERS).forEach(function(name) {
sub_total+=sub_ENCOUNTERS[name];
sub_WHEEL[sub_total]=name;
});
/* alert(JSON.stringify(sub_ENCOUNTERS)); */
/* alert(JSON.stringify(sub_WHEEL)); */
sub_spin=Math.round(sub_spin*sub_total);
/* find the spin in the wheel... */
return sub_WHEEL[Object.keys(sub_WHEEL).find(function(ticks) { return ticks>=sub_spin; })];
},
'setupPassage' : function(passage) {
passage=passage||State.passage;
setup.ENGINE.do_status_update();
/* run passage setup */
setup.PASSAGES[passage].setup();
var ENCOUNTERS = setup.PASSAGES[passage].ENCOUNTERS;
var total = 0;
var spin = Math.random();
var WHEEL = {};
Object.keys(ENCOUNTERS).forEach(function(name) {
total+=ENCOUNTERS[name]();
WHEEL[total]=name;
});
/* alert(JSON.stringify(WHEEL)); */
spin=Math.round(spin*total);
/* find the spin in the wheel... */
var encounter = WHEEL[Object.keys(WHEEL).find(function(ticks) { return ticks>=spin; })];
/* set a temporary variable _encounter=encounter */
State.setVar( '_encounter', encounter );
/* IF event has variations, update _encounter to a specific one */
if(setup.ENCOUNTERS[encounter].VARIATIONS) {
var sub_ENCOUNTERS = setup.ENCOUNTERS[encounter].VARIATIONS;
var sub_total = 0;
var sub_spin = Math.random();
var sub_WHEEL = {};
Object.keys(sub_ENCOUNTERS).forEach(function(name) {
sub_total+=sub_ENCOUNTERS[name];
sub_WHEEL[sub_total]=name;
});
/* alert(JSON.stringify(sub_ENCOUNTERS)); */
/* alert(JSON.stringify(sub_WHEEL)); */
sub_spin=Math.round(sub_spin*sub_total);
/* find the spin in the wheel... */
var sub_encounter = sub_WHEEL[Object.keys(sub_WHEEL).find(function(ticks) { return ticks>=sub_spin; })];
/* set a temporary variable _encounter=encounter */
State.setVar( '_encounter', sub_encounter );
}
/* run encounter setup */
setup.ENCOUNTERS[encounter].setup();
return null;
},
'beforePassage' : function(encounter, passage) {
passage=passage||State.passage;
encounter=encounter||_encounter;
if(typeof setup.ENCOUNTERS[encounter].beforePassage === 'function') {
return setup.ENCOUNTERS[encounter].beforePassage();
}
},
'replacePassage' : function(encounter, passage) {
passage=passage||State.passage;
encounter=encounter||_encounter;
/* keeps saying setup is not defined */
if(typeof setup.ENCOUNTERS[encounter].replacePassage === 'function') {
return setup.ENCOUNTERS[encounter].replacePassage();
}
},
'afterPassage' : function(encounter, passage) {
passage=passage||State.passage;
encounter=encounter||_encounter;
if(typeof setup.ENCOUNTERS[encounter].afterPassage === 'function') {
return setup.ENCOUNTERS[encounter].afterPassage();
}
},
'exitPassage' : function(encounter, passage) {
passage=passage||State.passage;
encounter=encounter||_encounter;
if(setup.ENCOUNTERS[encounter].overrideExit) {
return '';
} else {
return setup.PASSAGES[passage].exit();
}
},
'enc_showChoices' : function(CHOICES, encounter) {
encounter=encounter||_encounter;
var uid = 'choices-' + Date.now();
var out = "<div id='"+ uid +"'><ul class='choices'>";
Object.keys(CHOICES).forEach(function(opt){
out += "<li><<link '"+ opt +"'>><<replace '#"+ uid +"'>><<print setup.ENCOUNTERS['"+ encounter +"'].CHOICES['"+ CHOICES[opt] +"']()>><</replace>><</link>></li>";
});
out += "</ul></div>";
return out;
},
'enc_moreDetail' : function(linktext, handler, encounter) {
encounter=encounter||_encounter;
var out = "<p class='optional'><<linkreplace '"+ linktext +"'>><<print setup.ENCOUNTERS['"+ encounter +"'].CHOICES['"+ handler +"']()>><</linkreplace>></p>";
return out;
},
'describePassage' : function(passage) {
passage=passage||State.passage;
var desc='';
if( $GAMEDATA.PC.STATE.lastPassage==passage ) {
desc=$GAMEDATA.PC.STATE.passageDesc;
} else {
switch(passage) {
case 'GO FOR A WALK' :
case 'GO FOR A JOG' :
case 'GO FOR A RUN' :
case 'DO AEROBICS' :
case 'DO CALISTHENICS' :
case 'DO YOGA' :
case 'POST WORKOUT' :
case 'PUSH YOURSELF' : desc = 'exercising'; break;
case 'ENTER BATHROOM' : desc = 'in the bathroom'; break;
case 'FILLOUT APPLICATION' : desc = 'filling an application'; break;
case 'EQUIP' : desc = 'changing'; break;
case 'FOOD' : desc = 'eating'; break;
case 'STUFF' : desc = 'going through your stuff'; break;
case 'SPEND KARMA' : desc = 'growing'; break;
case 'SELF' : desc = 'looking in the mirror'; break;
case 'LOOK FOR CHANGE' : desc = 'searching'; break;
case 'GO HOME' : desc = 'home'; break;
case 'LIVING ON STREET' : desc = 'on the street'; break;
case 'LIVING IN PRISON' : desc = 'in your cell'; break;
case 'LIVING IN CAR' : desc = 'sitting in the car'; break;
case 'LIVING IN MOTEL' : desc = 'in your room'; break;
case 'SLEEP IN CAR' :
case 'SLEEP IN BED' :
case 'REST A BIT' :
case 'TAKE A NAP' : desc = 'resting'; break;
case 'SHOP S-MART' :
case 'CHECKOUT APPAREL' :
case 'CHECKOUT AUTOMOTIVE' :
case 'CHECKOUT ELECTRONICS' :
case 'CHECKOUT FURNITURE' :
case 'CHECKOUT GARDEN' :
case 'CHECKOUT GROCERY' :
case 'CHECKOUT HARDWARE' :
case 'CHECKOUT HOUSEHOLD' :
case 'CHECKOUT HYGIENE' :
case 'CHECKOUT OFFICE' :
case 'CHECKOUT PHARMACY' :
case 'CHECKOUT SEASONAL' :
case 'CHECKOUT SPORTING GOODS' :
case 'LIST ITEMS FOR AISLE' : desc = 'shopping'; break;
default: desc = '...'; break;
}
}
return desc;
},
'findChange' : function(min_find, max_find, karmic_boost) {
min_find=min_find||10;
max_find=max_find||100;
if(typeof karmic_boost==='undefined') { karmic_boost=true; }
var k_mul = (karmic_boost ? 0.1 + (setup.ENGINE.sqrt($GAMEDATA.PC.MATRIX.karma, '0')/100) : 1 );
return Math.floor(
Math.random()*((max_find-min_find)*k_mul)
)/100;
},
'findCash' : function(min_find, max_find, karmic_boost) {
min_find=min_find||1;
max_find=max_find||100;
if(typeof karmic_boost==='undefined') { karmic_boost=true; }
var k_mul = (karmic_boost ? 0.1 + (setup.ENGINE.sqrt($GAMEDATA.PC.MATRIX.karma, '0')/1000) : 1 );
var found = Math.floor(
Math.random()*((max_find-min_find)*k_mul)
);
/* grr.... */
/* if(isNaN(found)) { found=0; } */
return found;
},
'randomID' : function() {
/* will add age, address, and other bits later... */
return setup.NAMES.randomName();
},
'getDeptName' : function(aisle) {
var dept = aisle.substr(0,3);
return setup.AISLES[dept].name.toLowerCase();
},
'getAisleName' : function(aisle) {
var dept = aisle.substr(0,3);
return setup.AISLES[dept].AISLES[aisle].name.toLowerCase();
},
'char_select_menu' : function() {
var select_screen = '';
select_screen += "<<click 'Cindy (aspiring actress)'>>";
select_screen += "<<run setup.ENGINE.select_char('Cindy Phoenix'); >>";
select_screen += "<<goto $GAMEDATA.PC.PASSAGES.start >>";
select_screen += "<</click>>";
return select_screen;
},
'select_char' : function(char_name) {
$GAMEDATA.PC = setup.CHARS[char_name];
setup.ENGINE.do_status_update();
if(!$GAMEDATA.PC.STATE) {
$GAMEDATA.PC.STATE ={
'saveVersion' : this.gameVersion,
'feedbackQueue' : [],
'Date' : new Date(),
'lastPassage' : null,
'lastExercise' : null,
'lastActivity' : null,
'lastAction' : null,
'lastItem' : null,
};
}
},
'show_menu' : function(menu) {
$('#menu').html('');
$('#menu').wiki(Story.get(menu).processText());
$('#menu').show();
},
'hide_menu' : function() {
$('#menu').html('');
$('#menu').hide();
},
'karmic_link' : function(stat, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var kLink = '';
var cost = 0;
var type = '';
var label = stat;
var amt = 1;
var hint = '';
switch(stat) {
case 'STR':
case 'END':
case 'SPD':
case 'PHY':
case 'INS':
case 'WSD':
cost = Math.round(((CHAR.STATS[stat]+1)*(CHAR.STATS[stat]/2))*10);
type = 'STATS';
break;
case 'cup':
stat = 'bust';
case 'bust':
cost = Math.round(setup.ENGINE.xp_curve(
/* ( lv, +mod1, *rate1, **exp, *rate2, +mod2) */
CHAR.METRICS[stat], 1+3.69, 3.54, 2.032, 3.54, -1900
));
type = 'METRICS';
break;
case 'height':
stat = 'ht';
case 'ht':
cost = Math.round(setup.ENGINE.xp_curve(
/* ( lv, +mod1, *rate1, **exp, *rate2, +mod2) */
CHAR.METRICS[stat], -12, 1/24, 10, 1/24, 16
));
type = 'METRICS';
hint = ("Metric"==settings.units ? '(2.54 cm)' : '');
break;
case 'weight':
stat = 'wt';
case 'wt':
cost = Math.round(setup.ENGINE.xp_curve(
/* ( lv, +mod1, *rate1, **exp, *rate2, +mod2) */
CHAR.METRICS[stat], 0, 1/42, 3, 6, 30
));
type = 'METRICS';
amt = 5;
hint = ("Metric"==settings.units ? '(2.27 kg)' : '');
break;
/* not a karmically linkable stat */
default:
return label;
}
/* not enough karma to link stat */
if(cost>CHAR.MATRIX.karma) {
return "<span title='"+ cost +" karma'>" + label + "</span>";
}
kLink += "<span title='"+ cost +" karma'><<link '"+ label +"'>>";
kLink += "<<set _cost = "+ cost +" >>";
kLink += "<<set _stat = '"+ stat +"'>>";
kLink += "<<set _label = '"+ label +"'>>";
kLink += "<<set _type = '"+ type +"'>>";
kLink += "<<set _amt = "+ amt +" >>";
kLink += "<<set _hint = '"+ hint +"'>>";
kLink += "<<run setup.ENGINE.show_menu('SPEND KARMA');>>";
kLink += "<</link>></span>";
return kLink;
},
'char_metric' : function(metric, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var value = '';
switch(metric) {
case 'height':
metric = 'ht';
case 'ht':
value = ( "Metric"==settings.units
? this.in2cm(CHAR.METRICS[metric]).toFixed(1) +' cm'
: this.in2ft(CHAR.METRICS[metric])
);
break;
case 'weight':
metric = 'wt';
case 'wt':
if(!setup.FLAGS.DISPLAY.base_metrics) {
value = ( "Metric"==settings.units
? this.lbs2kg(setup.ENGINE.scale(CHAR.METRICS[metric], 3, CHAR)).toFixed(1) +' kg'
: setup.ENGINE.scale(CHAR.METRICS[metric], 3, CHAR).toFixed(1) +' #'
);
} else {
value = ( "Metric"==settings.units
? this.lbs2kg(CHAR.METRICS[metric]).toFixed(1) +' kg'
: CHAR.METRICS[metric].toFixed(1) +' #'
);
}
break;
case 'bust':
value = ( "Metric"==settings.units
? this.in2cm(CHAR.METRICS['chest']).toFixed(1) +' cm'
: CHAR.METRICS['chest'].toFixed(1) +'"'
) +" "+ this.calc_bust(CHAR.METRICS['cup']);
break;
/* simple measures */
case 'bicep' :
case 'quads' :
case 'chest' :
case 'waist' :
case 'hips' :
value = ( "Metric"==settings.units
? this.in2cm(CHAR.METRICS[metric]).toFixed(1) +' cm'
: CHAR.METRICS[metric].toFixed(1) +'"'
);
break;
case 'bodyfat' :
value = CHAR.METRICS[metric].toFixed(1) +'%';
break;
case 'BMI' :
value = CHAR.METRICS[metric].toFixed(1);
break;
/* no change */
case 'cup' :
value = this.calc_bust(CHAR.METRICS[metric]);
break;
case 'age' :
value = CHAR.METRICS[metric];
break;
default:
value = null;
break;
}
return value;
},
'in2ft' : function(i) {
var inches = i % 12;
var feet = (i-inches)/12;
return feet +'''+ inches +'"';
},
'in2cm' : function(inches) { return inches*2.54; },
'lbs2kg' : function(pounds) { return pounds/2.2; },
'degF2C' : function(deg) { return (deg-32)/1.8; },
'stack' : function(n) { return (n+1)*(n)/2; },
'sqrt' : function(n, mode) {
if(typeof mode==='undefined') { mode='!'; }
var sign=n/Math.abs(n);
var root=Math.sqrt(Math.abs(n));
if(sign==-1) {
switch(mode) {
case 'i^2': case '-': case -1: case 'signed':
return sign*root;
break;
case 'i^4': case '+': case 1: case 'unsigned': case 'abs':
return root;
break;
case 'i-i': case '0': case 0: case 'zero':
return 0;
break;
case 'i': case '!': case false: case 'error': default:
if(settings.debugInfo && console && console.trace) { console.trace(); }
throw "it ain't yer imagination, you tried to root a negative!";
break;
}
} else {
return root;
}
},
'xp_curve' : function(lv, mod1, rate1, exp, rate2, mod2) {
return (((((lv+mod1)*rate1)**exp)*rate2)+mod2);
},
'bust_UK' : ['AA','A','B','C','D','DD','E','F','FF','G','GG','H','HH','J','JJ','K','KK','L','LL','M','MM','N','NN','O','OO','P','PP','Q','QQ','R','RR','S','SS','T','TT','U','W','V','VV'],
'calc_bust' : function(bust) {
var uk_cup = '';
switch(true) {
case (bust<0): uk_cup = 'AA'; break;
case (bust>38): uk_cup = 'OMG'; break;
default: uk_cup = this.bust_UK[bust]; break;
}
return uk_cup;
},
'refresh_detail' : function() {
if($GAMEDATA.PC.STATE.detail) {
$('#detail').html('');
$('#detail').wiki(Story.get($GAMEDATA.PC.STATE.detail).processText());
}
},
'before_update' : function(CHAR){},
'after_update' : function(CHAR){},
'maxResource' : function(res, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var maxRes = null;
switch(res) {
case 'tough': maxRes = (CHAR.STATS.STR * CHAR.STATS.END); break;
case 'power': maxRes = (CHAR.STATS.STR * CHAR.STATS.SPD); break;
case 'vigor': maxRes = (CHAR.STATS.STR * CHAR.STATS.PHY); break;
case 'skill': maxRes = (CHAR.STATS.STR * CHAR.STATS.INS); break;
case 'train': maxRes = (CHAR.STATS.STR * CHAR.STATS.WSD); break;
case 'regen': maxRes = (CHAR.STATS.END * CHAR.STATS.SPD); break;
case 'vital': maxRes = (CHAR.STATS.END * CHAR.STATS.PHY); break;
case 'force': maxRes = (CHAR.STATS.END * CHAR.STATS.INS); break;
case 'guard': maxRes = (CHAR.STATS.END * CHAR.STATS.WSD); break;
case 'metab': maxRes = (CHAR.STATS.SPD * CHAR.STATS.PHY); break;
case 'fight': maxRes = (CHAR.STATS.SPD * CHAR.STATS.INS); break;
case 'react': maxRes = (CHAR.STATS.SPD * CHAR.STATS.WSD); break;
case 'focus': maxRes = (CHAR.STATS.PHY * CHAR.STATS.INS); break;
case 'aware': maxRes = (CHAR.STATS.PHY * CHAR.STATS.WSD); break;
case 'psych': maxRes = (CHAR.STATS.INS * CHAR.STATS.WSD); break;
default: break;
}
return maxRes;
},
'getResource' : function(res, CHAR){
CHAR=CHAR||$GAMEDATA.PC;
var style = '';
var digits = 1;
var max = null;
var pre = '';
var post = '';
var rmr = 3500;
switch(res) {
case 'kcal': max = rmr; digits=0; break;
case 'protein': max = rmr/8; digits=2; post='g'; break;
case 'sugar': max = rmr/10; digits=2; post='g'; break;
case 'money': digits=2; pre='$'; break;
case 'petro': max = 14.0; break;
case 'tough':
case 'power':
case 'vigor':
case 'skill':
case 'train':
case 'regen':
case 'vital':
case 'force':
case 'guard':
case 'metab':
case 'fight':
case 'react':
case 'focus':
case 'aware':
case 'psych': max = this.maxResource(res); break;
case 'karma': max = CHAR.STATS.karmic_well; break;
case 'qi': max = CHAR.STATS.max_qi; break;
default: break;
}
if(max) {
switch(true) {
case (CHAR.MATRIX[res]/max >= 1.6 ): style='overcharged'; break;
case (CHAR.MATRIX[res]/max >= 1.1 ): style='overflowing'; break;
case (CHAR.MATRIX[res]/max >= 1.0 ): style='full'; break;
case (CHAR.MATRIX[res]/max >= 0.8 ): style='high'; break;
case (CHAR.MATRIX[res]/max <= 0.1 ): style='critical'; break;
case (CHAR.MATRIX[res]/max <= 0.4 ): style='low'; break;
default: style='normal'; break;
}
}
/* var pct=CHAR.MATRIX[res]/max*30; */
var pct= Math.log(CHAR.MATRIX[res]/max*30)*25;
var val = (CHAR.MATRIX[res]).toFixed(digits);
if(max) {
return "<div class='meter "+ style +"' title='"+ style +"' value='"+ pre + val + post +"'><span class='label'>"+ res +"</span><span class='value'>"+ pre + val + post +"</span><div class='bar' style='width:"+ pct +"%;'></div></div>"
} else {
return "<div class='meter "+ style +"' title='"+ style +"' value='"+ pre + val + post +"'><span class='label'>"+ res +"</span><span class='value'>"+ pre + val + post +"</span><div class='bar'></div></div>"
}
},
'getDate' : function() { return (this.getMonth()+1) +'/'+ $GAMEDATA.PC.STATE.Date.getDate() +'/'+ $GAMEDATA.PC.STATE.Date.getFullYear(); },
'getTime' : function() { return $GAMEDATA.PC.STATE.Date.getHours().toString().padStart(2,'0') +":"+ $GAMEDATA.PC.STATE.Date.getMinutes().toString().padStart(2,'0'); },
'getLongDate' : function() { return this.getDay() +', '+ this.getMonth() +' '+ $GAMEDATA.PC.STATE.Date.getDate() +', '+ $GAMEDATA.PC.STATE.Date.getFullYear(); },
'getMonth' : function() { return ['January','February','March','April','May','June','July','August','September','October','November','December'][$GAMEDATA.PC.STATE.Date.getMonth()]; },
'getDay' : function() { return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][$GAMEDATA.PC.STATE.Date.getDay()]; },
'addSeconds' : function(s) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + s*1000); },
'addMinutes' : function(n) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + n*60*1000); },
'addHours' : function(h) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + h*60*60*1000); },
'addDays' : function(d) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + d*24*60*60*1000); }, /* non-calendar, 24 hour days - no daylight savings */
'addWeeks' : function(w) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + w* 7*24*60*60*1000); },
'addMonths' : function(m) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + m* 30*24*60*60*1000); }, /* non-calendar, 30 day months - no 30.5/28/31 adjust */
'addYears' : function(y) { $GAMEDATA.PC.STATE.Date=new Date($GAMEDATA.PC.STATE.Date.getTime() + y*365*24*60*60*1000); }, /* non-calendar, 365 day years - no leap year */
'setTime' : function(h, n, s) { n=n||0; s=s||0; $GAMEDATA.PC.STATE.Date.setHours(h, n, s); },
'getFeedback' : function() {
var feedback = '';
if(($GAMEDATA.PC.STATE)&&($GAMEDATA.PC.STATE.feedbackQueue)) {
feedback = $GAMEDATA.PC.STATE.feedbackQueue.shift();
}
return feedback;
},
'giveFeedback' : function(msg) {
if(($GAMEDATA.PC.STATE)&&($GAMEDATA.PC.STATE.feedbackQueue)) {
$GAMEDATA.PC.STATE.feedbackQueue.push(msg);
}
},
'scale' : function(base, dimensions, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
return base * ((CHAR.METRICS.scale)**dimensions);
},
'val' : function(metric, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
/* first try char_metric() */
var val = setup.ENGINE.char_metric(metric, CHAR);
if(!val) {
/* next check TRAITS */
val = "<span class='blank'>[insert '"+ metric +"' metric here...]</span>";
}
return val;
},
'desc' : function(trait, CHAR) {
var desc = '';
if(setup.DESC[trait]) {
desc = setup.DESC[trait](CHAR);
} else {
desc = "<span class='blank'>[insert '"+ trait +"' description here...]</span>";
}
return desc;
},
'calcBodyMass' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
return (CHAR.METRICS.adj_wt+setup.ENGINE.sqrt(CHAR.MATRIX.metab, '+'))/2;
},
'adjustWeight' : function(hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
this.debugClear();
var bodymass = setup.ENGINE.calcBodyMass();
var unbalanced = true;
var loops = 0;
/* ADJUST WEIGHT - rebalance, lose, then gain */
while((CHAR.METRICS.adj_wt>(CHAR.METRICS.ht/2))&&( unbalanced )&&( loops<(bodymass*hours/10) )) {
unbalanced = false; loops++;
/* convert sugar to/from protein */
if(( (Math.abs(CHAR.MATRIX.protein)+Math.abs(CHAR.MATRIX.sugar))>CHAR.METRICS.wt*5 )&&( (CHAR.MATRIX.protein*2)<CHAR.MATRIX.sugar )) {
CHAR.MATRIX.sugar -= (CHAR.METRICS.adj_wt * 0.9);
CHAR.MATRIX.protein += (CHAR.METRICS.adj_wt * 0.8);
this.debugLog(loops + ': protein*2<sugar; protein+sugar>weight*5; converted '+ (CHAR.METRICS.adj_wt * 0.9) +'g sugar to '+(CHAR.METRICS.adj_wt * 0.8)+'g protein');
unbalanced = true;
} else if(( (Math.abs(CHAR.MATRIX.protein)+Math.abs(CHAR.MATRIX.sugar))>CHAR.METRICS.wt*5 )&&( CHAR.MATRIX.protein>(CHAR.MATRIX.sugar*2) )) {
CHAR.MATRIX.protein -= (CHAR.METRICS.adj_wt * 0.8);
CHAR.MATRIX.sugar += (CHAR.METRICS.adj_wt * 0.9);
this.debugLog(loops + ': protein>sugar*2; protein+sugar>weight*5; converted '+ (CHAR.METRICS.adj_wt * 0.8) +'g protein to '+(CHAR.METRICS.adj_wt * 0.9)+'g sugar');
unbalanced = true;
}
/* convert sugar to/from kCal/ATP */
if(( (Math.abs(CHAR.MATRIX.kcal)+Math.abs(CHAR.MATRIX.sugar))>CHAR.METRICS.wt*30 )&&( (CHAR.MATRIX.kcal<-100)&&(CHAR.MATRIX.sugar>0) )) {
CHAR.MATRIX.kcal += (CHAR.METRICS.adj_wt * 12.0);
CHAR.MATRIX.sugar -= (CHAR.METRICS.adj_wt * 3.0);
this.debugLog(loops + ': sugar>0; kcal<-100; converted '+ (CHAR.METRICS.adj_wt * 3.0) +'g sugar to '+(CHAR.METRICS.adj_wt * 12.0)+' kCal');
unbalanced = true;
} else if(( (Math.abs(CHAR.MATRIX.kcal)+Math.abs(CHAR.MATRIX.sugar))>CHAR.METRICS.wt*30 )&&( (CHAR.MATRIX.kcal>5000)&&(CHAR.MATRIX.sugar<200) )) {
CHAR.MATRIX.kcal -= (CHAR.METRICS.adj_wt * 12.0);
CHAR.MATRIX.sugar += (CHAR.METRICS.adj_wt * 3.0);
this.debugLog(loops + ': kcal>5000; sugar<200; converted '+ (CHAR.METRICS.adj_wt * 12.0) +'kCal to '+(CHAR.METRICS.adj_wt * 3.0)+'g sugar');
unbalanced = true;
}
/* convert protein to/from kCal/ATP */
if(( (Math.abs(CHAR.MATRIX.kcal)+Math.abs(CHAR.MATRIX.protein))>CHAR.METRICS.wt*10 )&&( (CHAR.MATRIX.kcal<-100) && (CHAR.MATRIX.protein>0) )) {
CHAR.MATRIX.kcal += (CHAR.METRICS.adj_wt * 4.5);
CHAR.MATRIX.protein -= (CHAR.METRICS.adj_wt * 1.0);
this.debugLog(loops + ': protein>0; kcal<-100; converted '+ (CHAR.METRICS.adj_wt * 1.0) +'g protein to '+(CHAR.METRICS.adj_wt * 4.5)+' kCal');
unbalanced = true;
} else if(( (Math.abs(CHAR.MATRIX.kcal)+Math.abs(CHAR.MATRIX.protein))>CHAR.METRICS.wt*10 )&&( (CHAR.MATRIX.kcal>5000)&&(CHAR.MATRIX.protein<100) )) {
CHAR.MATRIX.kcal -= (CHAR.METRICS.adj_wt * 4.5);
CHAR.MATRIX.protein += (CHAR.METRICS.adj_wt * 1.0);
this.debugLog(loops + ': kcal>5000; protein<100; converted '+ (CHAR.METRICS.adj_wt * 4.5) +'kCal to '+(CHAR.METRICS.adj_wt * 1.0)+'g protein');
unbalanced = true;
}
/* lose/gain weight */
if( (CHAR.MATRIX.kcal<-4000) || (CHAR.MATRIX.sugar<-500) || (CHAR.MATRIX.protein<-350) || ((CHAR.MATRIX.sugar<-200)&&(CHAR.MATRIX.kcal<-750)) || ((CHAR.MATRIX.sugar<100)&&(CHAR.MATRIX.kcal<-3000)) ) {
this.debugLog(loops + ': lost a pound -- wt: '+ CHAR.METRICS.wt +'; kCal: '+ CHAR.MATRIX.kcal +'; protein: '+ CHAR.MATRIX.protein +'g; sugar: '+ CHAR.MATRIX.sugar +'g;');
CHAR.METRICS.wt -= 1;
CHAR.MATRIX.sugar += 650;
CHAR.MATRIX.kcal += 3250;
CHAR.MATRIX.protein += 345;
unbalanced = true;
} else if( (CHAR.MATRIX.kcal>9500) || (CHAR.MATRIX.sugar>2000) || (CHAR.MATRIX.protein>1500) || ((CHAR.MATRIX.sugar>600)&&(CHAR.MATRIX.kcal>2500)) || ((CHAR.MATRIX.sugar>300)&&(CHAR.MATRIX.kcal>6000)) ) {
this.debugLog(loops + ': gained a pound -- wt: '+ CHAR.METRICS.wt +'; kCal: '+ CHAR.MATRIX.kcal +'; protein: '+ CHAR.MATRIX.protein +'g; sugar: '+ CHAR.MATRIX.sugar +'g;');
CHAR.METRICS.wt += 1;
CHAR.MATRIX.sugar -= 750;
CHAR.MATRIX.kcal -= 3750;
CHAR.MATRIX.protein -= 410;
unbalanced = true;
}
/* repeat until no rebalances trigger */
}
},
'canDo' : function(activity, hours, level, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var ACT_MATRIX = setup.ACTIONS[activity].MATRIX;
hours=hours||setup.ACTIONS[activity].hours;
level=level||1.0;
var effort = hours*level;
var can = true;
switch(activity) {
case 'rest':
can = true; /* you can ALWAYS rest, no matter what condition you are in... */
break;
default:
Object.keys(ACT_MATRIX).forEach(function(resource) {
if(typeof CHAR.MATRIX[resource] === 'undefined') { CHAR.MATRIX[resource]=0; }
if(ACT_MATRIX[resource]<0) {
switch(resource) {
/* ignore these: */ case 'kcal': case 'protein': case 'sugar': break;
default:
if(CHAR.MATRIX[resource] < (-ACT_MATRIX[resource] *effort)) {
can = false;
}
break;
}
}
});
break;
}
return can;
},
'maxHours' : function(activity, level, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var ACT_MATRIX = setup.ACTIONS[activity].MATRIX;
level=level||1.0;
var hrs = Number.MAX_VALUE;
Object.keys(ACT_MATRIX).forEach(function(resource) {
if(typeof CHAR.MATRIX[resource] === 'undefined') { CHAR.MATRIX[resource]=0; }
if(ACT_MATRIX[resource]<0) {
switch(resource) {
/* ignore these: */ case 'kcal': case 'protein': case 'sugar': break;
default:
hrs = Math.min( hrs, ((CHAR.MATRIX[resource]/(-ACT_MATRIX[resource])) / level) );
break;
}
}
});
return hrs;
},
'workoutTable' : function(activity, HOURS, LEVELS, CHAR) {
LEVELS=LEVELS||{'light':0.5,'medium':1.0,'heavy':2.0};
HOURS=HOURS||{'auto':0,'quick':5/60,'short':20/60,'moderate':60/60,'long':180/60,'max':0};
CHAR=CHAR||$GAMEDATA.PC;
var hrs = 0.0; var twine_link = ''; var max_hours = 0.0;
var link_table = "<table class='workout'><tr><th></th>";
Object.keys(HOURS).forEach(function(h){
link_table += '<th>'+ h +'</th>';
});
link_table += '</tr>';
Object.keys(LEVELS).forEach(function(lv){
link_table += '<tr><th>'+ lv + '</th>';
max_hours = setup.ENGINE.maxHours(activity, LEVELS[lv], CHAR);
Object.keys(HOURS).forEach(function(h){
switch(h) {
case 'auto': hrs = CHAR.STATS.workout_hrs; break;
case 'max': hrs = max_hours; break;
default: hrs = HOURS[h]; break;
}
twine_link = ((hrs>max_hours) ? '<hr/>' : "<<link '"+ (hrs*60).toFixed(1) + ' min' + "'>>"
+"<<set _hrs = "+ hrs +">><<set _lv = "+ LEVELS[lv] +">>"
+"<<replace '#passages'>><<include '"+ State.passage +"'>><</replace>>"
+"<</link>>");
link_table += '<td>'+ twine_link +'</td>';
});
link_table += "</tr>\n";
});
link_table += '</table>';
return link_table;
},
'doMATRIX' : function(MATRIX, units, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
if(typeof units==='undefined' || isNaN(units)) units=1;
/* alert(JSON.stringify(MATRIX)); */
var old_val = null;
Object.keys(MATRIX).forEach(function(resource) {
if(typeof CHAR.MATRIX[resource] === 'undefined') { CHAR.MATRIX[resource]=0; }
old_val = CHAR.MATRIX[resource];
switch(true){
case ('petro'==resource):
case ('money'==resource):
case ('kcal'==resource):
case ('protein'==resource):
case ('sugar'==resource):
case ('karma'==resource):
case ('qi'==resource):
CHAR.MATRIX[resource] += (MATRIX[resource] * units);
/* no bonus for cost-entries, only non-fuel gain entries */
break;
default:
CHAR.MATRIX[resource] += ((MATRIX[resource]+(MATRIX['qi'] ? MATRIX['qi'] : 0)/15) * units);
if(MATRIX[resource]>0) {
CHAR.MATRIX[resource] *= (1+(Math.random()*setup.ENGINE.sqrt(MATRIX[resource] * units, '0')/100));
}
break;
}
if(settings.debugInfo && console && console.assert) { console.assert(!isNaN(CHAR.MATRIX[resource]), {'msg':'doMATRIX() created a NaN value!', 'resource':resource, 'from':old_val}); }
});
/* make sure we have not exceeded max, and apply any status changes */
setup.ENGINE.do_status_update();
return true;
},
'doWorkout' : function(activity, hours, level, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
level=level||1.0;
hours=hours||Math.min(setup.ACTIONS[activity].hours,this.maxHours(activity, level, CHAR));
var act = Object.assign({}, setup.ACTIONS[activity].MATRIX);
var bodymass = setup.ENGINE.calcBodyMass();
var effort = hours*level;
/* PASSIVE REGEN 1/2 and fast-bleedoff, high activity */
setup.ENGINE.energyBleedOff(hours*1.5);
setup.ENGINE.recoverPassive(hours/2, CHAR);
CHAR.MATRIX.kcal -= (bodymass*hours*0.65);
/* CALLED WITH UNITS, NOT HOURS, BUT SINCE THE MATRIX IS NORMALIZED TO HOURS, THIS IS FINE */
act.kcal*= bodymass; act.protein*= bodymass; act.sugar*= bodymass;
this.doMATRIX(act, effort);
/* WORKOUT UNIQUE CODE: STR(END) END(SPD) SPD(PHY) PHY(INS) WSD(INS) STAT INCREASE FOR EFFORT */
CHAR.STATS.STR += ( -( (act.tough||0) + (act.power||0) + (act.vigor||0) + (act.skill||0) + (act.train||0) )*effort /(1000*CHAR.STATS.STR));
CHAR.STATS.END += ( -( (act.tough||0) + (act.regen||0) + (act.vital||0) + (act.force||0) + (act.guard||0) )*effort /(1000*CHAR.STATS.END));
CHAR.STATS.SPD += ( -( (act.power||0) + (act.regen||0) + (act.metab||0) + (act.fight||0) + (act.react||0) )*effort /(1000*CHAR.STATS.SPD));
CHAR.STATS.PHY += ( -( (act.vigor||0) + (act.vital||0) + (act.metab||0) + (act.focus||0) + (act.aware||0) )*effort /(1000*CHAR.STATS.PHY));
CHAR.STATS.INS += ( -( (act.skill||0) + (act.force||0) + (act.fight||0) + (act.focus||0) + (act.psych||0) )*effort /(1000*CHAR.STATS.INS));
CHAR.STATS.WSD += ( -( (act.train||0) + (act.guard||0) + (act.react||0) + (act.aware||0) + (act.psych||0) )*effort /(1000*CHAR.STATS.WSD));
/* ACTION EVENT CALLBACK */
setup.ACTIONS[activity].onAction(hours);
$GAMEDATA.PC.STATE.lastExercise = activity;
$GAMEDATA.PC.STATE.lastActivity = activity;
$GAMEDATA.PC.STATE.lastAction = 'workout';
/* Adjust the clock */
setup.ENGINE.addHours(hours);
return true;
},
'doExplore' : function(activity, hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
hours=hours||setup.ACTIONS[activity].hours;
var act = Object.assign({}, setup.ACTIONS[activity].MATRIX);
var bodymass = setup.ENGINE.calcBodyMass();
/* PASSIVE REGEN and bleedoff, moderate activity */
setup.ENGINE.energyBleedOff(hours);
setup.ENGINE.recoverPassive(hours, CHAR);
CHAR.MATRIX.kcal -= (bodymass*hours*0.45);
/* CALLED WITH UNITS, NOT HOURS, BUT SINCE THE MATRIX IS NORMALIZED TO HOURS, THIS IS FINE */
act.kcal*= bodymass; act.protein*= bodymass; act.sugar*= bodymass;
this.doMATRIX(act, hours);
/* ACTION EVENT CALLBACK */
setup.ACTIONS[activity].onAction(hours);
$GAMEDATA.PC.STATE.lastActivity = activity;
$GAMEDATA.PC.STATE.lastAction = 'explore';
/* Adjust the clock */
setup.ENGINE.addHours(hours);
return true;
},
'doRest' : function(activity, hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
hours=hours||setup.ACTIONS[activity].hours;
var bodymass = setup.ENGINE.calcBodyMass();
/* PROCESS REST MATRIX */
var act = Object.assign({}, setup.ACTIONS[activity].MATRIX);
act.kcal*= bodymass; act.protein*= bodymass; act.sugar*= bodymass;
this.doMATRIX(act, hours);
/* ACTIVE REGEN and slow-bleedoff */
setup.ENGINE.energyBleedOff(hours/2);
setup.ENGINE.recoverActive(hours, CHAR);
CHAR.MATRIX.kcal -= (bodymass*hours*0.35);
/* adjust weight */
setup.ENGINE.adjustWeight(hours, CHAR);
/* ACTION EVENT CALLBACK */
setup.ACTIONS[activity].onAction(hours);
$GAMEDATA.PC.STATE.lastActivity = activity;
$GAMEDATA.PC.STATE.lastAction = 'rest';
/* Adjust the clock */
setup.ENGINE.passTime(hours, CHAR);
/* Update status again, as weight may have changed */
setup.ENGINE.do_status_update();
return true;
},
'recoverActive' : function(hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
/* ACTIVE REGEN */
CHAR.MATRIX.tough += (CHAR.STATS.STR + CHAR.STATS.END)/2 * hours *1.0;
CHAR.MATRIX.power += (CHAR.STATS.STR + CHAR.STATS.SPD)/2 * hours *1.0;
CHAR.MATRIX.vigor += (CHAR.STATS.STR + CHAR.STATS.PHY)/2 * hours *2.0;
CHAR.MATRIX.skill += (CHAR.STATS.STR + CHAR.STATS.INS)/2 * hours *2.0;
CHAR.MATRIX.train += (CHAR.STATS.STR + CHAR.STATS.WSD)/2 * hours *2.0;
CHAR.MATRIX.regen += (CHAR.STATS.END + CHAR.STATS.SPD)/2 * hours *6.0;
CHAR.MATRIX.vital += (CHAR.STATS.END + CHAR.STATS.PHY)/2 * hours *2.0;
CHAR.MATRIX.force += (CHAR.STATS.END + CHAR.STATS.INS)/2 * hours *2.0;
CHAR.MATRIX.guard += (CHAR.STATS.END + CHAR.STATS.WSD)/2 * hours *2.0;
CHAR.MATRIX.metab += (CHAR.STATS.SPD + CHAR.STATS.PHY)/2 * hours *0.6;
CHAR.MATRIX.fight += (CHAR.STATS.SPD + CHAR.STATS.INS)/2 * hours *3.0;
CHAR.MATRIX.react += (CHAR.STATS.SPD + CHAR.STATS.WSD)/2 * hours *3.0;
CHAR.MATRIX.focus += (CHAR.STATS.PHY + CHAR.STATS.INS)/2 * hours *3.0;
CHAR.MATRIX.aware += (CHAR.STATS.PHY + CHAR.STATS.WSD)/2 * hours *3.0;
CHAR.MATRIX.psych += (CHAR.STATS.INS + CHAR.STATS.WSD)/2 * hours *3.0;
/* METABOLC BONUS */
CHAR.MATRIX.vital += setup.ENGINE.sqrt(CHAR.MATRIX.regen, '-')*hours; CHAR.MATRIX.tough += setup.ENGINE.sqrt(CHAR.MATRIX.regen/2, '-')*hours;
CHAR.MATRIX.vigor += setup.ENGINE.sqrt(CHAR.MATRIX.metab, '-')*hours; CHAR.MATRIX.power += setup.ENGINE.sqrt(CHAR.MATRIX.metab/2, '-')*hours;
},
'recoverPassive' : function(hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
/* PASSIVE REGEN */
CHAR.MATRIX.tough += (CHAR.STATS.STR + CHAR.STATS.END)/2 * hours;
CHAR.MATRIX.power += (CHAR.STATS.STR + CHAR.STATS.SPD)/2 * hours;
CHAR.MATRIX.vigor += (CHAR.STATS.STR + CHAR.STATS.PHY)/2 * hours;
CHAR.MATRIX.skill += (CHAR.STATS.STR + CHAR.STATS.INS)/2 * hours;
CHAR.MATRIX.train += (CHAR.STATS.STR + CHAR.STATS.WSD)/2 * hours;
CHAR.MATRIX.regen += (CHAR.STATS.END + CHAR.STATS.SPD)/2 * hours;
CHAR.MATRIX.vital += (CHAR.STATS.END + CHAR.STATS.PHY)/2 * hours;
CHAR.MATRIX.force += (CHAR.STATS.END + CHAR.STATS.INS)/2 * hours;
CHAR.MATRIX.guard += (CHAR.STATS.END + CHAR.STATS.WSD)/2 * hours;
CHAR.MATRIX.metab += (CHAR.STATS.SPD + CHAR.STATS.PHY)/2 * hours;
CHAR.MATRIX.fight += (CHAR.STATS.SPD + CHAR.STATS.INS)/2 * hours;
CHAR.MATRIX.react += (CHAR.STATS.SPD + CHAR.STATS.WSD)/2 * hours;
CHAR.MATRIX.focus += (CHAR.STATS.PHY + CHAR.STATS.INS)/2 * hours;
CHAR.MATRIX.aware += (CHAR.STATS.PHY + CHAR.STATS.WSD)/2 * hours;
CHAR.MATRIX.psych += (CHAR.STATS.INS + CHAR.STATS.WSD)/2 * hours;
/* METABOLC BONUS */
CHAR.MATRIX.vital += setup.ENGINE.sqrt(CHAR.MATRIX.regen, '-')*hours; CHAR.MATRIX.tough += setup.ENGINE.sqrt(CHAR.MATRIX.regen/2, '-')*hours;
CHAR.MATRIX.vigor += setup.ENGINE.sqrt(CHAR.MATRIX.metab, '-')*hours; CHAR.MATRIX.power += setup.ENGINE.sqrt(CHAR.MATRIX.metab/2, '-')*hours;
},
'passTime' : function(hours, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var bodymass = setup.ENGINE.calcBodyMass();
/* bleed off excess energy at normal rate 1x/hr */
setup.ENGINE.energyBleedOff(hours);
/* PASSIVE REGEN */
setup.ENGINE.recoverPassive(hours, CHAR);
CHAR.MATRIX.kcal -= (bodymass*hours*0.15);
/* adjust weight */
setup.ENGINE.adjustWeight(hours, CHAR);
/* Adjust the clock */
setup.ENGINE.addHours(hours);
/* Update status again, as weight may have changed */
setup.ENGINE.do_status_update();
},
'sale_price' : function(cost, discount) {
return cost*(1-discount);
},
'check_sale' : function(item_id) {
return 0.0;
},
/* integrates inventory, master items matrix, and action */
'getItem' : function(item_id) {
return setup.ITEMS[item_id];
},
'buyItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
$GAMEDATA.PC.STATE.lastAction = 'buy';
var ITEM = setup.ENGINE.getItem(item_id);
if(parseFloat(CHAR.MATRIX.money.toFixed(2))<ITEM.cost) {
setup.ENGINE.giveFeedback('you don't have enough money to buy this!');
return false;
} else {
CHAR.MATRIX.money-=setup.ENGINE.sale_price(ITEM.cost, setup.ENGINE.check_sale(item_id));
setup.ENGINE.addItem(item_id);
setup.ENGINE.giveFeedback('You bought [' + ITEM.name + '], which leaves you with $ ' + (CHAR.MATRIX.money).toFixed(2));
return true;
}
},
'stealItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
$GAMEDATA.PC.STATE.lastAction = 'steal';
var ITEM = setup.ENGINE.getItem(item_id);
if(CHAR.MATRIX.karma/3<ITEM.cost) {
CHAR.MATRIX.karma-=ITEM.cost;
setup.ENGINE.giveFeedback('you got caught, this is really bad... where will you go if you are banned?');
return false;
} else {
CHAR.MATRIX.karma-=ITEM.cost*3;
setup.ENGINE.addItem(item_id);
setup.ENGINE.giveFeedback('You snagged [' + ITEM.name + '] ...that was almost too easy.');
return true;
}
},
'addItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
/* Items are now directly referenced from the database, so all we need is the charge count */
if(!CHAR.STUFF[item_id]) { CHAR.STUFF[item_id]=0; }
CHAR.STUFF[item_id]+=setup.ENGINE.getItem(item_id).uses;
return true;
},
'delItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
delete CHAR.STUFF[item_id];
return true;
},
'equipItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
/* broken, allows ANY item to be equipped on ANY slot */
var slot_id = setup.ENGINE.getItem(item_id).role;
if(setup.ROLES.EQUIP_ZONES.hasOwnProperty(slot_id)) {
CHAR.EQUIP[slot_id] = item_id;
return true;
} else {
/* item does not match a known slot type */
return false;
}
},
'removeItem' : function(item_id, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var slot_id = setup.ENGINE.getItem(item_id).role;
/* if something is there remove the item, but keep the slot */
if(CHAR.EQUIP[slot_id]) {
CHAR.EQUIP[slot_id]=null;
return true;
} else {
/* item does not match a known slot type or is not equipped */
return true;
}
},
'before_use' : function(item_id, qty, CHAR) {},
'after_use' : function(item_id, qty, CHAR) {},
'useItem' : function(item_id, qty, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
qty=qty||1; /* option to multi-use */
$GAMEDATA.PC.STATE.lastAction = 'use';
$GAMEDATA.PC.STATE.lastItem = item_id;
/* do you even have one, bro? */
if(!CHAR.STUFF[item_id]) { return false; }
if(('all'==qty)||('*'==qty)) { qty=CHAR.STUFF[item_id]; }
setup.ENGINE.before_use(item_id, qty, CHAR);
CHAR.STUFF[item_id]-=qty;
var ITEM = setup.ENGINE.getItem(item_id);
/* if the shoe fits, wear it... */
var iType = setup.ROLES.ALL[ITEM.role].type;
switch(iType) {
/* if not, try eating it */
case 'wearable':
setup.ENGINE.equipItem(item_id);
break;
case 'consumable':
var iMAT = ITEM.MATRIX;
setup.ENGINE.doMATRIX(iMAT, qty);
break;
default:
/* or just put it on the mantle to look at */
}
/* Adjust the clock */
setup.ENGINE.addSeconds(10 * qty / CHAR.STATS.SPD);
/* load item MATRIX */
/* this.doMATRIX(MATRIX, units); */
this.after_use(item_id, qty, CHAR);
/* clean up inventory */
if(CHAR.STUFF[item_id]<1) { this.delItem(item_id); }
return true;
},
/* burns charges mid story, instead of using item through menu */
'depleteItem' : function(item_id, qty, CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
qty=qty||1; /* option to multi-use */
if(!CHAR.STUFF[item_id]) { return false; }
if(('all'==qty)||('*'==qty)) { qty=CHAR.STUFF[item_id]; }
CHAR.STUFF[item_id]-=qty;
return true;
},
'itemCard' : function(item_id) {
var ITEM = setup.ITEMS[item_id];
return "
<div class='item "+ _dept +" "+ _aisle +" glass' tabindex='0'>
<div class='top_bar glass'><h4 class='item_name'>"+ ITEM.name +"</h4></div>
<div class='info glass'>
<div class='icon-frame'>
<div><span class='uses'>"+ ITEM.uses +(_dept=='D05' ? ' servings' : ' uses')+"</span></div>
<div><img class='icon glass' /></div>
<div><span class='cost'>$ " +ITEM.cost.toFixed(2) +"</span></div>
</div>
<div class='detail-pane'>
<div class='details'>
<span>Calories:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.kcal) +"</span>
<span>Protein:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.protein) +"g</span>
<span>Sugar:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.sugar) +"g</span>
<span>tough:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.tough) +"</span>
<span>power:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.power) +"</span>
<span>vigor:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.vigor) +"</span>
<span>skill:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.skill) +"</span>
<span>train:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.train) +"</span>
<span>regen:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.regen) +"</span>
<span>vital:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.vital) +"</span>
<span>force:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.force) +"</span>
<span>guard:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.guard) +"</span>
<span>metab:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.metab) +"</span>
<span>fight:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.fight) +"</span>
<span>react:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.react) +"</span>
<span>focus:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.focus) +"</span>
<span>aware:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.aware) +"</span>
<span>psych:<br/>"+ setup.ENGINE.formatMatrixValue(ITEM.MATRIX.psych) +"</span>
</div>
</div>
</div>
<div class='bottom_bar glass'>
<span class='link'>
<<link '[BUY]' >>
<<run setup.ENGINE.buyItem( '" + item_id + "');>>
<<replace '#feedback'>><<include 'FEEDBACK'>><</replace>>
<</link>>
</span>
<span class='link'>
<<link '[STEAL]'>>
<<run setup.ENGINE.stealItem('" + item_id + "');>>
<<replace '#feedback'>><<include 'FEEDBACK'>><</replace>>
<</link>>
</span>
</div>
</div>
";
},
'formatMatrixValue' : function(value) {
if((typeof value=='undefined')||value==0) {
return '-';
}
return (value>0 ? '+' : '')+ value.toFixed(1);
},
'debugLog' : function(msg) {
if( settings.debugInfo && window.console && window.console.log) { window.console.log(msg); }
},
'debugClear' : function() {
if( settings.debugInfo && window.console && window.console.clear) { window.console.clear(); }
},
}>><<set setup.STATUSES = {
'dead from starvation' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return CHAR.METRICS.wt<CHAR.METRICS.ht; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'emaciated' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'thin' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'starving' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'fat' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'malnourished' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'depressed' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'angry' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'tired' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'overweight' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'bruised' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'fit' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
'' :{ 'test':function(CHAR) { CHAR=CHAR||$GAMEDATA.PC; return false; }, 'onApply':function() {}, 'onRemove':function() {}, 'text':"", },
/* END setup.STATUSES */ }>><<set setup.ACTIONS = {
/* EXERCISE ACTIONS - note: cost/reward matrix is normalized to 1.0 hour intervals, which may vary from default activity length */
'walk' :{ 'hours': 1.50, 'MATRIX':{'tough':- 5.0, 'power':- 4.0, 'vigor':- 8.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 3.0, 'vital':- 5.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 4.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 5.0, 'kcal':- 1.5, 'protein':- 0.015, 'sugar':- 0.275 }, 'onAction':function(hours) { hours=hours||1; }, },
'jog' :{ 'hours': 1.00, 'MATRIX':{'tough':- 30.0, 'power':- 16.0, 'vigor':- 40.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 24.0, 'vital':- 30.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 30.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 35.0, 'kcal':- 3.0, 'protein':- 0.040, 'sugar':- 0.550 }, 'onAction':function(hours) { hours=hours||1; }, },
'run' :{ 'hours': 0.50, 'MATRIX':{'tough':- 45.0, 'power':- 34.0, 'vigor':-120.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 38.0, 'vital':- 60.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 60.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 75.0, 'kcal':- 6.0, 'protein':- 0.100, 'sugar':- 1.600 }, 'onAction':function(hours) { hours=hours||1; }, },
'sprint' :{ 'hours': 0.25, 'MATRIX':{'tough':- 60.0, 'power':- 60.0, 'vigor':-180.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 52.0, 'vital':- 90.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 90.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+120.0, 'kcal':- 12.0, 'protein':- 0.200, 'sugar':- 3.800 }, 'onAction':function(hours) { hours=hours||1; }, },
'calisthenics' :{ 'hours': 0.50, 'MATRIX':{'tough':- 50.0, 'power':- 80.0, 'vigor':-120.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 30.0, 'vital':- 40.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 30.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 75.0, 'kcal':- 4.0, 'protein':- 0.120, 'sugar':- 0.900 }, 'onAction':function(hours) { hours=hours||1; }, },
'aerobics' :{ 'hours': 0.50, 'MATRIX':{'tough':- 30.0, 'power':- 21.0, 'vigor':- 90.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 50.0, 'vital':- 90.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 50.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 65.0, 'kcal':- 3.0, 'protein':- 0.060, 'sugar':- 0.850 }, 'onAction':function(hours) { hours=hours||1; }, },
'yoga' :{ 'hours': 0.50, 'MATRIX':{'tough':- 40.0, 'power':- 38.0, 'vigor':- 60.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 60.0, 'vital':- 80.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 45.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 90.0, 'kcal':- 2.0, 'protein':- 0.050, 'sugar':- 0.400 }, 'onAction':function(hours) { hours=hours||1; }, },
'weightlifting' :{ 'hours': 0.50, 'MATRIX':{'tough':- 30.0, 'power':- 40.0, 'vigor':-120.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 20.0, 'vital':- 30.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 40.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 70.0, 'kcal':- 1.4, 'protein':- 0.056, 'sugar':- 0.200 }, 'onAction':function(hours) { hours=hours||1; }, },
'crossfit' :{ 'hours': 0.50, 'MATRIX':{'tough':-120.0, 'power':- 90.0, 'vigor':-340.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 90.0, 'vital':-120.0, 'force':- 1.0, 'guard':- 1.0, 'metab':-120.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+195.0, 'kcal':- 5.8, 'protein':- 0.348, 'sugar':- 2.700 }, 'onAction':function(hours) { hours=hours||1; }, },
'powerlifting' :{ 'hours': 0.25, 'MATRIX':{'tough':- 90.0, 'power':-130.0, 'vigor':-280.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 40.0, 'vital':- 70.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 90.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+145.0, 'kcal':- 3.4, 'protein':- 0.340, 'sugar':- 1.150 }, 'onAction':function(hours) { hours=hours||1; }, },
/* 'XXXX' :{ 'hours': 1.00, 'MATRIX':{'tough':- 1.0, 'power':- 1.0, 'vigor':- 1.0, 'skill':- 1.0, 'train':- 1.0, 'regen':- 1.0, 'vital':- 1.0, 'force':- 1.0, 'guard':- 1.0, 'metab':- 1.0, 'fight':- 1.0, 'react':- 1.0, 'focus':- 1.0, 'aware':- 1.0, 'psych':- 1.0, 'qi':- 1.0, 'karma':+ 1.0, 'kcal':- 1.5, 'protein':- 0.015, 'sugar':- 0.300 }, 'onAction':function(hours) { hours=hours||1; }, }, */
/* EXPLORE ACTIONS */
'drive' :{ 'hours': 0.25, 'MATRIX':{'tough':- 0.2, 'power':- 0.2, 'vigor':- 1.2, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.4, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.2, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':- 1.0, 'kcal':- 2.0, 'protein':- 0.010, 'sugar':- 0.100, 'petro':- 2.0 }, 'onAction':function(hours) { hours=hours||1; }, },
'search' :{ 'hours': 0.25, 'MATRIX':{'tough':- 0.2, 'power':- 0.4, 'vigor':- 1.6, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.2, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':- 6.0, 'kcal':- 2.0, 'protein':- 0.010, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, },
'shop' :{ 'hours': 0.25, 'MATRIX':{'tough':- 0.2, 'power':- 0.4, 'vigor':- 1.6, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.2, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':- 0.1, 'kcal':- 1.5, 'protein':- 0.010, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, },
/* 'XXXX' :{ 'hours': 1.00, 'MATRIX':{'tough':- 1.0, 'power':- 1.0, 'vigor':- 1.0, 'skill':- 0.0, 'train':- 0.0, 'regen':- 1.0, 'vital':- 1.0, 'force':- 0.0, 'guard':- 0.0, 'metab':- 1.0, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':- 0.0, 'kcal':- 1.5, 'protein':- 0.010, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, }, */
/* REST ACTIONS */ /* can she do this right now? */
'sleep' :{ 'hours': 7.00, 'MATRIX':{'tough':- 0.1, 'power':- 0.1, 'vigor':- 0.1, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.1, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':+ 0.1, 'kcal':- 0.3, 'protein':- 0.030, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, },
'rest' :{ 'hours': 0.25, 'MATRIX':{'tough':- 0.1, 'power':- 0.1, 'vigor':- 0.2, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.1, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':+ 0.1, 'kcal':- 0.5, 'protein':- 0.020, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, },
'stretch' :{ 'hours': 0.10, 'MATRIX':{'tough':- 0.1, 'power':- 0.1, 'vigor':- 0.4, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.1, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':+ 0.1, 'kcal':- 2.0, 'protein':- 0.025, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, },
/* 'XXXX' :{ 'hours': 1.00, 'MATRIX':{'tough':- 0.1, 'power':- 0.1, 'vigor':- 0.1, 'skill':- 0.0, 'train':- 0.0, 'regen':- 0.1, 'vital':- 0.1, 'force':- 0.0, 'guard':- 0.0, 'metab':- 0.1, 'fight':- 0.0, 'react':- 0.0, 'focus':- 0.0, 'aware':- 0.0, 'psych':- 0.0, 'qi':- 0.0, 'karma':+ 0.1, 'kcal':- 0.5, 'protein':- 0.005, 'sugar':- 0.100 }, 'onAction':function(hours) { hours=hours||1; }, } */
/* END setup.ACTIONS */ }>><<set setup.CHARS = {
/* CHARACTERS STORED SEPARATELY */
}>>
<<include 'setup.CHARS.Cindy_Phoenix'>>
<<include 'setup.CHARS.Tammi_X'>><<set setup.ROLES = {
'EQUIP_ZONES': {
'backpack' :{ 'desc':"...", },
'belt' :{ 'desc':"...", },
'bra' :{ 'desc':"...", },
'bracelet' :{ 'desc':"...", },
'coat' :{ 'desc':"...", },
'dress' :{ 'desc':"...", },
'earrings' :{ 'desc':"...", },
'glasses' :{ 'desc':"...", },
'gloves' :{ 'desc':"...", },
'hat' :{ 'desc':"...", },
'headband' :{ 'desc':"...", },
'handbag' :{ 'desc':"...", },
'jacket' :{ 'desc':"...", },
'mask' :{ 'desc':"...", },
'necklace' :{ 'desc':"...", },
'onepiece' :{ 'desc':"...", },
'overshirt' :{ 'desc':"...", },
'panties' :{ 'desc':"...", },
'pants' :{ 'desc':"...", },
'ring' :{ 'desc':"...", },
'sash' :{ 'desc':"...", },
'shirt' :{ 'desc':"...", },
'shoes' :{ 'desc':"...", },
'shorts' :{ 'desc':"...", },
'skirt' :{ 'desc':"...", },
'socks' :{ 'desc':"...", },
'undershirt' :{ 'desc':"...", },
'vest' :{ 'desc':"...", },
},
'ALL':{
'backpack' :{ 'type':"wearable" , 'subtype':"bag" , 'tags':[ ], 'desc':"...", },
'bedding' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'belt' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'book' :{ 'type':"media" , 'subtype':"readable" , 'tags':[ ], 'desc':"...", },
'booze' :{ 'type':"consumable" , 'subtype':"drink" , 'tags':[ 'buzz', 'depressant', 'toxin', ], 'desc':"...", },
'bra' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'bracelet' :{ 'type':"wearable" , 'subtype':"jewelry" , 'tags':[ ], 'desc':"...", },
'cabinet' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'canned food' :{ 'type':"consumable" , 'subtype':"food" , 'tags':[ 'canned', ], 'desc':"...", },
'CD' :{ 'type':"media" , 'subtype':"audio" , 'tags':[ 'CD', ], 'desc':"...", },
'chair' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'chemical' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'coat' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'computer' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'desk' :{ 'type':"furniture" , 'subtype':"work surface", 'tags':[ 'surface', ], 'desc':"...", },
'dress' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'drink' :{ 'type':"consumable" , 'subtype':"drink" , 'tags':[ ], 'desc':"...", },
'DVD' :{ 'type':"media" , 'subtype':"video" , 'tags':[ 'DVD', ], 'desc':"...", },
'earrings' :{ 'type':"wearable" , 'subtype':"jewelry" , 'tags':[ ], 'desc':"...", },
'engine oil' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'fastener' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'flooring' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'food' :{ 'type':"consumable" , 'subtype':"food" , 'tags':[ ], 'desc':"...", },
'frozen food' :{ 'type':"consumable" , 'subtype':"food" , 'tags':[ ], 'desc':"...", },
'game' :{ 'type':"media" , 'subtype':"playable" , 'tags':[ ], 'desc':"...", },
'glasses' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'gloves' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'hairstyle' :{ 'type':"styling" , 'subtype':"hair" , 'tags':[ ], 'desc':"...", },
'handbag' :{ 'type':"wearable" , 'subtype':"bag" , 'tags':[ ], 'desc':"...", },
'hard food' :{ 'type':"consumable" , 'subtype':"food" , 'tags':[ 'dehydrated', ], 'desc':"...", },
'hat' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'headband' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'hygene' :{ 'type':"hygene" , 'subtype':"general" , 'tags':[ ], 'desc':"...", },
'jacket' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'magazine' :{ 'type':"media" , 'subtype':"readable" , 'tags':[ ], 'desc':"...", },
'makeup' :{ 'type':"styling" , 'subtype':"face" , 'tags':[ ], 'desc':"...", },
'mask' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'nailpolish' :{ 'type':"styling" , 'subtype':"nails" , 'tags':[ ], 'desc':"...", },
'necklace' :{ 'type':"wearable" , 'subtype':"jewelry" , 'tags':[ ], 'desc':"...", },
'onepiece' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'overshirt' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'panties' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'pants' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'part' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'phone' :{ 'type':"mobile" , 'subtype':"gadget" , 'tags':[ 'phone', ], 'desc':"...", },
'plant' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'plumbing' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'powder' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'raw meat' :{ 'type':"consumable" , 'subtype':"food" , 'tags':[ 'raw', 'meat', ], 'desc':"...", },
'ring' :{ 'type':"wearable" , 'subtype':"jewelry" , 'tags':[ ], 'desc':"...", },
'sash' :{ 'type':"wearable" , 'subtype':"jewelry" , 'tags':[ ], 'desc':"...", },
'seed' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'shelf' :{ 'type':"furniture" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'shirt' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'shoes' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'shorts' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'skirt' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'smartphone' :{ 'type':"mobile" , 'subtype':"gadget" , 'tags':[ 'phone', 'apps', ], 'desc':"...", },
'socks' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'software' :{ 'type':"" , 'subtype':"" , 'tags':[ ], 'desc':"...", },
'stand' :{ 'type':"furniture" , 'subtype':"" , 'tags':[ 'surface', ], 'desc':"...", },
'table' :{ 'type':"furniture" , 'subtype':"" , 'tags':[ 'surface', ], 'desc':"...", },
'tool' :{ 'type':"tool" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'towel' :{ 'type':"wearable" , 'subtype':"gadget" , 'tags':[ ], 'desc':"...", },
'undershirt' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
'vest' :{ 'type':"wearable" , 'subtype':"clothing" , 'tags':[ ], 'desc':"...", },
}
/* END setup.ROLES */ }>><<set setup.AISLES={
'D01':{
'name':"APPAREL",
'desc':"...",
'AISLES':{
'D01_A01':{ 'name':"ACCESSORIES" , 'desc':"...", },
'D01_A02':{ 'name':"ATHLETIC WEAR" , 'desc':"...", },
'D01_A03':{ 'name':"BACKPACKS" , 'desc':"...", },
'D01_A04':{ 'name':"COATS" , 'desc':"...", },
'D01_A05':{ 'name':"DRESSES" , 'desc':"...", },
'D01_A06':{ 'name':"HANDBAGS" , 'desc':"...", },
'D01_A07':{ 'name':"HEADWEAR" , 'desc':"...", },
'D01_A08':{ 'name':"JEWELRY" , 'desc':"...", },
'D01_A09':{ 'name':"PANTS" , 'desc':"...", },
'D01_A10':{ 'name':"SHIRTS" , 'desc':"...", },
'D01_A11':{ 'name':"SHOES" , 'desc':"...", },
'D01_A12':{ 'name':"SWIMWEAR" , 'desc':"...", },
'D01_A13':{ 'name':"UNDERWEAR" , 'desc':"...", },
},
}, /* END APPAREL */
'D02':{
'name':"AUTOMOTIVE",
'desc':"...",
'AISLES':{
'D02_A01':{ 'name':"ACCESSORIES" , 'desc':"...", },
'D02_A02':{ 'name':"FLUIDS" , 'desc':"...", },
'D02_A03':{ 'name':"PARTS" , 'desc':"...", },
'D02_A04':{ 'name':"TOOLS" , 'desc':"...", },
},
}, /* END AUTOMOTIVE */
'D03':{
'name':"ELECTRONICS",
'desc':"...",
'AISLES':{
'D03_A01':{ 'name':"APPLIANCES" , 'desc':"...", },
'D03_A02':{ 'name':"BOOKS" , 'desc':"...", },
'D03_A03':{ 'name':"CELL PHONES" , 'desc':"...", },
'D03_A04':{ 'name':"COMPUTER ACCESSORIES" , 'desc':"...", },
'D03_A05':{ 'name':"COMPUTERS" , 'desc':"...", },
'D03_A06':{ 'name':"MAGAZINES" , 'desc':"...", },
'D03_A07':{ 'name':"MOVIES" , 'desc':"...", },
'D03_A08':{ 'name':"MUSIC" , 'desc':"...", },
'D03_A09':{ 'name':"SOFTWARE" , 'desc':"...", },
'D03_A10':{ 'name':"VIDEO GAMES" , 'desc':"...", },
},
}, /* END ELECTRONICS */
'D04':{
'name':"FURNITURE",
'desc':"...",
'AISLES':{
'D04_A01':{ 'name':"CARPETS" , 'desc':"...", },
'D04_A02':{ 'name':"CHAIRS" , 'desc':"...", },
'D04_A03':{ 'name':"DESKS" , 'desc':"...", },
'D04_A04':{ 'name':"SHELVES" , 'desc':"...", },
'D04_A05':{ 'name':"TABLES" , 'desc':"...", },
},
}, /* END FURNITURE */
'D05':{
'name':"GROCERY",
'desc':"...",
'AISLES':{
'D05_A01':{ 'name':"ALCOHOL" , 'desc':"...", },
'D05_A02':{ 'name':"BAKED GOODS" , 'desc':"...", },
'D05_A03':{ 'name':"BAKING" , 'desc':"...", },
'D05_A04':{ 'name':"BEVERAGES" , 'desc':"...", },
'D05_A05':{ 'name':"CANDY" , 'desc':"...", },
'D05_A06':{ 'name':"CANNED GOODS" , 'desc':"...", },
'D05_A07':{ 'name':"CEREAL" , 'desc':"...", },
'D05_A08':{ 'name':"DAIRY" , 'desc':"...", },
'D05_A09':{ 'name':"DELI" , 'desc':"...", },
'D05_A10':{ 'name':"FROZEN" , 'desc':"...", },
'D05_A11':{ 'name':"GRAINS & PASTA" , 'desc':"...", },
'D05_A12':{ 'name':"MEATS" , 'desc':"...", },
'D05_A13':{ 'name':"PRODUCE" , 'desc':"...", },
'D05_A14':{ 'name':"SNACKS" , 'desc':"...", },
},
}, /* END GROCERY */
'D06':{
'name':"GARDEN",
'desc':"...",
'AISLES':{
'D06_A01':{ 'name':"MASONRY" , 'desc':"...", },
'D06_A02':{ 'name':"PATIO FURNITURE" , 'desc':"...", },
'D06_A03':{ 'name':"POTS" , 'desc':"...", },
'D06_A04':{ 'name':"PLANTS" , 'desc':"...", },
'D06_A05':{ 'name':"SEEDS" , 'desc':"...", },
'D06_A06':{ 'name':"SOIL" , 'desc':"...", },
},
}, /* END GARDEN */
'D07':{
'name':"HARDWARE",
'desc':"...",
'AISLES':{
'D07_A01':{ 'name':"BITS & BOLTS" , 'desc':"...", },
'D07_A02':{ 'name':"ELECTRICAL" , 'desc':"...", },
'D07_A03':{ 'name':"FIXTURES" , 'desc':"...", },
'D07_A04':{ 'name':"HVAC" , 'desc':"...", },
'D07_A05':{ 'name':"PLUMBING" , 'desc':"...", },
'D07_A06':{ 'name':"POOL" , 'desc':"...", },
'D07_A07':{ 'name':"TOOLS" , 'desc':"...", },
},
}, /* END HARDWARE */
'D08':{
'name':"HOUSEHOLD",
'desc':"...",
'AISLES':{
'D08_A01':{ 'name':"APPLIANCES" , 'desc':"...", },
'D08_A02':{ 'name':"BEDDING" , 'desc':"...", },
'D08_A03':{ 'name':"BOARDGAMES" , 'desc':"...", },
'D08_A04':{ 'name':"CLEANERS" , 'desc':"...", },
'D08_A05':{ 'name':"COOKWARE" , 'desc':"...", },
'D08_A06':{ 'name':"CRAFTS" , 'desc':"...", },
'D08_A07':{ 'name':"DISHES" , 'desc':"...", },
'D08_A08':{ 'name':"FLOOR CARE" , 'desc':"...", },
'D08_A09':{ 'name':"LINENS" , 'desc':"...", },
'D08_A10':{ 'name':"PAPER GOODS" , 'desc':"...", },
'D08_A11':{ 'name':"STORAGE" , 'desc':"...", },
'D08_A12':{ 'name':"TOYS" , 'desc':"...", },
'D08_A13':{ 'name':"WINDOWS" , 'desc':"...", },
},
}, /* END HOUSEHOLD */
'D09':{
'name':"HYGENE",
'desc':"...",
'AISLES':{
'D09_A01':{ 'name':"GENERAL" , 'desc':"...", },
'D09_A02':{ 'name':"HAIR CARE" , 'desc':"...", },
'D09_A03':{ 'name':"MAKEUP" , 'desc':"...", },
'D09_A04':{ 'name':"NAILS" , 'desc':"...", },
'D09_A05':{ 'name':"ORAL CARE" , 'desc':"...", },
'D09_A06':{ 'name':"PERSONAL CARE" , 'desc':"...", },
'D09_A07':{ 'name':"SKIN CARE" , 'desc':"...", },
},
}, /* END HYGENE */
'D10':{
'name':"OFFICE",
'desc':"...",
'AISLES':{
'D10_A01':{ 'name':"BINDINGS" , 'desc':"...", },
'D10_A02':{ 'name':"BRIEFCASES" , 'desc':"...", },
'D10_A03':{ 'name':"FILE CABINETS" , 'desc':"...", },
'D10_A04':{ 'name':"LUGGAGE" , 'desc':"...", },
'D10_A05':{ 'name':"NOTEBOOKS" , 'desc':"...", },
'D10_A06':{ 'name':"PAPER" , 'desc':"...", },
'D10_A07':{ 'name':"TOOLS" , 'desc':"...", },
'D10_A08':{ 'name':"WRITING" , 'desc':"...", },
},
}, /* END PHARMACY */
'D11':{
'name':"PHARMACY",
'desc':"...",
'AISLES':{
'D11_A01':{ 'name':"COUNTER" , 'desc':"...", },
'D11_A02':{ 'name':"FIRST AID" , 'desc':"...", },
'D11_A03':{ 'name':"GADGETS" , 'desc':"...", },
'D11_A04':{ 'name':"HEAD & FLU" , 'desc':"...", },
'D11_A05':{ 'name':"SUPPLEMENTS" , 'desc':"...", },
},
}, /* END PHARMACY */
'D12':{
'name':"SEASONAL",
'desc':"...",
'AISLES':{
'D12_A01':{ 'name':"VALENTINES" , 'desc':"...", },
'D12_A02':{ 'name':"ST PADDYS/EASTER" , 'desc':"...", },
'D12_A03':{ 'name':"SUMMER/JULY 4th" , 'desc':"...", },
'D12_A04':{ 'name':"BACK TO SCHOOL" , 'desc':"...", },
'D12_A05':{ 'name':"HALLOWEEN" , 'desc':"...", },
'D12_A06':{ 'name':"THANKSGIVING" , 'desc':"...", },
'D12_A07':{ 'name':"BLACK FRIDAY" , 'desc':"...", },
'D12_A08':{ 'name':"XMAS/NEW YEAR" , 'desc':"...", },
},
}, /* END SEASONAL & PROMOTIONAL */
'D13':{
'name':"SPORTING GOODS",
'desc':"...",
'AISLES':{
'D13_A01':{ 'name':"BIKING" , 'desc':"...", },
'D13_A02':{ 'name':"CAMPING" , 'desc':"...", },
'D13_A03':{ 'name':"EXERCISE MACHINES" , 'desc':"...", },
'D13_A04':{ 'name':"FISHING" , 'desc':"...", },
'D13_A05':{ 'name':"GADGETS" , 'desc':"...", },
'D13_A06':{ 'name':"HUNTING" , 'desc':"...", },
'D13_A07':{ 'name':"KEYS" , 'desc':"...", },
'D13_A08':{ 'name':"SPORTS EQUIPMENT" , 'desc':"...", },
'D13_A09':{ 'name':"WEIGHTS" , 'desc':"...", },
},
}, /* END SPORTING GOODS */
/* END setup.AISLES */ }>><<set setup.CHARS['Cindy Phoenix'] = {
'NAMES': {
'first' : "Cindy",
'birth' : "Cindy Williams",
'stage' : "Cindy Campbell",
'online' : "Cindy Phoenix",
},
'TRAITS':{
/* 'race' : "human", */
/* 'skin_type' : "", */
/* 'skin_color' : "", */
/* 'skin_condition' : "", */
/* 'hair_length' : "", */
/* 'hair_color' : "", */
/* 'hair_style' : "", */
/* 'hair_condition' : "", */
/* 'eye_color' : "", */
/* 'eye_condition' : "", */
/* 'face' : "", */
},
'PASSAGES':{
'start' : "START CINDY",
'home' : "LIVING IN CAR",
},
'STATS':{
/* PRIMARY STATS - used to calc maxes for secondary stats */
'STR' : 5.0,
'END' : 5.0,
'SPD' : 5.0,
'PHY' : 5.0,
'level' : 5.0,
'workout_hrs': 0.1,
'karmic_well': 12,
},
'MATRIX':{
/* SECONDARY STATS - current values (renewable resources) */
'tough' : 9.0, /* STRxEND - defense, resist injury */
'power' : 9.0, /* STRxSPD - offense, lift */
'vigor' : 9.0, /* STRxPHY - stamina, safe workload */
'regen' : 9.0, /* ENDxSPD - healing factor */
'vital' : 9.0, /* ENDxPHY - health */
'metab' : 9.0, /* SPDxPHY - energy/stamina recovery */
/* RESOURCES - (non-stat/non-renewable) */
'karma' : 1.0, /* ? unit */
'kcal' : 1100, /* food calories consumed, total */
'protein' : 20.0, /* grams consumed, nutrition */
'sugar' : 80.0, /* grams consumed, empty calories */
'money' : 2.89, /* */
'petro' : 10.0, /* gallons, remaining */
},
'METRICS':{
'age' : 27.0, /* years */
'base_ht' : 63.0, /* height, inches */
'ht' : 63.0, /* height, inches */
'wt' : 98.0, /* weight, pounds */
'adj_wt' : 98.0, /* adjusted weight, pounds */
'bicep' : 6.0, /* inches; max-curl = power*bicep/30; reps - max/3 */
'quads' : 13.0, /* inches; max-squat = power*quad/15; reps - max/3 */
'chest' : 26.0, /* */
'bust' : 2, /* variation from wt/35#, used to calculate cup size */
'cup' : "a", /* */
'waist' : 19.0, /* */
'hips' : 27.0, /* */
'BMI' : 'not-set', /* */
'bodyfat' : 'not-set', /* */
},
'STATUS':{
'thin':"",
'depressed':"",
'tired':"",
},
'STUFF':{
/* lost everything but the clothes on her back! (and whatever is in the trunk of her car) */
/* ID:uses */
'D01_A01_I02': 30, /* hair-tyes */
'D01_A09_I02': 60, /* jeans */
'D01_A10_I01': 30, /* blouse */
'D01_A13_I02': 50, /* plain white bra */
'D01_A13_I03': 50, /* plain white panties */
'D01_A13_I01': 13, /* ankle socks */
'D05_A05_I01': 1, /* chocolate bar */
'D08_A09_I03': 30, /* washcloth */
},
'EQUIP':{
/* SLOT:ID */
'bra' :"D01_A13_I02",
'panties' :"D01_A13_I03",
'pants' :"D01_A09_I02",
'overshirt' :"D01_A10_I01",
'socks' :"D01_A13_I01",
},
'PROPERTY':{
'car':{},
},
'STATE':{
'saveVersion' : 0.2,
'feedbackQueue' : [],
'Date' : new Date(),
'lastPassage' : null,
'lastExercise' : null,
'lastActivity' : null,
'lastAction' : null,
'lastItem' : null,
},
/* END setup.CHARS['Cindy Phoenix'] */ }>><<set setup.PASSAGES={
'GO FOR A WALK' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('walking');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 60; },
'bill_RANDOM' : function() { return 20; },
'wallet_RANDOM' : function() { return 4; },
'cart_RANDOM' : function() { return ($GAMEDATA.PC.PASSAGES.home=='LIVING IN CAR' ? 10 : 0); },
'car_RANDOM' : function() { return 10; },
},
},
'GO FOR A JOG' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('jogging');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 70; },
'bill_RANDOM' : function() { return 20; },
'wallet_RANDOM' : function() { return 3; },
'cart_RANDOM' : function() { return ($GAMEDATA.PC.PASSAGES.home=='LIVING IN CAR' ? 10 : 0); },
'car_RANDOM' : function() { return 10; },
},
},
'GO FOR A RUN' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('running');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 80; },
'bill_RANDOM' : function() { return 20; },
'wallet_RANDOM' : function() { return 2; },
'cart_RANDOM' : function() { return ($GAMEDATA.PC.PASSAGES.home=='LIVING IN CAR' ? 10 : 0); },
'car_RANDOM' : function() { return 10; },
},
},
'DO AEROBICS' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('aerobicising to the beat','working out');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'DO CALISTHENICS' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('doing your calisthenics routine');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'DO YOGA' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('doing yoga', 'stretching');
return null;
},
'exit' : function() {
return "<<include 'POST WORKOUT'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'PUSH YOURSELF' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('pushing yourself to the limit','trying to kill yourself');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CONTINUE->GO HOME]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT APPAREL' :{
'setup' : function() {
var dept = either('apparel',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'clothing');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT AUTOMOTIVE' :{
'setup' : function() {
var dept = either('automotive',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'auto parts');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT ELECTRONICS' :{
'setup' : function() {
var dept = either('electronics',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'gadgets and gizmos');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT FURNITURE' :{
'setup' : function() {
var dept = either('furniture',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT GARDEN' :{
'setup' : function() {
var dept = either('garden center',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT GROCERY' :{
'setup' : function() {
var dept = either('grocery',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT HARDWARE' :{
'setup' : function() {
var dept = either('hardware',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT HOUSEHOLD' :{
'setup' : function() {
var dept = either('household',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'furnishings');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT HYGENE' :{
'setup' : function() {
var dept = either('hygiene',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT OFFICE' :{
'setup' : function() {
var dept = either('office',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'office supplies');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT PHARMACY' :{
'setup' : function() {
var dept = either('pharmacy',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT SEASONAL' :{
'setup' : function() {
var dept = either('seasonal',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'));
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'CHECKOUT SPORTING GOODS' :{
'setup' : function() {
var dept = either('sporting goods',( _aisle ? setup.ENGINE.getAisleName(_aisle) : 'stuff'),'sports');
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing','checking out '+dept,'checking out the '+dept+' department');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[CHECK OUT ANOTHER DEPARTMENT->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'ENTER BATHROOM' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('in the bathroom');
return null;
},
'exit' : function() {
return "
<p></p>
<p>[[LEAVE->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'FILLOUT APPLICATION' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('filling out an application');
return null;
},
'exit' : function() {
return "
<p></p>
<p></p>
<p>[[RETURN->SHOP S-MART]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
/* REMOVED MENU PASSAGES FROM EVENT/ENCOUNTER SYSTEM */
/* 'EQUIP', */
/* 'FOOD', */
/* 'STUFF', */
/* 'SPEND KARMA', */
/* 'SELF', */
'GO HOME' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('home','heading home');
return null;
},
'exit' : function() {
return "
<<set _home=$GAMEDATA.PC.PASSAGES.home>>
<<include 'STATS'>><<include 'RESOURCES'>><<include _home>>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'LIVING ON STREET' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('on the street');
return null;
},
'exit' : function() {
return "";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'LIVING IN PRISON' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('in your cell','in the yard','in laundry','going to chow','in class','working','working out','in the gym','in the weightroom','waiting in line','talking to your counselor');
return null;
},
'exit' : function() {
return "";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'LIVING IN CAR' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('in your car','sitting there','sitting there listening to the radio','planning your day');
return null;
},
'exit' : function() {
return "";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'LIVING IN MOTEL' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('in your room','watching tv','watching the news','channel surfing');
return null;
},
'exit' : function() {
return "";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'SLEEP IN CAR' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('sleeping','sleeping in your car');
return null;
},
'exit' : function() {
return "<br/><<goto 'GO HOME'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'SLEEP IN BED' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('sleeping','lying in bed, staing at the ceiling');
return null;
},
'exit' : function() {
return "<br/><<goto 'GO HOME'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'REST A BIT' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('resting','recovering from your workout','catching your breath');
return null;
},
'exit' : function() {
return "<br/><<goto 'GO HOME'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'TAKE A NAP' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('napping','snoozing','snoring','resting','recovering from your workout','catching your breath');
return null;
},
'exit' : function() {
return "<br/><<goto 'GO HOME'>>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
'LOOK FOR CHANGE' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('scrounging the parking lot','looking for change');
return null;
},
'exit' : function() {
return "
<<if setup.ENGINE.canDo('search', 30/60)>>
<p><<link 'KEEP LOOKING'>><<goto 'LOOK FOR CHANGE'>><</link>></p>
<</if>>
<p>[[GO INSIDE->SHOP S-MART]]</p>
<p>[[RETURN TO CAR->GO HOME]]</p>
";
},
'ENCOUNTERS':{
'nothing' : function() { return 90; },
'bill_RANDOM' : function() { return 34; },
'wallet_RANDOM' : function() { return 5; },
'cart_RANDOM' : function() { return 25; },
'car_RANDOM' : function() { return 15; },
},
},
'SHOP S-MART' :{
'setup' : function() {
$GAMEDATA.PC.STATE.lastPassage = State.passage;
$GAMEDATA.PC.STATE.passageDesc = either('shopping','browsing');
return null;
},
'exit' : function() {
return "<p></p><p class='narrow'>[[GO HOME]]</p>";
},
'ENCOUNTERS':{
'nothing' : function() { return 10; },
},
},
/* passage:{ ENCOUNTERS:{encounter:weight} } */
}>><<set setup.ENCOUNTERS={
'nothing':{
/* sub-types inline */
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* LOOSE BILLS */
'bill_MASTER':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function(bill, pre, post) {
pre=pre||'<p>'; post=post||'</p>';
setup.ENGINE.do_status_update();
return pre +' '+ "You find "
+ either(
'a 1928',
'a 1933',
'a 1946',
'a 1954',
'a 1967',
'a 1971',
'a 1978',
'a 1983',
'a 1988',
'a 1994',
'a 1997',
'a 2001',
'a 2004',
'a 2009',
'a 2013',
'a 2016',
'a 2018',
'a 2044... wait, what? 2044',
'a',
'an old',
'a clean',
'a fresh',
'a lemon scented',
'a lavender scented',
'a stained',
'a taped',
'a very old',
'a worn',
'a crumpled',
'a soggy',
'a torn',
'a dirty',
'a grimey',
'a sticky',
'a wet',
'a soggy',
'a damp',
'a faded',
'a crisp',
'a new',
'a colored in',
'a written on',
'another',
'what looks like a',
', could it be? Another',
'yet another',
'one more',
'a singed',
'a much needed',
'a desperately needed',
'a lucky',
'a cursed',
'a bloody',
'a yellowed',
'a half-buried',
'a burned'
) +" "+ bill +", "
+ either(
'with a corner missing, ',
'folded',
'wadded',
'crumpled',
'half-buried',
'lying flat',
'poking out',
'dropped',
'jammed',
'stuffed',
'torn',
'still smoking',
'stuck under a rock',
'stuck to a receipt',
'stuck',
'rolled up',
'carefully folded',
'lying',
) +' '+ either(
'under a tire.',
'in a basket.',
'behind the news-bin.',
'on the sidewalk.',
'in a bush.',
'in the weeds.',
'in the grass.',
'in a flower bed.',
'under a tree.',
'under a lamp post.',
'in the propane return.',
'behind a vending machine.',
'in somebody's pocket... I wonder if they noticed.',
'by the aracade.',
'in front of the Blu Box.',
'in a dusty old wallet... don&t ask where you found the wallet.',
'in the rocks.',
'in the wood chips, beneath the stop sign.',
'under a ride.',
'in a plastic bag, blowing across the lot.',
'in a paper sack... smells like cheap burbon.',
'hidden in an old hat.',
'in your pocket. Wow, where did that come from?',
'in your hand... it was there the whole time.',
'scratching your hip... wait, who put it there?',
'lying under the counter, when you stop in to use the restroom.',
'stuck to your foot.',
'under a bench',
'blowing across the parking lot, almost missed it as a gust kicked up.',
'in a tip jar.',
'in a collection jar.',
'near a school ROTC fundraiser.',
'in a blind musician's guitar case.',
'sitting on the floorboard of an unlocked car... good thing you were there to catch this, there's no telling what someone else might have done.',
'in the trash... yuck.'
) +' '+ either(
'',
'Imagine that.',
'You can only imagine where its been.',
'Huh.',
'Must be your lucky day!',
'Only 10,000 more to go...',
'That guy looks familiar.',
'You could swear you recognized that person.',
'Someone made him look like that dude from that board game... with the property...',
'You're rich!.',
'Something doesn't seem quite right.',
'You almost feel bad about it.',
'A thrilling experience!',
'Momma's gonna eat tonight!',
'Its kinda small... maybe you should throw it back?',
'This calls for celebration!',
'Someone drew a mustache.',
'Someone drew in shades... the president never looked so cool.',
'Someone drew boobs on it... actually, they did a good job.',
'Wait, is that a swastika? Where did this money come from?',
'The face is colored in.',
'Why is there gum on this?',
'Wait, was that a cop?',
'Smells like fish.',
'You've got a bad feeling about this.',
'The day's looking up!',
'Its gonna be a great day!',
'Wait, was this in the garbage?',
'You wonder what happened to its owner.'
) +' '+ post;
},
},
'bill_1':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 1.00;
$GAMEDATA.PC.MATRIX.karma -= 0.10;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$1 bill", "$1 bill", "$1 bill", "$1 bill",
"$1 bill", "$1 bill", "$1 bill", "$1 bill",
"dollar", "dollar", "dollar", "dollar",
"dollar bill", "dollar bill",
"one dollar", "one dollar",
"one dollar", "one dollar",
"bill- enough to go out tonight, anywhere that has a dollar menu",
"old Georgie",
"Washington",
"buck", "buck", "buck", "buck",
"dolla",
"one hundred cent bill"
));
},
},
'bill_2':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 2.00;
$GAMEDATA.PC.MATRIX.karma += 100.00;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$2 bill", "$2 bill", "$2 bill",
"two dollar bill", "two dollar bill",
"T.J.",
"Jefferson",
"lucky $2 bill"
));
},
},
'bill_5':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 5.00;
$GAMEDATA.PC.MATRIX.karma -= 0.50;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$5 bill", "$5 bill", "$5 bill", "$5 bill",
"$5 bill", "$5 bill", "$5 bill", "$5 bill",
"fiver",
"five", "five", "five",
"bill- enough to go out tonight, at least for fast food",
"five dollar bill", "five dollar bill",
"Honest Abe",
"Lincoln"
));
},
},
'bill_10':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 10.00;
$GAMEDATA.PC.MATRIX.karma -= 1.00;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$10 bill", "$10 bill", "$10 bill", "$10 bill",
"$10 bill", "$10 bill", "$10 bill", "$10 bill",
"ten", "ten", "ten", "ten",
"bill- enough to go out tonight, to a small cafe",
"ten dollar bill", "ten dollar bill",
"my man, Xander Hami",
"Hamilton",
"... yeah, don't know that guy"
));
},
},
'bill_20':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 20.00;
$GAMEDATA.PC.MATRIX.karma -= 2.00;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$20 bill", "$20 bill", "$20 bill", "$20 bill",
"$20 bill", "$20 bill", "$20 bill", "$20 bill",
"twenty", "twenty",
"bill- enough for half a tank",
"bill- enough to go out tonight, to a restaurant",
"twenty dollar bill", "twenty dollar bill",
"Andy J",
"Jackson"
));
},
},
'bill_50':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 50.00;
$GAMEDATA.PC.MATRIX.karma -= 5.00;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$50 bill", "$50 bill", "$50 bill", "$50 bill",
"$50 bill", "$50 bill", "$50 bill", "$50 bill",
"fifty", "fifty",
"bill- enough to rent a room",
"bill- enough to go out tonight, to a fancy restaurant",
"fifty dollar bill", "fifty dollar bill",
"Ulysses",
"Grant"
));
},
},
'bill_100':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
$GAMEDATA.PC.MATRIX.money += 100.00;
$GAMEDATA.PC.MATRIX.karma -= 10.00;
return setup.ENCOUNTERS.bill_MASTER.afterPassage(either(
"$100 bill", "$100 bill", "$100 bill", "$100 bill",
"$100 bill", "$100 bill", "$100 bill", "$100 bill",
"hundred", "hundred",
"bill- your salvation",
"hundred clams",
"hundred dollar bill", "hundred dollar bill",
"hundred bucks", "hundred bucks",
"C-note",
"portrait of your old friend, Ben",
"Benjamin",
"Franklin"
));
},
},
'bill_MULTI':{
/* run bill_RANDOM 2x ... repeatable */
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
return setup.ENCOUNTERS.bill_RANDOM.afterPassage() + setup.ENCOUNTERS.bill_RANDOM.afterPassage();
},
},
'bill_RANDOM':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'VARIATIONS' : {
'bill_1' : 40,
'bill_2' : 1,
'bill_5' : 25,
'bill_10' : 15,
'bill_20' : 10,
'bill_50' : 4,
'bill_100' : 2,
'bill_MULTI' : 20,
},
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
var sub_encounter = setup.ENGINE.getSubEncounter(setup.ENCOUNTERS.bill_RANDOM.VARIATIONS);
return setup.ENCOUNTERS[sub_encounter].afterPassage();
},
},
/* END LOOSE BILLS */
/* WALLETS */
'wallet_MASTER':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : true,
'CHOICES' :{
'what_do_you_do' : function() {
var choices = '';
choices += setup.ENGINE.enc_moreDetail('CHECK FOR CASH', "check_cash", 'wallet_MASTER');
choices += setup.ENGINE.enc_moreDetail('LOOK FOR ID', "check_id", 'wallet_MASTER');
choices += setup.ENGINE.enc_showChoices({
'KEEP IT' : "keep_wallet",
'TAKE THE CASH' : "keep_cash",
'TURN IT IN' : "turn_in",
},
'wallet_MASTER'
);
return choices;
},
'check_id' : function() {
_checked_id = true;
var out = "<p>It appears to belong to ""+ _license +"", what do you do with it?</p>";
out += setup.ENGINE.enc_moreDetail('TAKE THE '+_cardtype.toUpperCase(), "take_id", 'wallet_MASTER');
return out;
},
'take_id' : function() {
if(_turned_in) {
return "<p>Its too late, you've already turned the wallet in!</p>";
}
_took_id = true;
$GAMEDATA.PC.MATRIX.karma -= 50;
$GAMEDATA.PC.JUNK[_cardtype+'-'+Date.now()] = _license + ''s ' + _cardtype;
var out = "<p>You took "+ _license +"'s "+ _cardtype +".</p>";
return out;
},
'check_cash' : function() {
_checked_cash = true;
var out = "<p>There is $"+ _cash.toFixed(2) +" inside, what do you do?</p>";
return out;
},
'keep_cash' : function() {
_took_cash = true;
$GAMEDATA.PC.MATRIX.karma -= 30+(_cash*3)+( _checked_cash ? 10 : 0 );
$GAMEDATA.PC.MATRIX.money += _cash;
var out = "<p>You take the $"+ _cash.toFixed(2) +" cash and " + either('throw the wallet in the trash.','ditch the wallet.') +"</p>";
return out + setup.PASSAGES[$GAMEDATA.PC.STATE.lastPassage].exit();
},
'keep_wallet' : function() {
$GAMEDATA.PC.MATRIX.karma -= 150+(_cash*3);
$GAMEDATA.PC.MATRIX.money += _cash;
$GAMEDATA.PC.JUNK['wallet-'+Date.now()] = _wallet;
if(!_took_id) { $GAMEDATA.PC.JUNK[_cardtype+'-'+Date.now()] = _license + ''s ' + _cardtype; }
_took_wallet = true;
_took_cash = true;
_took_id = true;
var out = "<p>You keep "+ _license +"'s wallet, it has $"+ _cash.toFixed(2) +" cash and some other junk...</p>";
return out + setup.PASSAGES[$GAMEDATA.PC.STATE.lastPassage].exit();
},
'turn_in' : function() {
/* add karma */
$GAMEDATA.PC.MATRIX.karma += 50+(_cash*3)+( _checked_cash ? -20 : 50 );
_turned_in = true;
var owner = ( _took_id ? "even moreso that the ID is missing! She" : "immediately tries to page "+ _license +" over the intercomm, after a few minutes pass with no response, she" );
var out = "<p>You turn the wallet in... the clerk is surprised to find $"+ _cash.toFixed(2) +" cash still in it and "+ owner +" asks for your phone number, do you give it?</p>";
return out + setup.ENGINE.enc_showChoices({
'GIVE HER YOUR NUMBER' : "give_number",
'DON'T TRUST HER' : "dont_give_number",
},
'wallet_MASTER'
);
},
'give_number' : function() {
/* add karma */
var out = "<p>You tell the clerk your number, you could swear you saw a shy smile as she wrote it down and thanked you.</p>";
return out + setup.PASSAGES[$GAMEDATA.PC.STATE.lastPassage].exit();
},
'dont_give_number' : function() {
/* add karma */
var out = "<p>You decide it might not be the best idea... they might ask questions.</p>";
return out + setup.PASSAGES[$GAMEDATA.PC.STATE.lastPassage].exit();
},
},
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
var doing = setup.ENGINE.describePassage();
var wallet = either(
'black stamped leather',
'crockodile skin',
'leather',
'red leather',
'brown leather',
'black leather',
'blue cloth',
'black cloth',
'red cloth',
'green cloth',
) +' wallet';
State.setVar( '_wallet', wallet );
var cash = setup.ENGINE.findCash(0, 300);
State.setVar( '_cash', cash );
var license = setup.ENGINE.randomID();
State.setVar( '_license', license );
var cardtype = either('ID','License','License','License');
State.setVar( '_cardtype', cardtype );
State.setVar( '_checked_cash', false );
State.setVar( '_checked_id', false );
State.setVar( '_turned_in', false );
State.setVar( '_took_cash', false );
State.setVar( '_took_id', false );
State.setVar( '_took_wallet', false );
return 'While you were out '+ doing +' you found '+
' '+ either(
'a',
'a new',
'a worn',
'an old',
'a nice looking',
) +' '+ wallet +' '+ either(
'under a tire.',
'in a basket.',
'sitting atop the news-bin.',
'on the sidewalk.',
'in a bush.',
'in the weeds.',
'in the grass.',
'in a flower bed.',
'under a tree.',
'under a lamp post.',
'behind the propane return.',
'in front of a vending machine.',
'in somebody's pocket... I wonder if they noticed.',
'under a bench, by the aracade.',
'next to the Blu Box.',
'in the rocks.',
'in the wood chips, beneath the stop sign.',
'behind the pony ride.',
'in a paper sack... along with a bunch of other seemingly stolen items.',
'in your pocket. Wow, where did that come from?',
'in your hand... it was there the whole time.',
'scratching your hip... wait, who put it there?',
'lying under the counter, when you stop in to use the restroom.',
'underfoot.',
'under a bench',
'in a tip jar.',
'in a collection jar.',
'near a school ROTC fundraiser.',
'in a blind musician's guitar case.',
'sitting on the floorboard of an unlocked car... good thing you were there to catch this, there's no telling what someone else might have done.',
'in the trash... egg- why is there a broken egg on this- yuck.'
) +' '+ either(
''
) + '<div>'+ setup.ENCOUNTERS.wallet_MASTER.CHOICES.what_do_you_do() +'</div>';
},
},
'wallet_john_smith':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : true,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
/* prep stuff... */
return setup.ENCOUNTERS.wallet_MASTER.afterPassage();
},
},
'wallet_DYNAMIC':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : true,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
/* prep stuff... */
return setup.ENCOUNTERS.wallet_MASTER.afterPassage();
},
},
'wallet_RANDOM':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : true,
'VARIATIONS' : {
'wallet_john_smith' : 1,
'wallet_DYNAMIC' :10,
},
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() {
var sub_encounter = setup.ENGINE.getSubEncounter(setup.ENCOUNTERS.wallet_RANDOM.VARIATIONS);
return setup.ENCOUNTERS[sub_encounter].afterPassage();
},
},
/* END WALLETS */
/* SHOPPING CARTS */
'cart_MASTER':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_trash':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_money':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_fastfood':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_loose_item':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_1bag':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_3bags':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_bob':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_full':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_purse':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'cart_RANDOM':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'VARIATIONS' : {
'cart_trash' :30,
'cart_money' : 3,
'cart_fastfood' :15,
'cart_loose_item' :20,
'cart_1bag' :10,
'cart_3bags' : 6,
'cart_bob' : 4,
'cart_full' : 1,
'cart_purse' : 2,
},
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END SHOPPING CARTS */
/* xxxx */
'car_MASTER':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_alarm':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_body':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_broken_window':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_child':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_customer_weak':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_dead':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_domestic':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_doubleparked':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_fire':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_firelane':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_flat':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_hit':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_leaking':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_lights':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_not_handicap':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_pet':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_running':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_runover':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_sex':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_sleeping':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_theft':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
'car_RANDOM':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'VARIATIONS' : {
'car_alarm' :10,
'car_body' :10,
'car_broken_window' :10,
'car_child' :10,
'car_customer_weak' :10,
'car_dead' :10,
'car_domestic' :10,
'car_doubleparked' :10,
'car_fire' :10,
'car_firelane' :10,
'car_flat' :10,
'car_hit' :10,
'car_leaking' :10,
'car_lights' :10,
'car_not_handicap' :10,
'car_pet' :10,
'car_running' :10,
'car_runover' :10,
'car_sex' :10,
'car_sleeping' :10,
'car_theft' :10,
},
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* STALKERS */
'stalker':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END STALKERS */
/* xxxx */
'customer':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'employee':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'vagrant':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'drifter':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'grifter':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'crafter':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'vendor':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'drunk':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'cop':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
/* xxxx */
'gymrat':{
'setup' : function() { return ''; },
'replace' : false,
'overrideExit' : false,
'beforePassage' : function() { return ''; },
'replacePassage' : function() { return ''; },
'afterPassage' : function() { return ''; },
},
/* END xxxx */
}>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
NORMAL PASSAGE
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
ADD PASSAGE EXIT TO setup PASSAGES <h2><<print setup.AISLES[_dept].name>></h2>
<h3><<print setup.AISLES[_dept].desc>></h3>
<<for _aisle_id, _data range setup.AISLES[_dept].AISLES>>
<<if (_aisle == _aisle_id)>>
<<include 'LIST ITEMS FOR AISLE'>>
<<else>>
<p class='narrow'><<print "
<<link '" + _data.name + "'>>
<<set _aisle to '" + _aisle_id + "'>>
<<replace '#passages'>><<include '"+ State.passage +"'>><</replace>>
<</link>>
">></p>
<</if>>
<</for>>
Double-click this passage to edit it.Double-click this passage to edit it.<<set setup.CHARS['Tammi X'] = {
'NAMES': {
'first' : "Tammi",
/* gets replaced with creed selection */
'birth' : "Tammi X",
/* gets replaced with husband creed selection */
'married' : "Tammi X",
},
'TRAITS':{
/* 'race' : "human", */
/* 'skin_type' : "", */
/* 'skin_color' : "", */
/* 'skin_condition' : "", */
/* 'hair_length' : "", */
/* 'hair_color' : "", */
/* 'hair_style' : "", */
/* 'hair_condition' : "", */
/* 'eye_color' : "", */
/* 'eye_condition' : "", */
/* 'face' : "", */
},
'PASSAGES':{
'start' : "START TAMMI",
'home' : "LIVING IN MOTEL",
},
'STATS':{
/* PRIMARY STATS - used to calc maxes for secondary stats */
'STR' : 7.00,
'END' : 25.00,
'SPD' : 8.00,
'PHY' : 7.00,
'level' : 10.00,
'workout_hrs': 0.917,
'karmic_well': 40.00,
},
'MATRIX':{
/* SECONDARY STATS/ENERGY - current values (renewable resources) */
'tough' : 1.00, /* STRxEND - defense, resist injury */
'power' : 1.00, /* STRxSPD - offense, lift */
'vigor' : 1.00, /* STRxPHY - stamina, safe workload */
'regen' : 1.00, /* ENDxSPD - healing factor */
'vital' : 1.00, /* ENDxPHY - health */
'metab' : 1.00, /* SPDxPHY - energy/stamina recovery */
/* RESOURCES - (non-stat/non-renewable) */
'karma' : 110.00, /* ? unit */
'kcal' : 2300.00, /* food calories consumed, total */
'protein' : 60.00, /* grams consumed, nutrition */
'sugar' : 180.00, /* grams consumed, empty calories */
'money' : 198.00, /* */
'petro' : 0.000001, /* gallons, remaining */
},
'METRICS':{
'age' : 23.0, /* years */
'base_ht' : 67.0, /* height, inches */
'ht' : 67.0, /* height, inches */
'wt' : 154.0, /* weight, pounds */
'adj_wt' : 154.0, /* adjusted weight, pounds */
'bicep' : 8.0, /* inches; max-curl = power*bicep/30; reps - max/3 */
'quads' : 15.0, /* inches; max-squat = power*quad/15; reps - max/3 */
'chest' : 30.0, /* */
'bust' : 4, /* variation from wt/35#, used to calculate cup size */
'cup' : "D", /* */
'waist' : 28.0, /* */
'hips' : 33.0, /* */
'BMI' : 'not-set', /* */
'bodyfat' : 'not-set', /* */
},
'STATUS':{
'overweight':"",
'depressed':"",
'bruised':"",
'tired':"",
},
'STUFF':{
/* lost everything but the clothes on her back! (and whatever is in the trunk of her car) */
/* ID:uses */
'D01_A09_I02': 60, /* jeans */
'D01_A10_I01': 30, /* blouse */
'D01_A13_I02': 50, /* plain white bra */
'D01_A13_I03': 50, /* plain white panties */
'D01_A13_I01': 13, /* ankle socks */
'D05_A05_I02': 45, /* gummi bears */
},
'EQUIP':{
/* SLOT:ID */
'bra' :"D01_A13_I02",
'panties' :"D01_A13_I03",
'pants' :"D01_A09_I02",
'overshirt' :"D01_A10_I01",
'socks' :"D01_A13_I01",
},
'PROPERTY':{
/* no car */
},
'STATE':{
'saveVersion' : 0.2,
'feedbackQueue' : [],
'Date' : new Date(),
'lastPassage' : null,
'lastExercise' : null,
'lastActivity' : null,
'lastAction' : null,
'lastItem' : null,
},
/* END setup.CHARS['Tammi X'] */ }>><p>Tired of his shit, of getting hit for the thousandth time, you finally leave that asshole...</p>
<p>with no car, you catch a bus to another city to start a new life with little more than $200 in your pocket.</p>
<p>You find a cheap motel and rent a room for the night...</p>
<<run setup.ENGINE.setTime(21,1)>>
<p>You've got a lot to do tomorrow, perhaps you should [[go to bed->SLEEP IN BED]].</p><p class='narrow'><<if setup.ENGINE.canDo('search', 15/60)>>[[GO SHOPPING->SHOP S-MART]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('search', 30/60)>>[[LOOK FOR CHANGE]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('walk', 5/60, 0.5)>>[[GO FOR A WALK]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('jog', 5/60, 0.5)>>[[GO FOR A JOG]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('run', 5/60, 0.5)>>[[GO FOR A RUN]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('calisthenics', 5/60, 0.5)>>[[DO CALISTHENICS]]<</if>></p><p class='narrow'><<if setup.ENGINE.canDo('sleep', 3) >>[[SLEEP FOR 8 HOURS->SLEEP IN BED]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('sleep', 1) >>[[TAKE A 2 HOUR NAP->TAKE A NAP]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('rest', 15/60) >>[[REST FOR 20 MIN->REST A BIT]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('search', 15/60) >>[[GO SHOPPING->SHOP S-MART]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('search', 30/60) >>[[LOOK FOR CHANGE]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('walk', 5/60, 0.5) >>[[GO FOR A WALK]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('jog', 5/60, 0.5) >>[[GO FOR A JOG]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('run', 5/60, 0.5) >>[[GO FOR A RUN]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('aerobics', 5/60, 0.5) >>[[DO AEROBICS]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('calisthenics', 5/60, 0.5) >>[[DO CALISTHENICS]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('yoga', 5/60, 0.5) >>[[DO YOGA]]<</if>></p><p class='narrow'><<if setup.ENGINE.canDo('sleep', 3) >>[[SLEEP FOR 5 HOURS->SLEEP IN CAR]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('sleep', 1) >>[[TAKE A 2 HOUR NAP->TAKE A NAP]]<</if>></p>
<p class='narrow'><<if setup.ENGINE.canDo('rest', 15/60) >>[[REST FOR 20 MIN->REST A BIT]]<</if>></p>
<p></p>
<p class='narrow'><<if setup.ENGINE.canDo('drive', 15/60) >>[[DRIVE SOMEWHERE]]<</if>></p>You have nowhere to go...
[[RETURN->GO HOME]]<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doRest('sleep', 8); >><<set _time = setup.ENGINE.getTime();>>
<<if ("05:30"<_time)&&(_time<"07:30")>>
<<run setup.ENGINE.giveFeedback("You wake up at first light, but the store won't be open for another hour. What do you do?");>>
<</if>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>> <<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('aerobics', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You try to do some basic aerobics, but its not long till you're out of breath.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('aerobics'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>>
<<if (_hrs) && (_lv)>>
<<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doWorkout('yoga', _hrs, _lv); >>
<<replace '#datetime'>><<include 'DATETIME'>><</replace>>
<p>You try to do some basic yoga, but its not long till you're out of breath.</p>
<p></p>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>>
<<else>>
<<print setup.ENGINE.workoutTable('yoga'); >>
<p>[[RETURN->GO HOME]]</p>
<</if>>
Double-click this passage to edit it.<<set setup.DESC={ /* GAME ENGINE -- everything below this point */
'ht' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var ht_desc = '';
switch(true) {
/* 1 inches */ case (CHAR.METRICS.ht < 1): ht_desc = "a bug"; break;
/* 6 inches */ case (CHAR.METRICS.ht < 6): ht_desc = "minuscule"; break;
/* 1 foot */ case (CHAR.METRICS.ht < 12): ht_desc = "tiny"; break;
/* 1 feet, 6 inches */ case (CHAR.METRICS.ht < 18): ht_desc = "little"; break;
/* 2 feet */ case (CHAR.METRICS.ht < 24): ht_desc = "a gnome"; break;
/* 2 feet, 6 inches */ case (CHAR.METRICS.ht < 30): ht_desc = "incredibly short"; break;
/* 3 feet */ case (CHAR.METRICS.ht < 36): ht_desc = "fantastically short"; break;
/* 3 feet, 6 inches */ case (CHAR.METRICS.ht < 42): ht_desc = "spectacularly short"; break;
/* 4 feet */ case (CHAR.METRICS.ht < 48): ht_desc = "exceedingly short"; break;
/* 4 feet, 6 inches */ case (CHAR.METRICS.ht < 54): ht_desc = "very short"; break;
/* 5 feet */ case (CHAR.METRICS.ht < 60): ht_desc = "rather short"; break;
/* 5 feet, 4 inches */ case (CHAR.METRICS.ht < 64): ht_desc = "a bit short"; break;
/* 1 mile */ case (CHAR.METRICS.ht > 63360): ht_desc = "a goddess"; break;
/* 100 feet */ case (CHAR.METRICS.ht > 1200): ht_desc = "a titaness"; break;
/* 75 feet */ case (CHAR.METRICS.ht > 900): ht_desc = "a kaiju"; break;
/* 50 feet */ case (CHAR.METRICS.ht > 600): ht_desc = "ginormous"; break;
/* 35 feet */ case (CHAR.METRICS.ht > 420): ht_desc = "a great giantess"; break;
/* 24 feet */ case (CHAR.METRICS.ht > 288): ht_desc = "a giantess"; break;
/* 13 feet, 4 inches */ case (CHAR.METRICS.ht > 160): ht_desc = "a mini-giantess"; break;
/* 10 feet */ case (CHAR.METRICS.ht > 120): ht_desc = "of Amazonian height"; break;
/* 8 feet, 6 inches */ case (CHAR.METRICS.ht > 102): ht_desc = "monumentally tall"; break;
/* 7 feet, 6 inches */ case (CHAR.METRICS.ht > 90): ht_desc = "spectacularly tall"; break;
/* 7 feet */ case (CHAR.METRICS.ht > 84): ht_desc = "exceedingly tall"; break;
/* 6 feet, 6 inches */ case (CHAR.METRICS.ht > 78): ht_desc = "very tall"; break;
/* 6 feet */ case (CHAR.METRICS.ht > 72): ht_desc = "rather tall"; break;
/* 5 feet, 8 inches */ case (CHAR.METRICS.ht > 68): ht_desc = "a bit tall"; break;
/* 5 feet 4-8 inches */ default: ht_desc = "of average height"; break;
}
return ht_desc;
},
'wt' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var wt_desc = '';
/* account for variable-bodymass and percentage bodyfat */
switch(true) {
case (CHAR.METRICS.adj_wt < 0.1): wt_desc = "a few ounces"; break;
case (CHAR.METRICS.adj_wt < 1.0): wt_desc = "a pint"; break;
case (CHAR.METRICS.adj_wt < 10.0): wt_desc = "impossibly thin"; break;
case (CHAR.METRICS.adj_wt < 30.0): wt_desc = "inhumanly thin"; break;
case (CHAR.METRICS.adj_wt < 50.0): wt_desc = "a walking skeleton"; break;
case (CHAR.METRICS.adj_wt < 70.0): wt_desc = "starving"; break;
case (CHAR.METRICS.adj_wt < 85.0): wt_desc = "tiny"; break;
case (CHAR.METRICS.adj_wt < 100.0): wt_desc = "small"; break;
case (CHAR.METRICS.adj_wt < 115.0): wt_desc = "petite"; break;
case (CHAR.METRICS.adj_wt >2200000000.0): wt_desc = "over a megaton"; break;
case (CHAR.METRICS.adj_wt > 220000000.0): wt_desc = "[100 kt+]"; break;
case (CHAR.METRICS.adj_wt > 22000000.0): wt_desc = "[10 kt+]"; break;
case (CHAR.METRICS.adj_wt > 2200000.0): wt_desc = "over a kiloton"; break;
case (CHAR.METRICS.adj_wt > 1000000.0): wt_desc = "[500+ tons]"; break;
case (CHAR.METRICS.adj_wt > 750000.0): wt_desc = "[375+ tons]"; break;
case (CHAR.METRICS.adj_wt > 500000.0): wt_desc = "[250+ tons]"; break;
case (CHAR.METRICS.adj_wt > 250000.0): wt_desc = "[125+ tons]"; break;
case (CHAR.METRICS.adj_wt > 100000.0): wt_desc = "[50+ tons]"; break;
case (CHAR.METRICS.adj_wt > 80000.0): wt_desc = "[40+ tons]"; break;
case (CHAR.METRICS.adj_wt > 65000.0): wt_desc = "[32+ tons]"; break;
case (CHAR.METRICS.adj_wt > 50000.0): wt_desc = "[25+ tons]"; break;
case (CHAR.METRICS.adj_wt > 40000.0): wt_desc = "[20+ tons]"; break;
case (CHAR.METRICS.adj_wt > 30000.0): wt_desc = "[15+ tons]"; break;
case (CHAR.METRICS.adj_wt > 20000.0): wt_desc = "[10+ tons]"; break;
case (CHAR.METRICS.adj_wt > 15000.0): wt_desc = "[7+ tons]"; break;
case (CHAR.METRICS.adj_wt > 10000.0): wt_desc = "[5+ tons]"; break;
case (CHAR.METRICS.adj_wt > 7500.0): wt_desc = "[7500+]"; break;
case (CHAR.METRICS.adj_wt > 5000.0): wt_desc = "[5000+]"; break;
case (CHAR.METRICS.adj_wt > 3500.0): wt_desc = "[3500+]"; break;
case (CHAR.METRICS.adj_wt > 2000.0): wt_desc = "you weight a ton"; break;
case (CHAR.METRICS.adj_wt > 1500.0): wt_desc = "three quarter ton"; break;
case (CHAR.METRICS.adj_wt > 1000.0): wt_desc = "a half ton"; break;
case (CHAR.METRICS.adj_wt > 850.0): wt_desc = "colossal"; break;
case (CHAR.METRICS.adj_wt > 600.0): wt_desc = "enormous"; break;
case (CHAR.METRICS.adj_wt > 500.0): wt_desc = "a quarter ton"; break;
case (CHAR.METRICS.adj_wt > 400.0): wt_desc = "massive"; break;
case (CHAR.METRICS.adj_wt > 350.0): wt_desc = "huge"; break;
case (CHAR.METRICS.adj_wt > 300.0): wt_desc = "big"; break;
case (CHAR.METRICS.adj_wt > 250.0): wt_desc = "bulky"; break;
case (CHAR.METRICS.adj_wt > 200.0): wt_desc = "large"; break;
case (CHAR.METRICS.adj_wt > 165.0): wt_desc = "of solid build"; break;
default: wt_desc = "average weight"; break;
}
return wt_desc;
},
'height' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
return setup.DESC.ht(CHAR);
},
'weight' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
return setup.DESC.wt(CHAR);
},
/* 'race' : function(CHAR) {}, */
/* 'skin_type' : function(CHAR) {}, */
/* 'skin_color' : function(CHAR) {}, */
/* 'skin_condition' : function(CHAR) {}, */
/* 'hair_length' : function(CHAR) {}, */
/* 'hair_color' : function(CHAR) {}, */
/* 'hair_style' : function(CHAR) {}, */
/* 'hair_condition' : function(CHAR) {}, */
/* 'eye_color' : function(CHAR) {}, */
/* 'eye_condition' : function(CHAR) {}, */
/* 'face' : function(CHAR) {}, */
/* 'arms' : function(CHAR) {}, */
'bicep' : function(CHAR) {
return this.bicep_tone(CHAR) +" "+ this.bicep_size(CHAR);
},
'bicep_tone' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var bicep_desc = '';
switch(true) {
case ($GAMEDATA.PC.METRICS.bodyfat < 5): bicep_desc = 'diamond'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 10): bicep_desc = 'rock-hard'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 15): bicep_desc = 'solid'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 20): bicep_desc = 'firm'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 25): bicep_desc = 'toned'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 30): bicep_desc = 'smooth'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 35): bicep_desc = 'soft'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 40): bicep_desc = 'squishy'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 45): bicep_desc = 'loose'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 50): bicep_desc = 'jiggly'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 60): bicep_desc = 'flabby'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 70): bicep_desc = 'pudgy'; break;
case ($GAMEDATA.PC.METRICS.bodyfat < 80): bicep_desc = 'fat'; break;
default: bicep_desc = 'bloated'; break;
}
return bicep_desc;
},
'bicep_size' : function(CHAR) {
CHAR=CHAR||$GAMEDATA.PC;
var bi_desc = '';
switch(true) {
case (CHAR.METRICS.bicep > 36): bi_desc = "impossibly large"; break;
case (CHAR.METRICS.bicep > 33): bi_desc = "insane"; break;
case (CHAR.METRICS.bicep > 30): bi_desc = "inhuman"; break;
case (CHAR.METRICS.bicep > 27): bi_desc = "colossal"; break;
case (CHAR.METRICS.bicep > 24): bi_desc = "freakish"; break;
case (CHAR.METRICS.bicep > 21): bi_desc = "tremendous"; break;
case (CHAR.METRICS.bicep > 18): bi_desc = "massive"; break;
case (CHAR.METRICS.bicep > 15): bi_desc = "huge"; break;
case (CHAR.METRICS.bicep > 12): bi_desc = "large"; break;
case (CHAR.METRICS.bicep > 9): bi_desc = "modest"; break;
case (CHAR.METRICS.bicep > 6): bi_desc = "small"; break;
default: bi_desc = "puny"; break;
}
return bi_desc;
},
/* 'legs' : function(CHAR) {}, */
/* 'quads' : function(CHAR) {}, */
/* 'calves' : function(CHAR) {}, */
/* 'forearms' : function(CHAR) {}, */
/* 'delts' : function(CHAR) {}, */
/* 'chest' : function(CHAR) {}, */
/* 'breasts' : function(CHAR) {}, */
/* 'back' : function(CHAR) {}, */
/* 'waist' : function(CHAR) {}, */
/* 'abs' : function(CHAR) {}, */
}>><<set setup.FLAGS={
'DISPLAY':{
'base_metrics' : false,
},
}>><<print setup.ENGINE.setupPassage();>><<print setup.ENGINE.beforePassage();>>
<<if setup.ENCOUNTERS[_encounter].replace>><<print setup.ENGINE.replacePassage();>><<else>>
<<run setup.ENGINE.doRest('sleep', 120/60); >>
<<run setup.ENGINE.giveFeedback("You take a short nap to recover your strength.");>>
<</if>>
<<print setup.ENGINE.afterPassage();>>
<<if settings.debugInfo>><p>[encounter: _encounter ]</p><</if>>
<p></p>
<<print setup.ENGINE.exitPassage();>><<set setup.NAMES={
'randomName' : function(gender, allowMI) {
gender=gender||either('male','female');
if(typeof allowMI==='undefined') { allowMI=either(true,false); }
var middle = setup.NAMES.randomMiddle(gender, allowMI);
return setup.NAMES.randomFirst(gender) + (middle ? ' '+middle : '') +' '+ setup.NAMES.randomLast();
},
'randomFirst' : function(gender) {
gender=gender||either('male','female');
if(gender=='male') {
return setup.NAMES.randomBoy();
} else if(gender=='female') {
return setup.NAMES.randomGirl();
}
},
'randomMiddle' : function(gender, allowMI) {
gender=gender||either('male','female');
if(Math.random()<0.42) {
return null;
} else if(allowMI && Math.random()<0.58) {
return setup.NAMES.randomMI();
} else if(gender=='male') {
return setup.NAMES.randomBoy();
} else if(gender=='female') {
return setup.NAMES.randomGirl();
}
},
'randomMI' : function() {
return String.fromCharCode(Math.floor(Math.random() * 26) + 65);
},
'randomBoy' : function() {
return either(
'Aaron',
'Abdul',
'Abe',
'Abel',
'Abraham',
'Abram',
'Adalberto',
'Adam',
'Adan',
'Adolfo',
'Adolph',
'Adrian',
'Agustin',
'Ahmad',
'Ahmed',
'Al',
'Alan',
'Albert',
'Alberto',
'Alden',
'Aldo',
'Alec',
'Alejandro',
'Alex',
'Alexander',
'Alexis',
'Alfonso',
'Alfonzo',
'Alfred',
'Alfredo',
'Ali',
'Allan',
'Allen',
'Alonso',
'Alonzo',
'Alphonse',
'Alphonso',
'Alton',
'Alva',
'Alvaro',
'Alvin',
'Amado',
'Ambrose',
'Amos',
'Anderson',
'Andre',
'Andrea',
'Andreas',
'Andres',
'Andrew',
'Andy',
'Angel',
'Angelo',
'Anibal',
'Anthony',
'Antione',
'Antoine',
'Anton',
'Antone',
'Antonia',
'Antonio',
'Antony',
'Antwan',
'Archie',
'Arden',
'Ariel',
'Arlen',
'Arlie',
'Armand',
'Armando',
'Arnold',
'Arnoldo',
'Arnulfo',
'Aron',
'Arron',
'Art',
'Arthur',
'Arturo',
'Asa',
'Ashley',
'Aubrey',
'August',
'Augustine',
'Augustus',
'Aurelio',
'Austin',
'Avery',
'Barney',
'Barrett',
'Barry',
'Bart',
'Barton',
'Basil',
'Beau',
'Ben',
'Benedict',
'Benito',
'Benjamin',
'Bennett',
'Bennie',
'Benny',
'Benton',
'Bernard',
'Bernardo',
'Bernie',
'Berry',
'Bert',
'Bertram',
'Bill',
'Billie',
'Billy',
'Blaine',
'Blair',
'Blake',
'Bo',
'Bob',
'Bobbie',
'Bobby',
'Booker',
'Boris',
'Boyce',
'Boyd',
'Brad',
'Bradford',
'Bradley',
'Bradly',
'Brady',
'Brain',
'Branden',
'Brandon',
'Brant',
'Brendan',
'Brendon',
'Brent',
'Brenton',
'Bret',
'Brett',
'Brian',
'Brice',
'Britt',
'Brock',
'Broderick',
'Brooks',
'Bruce',
'Bruno',
'Bryan',
'Bryant',
'Bryce',
'Bryon',
'Buck',
'Bud',
'Buddy',
'Buford',
'Burl',
'Burt',
'Burton',
'Buster',
'Byron',
'Caleb',
'Calvin',
'Cameron',
'Carey',
'Carl',
'Carlo',
'Carlos',
'Carlton',
'Carmelo',
'Carmen',
'Carmine',
'Carol',
'Carrol',
'Carroll',
'Carson',
'Carter',
'Cary',
'Casey',
'Cecil',
'Cedric',
'Cedrick',
'Cesar',
'Chad',
'Chadwick',
'Chance',
'Chang',
'Charles',
'Charley',
'Charlie',
'Chas',
'Chase',
'Chauncey',
'Chester',
'Chet',
'Chi',
'Chong',
'Chris',
'Christian',
'Christoper',
'Christopher',
'Chuck',
'Chung',
'Clair',
'Clarence',
'Clark',
'Claud',
'Claude',
'Claudio',
'Clay',
'Clayton',
'Clement',
'Clemente',
'Cleo',
'Cletus',
'Cleveland',
'Cliff',
'Clifford',
'Clifton',
'Clint',
'Clinton',
'Clyde',
'Cody',
'Colby',
'Cole',
'Coleman',
'Colin',
'Collin',
'Colton',
'Columbus',
'Connie',
'Conrad',
'Cordell',
'Corey',
'Cornelius',
'Cornell',
'Cortez',
'Cory',
'Courtney',
'Coy',
'Craig',
'Cristobal',
'Cristopher',
'Cruz',
'Curt',
'Curtis',
'Cyril',
'Cyrus',
'Dale',
'Dallas',
'Dalton',
'Damian',
'Damien',
'Damion',
'Damon',
'Dan',
'Dana',
'Dane',
'Danial',
'Daniel',
'Danilo',
'Dannie',
'Danny',
'Dante',
'Darell',
'Daren',
'Darin',
'Dario',
'Darius',
'Darnell',
'Daron',
'Darrel',
'Darrell',
'Darren',
'Darrick',
'Darrin',
'Darron',
'Darryl',
'Darwin',
'Daryl',
'Dave',
'David',
'Davis',
'Dean',
'Deandre',
'Deangelo',
'Dee',
'Del',
'Delbert',
'Delmar',
'Delmer',
'Demarcus',
'Demetrius',
'Denis',
'Dennis',
'Denny',
'Denver',
'Deon',
'Derek',
'Derick',
'Derrick',
'Deshawn',
'Desmond',
'Devin',
'Devon',
'Dewayne',
'Dewey',
'Dewitt',
'Dexter',
'Dick',
'Diego',
'Dillon',
'Dino',
'Dion',
'Dirk',
'Domenic',
'Domingo',
'Dominic',
'Dominick',
'Dominique',
'Don',
'Donald',
'Dong',
'Donn',
'Donnell',
'Donnie',
'Donny',
'Donovan',
'Donte',
'Dorian',
'Dorsey',
'Doug',
'Douglas',
'Douglass',
'Doyle',
'Drew',
'Duane',
'Dudley',
'Duncan',
'Dustin',
'Dusty',
'Dwain',
'Dwayne',
'Dwight',
'Dylan',
'Earl',
'Earle',
'Earnest',
'Ed',
'Eddie',
'Eddy',
'Edgar',
'Edgardo',
'Edison',
'Edmond',
'Edmund',
'Edmundo',
'Eduardo',
'Edward',
'Edwardo',
'Edwin',
'Efrain',
'Efren',
'Elbert',
'Elden',
'Eldon',
'Eldridge',
'Eli',
'Elias',
'Elijah',
'Eliseo',
'Elisha',
'Elliot',
'Elliott',
'Ellis',
'Ellsworth',
'Elmer',
'Elmo',
'Eloy',
'Elroy',
'Elton',
'Elvin',
'Elvis',
'Elwood',
'Emanuel',
'Emerson',
'Emery',
'Emil',
'Emile',
'Emilio',
'Emmanuel',
'Emmett',
'Emmitt',
'Emory',
'Enoch',
'Enrique',
'Erasmo',
'Eric',
'Erich',
'Erick',
'Erik',
'Erin',
'Ernest',
'Ernesto',
'Ernie',
'Errol',
'Ervin',
'Erwin',
'Esteban',
'Ethan',
'Eugene',
'Eugenio',
'Eusebio',
'Evan',
'Everett',
'Everette',
'Ezekiel',
'Ezequiel',
'Ezra',
'Fabian',
'Faustino',
'Fausto',
'Federico',
'Felipe',
'Felix',
'Felton',
'Ferdinand',
'Fermin',
'Fernando',
'Fidel',
'Filiberto',
'Fletcher',
'Florencio',
'Florentino',
'Floyd',
'Forest',
'Forrest',
'Foster',
'Frances',
'Francesco',
'Francis',
'Francisco',
'Frank',
'Frankie',
'Franklin',
'Franklyn',
'Fred',
'Freddie',
'Freddy',
'Frederic',
'Frederick',
'Fredric',
'Fredrick',
'Freeman',
'Fritz',
'Gabriel',
'Gail',
'Gale',
'Galen',
'Garfield',
'Garland',
'Garret',
'Garrett',
'Garry',
'Garth',
'Gary',
'Gaston',
'Gavin',
'Gayle',
'Gaylord',
'Genaro',
'Gene',
'Geoffrey',
'George',
'Gerald',
'Geraldo',
'Gerard',
'Gerardo',
'German',
'Gerry',
'Gil',
'Gilbert',
'Gilberto',
'Gino',
'Giovanni',
'Giuseppe',
'Glen',
'Glenn',
'Gonzalo',
'Gordon',
'Grady',
'Graham',
'Graig',
'Grant',
'Granville',
'Greg',
'Gregg',
'Gregorio',
'Gregory',
'Grover',
'Guadalupe',
'Guillermo',
'Gus',
'Gustavo',
'Guy',
'Hai',
'Hal',
'Hank',
'Hans',
'Harlan',
'Harland',
'Harley',
'Harold',
'Harris',
'Harrison',
'Harry',
'Harvey',
'Hassan',
'Hayden',
'Haywood',
'Heath',
'Hector',
'Henry',
'Herb',
'Herbert',
'Heriberto',
'Herman',
'Herschel',
'Hershel',
'Hilario',
'Hilton',
'Hipolito',
'Hiram',
'Hobert',
'Hollis',
'Homer',
'Hong',
'Horace',
'Horacio',
'Hosea',
'Houston',
'Howard',
'Hoyt',
'Hubert',
'Huey',
'Hugh',
'Hugo',
'Humberto',
'Hung',
'Hunter',
'Hyman',
'Ian',
'Ignacio',
'Ike',
'Ira',
'Irvin',
'Irving',
'Irwin',
'Isaac',
'Isaiah',
'Isaias',
'Isiah',
'Isidro',
'Ismael',
'Israel',
'Isreal',
'Issac',
'Ivan',
'Ivory',
'Jacinto',
'Jack',
'Jackie',
'Jackson',
'Jacob',
'Jacques',
'Jae',
'Jaime',
'Jake',
'Jamaal',
'Jamal',
'Jamar',
'Jame',
'Jamel',
'James',
'Jamey',
'Jamie',
'Jamison',
'Jan',
'Jared',
'Jarod',
'Jarred',
'Jarrett',
'Jarrod',
'Jarvis',
'Jason',
'Jasper',
'Javier',
'Jay',
'Jayson',
'Jc',
'Jean',
'Jed',
'Jeff',
'Jefferey',
'Jefferson',
'Jeffery',
'Jeffrey',
'Jeffry',
'Jerald',
'Jeramy',
'Jere',
'Jeremiah',
'Jeremy',
'Jermaine',
'Jerold',
'Jerome',
'Jeromy',
'Jerrell',
'Jerrod',
'Jerrold',
'Jerry',
'Jess',
'Jesse',
'Jessie',
'Jesus',
'Jewel',
'Jewell',
'Jim',
'Jimmie',
'Jimmy',
'Joan',
'Joaquin',
'Jody',
'Joe',
'Joel',
'Joesph',
'Joey',
'John',
'Johnathan',
'Johnathon',
'Johnie',
'Johnnie',
'Johnny',
'Johnson',
'Jon',
'Jonah',
'Jonas',
'Jonathan',
'Jonathon',
'Jordan',
'Jordon',
'Jorge',
'Jose',
'Josef',
'Joseph',
'Josh',
'Joshua',
'Josiah',
'Jospeh',
'Josue',
'Juan',
'Jude',
'Judson',
'Jules',
'Julian',
'Julio',
'Julius',
'Junior',
'Justin',
'Kareem',
'Karl',
'Kasey',
'Keenan',
'Keith',
'Kelley',
'Kelly',
'Kelvin',
'Ken',
'Kendall',
'Kendrick',
'Keneth',
'Kenneth',
'Kennith',
'Kenny',
'Kent',
'Kenton',
'Kermit',
'Kerry',
'Keven',
'Kevin',
'Kieth',
'Kim',
'King',
'Kip',
'Kirby',
'Kirk',
'Korey',
'Kory',
'Kraig',
'Kris',
'Kristofer',
'Kristopher',
'Kurt',
'Kurtis',
'Kyle',
'Lacy',
'Lamar',
'Lamont',
'Lance',
'Landon',
'Lane',
'Lanny',
'Larry',
'Lauren',
'Laurence',
'Lavern',
'Laverne',
'Lawerence',
'Lawrence',
'Lazaro',
'Leandro',
'Lee',
'Leif',
'Leigh',
'Leland',
'Lemuel',
'Len',
'Lenard',
'Lenny',
'Leo',
'Leon',
'Leonard',
'Leonardo',
'Leonel',
'Leopoldo',
'Leroy',
'Les',
'Lesley',
'Leslie',
'Lester',
'Levi',
'Lewis',
'Lincoln',
'Lindsay',
'Lindsey',
'Lino',
'Linwood',
'Lionel',
'Lloyd',
'Logan',
'Lon',
'Long',
'Lonnie',
'Lonny',
'Loren',
'Lorenzo',
'Lou',
'Louie',
'Louis',
'Lowell',
'Loyd',
'Lucas',
'Luciano',
'Lucien',
'Lucio',
'Lucius',
'Luigi',
'Luis',
'Luke',
'Lupe',
'Luther',
'Lyle',
'Lyman',
'Lyndon',
'Lynn',
'Lynwood',
'Mac',
'Mack',
'Major',
'Malcolm',
'Malcom',
'Malik',
'Man',
'Manual',
'Manuel',
'Marc',
'Marcel',
'Marcelino',
'Marcellus',
'Marcelo',
'Marco',
'Marcos',
'Marcus',
'Margarito',
'Maria',
'Mariano',
'Mario',
'Marion',
'Mark',
'Markus',
'Marlin',
'Marlon',
'Marquis',
'Marshall',
'Martin',
'Marty',
'Marvin',
'Mary',
'Mason',
'Mathew',
'Matt',
'Matthew',
'Maurice',
'Mauricio',
'Mauro',
'Max',
'Maximo',
'Maxwell',
'Maynard',
'Mckinley',
'Mel',
'Melvin',
'Merle',
'Merlin',
'Merrill',
'Mervin',
'Micah',
'Michael',
'Michal',
'Michale',
'Micheal',
'Michel',
'Mickey',
'Miguel',
'Mike',
'Mikel',
'Milan',
'Miles',
'Milford',
'Millard',
'Milo',
'Milton',
'Minh',
'Miquel',
'Mitch',
'Mitchel',
'Mitchell',
'Modesto',
'Mohamed',
'Mohammad',
'Mohammed',
'Moises',
'Monroe',
'Monte',
'Monty',
'Morgan',
'Morris',
'Morton',
'Mose',
'Moses',
'Moshe',
'Murray',
'Myles',
'Myron',
'Napoleon',
'Nathan',
'Nathanael',
'Nathanial',
'Nathaniel',
'Neal',
'Ned',
'Neil',
'Nelson',
'Nestor',
'Neville',
'Newton',
'Nicholas',
'Nick',
'Nickolas',
'Nicky',
'Nicolas',
'Nigel',
'Noah',
'Noble',
'Noe',
'Noel',
'Nolan',
'Norbert',
'Norberto',
'Norman',
'Normand',
'Norris',
'Numbers',
'Octavio',
'Odell',
'Odis',
'Olen',
'Olin',
'Oliver',
'Ollie',
'Omar',
'Omer',
'Oren',
'Orlando',
'Orval',
'Orville',
'Oscar',
'Osvaldo',
'Oswaldo',
'Otha',
'Otis',
'Otto',
'Owen',
'Pablo',
'Palmer',
'Paris',
'Parker',
'Pasquale',
'Pat',
'Patricia',
'Patrick',
'Paul',
'Pedro',
'Percy',
'Perry',
'Pete',
'Peter',
'Phil',
'Philip',
'Phillip',
'Pierre',
'Porfirio',
'Porter',
'Preston',
'Prince',
'Quentin',
'Quincy',
'Quinn',
'Quintin',
'Quinton',
'Rafael',
'Raleigh',
'Ralph',
'Ramiro',
'Ramon',
'Randal',
'Randall',
'Randell',
'Randolph',
'Randy',
'Raphael',
'Rashad',
'Raul',
'Ray',
'Rayford',
'Raymon',
'Raymond',
'Raymundo',
'Reed',
'Refugio',
'Reggie',
'Reginald',
'Reid',
'Reinaldo',
'Renaldo',
'Renato',
'Rene',
'Reuben',
'Rex',
'Rey',
'Reyes',
'Reynaldo',
'Rhett',
'Ricardo',
'Rich',
'Richard',
'Richie',
'Rick',
'Rickey',
'Rickie',
'Ricky',
'Rico',
'Rigoberto',
'Riley',
'Rob',
'Robbie',
'Robby',
'Robert',
'Roberto',
'Robin',
'Robt',
'Rocco',
'Rocky',
'Rod',
'Roderick',
'Rodger',
'Rodney',
'Rodolfo',
'Rodrick',
'Rodrigo',
'Rogelio',
'Roger',
'Roland',
'Rolando',
'Rolf',
'Rolland',
'Roman',
'Romeo',
'Ron',
'Ronald',
'Ronnie',
'Ronny',
'Roosevelt',
'Rory',
'Rosario',
'Roscoe',
'Rosendo',
'Ross',
'Roy',
'Royal',
'Royce',
'Ruben',
'Rubin',
'Rudolf',
'Rudolph',
'Rudy',
'Rueben',
'Rufus',
'Rupert',
'Russ',
'Russel',
'Russell',
'Rusty',
'Ryan',
'Sal',
'Salvador',
'Salvatore',
'Sam',
'Sammie',
'Sammy',
'Samual',
'Samuel',
'Sandy',
'Sanford',
'Sang',
'Santiago',
'Santo',
'Santos',
'Saul',
'Scot',
'Scott',
'Scottie',
'Scotty',
'Sean',
'Sebastian',
'Sergio',
'Seth',
'Seymour',
'Shad',
'Shane',
'Shannon',
'Shaun',
'Shawn',
'Shayne',
'Shelby',
'Sheldon',
'Shelton',
'Sherman',
'Sherwood',
'Shirley',
'Shon',
'Sid',
'Sidney',
'Silas',
'Simon',
'Sol',
'Solomon',
'Son',
'Sonny',
'Spencer',
'Stacey',
'Stacy',
'Stan',
'Stanford',
'Stanley',
'Stanton',
'Stefan',
'Stephan',
'Stephen',
'Sterling',
'Steve',
'Steven',
'Stevie',
'Stewart',
'Stuart',
'Sung',
'Sydney',
'Sylvester',
'Tad',
'Tanner',
'Taylor',
'Ted',
'Teddy',
'Teodoro',
'Terence',
'Terrance',
'Terrell',
'Terrence',
'Terry',
'Thad',
'Thaddeus',
'Thanh',
'Theo',
'Theodore',
'Theron',
'Thomas',
'Thurman',
'Tim',
'Timmy',
'Timothy',
'Titus',
'Tobias',
'Toby',
'Tod',
'Todd',
'Tom',
'Tomas',
'Tommie',
'Tommy',
'Toney',
'Tony',
'Tory',
'Tracey',
'Tracy',
'Travis',
'Trent',
'Trenton',
'Trevor',
'Trey',
'Trinidad',
'Tristan',
'Troy',
'Truman',
'Tuan',
'Ty',
'Tyler',
'Tyree',
'Tyrell',
'Tyron',
'Tyrone',
'Tyson',
'Ulysses',
'Val',
'Valentin',
'Valentine',
'Van',
'Vance',
'Vaughn',
'Vern',
'Vernon',
'Vicente',
'Victor',
'Vince',
'Vincent',
'Vincenzo',
'Virgil',
'Virgilio',
'Vito',
'Von',
'Wade',
'Waldo',
'Walker',
'Wallace',
'Wally',
'Walter',
'Walton',
'Ward',
'Warner',
'Warren',
'Waylon',
'Wayne',
'Weldon',
'Wendell',
'Werner',
'Wes',
'Wesley',
'Weston',
'Whitney',
'Wilber',
'Wilbert',
'Wilbur',
'Wilburn',
'Wiley',
'Wilford',
'Wilfred',
'Wilfredo',
'Will',
'Willard',
'William',
'Williams',
'Willian',
'Willie',
'Willis',
'Willy',
'Wilmer',
'Wilson',
'Wilton',
'Winford',
'Winfred',
'Winston',
'Woodrow',
'Wyatt',
'Xavier',
'Yong',
'Young',
'Zachariah',
'Zachary',
'Zachery',
'Zack',
'Zackary',
'Zane'
);
},
'randomGirl' : function() {
return either(
'Abbey',
'Abbie',
'Abby',
'Abigail',
'Ada',
'Adah',
'Adaline',
'Adam',
'Addie',
'Adela',
'Adelaida',
'Adelaide',
'Adele',
'Adelia',
'Adelina',
'Adeline',
'Adell',
'Adella',
'Adelle',
'Adena',
'Adina',
'Adria',
'Adrian',
'Adriana',
'Adriane',
'Adrianna',
'Adrianne',
'Adrien',
'Adriene',
'Adrienne',
'Afton',
'Agatha',
'Agnes',
'Agnus',
'Agripina',
'Agueda',
'Agustina',
'Ai',
'Aida',
'Aide',
'Aiko',
'Aileen',
'Ailene',
'Aimee',
'Aisha',
'Aja',
'Akiko',
'Akilah',
'Alaina',
'Alaine',
'Alana',
'Alane',
'Alanna',
'Alayna',
'Alba',
'Albert',
'Alberta',
'Albertha',
'Albertina',
'Albertine',
'Albina',
'Alda',
'Alease',
'Alecia',
'Aleen',
'Aleida',
'Aleisha',
'Alejandra',
'Alejandrina',
'Alena',
'Alene',
'Alesha',
'Aleshia',
'Alesia',
'Alessandra',
'Aleta',
'Aletha',
'Alethea',
'Alethia',
'Alex',
'Alexa',
'Alexander',
'Alexandra',
'Alexandria',
'Alexia',
'Alexis',
'Alfreda',
'Alfredia',
'Ali',
'Alia',
'Alica',
'Alice',
'Alicia',
'Alida',
'Alina',
'Aline',
'Alisa',
'Alise',
'Alisha',
'Alishia',
'Alisia',
'Alison',
'Alissa',
'Alita',
'Alix',
'Aliza',
'Alla',
'Alleen',
'Allegra',
'Allen',
'Allena',
'Allene',
'Allie',
'Alline',
'Allison',
'Allyn',
'Allyson',
'Alma',
'Almeda',
'Almeta',
'Alona',
'Alpha',
'Alta',
'Altagracia',
'Altha',
'Althea',
'Alva',
'Alvera',
'Alverta',
'Alvina',
'Alyce',
'Alycia',
'Alysa',
'Alyse',
'Alysha',
'Alysia',
'Alyson',
'Alyssa',
'Amada',
'Amal',
'Amalia',
'Amanda',
'Amber',
'Amberly',
'Amee',
'Amelia',
'America',
'Ami',
'Amie',
'Amiee',
'Amina',
'Amira',
'Ammie',
'Amparo',
'Amy',
'An',
'Ana',
'Anabel',
'Analisa',
'Anamaria',
'Anastacia',
'Anastasia',
'Andera',
'Andra',
'Andre',
'Andrea',
'Andree',
'Andrew',
'Andria',
'Anette',
'Angel',
'Angela',
'Angele',
'Angelena',
'Angeles',
'Angelia',
'Angelic',
'Angelica',
'Angelika',
'Angelina',
'Angeline',
'Angelique',
'Angelita',
'Angella',
'Angelo',
'Angelyn',
'Angie',
'Angila',
'Angla',
'Angle',
'Anglea',
'Anh',
'Anika',
'Anisa',
'Anisha',
'Anissa',
'Anita',
'Anitra',
'Anja',
'Anjanette',
'Anjelica',
'Ann',
'Anna',
'Annabel',
'Annabell',
'Annabelle',
'Annalee',
'Annalisa',
'Annamae',
'Annamaria',
'Annamarie',
'Anne',
'Anneliese',
'Annelle',
'Annemarie',
'Annett',
'Annetta',
'Annette',
'Annice',
'Annie',
'Annika',
'Annis',
'Annita',
'Annmarie',
'Anthony',
'Antionette',
'Antoinette',
'Antonetta',
'Antonette',
'Antonia',
'Antonietta',
'Antonina',
'Antonio',
'Anya',
'Apolonia',
'April',
'Apryl',
'Ara',
'Araceli',
'Aracelis',
'Aracely',
'Arcelia',
'Ardath',
'Ardelia',
'Ardell',
'Ardella',
'Ardelle',
'Ardis',
'Ardith',
'Aretha',
'Argelia',
'Argentina',
'Ariana',
'Ariane',
'Arianna',
'Arianne',
'Arica',
'Arie',
'Ariel',
'Arielle',
'Arla',
'Arlean',
'Arleen',
'Arlena',
'Arlene',
'Arletha',
'Arletta',
'Arlette',
'Arlinda',
'Arline',
'Arlyne',
'Armanda',
'Armandina',
'Armida',
'Arminda',
'Arnetta',
'Arnette',
'Arnita',
'Arthur',
'Artie',
'Arvilla',
'Asha',
'Ashanti',
'Ashely',
'Ashlea',
'Ashlee',
'Ashleigh',
'Ashley',
'Ashli',
'Ashlie',
'Ashly',
'Ashlyn',
'Ashton',
'Asia',
'Asley',
'Assunta',
'Astrid',
'Asuncion',
'Athena',
'Aubrey',
'Audie',
'Audra',
'Audrea',
'Audrey',
'Audria',
'Audrie',
'Audry',
'Augusta',
'Augustina',
'Augustine',
'Aundrea',
'Aura',
'Aurea',
'Aurelia',
'Aurora',
'Aurore',
'Austin',
'Autumn',
'Ava',
'Avelina',
'Avery',
'Avis',
'Avril',
'Awilda',
'Ayako',
'Ayana',
'Ayanna',
'Ayesha',
'Azalee',
'Azucena',
'Azzie',
'Babara',
'Babette',
'Bailey',
'Bambi',
'Bao',
'Barabara',
'Barb',
'Barbar',
'Barbara',
'Barbera',
'Barbie',
'Barbra',
'Bari',
'Barrie',
'Basilia',
'Bea',
'Beata',
'Beatrice',
'Beatris',
'Beatriz',
'Beaulah',
'Bebe',
'Becki',
'Beckie',
'Becky',
'Bee',
'Belen',
'Belia',
'Belinda',
'Belkis',
'Bell',
'Bella',
'Belle',
'Belva',
'Benita',
'Bennie',
'Berenice',
'Berna',
'Bernadette',
'Bernadine',
'Bernarda',
'Bernardina',
'Bernardine',
'Berneice',
'Bernetta',
'Bernice',
'Bernie',
'Berniece',
'Bernita',
'Berry',
'Berta',
'Bertha',
'Bertie',
'Beryl',
'Bess',
'Bessie',
'Beth',
'Bethanie',
'Bethann',
'Bethany',
'Bethel',
'Betsey',
'Betsy',
'Bette',
'Bettie',
'Bettina',
'Betty',
'Bettyann',
'Bettye',
'Beula',
'Beulah',
'Bev',
'Beverlee',
'Beverley',
'Beverly',
'Bianca',
'Bibi',
'Billi',
'Billie',
'Billy',
'Billye',
'Birdie',
'Birgit',
'Blair',
'Blake',
'Blanca',
'Blanch',
'Blanche',
'Blondell',
'Blossom',
'Blythe',
'Bobbi',
'Bobbie',
'Bobby',
'Bobbye',
'Bobette',
'Bok',
'Bong',
'Bonita',
'Bonnie',
'Bonny',
'Branda',
'Brande',
'Brandee',
'Brandi',
'Brandie',
'Brandon',
'Brandy',
'Breana',
'Breann',
'Breanna',
'Breanne',
'Bree',
'Brenda',
'Brenna',
'Brett',
'Brian',
'Briana',
'Brianna',
'Brianne',
'Bridget',
'Bridgett',
'Bridgette',
'Brigette',
'Brigid',
'Brigida',
'Brigitte',
'Brinda',
'Britany',
'Britney',
'Britni',
'Britt',
'Britta',
'Brittaney',
'Brittani',
'Brittanie',
'Brittany',
'Britteny',
'Brittney',
'Brittni',
'Brittny',
'Bronwyn',
'Brook',
'Brooke',
'Bruna',
'Brunilda',
'Bryanna',
'Brynn',
'Buena',
'Buffy',
'Bula',
'Bulah',
'Bunny',
'Burma',
'Caitlin',
'Caitlyn',
'Calandra',
'Calista',
'Callie',
'Camelia',
'Camellia',
'Cameron',
'Cami',
'Camie',
'Camila',
'Camilla',
'Camille',
'Cammie',
'Cammy',
'Candace',
'Candance',
'Candelaria',
'Candi',
'Candice',
'Candida',
'Candie',
'Candis',
'Candra',
'Candy',
'Candyce',
'Caprice',
'Cara',
'Caren',
'Carey',
'Cari',
'Caridad',
'Carie',
'Carin',
'Carina',
'Carisa',
'Carissa',
'Carita',
'Carl',
'Carla',
'Carlee',
'Carleen',
'Carlena',
'Carlene',
'Carletta',
'Carley',
'Carli',
'Carlie',
'Carline',
'Carlita',
'Carlos',
'Carlota',
'Carlotta',
'Carly',
'Carlyn',
'Carma',
'Carman',
'Carmel',
'Carmela',
'Carmelia',
'Carmelina',
'Carmelita',
'Carmella',
'Carmen',
'Carmina',
'Carmon',
'Carol',
'Carola',
'Carolann',
'Carole',
'Carolee',
'Carolin',
'Carolina',
'Caroline',
'Caroll',
'Carolyn',
'Carolyne',
'Carolynn',
'Caron',
'Caroyln',
'Carri',
'Carrie',
'Carrol',
'Carroll',
'Carry',
'Cary',
'Caryl',
'Carylon',
'Caryn',
'Casandra',
'Casey',
'Casie',
'Casimira',
'Cassandra',
'Cassaundra',
'Cassey',
'Cassi',
'Cassidy',
'Cassie',
'Cassondra',
'Cassy',
'Catalina',
'Catarina',
'Caterina',
'Catharine',
'Catherin',
'Catherina',
'Catherine',
'Cathern',
'Catheryn',
'Cathey',
'Cathi',
'Cathie',
'Cathleen',
'Cathrine',
'Cathryn',
'Cathy',
'Catina',
'Catrice',
'Catrina',
'Cayla',
'Cecelia',
'Cecil',
'Cecila',
'Cecile',
'Cecilia',
'Cecille',
'Cecily',
'Celena',
'Celesta',
'Celeste',
'Celestina',
'Celestine',
'Celia',
'Celina',
'Celinda',
'Celine',
'Celsa',
'Ceola',
'Chae',
'Chan',
'Chana',
'Chanda',
'Chandra',
'Chanel',
'Chanell',
'Chanelle',
'Chang',
'Chantal',
'Chantay',
'Chante',
'Chantel',
'Chantell',
'Chantelle',
'Chara',
'Charis',
'Charise',
'Charissa',
'Charisse',
'Charita',
'Charity',
'Charla',
'Charleen',
'Charlena',
'Charlene',
'Charles',
'Charlesetta',
'Charlette',
'Charlie',
'Charline',
'Charlott',
'Charlotte',
'Charlsie',
'Charlyn',
'Charmain',
'Charmaine',
'Charolette',
'Chasidy',
'Chasity',
'Chassidy',
'Chastity',
'Chau',
'Chaya',
'Chelsea',
'Chelsey',
'Chelsie',
'Cher',
'Chere',
'Cheree',
'Cherelle',
'Cheri',
'Cherie',
'Cherilyn',
'Cherise',
'Cherish',
'Cherly',
'Cherlyn',
'Cherri',
'Cherrie',
'Cherry',
'Cherryl',
'Chery',
'Cheryl',
'Cheryle',
'Cheryll',
'Cheyenne',
'Chi',
'Chia',
'Chieko',
'Chin',
'China',
'Ching',
'Chiquita',
'Chloe',
'Chong',
'Chris',
'Chrissy',
'Christa',
'Christal',
'Christeen',
'Christel',
'Christen',
'Christena',
'Christene',
'Christi',
'Christia',
'Christian',
'Christiana',
'Christiane',
'Christie',
'Christin',
'Christina',
'Christine',
'Christinia',
'Christopher',
'Christy',
'Chrystal',
'Chu',
'Chun',
'Chung',
'Ciara',
'Cicely',
'Ciera',
'Cierra',
'Cinda',
'Cinderella',
'Cindi',
'Cindie',
'Cindy',
'Cinthia',
'Cira',
'Clair',
'Claire',
'Clara',
'Clare',
'Clarence',
'Claretha',
'Claretta',
'Claribel',
'Clarice',
'Clarinda',
'Clarine',
'Claris',
'Clarisa',
'Clarissa',
'Clarita',
'Classie',
'Claude',
'Claudette',
'Claudia',
'Claudie',
'Claudine',
'Clelia',
'Clemencia',
'Clementina',
'Clementine',
'Clemmie',
'Cleo',
'Cleopatra',
'Cleora',
'Cleotilde',
'Cleta',
'Clora',
'Clorinda',
'Clotilde',
'Clyde',
'Codi',
'Cody',
'Colby',
'Coleen',
'Colene',
'Coletta',
'Colette',
'Colleen',
'Collen',
'Collene',
'Collette',
'Concepcion',
'Conception',
'Concetta',
'Concha',
'Conchita',
'Connie',
'Constance',
'Consuela',
'Consuelo',
'Contessa',
'Cora',
'Coral',
'Coralee',
'Coralie',
'Corazon',
'Cordelia',
'Cordia',
'Cordie',
'Coreen',
'Corene',
'Coretta',
'Corey',
'Cori',
'Corie',
'Corina',
'Corine',
'Corinna',
'Corinne',
'Corliss',
'Cornelia',
'Corrie',
'Corrin',
'Corrina',
'Corrine',
'Corrinne',
'Cortney',
'Cory',
'Courtney',
'Creola',
'Cris',
'Criselda',
'Crissy',
'Crista',
'Cristal',
'Cristen',
'Cristi',
'Cristie',
'Cristin',
'Cristina',
'Cristine',
'Cristy',
'Cruz',
'Crysta',
'Crystal',
'Crystle',
'Cuc',
'Curtis',
'Cyndi',
'Cyndy',
'Cynthia',
'Cyrstal',
'Cythia',
'Dacia',
'Dagmar',
'Dagny',
'Dahlia',
'Daina',
'Daine',
'Daisey',
'Daisy',
'Dakota',
'Dale',
'Dalene',
'Dalia',
'Dalila',
'Dallas',
'Damaris',
'Dan',
'Dana',
'Danae',
'Danelle',
'Danette',
'Dani',
'Dania',
'Danica',
'Daniel',
'Daniela',
'Daniele',
'Daniell',
'Daniella',
'Danielle',
'Danika',
'Danille',
'Danita',
'Dann',
'Danna',
'Dannette',
'Dannie',
'Dannielle',
'Danuta',
'Danyel',
'Danyell',
'Danyelle',
'Daphine',
'Daphne',
'Dara',
'Darby',
'Darcel',
'Darcey',
'Darci',
'Darcie',
'Darcy',
'Daria',
'Darla',
'Darleen',
'Darlena',
'Darlene',
'Darline',
'Darnell',
'Daryl',
'David',
'Davida',
'Davina',
'Dawn',
'Dawna',
'Dawne',
'Dayle',
'Dayna',
'Daysi',
'Deadra',
'Dean',
'Deana',
'Deandra',
'Deandrea',
'Deane',
'Deann',
'Deanna',
'Deanne',
'Deb',
'Debbi',
'Debbie',
'Debbra',
'Debby',
'Debera',
'Debi',
'Debora',
'Deborah',
'Debra',
'Debrah',
'Debroah',
'Dede',
'Dedra',
'Dee',
'Deeann',
'Deeanna',
'Deedee',
'Deedra',
'Deena',
'Deetta',
'Deidra',
'Deidre',
'Deirdre',
'Deja',
'Delaine',
'Delana',
'Delcie',
'Delena',
'Delfina',
'Delia',
'Delicia',
'Delila',
'Delilah',
'Delinda',
'Delisa',
'Dell',
'Della',
'Delma',
'Delmy',
'Delois',
'Deloise',
'Delora',
'Deloras',
'Delores',
'Deloris',
'Delorse',
'Delpha',
'Delphia',
'Delphine',
'Delsie',
'Delta',
'Demetra',
'Demetria',
'Demetrice',
'Demetrius',
'Dena',
'Denae',
'Deneen',
'Denese',
'Denice',
'Denise',
'Denisha',
'Denisse',
'Denita',
'Denna',
'Dennis',
'Dennise',
'Denny',
'Denyse',
'Deon',
'Deonna',
'Desirae',
'Desire',
'Desiree',
'Despina',
'Dessie',
'Destiny',
'Detra',
'Devin',
'Devon',
'Devona',
'Devora',
'Devorah',
'Dia',
'Diamond',
'Dian',
'Diana',
'Diane',
'Diann',
'Dianna',
'Dianne',
'Diedra',
'Diedre',
'Dierdre',
'Digna',
'Dimple',
'Dina',
'Dinah',
'Dinorah',
'Dion',
'Dione',
'Dionna',
'Dionne',
'Divina',
'Dixie',
'Dodie',
'Dollie',
'Dolly',
'Dolores',
'Doloris',
'Domenica',
'Dominga',
'Dominica',
'Dominique',
'Dominque',
'Domitila',
'Domonique',
'Dona',
'Donald',
'Donella',
'Donetta',
'Donette',
'Dong',
'Donita',
'Donna',
'Donnetta',
'Donnette',
'Donnie',
'Donya',
'Dora',
'Dorathy',
'Dorcas',
'Doreatha',
'Doreen',
'Dorene',
'Doretha',
'Dorethea',
'Doretta',
'Dori',
'Doria',
'Dorian',
'Dorie',
'Dorinda',
'Dorine',
'Doris',
'Dorla',
'Dorotha',
'Dorothea',
'Dorothy',
'Dorris',
'Dortha',
'Dorthea',
'Dorthey',
'Dorthy',
'Dot',
'Dottie',
'Dotty',
'Dovie',
'Dreama',
'Drema',
'Drew',
'Drucilla',
'Drusilla',
'Dulce',
'Dulcie',
'Dung',
'Dusti',
'Dusty',
'Dwana',
'Dyan',
'Earlean',
'Earleen',
'Earlene',
'Earlie',
'Earline',
'Earnestine',
'Eartha',
'Easter',
'Eboni',
'Ebonie',
'Ebony',
'Echo',
'Eda',
'Edda',
'Eddie',
'Edelmira',
'Eden',
'Edie',
'Edith',
'Edna',
'Edra',
'Edris',
'Edward',
'Edwina',
'Edyth',
'Edythe',
'Effie',
'Ehtel',
'Eileen',
'Eilene',
'Ela',
'Eladia',
'Elaina',
'Elaine',
'Elana',
'Elane',
'Elanor',
'Elayne',
'Elba',
'Elda',
'Eldora',
'Eleanor',
'Eleanora',
'Eleanore',
'Elease',
'Elena',
'Elene',
'Eleni',
'Elenor',
'Elenora',
'Elenore',
'Eleonor',
'Eleonora',
'Eleonore',
'Elfreda',
'Elfrieda',
'Elfriede',
'Elia',
'Eliana',
'Elicia',
'Elida',
'Elidia',
'Elin',
'Elina',
'Elinor',
'Elinore',
'Elisa',
'Elisabeth',
'Elise',
'Elisha',
'Elissa',
'Eliz',
'Eliza',
'Elizabet',
'Elizabeth',
'Elizbeth',
'Elizebeth',
'Elke',
'Ella',
'Ellamae',
'Ellan',
'Ellen',
'Ellena',
'Elli',
'Ellie',
'Ellis',
'Elly',
'Ellyn',
'Elma',
'Elmer',
'Elmira',
'Elna',
'Elnora',
'Elodia',
'Elois',
'Eloisa',
'Eloise',
'Elouise',
'Elsa',
'Else',
'Elsie',
'Elsy',
'Elva',
'Elvera',
'Elvia',
'Elvie',
'Elvina',
'Elvira',
'Elwanda',
'Elyse',
'Elza',
'Ema',
'Emelda',
'Emelia',
'Emelina',
'Emeline',
'Emely',
'Emerald',
'Emerita',
'Emiko',
'Emilee',
'Emilia',
'Emilie',
'Emily',
'Emma',
'Emmaline',
'Emmie',
'Emmy',
'Emogene',
'Ena',
'Enda',
'Enedina',
'Eneida',
'Enid',
'Enola',
'Enriqueta',
'Epifania',
'Era',
'Eric',
'Erica',
'Ericka',
'Erika',
'Erin',
'Erinn',
'Erlene',
'Erlinda',
'Erline',
'Erma',
'Ermelinda',
'Erminia',
'Erna',
'Ernestina',
'Ernestine',
'Eryn',
'Esmeralda',
'Esperanza',
'Essie',
'Esta',
'Estefana',
'Estela',
'Estell',
'Estella',
'Estelle',
'Ester',
'Esther',
'Estrella',
'Etha',
'Ethel',
'Ethelene',
'Ethelyn',
'Ethyl',
'Etsuko',
'Etta',
'Ettie',
'Eufemia',
'Eugena',
'Eugene',
'Eugenia',
'Eugenie',
'Eula',
'Eulah',
'Eulalia',
'Eun',
'Euna',
'Eunice',
'Eura',
'Eusebia',
'Eustolia',
'Eva',
'Evalyn',
'Evan',
'Evangelina',
'Evangeline',
'Eve',
'Evelia',
'Evelin',
'Evelina',
'Eveline',
'Evelyn',
'Evelyne',
'Evelynn',
'Evette',
'Evia',
'Evie',
'Evita',
'Evon',
'Evonne',
'Ewa',
'Exie',
'Fabiola',
'Fae',
'Fairy',
'Faith',
'Fallon',
'Fannie',
'Fanny',
'Farah',
'Farrah',
'Fatima',
'Fatimah',
'Faustina',
'Faviola',
'Fawn',
'Fay',
'Faye',
'Fe',
'Felecia',
'Felica',
'Felice',
'Felicia',
'Felicidad',
'Felicita',
'Felicitas',
'Felipa',
'Felisa',
'Felisha',
'Fermina',
'Fern',
'Fernanda',
'Fernande',
'Ferne',
'Fidela',
'Fidelia',
'Filomena',
'Fiona',
'Flavia',
'Fleta',
'Flo',
'Flor',
'Flora',
'Florance',
'Florence',
'Florencia',
'Florene',
'Florentina',
'Floretta',
'Floria',
'Florida',
'Florinda',
'Florine',
'Florrie',
'Flossie',
'Floy',
'Fonda',
'Fran',
'France',
'Francene',
'Frances',
'Francesca',
'Franchesca',
'Francie',
'Francina',
'Francine',
'Francis',
'Francisca',
'Francisco',
'Francoise',
'Frank',
'Frankie',
'Fransisca',
'Fred',
'Freda',
'Fredda',
'Freddie',
'Frederica',
'Fredericka',
'Fredia',
'Fredricka',
'Freeda',
'Freida',
'Frida',
'Frieda',
'Fumiko',
'Gabriel',
'Gabriela',
'Gabriele',
'Gabriella',
'Gabrielle',
'Gail',
'Gala',
'Gale',
'Galina',
'Garnet',
'Garnett',
'Gary',
'Gay',
'Gaye',
'Gayla',
'Gayle',
'Gaylene',
'Gaynell',
'Gaynelle',
'Gearldine',
'Gema',
'Gemma',
'Gena',
'Gene',
'Genesis',
'Geneva',
'Genevie',
'Genevieve',
'Genevive',
'Genia',
'Genie',
'Genna',
'Gennie',
'Genny',
'Genoveva',
'Georgann',
'George',
'Georgeann',
'Georgeanna',
'Georgene',
'Georgetta',
'Georgette',
'Georgia',
'Georgiana',
'Georgiann',
'Georgianna',
'Georgianne',
'Georgie',
'Georgina',
'Georgine',
'Gerald',
'Geraldine',
'Geralyn',
'Gerda',
'Geri',
'Germaine',
'Gerri',
'Gerry',
'Gertha',
'Gertie',
'Gertrud',
'Gertrude',
'Gertrudis',
'Gertude',
'Ghislaine',
'Gia',
'Gianna',
'Gidget',
'Gigi',
'Gilberte',
'Gilda',
'Gillian',
'Gilma',
'Gina',
'Ginette',
'Ginger',
'Ginny',
'Giovanna',
'Gisela',
'Gisele',
'Giselle',
'Gita',
'Giuseppina',
'Gladis',
'Glady',
'Gladys',
'Glayds',
'Glenda',
'Glendora',
'Glenn',
'Glenna',
'Glennie',
'Glennis',
'Glinda',
'Gloria',
'Glory',
'Glynda',
'Glynis',
'Golda',
'Golden',
'Goldie',
'Grace',
'Gracia',
'Gracie',
'Graciela',
'Grayce',
'Grazyna',
'Gregoria',
'Gregory',
'Greta',
'Gretchen',
'Gretta',
'Gricelda',
'Grisel',
'Griselda',
'Guadalupe',
'Gudrun',
'Guillermina',
'Gussie',
'Gwen',
'Gwenda',
'Gwendolyn',
'Gwenn',
'Gwyn',
'Gwyneth',
'Ha',
'Hae',
'Hailey',
'Haley',
'Halina',
'Halley',
'Hallie',
'Han',
'Hana',
'Hang',
'Hanh',
'Hanna',
'Hannah',
'Hannelore',
'Harmony',
'Harold',
'Harriet',
'Harriett',
'Harriette',
'Hassie',
'Hattie',
'Haydee',
'Hayley',
'Hazel',
'Heather',
'Hedwig',
'Hedy',
'Hee',
'Heide',
'Heidi',
'Heidy',
'Heike',
'Helaine',
'Helen',
'Helena',
'Helene',
'Helga',
'Hellen',
'Henrietta',
'Henriette',
'Henry',
'Herlinda',
'Herma',
'Hermelinda',
'Hermila',
'Hermina',
'Hermine',
'Herminia',
'Herta',
'Hertha',
'Hester',
'Hettie',
'Hiedi',
'Hien',
'Hilaria',
'Hilary',
'Hilda',
'Hilde',
'Hildegard',
'Hildegarde',
'Hildred',
'Hillary',
'Hilma',
'Hiroko',
'Hisako',
'Hoa',
'Holley',
'Holli',
'Hollie',
'Hollis',
'Holly',
'Honey',
'Hong',
'Hope',
'Hortencia',
'Hortense',
'Hortensia',
'Hsiu',
'Hue',
'Hui',
'Hulda',
'Huong',
'Hwa',
'Hyacinth',
'Hye',
'Hyo',
'Hyon',
'Hyun',
'Ida',
'Idalia',
'Idell',
'Idella',
'Iesha',
'Ignacia',
'Ila',
'Ilana',
'Ilda',
'Ileana',
'Ileen',
'Ilene',
'Iliana',
'Illa',
'Ilona',
'Ilse',
'Iluminada',
'Ima',
'Imelda',
'Imogene',
'In',
'Ina',
'India',
'Indira',
'Inell',
'Ines',
'Inez',
'Inga',
'Inge',
'Ingeborg',
'Inger',
'Ingrid',
'Inocencia',
'Iola',
'Iona',
'Ione',
'Ira',
'Iraida',
'Irena',
'Irene',
'Irina',
'Iris',
'Irish',
'Irma',
'Irmgard',
'Isa',
'Isabel',
'Isabell',
'Isabella',
'Isabelle',
'Isadora',
'Isaura',
'Isela',
'Isidra',
'Isis',
'Isobel',
'Iva',
'Ivana',
'Ivelisse',
'Ivette',
'Ivey',
'Ivonne',
'Ivory',
'Ivy',
'Izetta',
'Izola',
'Ja',
'Jacalyn',
'Jacelyn',
'Jacinda',
'Jacinta',
'Jack',
'Jackeline',
'Jackelyn',
'Jacki',
'Jackie',
'Jacklyn',
'Jackqueline',
'Jaclyn',
'Jacqualine',
'Jacque',
'Jacquelin',
'Jacqueline',
'Jacquelyn',
'Jacquelyne',
'Jacquelynn',
'Jacquetta',
'Jacqui',
'Jacquie',
'Jacquiline',
'Jacquline',
'Jacqulyn',
'Jada',
'Jade',
'Jadwiga',
'Jae',
'Jaime',
'Jaimee',
'Jaimie',
'Jaleesa',
'Jalisa',
'Jama',
'Jame',
'Jamee',
'James',
'Jamey',
'Jami',
'Jamie',
'Jamika',
'Jamila',
'Jammie',
'Jan',
'Jana',
'Janae',
'Janay',
'Jane',
'Janean',
'Janee',
'Janeen',
'Janel',
'Janell',
'Janella',
'Janelle',
'Janene',
'Janessa',
'Janet',
'Janeth',
'Janett',
'Janetta',
'Janette',
'Janey',
'Jani',
'Janice',
'Janie',
'Janiece',
'Janina',
'Janine',
'Janis',
'Janise',
'Janita',
'Jann',
'Janna',
'Jannet',
'Jannette',
'Jannie',
'January',
'Janyce',
'Jaqueline',
'Jaquelyn',
'Jasmin',
'Jasmine',
'Jason',
'Jaunita',
'Jay',
'Jaye',
'Jayme',
'Jaymie',
'Jayna',
'Jayne',
'Jazmin',
'Jazmine',
'Jean',
'Jeana',
'Jeane',
'Jeanelle',
'Jeanene',
'Jeanett',
'Jeanetta',
'Jeanette',
'Jeanice',
'Jeanie',
'Jeanine',
'Jeanmarie',
'Jeanna',
'Jeanne',
'Jeannetta',
'Jeannette',
'Jeannie',
'Jeannine',
'Jeffie',
'Jeffrey',
'Jen',
'Jena',
'Jenae',
'Jene',
'Jenee',
'Jenell',
'Jenelle',
'Jenette',
'Jeneva',
'Jeni',
'Jenice',
'Jenifer',
'Jeniffer',
'Jenine',
'Jenise',
'Jenna',
'Jennefer',
'Jennell',
'Jennette',
'Jenni',
'Jennie',
'Jennifer',
'Jenniffer',
'Jennine',
'Jenny',
'Jeraldine',
'Jeremy',
'Jeri',
'Jerica',
'Jerilyn',
'Jerlene',
'Jerri',
'Jerrica',
'Jerrie',
'Jerry',
'Jesenia',
'Jesica',
'Jesse',
'Jessenia',
'Jessi',
'Jessia',
'Jessica',
'Jessie',
'Jessika',
'Jestine',
'Jesus',
'Jesusa',
'Jesusita',
'Jetta',
'Jettie',
'Jewel',
'Jewell',
'Ji',
'Jill',
'Jillian',
'Jimmie',
'Jimmy',
'Jin',
'Jina',
'Jinny',
'Jo',
'Joan',
'Joana',
'Joane',
'Joanie',
'Joann',
'Joanna',
'Joanne',
'Joannie',
'Joaquina',
'Jocelyn',
'Jodee',
'Jodi',
'Jodie',
'Jody',
'Joe',
'Joeann',
'Joel',
'Joella',
'Joelle',
'Joellen',
'Joetta',
'Joette',
'Joey',
'Johana',
'Johanna',
'Johanne',
'John',
'Johna',
'Johnetta',
'Johnette',
'Johnie',
'Johnna',
'Johnnie',
'Johnny',
'Johnsie',
'Joi',
'Joie',
'Jolanda',
'Joleen',
'Jolene',
'Jolie',
'Joline',
'Jolyn',
'Jolynn',
'Jon',
'Jona',
'Jone',
'Jonell',
'Jonelle',
'Jong',
'Joni',
'Jonie',
'Jonna',
'Jonnie',
'Jordan',
'Jose',
'Josefa',
'Josefina',
'Josefine',
'Joselyn',
'Joseph',
'Josephina',
'Josephine',
'Josette',
'Joshua',
'Josie',
'Joslyn',
'Josphine',
'Jovan',
'Jovita',
'Joy',
'Joya',
'Joyce',
'Joycelyn',
'Joye',
'Juan',
'Juana',
'Juanita',
'Jude',
'Judi',
'Judie',
'Judith',
'Judy',
'Jule',
'Julee',
'Julene',
'Juli',
'Julia',
'Julian',
'Juliana',
'Juliane',
'Juliann',
'Julianna',
'Julianne',
'Julie',
'Julieann',
'Julienne',
'Juliet',
'Julieta',
'Julietta',
'Juliette',
'Julio',
'Julissa',
'June',
'Jung',
'Junie',
'Junita',
'Junko',
'Justa',
'Justin',
'Justina',
'Justine',
'Jutta',
'Ka',
'Kacey',
'Kaci',
'Kacie',
'Kacy',
'Kai',
'Kaila',
'Kaitlin',
'Kaitlyn',
'Kala',
'Kaleigh',
'Kaley',
'Kali',
'Kallie',
'Kalyn',
'Kam',
'Kamala',
'Kami',
'Kamilah',
'Kandace',
'Kandi',
'Kandice',
'Kandis',
'Kandra',
'Kandy',
'Kanesha',
'Kanisha',
'Kara',
'Karan',
'Kareen',
'Karen',
'Karena',
'Karey',
'Kari',
'Karie',
'Karima',
'Karin',
'Karina',
'Karine',
'Karisa',
'Karissa',
'Karl',
'Karla',
'Karleen',
'Karlene',
'Karly',
'Karlyn',
'Karma',
'Karmen',
'Karol',
'Karole',
'Karoline',
'Karolyn',
'Karon',
'Karren',
'Karri',
'Karrie',
'Karry',
'Kary',
'Karyl',
'Karyn',
'Kasandra',
'Kasey',
'Kasha',
'Kasi',
'Kasie',
'Kassandra',
'Kassie',
'Kate',
'Katelin',
'Katelyn',
'Katelynn',
'Katerine',
'Kathaleen',
'Katharina',
'Katharine',
'Katharyn',
'Kathe',
'Katheleen',
'Katherin',
'Katherina',
'Katherine',
'Kathern',
'Katheryn',
'Kathey',
'Kathi',
'Kathie',
'Kathleen',
'Kathlene',
'Kathline',
'Kathlyn',
'Kathrin',
'Kathrine',
'Kathryn',
'Kathryne',
'Kathy',
'Kathyrn',
'Kati',
'Katia',
'Katie',
'Katina',
'Katlyn',
'Katrice',
'Katrina',
'Kattie',
'Katy',
'Kay',
'Kayce',
'Kaycee',
'Kaye',
'Kayla',
'Kaylee',
'Kayleen',
'Kayleigh',
'Kaylene',
'Kazuko',
'Kecia',
'Keeley',
'Keely',
'Keena',
'Keesha',
'Keiko',
'Keila',
'Keira',
'Keisha',
'Keith',
'Keitha',
'Keli',
'Kelle',
'Kellee',
'Kelley',
'Kelli',
'Kellie',
'Kelly',
'Kellye',
'Kelsey',
'Kelsi',
'Kelsie',
'Kemberly',
'Kena',
'Kenda',
'Kendal',
'Kendall',
'Kendra',
'Kenia',
'Kenisha',
'Kenna',
'Kenneth',
'Kenya',
'Kenyatta',
'Kenyetta',
'Kera',
'Keren',
'Keri',
'Kerri',
'Kerrie',
'Kerry',
'Kerstin',
'Kesha',
'Keshia',
'Keturah',
'Keva',
'Kevin',
'Khadijah',
'Khalilah',
'Kia',
'Kiana',
'Kiara',
'Kiera',
'Kiersten',
'Kiesha',
'Kiley',
'Kim',
'Kimber',
'Kimberely',
'Kimberlee',
'Kimberley',
'Kimberli',
'Kimberlie',
'Kimberly',
'Kimbery',
'Kimbra',
'Kimi',
'Kimiko',
'Kina',
'Kindra',
'Kira',
'Kirby',
'Kirsten',
'Kirstie',
'Kirstin',
'Kisha',
'Kit',
'Kittie',
'Kitty',
'Kiyoko',
'Kizzie',
'Kizzy',
'Klara',
'Kori',
'Kortney',
'Kourtney',
'Kris',
'Krishna',
'Krissy',
'Krista',
'Kristal',
'Kristan',
'Kristeen',
'Kristel',
'Kristen',
'Kristi',
'Kristian',
'Kristie',
'Kristin',
'Kristina',
'Kristine',
'Kristle',
'Kristy',
'Kristyn',
'Krysta',
'Krystal',
'Krysten',
'Krystin',
'Krystina',
'Krystle',
'Krystyna',
'Kum',
'Kyla',
'Kyle',
'Kylee',
'Kylie',
'Kym',
'Kymberly',
'Kyoko',
'Kyong',
'Kyra',
'Kyung',
'Lacey',
'Lachelle',
'Laci',
'Lacie',
'Lacresha',
'Lacy',
'Ladawn',
'Ladonna',
'Lady',
'Lael',
'Lahoma',
'Lai',
'Laila',
'Laine',
'Lajuana',
'Lakeesha',
'Lakeisha',
'Lakendra',
'Lakenya',
'Lakesha',
'Lakeshia',
'Lakia',
'Lakiesha',
'Lakisha',
'Lakita',
'Lala',
'Lamonica',
'Lan',
'Lana',
'Lane',
'Lanell',
'Lanelle',
'Lanette',
'Lang',
'Lani',
'Lanie',
'Lanita',
'Lannie',
'Lanora',
'Laquanda',
'Laquita',
'Lara',
'Larae',
'Laraine',
'Laree',
'Larhonda',
'Larisa',
'Larissa',
'Larita',
'Laronda',
'Larraine',
'Larry',
'Larue',
'Lasandra',
'Lashanda',
'Lashandra',
'Lashaun',
'Lashaunda',
'Lashawn',
'Lashawna',
'Lashawnda',
'Lashay',
'Lashell',
'Lashon',
'Lashonda',
'Lashunda',
'Lasonya',
'Latanya',
'Latarsha',
'Latasha',
'Latashia',
'Latesha',
'Latia',
'Laticia',
'Latina',
'Latisha',
'Latonia',
'Latonya',
'Latoria',
'Latosha',
'Latoya',
'Latoyia',
'Latrice',
'Latricia',
'Latrina',
'Latrisha',
'Launa',
'Laura',
'Lauralee',
'Lauran',
'Laure',
'Laureen',
'Laurel',
'Lauren',
'Laurena',
'Laurence',
'Laurene',
'Lauretta',
'Laurette',
'Lauri',
'Laurice',
'Laurie',
'Laurinda',
'Laurine',
'Lauryn',
'Lavada',
'Lavelle',
'Lavenia',
'Lavera',
'Lavern',
'Laverna',
'Laverne',
'Laveta',
'Lavette',
'Lavina',
'Lavinia',
'Lavon',
'Lavona',
'Lavonda',
'Lavone',
'Lavonia',
'Lavonna',
'Lavonne',
'Lawana',
'Lawanda',
'Lawanna',
'Lawrence',
'Layla',
'Layne',
'Le',
'Lea',
'Leah',
'Lean',
'Leana',
'Leandra',
'Leann',
'Leanna',
'Leanne',
'Leanora',
'Leatha',
'Leatrice',
'Lecia',
'Leda',
'Lee',
'Leeann',
'Leeanna',
'Leeanne',
'Leena',
'Leesa',
'Leia',
'Leida',
'Leigh',
'Leigha',
'Leighann',
'Leila',
'Leilani',
'Leisa',
'Leisha',
'Lekisha',
'Lela',
'Lelah',
'Lelia',
'Lena',
'Lenita',
'Lenna',
'Lennie',
'Lenora',
'Lenore',
'Leo',
'Leola',
'Leoma',
'Leon',
'Leona',
'Leonarda',
'Leone',
'Leonia',
'Leonida',
'Leonie',
'Leonila',
'Leonor',
'Leonora',
'Leonore',
'Leontine',
'Leora',
'Leota',
'Lera',
'Lesa',
'Lesha',
'Lesia',
'Leslee',
'Lesley',
'Lesli',
'Leslie',
'Lessie',
'Lester',
'Leta',
'Letha',
'Leticia',
'Letisha',
'Letitia',
'Lettie',
'Letty',
'Lewis',
'Lexie',
'Lezlie',
'Li',
'Lia',
'Liana',
'Liane',
'Lianne',
'Libbie',
'Libby',
'Liberty',
'Librada',
'Lida',
'Lidia',
'Lien',
'Lieselotte',
'Ligia',
'Lila',
'Lili',
'Lilia',
'Lilian',
'Liliana',
'Lilla',
'Lilli',
'Lillia',
'Lilliam',
'Lillian',
'Lilliana',
'Lillie',
'Lilly',
'Lily',
'Lin',
'Lina',
'Linda',
'Lindsay',
'Lindsey',
'Lindsy',
'Lindy',
'Linette',
'Ling',
'Linh',
'Linn',
'Linnea',
'Linnie',
'Linsey',
'Lisa',
'Lisabeth',
'Lisandra',
'Lisbeth',
'Lise',
'Lisette',
'Lisha',
'Lissa',
'Lissette',
'Lita',
'Livia',
'Liz',
'Liza',
'Lizabeth',
'Lizbeth',
'Lizeth',
'Lizette',
'Lizzette',
'Lizzie',
'Loan',
'Logan',
'Loida',
'Lois',
'Loise',
'Lola',
'Lolita',
'Loma',
'Lona',
'Londa',
'Loni',
'Lonna',
'Lonnie',
'Lora',
'Loraine',
'Loralee',
'Lore',
'Lorean',
'Loree',
'Loreen',
'Lorelei',
'Loren',
'Lorena',
'Lorene',
'Lorenza',
'Loreta',
'Loretta',
'Lorette',
'Lori',
'Loria',
'Loriann',
'Lorie',
'Lorilee',
'Lorina',
'Lorinda',
'Lorine',
'Loris',
'Lorita',
'Lorna',
'Lorraine',
'Lorretta',
'Lorri',
'Lorriane',
'Lorrie',
'Lorrine',
'Lory',
'Lottie',
'Lou',
'Louann',
'Louanne',
'Louella',
'Louetta',
'Louie',
'Louis',
'Louisa',
'Louise',
'Loura',
'Lourdes',
'Lourie',
'Louvenia',
'Love',
'Lovella',
'Lovetta',
'Lovie',
'Loyce',
'Lu',
'Luana',
'Luann',
'Luanna',
'Luanne',
'Luba',
'Luci',
'Lucia',
'Luciana',
'Lucie',
'Lucienne',
'Lucila',
'Lucile',
'Lucilla',
'Lucille',
'Lucina',
'Lucinda',
'Lucrecia',
'Lucretia',
'Lucy',
'Ludie',
'Ludivina',
'Lue',
'Luella',
'Luetta',
'Luis',
'Luisa',
'Luise',
'Lula',
'Lulu',
'Luna',
'Lupe',
'Lupita',
'Lura',
'Lurlene',
'Lurline',
'Luvenia',
'Luz',
'Lyda',
'Lydia',
'Lyla',
'Lyn',
'Lynda',
'Lyndia',
'Lyndsay',
'Lyndsey',
'Lynell',
'Lynelle',
'Lynetta',
'Lynette',
'Lynn',
'Lynna',
'Lynne',
'Lynnette',
'Lynsey',
'Ma',
'Mabel',
'Mabelle',
'Mable',
'Machelle',
'Macie',
'Mackenzie',
'Macy',
'Madalene',
'Madaline',
'Madalyn',
'Maddie',
'Madelaine',
'Madeleine',
'Madelene',
'Madeline',
'Madelyn',
'Madge',
'Madie',
'Madison',
'Madlyn',
'Madonna',
'Mae',
'Maegan',
'Mafalda',
'Magali',
'Magaly',
'Magan',
'Magaret',
'Magda',
'Magdalen',
'Magdalena',
'Magdalene',
'Magen',
'Maggie',
'Magnolia',
'Mahalia',
'Mai',
'Maia',
'Maida',
'Maile',
'Maira',
'Maire',
'Maisha',
'Maisie',
'Majorie',
'Makeda',
'Malena',
'Malia',
'Malika',
'Malinda',
'Malisa',
'Malissa',
'Malka',
'Mallie',
'Mallory',
'Malorie',
'Malvina',
'Mamie',
'Mammie',
'Man',
'Mana',
'Manda',
'Mandi',
'Mandie',
'Mandy',
'Manie',
'Manuela',
'Many',
'Mao',
'Maple',
'Mara',
'Maragaret',
'Maragret',
'Maranda',
'Marcela',
'Marcelene',
'Marcelina',
'Marceline',
'Marcell',
'Marcella',
'Marcelle',
'Marcene',
'Marchelle',
'Marci',
'Marcia',
'Marcie',
'Marcy',
'Mardell',
'Maren',
'Marg',
'Margaret',
'Margareta',
'Margarete',
'Margarett',
'Margaretta',
'Margarette',
'Margarita',
'Margarite',
'Margart',
'Marge',
'Margene',
'Margeret',
'Margert',
'Margery',
'Marget',
'Margherita',
'Margie',
'Margit',
'Margo',
'Margorie',
'Margot',
'Margret',
'Margrett',
'Marguerita',
'Marguerite',
'Margurite',
'Margy',
'Marhta',
'Mari',
'Maria',
'Mariah',
'Mariam',
'Marian',
'Mariana',
'Marianela',
'Mariann',
'Marianna',
'Marianne',
'Maribel',
'Maribeth',
'Marica',
'Maricela',
'Maricruz',
'Marie',
'Mariel',
'Mariela',
'Mariella',
'Marielle',
'Marietta',
'Mariette',
'Mariko',
'Marilee',
'Marilou',
'Marilu',
'Marilyn',
'Marilynn',
'Marin',
'Marina',
'Marinda',
'Marine',
'Mario',
'Marion',
'Maris',
'Marisa',
'Marisela',
'Marisha',
'Marisol',
'Marissa',
'Marita',
'Maritza',
'Marivel',
'Marjorie',
'Marjory',
'Mark',
'Marketta',
'Markita',
'Marla',
'Marlana',
'Marleen',
'Marlen',
'Marlena',
'Marlene',
'Marlin',
'Marline',
'Marlo',
'Marlyn',
'Marlys',
'Marna',
'Marni',
'Marnie',
'Marquerite',
'Marquetta',
'Marquita',
'Marquitta',
'Marry',
'Marsha',
'Marshall',
'Marta',
'Marth',
'Martha',
'Marti',
'Martin',
'Martina',
'Martine',
'Marty',
'Marva',
'Marvel',
'Marvella',
'Marvis',
'Marx',
'Mary',
'Marya',
'Maryalice',
'Maryam',
'Maryann',
'Maryanna',
'Maryanne',
'Marybelle',
'Marybeth',
'Maryellen',
'Maryetta',
'Maryjane',
'Maryjo',
'Maryland',
'Marylee',
'Marylin',
'Maryln',
'Marylou',
'Marylouise',
'Marylyn',
'Marylynn',
'Maryrose',
'Masako',
'Matha',
'Mathilda',
'Mathilde',
'Matilda',
'Matilde',
'Matthew',
'Mattie',
'Maud',
'Maude',
'Maudie',
'Maura',
'Maureen',
'Maurice',
'Maurine',
'Maurita',
'Mavis',
'Maxie',
'Maxima',
'Maximina',
'Maxine',
'May',
'Maya',
'Maybell',
'Maybelle',
'Maye',
'Mayme',
'Mayola',
'Mayra',
'Mazie',
'Mckenzie',
'Meagan',
'Meaghan',
'Mechelle',
'Meda',
'Mee',
'Meg',
'Megan',
'Meggan',
'Meghan',
'Meghann',
'Mei',
'Melaine',
'Melani',
'Melania',
'Melanie',
'Melany',
'Melba',
'Melda',
'Melia',
'Melida',
'Melina',
'Melinda',
'Melisa',
'Melissa',
'Melissia',
'Melita',
'Mellie',
'Mellisa',
'Mellissa',
'Melodee',
'Melodi',
'Melodie',
'Melody',
'Melonie',
'Melony',
'Melva',
'Melvin',
'Melvina',
'Melynda',
'Mendy',
'Mercedes',
'Mercedez',
'Mercy',
'Meredith',
'Meri',
'Merideth',
'Meridith',
'Merilyn',
'Merissa',
'Merle',
'Merlene',
'Merlyn',
'Merna',
'Merri',
'Merrie',
'Merrilee',
'Merrill',
'Merry',
'Mertie',
'Meryl',
'Meta',
'Mi',
'Mia',
'Mica',
'Micaela',
'Micah',
'Micha',
'Michael',
'Michaela',
'Michaele',
'Michal',
'Micheal',
'Michel',
'Michele',
'Michelina',
'Micheline',
'Michell',
'Michelle',
'Michiko',
'Mickey',
'Micki',
'Mickie',
'Miesha',
'Migdalia',
'Mignon',
'Miguelina',
'Mika',
'Mikaela',
'Mike',
'Miki',
'Mikki',
'Mila',
'Milagro',
'Milagros',
'Milda',
'Mildred',
'Milissa',
'Millicent',
'Millie',
'Milly',
'Mimi',
'Min',
'Mina',
'Minda',
'Mindi',
'Mindy',
'Minerva',
'Ming',
'Minh',
'Minna',
'Minnie',
'Minta',
'Mira',
'Miranda',
'Mireille',
'Mirella',
'Mireya',
'Miriam',
'Mirian',
'Mirna',
'Mirta',
'Mirtha',
'Misha',
'Miss',
'Missy',
'Misti',
'Mistie',
'Misty',
'Mitchell',
'Mitsue',
'Mitsuko',
'Mittie',
'Mitzi',
'Mitzie',
'Miyoko',
'Modesta',
'Moira',
'Mollie',
'Molly',
'Mona',
'Monet',
'Monica',
'Monika',
'Monique',
'Monnie',
'Monserrate',
'Moon',
'Mora',
'Morgan',
'Moriah',
'Mozell',
'Mozella',
'Mozelle',
'Mui',
'Muoi',
'Muriel',
'My',
'Myesha',
'Myong',
'Myra',
'Myriam',
'Myrl',
'Myrle',
'Myrna',
'Myrta',
'Myrtice',
'Myrtie',
'Myrtis',
'Myrtle',
'Myung',
'Na',
'Nada',
'Nadene',
'Nadia',
'Nadine',
'Naida',
'Nakesha',
'Nakia',
'Nakisha',
'Nakita',
'Nam',
'Nan',
'Nana',
'Nancee',
'Nancey',
'Nanci',
'Nancie',
'Nancy',
'Nanette',
'Nannette',
'Nannie',
'Naoma',
'Naomi',
'Narcisa',
'Natacha',
'Natalia',
'Natalie',
'Natalya',
'Natasha',
'Natashia',
'Nathalie',
'Natisha',
'Natividad',
'Natosha',
'Necole',
'Neda',
'Nedra',
'Neely',
'Neida',
'Nelda',
'Nelia',
'Nelida',
'Nell',
'Nella',
'Nelle',
'Nellie',
'Nelly',
'Nena',
'Nenita',
'Neoma',
'Neomi',
'Nereida',
'Nerissa',
'Nery',
'Neta',
'Nettie',
'Neva',
'Nevada',
'Nga',
'Ngan',
'Ngoc',
'Nguyet',
'Nia',
'Nichelle',
'Nichol',
'Nichole',
'Nicholle',
'Nicki',
'Nickie',
'Nickole',
'Nicky',
'Nicol',
'Nicola',
'Nicolasa',
'Nicole',
'Nicolette',
'Nicolle',
'Nida',
'Nidia',
'Niesha',
'Nieves',
'Niki',
'Nikia',
'Nikita',
'Nikki',
'Nikole',
'Nila',
'Nilda',
'Nilsa',
'Nina',
'Ninfa',
'Nisha',
'Nita',
'Nobuko',
'Noel',
'Noelia',
'Noella',
'Noelle',
'Noemi',
'Nohemi',
'Nola',
'Noma',
'Nona',
'Nora',
'Norah',
'Noreen',
'Norene',
'Noriko',
'Norine',
'Norma',
'Norman',
'Nova',
'Novella',
'Nu',
'Nubia',
'Numbers',
'Nydia',
'Nyla',
'Obdulia',
'Ocie',
'Octavia',
'Oda',
'Odelia',
'Odell',
'Odessa',
'Odette',
'Odilia',
'Ofelia',
'Ok',
'Ola',
'Olene',
'Oleta',
'Olevia',
'Olga',
'Olimpia',
'Olinda',
'Oliva',
'Olive',
'Olivia',
'Ollie',
'Olympia',
'Oma',
'Omega',
'Ona',
'Oneida',
'Onie',
'Onita',
'Opal',
'Ophelia',
'Ora',
'Oralee',
'Oralia',
'Oretha',
'Orpha',
'Oscar',
'Ossie',
'Otelia',
'Otha',
'Otilia',
'Ouida',
'Ozell',
'Ozella',
'Ozie',
'Pa',
'Page',
'Paige',
'Palma',
'Palmira',
'Pam',
'Pamala',
'Pamela',
'Pamelia',
'Pamella',
'Pamila',
'Pamula',
'Pandora',
'Pansy',
'Paola',
'Paris',
'Parthenia',
'Particia',
'Pasty',
'Pat',
'Patience',
'Patria',
'Patrica',
'Patrice',
'Patricia',
'Patrick',
'Patrina',
'Patsy',
'Patti',
'Pattie',
'Patty',
'Paul',
'Paula',
'Paulene',
'Pauletta',
'Paulette',
'Paulina',
'Pauline',
'Paulita',
'Paz',
'Pearl',
'Pearle',
'Pearlene',
'Pearlie',
'Pearline',
'Pearly',
'Peg',
'Peggie',
'Peggy',
'Pei',
'Penelope',
'Penney',
'Penni',
'Pennie',
'Penny',
'Perla',
'Perry',
'Peter',
'Petra',
'Petrina',
'Petronila',
'Phebe',
'Phillis',
'Philomena',
'Phoebe',
'Phung',
'Phuong',
'Phylicia',
'Phylis',
'Phyliss',
'Phyllis',
'Pia',
'Piedad',
'Pilar',
'Ping',
'Pinkie',
'Piper',
'Pok',
'Polly',
'Porsche',
'Porsha',
'Portia',
'Precious',
'Pricilla',
'Princess',
'Priscila',
'Priscilla',
'Providencia',
'Prudence',
'Pura',
'Qiana',
'Queen',
'Queenie',
'Quiana',
'Quinn',
'Quyen',
'Rachael',
'Rachal',
'Racheal',
'Rachel',
'Rachele',
'Rachell',
'Rachelle',
'Racquel',
'Rae',
'Raeann',
'Raelene',
'Rafaela',
'Raguel',
'Raina',
'Raisa',
'Ramona',
'Ramonita',
'Rana',
'Ranae',
'Randa',
'Randee',
'Randi',
'Randy',
'Ranee',
'Raquel',
'Rasheeda',
'Rashida',
'Raven',
'Ray',
'Raye',
'Raylene',
'Raymond',
'Raymonde',
'Rayna',
'Rea',
'Reagan',
'Reanna',
'Reatha',
'Reba',
'Rebbeca',
'Rebbecca',
'Rebeca',
'Rebecca',
'Rebecka',
'Rebekah',
'Reda',
'Reena',
'Refugia',
'Refugio',
'Regan',
'Regena',
'Regenia',
'Regina',
'Regine',
'Reginia',
'Reiko',
'Reina',
'Reita',
'Rema',
'Remedios',
'Remona',
'Rena',
'Renae',
'Renata',
'Renate',
'Renay',
'Renda',
'Rene',
'Renea',
'Renee',
'Renetta',
'Renita',
'Renna',
'Ressie',
'Reta',
'Retha',
'Retta',
'Reva',
'Reyna',
'Reynalda',
'Rhea',
'Rheba',
'Rhiannon',
'Rhoda',
'Rhona',
'Rhonda',
'Ria',
'Ricarda',
'Richard',
'Richelle',
'Ricki',
'Rickie',
'Rikki',
'Rima',
'Rina',
'Risa',
'Rita',
'Riva',
'Rivka',
'Robbi',
'Robbie',
'Robbin',
'Robbyn',
'Robena',
'Robert',
'Roberta',
'Roberto',
'Robin',
'Robyn',
'Rochel',
'Rochell',
'Rochelle',
'Rocio',
'Rolanda',
'Rolande',
'Roma',
'Romaine',
'Romana',
'Romelia',
'Romona',
'Rona',
'Ronald',
'Ronda',
'Roni',
'Ronna',
'Ronni',
'Ronnie',
'Rory',
'Rosa',
'Rosalba',
'Rosalee',
'Rosalia',
'Rosalie',
'Rosalina',
'Rosalind',
'Rosalinda',
'Rosaline',
'Rosalva',
'Rosalyn',
'Rosamaria',
'Rosamond',
'Rosana',
'Rosann',
'Rosanna',
'Rosanne',
'Rosaria',
'Rosario',
'Rosaura',
'Rose',
'Roseann',
'Roseanna',
'Roseanne',
'Roselee',
'Roselia',
'Roseline',
'Rosella',
'Roselle',
'Roselyn',
'Rosemarie',
'Rosemary',
'Rosena',
'Rosenda',
'Rosetta',
'Rosette',
'Rosia',
'Rosie',
'Rosina',
'Rosio',
'Rosita',
'Roslyn',
'Rossana',
'Rossie',
'Rosy',
'Rowena',
'Roxana',
'Roxane',
'Roxann',
'Roxanna',
'Roxanne',
'Roxie',
'Roxy',
'Roy',
'Royce',
'Rozanne',
'Rozella',
'Rubi',
'Rubie',
'Ruby',
'Rubye',
'Rudy',
'Rufina',
'Russell',
'Ruth',
'Rutha',
'Ruthann',
'Ruthanne',
'Ruthe',
'Ruthie',
'Ryan',
'Ryann',
'Sabina',
'Sabine',
'Sabra',
'Sabrina',
'Sacha',
'Sachiko',
'Sade',
'Sadie',
'Sadye',
'Sage',
'Salena',
'Salina',
'Salley',
'Sallie',
'Sally',
'Salome',
'Sam',
'Samantha',
'Samara',
'Samatha',
'Samella',
'Samira',
'Sammie',
'Sammy',
'Samuel',
'Sana',
'Sanda',
'Sandee',
'Sandi',
'Sandie',
'Sandra',
'Sandy',
'Sang',
'Sanjuana',
'Sanjuanita',
'Sanora',
'Santa',
'Santana',
'Santina',
'Santos',
'Sara',
'Sarah',
'Sarai',
'Saran',
'Sari',
'Sarina',
'Sarita',
'Sasha',
'Saturnina',
'Sau',
'Saundra',
'Savanna',
'Savannah',
'Scarlet',
'Scarlett',
'Scott',
'Scottie',
'Sean',
'Season',
'Sebrina',
'See',
'Seema',
'Selena',
'Selene',
'Selina',
'Selma',
'Sena',
'Senaida',
'September',
'Serafina',
'Serena',
'Serina',
'Serita',
'Setsuko',
'Sha',
'Shae',
'Shaina',
'Shakia',
'Shakira',
'Shakita',
'Shala',
'Shalanda',
'Shalon',
'Shalonda',
'Shameka',
'Shamika',
'Shan',
'Shana',
'Shanae',
'Shanda',
'Shandi',
'Shandra',
'Shane',
'Shaneka',
'Shanel',
'Shanell',
'Shanelle',
'Shani',
'Shanice',
'Shanika',
'Shaniqua',
'Shanita',
'Shanna',
'Shannan',
'Shannon',
'Shanon',
'Shanta',
'Shantae',
'Shantay',
'Shante',
'Shantel',
'Shantell',
'Shantelle',
'Shanti',
'Shaquana',
'Shaquita',
'Shara',
'Sharan',
'Sharda',
'Sharee',
'Sharell',
'Sharen',
'Shari',
'Sharice',
'Sharie',
'Sharika',
'Sharilyn',
'Sharita',
'Sharla',
'Sharleen',
'Sharlene',
'Sharmaine',
'Sharolyn',
'Sharon',
'Sharonda',
'Sharri',
'Sharron',
'Sharyl',
'Sharyn',
'Shasta',
'Shaun',
'Shauna',
'Shaunda',
'Shaunna',
'Shaunta',
'Shaunte',
'Shavon',
'Shavonda',
'Shavonne',
'Shawana',
'Shawanda',
'Shawanna',
'Shawn',
'Shawna',
'Shawnda',
'Shawnee',
'Shawnna',
'Shawnta',
'Shay',
'Shayla',
'Shayna',
'Shayne',
'Shea',
'Sheba',
'Sheena',
'Sheila',
'Sheilah',
'Shela',
'Shelba',
'Shelby',
'Shelia',
'Shella',
'Shelley',
'Shelli',
'Shellie',
'Shelly',
'Shemeka',
'Shemika',
'Shena',
'Shenika',
'Shenita',
'Shenna',
'Shera',
'Sheree',
'Sherell',
'Sheri',
'Sherice',
'Sheridan',
'Sherie',
'Sherika',
'Sherill',
'Sherilyn',
'Sherise',
'Sherita',
'Sherlene',
'Sherley',
'Sherly',
'Sherlyn',
'Sheron',
'Sherrell',
'Sherri',
'Sherrie',
'Sherril',
'Sherrill',
'Sherron',
'Sherry',
'Sherryl',
'Shery',
'Sheryl',
'Sheryll',
'Shiela',
'Shila',
'Shiloh',
'Shin',
'Shira',
'Shirely',
'Shirl',
'Shirlee',
'Shirleen',
'Shirlene',
'Shirley',
'Shirly',
'Shizue',
'Shizuko',
'Shona',
'Shonda',
'Shondra',
'Shonna',
'Shonta',
'Shoshana',
'Shu',
'Shyla',
'Sibyl',
'Sidney',
'Sierra',
'Signe',
'Sigrid',
'Silva',
'Silvana',
'Silvia',
'Sima',
'Simona',
'Simone',
'Simonne',
'Sina',
'Sindy',
'Siobhan',
'Sirena',
'Siu',
'Sixta',
'Skye',
'Slyvia',
'So',
'Socorro',
'Sofia',
'Soila',
'Sol',
'Solange',
'Soledad',
'Somer',
'Sommer',
'Son',
'Sona',
'Sondra',
'Song',
'Sonia',
'Sonja',
'Sonya',
'Soo',
'Sook',
'Soon',
'Sophia',
'Sophie',
'Soraya',
'Sparkle',
'Spring',
'Stacee',
'Stacey',
'Staci',
'Stacia',
'Stacie',
'Stacy',
'Star',
'Starla',
'Starr',
'Stasia',
'Stefani',
'Stefania',
'Stefanie',
'Stefany',
'Steffanie',
'Stella',
'Stepanie',
'Stephaine',
'Stephane',
'Stephani',
'Stephania',
'Stephanie',
'Stephany',
'Stephen',
'Stephenie',
'Stephine',
'Stephnie',
'Steven',
'Stevie',
'Stormy',
'Su',
'Suanne',
'Sudie',
'Sue',
'Sueann',
'Suellen',
'Suk',
'Sulema',
'Sumiko',
'Summer',
'Sun',
'Sunday',
'Sung',
'Sunni',
'Sunny',
'Sunshine',
'Susan',
'Susana',
'Susann',
'Susanna',
'Susannah',
'Susanne',
'Susie',
'Susy',
'Suzan',
'Suzann',
'Suzanna',
'Suzanne',
'Suzette',
'Suzi',
'Suzie',
'Suzy',
'Svetlana',
'Sybil',
'Syble',
'Sydney',
'Sylvia',
'Sylvie',
'Synthia',
'Syreeta',
'Ta',
'Tabatha',
'Tabetha',
'Tabitha',
'Tai',
'Taina',
'Taisha',
'Tajuana',
'Takako',
'Takisha',
'Talia',
'Talisha',
'Talitha',
'Tam',
'Tama',
'Tamala',
'Tamar',
'Tamara',
'Tamatha',
'Tambra',
'Tameika',
'Tameka',
'Tamekia',
'Tamela',
'Tamera',
'Tamesha',
'Tami',
'Tamica',
'Tamie',
'Tamika',
'Tamiko',
'Tamisha',
'Tammara',
'Tammera',
'Tammi',
'Tammie',
'Tammy',
'Tamra',
'Tana',
'Tandra',
'Tandy',
'Taneka',
'Tanesha',
'Tangela',
'Tania',
'Tanika',
'Tanisha',
'Tanja',
'Tanna',
'Tanya',
'Tara',
'Tarah',
'Taren',
'Tari',
'Tarra',
'Tarsha',
'Taryn',
'Tasha',
'Tashia',
'Tashina',
'Tasia',
'Tatiana',
'Tatum',
'Tatyana',
'Taunya',
'Tawana',
'Tawanda',
'Tawanna',
'Tawna',
'Tawny',
'Tawnya',
'Taylor',
'Tayna',
'Teena',
'Tegan',
'Teisha',
'Telma',
'Temeka',
'Temika',
'Tempie',
'Temple',
'Tena',
'Tenesha',
'Tenisha',
'Tennie',
'Tennille',
'Teodora',
'Teofila',
'Tequila',
'Tera',
'Tereasa',
'Teresa',
'Terese',
'Teresia',
'Teresita',
'Teressa',
'Teri',
'Terica',
'Terina',
'Terisa',
'Terra',
'Terrell',
'Terresa',
'Terri',
'Terrie',
'Terrilyn',
'Terry',
'Tesha',
'Tess',
'Tessa',
'Tessie',
'Thalia',
'Thanh',
'Thao',
'Thea',
'Theda',
'Thelma',
'Theo',
'Theodora',
'Theola',
'Theresa',
'Therese',
'Theresia',
'Theressa',
'Thersa',
'Thi',
'Thomas',
'Thomasena',
'Thomasina',
'Thomasine',
'Thora',
'Thresa',
'Thu',
'Thuy',
'Tia',
'Tiana',
'Tianna',
'Tiara',
'Tien',
'Tiera',
'Tierra',
'Tiesha',
'Tifany',
'Tiffaney',
'Tiffani',
'Tiffanie',
'Tiffany',
'Tiffiny',
'Tijuana',
'Tilda',
'Tillie',
'Timika',
'Timothy',
'Tina',
'Tinisha',
'Tiny',
'Tisa',
'Tish',
'Tisha',
'Tobi',
'Tobie',
'Toby',
'Toccara',
'Toi',
'Tomasa',
'Tomeka',
'Tomi',
'Tomika',
'Tomiko',
'Tommie',
'Tommy',
'Tommye',
'Tomoko',
'Tona',
'Tonda',
'Tonette',
'Toni',
'Tonia',
'Tonie',
'Tonisha',
'Tonita',
'Tonja',
'Tony',
'Tonya',
'Tora',
'Tori',
'Torie',
'Torri',
'Torrie',
'Tory',
'Tosha',
'Toshia',
'Toshiko',
'Tova',
'Towanda',
'Toya',
'Tracee',
'Tracey',
'Traci',
'Tracie',
'Tracy',
'Tran',
'Trang',
'Travis',
'Treasa',
'Treena',
'Trena',
'Tresa',
'Tressa',
'Tressie',
'Treva',
'Tricia',
'Trina',
'Trinh',
'Trinidad',
'Trinity',
'Trish',
'Trisha',
'Trista',
'Tristan',
'Troy',
'Trudi',
'Trudie',
'Trudy',
'Trula',
'Tu',
'Tula',
'Tuyet',
'Twana',
'Twanda',
'Twanna',
'Twila',
'Twyla',
'Tyesha',
'Tyisha',
'Tyler',
'Tynisha',
'Tyra',
'Ula',
'Ulrike',
'Un',
'Una',
'Ursula',
'Usha',
'Ute',
'Vada',
'Val',
'Valarie',
'Valda',
'Valencia',
'Valene',
'Valentina',
'Valentine',
'Valeri',
'Valeria',
'Valerie',
'Valery',
'Vallie',
'Valorie',
'Valrie',
'Van',
'Vanda',
'Vanesa',
'Vanessa',
'Vanetta',
'Vania',
'Vanita',
'Vanna',
'Vannesa',
'Vannessa',
'Vashti',
'Vasiliki',
'Veda',
'Velda',
'Velia',
'Vella',
'Velma',
'Velva',
'Velvet',
'Vena',
'Venessa',
'Venetta',
'Venice',
'Venita',
'Vennie',
'Venus',
'Veola',
'Vera',
'Verda',
'Verdell',
'Verdie',
'Verena',
'Vergie',
'Verla',
'Verlene',
'Verlie',
'Verline',
'Verna',
'Vernell',
'Vernetta',
'Vernia',
'Vernice',
'Vernie',
'Vernita',
'Vernon',
'Verona',
'Veronica',
'Veronika',
'Veronique',
'Versie',
'Vertie',
'Vesta',
'Veta',
'Vi',
'Vicenta',
'Vickey',
'Vicki',
'Vickie',
'Vicky',
'Victor',
'Victoria',
'Victorina',
'Vida',
'Viki',
'Vikki',
'Vilma',
'Vina',
'Vincenza',
'Vinita',
'Vinnie',
'Viola',
'Violet',
'Violeta',
'Violette',
'Virgen',
'Virgie',
'Virgil',
'Virgina',
'Virginia',
'Vita',
'Viva',
'Vivan',
'Vivian',
'Viviana',
'Vivien',
'Vivienne',
'Voncile',
'Vonda',
'Vonnie',
'Wai',
'Walter',
'Waltraud',
'Wan',
'Wanda',
'Waneta',
'Wanetta',
'Wanita',
'Wava',
'Wei',
'Wen',
'Wendi',
'Wendie',
'Wendolyn',
'Wendy',
'Wenona',
'Wesley',
'Whitley',
'Whitney',
'Wilda',
'Wilhelmina',
'Wilhemina',
'Willa',
'Willena',
'Willene',
'Willetta',
'Willette',
'Willia',
'William',
'Willie',
'Williemae',
'Willodean',
'Willow',
'Wilma',
'Windy',
'Winifred',
'Winnie',
'Winnifred',
'Winona',
'Winter',
'Wonda',
'Wynell',
'Wynona',
'Xenia',
'Xiao',
'Xiomara',
'Xochitl',
'Xuan',
'Yadira',
'Yaeko',
'Yael',
'Yahaira',
'Yajaira',
'Yan',
'Yang',
'Yanira',
'Yasmin',
'Yasmine',
'Yasuko',
'Yee',
'Yelena',
'Yen',
'Yer',
'Yesenia',
'Yessenia',
'Yetta',
'Yevette',
'Yi',
'Ying',
'Yoko',
'Yolanda',
'Yolande',
'Yolando',
'Yolonda',
'Yon',
'Yong',
'Yoshie',
'Yoshiko',
'Youlanda',
'Young',
'Yu',
'Yuette',
'Yuk',
'Yuki',
'Yukiko',
'Yuko',
'Yulanda',
'Yun',
'Yung',
'Yuonne',
'Yuri',
'Yuriko',
'Yvette',
'Yvone',
'Yvonne',
'Zada',
'Zaida',
'Zana',
'Zandra',
'Zelda',
'Zella',
'Zelma',
'Zena',
'Zenaida',
'Zenia',
'Zenobia',
'Zetta',
'Zina',
'Zita',
'Zoe',
'Zofia',
'Zoila',
'Zola',
'Zona',
'Zonia',
'Zora',
'Zoraida',
'Zula',
'Zulema',
'Zulma'
);
},
'randomLast' : function() {
/* 1000 surnames is enough, right? yeah... better add more. ;p */
return either(
'Abbott',
'Acevedo',
'Acosta',
'Adams',
'Adkins',
'Aguilar',
'Aguirre',
'Alexander',
'Ali',
'Allen',
'Allison',
'Alvarado',
'Alvarez',
'Andersen',
'Anderson',
'Andrade',
'Andrews',
'Anthony',
'Archer',
'Arellano',
'Arias',
'Armstrong',
'Arnold',
'Arroyo',
'Ashley',
'Atkins',
'Atkinson',
'Austin',
'Avery',
'Avila',
'Ayala',
'Ayers',
'Bailey',
'Baird',
'Baker',
'Baldwin',
'Ball',
'Ballard',
'Banks',
'Barajas',
'Barber',
'Barker',
'Barnes',
'Barnett',
'Barr',
'Barrera',
'Barrett',
'Barron',
'Barry',
'Bartlett',
'Barton',
'Bass',
'Bates',
'Bauer',
'Bautista',
'Baxter',
'Bean',
'Beard',
'Beasley',
'Beck',
'Becker',
'Bell',
'Beltran',
'Bender',
'Benitez',
'Benjamin',
'Bennett',
'Benson',
'Bentley',
'Benton',
'Berg',
'Berger',
'Bernard',
'Berry',
'Best',
'Bird',
'Bishop',
'Black',
'Blackburn',
'Blackwell',
'Blair',
'Blake',
'Blanchard',
'Blankenship',
'Blevins',
'Bolton',
'Bond',
'Bonilla',
'Booker',
'Boone',
'Booth',
'Bowen',
'Bowers',
'Bowman',
'Boyd',
'Boyer',
'Boyle',
'Bradford',
'Bradley',
'Bradshaw',
'Brady',
'Branch',
'Brandt',
'Braun',
'Bray',
'Brennan',
'Brewer',
'Bridges',
'Briggs',
'Bright',
'Brock',
'Brooks',
'Brown',
'Browning',
'Bruce',
'Bryan',
'Bryant',
'Buchanan',
'Buck',
'Buckley',
'Bullock',
'Burch',
'Burgess',
'Burke',
'Burnett',
'Burns',
'Burton',
'Bush',
'Butler',
'Byrd',
'Cabrera',
'Cain',
'Calderon',
'Caldwell',
'Calhoun',
'Callahan',
'Camacho',
'Cameron',
'Campbell',
'Campos',
'Cannon',
'Cantrell',
'Cantu',
'Cardenas',
'Carey',
'Carlson',
'Carney',
'Carpenter',
'Carr',
'Carrillo',
'Carroll',
'Carson',
'Carter',
'Case',
'Casey',
'Castaneda',
'Castillo',
'Castro',
'Cervantes',
'Chambers',
'Chan',
'Chandler',
'Chaney',
'Chang',
'Chapman',
'Charles',
'Chase',
'Chavez',
'Chen',
'Cherry',
'Choi',
'Christensen',
'Christian',
'Chung',
'Church',
'Cisneros',
'Clark',
'Clarke',
'Clay',
'Clayton',
'Clements',
'Cline',
'Cobb',
'Cochran',
'Coffey',
'Cohen',
'Cole',
'Coleman',
'Collier',
'Collins',
'Colon',
'Combs',
'Compton',
'Conley',
'Conner',
'Conrad',
'Contreras',
'Conway',
'Cook',
'Cooke',
'Cooley',
'Cooper',
'Copeland',
'Cordova',
'Cortez',
'Costa',
'Cowan',
'Cox',
'Craig',
'Crane',
'Crawford',
'Crosby',
'Cross',
'Cruz',
'Cuevas',
'Cummings',
'Cunningham',
'Curry',
'Curtis',
'Dalton',
'Daniel',
'Daniels',
'Daugherty',
'Davenport',
'David',
'Davidson',
'Davies',
'Davila',
'Davis',
'Dawson',
'Day',
'Dean',
'Decker',
'Delacruz',
'Deleon',
'Delgado',
'Dennis',
'Diaz',
'Dickerson',
'Dickson',
'Dillon',
'Dixon',
'Dodson',
'Dominguez',
'Donaldson',
'Donovan',
'Dorsey',
'Dougherty',
'Douglas',
'Downs',
'Doyle',
'Drake',
'Duarte',
'Dudley',
'Duffy',
'Duke',
'Duncan',
'Dunlap',
'Dunn',
'Duran',
'Durham',
'Dyer',
'Eaton',
'Edwards',
'Elliott',
'Ellis',
'Ellison',
'English',
'Erickson',
'Escobar',
'Esparza',
'Espinoza',
'Estes',
'Estrada',
'Evans',
'Everett',
'Ewing',
'Farley',
'Farmer',
'Farrell',
'Faulkner',
'Ferguson',
'Fernandez',
'Ferrell',
'Fields',
'Figueroa',
'Finley',
'Fischer',
'Fisher',
'Fitzgerald',
'Fitzpatrick',
'Fleming',
'Fletcher',
'Flores',
'Flowers',
'Floyd',
'Flynn',
'Foley',
'Forbes',
'Ford',
'Foster',
'Fowler',
'Fox',
'Francis',
'Franco',
'Frank',
'Franklin',
'Frazier',
'Frederick',
'Freeman',
'French',
'Frey',
'Friedman',
'Fritz',
'Frost',
'Fry',
'Frye',
'Fuentes',
'Fuller',
'Gaines',
'Gallagher',
'Gallegos',
'Galloway',
'Galvan',
'Gamble',
'Garcia',
'Gardner',
'Garner',
'Garrett',
'Garrison',
'Garza',
'Gates',
'Gay',
'Gentry',
'George',
'Gibbs',
'Gibson',
'Gilbert',
'Giles',
'Gill',
'Gillespie',
'Gilmore',
'Glass',
'Glenn',
'Glover',
'Golden',
'Gomez',
'Gonzales',
'Gonzalez',
'Good',
'Goodman',
'Goodwin',
'Gordon',
'Gould',
'Graham',
'Grant',
'Graves',
'Gray',
'Green',
'Greene',
'Greer',
'Gregory',
'Griffin',
'Griffith',
'Grimes',
'Gross',
'Guerra',
'Guerrero',
'Gutierrez',
'Guzman',
'Haas',
'Hahn',
'Hale',
'Haley',
'Hall',
'Hamilton',
'Hammond',
'Hampton',
'Hancock',
'Haney',
'Hanna',
'Hansen',
'Hanson',
'Hardin',
'Harding',
'Hardy',
'Harmon',
'Harper',
'Harrell',
'Harrington',
'Harris',
'Harrison',
'Hart',
'Hartman',
'Harvey',
'Hatfield',
'Hawkins',
'Hayden',
'Hayes',
'Haynes',
'Hays',
'Heath',
'Hebert',
'Henderson',
'Hendricks',
'Hendrix',
'Henry',
'Hensley',
'Henson',
'Herman',
'Hernandez',
'Herrera',
'Herring',
'Hess',
'Hester',
'Hickman',
'Hicks',
'Higgins',
'Hill',
'Hines',
'Hinton',
'Ho',
'Hobbs',
'Hodge',
'Hodges',
'Hoffman',
'Hogan',
'Holden',
'Holder',
'Holland',
'Holloway',
'Holmes',
'Holt',
'Hood',
'Hooper',
'Hoover',
'Hopkins',
'Horn',
'Horne',
'Horton',
'House',
'Houston',
'Howard',
'Howe',
'Howell',
'Huang',
'Hubbard',
'Huber',
'Hudson',
'Huerta',
'Huff',
'Huffman',
'Hughes',
'Hull',
'Humphrey',
'Hunt',
'Hunter',
'Hurley',
'Hurst',
'Hutchinson',
'Huynh',
'Ibarra',
'Ingram',
'Irwin',
'Jackson',
'Jacobs',
'Jacobson',
'James',
'Jarvis',
'Jefferson',
'Jenkins',
'Jennings',
'Jensen',
'Jimenez',
'Johns',
'Johnson',
'Johnston',
'Jones',
'Jordan',
'Joseph',
'Joyce',
'Juarez',
'Kaiser',
'Kane',
'Kaufman',
'Keith',
'Keller',
'Kelley',
'Kelly',
'Kemp',
'Kennedy',
'Kent',
'Kerr',
'Key',
'Khan',
'Kidd',
'Kim',
'King',
'Kirby',
'Kirk',
'Klein',
'Kline',
'Knapp',
'Knight',
'Knox',
'Koch',
'Kramer',
'Krause',
'Krueger',
'Lam',
'Lamb',
'Lambert',
'Landry',
'Lane',
'Lang',
'Lara',
'Larsen',
'Larson',
'Lawrence',
'Lawson',
'Le',
'Leach',
'Leblanc',
'Lee',
'Leon',
'Leonard',
'Lester',
'Levine',
'Levy',
'Lewis',
'Li',
'Lin',
'Lindsey',
'Little',
'Liu',
'Livingston',
'Lloyd',
'Logan',
'Long',
'Lopez',
'Love',
'Lowe',
'Lowery',
'Lozano',
'Lucas',
'Lucero',
'Luna',
'Lutz',
'Lynch',
'Lynn',
'Lyons',
'Maas',
'MacDonald',
'Macias',
'Mack',
'Madden',
'Maddox',
'Mahoney',
'Maldonado',
'Malone',
'Mann',
'Manning',
'Marks',
'Marquez',
'Marsh',
'Marshall',
'Martin',
'Martinez',
'Mason',
'Massey',
'Mata',
'Mathews',
'Mathis',
'Matthews',
'Maxwell',
'May',
'Mayer',
'Maynard',
'Mayo',
'Mays',
'McBride',
'McCall',
'McCann',
'McCarthy',
'McCarty',
'McClain',
'McClure',
'McConnell',
'McCormick',
'McCoy',
'McCullough',
'McDaniel',
'McDonald',
'McDowell',
'McFarland',
'McGee',
'McGrath',
'McGuire',
'McKay',
'McKee',
'McKenzie',
'McKinney',
'McKnight',
'McLaughlin',
'McLean',
'McMahon',
'McMillan',
'McNeil',
'McPherson',
'Meadows',
'Medina',
'Mejia',
'Melendez',
'Melton',
'Mendez',
'Mendoza',
'Mercado',
'Mercer',
'Merritt',
'Meyer',
'Meyers',
'Meza',
'Michael',
'Middleton',
'Miles',
'Miller',
'Mills',
'Miranda',
'Mitchell',
'Molina',
'Monroe',
'Montes',
'Montgomery',
'Montoya',
'Moody',
'Moon',
'Mooney',
'Moore',
'Mora',
'Morales',
'Moran',
'Moreno',
'Morgan',
'Morris',
'Morrison',
'Morrow',
'Morse',
'Morton',
'Moses',
'Mosley',
'Moss',
'Moyer',
'Mueller',
'Mullen',
'Mullins',
'Munoz',
'Murillo',
'Murphy',
'Murray',
'Myers',
'Nash',
'Navarro',
'Neal',
'Nelson',
'Newman',
'Newton',
'Nguyen',
'Nichols',
'Nicholson',
'Nielsen',
'Nixon',
'Noble',
'Nolan',
'Norman',
'Norris',
'Norton',
'Novak',
'Nunez',
'Obrien',
'Ochoa',
'Oconnell',
'Oconnor',
'Odom',
'Odonnell',
'Oliver',
'Olsen',
'Olson',
'Oneal',
'Oneill',
'Orozco',
'Orr',
'Ortega',
'Ortiz',
'Osborn',
'Osborne',
'Owen',
'Owens',
'Pace',
'Pacheco',
'Padilla',
'Page',
'Palmer',
'Park',
'Parker',
'Parks',
'Parrish',
'Parsons',
'Patel',
'Patrick',
'Patterson',
'Patton',
'Paul',
'Payne',
'Pearson',
'Peay',
'Peck',
'Pena',
'Pennington',
'Perez',
'Perkins',
'Perry',
'Peters',
'Petersen',
'Peterson',
'Petty',
'Pham',
'Phelps',
'Phillips',
'Pierce',
'Pineda',
'Pittman',
'Pitts',
'Pollard',
'Ponce',
'Poole',
'Pope',
'Porter',
'Potter',
'Potts',
'Powell',
'Powers',
'Pratt',
'Preston',
'Price',
'Prince',
'Proctor',
'Pruitt',
'Pugh',
'Quinn',
'Ramirez',
'Ramos',
'Ramsey',
'Randall',
'Randolph',
'Rangel',
'Rasmussen',
'Ray',
'Raymond',
'Reed',
'Reese',
'Reeves',
'Reid',
'Reilly',
'Reyes',
'Reynolds',
'Rhodes',
'Rice',
'Rich',
'Richard',
'Richards',
'Richardson',
'Richmond',
'Riddle',
'Riggs',
'Riley',
'Rios',
'Ritter',
'Rivas',
'Rivera',
'Rivers',
'Roach',
'Robbins',
'Roberson',
'Roberts',
'Robertson',
'Robinson',
'Robles',
'Rocha',
'Rodgers',
'Rodriguez',
'Rogers',
'Rojas',
'Rollins',
'Roman',
'Romero',
'Rosales',
'Rosario',
'Rose',
'Ross',
'Roth',
'Rowe',
'Rowland',
'Roy',
'Rubio',
'Ruiz',
'Rush',
'Russell',
'Russo',
'Ryan',
'Salas',
'Salazar',
'Salinas',
'Sampson',
'Sanchez',
'Sanders',
'Sandoval',
'Sanford',
'Santana',
'Santiago',
'Santos',
'Saunders',
'Savage',
'Sawyer',
'Schaefer',
'Schmidt',
'Schmitt',
'Schneider',
'Schroeder',
'Schultz',
'Schwartz',
'Scott',
'Sellers',
'Serrano',
'Sexton',
'Shaffer',
'Shah',
'Shannon',
'Sharp',
'Shaw',
'Shea',
'Shelton',
'Shepard',
'Shepherd',
'Sheppard',
'Sherman',
'Shields',
'Short',
'Silva',
'Simmons',
'Simon',
'Simpson',
'Sims',
'Singh',
'Singleton',
'Skinner',
'Sloan',
'Small',
'Smith',
'Snow',
'Snyder',
'Solis',
'Solomon',
'Sosa',
'Soto',
'Sparks',
'Spears',
'Spence',
'Spencer',
'Stafford',
'Stanley',
'Stanton',
'Stark',
'Steele',
'Stein',
'Stephens',
'Stephenson',
'Stevens',
'Stevenson',
'Stewart',
'Stokes',
'Stone',
'Stout',
'Strickland',
'Strong',
'Stuart',
'Suarez',
'Sullivan',
'Summers',
'Sutton',
'Swanson',
'Sweeney',
'Tanner',
'Tapia',
'Tate',
'Taylor',
'Terrell',
'Terry',
'Thomas',
'Thompson',
'Thornton',
'Todd',
'Torres',
'Townsend',
'Tran',
'Travis',
'Trevino',
'Trujillo',
'Tucker',
'Turner',
'Tyler',
'Underwood',
'Valdez',
'Valencia',
'Valentine',
'Valenzuela',
'Vance',
'Vang',
'Vargas',
'Vasquez',
'Vaughan',
'Vaughn',
'Vazquez',
'Vega',
'Velasquez',
'Velazquez',
'Velez',
'Villa',
'Villanueva',
'Villarreal',
'Villegas',
'Vincent',
'Wade',
'Wagner',
'Walker',
'Wall',
'Wallace',
'Waller',
'Walls',
'Walsh',
'Walter',
'Walters',
'Walton',
'Wang',
'Ward',
'Ware',
'Warner',
'Warren',
'Washington',
'Waters',
'Watkins',
'Watson',
'Watts',
'Weaver',
'Webb',
'Weber',
'Webster',
'Weeks',
'Weiss',
'Welch',
'Wells',
'Werner',
'West',
'Wheeler',
'Whitaker',
'White',
'Whitehead',
'Whitney',
'Wiggins',
'Wilcox',
'Wiley',
'Wilkerson',
'Wilkins',
'Wilkinson',
'Williams',
'Williamson',
'Willis',
'Wilson',
'Winters',
'Wise',
'Wolf',
'Wolfe',
'Wong',
'Wood',
'Woodard',
'Woods',
'Woodward',
'Wright',
'Wu',
'Wyatt',
'Yang',
'Yates',
'Yoder',
'York',
'Young',
'Yu',
'Zamora',
'Zavala',
'Zhang',
'Zimmerman',
'Zuniga'
);
},
}>>