Release 1

Part 2 - Building Key NPCs

Z5 is a room. 6 NPCs are in Z5.

The list of potential relationships is a list of relationships that varies.

To build key NPCs:

add the list of relationships to the list of potential relationships;

repeat with current NPC running through NPCs in Z5:

now the current person is the current NPC;

if instructor is listed in the list of potential relationships:

now the relationship of the current NPC is instructor;

now the instructor-person is the current NPC;

remove instructor from the list of potential relationships;

otherwise:

sort the list of potential relationships in random order;

now the relationship of the current NPC is entry 1 of the list of potential relationships;

if the relationship of the current NPC is spouse or the relationship of the current NPC is fiancee or the relationship of the current NPC is lover:

now the player is committed;

now the player-commitment is the current NPC;

remove {spouse, fiancee, lover} from the list of potential relationships;

add romantic love to the list of likely motivations;

if the relationship of the current NPC is supervisor:

remove supervisor from the list of potential relationships;

if the relationship of the current NPC is mentor:

remove mentor from the list of potential relationships;

while (the profession of the player is unemployed or the profession of the player is student) and (the relationship of the current NPC is employee or the relationship of the current NPC is colleague or the relationship of the current NPC is supervisor):

now the relationship of the current NPC is a random relationship;

now the affection strength of the current NPC is a random number between 1 and 5;

if the current NPC is blood-relation:

now the affection strength of the current NPC is (the affection strength of the current NPC + a random number between 0 and 3);

add familial love to the list of likely motivations;

otherwise if the current NPC is friend:

now the affection strength of the current NPC is (the affection strength of the current NPC + a random number between 1 and 3);

otherwise if the relationship of the current NPC is lover or the current NPC is fiancee or the relationship of the current NPC is spouse:

now the affection strength of the current NPC is (the affection strength of the current NPC + a random number between 1 and 3);

otherwise if the relationship of the current NPC is hobby rival or the relationship of the current NPC is work rival or the relationship of the current NPC is ex-lover or the relationship of the current NPC is ex-spouse:

now the affection strength of the current NPC is (the affection strength of the current NPC - a random number between 0 and 2);

if the affection strength of the current NPC > 5:

now the affection strength of the current NPC is 5;

if the affection strength of the current NPC < 1:

now the affection strength of the current NPC is 1;

if the current NPC is blood-relation:

if the relationship of the current NPC is sibling:

now the economic background of the current NPC is the economic background of the player;

otherwise if a random chance of 1 in 2 succeeds:

now the economic background of the current NPC is the economic background of the player;

if (the relationship of the current NPC is lover) or (the relationship of the current NPC is ex-lover) or (the relationship of the current NPC is fiancee) or (the relationship of the current NPC is spouse) or (the relationship of the current NPC is ex-spouse):

if a random chance of the heterosexuality rating of the player in 10 succeeds:

if the player is male:

now the current NPC is female;

otherwise:

now the current NPC is male;

otherwise:

if the player is female:

now the current NPC is female;

otherwise:

now the current NPC is male;

otherwise:

if a random chance of 1 in 2 succeeds:

now the current NPC is male;

otherwise:

now the current NPC is female;

let the age minimum be 16;

let the age maximum be 55;

if the relationship of the current NPC is child:

let the age minimum be 1;

let the age maximum be (the age of the player - 15);

otherwise if the relationship of the current NPC is parent:

let the age minimum be (15 + the age of the player);

let the age maximum be (40 + the age of the player);

otherwise if the relationship of the current NPC is grandparent:

let the age minimum be (40 + the age of the player);

let the age maximum be (55 + the age of the player);

otherwise if (the relationship of the current NPC is lover) or (the relationship of the current NPC is ex-lover) or (the relationship of the current NPC is fiancee) or (the relationship of the current NPC is spouse) or (the relationship of the current NPC is ex-spouse):

let the age minimum be (the age of the player / 2) + 7;

let the age maximum be (the age of the player * 2) + 7;

if the age maximum > 60:

now the age maximum is 60;

now the age of the current NPC is ((a random number between the age minimum and the age maximum) + (a random number between the age minimum and the age maximum)) / 2;

determine the ethnicity;

name the character;

DM "-- Assigning a [relationship of the current NPC] named [given name of the current NPC] [surname of the current NPC] to the PC. [Zhe] is [ethnicity of the current NPC], [if the current NPC is male]male[otherwise]female[end if], and [age of the current NPC] years old. [Zhe] is from a [economic background of the current NPC] background, motivated by [motivation of the current NPC], and got involved with this situation due to [rationale of the current NPC]. ";

if the age of the current NPC is less than 20 and a random chance of 1 in 2 succeeds:

now the profession of the current NPC is student;

otherwise if the relationship of the current NPC is supervisor or the relationship of the current NPC is employee or the relationship of the current NPC is colleague:

now the profession of the current NPC is the profession of the player;

otherwise if the relationship of the current NPC is work rival:

now the profession of the current NPC is the profession of the player;

otherwise:

now the profession of the current NPC is a random profession;

if the relationship of the current NPC is apprentice:

now the hobby of the current NPC is the hobby of the player;

otherwise if the relationship of the current NPC is hobby rival:

now the hobby of the current NPC is the hobby of the player;

DM "[Zhe] is a [profession of the current NPC] who engages in [hobby of the current NPC] as a hobby. ";

determine nicknames;

determine features;

set the personality of the current person;

sort the list of likely motivations in random order; [This couldn't be done when setting up the PC before because romantic love is only available when the PC is committed and familial love is only available when the PC has a family.]

now the motivation of the player is entry 1 in the list of likely motivations.