Files
To-Wander-Theoma/story.ni
Rakeela Windrider c2d175165a Inventory v0.01
Kistaro gave me some code to provide an inventory prototype.
2025-10-02 04:04:01 +00:00

2561 lines
206 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"To Wander Theoma" by Rakeela Windrider and Kistaro Windrider
Release along with a "Bisquixe" interpreter.
Use DICT_WORD_SIZE of 35.
Include Simple Multimedia Effects by Mathbrush.
Include Basic Screen Effects by Emily Short.
When play begins: now right alignment depth is 20.
The block sleeping rule is not listed in the check sleeping rulebook.
A link is a kind of thing. A link has some text called a Displayname. A link has some text called the reply.
A person has an indexed text called a full name. Understand the full name property as describing a person.
A person has an indexed text called a short name. Understand the short name property as describing a person.
Understand the printed name property as describing a thing.
A species is a kind of value. A person has a species. The species are vrash, vashael, kalla, vohntrai, izerah, veserus, myrskor, myrghon, swaivshon, tesam, esseri, chakocha, phoenix, and undefined.
The list of random dragon species is always {vrash, vashael, kalla, vohntrai, izerah, veserus, myrskor, myrghon, swaivshon}.
A city record is a kind of value. The city records are defined by the Table of Cities. The current city is a city record that varies. The current city is initially Ethriel.
[Ethriel, Edge of Paradise, Kylon, Galrien, Nowhere, Norvsiik, Comptichrak, Myrhigh, Korltian, Akaveach, Whinge, Kantin, Rhaltin, Dartroveiln, Kravakaneke, Woodwall, Kreskechrak, Nerevehn, Asere, Mosdenechrak, Zyrine, Inrakaveach, Rhakanin, Suvkeyanin, Hiakoreska, Corvuseach, Hyvaline, Wyranine, Vishen, Ghost Farm, Mivsiik, Baunt, Fishergon's Retreat, Stone River, Sea's Bounty, Viviveyrm, Sovesviik, Xanasal, Raldrani, Moriskiik, Ediveyrm, Izaeyaranth, Polser, Mania, Ztornaranth, Borochrak, Iron Hills, Shraneyrm, Isoss, Shibanyet, Korjek, Sorjek, Wild Edge, Norickhum, Phoenix Sea, Theoma's Limit, Zyaket, Inevrae, Iyanti, Mundanity, Rodrimor, Onayraye, Uskadi, Skrend, Oriaryo, Tearvek, Irovek, Kyvsiveiln, Memory of Esseri, Memory of Tesam, and Memory of Chakocha.]
Amenities are a kind of value. The amenities are bathhouses, theatres, cardhouses, master artists, museums, brothels, and bowling alleys.
Restaurants are a kind of value. The restaurants are Taigahane's, Korloave's Greenhouse, Cakeshapes, and S&S Flatbreads.
A culture name is a kind of value. The culture names are Kelkaithian, Tachamundi, Kanjamundi, and Memorian. [Niazion is a Kanjamundi culture. Reytas is a Kelkaithian culture. Ormeri is a Tachamundi culture.]
Table of Cities
City Record Local Amenities Special Amenity Culture
Ethriel {bathhouses, theatres, cardhouses, master artists, bowling alleys} "Archive of Lost Things" Kelkaithian
A home in Ethriel is a truth state that varies. A home in Ethriel is usually true.
A job is a kind of value. The jobs are merchantgon, servicegon, travelgon, laborgon, wildgon, agrigon, craftsgon, and unemployed. Every person has a job. The job of a person is usually unemployed. Understand the job property as describing a person.
A career is a kind of value. A person has careers. The careers are lumbergon, huntgon, pottergon, haulergon, smithgon, farmgon, authorgon, philosophygon, sex pest, charitygon, rangergon, physical dissolutionist, mental dissolutionist, holygon, lutragon, petgon, musicgon, flygon, sportsgon, and kaimagon.
A color is a kind of value. The colors are green, crimson, brown, blue, grey, black, pink, white, bronze, gold, and silver.
A marking pattern is a kind of value. A person has a marking pattern. The marking patterns are stripes, speckles, spots, blotches, socks, and mask.
A person has a number called age.
A person has a color called a dominant color. The dominant color of a person is usually green.
A person has a color called a minor color. The minor color of a person is usually green.
A person has a marking pattern. The marking pattern of a person is usually stripes.
A personal interest is a kind of value. A person has personal interests. The personal interests are economics, art, playing kaima, vegetarianism, carnivory, fine foods, books, religion, sex, necromancy, plants, sports, technology, and accumulating wealth.
A person has a personal interest called first interest.
A person has a personal interest called second interest.
The current NPC variable is a person that varies.
A person has a number called sleepinghour. Sleepinghour is usually 3.
A person has a number called workinghour. Workinghour is usually 1.
A person has a room called a preferred hangout.
A person has a number called Hungernum.
An aquatic semblance is a kind of value. The aquatic semblances are fish-like, orca-like, dolphin-like, vrash-passing, and not fishy. A person has an aquatic semblance. The aquatic semblance of a person is usually not fishy.
The list of veserus aquatic semblances is always {fish-like, orca-like, dolphin-like, vrash-passing}.
An alloace spectrum is a kind of value. The alloace spectrums are allosexual, sex-positive asexual, and sex-repulsed asexual. A person has an alloace spectrum. The alloace spectrum of a person is usually sex-repulsed asexual.
A genericNPC is a kind of person.
Displaying sheet is an action applying to nothing. Understand "sheet" as displaying sheet. Instead of displaying sheet:
say "This command has mostly not yet been implemented.";
tabulate the skills of the player;
say "Your top three skills are: [line break][row 1 in Table of Extracted Skills][line break][row 2 in Table of Extracted Skills][line break][row 3 in Table of Extracted Skills]"
A person has a number called strength. The strength of a person is usually 1.
A conveyance is a kind of thing. A person has a conveyance. The conveyances are defined by the Table of Conveyance Definitions. The conveyance of a person is usually a backpack.
Table of Conveyance Definitions
Conveyance Bulk Limit Strength Requirement Blocks Flight
a pfod 10 1 False
your hands 20 1 False
a backpack 40 2 False
a greatpack 70 4 False
a flightpack 90 5 False
an izerah cart 400 10 True
a myrghon gearwagon 2000 1 True
a wagon 2000 35 True
a flying wagon 2000 2 False
a grandwagon 4000 55 True
a grand flying wagon 6000 5 False
Instead of taking inventory:
let currentconveyance be the conveyance of the player;
say "You are using [a currentconveyance] for carrying capacity. It has [the bulk limit of currentconveyance] units of carrying capacity.[Canyouflywiththis]";
say "Debug. Inventory not yet implemented.";
To say canyouflywiththis:
let conveyance be the conveyance of the player;
If the Blocks Flight of conveyance is False and the player is not kalla and the player is not vohntrai and the player is not myrghon and the player is not myrskor:
say " This is a flight-capable shipping method."
A tangible is a kind of thing. A tangible has a number called the bulk.
To decide which number is the load of (P - a person):
let result be 0;
repeat with T running through the list of tangibles held by P:
now result is result plus the bulk of T;
Decide on result.
Check taking a tangible:
Let X be a tangible;
Let X be the noun;
let C be the conveyance of the player;
Let B be the bulk of X;
If the load of the player plus B is greater than the carrying capacity of C:
say "You're carrying too much stuff already. You'll have to drop something or get a bigger conveyance.";
Stop the action.
Displaying skillbook is an action applying to nothing. Understand "skillbook" as displaying skillbook. Instead of displaying skillbook:
tabulate the skills of the player;
repeat through Table of Extracted Skills:
If Skill entry is sex appeal or Skill entry is erotic art:
next;
Otherwise:
say "[Skill entry]: [Skill Level entry], with [Extra XP entry] additional XP earned."
Table of Extracted Skills
Skill Skill Level Extra XP
a skill a number a number
with 30 blank rows
To tabulate the skills of (P - a person):
blank out the whole of the Table of Extracted Skills;
repeat with X running through the list of XP counters tallying P:
choose a blank row in the Table of Extracted Skills;
now skill entry is the associated skill of X;
now skill level entry is the level of X;
now Extra XP entry is the XP of X;
sort the Table of Extracted Skills in skill order;
sort the Table of Extracted Skills in reverse Extra XP order;
sort the Table of Extracted Skills in reverse Skill Level order.
A bathhouse is a kind of room.
A cardhouse is a kind of room.
A person has a number called a securityNum. The securityNum of a person is usually 7.
A person has a number called an entertainNum. The entertainNum of a person is usually 7.
A person has a number called a flightyRel. The flightyRel of a person is usually 1.
A person has a number called a firmRel. The firmRel of a person is usually 1.
A person has a number called a Reserve. The Reserve of a person is usually 1.
A person has a number called a Libido. The Libido of a person is usually -1.
A person has a number called a maxGeomInterface. The maxGeomInterface of a person is usually 12.
A person has a number called a geomInterface. The geomInterface of a person is usually 12.
A person has a truth state called IsAGhost. IsAGhost is usually false.
A person has a number called TheomaGender.
A person has a number called TheomaSex.
A person has a truth state called PostTFTrans. PostTFTrans is usually false.
A person has a number called fantasizeCooldown. The fantasizeCooldown of a person is usually 0.
A person has a number called theatreCooldown. The theatreCooldown of a person is usually 0.
A person has a number called cardhouseCooldown. The cardhouseCooldown of a person is usually 0.
A person has a number called eatingCooldown. The eatingCooldown of a person is usually 0.
DateDayKelkaith is a number that varies. DateDayKelkaith is usually 25.
DateMonthKelkaith is a number that varies. DateMonthKelkaith is usually 3.
DateDayTachamund is a number that varies. DateDayTachamund is usually 11.
DateMonthTachamund is a number that varies. DateMonthTachamund is usually 4.
DateSeason is a number that varies. DateSeason is usually 2.
DateSeasonDay is a number that varies. DateSeasonDay is usually 4.
DateYear is a number that varies. DateYear is usually 1227.
DateWeekday is a number that varies. DateWeekday is usually 4.
to say Current Weekday:
If DateWeekday is 1:
say "Niesday";
If DateWeekday is 2:
say "Tinsday";
If DateWeekday is 3:
say "Gwensday";
If DateWeekday is 4:
say "Varsday";
If DateWeekday is 5:
say "Ryesday";
If DateWeekday is 6:
say "Pretsday";
If DateWeekday is 7:
say "Skansday".
to say Kelkaithian Month:
If DateMonthKelkaith is 1:
say "Frigidae";
Otherwise if DateMonthKelkaith is 2:
say "Vesvor";
Otherwise if DateMonthKelkaith is 3:
say "Inesqua";
Otherwise if DateMonthKelkaith is 4:
say "Spring Celebration";
Otherwise if DateMonthKelkaith is 5:
say "Kinish";
Otherwise if DateMonthKelkaith is 6:
say "Chyran";
Otherwise if DateMonthKelkaith is 7:
say "Kelit";
Otherwise if DateMonthKelkaith is 8:
say "Emrak";
Otherwise if DateMonthKelkaith is 9:
say "Autumn Celebration";
Otherwise if DateMonthKelkaith is 10:
say "Skelundy";
to say Kelkaithian Calendar Date:
say "[Kelkaithian Month] [DateDayKelkaith], [DateYear] or [DateYear]-[DateMonthKelkaith]-[DateDayKelkaith]."
To say Tachamundi Month:
If DateMonthTachamund is 1:
say "Firstmonth";
If DateMonthTachamund is 2:
say "Secondmonth";
If DateMonthTachamund is 3:
say "Thirdmonth";
If DateMonthTachamund is 4:
say "Fourthmonth";
If DateMonthTachamund is 5:
say "Fifthmonth";
If DateMonthTachamund is 6:
say "Sixthmonth";
If DateMonthTachamund is 7:
say "Seventhmonth";
If DateMonthTachamund is 8:
say "Eighthmonth";
If DateMonthTachamund is 9:
say "Ninthmonth";
If DateMonthTachamund is 10:
say "Tenthmonth";
If DateMonthTachamund is 11:
say "Eleventhmonth";
If DateMonthTachamund is 12:
say "Twelfthmonth";
If DateMonthTachamund is 13:
say "Thirteenthmonth";
To say Tachamundi Calendar Date:
say "[Tachamundi Month] [DateDayTachamund], [DateYear] or [DateYear]-[DateMonthTachamund]-[DateDayTachamund]."
To say The Current Season:
If DateSeason is 1:
say "Winter";
If DateSeason is 2:
say "Spring";
If DateSeason is 3:
say "Summer";
If DateSeason is 4:
say "Autumn".
To say Seasonal Calendar Date:
say "It is day [DateSeasonDay] of [The Current Season]."
Displaying the calendar is an action applying to nothing. Understand "calendar" as displaying the calendar. Instead of displaying the calendar:
say "As Kelkaith and Reytas reckon it, is is [Kelkaithian Calendar Date]";
say "As Tachamund and Kanjamund reckon it, it is [Tachamundi Calendar Date]";
say "In the calendar handed down by the land gods, it is [Seasonal Calendar Date]";
say "In all three calendars, it is a [Current Weekday].";
say "If you would like to change the calender listing on the command prompt, type in 'calendar toggle' without the quotes."
Calendar Setting is a number that varies. Calendar Setting is usually 1.
Calendar toggling is an action applying to nothing. Understand "calendar toggle" or "calendartoggle" as calendar toggling. Instead of calendar toggling:
If Calendar Setting is less than 3:
Now Calendar Setting is Calendar Setting plus 1;
Otherwise:
Now Calendar Setting is 1.
TimekeepingVar is a number that varies.
instead of waiting:
follow the turnpass rule;
TurnsCount is a number that varies. TurnsCount is usually 0.
Every turn:
now TimekeepingVar is remainder after dividing TurnsCount by 4;
A person has a number called TirednessVar. TirednessVar is usually 1.
This is the turnpass rule:
Now TurnsCount is TurnsCount + 1;
let Tiredness be the TirednessVar of the player;
If Tiredness < 3:
do nothing;
Otherwise if Tiredness is 3:
If the IsAGhost of the player is true:
do nothing;
Otherwise if the species of the player is izerah:
say "You could sleep now. You don't need to yet.";
Otherwise:
say "You really badly want to sleep now.";
Otherwise if Tiredness is 4:
If the species of the player is izerah:
say "You could sleep now. You don't need to yet.";
Otherwise:
say "You're really questioning the sanity of your decision to skip a night of sleep.";
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Otherwise if Tiredness is 5:
If the species of the player is izerah:
say "You could sleep now. You don't need to yet.";
Otherwise:
say "You're really questioning the sanity of your decision to skip a night of sleep.";
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Otherwise if Tiredness is 6:
If the species of the player is izerah:
say "You could sleep now. You don't need to yet.";
Otherwise:
say "You're really questioning the sanity of your decision to skip a night of sleep.";
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Otherwise if Tiredness is 7:
If the species of the player is izerah:
say "You're running into the limits of the izerah ability to ignore the need for sleep. You really want to go to bed.";
Otherwise:
say "You're really questioning the sanity of your decision to skip a night of sleep.";
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Otherwise if Tiredness > 7:
say "You're really running on fumes now. The world is getting noisy and harder to perceive as your brain struggles with your lack of sleep.";
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Otherwise if Tiredness > 11:
say "Your body is starting to hurt all over, and you feel sick. You've been awake long enough to start dying of it. You're suffering spellwrack, and what a waste of necromantic potential.";
If a random chance of 1 in 2 succeeds:
now geomInterface of the player is geomInterface of the player - 1;
If a random chance of 1 in 2 succeeds:
follow the zombiesleep rule;
Now the TirednessVar of the player is the TirednessVar of the player + 1;
If the IsAGhost of the player is true:
now the TirednessVar of the player is 3;
If the entertainNum of the player > 10:
now the entertainNum of the player is 10;
If the entertainNum of the player < 0:
now the entertainNum of the player is 0;
let the boredom chance be 12 - the entertainNum of the player;
If a random chance of 1 in boredom chance succeeds:
If the entertainNum of the player > 8:
say "You feel your elation fading.";
now the entertainNum of the player is the entertainNum of the player - 1;
Otherwise if the entertainNum of the player > 7:
say "You're starting to feel a bit bored.";
now the entertainNum of the player is the entertainNum of the player - 1;
Otherwise if the entertainNum of the player > 5:
say "You feel like it's been far too long since you did something fun.";
now the entertainNum of the player is the entertainNum of the player - 1;
Otherwise if the entertainNum of the player > 3:
say "You're starting to feel depressed.";
now the entertainNum of the player is the entertainNum of the player - 1;
Otherwise if the entertainNum of the player > 0:
say "Immortality is a curse, after all.";
now the entertainNum of the player is the entertainNum of the player - 1;
Otherwise:
say "Every passing hour fills you with horror at the prospect of living in an eternity as dull as this one.";
now the securityNum of the player is the securityNum of the player - 1;
If the eatingCooldown of the player > 0:
now the eatingCooldown of the player is the eatingCooldown of the player - 1;
Let Undeath Check be maxGeomInterface of the player - geomInterface of the player;
If Undeath Check is at most 12:
Now the hungerNum of the player is the hungerNum of the player + 1;
If the hungerNum of the player > 60:
say "You are in food deficit by over fifteen days. The emotional difficulty of the fast has maxed out and even receded, but it's starting to cause wasting to afflict your body even if you don't eat compulsively. Your innate magic is sustaining your body as you continue to act without natural fuel, but this is a slow-burn exercise of innate necromancy, and it will surely kill you.";
If a random chance of 1 in 3 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
say "You really miss food. Life is greyer and duller without it.";
If a random chance of 1 in 29 succeeds:
say "You are no longer capable of fasting. You rush out to acquire food and binge on something easy and quick from a street cart or grocery store. After that, you feel quite sick to your stomach, and cripplingly weak. The attack passes slowly, leaving some lingering pain behind.";
now the hungerNum of the player is the hungerNum of the player - 8;
now eatingCooldown of the player is 1;
now the geomInterface of the player is the geomInterface of the player - 1;
Otherwise if a random chance of 1 in 5 succeeds:
say "Your pain levels surge as spellwrack hits you. Your body becomes sicker and more fatigued. Down this path is an uncontrolled slide into undeath. Are you a good enough necromancer to survive that? Do you really want to be undead? Maybe you should eat something.";
now the geomInterface of the player is the geomInterface of the player - 1;
Otherwise if the hungerNum of the player > 44:
say "You have accumulated an eleven day deficit of nutrients. This is becoming an impressive feat of self-control. However, it's utterly miserable and in fact rather dangerous. If you eat compulsively at this point, you'll suffer spellwrack.";
If a random chance of 1 in 2 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
say "You really miss food. Life is greyer and duller without it.";
If a random chance of 1 in 2 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
say "Whether or not you could be eating, the prolonged lack of food is starting to add desperation to your emotional range.";
If a random chance of 1 in 10 succeeds:
say "You are no longer capable of fasting. You rush out to acquire food and binge on something easy and quick from a street cart or grocery store. After that, you feel quite sick to your stomach, and cripplingly weak. The attack passes slowly, leaving some lingering pain behind.";
now the hungerNum of the player is the hungerNum of the player - 8;
now eatingCooldown of the player is 1;
now the geomInterface of the player is the geomInterface of the player - 1;
Otherwise if the hungerNum of the player > 16:
say "You have accrued a four day food deficit. Prolonged hunger is starting to negatively affect your morale. This isn't physically unhealthy yet, but it's becoming emotionally unhealthy. Food wasn't made as an enemy of dragonkind; enjoying it will not cost you an iota of immortality. Eat something!";
If a random chance of 1 in 3 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
say "You really miss food. Life is greyer and duller without it.";
If a random chance of 1 in 4 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
say "Whether or not you could be eating, the prolonged lack of food is starting to add desperation to your emotional range.";
If a random chance of 1 in 8 succeeds:
say "You are no longer capable of fasting. You rush out to acquire food and binge on something easy and quick from a street cart or grocery store.";
now the hungerNum of the player is the hungerNum of the player - 8;
now eatingCooldown of the player is 1;
Otherwise if the hungerNum of the player > 4:
say "You have over a day of food deficit. You can go a few days without food with no ill effect, but if you were delaying to have the best effect out of your next meal, you're hungry enough to have hunger as a spice. You're hungry enough to regularly remember that you're hungry...";
Otherwise:
now the hungerNum of the player is 3;
If the securityNum of the player > 10:
now the securitynum of the player is 10;
If a random chance of 1 in 30 succeeds:
say "You feel nervous for no obvious reason.";
now the securityNum of the player is the SecurityNum of the player - 1;
If the securityNum of the player < 10 and a random chance of 1 in 50 succeeds:
say "You sense Fate's blessing upon you, soothing your insecurities.";
now the securityNum of the player is the SecurityNum of the player + 1;
If the securityNum of the player < 0:
now the securitynum of the player is 0;
If the securityNum of the player is 0:
say "You are plagued by a sense that everything you attempt is doomed.";
If the entertainNum of the player > 0:
now the entertainNum of the player is the entertainNum of the player - 1;
say "So beset are you by anxiety that you're questioning the value of immortality. Do you really want to feel this way forever?";
If the entertainNum of the player is 0:
If a random chance of 1 in 2 succeeds:
say "Madness claws at your essence, a desperate desire to leave this world fracturing your connection to Theoma as surely as any necromantic spell.";
now geomInterface of the player is geomInterface of the player - 1;
If the securityNum of the player > 0 and a random chance of 1 in 100 succeeds:
say "[daydreaming]";
Now the entertainNum of the player is the entertainNum of the player + 1;
If TimekeepingVar is 3:
Now DateDayKelkaith is DateDayKelkaith + 1;
Now DateDayTachamund is DateDayTachamund + 1;
Now DateSeasonDay is DateSeasonDay + 1;
Now DateWeekday is DateWeekday + 1;
If DateWeekday is 8:
Now DateWeekday is 1;
If DateMonthKelkaith is 4:
If DateDayKelkaith is 8:
Now DateDayKelkaith is 1;
Now DateMonthKelkaith is 5;
Otherwise if DateMonthKelkaith is 9:
If DateDayKelkaith is 8:
Now DateDayKelkaith is 1;
Now DateMonthKelkaith is 10;
Otherwise if DateMonthKelkaith is 11:
Now DateMonthKelkaith is 1;
Now DateYear is DateYear + 1;
Otherwise:
If DateDayKelkaith is 36:
Now DateDayKelkaith is 1;
Now DateMonthKelkaith is DateMonthKelkaith + 1;
now the geomInterface of the player is geomInterface of the player + 1;
If DateDayTachamund is 29:
Now DateDayTachamund is 1;
Now DateMonthTachamund is DateMonthTachamund + 1;
If DateMonthTachamund is 14:
Now DateMonthTachamund is 1;
If geomInterface of the player > maxGeomInterface of the player:
now geomInterface of the player is maxGeomInterface of the player;
If geomInterface of the player < 1:
If the IsAGhost of the player is false:
end the story saying "Unfortunately, these are your final hours. Did you expect this? As your occulted geomantic interface splinters into small fragments, you become aware of an infinite blue void studded with stars. As you fall away from Theoma, among your last thoughts before nepenthe sweeps you is that you have died of poorly controlled necromantic wasting.";
If the IsAGhost of the player is true:
now geomInterface of the player is maxGeomInterface of the player;
If the fantasizeCooldown of the player > 0:
now the fantasizeCooldown of the player is the fantasizeCooldown of the player - 1;
If the theatreCooldown of the player > 0:
now the theatreCooldown of the player is the theatreCooldown of the player - 1;
If the cardhouseCooldown of the player > 0:
now the cardhouseCooldown of the player is the cardhouseCooldown of the player - 1;
Let L be the list of genericNPCs;
Repeat with X running through L:
If the sleepinghour of X is TimekeepingVar:
now X is nowhere;
Otherwise if the workinghour of X is TimekeepingVar and today is not a weekend:
now X is nowhere;
Otherwise:
Let Y be the preferred hangout of X;
move X to Y.
To decide whether today is a weekend:
If DateWeekday > 5:
yes;
Otherwise:
no.
To decide whether today is not a weekend:
If today is a weekend:
yes;
Otherwise:
no.
This is the zombiesleep rule:
say "You can't help yourself any longer. You wander off, semi-conscious, and find somewhere to fall asleep.";
try silently going home;
try silently sleeping;
To say Time Of Day:
If TimekeepingVar is 0:
say "Morning";
If TimekeepingVar is 1:
say "Afternoon";
If TimekeepingVar is 2:
say "Evening";
If TimekeepingVar is 3:
say "Night";
A personallink is a kind of link. Personallinks are defined by the Table of All Personallinks.
To say personallink (nextpersonallink - a personallink):
hyperlink "[Displayname of nextPersonallink]" as "zzxvm [nextPersonallink]"
Understand "zzxvm [any personallink]" as personal linking. Personal linking is an action applying to one thing.
Carry out personal linking:
if the noun is a personallink listed in the Table of All Personallinks:
say "[reply entry]";
otherwise:
say "[bold type]BUG:[roman type] Tried to carry out personal linking with [italic type][the noun][roman type] but that does not appear to be a personal link:";
Table of All Personallinks
Personallink Displayname reply
check sheet "sheet" "[display sheet]"
check calendar "calendar" "[display calendar]"
check skillbook "skillbook" "[display skillbook]"
To say display sheet:
try displaying sheet.
To say display calendar:
try displaying the calendar.
To say display skillbook:
try displaying skillbook.
Name your Character is a room. "What is your name? Names in Theoma mostly take the form of X the Y, where X is the name and Y is a title or descriptor that applies to your character. Alternatively, some dragons are named X of Z, where X is still their name and Z is a theome or city with special significance to the individual. If your title is a profession, remember the -gon suffix!"
When play begins:
now the dominant color of the player is a random color;
now the minor color of the player is a random color;
while the minor color of the player is the dominant color of the player:
now the minor color of player is a random color;
now the marking pattern of the player is a random marking pattern;
now the species of the player is chakocha;
now the TheomaGender of the player is a random number between 1 and 3;
now the TheomaSex of the player is a random number between 1 and 3;
now the age of the player is 100;
now every personallink is held by the player;
now the command prompt is "What is your name? > ".
Table of Fancy Status
left central right
"[Current Time and Date]" "[Location]" "Pain: [Pain Indicator]"
"Mood: [Boredom Indicator]" "Confidence: [Security Indicator]" "Hunger: [Hunger Indicator]"
To say Boredom Indicator:
If entertainNum of the player > 8:
say "Elated";
Otherwise if entertainNum of the player > 6:
say "Calm";
Otherwise if entertainNum of the player > 4:
say "Bored";
Otherwise if entertainNum of the player > 2:
say "Depressed";
Otherwise:
say "Cursed";
To say Security Indicator:
If securityNum of the player > 8:
say "Invulnerable";
Otherwise if securityNum of the player > 6:
say "Comfortable";
Otherwise if securityNum of the player > 4:
say "Uncertain";
Otherwise if securityNum of the player > 2:
say "Anxious";
Otherwise:
say "Broken";
To say Pain Indicator:
Let PainCount be 0;
If entertainNum of the player < 3:
Now PainCount is PainCount + (3 - entertainNum of the player);
If securityNum of the player < 4:
Now PainCount is PainCount + 1;
If securityNum of the player < 2:
Now PainCount is PainCount + 1;
If securityNum of the player is 0:
Now PainCount is PainCount + 2;
If maxGeomInterface of the player > geomInterface of the player:
Now PainCount is PainCount + (maxGeomInterface of the player - geomInterface of the player);
If PainCount is 0:
say "None";
If PainCount is 1:
say "None?";
If PainCount is 2:
say "Mild";
If PainCount is 3:
say "Aching";
If PainCount is 4:
say "Wearying";
If PainCount is 5:
say "Exhausting";
If PainCount is 6:
say "Grimacing";
If PainCount is 7:
say "Stabbing";
If PainCount is 8:
say "Great";
If PainCount is 9:
say "Tremendous";
If PainCount is 10:
say "Crippling";
If PainCount is 11:
say "Dying";
If PainCount > 11:
say "Undeath";
To say Hunger Indicator:
If hungerNum of the player < 1:
say "Full";
Otherwise if hungerNum of the player < 4:
say "Mild";
Otherwise if hungerNum of the player < 16:
say "Great";
Otherwise if hungerNum of the player < 44:
say "Extreme";
Otherwise:
say "Starving";
Rule for constructing the status line:
fill status bar with Table of Fancy Status;
rule succeeds.
To decide whether collecting names:
if the command prompt is "What is your name? > ", yes;
no.
To say Current Time and Date:
If Calendar Setting is 1:
say "[Time of Day], [DateYear]-[DateMonthKelkaith]-[DateDayKelkaith]";
If Calendar Setting is 2:
say "[Time of Day], [DateYear]-[DateMonthTachamund]-[DateDayTachamund]";
If Calendar Setting is 3:
say "[Time of Day], [The Current Season] [DateSeasonDay], [DateYear]";
After reading a command when collecting names:
now the full name of the player is the player's command;
now the short name of the player is word number 1 in the player's command;
now the command prompt is "[Current Time and Date]>";
say "Hi, [short name of the player]![paragraph break]";
say "[banner text]";
playerport to Your Home in Ethriel;
reject the player's command.
To say veserus body description:
say "You have a[if aquatic semblance of the player is orca-like]n[end if] [aquatic semblance of the player][if aquatic semblance of the player is not vrash-passing] yet draconic[end if] face on a body that is in general that of a quadrupedal dragon's. You have four legs, the front two of which end in pfods that you can with equal faculty use as hands or walk on. You only breathe in order to talk. When you're standing around or even when you're exerting yourself, your chest is still unless you're moving. Beyond the details of your patterning, you also have bioluminescent stripes any part of which can be made to glow at your will, and in fact you can speak without sound by glowing in patterns along your stripes.";
To say marking pattern description of the player:
say "accents of [minor color of the player] in [if the marking pattern of the player is mask]a mask-like pattern[otherwise][marking pattern of the player][end if]."
To say marking pattern description:
say "accents of [minor color] in [if the marking pattern is mask]a mask-like pattern[otherwise][marking pattern][end if]"
Instead of examining the player:
if the species of the player is vrash:
say "You have four legs, the front two of which end in pfods that you can with equal faculty use as hands or walk upon. You have broad wings upon your back and a muscular, prehensile tail. You are not hugely tall, but the length and strength of your body gives you quite a strong presence. You are not especially dexterous, but the world is soft to you, partly because you are strong, and partly because your magic reshapes the things you touch. Your steps upon the road leave the road finer and greater than it was before you trod upon it.";
otherwise if the species of the player is vashael:
say "You stand on two legs in a forward posture with your tail extending behind you, though you can drop to all fours if you're feeling shy. You have a large upright frill behind the center of your head, and a line of outwards-bending frills lining the top-sides of your tail. You have broad wings upon your back and a drifting wind perpetually circling you. The wind is comfortable and friendly.";
otherwise if the species of the player is kalla:
say "You are a two-legged bipedal dragon resembling the gryphons of prior worlds. You have a beak! Your feet end in hooves like those of horses, and you have a horse tail behind you. You have no wings. Your forearms are heavily scaled in your minor color (which is also the color of your beak), and have a great grip and dexterity, perhaps the best dexterity among all dragons. It's a small compensation for being smaller, weaker, and flightless relative to most dragons. Sparks of electricity occasionally travel along your limbs, especially if you summon them on purpose.";
otherwise if the species of the player is vohntrai:
say "You are a two-legged bipedal dragon like a bipedal version of a vrash. You are a bit skinny and a little taller than a kalla, but certainly any vashael looms over you. You have grip and dexterity rivaling a kalla, but you are as flightless as a kalla. You are very faintly translucent; you can see through yourself, not into yourself, as though you were just a little unreal.";
otherwise if the species of the player is izerah:
say "You are a two-legged bipedal dragon with a forward posture similar to that of a vashael, but somewhat smaller, and slightly less flexible. You cannot comfortably move on all fours. You have no wings! However, you have infinite endurance, and your ability to exert yourself is limited only by the need to sleep every other night. You feel almost perpetually invigorated.";
otherwise if the species of the player is veserus:
say "[veserus body description]";
otherwise if the species of the player is myrskor:
say "You are a quadrupedal dragon with exaggerated earfins to each side of your head. You have four legs, the front two of which end in pfods that you can with equal faculty use as hands or walk upon. You are not especially dexterous, but you can get by in all but the finest tasks. Your body can emit sunlight from any part of itself, and it really is sunlight, not just bioluminescence. Your glow is warm!";
otherwise if the species of the player is myrghon:
say "You are a small, fat bipedal dragon, the smallest species of dragon in fact. Your body type is beyond your control, barring powerful necromantic flesh-sculpting, but generally nobody cares. Myrghon always tend to be too skinny or too fat. It's just your species. You have six blue hexagonal diamond gems floating nearby. You can move them wherever you want within a few feet of your body, and they're VERY strong.";
otherwise if the species of the player is swaivshon:
say "You are a furry quadrupedal dragon. You have a similar bodily structure to a vrash, complete with pfods that you can walk on or use as hands. Complex horns — often likened to antlers — rise from the back of your head. A tremendous sense of comfort and safety fills you almost always. Your body resists everything. You can stick your pfod in a fire without getting burned. You can walk through a blizzard without getting cold. If someone struck you with intent to do violence to you, they would be unlikely to get through your fur. While you do not try to harm others, the world also will not try to harm you.";
otherwise if the species of the player is tesam:
say "You are a legendary tesam! You are a short bipedal furred creature with a long body and a heavy tail. Your hands are webbed, but still very dexterous. You are extremely flexible and proportionally quite strong, albeit only in the way that kalla are proportionally quite strong, and still certainly not strong enough to haul a wagon. You have no wings. You resemble an otter.";
otherwise if the species of the player is esseri:
say "You are a legendary esseri! You are a short bipedal furred creature with a long body and a moderate tail. Your dexterity is exceptional, and you are extremely flexible and agile. You are proportionally quite strong, albeit only in the way that kalla are proportionally quite strong, and still certainly not strong enough to haul a wagon. You have no wings. You resemble a ferret.";
otherwise if the species of the player is chakocha:
say "You are a legendary chakocha! You are a long-bodied dragon with heavy overlapping scales. You are as strong as a vrash and far more flexible, however you have no wings. You resemble a mix between a dragon, an otter, and a pangolin.";
say "Your [if species of the player is kalla]feathers and fur[otherwise if species of the player is tesam]fur[otherwise if species of the player is esseri]fur[otherwise if species of the player is swaivshon]fur[otherwise]scales[end if] are [dominant color of the player] with [marking pattern description of the player].";
Your Home in Ethriel is a room. "You, [full name of player], live in a five story home in Ethriel, on the fifth floor of Dome Three. Your home is quite humble by the standards of Ethriel, tall and narrow as most homes in the city-dome are. You sleep on the top floor. The view from the windows doesn't go outside, but only to the street below and the tall, narrow buildings on the other side of it.
You've been saving up resources to go on a long journey. Click [chargenlink chargen start] or type 'chargen' (without the quotes) to start creating your character. (It is highly recommended to play this game using a mouse as your primary input mechanism.)"
Chargencondition is a truth state that varies. Chargencondition is usually true.
Initial Character Generation is a scene. Initial Character Generation begins when chargencondition is true. Initial Character Generation ends when chargencondition is false.
Understand "chargen" as initial character generation. Initial character generation is an action applying to nothing. Instead of initial character generation in Your Home in Ethriel:
Now the species of the player is a random item from the list of random dragon species;
While the species of the player is veserus:
now the species of the player is a random item from the list of random dragon species;
Now chargencondition is true;
say "[chargencore]";
To say chargenlink (nextChargenLink - a chargenlink):
hyperlink "[Displayname of nextChargenLink]" as "zzxvm [nextChargenLink]"
A chargenlink is a kind of link.
Understand "zzxvm [any chargenlink]" as chargen linking. Chargen linking is an action applying to one thing.
Carry out chargen linking:
if the noun is a chargenlink listed in the Table of All ChargenLinks:
clear the screen;
say "[reply entry]";
otherwise:
say "[bold type]BUG:[roman type] Tried to carry out chargen linking with [italic type][the noun][roman type] but that does not appear to be a chargen link:";
showme the noun;
Chargenlinks are defined by the table of all chargenlinks.
When play begins:
now every chargenlink is held by the player;
Table of All Chargenlinks
chargenlink Displayname reply
chargen start "here" "[chargen start]"
Alloace Toggle "Alloace Toggle" "[alloace toggle]"
Species Selector "Species Selector" "[species selector]"
Choosing Vrash "Vrash" "[select vrash]"
Choosing Vashael "Vashael" "[select vashael]"
Choosing Izerah "Izerah" "[select izerah]"
Choosing Veserus "Veserus" "[select veserus]"
Choosing Kalla "Kalla" "[select kalla]"
Choosing Swaivshon "Swaivshon" "[select swaivshon]"
Choosing Myrskor "Myrskor" "[select myrskor]"
Choosing Myrghon "Myrghon" "[select myrghon]"
Choosing Vohntrai "Vohntrai" "[select vohntrai]"
Gender Toggle "Gender Toggle" "[gender toggle]"
Sex Toggle Link "Sex Toggle" "[sex toggle]"
Enter Career Selector "Career Selector" "[career selector]"
Choosing Pottergon "Pottergon" "[select pottergon]"
Choosing Haulergon "Haulergon" "[select haulergon]"
Choosing Lumbergon "Lumbergon" "[select lumbergon]"
Choosing Smithgon "Smithgon" "[select smithgon]"
Choosing Huntgon "Huntgon" "[select huntgon]"
Choosing Farmgon "Farmgon" "[select farmgon]"
Choosing Authorgon "Authorgon" "[select authorgon]"
Choosing Philosophygon "Philosophygon" "[select philosophygon]"
Choosing Sex Pest "Sex Pest" "[select sex pest]"
Choosing Charitygon "Charitygon" "[select charitygon]"
Choosing Rangergon "Rangergon" "[select rangergon]"
Choosing Physical Dissolutionist "Physical Dissolutionist" "[select physical dissolutionist]"
Choosing Mental Dissolutionist "Mental Dissolutionist" "[select mental dissolutionist]"
Choosing Holygon "Holygon" "[select holygon]"
Choosing Lutragon "Lutragon" "[select lutragon]"
Choosing Petgon "Petgon" "[select petgon]"
Choosing Musicgon "Musicgon" "[select musicgon]"
Choosing Flygon "Flygon" "[select flygon]"
Choosing Sportsgon "Sportsgon" "[select sportsgon]"
Choosing Kaimagon "Kaimagon" "[select kaimagon]"
Complete Chargen "Click Here to Finish Chargen" "[finish chargen]"
To say chargen start:
Now the species of the player is a random item from the list of random dragon species;
Now chargencondition is true;
say "[chargencore]"
To say chargencore:
say "[chargenlink Alloace Toggle]: [alloace spectrum of the player][line break]";
say "[chargenlink Species Selector]: [species of the player][line break]";
say "[chargenlink Gender Toggle]: [the player's TheomaGender][line break]";
say "[chargenlink Sex Toggle Link]: [the player's TheomaSex][line break]";
say "Age: [age of the player] years[line break]";
say "[career sanity check] To reset your careers, reselect your species.";
say "[Many careers]";
say "[chargen finish check]";
To say alloace toggle:
if the alloace spectrum of the player is allosexual:
Now the alloace spectrum of the player is sex-positive asexual;
Otherwise if the alloace spectrum of the player is sex-positive asexual:
Now the alloace spectrum of the player is sex-repulsed asexual;
Otherwise if the alloace spectrum of the player is sex-repulsed asexual:
Now the alloace spectrum of the player is allosexual;
Clear the screen;
say "[chargencore]";
To say the player's TheomaGender:
If the TheomaGender of the player is 1:
say "male";
Otherwise if the TheomaGender of the player is 2:
say "female";
Otherwise if the TheomaGender of the player is 3:
say "herm";
To say gender toggle:
If the TheomaGender of the player is 1:
Now the TheomaGender of the player is 2;
Otherwise if the TheomaGender of the player is 2:
Now the TheomaGender of the player is 3;
Otherwise if the TheomaGender of the player is 3:
Now the TheomaGender of the player is 1;
Clear the screen;
say "[chargencore]";
To say the player's TheomaSex:
If the TheomaSex of the player is 1:
say "male";
Otherwise if the TheomaSex of the player is 2:
say "female";
Otherwise if the TheomaSex of the player is 3:
say "herm";
To say sex toggle:
If the TheomaSex of the player is 1:
Now the TheomaSex of the player is 2;
Otherwise if the TheomaSex of the player is 2:
Now the TheomaSex of the player is 3;
Otherwise if the TheomaSex of the player is 3:
Now the TheomaSex of the player is 1;
Clear the screen;
say "[chargencore]";
To say chargen finish check:
Let career length be the number of entries in the career history of player;
If career length is at least 1:
say "[line break]When you're satisfied, [chargenlink Complete Chargen]. Hesitate! This link will not confirm.";
Otherwise:
say "";
To say finish chargen:
now every chargenlink is nowhere;
now chargencondition is false;
Playerport to Your Sort-Of Home in Ethriel;
To say many careers:
Let career length be the number of entries in the career history of the player;
If the career history of the player is empty:
say "";
Otherwise if career length is 1:
say "First career: [entry 1 of the career history of the player]";
Otherwise if career length is 2:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player]";
Otherwise if career length is 3:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player]";
Otherwise if career length is 4:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player]";
Otherwise if career length is 5:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player]";
Otherwise if career length is 6:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player]";
Otherwise if career length is 7:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player]";
Otherwise if career length is 8:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
Otherwise if career length is 9:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
Otherwise if career length is 10:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player]";
Otherwise if career length is 11:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player][line break]";
say "Eleventh career: [entry 11 of the career history of the player][line break]";
Otherwise if career length is 12:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player][line break]";
say "Eleventh career: [entry 11 of the career history of the player][line break]";
say "Twelfth career: [entry 12 of the career history of the player]";
Otherwise if career length is 13:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player][line break]";
say "Eleventh career: [entry 11 of the career history of the player][line break]";
say "Twelfth career: [entry 12 of the career history of the player][line break]";
say "Thirteenth career: [entry 13 of the career history of the player]";
Otherwise if career length is 14:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player][line break]";
say "Eleventh career: [entry 11 of the career history of the player][line break]";
say "Twelfth career: [entry 12 of the career history of the player][line break]";
say "Thirteenth career: [entry 13 of the career history of the player][line break]";
say "Fourteenth career: [entry 14 of the career history of the player]";
Otherwise if career length is 15:
say "First career: [entry 1 of the career history of the player][line break]";
say "Second career: [entry 2 of the career history of the player][line break]";
say "Third career: [entry 3 of the career history of the player][line break]";
say "Fourth career: [entry 4 of the career history of the player][line break]";
say "Fifth career: [entry 5 of the career history of the player][line break]";
say "Sixth career: [entry 6 of the career history of the player][line break]";
say "Seventh career: [entry 7 of the career history of the player][line break]";
say "Eighth career: [entry 8 of the career history of the player][line break]";
say "Ninth career: [entry 9 of the career history of the player][line break]";
say "Tenth career: [entry 10 of the career history of the player][line break]";
say "Eleventh career: [entry 11 of the career history of the player][line break]";
say "Twelfth career: [entry 12 of the career history of the player][line break]";
say "Thirteenth career: [entry 13 of the career history of the player][line break]";
say "Fourteenth career: [entry 14 of the career history of the player][line break]";
say "Fifteenth career: [entry 15 of the career history of the player]";
To say species selector:
say "The species options are vrash, vashael, izerah, veserus, kalla, swaivshon, myrskor, myrghon, and vohntrai. There are a few hidden species options accessible through necromantic species reassignment later — no, not skeleton dragon — but the starting options are those. Clicking a name will set your species and take you back to the chargen overview menu.";
say "[chargenlink Choosing Vrash]: The vrash are winged quadrupedal dragons. They walk on four legs, but their forelimbs are also dexterous hands. Such hand-feet are called 'pfods'. Vrash can walk three-legged to carry an object. One of the three abundant species of Theoma, vrash are the strongest dragons of all. They typically wear armor, but this is generally only a show of wealth, and expensive clothing sometimes takes the place of traditional vrash armor. Vrash have the most awesome innate magic, being the ability to pay only basic drain (ie, bodily fatigue) for the ability to reconfigure (though not transmute) objects that they are touching.";
say "[chargenlink Choosing Vashael]: The vashael are winged theropod dragons. They walk on two legs, although they can drop and move on four instead if they chooose. One of the three abundant species of Theoma, vashael are strong enough to pull laden wagons. They have a perpetual breeze flowing about them and can manipulate the wind while paying only basic drain (ie, bodily fatigue). This ability is called the 'amicus breeze'. Vashael are instinctively the best flyers among dragonkind, flying faster than other dragons with less fatigue for distance, though this ability is difficult to use in trade without owning one of the very rare flying wagons.";
say "[chargenlink Choosing Izerah]: The izerah are wingless theropod dragons. They are the smallest of the three abundant species of dragons. Izerah have no innate magic, but they do not tire. They have limitless stamina. They need to sleep only every other night, and nothing stops them from sprinting for two days straight before collapsing into slumber. They cannot fly, but their ability to sprint unceasingly means they are actually more mobile than the average vrash or vashael, who finds flying at least a little tiring. Izerah are stereotyped for their restless nomadism, but it isn't true of all of them. They are also stereotyped for always having energy, and that stereotype is generally accurate. Izerah are almost never strong enough to pull wagons designed for vrash and vashael, but they do often pull izerah carts.";
say "[chargenlink Choosing Veserus]: The veserus are winged quadrupedal dragons. They are technically the fourth abundant species of Theoma, but most veserus live underwater such that their presence and cultural influence on the surface is limited. They are as strong as vrash and have more stamina. They may look like fish-dragons, cetacean-dragons, or just like vrash. They don't have gills, and in fact do not breathe for any purpose other than speaking. They have complex bioluminescent stripes which may be made to glow in any pattern, and while underwater they speak in glow-language. Their only innate magic is being unbreathing.";
say "[chargenlink Choosing Kalla]: The kalla are wingless anthro hippogryphs. Stronger than humans, kalla are nonetheless smaller and weaker than most dragons. They cannot fly and are unlikely to be able to pull wagons. Your manual dexterity is superior to that of most dragons, and you have an innate intuition for the physical (but not magical) mechanisms of the world. Kalla are famous as inventorgons and craftsgons, and are said to have a natural affinity for Weld magics. You have the ability to summon lightning while paying only basic drain (ie, bodily fatigue), but this violent ability is famously useless. In general, they are considered a more limited and unfortunate kind of dragon, and this choice will make your game harder.";
say "[chargenlink Choosing Swaivshon]: The swaivshon are winged furry quadrupedal dragons. They have the stature of vrash, but they're only about as strong as vashael, which is still sufficient to pull a wagon. Swaivshon are occasionally called 'saint souls' and it is considered expected that they never do any harm to anyone. This positive stereotyping makes their social lives easier as other dragons naturally trust swaivshon. Swaivshon naturally resist magic that they disapprove of, which makes them luckier as they resist negative Fates without knowing what they're resisting. They also resist temperature extremes, physical violence, poisons of all sorts, and even necromantic energies. Aside from this omni-resistance, they have no innate magic.";
say "[chargenlink Choosing Myrskor]: The myrskor are wingless quadrupedal dragons. They have very large fins, particularly on their cheeks. They have pfods as vrash do, with similar dexterity and similar limitations, and they are almost as strong. Any part of a myrskor can be made to glow brightly, as often as the myrskor wishes to make it glow, and they can summon orbs that emit warm, bright sunlight at a minor temporary cost to their sanity (it is generally considered safe and desirable to summon one every week, as they are a saleable trade good). Myrskor can sense the distance and direction to every orb they've ever made. Myrskor can learn veserus glow-language.";
say "[chargenlink Choosing Myrghon]: The myrghon are wingless anthro dragons. They are the smallest of dragons, shorter than vohntrai and kalla (though stronger than vohntrai), and their metabolisms run peculiarly; they tend to either pack on the pounds or find it impossible to gain weight. Their innate magic is a set of floating gems, two for every power of ten in their age, which they can control to a range of about twenty feet with very forceful telekinesis. Myrghon are said to share the dexterity and mechanical intuition of kalla, but they are rare on the surface as most myrghon live in the Deep-Under. Very few myrghon have ever been born in Theoma; their species is almost 100% composed of primordial dragons who were created by the greater divinities, and as such nearly all myrskor have exactly six gems. Being a myrghon locks the age selector at 15 careers.";
say "[chargenlink Choosing Vohntrai]: The vohntrai are wingless anthro dragons. They are the weakest kind of dragon, but highly dexterous. Their innate magic is self-resurrection. A vohntrai who dies to any cause resurrects five years later in a safe location. However, the death rate in Theoma is so low, that vohntrai are generally considered cursed rather than blessed, because of their weakness and the fact that their memories extend only four hundred years into the past. They are also famously bad at necromancy. In general, they are considered a more limited and unfortunate kind of dragon, and this choice will make your game harder.";
To reset the player's skills:
let counters be the list of XP counters which relate to the player by the tallying relation;
repeat with X running through counters:
now the level of X is 0;
now the XP of X is 0;
To say select vrash:
Now the species of the player is vrash;
Now the aquatic semblance of the player is not fishy;
Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select vashael:
Now the species of the player is vashael;
Now the aquatic semblance of the player is not fishy;
Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select izerah:
Now the species of the player is izerah;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select veserus:
Now the species of the player is veserus;
Now the aquatic semblance of the player is a random item from the list of veserus aquatic semblances; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select kalla:
Now the species of the player is kalla;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select swaivshon:
Now the species of the player is swaivshon;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select myrskor:
Now the species of the player is myrskor;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select myrghon:
Now the species of the player is myrghon;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 1227;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say select vohntrai:
Now the species of the player is vohntrai;
Now the aquatic semblance of the player is not fishy; Now the career history of the player is {};
Now the age of the player is 100;
reset the player's skills;
Clear the screen;
say "[chargencore]";
To say career sanity check:
Let career length be the number of entries in the career history of the player;
If career length is less than 12:
say "[chargenlink Enter Career Selector][line break]";
Otherwise if career length is less than 15:
If the species of the player is myrghon:
say "[chargenlink Enter Career Selector][line break]";
Otherwise:
say "Career limit reached.";
Otherwise if career length is 15:
say "Career limit reached.";
To calculate the age of (P - a person):
Let career length be the number of entries in the career history of P;
Let calculated age be 30;
Repeat with counter running from 1 to career length:
Let calculated age be calculated age plus 79;
Let calculated age be calculated age plus a random number between 1 and 21;
If career length is not 1:
Let calculated age be calculated age minus a random number between 1 and 70;
If the species of P is not myrghon:
Now the age of P is the calculated age;
Otherwise if the species of P is myrghon:
Do nothing;
To say career selector:
say "Your character starts at age 30, but the first career is mandatory. Every career will add 79+1d21 years to your character's age.";
say "[chargenlink Choosing Pottergon]: A pottergon is a dragon who made their way by creating clayware. Pots are a basic, ubiquitous trade good that are as old as the world. They are necessary for storage and transit, and they are often used as cooking vessels or tableware. Additionally, pottergons are responsible for making ceramic floor tiles. In addition to the savings from having worked this career, a former pottergon will have a skill bonus applicable to finding and evaluating claywares.";
say "[haulergon check]";
say "[chargenlink Choosing Lumbergon]: A lumbergon practiced the harvesting and processing of wood for use in construction and manufacturing. Considered an unskilled trade, this brings with it some familiarity with the wilderness as well as a bonus to stamina (for non-izerah). It provides a bonus for finding and evaluating cargos of wood or woodworking tools.";
say "[chargenlink Choosing Smithgon]: A smithgon is a metalworker. This is a skilled trade that will have included a lengthy apprenticeship including some books and skillgem usage. In Ethriel, this will have included working with the superior construction metal known as 'swaivshon alloy'. You will start with a Piety Fatecharm of Smithing. Taking this career again will increase the strength of its enchantment (up to 4 times).";
say "[chargenlink Choosing Huntgon]: A huntgon hunts for meat, hide, and other animal products, as well as producing a secondary intake of herbs, fungi, and edible plants. This career comes with an extensive familiarity with wilderness areas. You will start with a Piety Fatecharm of Hunting. Taking this career again will increase the strength of its enchantment (up to 4 times). Being a huntgon doesn't pay very well, but Theoma is not densely settled. You can make your way across most lands by hunting for food. If you're good at hunting, you can travel with no preparation. You can even generate shipments by sweat equity.";
say "[chargenlink Choosing Farmgon]: A farmgon grows crops. Dragons can live by meat alone, but many of them are fond of baked goods. There's a bonus to evaluating crops, but the primary bonus is social. Theoman farmers are frequently tight-knit.";
say "[chargenlink Choosing Authorgon]: Authorgons can be profitable in theory, but not you. That doesn't mean you're bad at what you do. It just means that you've struggled to find a market. Perhaps the problem is just how expensive distribution is. There's got to be a better way than copying texts by hand... You spend a lot of time copying your books for distribution, and a lot of your income getting your books copied by distributors. You're a fast, accurate writer in the literal sense, and you have a keen empathetic sense from studying literature and producing it. The land gods might favor you... Your piety is increased by this profession. You start with a collection of bookgems you've already read as well as a wagonload of books for every time you take this profession, to a maximum of five wagonloads of books, after which the surplus will be converted to savings. The five wagonloads limit is shared with philosophygon career terms.";
say "[chargenlink Choosing Philosophygon]: Philosophygons have rarely ever been profitable. In this time period of this world, you have to be your own scribegon. That doesn't help. This career makes you respectable to dragons much richer than you, enough that they'll provide some amount of resources, but not enough that they'll make you rich. They see you as having no need of riches. Quite probably, you see yourself as having no need of riches, or you wouldn't have tried this. This career is the best way to learn to teach, and it will give you a wagonload of books every time you take it, up to five wagonloads, after which the surplus will be converted to savings. The five wagonloads limit is shared with authorgon career terms.";
say "[sex pest check]";
say "[chargenlink Choosing Charitygon]: The protective embrace of Fate reduces the degree to which misfortune befalls dragonkind, but sometimes what the protective embrace of Fate does to protect dragons is to direct them towards dragons who stand ready to help them. Stepping in to provide free services is as benevolent here as it is in any world. Career terms spent on charity work will build up your influence and leadership potential, but not your wealth.";
say "[chargenlink Choosing Rangergon]: Rangergons are huntergons who aren't serving a market. Hunting for enjoyment, pleasure, or even ranger, the rangergon studies the wilderness and takes only as much prey as they need to stay supplied. You will start with a Piety Fatecharm of Hunting. Terms in this career stack with terms in huntgon for determining the level of the Fatecharm (up to four terms). You also learn more as a rangergon, even picking up some magic.";
say "[chargenlink Choosing Physical Dissolutionist]: Physical dissolutionists are hedonistic geomancers who are only concerned with finding what is most pleasurable, and who favor physical pleasures. They drink, play, and fuck. They learn physical games and music, but they differ from sportsgons and musicgons by lacking dedication. They learn sexual skills, but they differ from mere sex pests by studying magical abilities as well. Physical dissolutionists are probably the single least reputable kind of geomancer, but they are still geomancers, and they still learn holy spells. This career will provide a diverse range of entertainment skills and a little bit of magic. Even sex-positive asexuals will pick up sexual skills in this career, but it is possible to be a sex-repulsed physical dissolutionist, skipping those.";
say "[chargenlink Choosing Mental Dissolutionist]: Mental dissolutionists are hedonistic geomancers who are only concerned with finding what is most pleasurable, and who favor mental pleasures. They study games and culture, and can often be quite refined individuals. This career provides some entertainment skills, a little bit of magic, and some influence. This career also slightly trains sexuality even for those disinclined to initiate sex, as long as the prospect doesn't repulse them.";
say "[chargenlink Choosing Holygon]: Some dragons fall entirely into the contemplation of what is holy. Immortality in a pleasant world frees them to spend their lives in prayer and contemplation. This is usually a kind of geomantic dedication; holygons pick up Chime magic, and a smattering of spells from other principles. Dragons think this career provides them the information that they need to evaluate the social dynamics of the Consensus, the reigning body of greater divinities that controls Theoma.";
say "[chargenlink Choosing Lutragon]: Lutragons love water, and they love the party culture of the tesams, who resemble otters. Tesams don't exist in Theoma (or do they?), but they existed in prior worlds and your home city of Ethriel is one of the places where their culture is preserved. This is one of the best ways to gain past world knowledge, but otherwise yields only entertainment skills and a modicum of hunting. Sexuality is quite favored among Lutragons, but not so obligatory that a sex-repulsed lutragon is an impossibility.";
say "[petgon check]";
say "[chargenlink Choosing Musicgon]: A musicgon has dedicated themselves to pleasing the ear, or at least impressing it. 80-odd years of dedication to music will make you really quite good at it. Can you imagine what someone would be like if they had a thousand years to dedicate to music? Maybe practicality demands a limit, but how you distribute your careers is up to you. In any case, the lack of celebrity, imperial, or otherwise elite culture in Theoma limits the income potential.";
say "[flygon check]";
say "[chargenlink Choosing Sportsgon]: A sportsgon dedicated decades of blessed eternal youth to maximizing their ability to play games of strength and agility. This career mostly develops your physical condition. It has the largest strength bonus of all careers, as well as a small piety bonus. There are some good group entertainment skills here if you gather together a group of sportsgons, or dragons willing to learn. Some dedicated mental dissolutionists put a career into being sportsgons just to maximize their ability to play every game in Theoma, covering both mind and body.";
say "[chargenlink Choosing Kaimagon]: A kaimagon is a specialist in a kind of divination popularly practiced in the region of Ethriel, called Kaima. It is a distinctly regional system, with other systems predominating in other regions, but you can carry it with you. Kaima is primarily an entertainment skill whose predictive power is bluntly inferior to actual divination magic, but kaimagons say that it preserves their serenity while telling them what the Consensus wants them to know. Being a kaimagon will give you a tool to scrape up funds while in travel that is also good for entertaining dragons in your party.";
To say haulergon check:
If the species of the player is kalla or the species of the player is vohntrai:
say "[species of the player] are almost never strong enough to haul wagons, and unlike myrghon, they do not have access to magitech wagons to take the place of physical strength.";
Otherwise:
say "[chargenlink Choosing Haulergon]: A haulergon is a a dragon who made their way by hauling goods in a local region. This is merchant work, if very repetitive merchant work, and ably develops the mercantile skill, slightly improving the ability to find and evaluate all cargos. It also promotes the development of stamina and teaches the reading of bookgems, which can be appreciated while walking. Myrghon and izerah are not strong enough to haul vashael wagons, but can drive myrghon wagons and haul izerah carts respectively."
To say sex pest check:
If the alloace spectrum of the player is allosexual:
say "[chargenlink Choosing Sex Pest]: With no unplanned pregnancies, no STDs, and benevolent Fates protecting individual dragons from the majority of unpleasant encounters, sexuality is very open in Theoma, and a high libido is generally considered a positive trait. This is all some dragons need to decide that they dwell in paradise. This career will exaggerate your basic social skills and provide a bonus to finding and evaluating cargos of intimacy aids. The experience gained here can also help provide cheap entertainment while travelling.";
Otherwise:
say "Some dragons make a 'career' out of sexuality, but even sex-positive asexuals lack the necessary drive.";
To say petgon check:
If the alloace spectrum of the player is sex-repulsed asexual:
say "[chargenlink Choosing Petgon]: A petgon is a dragon who has dedicated themselves to being someone else's live-in pet. The usual benefactor is someone wealthy. It is typical for petgons to be artists benefitting from the patronage of one person willing and able to support them. It is not strictly necessary that a 'petgon' is a submissive partner in their relationship. You might have deeply loved your benefactor, or you might have thought you'd get a share of their wealth, but either way it obviously didn't last forever considering that you're going adventuring without them or their money. These relationships are typically sexual, but it's possible in the absence of sex to pursue these relationships for love and/or artistic patronage.";
Otherwise:
say "[chargenlink Choosing Petgon]: A petgon is a dragon who has dedicated themselves to being someone else's live-in pet. The usual benefactor is someone wealthy. It is typical for petgons to be artists benefitting from the patronage of one person willing and able to support them. It is not strictly necessary that a 'petgon' is a submissive partner in their relationship. You might have deeply loved your benefactor, or you might have thought you'd get a share of their wealth, but either way it obviously didn't last forever considering that you're going adventuring without them or their money. These relationships are typically sexual, so some sexual skills training is included.";
To say flygon check:
If the species of the player is kalla or the species of the player is vohntrai or the species of the player is myrghon or the species of the player is myrskor:
say "Your species is not capable of flight, and does not typically spend all day jogging just for fun.";
Otherwise if the species of the player is izerah:
say "[chargenlink Choosing Flygon]: Your species is not capable of flight, but some izerah are called flygons anyways. They're the ones who just run non-stop for the sheer pleasure of running. This is considered pretty dumb — popular opinion is that you ought to at least be carrying trade goods (working as a haulergon) while running long distances, and flygons are disparaged as bums — but there's a certain freedom in traveling places without needing to worry about market conditions. This career mostly develops your physical condition. It has the largest speed bonus of all careers. Be careful about overinvesting in speed. You'll be traveling with others at some point, won't you? You'll never be faster than the slowest member of your party. If you do ground travel with non-izerah, the base speed of the izerah will never be met by the mixed-species group, and all career speed bonuses will be wasted. Even with other izerah, being the most fly dragon in the party will mean slowing down for izerah who didn't take their species gift in the same direction.";
Otherwise:
say "[chargenlink Choosing Flygon]: A flygon is a dragon who has dedicated themselves to flight. You may have worked as a courier or traded small amounts of rare goods, or you may even have leaned on beggary, but your priority was always spending as much time as possible in the air. You fly faster with less fatigue and boredom than other dragons. This career mostly develops your physical condition. It has the largest speed bonus of all careers. Be careful about overinvesting in speed. You'll be traveling with others at some point, won't you? You'll never be faster than the slowest member of your party. If you do ground travel, the flight speed bonus will be wasted. Even if you stay in the air, being the most fly dragon in the party will mean slowing down for dragons who didn't lavish so much love upon their wings.";
To say select pottergon:
employ the player as a pottergon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select haulergon:
employ the player as a haulergon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select lumbergon:
employ the player as a lumbergon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select smithgon:
employ the player as a smithgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select huntgon:
employ the player as a huntgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select farmgon:
employ the player as a farmgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select authorgon:
employ the player as an authorgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select philosophygon:
employ the player as a philosophygon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select sex pest:
employ the player as a sex pest;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select charitygon:
employ the player as a charitygon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select rangergon:
employ the player as a rangergon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select physical dissolutionist:
employ the player as a physical dissolutionist;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select mental dissolutionist:
employ the player as a mental dissolutionist;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select holygon:
employ the player as a holygon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select lutragon:
employ the player as a lutragon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select petgon:
employ the player as a petgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select musicgon:
employ the player as a musicgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select flygon:
employ the player as a flygon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select sportsgon:
employ the player as a sportsgon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
To say select kaimagon:
employ the player as a kaimagon;
calculate the age of the player;
clear the screen;
say "[chargencore]";
A skill is a kind of value. The skills are lumbering, hunting, gathering, smithing, pottery, kaima, panhandling, physical games, mental games, teaching, influence, song, instrument, trophy hunter, ecology, theology, sex appeal, erotic art, bookgems, skillgems, past world knowledge, carousing, mercantile, farming, visual arts, and writing.
An XP counter is a kind of object. An XP counter has a number called XP. An XP counter has a number called level. An XP counter has a skill called associated skill. The XP of an XP counter is usually 0. The level of an XP counter is usually 0.
Tallying relates various XP counters to a person. The verb to tally means the tallying relation.
A lumbering XP counter is a kind of XP counter. The associated skill of a lumbering XP counter is always lumbering. Every person is tallied by a lumbering XP counter.
A hunting XP counter is a kind of XP counter. The associated skill of a hunting XP counter is always hunting. Every person is tallied by a hunting XP counter.
A gathering XP counter is a kind of XP counter. The associated skill of a gathering XP counter is always gathering. Every person is tallied by a gathering XP counter.
A smithing XP counter is a kind of XP counter. The associated skill of a smithing XP counter is always smithing. Every person is tallied by a smithing XP counter.
A pottery XP counter is a kind of XP counter. The associated skill of a pottery XP counter is always pottery. Every person is tallied by a pottery XP counter.
A kaima XP counter is a kind of XP counter. The associated skill of a kaima XP counter is always kaima. Every person is tallied by a kaima XP counter.
A panhandling XP counter is a kind of XP counter. The associated skill of a panhandling XP counter is always panhandling. Every person is tallied by a panhandling XP counter.
A physical games XP counter is a kind of XP counter. The associated skill of a physical games XP counter is always physical games. Every person is tallied by a physical games XP counter.
A mental games XP counter is a kind of XP counter. The associated skill of a mental games XP counter is always mental games. Every person is tallied by a mental games XP counter.
A teaching XP counter is a kind of XP counter. The associated skill of a teaching XP counter is always teaching. Every person is tallied by a teaching XP counter.
An influence XP counter is a kind of XP counter. The associated skill of an influence XP counter is always influence. Every person is tallied by an influence XP counter.
A song XP counter is a kind of XP counter. The associated skill of a song XP counter is always song. Every person is tallied by a song XP counter.
An instrument XP counter is a kind of XP counter. The associated skill of an instrument XP counter is always instrument. Every person is tallied by an instrument XP counter.
A trophy hunter XP counter is a kind of XP counter. The associated skill of a trophy hunter XP counter is always trophy hunter. Every person is tallied by a trophy hunter XP counter.
An ecology XP counter is a kind of XP counter. The associated skill of an ecology XP counter is always ecology. Every person is tallied by an ecology XP counter.
A theology XP counter is a kind of XP counter. The associated skill of a theology XP counter is always theology. Every person is tallied by a theology XP counter.
A sex appeal XP counter is a kind of XP counter. The associated skill of a sex appeal XP counter is always sex appeal. Every person is tallied by a sex appeal XP counter.
An erotic art XP counter is a kind of XP counter. The associated skill of an erotic art XP counter is always erotic art. Every person is tallied by an erotic art XP counter.
A bookgems XP counter is a kind of XP counter. The associated skill of a bookgems XP counter is always bookgems. Every person is tallied by a bookgems XP counter.
A skillgems XP counter is a kind of XP counter. The associated skill of a skillgems XP counter is always skillgems. Every person is tallied by a skillgems XP counter.
A past world XP counter is a kind of XP counter. The associated skill of a past world XP counter is always past world knowledge. Every person is tallied by a past world XP counter.
A carousing XP counter is a kind of XP counter. The associated skill of a carousing XP counter is always carousing. Every person is tallied by a carousing XP counter.
A mercantile XP counter is a kind of XP counter. The associated skill of a mercantile XP counter is always mercantile. Every person is tallied by a mercantile XP counter.
A farming XP counter is a kind of XP counter. The associated skill of a farming XP counter is always farming. Every person is tallied by a farming XP counter.
A visual arts XP counter is a kind of XP counter. The associated skill of a visual arts XP counter is always visual arts. Every person is tallied by a visual arts XP counter.
A writing XP counter is a kind of XP counter. The associated skill of a writing XP counter is always writing. Every person is tallied by a writing XP counter.
The base XP cost is always 100.
The cost multiplier is always 1.33.
To decide which number is required XP to level past (current level - a number):
let the current XP multiplier be the cost multiplier to the power current level;
let required XP be the base XP cost multiplied by the current XP multiplier;
decide on required XP to the nearest whole number.
To check for level-up on (X - an XP counter), quietly:
let original level be the level of X;
While the XP of X is at least the required XP to level past the level of X:
decrease the XP of X by the required XP to level past the level of X;
increase the level of X by 1;
if not quietly and the level of X is not the original level:
say "You have gained enough XP to level up your [associated skill of X] skill!";
say "Your [associated skill of X] skill is now at [level of X] level and you have [XP of X] XP remaining.";
say "You need [required XP to level past the level of X] total [associated skill of X] XP to get to the next level.";
To decide which XP counter is the (S - a skill) counter tallying (P - a person):
let counters be the list of XP counters which relate to P by the tallying relation;
repeat with X running through counters:
if the associated skill of X is S, decide on X;
say "[bold type]BUG:[roman type] I tried to find the [S] XP counter for [P], but I couldn't find it.";
decide on nothing. [uh-oh]
To decide which number is the (S - a skill) level of (P - a person):
let X be the S counter tallying P;
decide on the level of X.
To give (N - a number) XP to (P - a person) in (S - a skill):
If the alloace spectrum of P is sex-repulsed asexual:
If S is sex appeal:
do nothing;
Otherwise if S is erotic art:
do nothing;
Otherwise:
let X be the S counter tallying P;
if X is nothing, stop;
increase XP of X by N;
if P is the player:
check for level-up on X;
otherwise:
check for level-up on X, quietly;
Otherwise:
let X be the S counter tallying P;
if X is nothing, stop;
increase XP of X by N;
if P is the player:
check for level-up on X;
otherwise:
check for level-up on X, quietly;
A person has a list of careers called a career history.
To employ (P - a person) as a/an (C - a career):
Add C to the career history of P;
If C is lumbergon:
give 645 XP to P in lumbering;
give 100 XP to P in physical games;
give 100 XP to P in hunting;
give 100 XP to P in gathering;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is huntgon:
give 645 XP to P in hunting;
give 410 XP to P in gathering;
give 100 XP to P in physical games;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is pottergon:
give 645 XP to P in pottery;
give 233 XP to P in visual arts;
give 100 XP to P in mental games;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is haulergon:
give 410 XP to P in mercantile;
give 410 XP to P in bookgems;
give 233 XP to P in song;
give 100 XP to P in skillgems;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is smithgon:
give 645 XP to P in smithing;
give 100 XP to P in physical games;
give 100 XP to P in carousing;
give 100 XP to P in skillgems;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is farmgon:
give 410 XP to P in farming;
give 233 XP to P in song;
give 233 XP to P in physical games;
give 233 XP to P in mental games;
give 100 XP to P in influence;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is authorgon:
give 645 XP to P in writing;
give 645 XP to P in bookgems;
give 233 XP to P in kaima;
give 100 XP to P in skillgems;
give 100 XP to P in mental games;
give 100 XP to P in theology;
give 100 XP to P in influence;
give 100 XP to P in teaching;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is philosophygon:
give 645 XP to P in teaching;
give 410 XP to P in theology;
give 410 XP to P in writing;
give 233 XP to P in skillgems;
give 100 XP to P in bookgems;
give 100 XP to P in mental games;
give 100 XP to P in kaima;
give 100 XP to P in influence;
give 100 XP to P in ecology;
If C is sex pest:
give 645 XP to P in sex appeal;
give 645 XP to P in erotic art;
give 233 XP to P in carousing;
give 233 XP to P in panhandling;
give 100 XP to P in mental games;
give 100 XP to P in physical games;
give 100 XP to P in song;
give 100 XP to P in instrument;
If C is charitygon:
give 645 XP to P in influence;
give 645 XP to P in panhandling;
give 410 XP to P in teaching;
give 233 XP to P in mental games;
give 100 XP to P in theology;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is rangergon:
give 645 XP to P in hunting;
give 410 XP to P in trophy hunter;
give 410 XP to P in ecology;
give 233 XP to P in gathering;
give 100 XP to P in physical games;
give 100 XP to P in bookgems;
If the alloace spectrum of the player is allosexual:
give 233 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is physical dissolutionist:
give 645 XP to P in carousing;
If the alloace spectrum of the player is not sex-repulsed asexual:
give 410 XP to P in erotic art;
give 233 XP to P in sex appeal;
give 233 XP to P in physical games;
give 233 XP to P in hunting;
give 233 XP to P in gathering;
give 100 XP to P in theology;
give 100 XP to P in trophy hunter;
give 100 XP to P in song;
If C is mental dissolutionist:
give 645 XP to P in mental games;
give 410 XP to P in theology;
give 233 XP to P in writing;
give 100 XP to P in gathering;
give 100 XP to P in farming;
give 100 XP to P in ecology;
give 100 XP to P in bookgems;
give 100 XP to P in instrument;
give 100 XP to P in song;
give 100 XP to P in teaching;
give 100 XP to P in influence;
give 100 XP to P in kaima;
If the alloace spectrum of the player is not sex-repulsed asexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is holygon:
give 645 XP to P in theology;
give 645 XP to P in bookgems;
give 410 XP to P in teaching;
give 100 XP to P in influence;
give 100 XP to P in kaima;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is lutragon:
give 645 XP to P in carousing;
give 410 XP to P in past world knowledge;
give 233 XP to P in mental games;
give 233 XP to P in physical games;
If the alloace spectrum of the player is not sex-repulsed asexual:
give 233 XP to P in sex appeal;
give 233 XP to P in erotic art;
give 100 XP to P in hunting;
If C is petgon:
give 645 XP to P in visual arts;
If the alloace spectrum of the player is not sex-repulsed asexual:
give 410 XP to P in sex appeal;
give 410 XP to P in erotic art;
give 410 XP to P in mental games;
give 233 XP to P in physical games;
give 233 XP to P in writing;
give 100 XP to P in theology;
give 100 XP to P in bookgems;
give 100 XP to P in skillgems;
If C is musicgon:
give 645 XP to P in instrument;
give 645 XP to P in song;
If the alloace spectrum of the player is not sex-repulsed asexual:
give 410 XP to P in sex appeal;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in erotic art;
give 100 XP to P in panhandling;
give 100 XP to P in carousing;
give 100 XP to P in mental games;
If C is flygon:
give 645 XP to P in panhandling;
give 410 XP to P in physical games;
give 233 XP to P in song;
give 233 XP to P in bookgems;
give 233 XP to P in gathering;
give 100 XP to P in hunting;
give 100 XP to P in mercantile;
If the alloace spectrum of the player is allosexual:
give 100 XP to P in sex appeal;
give 100 XP to P in erotic art;
If C is sportsgon:
give 645 XP to P in physical games;
give 233 XP to P in mental games;
give 233 XP to P in teaching;
give 233 XP to P in hunting;
give 233 XP to P in gathering;
If the alloace spectrum of the player is allosexual:
give 233 XP to P in sex appeal;
give 100 XP to P in erotic art;
Otherwise if the alloace spectrum of the player is sex-positive asexual:
give 233 XP to P in sex appeal;
If C is kaimagon:
give 645 XP to P in kaima;
give 410 XP to P in theology;
give 410 XP to P in panhandling;
give 233 XP to P in teaching;
give 100 XP to P in writing;
give 100 XP to P in past world knowledge;
give 100 XP to P in visual arts;
give 100 XP to P in mental games;
If the alloace spectrum of the player is allosexual:
give 233 XP to P in sex appeal;
give 233 XP to P in erotic art;
A person has some text called odor.
Instead of smelling a thing that provides the property odor:
say the odor of the noun;
rule succeeds.
Table of Body Odor
species job odor
undefined -- "You smell a strange lack of anything in particular."
vrash merchantgon "Stone and incense."
vrash laborgon "Stone and sweat."
vrash servicegon "Stone and civilization."
vrash wildgon "Stone and blood."
vrash agrigon "Vegetables and healthy soil."
vrash travelgon "Stone and the open sky."
vrash craftsgon "Stone and wood."
vrash unemployed "Stone and unmet, restless ambition."
vashael merchantgon "Fresh air and incense."
vashael servicegon "Fresh air and civilization."
vashael travelgon "This dragon smells like nothing but the open sky."
vashael laborgon "Fresh air and civilization."
vashael wildgon "Fresh air and blood."
vashael agrigon "Fresh air and healthy soil."
vashael craftsgon "Fresh air and civilization."
vashael unemployed "Fresh air and civilization."
kalla merchantgon "Feathers and wealth."
kalla servicegon "This dragon smells like a clean horse with a touch of ordinary civilization."
kalla travelgon "Why did the game generate a kalla flygon? This is an error."
kalla laborgon "Hard-working horse in an urban setting."
kalla wildgon "This dragon smells like a bird of prey."
kalla agrigon "Hard-working horse and healthy soil."
kalla craftsgon "This dragon smells like a horse in a workshop."
kalla unemployed "Horse, feathers, and poverty."
vohntrai merchantgon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai laborgon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai servicegon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai travelgon "Why did the game generate a vohntrai flygon? This is an error."
vohntrai wildgon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai agrigon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai craftsgon "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
vohntrai unemployed "You smell a strange lack of anything in particular. Do vohntrai have no scent?"
izerah merchantgon "Izerah never smell like they're exerting themselves, but this one is wearing a drop of perfume."
izerah servicegon "This izerah smells surprisingly like the city. It's a sedentary scent."
izerah travelgon "Even though they can't fly, this izerah smells like the open sky. There's road dust in there too, of course."
izerah laborgon "Izerah never smell like they're exerting themselves. This one smells like they spend their day around other dragons without that blessing."
izerah wildgon "Blood and trees."
izerah agrigon "Vegetables and healthy soil."
izerah craftsgon "This izerah smells like the city and a workshop."
izerah unemployed "Stone and unmet, restless ambition."
veserus merchantgon "A mild fishiness masked with a bit of incense."
veserus servicegon "A mild fishiness and an attempt to cover it with soap."
veserus travelgon "A mild fishiness and the open sky."
veserus laborgon "This veserus smells fishier than others of their kind. You can tell they work their body hard."
veserus wildgon "This veserus smells fishier than others of their kind. There are traces of the wilderness twined into their scent."
veserus agrigon "A mild fishiness and healthy soil."
veserus craftsgon "A mild fishiness and the scent of workshops."
veserus unemployed "This veserus smells fishier than others of their kind. They smell like they don't have better things to do than chase fish like a feral."
myrskor merchantgon "Myrskor are normally scentless, but this one smells like they're wearing a little perfume."
myrskor servicegon "Myrskor have very clean metabolisms... so much so that they shed virtually no scent."
myrskor travelgon "Why did the game generate a myrskor flygon? This is an error."
myrskor laborgon "Myrskor have very clean metabolisms, but this one just barely manages to smell like they're working their body hard."
myrskor wildgon "Myrskor are normally scentless, but this one smells a little like blood."
myrskor agrigon "Myrskor bodies are scentless, but nevertheless the stereotypical scent is more like soil and vegetables. They are famous for the farming economy, and this, apparently, is a farming myrskor."
myrskor craftsgon "This myrskor has stone and metal smells clinging to their body."
myrskor unemployed "Myrskor have very clean metabolisms... so much so that they shed virtually no scent."
myrghon merchantgon "Myrghon are normally scentless, but this one smells like they're wearing a little perfume."
myrghon servicegon "Myrghon have very clean metabolisms... so much so that they shed virtually no scent."
myrghon travelgon "Why did the game generate a myrghon flygon? This is an error."
myrghon laborgon "Myrghon have very clean metabolisms, but this one just barely manages to smell like they're working their body hard."
myrghon wildgon "Myrghon are normally scentless, but this one smells a little like blood."
myrghon agrigon "Myrghon are normally scentless, but this one smells a little like soil and vegetables."
myrghon craftsgon "This myrghon has stone and metal smells clinging to their body."
myrghon unemployed "Myrghon have very clean metabolisms... so much so that they shed virtually no scent."
swaivshon merchantgon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon servicegon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon travelgon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon laborgon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon wildgon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon agrigon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon craftsgon "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
swaivshon unemployed "This dragon's scent is strangely simple. They are a living being, but in a good way, and that is it. Do scents not cling to swaivshon?"
tesam merchantgon "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
tesam servicegon "This biped's scent is complex, musky, a bit fishy, and very potent. Their natural scent overpowers anything that might cling to their body from their profession."
tesam travelgon "Why did the game generate a tesam flygon? This is an error."
tesam laborgon "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
tesam wildgon "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
tesam agrigon "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
tesam craftsgon "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
tesam unemployed "This biped's scent is complex, musky, a bit fishy, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri merchantgon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri servicegon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri travelgon "Why did the game generate an esseri flygon? This is an error."
esseri laborgon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri wildgon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri agrigon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri craftsgon "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
esseri unemployed "This biped's scent is complex, musky, and very potent. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha merchantgon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha servicegon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha travelgon "Why did the game generate a chakocha flygon? This is an error."
chakocha laborgon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha wildgon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha agrigon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha craftsgon "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
chakocha unemployed "This quadruped's scent is complex, musky, and strong. It seems to fluctuate from moment to moment, too. Their natural scent overpowers anything that might cling to their body from their profession."
To decide which K is a random item from (elements - list of values of kind K):
if the number of entries in elements is 0:
[Crash the game.]
say "Cannot pick a random item from an empty list. [entry 9999 of elements]";
let n be a random number from 1 to the number of entries in elements;
decide on entry n of elements.
To decide which text is a randomly generated name:
choose a random row in the Table of Name Fragments;
decide on "[a random item from fore entry][a random item from aft entry]".
The list of non-travelgon jobs is always {merchantgon, servicegon, laborgon, wildgon, agrigon, craftsgon, unemployed}.
To decide which number is the count/number of (needle - value of kind K) entries in (haystack - list of Ks):
let tally be 0;
repeat with candidate running through haystack:
if candidate is needle, now tally is tally + 1;
decide on tally.
To procgen (NPC - a genericNPC):
now the description of NPC is a random item from the list of random NPC description templates; now the species of NPC is a random item from the list of random dragon species;
If the species of NPC is kalla or the species of NPC is esseri or the species of NPC is vohntrai or the species of NPC is chakocha or the species of NPC is myrskor or the species of NPC is myrghon:
now the job of NPC is a random item from the list of non-travelgon jobs;
Otherwise:
now the job of NPC is a random job;
now the dominant color of NPC is a random color;
now the minor color of NPC is a random color;
while the minor color of NPC is the dominant color of NPC:
[My canned descriptions don't work well with monochrome procgen NPCs!]
now the minor color of NPC is a random color;
now the marking pattern of NPC is a random marking pattern;
now the odor of NPC is "The smell confuses you.";
repeat through the Table of Body Odor:
if the species entry is the species of NPC:
if there is no job entry or the job entry is the job of NPC:
now the odor of NPC is the odor entry;
break;
now the printed name of NPC is a randomly generated name;
If the alloace spectrum of the player is sex-repulsed asexual:
now the alloace spectrum of NPC is sex-repulsed asexual;
now the libido of NPC is 0;
Otherwise:
now the alloace spectrum of NPC is allosexual;
let sex num one be the number of sex pest entries in the career history of the player;
let sex num two be the number of physical dissolutionist entries in the career history of the player;
let sex bias be sex num one + sex num two;
now sex bias is sex bias + 1;
let libido conf be 1;
let libido possibility be 1;
repeat with counter running from 1 to sex bias:
let libido possibility be a random number between 1 and 13;
if libido possibility > libido conf:
now libido conf is libido possibility;
if libido conf is 13:
break;
now libido conf is libido possibility;
now the libido of NPC is libido conf;
If a random chance of 1 in 200 succeeds:
now the alloace spectrum of NPC is sex-positive asexual;
now the reserve of NPC is a random number between 1 and 25;
Now the TheomaSex of NPC is a random number between 1 and 3;
If a random chance of 9 in 10 succeeds:
Now the TheomaGender of NPC is the TheomaSex of NPC;
Otherwise:
If a random chance of 9 in 10 succeeds:
now the PostTFTrans of NPC is true;
now the TheomaGender of NPC is the TheomaSex of NPC;
Otherwise:
Now the TheomaGender of NPC is a random number between 1 and 3;
While TheomaSex is TheomaGender:
Now the TheomaGender of NPC is a random number between 1 and 3;
[todo: make sex and gender matter. 1 = male, 2 = female, 3 = herm]
Let IntList be the list of personal interests;
sort IntList in random order;
now the first interest of NPC is entry 1 of IntList;
while the first interest of NPC is Sex:
sort IntList in random order;
now the first interest of NPC is entry 1 of IntList;
now the second interest of NPC is entry 2 of IntList;
while the second interest of NPC is Sex:
sort IntList in random order;
now the second interest of NPC is entry 2 of IntList;
let FI be the first interest of NPC;
let SI be the second interest of NPC;
Let CN be the culture of the current city;
Let Result List be a list of careers;
repeat through the Table of Interests:
If Culture entry is not CN:
next;
If Personal Interest entry is not FI and Personal Interest entry is not SI:
next;
repeat with C running through career possibilities entry:
add C to Result List;
let career length be a random number between 1 and 12;
repeat with N running from 1 to career length:
let next career be a random item from Result List;
employ NPC as a next career;
now the age of NPC is a random number between 100 and 1227;
[todo: fix the age generator so that it generates more valid numbers.]
If a random chance of 1 in 100 succeeds:
now the sleepinghour of NPC is 2;
Otherwise if a random chance of 1 in 10 succeeds:
now the sleepinghour of the NPC is 1;
Otherwise if a random chance of 3 in 10 succeeds:
now the sleepinghour of NPC is 0;
Otherwise:
now the sleepinghour of NPC is 3;
If a random chance of 1 in 100 succeeds:
now the workinghour of NPC is 3;
Otherwise if a random chance of 1 in 10 succeeds:
now the workinghour of NPC is 0;
Otherwise if a random chance of 3 in 10 succeeds:
now the workinghour of NPC is 2;
Otherwise:
now the workinghour of NPC is 1;
While sleepinghour of NPC is workinghour of NPC:
now workinghour of NPC is a random number between 0 and 2;
To decide which text is the epidermis of (spe - a species):
if spe is kalla, decide on "feathers and fur";
if spe is tesam or spe is esseri or spe is swaivshon, decide on "fur";
decide on "scales".
The list of random NPC description templates is always {"The [epidermis of species] of this [species] [if species is swaivshon]is[otherwise]are[end if] [dominant color] with [marking pattern description]. You scent them as [interpretation of TheomaSex]."}
to say interpretation of TheomaSex:
If the TheomaSex of noun is 1:
say "male";
If the TheomaSex of the noun is 2:
say "female";
If the TheomaSex of the noun is 3:
say "herm";
Table of Name Fragments
culture fore aft
Kelkaithian {"Stal", "Kanu", "Cha", "Vana", "To", "Ro", "Rew", "Su", "Suka", "Quel", "Ral", "Mera", "Mo", "Molo", "Mako", "Moko", "Quelno", "Saka", "Sak", "Hel", "Hev", "Nal", "Mal", "Ker", "Val", "Valnay"} {"bon", "van", "kar", "naffi", "itar", "en", "vold", "zold", "rold", "rol", "vo", "vol", "zo", "zol", "ul", "quan", "ley", "lee", "ria", "riz"}
Tachamundi {"Va", "Ko", "We", "Til", "Tai", "Ro", "Thimo", "Dan", "Alei", "Indi", "Malu", "Met", "Raul", "Cha", "Daw", "Dau", "Moko", "Nalko", "E", "Ora", "Hon", "Lor", "Chatu", "Daub", "Dar", "Sei"} {"bon", "bold", "pare", "sei", "tios", "ziu", "sach", "tarn", "ria", "goli", "loave", "koave", "zin", "zau", "riara", "tis", "rezen", "hai", "lin", "chrak", "skeld", "riz", "ta", "rio", "rian", "kret"}
Kanjamundi {"Cr", "Sp", "Sh", "Kr", "Tal", "N", "Tin", "Raul", "Yar", "Y", "Kel", "Ingr", "Indr", "Vul", "Nal", "W", "Qu", "Mol", "Molt", "Quir", "Yt", "Kish", "Riz", "Wr", "Vrek", "Dyl", "Zyr", "Sol", "Kaul"} {"inoi", "ailo", "eave", "amae", "inika", "alva", "ion", "ika", "ia", "ian", "alae", "amaino", "amaine", "onoko", "euven", "en", "imist", "osta", "imista", "atha", "eyen", "askal"}
Memorian {"Tira", "Nor", "Kro", "Quan", "Vana", "Chan", "Quaru", "Ethru", "Mal", "Il", "Quel", "Quirra", "Mol", "Ri", "Rini", "Me", "Enderenu", "Va", "Val"} {"lista", "nista", "para", "tios", "konos", "molian", "laith", "ria", "drao", "nori", "vaskal", "dem", "mista", "vista"}
Definition: a genericNPC (called The Dude) is ambiguously-named:
let whereabouts be the location of The Dude;
repeat with candidate running through the genericNPCs in whereabouts:
if candidate is The Dude, next;
if the printed name of candidate is the printed name of The Dude, decide yes;
decide no.
When You Are In Ethriel begins:
repeat with dude running through the genericNPCs in Your Favorite Bathhouse in Ethriel:
procgen dude;
now the preferred hangout of dude is Your Favorite Bathhouse in Ethriel;
repeat with dude running through the genericNPCs in Skakel's Games:
procgen dude;
now the preferred hangout of Dude is Skakel's Games;
You Are In Ethriel is a scene. You Are In Ethriel begins when current city is Ethriel and chargencondition is false. You Are In Ethriel ends when current city is not Ethriel. When You Are In Ethriel begins:
now every ethriellink is held by the player;
To say ethriellink (nextEthrielLink - an ethriellink):
hyperlink "[Displayname of nextEthrielLink]" as "zzxvm [nextEthrielLink]"
An ethriellink is a kind of link.
Understand "zzxvm [any ethriellink]" as ethriel linking. Ethriel linking is an action applying to one thing.
Carry out ethriel linking:
if the noun is an ethriellink listed in the Table of All EthrielLinks:
say "[reply entry]";
otherwise:
say "[bold type]BUG:[roman type] Tried to carry out ethriel linking with [italic type][the noun][roman type] but that does not appear to be an ethriel link:";
showme the noun;
Ethriellinks are defined by the Table of All EthrielLinks.
Table of All EthrielLinks
Ethriellink Displayname reply
Going Home in Ethriel "seek rest" "[seeking rest in Ethriel]"
Seeking Entertainment in Ethriel "seek entertainment" "[seeking entertainment in Ethriel]"
Sleeping in Ethriel "sleep" "[sleeping in Ethriel]"
Visiting an Ethriel Theatre "visit theatre" "[visiting a theatre in Ethriel]"
Theatre Secondlink "theatres" "[visiting a theatre in Ethriel]"
Visiting an Ethriel Bathhouse "visit bathhouse" "[visiting a bathhouse in Ethriel]"
Bathhouse Secondlink "bathhouses" "[visiting a bathhouse in Ethriel]"
Relaxing in an Ethriel Bathhouse "relax" "[relaxing in a bathhouse in Ethriel]"
Fantasizing at Home in Ethriel "fantasize" "[fantasizing in Ethriel]"
Cardhouses Link in Ethriel "cardhouses" "[cardhouses in Ethriel]"
Playing Games in Ethriel "play games" "[playin da games]"
Seeking Food in Ethriel "Seek food" "[seeking food in Ethriel]"
Eatin at Taigahane's "Taigahane's" "[Food at Taigahane's]"
Eatin at Korloave's Greenhouse "Korloave's Greenhouse" "[Food at Korloave's Greenhouse]"
Eatin at Cakeshapes "Cakeshapes" "[Food at Cakeshapes]"
Eatin at S&S in Ethriel "S&S Flatbreads" "[Food at S&S Flatbreads in Ethriel]"
Seeking Nature in Ethriel "seek nature" "[seeking nature in Ethriel]"
Wandering in Nature near Ethriel "wander" "[wandering in nature]"
To say cardhouses in Ethriel:
try visiting a cardhouse;
To say seeking rest in Ethriel:
If the location is Your Sort-Of Home in Ethriel:
stop the action;
Otherwise if the location is Your Room in an Ethriel Inn:
stop the action;
Otherwise if a home in Ethriel is true:
playerport to Your Sort-Of Home in Ethriel;
Otherwise:
playerport to Your Room in an Ethriel Inn;
To say seeking food in Ethriel:
if the location is Food Options in Ethriel:
stop the action;
Otherwise:
playerport to Food Options in Ethriel;
To say visiting a theatre in Ethriel:
try visiting a theatre.
To say visiting a bathhouse in Ethriel:
If the location is Your Favorite Bathhouse in Ethriel:
Stop the action;
Otherwise:
playerport to Your Favorite Bathhouse in Ethriel.
To say seeking nature in Ethriel:
If the location is Beyond the Domes:
Stop the action;
Otherwise:
playerport to Beyond the Domes.
To say wandering in nature:
try wandering;
Wandering is an action applying to nothing. Understand "wander" as wandering.
Instead of wandering when the location is Beyond the Domes:
say "This action is not yet implemented."
Relaxing is an action applying to nothing. Understand "relax" as relaxing.
Instead of relaxing when the player is in a bathhouse:
say "You find somewhere calm and comfortable, and just rest. The land gods favor you with a basic spell of cleanliness. The world is pure, good, and gentle.";
now securitynum of the player is securitynum of the player + 1;
follow the turnpass rule.
To say relaxing in a bathhouse in Ethriel:
try relaxing;
To say Location Command Block in Ethriel:
say "'[EthrielLink Seeking Entertainment in Ethriel]' will bring you to the entertainment options for your current city, '[EthrielLink Going Home in Ethriel]' will take you to your home, or to your room at a local inn if you haven't got a home in this town, 'seek work' will take you to the daywork options screen, 'seek cargo' will take you to a mercantile clearinghouse (also the destination for delivering cargo), or '[EthrielLink Seeking Nature in Ethriel]' to go hunting, gathering, or just relax in nature (doesn't work in some cities). '[EthrielLink Seeking Food in Ethriel]' will give you the civilized restaurant and grocery options (if available). You can also 'depart' to go to another city if your preparations are adequate.[run paragraph on]".
To say Personal Command Block in Ethriel:
say "You can always '[Personallink check calendar]' to see the current date in all three calendars or check the '[personallink check sheet]' to see your own stats and top 3 skills. To see all your skills, use '[personallink check skillbook]'. '[EthrielLink Sleeping in Ethriel]' will automatically move you to your housing in the current city, either a home (if you have one locally) or a room at an inn (if you don't).[run paragraph on]".
Understand "seek rest" as going home. Going home is an action applying to nothing. Instead of going home when current city is Ethriel and chargencondition is false:
If the location is Your Sort-Of Home in Ethriel:
stop the action;
Otherwise if the location is Your Room in an Ethriel Inn:
stop the action;
Otherwise if a home in Ethriel is true:
playerport to Your Sort-Of Home in Ethriel;
Otherwise:
playerport to Your Room in an Ethriel Inn;
Understand "seek entertainment" as seeking entertainment. Seeking entertainment is an action applying to nothing. Instead of seeking entertainment when current city is Ethriel and chargencondition is false:
If the location is Entertainment Options in Ethriel:
Stop the action;
Otherwise:
playerport to Entertainment Options in Ethriel.
Understand "seek food" as seeking food. Seeking food is an action applying to nothing. Instead of seeking food when current city is Ethriel and chargencondition is false:
If the location is Food Options in Ethriel:
Stop the action;
Otherwise:
playerport to Food Options in Ethriel;
To say seeking entertainment in Ethriel:
If the location is Entertainment Options in Ethriel:
Stop the action;
Otherwise:
playerport to Entertainment Options in Ethriel.
To say sleeping in Ethriel:
try sleeping;
Your Favorite Bathhouse in Ethriel is a room. Your Favorite Bathhouse in Ethriel is a bathhouse. "Ethriel is on the short, prestigious list of theomes renowned for its public bathhouses, having twenty five in all to serve the five city-domes in which its dragons dwell. Most of the bathhouses in Theoma have separated sex-positive and sex-negative baths. The hot water is delightful either way, but the vibe is very different. [if the alloace spectrum of the player is sex-repulsed asexual]You, of course, are in the sex-negative side of your favorite bathhouse. You're allowed to flirt here, but you'll never see anything more explicit than a kiss.[otherwise]You are in the sex-positive side of your favorite bathhouse. Public displays of sexuality are acceptable but never compulsory here.[end if]
Off to the side, you see a [if the alloace spectrum of the player is sex-repulsed asexual]vrash lounging with a small vrash who is almost certainly their child.[otherwise]trio of vrash groping each other. One of them is out of the water with her tail raised over the pool, and another has his nose pushed forward to take advantage.[end if] This kind of scene is pretty normal here.
Local commands: You can '[EthrielLink Relaxing in an Ethriel Bathhouse]' here, or 'talk to' a local. [line break]Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]".
There are 2 privately-named proper-named genericNPCs in Your Favorite Bathhouse in Ethriel.
Skakel's Games is a room. Skakel's games is a cardhouse. "Skakel's Games is a place to buy and sell board games and card games, but more than that it's a place to play them. A table can be rented for a petty sum. There are usually gamesgons hanging around to recruit into a game, and games to spectate when you're waiting for a slot to open or a group to come apart and seek other entertainments. Failing all else, Skakel zirself is there most of the time and willing to play any game zie knows (of which zie knows a great many). And there are finger-friendly snacks and drinks available here or in adjacent businesses.
Local commands: You can '[EthrielLink Playing Games in Ethriel]' here, or 'talk to' a local. [line break]Area Change commands: [Location Command Block in Ethriel][line break]Personal Commands: [Personal Command Block in Ethriel]"
There is a privately-named proper-named genericNPC in Skakel's Games.
Your Sort-Of Home in Ethriel is a room. "This isn't really your home anymore, now that you've quit your job and resolved to go adventuring. You'll be gone for years, so you imagine. This traveling is going to be your new career. Are you going to come back to Ethriel at the end of your journey? If you're just going to move away, you should probably sell your home. Otherwise, it'll sit here gathering dust in your absence.
Local commands: You have some books and bookgems in the home (potentially quite a lot if you've been an authorgon or philosophygon). 'Check library' will yield a list of notable titles. You can try to amuse yourself with the power of your mind alone using the '[EthrielLink fantasizing at home in Ethriel]' command, but it'll get old pretty quick. If anyone is traveling with you and staying in your room as they do, you may 'talk to' them. [line break] Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]"
To say playin da games:
try playing games;
Fantasizing is an action applying to nothing. Understand "fantasize" as fantasizing. Instead of fantasizing when current city is Ethriel and chargencondition is false:
If the entertainNum of the player is 10:
say "You feel way too good to waste time sitting around lost in thought.";
Otherwise:
try silently going home;
If the fantasizeCooldown of the player is 0:
say "[daydreaming]";
now entertainNum of the player is entertainNum of the player + 1;
now the fantasizeCooldown of the player is 56;
follow the turnpass rule;
Otherwise:
say "You've been doing that a lot lately. Are you sure you want to?";
If player consents:
let fantasizechance be a random number between 1 and the fantasizeCooldown of the player;
let creativity be the writing level of the player plus a random number between 1 and 26;
If a random chance of creativity in fantasizechance succeeds:
say "[daydreaming]";
now entertainNum of the player is entertainNum of the player + 1;
now the fantasizeCooldown of the player is 56;
Otherwise:
say "You try to focus yourself on a fantasy about [a random item from the list of daydreams]. It works, kind of, you think about it... you waste time... it stings. Ugh. You're so bored. Sitting around doing nothing like this is dreadful.";
now entertainNum of the player is entertainNum of the player - 1;
follow the turnpass rule;
Otherwise:
stop the action;
To say fantasizing in Ethriel:
try fantasizing
A check sleeping rule:
If the TirednessVar of the player is less than 3:
say "You're not sleepy.";
Stop the action;
Carry out sleeping (this is the standard carry out sleeping rule):
try silently going home;
say "[Dream]";
follow the resting rule;
This is the resting rule:
Now the TirednessVar of the player is 0;
follow the turnpass rule;
To say Dream:
If a random chance of 1 in 9 succeeds:
choose row 4 in the Table of Dreams;
say "You have a nightmare about [a random item from subject entry].";
now the securityNum of the player is the securityNum of the player - 1;
If a random chance of 1 in 2 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
If a random chance of 1 in 20 succeeds:
now the securityNum of the player is the securityNum of the player + 2;
Otherwise if a random chance of 3 in 9 succeeds:
choose row 3 in the Table of Dreams;
say "You have a confusing dream about [a random item from subject entry].";
If a random chance of 1 in 4 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
If a random chance of 1 in 4 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
If a random chance of 1 in 5 succeeds:
now the entertainNum of the player is the entertainNum of the player + 1;
If a random chance of 1 in 10 succeeds:
now the securityNum of the player is the securityNum of the player + 1;
Otherwise if a random chance of 8 in 9 succeeds:
choose row 2 in the Table of Dreams;
say "You have a pleasant dream about [a random item from subject entry].";
now the securityNum of the player is the securityNum of the player + 1;
If a random chance of 1 in 2 succeeds:
now the entertainNum of the player is the entertainNum of the player + 1;
If a random chance of 1 in 3 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
Otherwise:
choose row 1 in the Table of Dreams;
say "You have a boring dream about [a random item from subject entry].";
now the entertainNum of the player is the entertainNum of the player - 1;
If a random chance of 1 in 4 succeeds:
now the securityNum of the player is the securityNum of the player + 1;
Table of Dreams
valence subject
"boring" {"phoenixes", "talking with your parents", "studying a simple pattern", "doing math", "watching shadow puppets", "watching a dull play", "meditating", "nothing you can remember", "an illimitable void, safe and empty", "a gentle snowfall", "boring, simple music", "a nearly-featureless flat plane with a few houses, widely separated", "a dark, quiet place", "listening to an interminable sermon", "walking along an endless road", "going out to eat at a restaurant that serves only bland foods", "arguing with a dragon who speaks in a monotone voice with no urgency", "staffing a charitable collections booth at a fairground", "reading a book", "listening to someone you don't know well as they ramble endlessly about an interest you don't share", "watching grass grow", "watching paint dry", "a simple, fluctuating pattern", "being snowed in with nothing to do", "being rained on while walking a long distance", "things that should've been exciting, but inexplicably weren't", "attending a banquet of bland food", "resting somewhat uncomfortably, but not so uncomfortably that you actually get up", "being so safe that nothing ever happens", "a static, blank landscape of grey rocks", "a cloud of twinkling stars", "exploring a hot, dry landscape where nothing lives", "wandering an endless cityscape without the money to enjoy any of the amenities or buy anything in the shops", "flipping through a book of illustrations drawn from unexceptional moments in your own life", "exploring a museum that has no connection to your interests", "studying abstract art", "attending a party where nothing particularly happens", "a perfectly ordinary day that happened decades ago", "working a cordsaw in a forest", "a quiet place of perfect safety", "a stream of nonsensical text that doesn't actually hold your attention, but from which you find you somehow cannot look away", "being menaced by threats that you absolutely know cannot harm you in any way"}
"good" {"phoenixes", "friendly vrash-like beings", "stinky but amicable chakocha, tesam, and esseri", "exploring a ruined city while feeling oddly serene", "being a fantastic musician", "being a fantastic artgon", "cuddling someone you like", "resting in a beautiful place", "counting an endless pile of treasure", "playing a game", "exploring an endless temple", "flying over a metal cityscape", "sunning yourself", "swimming in a coastal lagoon", "eating in a fancy restaurant", "playing in a treasure vault", "bells", "cute otters", "being a ghost", "running endlessly without fatigue", "an infinite forest", "an infinite swamp", "vacationing in a place with beautiful clifftop vistas", "talking to a raven", "talking to a friend", "talking to your parents", "contemplating a beautiful, shifting pattern", "sleeping in a comfortable, safe place", "a vrash in beautiful armor", "the greater tube-like shape of Theoma", "your own geomantic interface", "flying over a herd of prey animals in a fertile plains", "eating an endless meal of your favorite foods", "a strangely familiar vohntrai", "the Archive of Lost Things", "writing a story", "resting in a quiet, silent cave", "shopping with an unlimited budget", "playing a game with dragons you like", "reading a book", "talking to a snake", "nothing you can remember", "watching a play", "dismantling a complicated machine", "listening to a choir of dragons", "music", "a symphony", "painting a picture of a landscape", "painting a picture of a familiar dragon", "looking out over the landscape from a mountain peak", "writing a letter to a childhood friend", "cooking", "watching a large structure be built at a pace of a day every four seconds", "a quiet place of perfect safety", "roasting marshmallows over a campfire with friends", "swimming in a forest river", "attending a campfire party with a bunch of stinky, friendly tesams", "hunting", "eating sweets bigger than you are", "exploring a landscape of candy", "visiting a mountaintop monastery", "just being an izerah", "dancing under a lightning storm", "a band performing with a kalla lead singer who calls down lightning bolts at exciting moments in their songs", "a temple ground redolent with incense and the sound of gentle music", "a fairground full of games of strength and skill", "attending a free drinks night at a bar", "flying", "wrestling with a friendly vrash who is slightly smaller and weaker than you are", "exploring a museum", "playing cards with dragons you like", "resting under a starry sky", "raising a Kelkaithian city-dome", "flying between cities at unnatural speed, passing countless dragons along the way", "a gentle snowfall", "playing in the snow", "dancing in the rain", "being too comfortable to move", "studying a bizarre creature", "exploring a hot, dry landscape with beautiful rock formations", "flying over an infinite tundra", "visiting a city so vast that it could contain the famous megacity Polser many times over", "flipping through a book of illustrations drawn from happy moments in your own life", "studying abstract art", "attending a festival of handpies with unlimited free samples", "discovering a sacred truth about reality that, unfortunately, no longer makes sense after you wake up", "hunting", "visiting a spa", "creating a world", "running a citystate", "getting a kaima reading from an attractive dragon"}
"confusing" {"phoenixes", "friendly bugs", "eating in a fancy restaurant where you don't recognize any of the food items", "dancing with a weird thing", "tracing a complicated knot", "cutting the world apart with your claws", "getting lost in an endless temple", "getting lost in a ruined city", "chasing something between several different worlds", "time travel", "playing an extremely complicated game", "a chaotic mishmash of images", "a friendly being whose shape changes constantly", "being too drunk to function", "performing in a play whose lines you don't know", "reciting a nonsensical poem", "doing math", "an otter the size of Theoma", "meditating in a land of endless fire", "contemplating a beautiful, shifting pattern", "dragons who can't say anything directly, but who can only speak in jokes, puns, and innuendo", "being a hive-mind", "being a thing made of lightning that cannot see or speak, yet interacts with the world nonetheless", "nothing you can remember", "trying to solve a shifting puzzle", "watching a poorly written play", "trying to assemble a complicated machine", "navigating a crowded space while blind", "struggling to wake up from a series of harmless dreamspaces", "studying a bizarre creature", "flipping through a book of illustrations drawn from moments in your life when you were baffled", "an endless stream of nonsensical text", "disjointed mathematical equations", "trying to solve a riddle featuring three scammergons and an honest merchantgon", "an impossible city where the direction of gravity changes from surface to surface", "getting lost in an infinite city", "running a citystate", "studying nonsensical equations that someone has assured you are key to creating entire worlds out of magic", "trying to write a story, but changing your mind every few sentences about what the story is about", "being threatened in comically implausible ways", "an infinite city", "an infinite maze", "a chaotically structured and electrified mesh that you can't touch without being jolted, but which you feel compelled to study intently", "talking to a fire", "being lectured by shadows", "exploring a pale forest inhabited by ghosts"}
"bad" {"bugs", "not having wings", "fleshy pink things"," demonic entities", "phoenixes", "scenes of tremendous violence", "ruined cities", "giant dragon-eating predators", "babbling nonsense every time you try to talk", "useless legs", "paralysis", "hurting a friend", "snoutless dragons", "toothy monstrosities", "meat moss", "fire", "drowning", "hearing voices", "being wounded", "burying a loved one", "a great calamity", "a vile deception from someone you trusted", "flooding", "a blizzard", "salad", "an otter the size of Theoma", "doing math", "burning in a land of endless fire", "being attacked by a mad ghost", "trying to interact with other dragons while having a stiff, emotionless face", "nothing you can remember", "fighting for your life", "watching a play designed to personally insult you", "falling", "yourself as a zombie", "exploring a landscape of candy where everything is half-eaten, sticky, and stinky with decay", "being ravenous in a world where all the food is rotten", "your teeth falling out", "repeatedly waking up from a nightmare only to discover it is still ongoing", "flipping through a book of illustrations drawn from unpleasant moments in your own life", "having to write a self-insulting sentence many times over with a pen that draws your own blood to convert it into ink", "running a citystate amidst disaster", "discovering a horrifying truth about reality that, thankfully, no longer makes sense after you wake up", "trying to create a world, but the dragons of your world are impossibly evil", "trying to create a world, but everything you attempt goes wrong", "exploring a pale forest inhabited by mad ghosts", "being a destitute wanderer dependent on handouts and hunting to get by"}
To say daydreaming:
say "You find yourself thinking about [a random item from the list of daydreams]. The flight of fancy gets complicated and occupies your spare moments, entertaining you."
The list of daydreams is always {"phoenixes", "talking with a friend", "a complex ever-expanding pattern", "talking with someone famous", "beautiful snowy weather", "a beautiful rainstorm", "a dramatic landscape of cliffs and vistas", "a forest", "going hunting", "eating your favorite foods", "a dream-like chaos of images", "a painting you really like", "a song you heard someone singing", "an instrumental piece apparently composed by your subconscious", "the city of Polser in Midwestern Kelkaith, largest city in the world", "the city of Zyrine in Central Tachamund, with its great flaming sigil in the sky above it", "the city of Mosdenechrak in Central Tachamund, where amazing food is nearly free", "Ethriel", "the former Marim League in the northern reaches of Tachamund", "the Three Memories in far-eastern Kelkaith, where the ancient ghosts of prior worlds have created a fantastically wealthy economy", "Baunt, a city in Midwestern Kelkaith that's said to have bathhouses as nice as those of Ethriel", "the winter sports league in Ztornaranth, on the western edge of midwestern Kelkaith", "the city of Suvkeyanin in Western Tachamund, the world's second largest city (after Polser)", "the city of Shibanyet in Northern Kanjamund, said to be the world's happiest city", "the city of Korjek in Northern Kanjamund, said to be the most tourist-oriented necromantic economy in the world", "Edge of Paradise, directly north of Ethriel on the edge of the world, said to have roads leading out of the world into small, wealthy demiplanes", "the philosopher kingdom of Isoss in far-western Kelkaith, Theoma's only monarchy", "the city of Theoma's Limit in the extreme south of Reytas, said to exist partially in the Firelands and to be perpetually covered in flames that repair dragons and objects rather than consuming them", "the city of Onayraye, the only city in the vast Ormerian interior, where vashael live wild and hunt", "the city of Rodrimor, on the southern coast of Ormeri, a city of cosmopolitan spice-farmers who grow an astonishing range of high-value crops for worldwide export", "the holy city of Ediveyrm, high in the mountains of the Serhin Range in Midwestern Kelkaith, where benevolent ghosts teach of religions from this world and the worlds preceding it", "a beautiful, shifting pattern", "a story you enjoyed", "writing a story", "snatches of a poem you remember so poorly that you suspect you're composing it anew", "a complex pattern of interlocking clockworks", "shopping with an unlimited budget", "sacred architecture", "fighting a mad ghost", "a landscape made of candy", "mentally creating a world", "getting into a snowball fight", "performing aerobatic tricks in the sky", "running a citystate", "trying to interact with other dragons while having a stiff, emotionless face", "a city catching fire", "watching a play designed to personally insult you", "watching a performance of your favorite play, with the actors ad-libbing replacements for some of the scenes", "designing a puzzle for other dragons to solve", "getting lost in an endless temple", "getting lost in a city", "innuendo", "being a shapeshifter", "the city-domes of Ethriel", "kalla fashion", "the process of thinking itself", "some theology you heard once", "crystals", "the city of Raldrani in Midwestern Kelkaith, famous for its glassworks", "the city of Xanasal in Midwestern Kelkaith, famous for the land god who lives there in a mountain-sized form", "the city of Phoenix Sea in the extreme south of Theoma, on the subcontinent known as The Embassy, which connects to a body of 'water' in the Firelands and has tons of phoenixes in residence", "being able to casually summon food the way land gods and ghosts can", "the things you'd do if you had the world-warping powers available to advanced necromancers", "one of the many times your school took you to a casino in youth, helping you to master probabillity control with geomancy", "some of the geomantic theory you invoke in your daily divinations"}.
Your Room in an Ethriel Inn is a room. "You've lived in Ethriel for years, but now you've no home here. The inn charges nightly... Your room is nice, but small. It's just one of many. You've got a blue-padded nest to sleep in and some art on the wall to appreciate, if you like a painting of a rare steak and some fruit.
Local commands: You can 'sleep' or 'read a book' here. If you want to read a specific book or bookgem, 'read <title>' will focus on it. If anyone is traveling with you and staying in your room as they do, you may 'talk to' them. [line break]Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]"
Entertainment Options in Ethriel is a room. "Ethriel has a lot of pilgrimgons visiting the Archive of Lost Things, which gives it a touristgon economy. It has many options for entertainments. Really, it's no wonder you lived here for so long. There are [EthrielLink Theatre Secondlink], bowling alleys, [EthrielLink Bathhouse Secondlink], [ethrielLink Cardhouses Link in Ethriel], and of course the most famous museum in Theoma: The Archive of Lost Things. You can also visit a master artgon to try to view recent paintings and potentially commission a new one, or a book shop to try to pick up a book or bookgem that might just be your new favorite.
Local commands: The 'visit <type of venue> command will go to specific places. '[EthrielLink Visiting an Ethriel Theatre]' to see a play, '[EthrielLink Visiting an Ethriel Bathhouse]' to visit a bathhouse, and so on. 'Visit a theatre' will also be recognized. Of special note in this location is the 'visit museum' command, which would ordinarily visit a theatre, but in this location will visit the Archive of Lost Things, the most notable landmark of Ethriel. [line break]Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]"
Understand "visit cardhouse" or "visit a cardhouse" or "visit card house" or "visit a card house" as visiting a cardhouse. Visiting a cardhouse is an action applying to nothing. Instead of visiting a cardhouse while current city is Ethriel:
playerport to Skakel's Games.
Understand "play games" as playing games. Playing games is an action applying to nothing.
Instead of playing games when the player is in Skakel's Games:
let card skill check be the mental games level of the player + 2;
now hungerNum of the player is hungerNum of the player - 1;
If the cardhouseCooldown of the player is 0:
If a random chance of 1 in 10 succeeds:
say "You have a run of excellent luck at the cardhouse. Nobody's playing for stakes — that just provokes geomantic cheating — but you still get that rush of turning up the right cards at the right times to make your clever strategies work out. You're looking forward to your next session. (Cardhouse cooldown reset!)";
now entertainNum of the player is entertainNum of the player + 2;
now cardhouseCooldown of the player is 0;
give 4 XP to the player in mental games;
Otherwise:
If a random chance of 1 in card skill check succeeds:
say "You get stomped at the cardhouse. The more experienced players know the odds and they know the decks. It doesn't matter which card game you play. It's just not your day. And it's petty, because you did still have fun, but it does hit your confidence to get nowhere like this.";
now entertainNum of the player is entertainNum of the player + 1;
now securityNum of the player is securityNum of the player - 1;
If the mental games level of the player > 9:
say "You're GOOD at these games, so it's worth it to meet players who can show you the floor like this. The cardhouse isn't usually this hot. There's some real legends stopping by today. You're raring to get back into the scene. (Cardhouse cooldown reset!)";
give 20 XP to the player in mental games;
give 4 XP to the player in carousing;
now entertainNum of the player is entertainNum of the player + 4;
now cardhouseCooldown of the player is 0;
Otherwise:
give 2 XP to the player in mental games;
now cardhouseCooldown of the player is 20;
If the mental games level of the player is 0:
say "This is kind of what you have to expect when you don't know how to play the games. It'll take some tolerance for defeat to actually get good at cards.";
Otherwise if a random chance of card skill check in 150 succeeds:
say "You're the star of the cardhouse. You know the decks, you know your strats, and your bets always land... Well, so to speak. You're not playing for stakes. Geomantic manipulation of the odds is too easy for dragons to play for stakes. Still, it's a ton of fun, and quite cheap. Cardhouses don't charge that much and they have decks for dozens of games.";
now entertainNum of the player is entertainNum of the player + 2;
now securityNum of the player is securityNum of the player + 1;
now cardhouseCooldown of the player is 12;
give 10 XP to the player in mental games;
Otherwise:
say "You play competent games with several decks at the cardhouse. You win some, you lose some, and the hours pass quickly. Since you're not here 'with' someone, you miss out on the personal connection with another dragon, but on the other hand nothing stops you from dropping in on whatever game is gathering. Cardhouses are a good time. They don't charge that much and they have decks for dozens of games.";
now entertainNum of the player is entertainNum of the player + 1;
now cardhouseCooldown of the player is 16;
give 4 XP to the player in mental games;
follow the turnpass rule;
Otherwise:
say "You feel like your last visit to the cardhouse was pretty recent. Are you sure you want to go again already?";
if player consents:
if a random chance of card skill check in 30 succeeds:
If a random chance of 1 in 10 succeeds:
say "You have a run of excellent luck at the cardhouse. Nobody's playing for stakes — that just provokes geomantic cheating — but you still get that rush of turning up the right cards at the right times to make your clever strategies work out. You're looking forward to your next session. (Cardhouse cooldown reset!)";
now entertainNum of the player is entertainNum of the player + 2;
now cardhouseCooldown of the player is 0;
give 4 XP to the player in mental games;
Otherwise:
If a random chance of 1 in card skill check succeeds:
say "You get stomped at the cardhouse. The more experienced players know the odds and they know the decks. It doesn't matter which card game you play. It's just not your day. And it's petty, because you did still have fun, but it does hit your confidence to get nowhere like this.";
now entertainNum of the player is entertainNum of the player + 1;
now securityNum of the player is securityNum of the player - 1;
If the mental games level of the player > 9:
say "You're GOOD at these games, so it's worth it to meet players who can show you the floor like this. The cardhouse isn't usually this hot. There's some real legends stopping by today. You're raring to get back into the scene. (Cardhouse cooldown reset!)";
give 20 XP to the player in mental games;
give 4 XP to the player in carousing;
now cardhouseCooldown of the player is 0;
now entertainNum of the player is entertainNum of the player + 4;
Otherwise:
give 2 XP to the player in mental games;
now cardhouseCooldown of the player is 20;
If the mental games level of the player is 0:
say "This is kind of what you have to expect when you don't know how to play the games. It'll take some tolerance for defeat to actually get good at cards. You might also consider buying a book on card strategies.";
Otherwise if a random chance of card skill check in 150 succeeds:
say "You're the star of the cardhouse. You know the decks, you know your strats, and your bets always land... Well, so to speak. You're not playing for stakes. Geomantic manipulation of the odds is too easy for dragons to play for stakes. Still, it's a ton of fun, and quite cheap. Cardhouses don't charge that much and they have decks for dozens of games.";
now entertainNum of the player is entertainNum of the player + 2;
now securityNum of the player is securityNum of the player + 1;
now cardhouseCooldown of the player is 12;
give 10 XP to the player in mental games;
Otherwise:
say "You play competent games with several decks at the cardhouse. You win some, you lose some, and the hours pass quickly. Since you're not here 'with' someone, you miss out on the personal connection with another dragon, but on the other hand nothing stops you from dropping in on whatever game is gathering. Cardhouses are a good time. They don't charge that much and they have decks for dozens of games.";
now entertainNum of the player is entertainNum of the player + 1;
now cardhouseCooldown of the player is 16;
give 4 XP to the player in mental games;
Otherwise:
If a random chance of 1 in 10 succeeds:
say "You have a run of excellent luck at the cardhouse. Nobody's playing for stakes — that just provokes geomantic cheating — but you still get that rush of turning up the right cards at the right times to make your clever strategies work out. You're looking forward to your next session. (Cardhouse cooldown reset!)";
now entertainNum of the player is entertainNum of the player + 2;
give 4 XP to the player in mental games;
now cardhouseCooldown of the player is 0;
Otherwise if a random chance of 1 in card skill check succeeds:
say "The regulars at the cardhouse step all over you. You can't get anything right in the games you play. The other gamesgons make sympathetic noises at you, but it doesn't help. You feel boredom with a tinge of despair as you push yourself through hopeless game after hopeless game.";
now cardhouseCooldown of the player is 28;
now securityNum of the player is securityNum of the player - 2;
now entertainNum of the player is entertainNum of the player - 2;
give 2 XP to the player in mental games;
if the mental games level of the player < 2:
say "Even if you want to learn the games, maybe you should wait a week before you come back in, just to recover emotionally and be ready to lose. You might also consider buying a book on card strategies.";
Otherwise if a random chance of card skill check in 120 succeeds:
say "You do well. Really well. You pick familiar strategies in familiar games, and find your opponents falling into predictable, exploitable patterns. The other gamesgons acknowledge your skill graciously and you bask in a bit of praise. Still, it's all a little too familiar. It passes the hours tolerably well — and rather cheaply, given the cost structure at a cardhouse.";
now securityNum of the player is securityNum of the player + 1;
now entertainNum of the player is entertainNum of the player + 1;
give 6 XP to the player in mental games;
now cardhouseCooldown of the player is 16;
Otherwise:
say "You play competent games with several decks at the cardhouse. You win some, and you lose some. The hours pass a bit slowly. You're not suffering per se, but maybe you need a more varied range of entertainments.";
give 4 XP to the player in mental games;
now cardhouseCooldown of the player is 16;
follow the turnpass rule;
Understand "visit theatre" or "visit a theatre" as visiting a theatre. Visiting a theatre is an action applying to nothing.
Instead of visiting a theatre while current city is Ethriel:
If the theatreCooldown of the player is 0:
now the hungerNum of the player is the hungerNum of the player - 1;
sort the Table of Ethriel Plays in random order;
If there is a playyear of DateYear in the Table of Ethriel Plays:
say "You attend [the play corresponding to a playyear of DateYear in the Table of Ethriel Plays]";
Otherwise:
choose row 1 in the Table of Ethriel Plays;
say "You attend [play entry]";
say "You spend a few hours hanging out in cafes, picking up some snacks and chatting about the play you saw with others who attended the showing. [if TimekeepingVar is 3]Ethriel is spectacular. It's still alit and active all night long.[end if]";
Now the entertainNum of the player is the entertainNum of the player + 2;
give 2 XP to the player in writing;
follow the turnpass rule;
now the theatreCooldown of the player is 28;
Otherwise:
say "You've already attended the theatre this week. Are you sure you want to go again?";
If player consents:
now the hungerNum of the player is the hungerNum of the player - 1;
sort the Table of Ethriel Plays in random order;
If there is a playyear of DateYear in the Table of Ethriel Plays:
say "You attend [the play corresponding to a playyear of DateYear in the Table of Ethriel Plays]";
Otherwise:
choose row 1 in the Table of Ethriel Plays;
say "You attend [play entry]";
say "You spend a few hours hanging out in cafes, picking up some snacks and chatting about the play you saw with others who attended the showing. [if TimekeepingVar is 3]Ethriel is spectacular. It's still alit and active all night long. [end if][theatre overuse]";
Now the entertainNum of the player is the entertainNum of the player + 2;
give 2 XP to the player in writing;
follow the turnpass rule;
now the theatreCooldown of the player is 28;
To say theatre overuse:
If a random chance of 1 in 3 succeeds:
say "This time at least, packing your theatre visits has left you inspired. You find yourself picking apart tropes and archetypes in conversation with others, and really getting into the details of [the playtitle corresponding to a playyear of DateYear in the Table of Ethriel Plays].";
now the entertainNum of the player is the entertainNum of the player + 1;
give 2 XP to the player in writing;
Otherwise if a random chance of 1 in 3 succeeds:
say "As much as you enjoy watching plays, spending too much time bumming around the theatres makes you feel like a non-person whose own story is uninteresting. If you can't live an interesting life, maybe you could at least write one.";
Now the securityNum of the player is the securityNum of the player - 1;
Otherwise if a random chance of 2 in 3 succeeds:
say "Unfortunately, there are only so many plays going on in [current city]. Maybe you'd see something more exciting if you at least left to a different city. Seeing plays here is a waste of your money.";
now the entertainNum of the player is the entertainNum of the player - 3;
Otherwise:
say "";
Table of Ethriel Plays
playyear playtitle play
1227 "Fear the Firelands" "Fear the Firelands. It's a decent drama about an expedition to the firelands that separates a formerly loving couple who were on the expedition. One of the two develops a god complex when exposed to the ever-burning lands, and refuses to return to Theoma!"
1227 "Nura's Abyss" "Nura's Abyss. It's a fantastical adventure with wild sets and costumes, and a bunch of staged fights with fake blood and illusions. It's one of the showiest plays in local theatres and a big hit, but expensive to perform. You've seen it before, but it retains its imaginative character."
1227 "Fiddling Lizards" "Fiddling Lizards. This romantic comedy romp features a failed polyamorous romance and several energetic musical numbers. The actual story is tell-y and obvious, but the musical numbers make the whole performance worthwhile."
Food Options in Ethriel is a room. "Ethriel's touristgon economy gives it a thriving food culture as well. Locals often eat at [EthrielLink Eatin at Taigahane's], which offers cheap spiced reindeer, cabbage, and bread. More popular with visitors, at least if they can afford it, is [EthrielLink Eatin at Korloave's Greenhouse], a hot restaurant with an herbacious menu. Also famous, if not exactly a place for a balanced meal, is Cakeshapes in the third dome. [EthrielLink Eatin at Cakeshapes] sells sweets in unusual shapes. It is, as far as you know, the only place in Theoma where you can buy a meal in which the plate and cutlery are intended to be eaten as well. Lastly, there's [EthrielLink Eatin at S&S in Ethriel], which is a chain restaurant with outlets in many Kelkaithian cities that sells flatbreads topped with cheese plus tomato or cream sauce, and then a variety of specific options. There's also several grocery stores around the city.
Local commands: The 'visit <name of venue>' or 'eat at <name of venue>' commands will order food from specific places. This does not consume a time block unless you're attending with someone. 'Visit grocery store' will instead move to a grocery store. If using keyboard, omit apostraphes in place names. [line break]Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]"
Table of Restaurant Foods
Eatery Description of Food
Taigahane's {"the default meal option without modifications. Spiced reindeer, cabbage, and bread. It's filling, if basic. It comes with unlimited small beer to wash it down", "the spiced reindeer alone. This way, you can better appreciate the sweet spicy rub applied to the meat. It's really the only part of Taigahane's menu that stands out. It comes with unlimited small beer to wash it down", "a savory reindeer stew, a thick, rich brown stew, served in a bread bowl that is quite delicious when it's soaked in these flavors. It comes with unlimited small beer", "a reindeer sandwich. It's not that different from the default meal option, but the meat is chopped up so it's easier to shear through the sandwich without so much pressure that it falls apart, and on the whole it's a little faster and more convenient to eat as a result. The unlimited small beer is the same with every item from Taigahane's, and decent though mostly just meant for hydration rather than flavor"}
Korloave's Greenhouse {"a chickpea and kale salad with sun-dried tomato vinaigrette. The crisp, roasted chickpeas offer a nutty flavor while the cilantro, mint, and scallions give it a cool herbal spice, an impression magnified by the fact that the dish is served cool. It actually comes to the table quite quickly. Good restaurants use divinations to start preparing food before it's ordered, but in this case you suspect the speed was because these salads are left to sit in the cooler overnight. That's no insult, but recommended handling for the recipe. The dish comes with a crystal glass bowl of white wine to drink", "a citrus noodle salad with tofu and fresh herbs. This intense, complex dish comes in with sweet tartness from its fruit, salt and a touch of smoke from its thin dark sauce, and a bright herbaciousness from the large leaves of minimally processed herbs. You're not a vegetarian, but vegetarians in Ethriel know that Korloave's is a good place to get a professionally prepared vegetarian meal. The dish comes with a crystal glass bowl of grapefruit juice to drink", "a sliced steak salad. The tomato, scallion, mint, and basil is all very welcome, but there are two stars to this dish. The first is the meat, thin-sliced but ample in quantity. The second is the spicy dressing, derived of fish sauce and livened up with a bit of lime, garlic, and sugar. The scallion in the salad is specifically the white parts of the scallion, making the ingredient function as a stand-in for onion. The dish comes with a crystal glass bowl of a tannic red wine", "onion basil beef. The name of the dish elides the heavy dose of chilies in the recipe. This extremely spicy dish does not come with a salad. It's mostly meat, and is particularly popular with kalla attending at Korloave's, even though by a quirk of the kalla tongue they can't taste the raw heat of the dish. To a kalla, this is a sweet onion beef. To any other dragon, this is a meat and onion dish served with basil and fire adorning it. The chilis are imported all the way from Reytas"}
Cakeshapes {"a set of blunt woodworking tools, you pay at the counter, buying a glossy edible plate and its associated softening sauce while you're there. Despite superficially convincing appearances, the tools are shells of recolored locuseen with cream and candyfloss inside of them. When you've finished your tools, you break the plate apart and dip it in the sweet softening sauce that is provided, then drink the remaining sauce and eat the waxy-sweet bowl in which it was provided.", "a realistic dragon's egg and an edible spoon, you pay at the counter. Taking your egg back to a table in the mall, you break it open and scoop out the sweet paste inside it. The egg is empty; the semblance of cannibalism is not taken to the extent of including a fetal dragon sculpture inside the egg. You crunch up the pieces of the shell [beakcheck 1] and lick them apart with your tongue, then you finish by manually breaking up the spoon and holding the pieces in your [beakcheck 2] until they likewise dissolve away. It's all very sweet.", "a small treasure chest full of coins. Each coin is a sweet that melts in your [beakcheck 2], and the treasure chest itself is a brittle sweet that functions only until you strain it with your fingers.", "a cake shaped like a heavy tome and an edible fork. Sitting open to a double-spread of illuminated pages, you spend a few moments reading about a land made of sweets in which life is easy and everything is delicious, then you dig in. The brittle tines of the fork break partway through, so you go up and buy another one; it's not the expensive part of this meal.", "an arid rocky landscape and a bowl of softening sauce. The 'rocks' would melt in your mouth if you were very patient, and you could well break up this whole dish and eat it that way, but the softening sauce starts them dissolving on contact, which is much faster. The 'rocks' fizz and melt in your mouth, revealing a mix of caramel or cream flavors depending on the color of the 'rock'. When you're done, you lick out the last drops of softening sauce (there isn't much left), then bite into the slightly waxy bowl itself."}
S&S Flatbreads {"cheese, garlic, spinach, and a heavy cream sauce. The flatbread is assembled before your eyes and slid into the oven. You wait ten minutes in the sitting area outside of the establishment, until they call your name and you come forward to pick up your plated flatbread. The rich, creamy, savory thing is still hot and ever so slightly sweet in crust and sauce, with the creamy sauce muting the bitterness of the spinach", "tomato sauce, pork, and cheese. The flatbread is assembled before your eyes and slid into the oven. You wait ten minutes in the sitting area outside of the establishment, until they call your name and you come forward to pick up your plated flatbread. The rich, savory thing is still hot and ever so slightly spicy from something in the meat, with a bright and tangy taste from the sauce and a gooey, salty flavor contributed by the cheese", "olives, pork, and tomato sauce. The flatbread is assembled before your eyes and slid into the oven. You wait ten minutes in the sitting area outside of the establishment, until they call your name and you come forward to pick up your plated flatbread. The rich, salty thing is still hot and ever so slightly spicy from something in the meat, with a piquant and luxurious flavor from the imported olives. The pricetag on this is surprisingly good for using so many olives", "fish, broccoli, garlic, cheese, corn, and tomato sauce. The flatbread is assembled before your eyes and slid into the oven. You wait ten minutes in the sitting area outside of the establishment, until they call your name and you come forward to pick up your plated flatbread. The only fish used at S&S Flatbreads is a small, salty fish with an intensely flavored oil whose flavor is not moderated at all from the preservation process it goes through before being shipped inland. It's a bit challenging to come up with a dish that uses the fish at this place and still tastes good, but it's rewardingly different from the other flavors you consume. The broccoli and corn have a moderating influence on the flavor. The flatbread as a whole is still rich and savory as every flatbread from S&S flatbreads is", "shredded quema, a salting of crumbled fatty pork, spinach, cheese, and a heavy cream sauce. The flatbread is assembled before your eyes and slid into the oven. You wait ten minutes in the sitting area outside of the establishment, until they call your name and you come forward to pick up your plated flatbread. The richness of the cream and pork is mediated by the gentle bitterness of the spinach and the gooey savoriness of the cheese. The cream and the crust contribute a little bit of sweetness.", "a giant cookie. If you want to eat a giant cookie, you can. This kind of dissolute meal scandalizes flux worlders, but where are those on Theoma? Immortality has its rewards. The cookie is put into the oven as though it were a flatbread, and a few minutes later it is pulled back out and plated for you. Gooey chips of melted locuseen candy are only the start; when you dig into the cookie, you discover it contains a thin, molten layer of locuseen in it. The cookie is dense and flavorful, very sweet and slightly bitter, with vanilla and caramel coming from the locuseen."}
To say beakcheck 1:
If species of the player is kalla:
say "with the tip of your beak";
Otherwise:
say "in your teeth".
To say beakcheck 2:
If species of the player is kalla:
say "beak";
Otherwise:
say "mouth".
Understand "visit Taigahanes" as visiting Taigahane's. Visiting Taigahane's is an action applying to nothing. Instead of visiting Taigahane's when current city is Ethriel:
If the hungerNum of the player < 1:
say "You're not hungry at all. You can't go out to eat like this.";
stop the action;
Otherwise if the eatingCooldown of the player is not 0:
say "You just ate; if you haven't eaten in a long time, you might still need more food, but you can't eat more right now.";
stop the action;
Otherwise:
choose row 1 in the Table of Restaurant Foods;
say "Taigahane's is a very modest place with homely decor, kept clean and faintly comical with its insistence on a fake half-timbered look despite being buried deep inside a metallic swaivshon city dome. There's a nice open fireplace around which the dining area is set. You take a seat, finding a short woodblock menu on the table you pick. A servergon soon approaches. Reviewing the block of wood with the menu burned onto it, you opt for [a random item from Description of Food entry].";
now the hungerNum of the player is the hungerNum of the player - 3;
If a random chance of 1 in 3 succeeds:
now the entertainNum of the player is the entertainNum of the player + 1;
If a random chance of 1 in 35 succeeds:
now the securityNum of the player is the securityNum of the player + 1;
now the eatingCooldown of the player is 1.
To say Food at Taigahane's:
Try visiting Taigahane's.
Understand "visit Korloaves Greenhouse" or "visit Korloaves" or "visit greenhouse" as visiting Korloave's Greenhouse. Visiting Korloave's Greenhouse is an action applying to nothing. Instead of visiting Korloave's Greenhouse when current city is Ethriel:
If the hungerNum of the player < 1:
say "You're not hungry at all. You can't go out to eat like this.";
stop the action;
Otherwise if the eatingCooldown of the player is not 0:
say "You juse ate; if you haven't eaten in a long time, you might still need more food, but you can't eat more right now.";
stop the action;
Otherwise:
choose row 2 in the Table of Restaurant Foods;
say "Korloave's Greenhouse greets you with a tropical heat. The main eating area is two stories tall and covered in glass. Surrounding it is a small park likewise surrounded by a second shell of glass. The open kitchen in the middle is abuzz with roasting meat and the rapid chopping of a knife in the hands of a muscular kalla chefgon as an endless supply of vegetable and herbal ingredients is prepared to feed the dragons flocking to the warm green restaurant. Above the two floors holding the seating and kitchen, a fat three-floored building clings to the ceiling of this level of the dome. The proprietors, being the eponymous Korloave the Herbgon for whom the place was named as well as zir three mates, live up there above their restaurant. [line break]You are met at the entrance by a waitgon who guides you to an open seat and hands you a paper menu. Reviewing the options, you select [a random item from Description of Food entry].";
now the hungerNum of the player is the hungerNum of the player - 3;
If a random chance of 1 in 2 succeeds:
now the entertainNum of the player is the entertainNum of the player + 1;
If a random chance of 1 in 35 succeeds:
now the securityNum of the player is the securityNum of the player + 1;
Otherwise if a random chance of 1 in 35 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
now the eatingCooldown of the player is 1.
To say Food at Korloave's Greenhouse:
Try visiting Korloave's Greenhouse.
Understand "visit Cakeshapes" as visiting Cakeshapes. Visiting Cakeshapes is an action applying to nothing. Instead of visiting Cakeshapes when current city is Ethriel:
If the hungerNum of the player < 1:
say "You're not hungry at all. You can't go out to eat like this.";
stop the action;
Otherwise if the eatingCooldown of the player is not 0:
say "You just ate; if you haven't eaten in a long time, you might still need more food, but you can't eat more right now.";
stop the action;
Otherwise:
choose row 3 in the Table of Restaurant Foods;
say "Cakeshapes has a smooth white aesthetic with curving lines and glass cases holding an eclectic range of inedible-looking things on pedestals with price cards and descriptions next to them talking about the flavors of their cake and icing components, or else specifying what kind of sweet they're actually made of (and what texture that implies). Each card says how long the item will keep. Most of them say they'll last only two weeks, but a few of them claim they'll remain edible for years if kept clean and cool. One entire wall is lined with shelves behind glass bearing still more of these dubiously-appetizing delicacies. If you wanted to buy tools and eat them, this place offers several flavors for that fantasy. A counter with a servergon behind it waits for you to make a selection, and a small eating area in the surrounding mall is there to provide eating arrangements if you want to eat your acquisition immediately. [line break]You browse the shelves looking for something that would be appealing right now. Picking out [a random item from Description of Food entry]. You are left with no sign of your meal and the energized sensation of having eaten way too much sugar in one sitting.";
now the hungerNum of the player is the hungerNum of the player - 6;
If a random chance of 2 in 3 succeeds:
now the entertainNum of the player is the entertainNum of the player + 2;
If a random chance of 1 in 35 succeeds:
now the securityNum of the player is the securityNum of the player - 1;
now the eatingCooldown of the player is 1.
To say Food at Cakeshapes:
Try visiting Cakeshapes.
Understand "visit S&S" or "visit S&S Flatbreads" or "visit S&S" as visiting S&S Flatbreads. Visiting S&S Flatbreads is an action applying to nothing. Instead of visiting S&S Flatbreads when current city is Ethriel:
If the hungerNum of the player < 1:
say "You're not hungry at all. You can't go out to eat like this.";
stop the action;
Otherwise if the eatingCooldown of the player is not 0:
say "You just ate; if you haven't eaten in a long time, you might still need more food, but you can't eat more right now.";
stop the action;
Otherwise:
choose row 4 in the Table of Restaurant Foods;
say "S&S Flatbreads is a simple lunch counter outlet. There's one in each of Ethriel's five city-domes. Boxes of ingredients sit open behind a glass front along the counter, a large oven behind the counter has topping-laden flatbreads cooking in it, and a platter of sandwich cookies stands next to the check-out register. S&S offers good prices and ample serving sizes. Although they're a large, impersonal organization, some dragons are obsessed with them. The food is very tasty. [line break]You approach the counter after standing in line briefly, and put in an order for a flatbread topped with [a random item from Description of Food entry]. You also pick up a beer or cider; although the main meal is reasonably priced, S&S insists on selling surprisingly upscale bottled import beverages. They are at least tasty. The serving size of the main dish is customized for your species, but it's still sized to be a lot of food. Nevertheless, it's so palatable that your appetite holds until you've finished it.";
now the hungerNum of the player is the hungerNum of the player - 6;
If a random chance of 2 in 3 succeeds:
now the entertainNum of the player is the entertainNum of the player + 2;
If a random chance of 1 in 5 succeeds:
now the entertainNum of the player is the entertainNum of the player - 1;
If a random chance of 1 in 35 succeeds:
now the securityNum of the player is the securityNum of the player + 1;
now the eatingCooldown of the player is 1.
To say Food at S&S Flatbreads in Ethriel:
Try visiting S&S Flatbreads.
Beyond the Domes is a room. "There are five massive city-domes in Ethriel, arranged at five of the points of a hexagon with the north point occupied only by a nature reserve. With all five domes under the same citystate government, Ethriel is the fourth largest city in Theoma, behind Polser (1st), Suvkeyanin (2nd), and Mosdenechrak (3rd). It's just a little larger than Zyrine (5th). It has the third most monumental construction, or the fifth, depending on whether the three underpopulated, overbuilt cities of Jiasote are considered one challenger or three. From outside of the city, you can see all this clearly. The domes absolutely dominate the landscape. They're taller than the trees. They're taller than the hills. Dragon-made mountains containing layer upon layer of buildings, and every individual layer five stories tall...
Around most sides of the city, there's a sparse ruralia with farms interspersed by forests. Some of the farms operate year-round with magical heating to keep the plants healthy, while others are only active from late spring to early autumn. Snow falls even in summer sometimes, but by the grace of the land god Indarian, the local plants are very cold-hardy, and the farmgons who insist on growing things from other regions have invested in the heat runes needed to keep the plants alive. The north side of the city is unfarmed, but leads directly into a vast semi-wilderness, with footroads that ran to lumbering operations to supply Ethriel with wood for its furnaces and baths.
Local commands: You can '[EthrielLink Wandering in Nature near Ethriel]' or 'hunt' here. Wandering in nature is free entertainment. Hunting is a free, but unreliable, means of gaining food. If it works, hunting is likely to yield several days of food as well as some bone and hide, also known as goods to sell. [line break]Area Change commands: [Location Command Block in Ethriel] [line break]Personal Commands: [Personal Command Block in Ethriel]"
Table of Interests
Personal Interest Culture Career Possibilities Conversations
Economics Kelkaithian {haulergon, haulergon, haulergon, haulergon, philosophygon, mental dissolutionist, smithgon, authorgon, farmgon, charitygon} {"the price of hogs", "the price of sheep", "the price of vegetables", "food prices", "vrash armor", "the weather", "the economy the local land god wants to see built", "their daily divinations", "a book of production technologies", "the difficulty of making the latest goods available even to the poor", "exotic luxuries available in distant places", "the importance of the general savings rate", "cheap, resilient architecture", "their long-term investments", "other, very wealthy dragons", "the importance of long-term planning", "how and why prices vary between cities in the region", "the origins of common local goods", "the design of irrigation systems", "economics", "the virtue of stoicism", "the value of a calm attitude", "the importance of boredom-tolerance to haulergons", "a controversial theory of economics", "the divine principle of Weld", "the divine principle of Garden", "the divine principle of Chains"}
Art Kelkaithian {pottergon, pottergon, petgon, petgon, authorgon, mental dissolutionist, musicgon, kaimagon} {"the plays running in local theatres this year", "the latest masterpiece of a famous artgon", "their envy of the beloved pet of a very rich dragon", "the latest masterpice of a famous artgon", "an obscure artgon they wish was more known", "an infamous actorgon", "the villain of a popular play", "a short story they once wrote", "a fictional character they invented", "the way archetypes interact", "a famous old piece of artwork", "exotic luxuries available in distant places", "the inherent piety of play", "a fun dream they once had", "the way the world was made to promote the ethical development of dragonkind", "the way that art promotes empathy", "art", "the divine principle of Hydra"}
Playing Kaima Kelkaithian {pottergon, haulergon, lumbergon, smithgon, huntgon, farmgon, authorgon, holygon, holygon, mental dissolutionist, flygon, kaimagon, kaimagon} {"the meaning of different kaima cards", "the weather", "the nature of the consensus of the land gods", "their daily divinations", "the art of cold-reading dragons", "an exciting kaima reading they gave to someone once", "a game that can be played with kaima cards", "the dread of drawing The Firestorm in a kaima draw", "the implications of universal benevolence", "the way the consensus of the land gods talks to dragons in every moment", "the divine principle of Chime", "the inherent piety of play", "a fun dream they once had", "an emotionally significant dream they once had", "the way the world was supposedly made to make dragons happy", "playing kaima", "the basic pleasure of a walk in nature"}
Vegetarianism Kelkaithian {farmgon, farmgon, farmgon, rangergon, philosophygon, holygon, physical dissolutionist} {"vegetarian recipes", "the price of vegetables", "rare vegetables", "rare fruits", "exotic vegetarian recipes", "the pleasure of a good meal", "the difficulty of getting most kalla to eat plants", "edible plants that can be gathered in the wilderness", "dandelion wine", "cheap edible plants", "a particularly savory species of mushroom with a meaty flavor", "the ethical problems with hunting and raising meat animals", "bean-based meat substitutes", "tofu", "the way the world was made to promote the ethical development of dragonkind", "vegetarianism", "the basic pleasure of a walk in nature"}
Carnivory Kelkaithian {huntgon, huntgon, rangergon, rangergon, farmgon, physical dissolutionist, holygon} {"meaty recipes", "Woodwall-style sausage gravy", "the price of beef", "the price of mutton", "exotic game", "the pleasure of a good meal", "a particularly savory species of mushroom with a meaty flavor", "the best kinds of bread to pair with different meats", "meat-frying", "gravy recipes", "bread recipes with meat baked into them", "a fantasy of hunting", "a book starring a great huntgon", "the way the world was supposedly made for meat-eating", "a dream they once had of an endless feast", "carnivory", "the basic pleasure of a walk in nature"}
Fine Foods Kelkaithian {farmgon, farmgon, huntgon, huntgon, rangergon, rangergon, mental dissolutionist, physical dissolutionist, physical dissolutionist, petgon} {"fancy foods", "food prices", "rare vegetables", "rare fruits", "the pleasure of a good meal", "exotic luxuries available in distant places", "a dream they once had of an endless feast", "Woodwall-style sausage gravy", "a particularly savory species of mushroom with a meaty flavor", "their opinions about the finest kind of bread", "kinds of cake", "kinds of candy", "unusual foods", "fine foreign liquors", "non-alcoholic spirits, which are beverages that emulate the flavor of spirits while having no alcohol content", "the best kinds of wine to pair with various meals", "edible plants that can be gathered in the wilderness", "dandelion wine", "fine foods"}
Books Kelkaithian {authorgon, authorgon, authorgon, philosophygon, philosophygon, philosophygon, mental dissolutionist, mental dissolutionist, petgon} {"a popular novel", "an obscure novel", "their favorite novel", "a random philosophy text", "a popular philosophy text", "their favorite polemic", "their least-favorite polemic", "a piece of past-world fiction", "the price of books", "a book of production technologies", "a popular authorgon", "an infamous fictional dissolutionist", "a dissolutionist who has produced a famous story", "an account of the life of an inventor", "a fictional villain", "a surprisingly bloody description of a fictional battle", "a fictional family", "the way archetypes interact", "a fictional character they invented", "a fun dream they once had", "an emotionally significant dream they once had", "a dream they once had of visiting a fictional world", "the way the world was made to promote the ethical development of dragonkind", "the way that reading promotes empathy", "books"}
Religion Kelkaithian {holygon, holygon, holygon, holygon, charitygon, physical dissolutionist, mental dissolutionist, mental dissolutionist, philosophygon, kaimagon} {"the preferences of the local land god", "the weather", "the correlations between theome climates and the kinds of land gods", "the implications of universal benevolence", "the economy the local land god wants to see built", "the way archetypes interact", "controversial decisions of the land gods", "the nature of the consensus of the land gods", "the inherent piety of play", "the divine principle of Chime", "the divine principle of Weld", "the divine principle of Rift", "the divine principle of Dissolution", "the divine principle of Garden", "the divine principle of Chains", "the divine principle of Hydra", "the Ascending Path theology", "the faith of Uttermost Dark", "the faith of the Illuminated Order", "the duty to try to make others happy", "a fun dream they once had", "an emotionally significant dream they once had", "the way the world was supposedly made to promote the ethical development of dragonkind", "the way the world was supposedly made to make dragons happy", "the doctrine of universal divinity", "religion", "the basic pleasure of a walk in nature"}
Sex Kelkaithian {sex pest, sex pest, sex pest, sex pest, mental dissolutionist, petgon, sportsgon, lutragon, physical dissolutionist, physical dissolutionist} {"inventive sex positions", "inventive sex positions", "a sexual dream they once had", "the infamous vrash-myrghon problem in sexuality", "a book about sex", "Baunt, a city known for its bathhouses", "Wyranine, a Tachamundi city known for its bathhouses", "Ethriel, a city known for its bathhouses", "a myth about the exploits of the otter-like tesam", "an amusing anecdote of something that happened at an orgy", "a description of a weird species said to have existed in a prior world", "fetishes", "the way the world was supposedly made to make dragons happy", "an uncomfortable sexual experience they once had", "sex", "the basic pleasure of a walk in nature", "the sexiness of confident dragons", "the divine principle of Hydra", "the divine principle of Chains"}
Necromancy Kelkaithian {holygon, authorgon, philosophygon, haulergon, mental dissolutionist, rangergon, flygon, huntgon, farmgon} {"gossip about material summoners in the city", "controversial decisions of the land gods", "the nature of the consensus of the land gods", "sexual reassignment magics", "past world divinations", "past life divinations", "the importance of balancing piety and independence when studying necromancy", "the divine principle of Hydra", "the divine principle of Rift", "the divine principle of Dissolution", "a grandiose dream they once had", "a fun dream they once had", "a personal desire to be a ghost", "necromancy"}
Plants Kelkaithian {farmgon, farmgon, farmgon, huntgon, rangergon, rangergon, rangergon, haulergon} {"common flowers", "popular flowers", "rare flowers", "the parts of flowers", "the price of vegetables", "the weather", "rare fruits", "rare vegetables", "the effects of climate on plantlife", "the crops of a distant place", "glowing plants", "edible plants that can be gathered in the wilderness", "the difficulty of getting most kalla to eat plants", "a fun dream they once had", "the use of plants in adornment", "garden ornaments", "the design of irrigation systems", "botany", "a plant kaiju from a novel", "the basic pleasure of a walk in nature", "the value of a calm attitude"}
Sports Kelkaithian {sportsgon, sportsgon, sportsgon, sportsgon, smithgon, farmgon, huntgon, rangergon, haulergon, physical dissolutionist, lutragon, flygon, sex pest} {"a common local sport", "A common local sport", "an aerobatic trick", "endurance-maintenance strategies for heavy exertion", "a sport played in a distant place", "a sport from a prior world", "the difficulty of wrangling dragons to play a game together", "a strong local dragon", "a fast local dragon", "the inherent piety of play", "the divine principle of Hydra", "a fun dream they once had", "cheap entertainments", "a sports team", "a renowned sportgon", "rumors of necromantic cheating in local sports", "sports", "swimming"}
Technology Kelkaithian {smithgon, smithgon, smithgon, smithgon, smithgon, authorgon, philosophygon, mental dissolutionist, charitygon} {"a clock they once bought", "welding", "welding", "smithing", "smithing", "metallurgy", "metallurgy", "common tools", "a book of production technologies", "past world divinations", "the divine principle of Weld", "models of printing press", "the history of pens", "the importance of advanced tools in providing even the most basic assets of modern life", "the difficulty of making the latest goods available even to the poor", "the importance of trying new things", "neophilia", "a daydream they once indulged at length", "a work of past-world fiction depicting a more advanced world", "a fun dream they once had", "an account of the life of an inventor", "an account of the life of a wealthy and neophilic dragon", "a mayorgon in a distant town who is a renowned modernizer", "cheap, resilient architecture", "the design of irrigation systems", "mansion architecture", "an exotic theory about causality", "technology"}
Accumulating Wealth Kelkaithian {pottergon, haulergon, haulergon, haulergon, lumbergon, lumbergon, smithgon, smithgon, farmgon, farmgon, huntgon} {"food prices", "living cheaply", "past experiences at work", "cheap entertainments", "the importance of living humbly", "the price of beef", "the price of mutton", "the price of vegetables", "the importance of advanced tools in providing even the most basic assets of modern life", "the difficulty of making the latest goods available even to the poor", "the weather", "a daydream they once indulged at length", "their favorite card game", "cheap recipes", "the divine principle of Chime", "efficiency", "the importance of saving money", "a fantasy of being ludicrously wealthy", "mansion architecture", "cheap, resilient architecture", "minimizing maintenance costs", "a fun dream they once had", "cheap edible plants", "the importance of savings", "other, very wealthy dragons", "a daydream they once indulged at length", "a personal desire to be a ghost", "accumulating wealth", "the value of a calm attitude", "the importance of boredom-tolerance in saving money", "the virtue of stoicism", "the basic pleasure of a walk in nature"}
[Ideas for further interests: Freedom and status.]
Understand "visit bathhouse" or "visit a bathhouse" as visiting a bathhouse. Visiting a bathhouse is an action applying to nothing. Instead of visiting a bathhouse in Entertainment Options in Ethriel:
playerport to Your Favorite Bathhouse in Ethriel;
An NPClink is a kind of link. NPCLinks are defined by the Table of NPC Menu Options.
To say NPCLink (nextNPCLink - an NPCLink) for (NPC - a person):
hyperlink "[DisplayName of nextNPCLink]" as "zzxvm [nextNPCLink] [NPC]"
Understand "zzxvm [any NPCLink] [a person]" as NPC linking. NPC linking is an action applying to two things. Carry out NPC linking:
if the noun is an NPCLink listed in the Table of NPC Menu Options:
abide by behavior entry for the second noun;
otherwise:
say "[bold type]BUG:[roman type] Tried to carry out NPC linking with [italic type][the noun][roman type] but that does not appear to be an NPC link:";
showme the noun;
Instead of examining a person:
try talking to the noun;
Talking to is an action applying to one visible thing. Understand "talk to [someone]" or “converse with [someone]” or "talk [someone]" or "converse [someone]" as talking to. Carry out talking to a person:
say "[description of the noun]";
let the NPC be the noun;
If current city is Ethriel:
Now the player is carrying the relax together link;
say "[line break]You could [NPCLink relax together link for the NPC] to try to hang out in the local bathhouse.";
say "[line break]Until you talk to someone else or leave the room, these links will continue to work. This feature is in debug."
After playerporting rules is a rulebook.
To playerport to (place - a room):
move the player to place;
follow the after playerporting rules.
An after playerporting rule:
now all NPClinks are nowhere.
Table of NPC Menu Options
NPCLink DisplayName Behavior
relax together link "relax together" relax together rules
game together link "game together" game together rules
Relax together rules is an object based rulebook.
Game together rules is an object based rulebook.
A relax together rule for a person (called The NPC):
now the current NPC variable is the NPC;
If bathhouses is listed in the Local Amenities of the current city:
let active barrier be the reserve of the NPC;
If the NPC is in a bathhouse:
say "[the NPC] rests with you in the bathhouse. You talk lightly about [conversation topics bathhouse]. It's a placid few hours. Nothing terribly exciting happens, but the world seen from the bathhouse is clean and safe.";
now the entertainNum of the player is the entertainNum of the player + 1;
now the securityNum of the player is the securityNum of the player + 1;
now the flightyRel of the NPC is the flightyRel of the NPC + 6;
now the firmRel of the NPC is the firmRel of the NPC + 3;
If the flightyRel of the NPC > 12:
now the flightyRel of the NPC is 12;
If the firmRel of the NPC > 100:
now the firmRel of the NPC is 100;
follow the turnpass rule;
Otherwise if active barrier < flightyrel of the NPC or active barrier < firmrel of the NPC:
say "[the NPC] rests with you in the bathhouse. You talk lightly about [conversation topics bathhouse]. It's a placid few hours. Nothing terribly exciting happens, but the world seen from the bathhouse is clean and safe.";
now the entertainNum of the player is the entertainNum of the player + 1;
now the securityNum of the player is the securityNum of the player + 1;
now the flightyRel of the NPC is the flightyRel of the NPC + 6;
now the firmRel of the NPC is the firmRel of the NPC + 3;
If the flightyRel of the NPC > 12:
now the flightyRel of the NPC is 12;
If the firmRel of the NPC > 100:
now the firmRel of the NPC is 100;
follow the turnpass rule;
Otherwise:
let hotness be the sex appeal level of the player + a random number between 5 and 20;
let funness be the carousing level of the player + a random number between 5 and 20;
If hotness > active barrier or funness > active barrier:
say "[the NPC] rests with you in the bathhouse. You talk lightly about [conversation topics bathhouse]. It's a placid few hours. Nothing terribly exciting happens, but the world seen from the bathhouse is clean and safe.";
now the entertainNum of the player is the entertainNum of the player + 1;
now the securityNum of the player is the securityNum of the player + 1;
now the flightyRel of the NPC is the flightyRel of the NPC + 6;
now the firmRel of the NPC is the firmRel of the NPC + 3;
If the flightyRel of the NPC > 12:
now the flightyRel of the NPC is 12;
If the firmRel of the NPC > 100:
now the firmRel of the NPC is 100;
follow the turnpass rule;
Otherwise:
say "[the NPC] isn't interested in moving to the bathhouse with you.";
say "(Debug Text) 'Hi! I'm [the NPC]. My flightyRel is [flightyRel of the NPC] and my firmRel is [firmRel of the NPC]. My libido is [Libido of the NPC] and my reserve is [Reserve of the NPC].'";
Otherwise:
say "There are no bathhouses in this city. How did you get this message?"
To say conversation topics bathhouse:
Let C1 be "text";
Let C2 be "text";
Let C3 be "text";
Let CList be a list of texts;
Let CN be the culture of the current city;
Let FI be the first interest of the current NPC variable;
Let SI be the second interest of the current NPC variable;
repeat through the Table of Interests:
If Culture entry is not CN:
next;
If Personal Interest entry is not FI and Personal Interest entry is not SI:
next;
repeat with C running through conversations entry:
add C to CList;
Now C1 is a random item from CList;
Now C2 is a random item from CList;
Now C3 is a random item from CList;
While C2 is C1 or C3 is C1 or C2 is C3:
Now C2 is a random item from CList;
Now C3 is a random item from CList;
say "[C1], and when that topic runs out, you end up chatting about [C2] instead. Somehow, that tangents into an invigorating talk about [C3]".
[A game together rule for a person (called The NPC):
If cardhouse is listed in the Local Amenities of the current city:
let active barrier be the reserve of the NPC;
let funness be the mental games level of the player + a random number between 0 and 100;
If the NPC is in a cardhouse:
Now active barrier is active barrier - 5;
If active barrier > funness:
say "[The NPC] refuses apologetically, saying they want to play with other dragons."
Otherwise:
]
[Remember to come back and apply skill effects.
Ideas for skills, based on the above careers:
Inspired by the non-remunerative careers:
Kaima - Entertainment skill. Possibly alters a kaima engine to be designed later. Requires a kaima deck to use. Trained by kaimagon (++++), authorgon (++), philosophygon (+), mental dissolutionist (+), and gamesgon (+++).
Panhandling - A way to generate funds in urban areas (only). Boosted by having a kaima deck if you have at least level 4 in kaima. Boosted by having an instrument if you have at least level 3 in music, or by song if you have at least level 5 in song. Doesn't work very well. Trained by flygon (+), kaimagon (++), musicgon (+), and charitygon (++++).
Games (Physical) - Entertainment skill. Participants must have at least level 1 to participate; watching produces less entertainment and gets boring more quickly. Trained by sportsgon (++++), flygon (+), physical dissolutionist (++), gamesgon (++), petgon (++), and lutragon (+).
Games (Mental) - Entertainment skill. Participants must have at least level 1 to participate; watching produces less entertainment and gets boring more quickly. Trained by gamesgon (++++), mental dissolutionist (++), sportsgon (+++), petgon (+++), philosophygon (+), authorgon (+), and lutragon (+).
Teaching - Entertainment skill, sort of. Teaching dragons things provides only a small amount of entertainment value and gets boring quickly. Builds up XP in audience with less XP than the teacher in the subject being taught. Trained by holygon (+++), philosophygon (++++), authorgon (+), gamesgon (+), sportsgon (+), charitygon (+++), kaimagon (+), mental dissolutionist (+).
Influence - Social skill. Effective engagement with large numbers of people. Public speaking, for instance. Bad rolls drain security. Trained by charitygon (+++), holygon (+), philosophygon (+), mental dissolutionist (+), and authorgon (+).
Song - Entertainment skill. Bad rolls drain security. Doesn't require any kind of tool. Traveling groups often sing with each other. Trained by musicgon (++++), flygon (+), haulergon (++), mental dissolutionist (+), physical dissolutionist (+), sex pest (+), and farmergon (+).
Instrument - Entertainment skill. Bad rolls drain security. Requires an instrument. Multiple dragons can play together, or with singers. Not a very common traveling group skill. Trained by musicgon (++++), mental dissolutionist (+), sex pest (+), and farmergon (+).
Hunting - Supply skill. Also provides entertainment, but gets boring quickly. Trained by huntergon (++++), rangergon (++++), physical dissolutionist (++), lutragon (+), lumbergon (+).
Gatherer - Supply skill. Provides a small bycatch of herbs, fruits, tubers, and edible leaves when hunting, or a larger yield when doing just this specifically. Trained by huntergon (++), rangergon (++), physical dissolutionist (+), mental dissolutionist (+),
Trophy Hunter - Bonus skill. Occasionally increases the entertainment from hunting. Trained by rangergon (+++) and physical dissolutionist (+).
Ecologist - Bonus skill. Occasionally increases the entertainment and XP gain from hunting and gathering. Trained by huntergon (+), rangergon (+++), mental dissolutionist (+), and philosophygon (+).
Theology - Esoteric skill. Understanding of the different religions of Theoma. Trained by holygon (++++), mental dissolutionist (++), physical dissolutionist (+), petgon (+), charitygon (+), philosophygon (+++), authorgon (+), kaimagon (+)
Sex appeal - Social skill. Ability to seem like you'd be fun, sexually. Bad rolls drain security. Vital for sexual activity. Trained by sex pest (++++), petgon (+++), physical dissolutionist (+++), and all careers (+).
Erotic Art - Entertainment skill. Ability to actually be fun, sexually. Bad rolls drain security and entertainment. Vital for sexual activity. Large bonus to find and evaluate cargos of intimacy aids. Trained by sex pest (++++), petgon (+++), physical dissolutionist (+++), and all careers (+).
Bookgems - Entertainment skill. The ability to attune to and comprehend story gems. Reduces the entertainment drain from boring tasks that leave the mind free to wander, such as travel, and allows books to be multitasked with anything. Trained by haulergon (+++), flygon (++), philosophygon (+), petgon (+), authorgon (++++), mental dissolutionist (+), holygon (++), lumbergon (+), farmgon (+).
Skillgems - Study skill. The ability to attune to and comprehend skill gems. Generates XP while doing boring tasks that leave the mind free to wander, such as travel. Does not reduce entertainment drain. Trained by haulergon (+), flygon (+), philosophygon (++), petgon (+), authorgon (+), holygon (+).
Past World Knowledge - Esoteric skill. Large bonus to find and evaluate all cargos in areas with Past World Culture (Three Memories, Kyvisveiln, a few settlements in Kanjamund). Trained by Lutragon (+++).
Carousing - Entertainment Skill. Carousing is not free, but it's easy entertainment in most settlements, even some of the small ones. Physical Dissolutionist (++), Lutragon (++), Sex Pest (+)
Writing - Supply Skill. Can be used for entertainment that very slowly generates stories, or to duplicate books for sale, or for finding and evaluating books. Authorgon (++++), philosophygon (++), holygon (+), mental dissolutionist (+).
Inspired by the remunerative careers:
Mercantile - Supply skill. Social bonus when dealing with merchantgons. Small bonus to the ability to find and evaluate ALL cargos. Trained by haulergon (+++).
Lumbering - Supply skill. Social bonus when dealing with lumbergons. Potential to gain cargo by sweat equity in forested areas. Large bonus to find and evaluate cargos of wood, wood products, and woodworking tools. Trained by lumbergon (++++).
Pottery - Supply skill. Social bonus when dealing with pottergons. Large bonus to find and evaluate cargos of clay, ceramic products, and clayworking tools. Trained by pottergon (++++).
Smithing - Supply skill. Social bonus when dealing with smithgons. Large bonus to find and evaluate cargos of metal, metal products, and metalworking tools. Trained by smithgon (++++).
Farming - Supply Skill. Social bonus when dealing with farmgons. Large bonus to find and evaluate cargos of foods, cash crops, spices, and farming tools. Trained by farmgons (++++) and Mental Dissolutionist (+)
Visual Arts - Supply Skill. Social bonus when dealing with high society. Large bonus to find and evaluate cargos of art. Pottergon (++), Petgon (++)
]
[Basic needs: Entertainment, food, security.
Security is a social need, it's harmed by bad social interactions and loneliness. It's also harmed by signs that things aren't going well, and by performing skills you aren't great at.
Entertainment is also a social need. It drains naturally over time. Specific sources of entertainment get used up by repetition, but variety will restore weakened sources of entertainment.]
[I should include an option at the start which says, "I, the author, am asexual. Do you want to play an asexual character?"
The options will be:
1) No, allosexual. (Sexual content implemented as normal.)
2) Yes, a sex-positive asexual. (Disables passive gain of sex skills, reduces entertainment gains from sex, and blocks player-initiated sexuality.)
3) Yes, a sex-negative asexual. (Disables sex skills and most references to sex.)
The sex-positive asexual should not see the Sex Appeal and Erotic Arts gains from careers that grant only one of each, and they can't be sex pests, so they will only gain them from petgon and physical dissolutionist terms.]
[Daily spells ritual. Morning spells and evening spells. Prior careers will determine what spells someone has. Caster regains 1/32nd of their serenity pool per half-hour tick of the simulation. Spells that affect others are usually more advanced than spells that affect the self, although cheat to lose is very trivial.
Potential spell scratch space:
Suppress boredom (chance per tick to reduce or eliminate entertainment drain)
Promote bliss (chance when gaining entertainment to gain more)
Confident singing (small bonus to singing, chance to suppress security loss from singing poorly)
Confident instruments (small bonus to instruments, chance to suppress security loss from instrumenting poorly)
Suppress insecurity (chance to suppress security loss from any source)
Secure bonding (chance to increase security gains)
Sense attraction (chance to abort bad seduction attempts before they would happen)
Ecstatic sexuality (chance to increase entertainment gains from sex)
Shared ecstatic sexuality (chance to increase partner's entertainment gains from sex)
Loving sexuality (chance to increase security while having sex; only acts if this possibility exists in the first place, ie not from one night stands)
Shared loving sexuality (chance to increase partner's security while having sex; only acts if this possibility exists in the first place, ie not from one night stands)
Song of peace (chance to increase security of listeners when performing music)
Embrace chaos (increases chance of random events)
Suppress chaos (reduces chance of random events)
Safety curse (increases chance of mildly negative random event, lowers chance of very negative random event)
Safety blessing (reduces chance of negative random event; may fail into the safety curse)
Perception of ecology (increases chance of Ecologist proccing when hunting and gathering)
Exuberant wildlife (increases chance of Trophy Hunter proccing when hunting)
Self-thieving creativity (adds a reroll on the next visual arts challenge)
Market evaluations (adds a bonus to mercantile for the day)
(Category) market ally (adds a bonus to the most relevant supply skills for the purpose of finding and evaluating the category they boost)
Cold read (adds a bonus to kaima and panhandling checks)
Fixed draw (adds a bonus when using kaima for panhandling)
Transfixing public performance (adds a bonus when using song/instrument for panhandling)
Nature's bounty (adds a reroll to Gathering)
Preyfinder (adds a reroll to Hunting)
Play to win (adds a bonus to one's Games skills on the next challenge of them)
Cheat to lose (adds a penalty to one's Games skills on the next challenge of them, but adds a bonus to the skills of everyone one is playing against)
Binding drain (adds a chance to abort events brought on by doing things while serenity drained)
(Skill) teaching ally (increases XP gain for the recipients of the instruction)
]
[Six hour time segments. 7:00, 13:00, 19:00, and 1:00. Morning, midday, evening, and night. This gives four locations for standard citydweller characters to cycle between. Wandering around within a city doesn't take time. Doing things consumes a time block. Fatigue hits hard in the night time block — unless someone is an izerah, in which case they can use every other night in some way. Every NPC needs a home, a workplace, and three preferred recreations. They're home during their sleep block — which will usually be 1:00-to-7:00.
]
test testgon with "chargen / allosexual / chargen / kalla / kalla / herm herm / chargen / 2 careers".