Stats (0 - 100) From Red to Green Short-term 1. Mood 2. Energy 3. Arousal Long-term (regular activity increases, if not, deteriorate) 1. Attractiveness 2. Fitness 3. Intelligence 4. Interpersonal Skills 5. Perversion Relationship 1. OpinionOfPlayer 2. PlayerOpinion 4. Inventory 1. Money (in local currency) 2. Apparel (buff to attractiveness, with tags for work, formal, casual, sports etc) 3. All other items Effect: 1. Hungry 2. Ill 3. Injured Array of Structs as default variable in Person class: Stat (String) - Value (Float) - enabled (bool) BuildingVisited struct UID (int) - Building (StreetMapBuilding) - Persons (Person[]) PlaceBuilding struct Place (String) - Buildings (StreetMapBuilding[]) RelationshipPersons struct Relationship (String) - Persons (Person ObjectReference[]) - enabled (bool) Start game with a base person with invisible render Read data and populate this array in base person Dupicate base person - first dup is player - set him visible Add player only stats Duplicate base person again whenever there's a need to create a new NPC. Clear if not touched for a while. Base Person - StatValue array of structs (Mood: 69, Energy: 88, PlayerOpinion: 59, etc) - PlaceBuilding array of structs (Home: 7999, Office: 6899, etc) - RelationshipPersons array of structs ("Friends": Jack, John, Maria references) LPCharacter: A character specification - look, requirement, relationship - find or generates based on condition - Max Characters Per Building (Landlord: 1, Colleagues: no max) - Once generated, they have AI - Age,and morph targets: base, variance up, variance down - Gender: % Male - % shemale if female LPScene: - Where: - Doing What: optional - First identify actor involved: name LPCharacter (GenerateNewEvenIfExist: 50%)