1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264 |
- declare module "twine-sugarcube" {
- export interface SugarCubeSetupObject {
- Action: { new(parameter?:any): Action };
- Appearance: { new(playerCharacter: PlayerCharacter): Appearance };
- BodyDescription: { new(character:Character): BodyDescription };
- Consumable: { new(): Consumable };
- Drugs: { new(): Drugs };
- Events: { new(): Events };
- GameTime: { new(): GameTime };
- Inventory: { new(): Inventory };
- Location:{ new(): GameLocation };
- LocationIdentifier:{ new(): LocationIdentifier };
- LocationTravelRequest:{ new(destination:LocationIdentifier,from:LocationIdentifier,time:number): LocationTravelRequest };
- Mood: { new(): Mood };
- Moodlet: { new(): Moodlet };
- MoodletGroup: { new(): MoodletGroup };
- NPCAccessor:{ new(): NPCAccessor };
- OutfitItem: { new(): OutfitItem };
- Pain: { new(): Pain };
- PersonalityScale: { new(): PersonalityScale };
- PlayerCharacter: { new(): PlayerCharacter };
- Quest: {
- handler: object; new(questId?: any): Quest
- };
- QuestsDict: { new(): QuestsDict };
- Skill: { new(): Skill };
- VersionControl: { new(): VersionControl };
- //#region Listeners
- listeners_timeUpdate:{[key: string]: (minutes:number)=>void};
- //#endregion
- actionTemplates:{[key: string]: ActionTemplate;}
- activeEffects:{[key: string]: ActiveEffect;}
- appearanceModificators: { [key: string]: AppearanceModificatorDefinition; };
- bodypart: { [key: string]: BodypartDefinition;}
- consumables: { [key: string]: ConsumableDefinition;}
- deco: { [key: string]: { [key: string]: any; }}
- drugs: { [key: string]: DrugDefinition}
- effects: { [key: string]: Effect;}
- consumableMenus:{ [key: string]: ConsumableMenuDefinition}
- items: { [key: string]: ItemDefinition; };
- jobs: { [key: string]: JobDefinition};
- locations: { [key: string]: LocationDefinition; };
- moodlets: { [key: string]: Moodlet; };
- moodletGroups: { [key: string]: MoodletGroup; };
- npcs:{ [key: string]: NPCDefinition; };
- npcDefaults:{ [key: string]: NPCDefaultDefinition; };
- npcGenerators:{[key:string]: (flags:NPCGenerateOptions)=>NPCGenerateOptions};
- npcImages:{[key:string]: NPCImageDefinition};
- npcPreferences:{ [key: string]: NPCPreferenceDefinition; };
- outfits: { [key: string]: OutfitDefinition; };
- outfitsDefaults: {[key: string]: {[key: string]: any; } };
- outfitItemImagePath: {[key: string]: string | {[key: string]: any; } };
- painReasons: {[key: string]: PainReasonDefinition}
- personalityScales: {[key: string]: PersonalityScaleDefinition};
- skills: { [key: string]: SkillDefinition; };
- startingCharacters: {[key: string]: StartCharacterDefinition};
-
- connectedLocationAdd:(label:string,destination:LocationIdentifier,duration:number,image:string,content:string,flags:ConnectedLocationFlags)=>void;
- connectionExecute:(connectedLocation:ConnectedLocation)=>string;
- crimeLikelihood: (crimeId:string,location:LocationIdentifier)=>number;
- durationToString: any;
- executeActionOfIndex:(index:number)=>void;
- executeConnectedLocationByHotkey:(hotkey:string)=>void;
- executeConnectedLocationOfIndex:(index:number)=>void;
- executeESCLocation:()=>void;
- filterDict:<T extends {}>(obj:T,filter: Filter) => T;
- func: (passage: string, ...arguments: Array<string|number>)=>any;
- generateNPC:(dict:NPCsDict,purpose:string,flags:NPCGenerateOptions)=>NPC;
- getActionTemplate:(id:string)=>ActionTemplate;
- getBodyparts:()=> {[key: string]:BodypartDefinition };
- getBodypart:(bodypartId:string)=>BodypartDefinition;
- getConsumable: (type:string)=>{ [key: string]: any; };
- getConsumableMenu: (id:string)=>ConsumableMenuDefinition;
- getDeco: (type:string,position:string,id:number|string)=>{ [key: string]: any; };
- getDrug: (type:string)=>DrugDefinition;
- getDecoPosition: (type:string,position:string) => { [key: string]: any; }
- getDecoPositions: (type:string)=>string[];
- getEffect: (type:string)=>Effect;
- getGenericActionApplied:(actionId:string)=>any;
- getLocation: (locationId: string)=>LocationDefinition;
- getNPCPreference:(preferenceId:string)=>NPCPreferenceDefinition;
- getRandomNpcImage:(filters:{[key:string]:any})=>NPCImageDefinition;
- getStartingCharacter: (type:string)=>StartCharacterDefinition;
- getStartingCharactersByFilter: (filters:{},shallow:boolean)=>{};
- hasBodypart:(bodypartId:string)=>boolean;
- makeSVG: (tag:string, attrs:any,innerHTML?:string|number|undefined) => SVGElement;
- mediaPath(rawPath:string):string;
- mediaPathImage(rawPath:string):string;
- mergeDeep: (target:any, ...sources:any) => any;
- randomName: (type:string)=>string;
- startingCharacterApply:(id:string)=>void;
- startingCharacterTagsIncludes:(tag:string)=>boolean;
- tooltip:(elSelector:string, contentSelector:string)=>void;
- travel:(travelRequest:LocationTravelRequest)=>void;
-
- dailySVars:any;
- /**
- * Executes events in priority-order and according to their weight.
- *
- * Each event can end the execution of the events coming behind it. In this case, the `exitCode` is `STOPPED_BY_EVENT`. Default passage rendering should be omitted then.
- *
- * @type {(events:PrioritizedEventDict)=>{exitCode:EEventsExecuteExitCode,contents:string}}
- */
- eventsExecute:(events:PrioritizedEventDict)=>{exitCode:EEventsExecuteExitCode,contents:string,actions:Action[]};
- eventsGet:(tags:string|string[])=>PrioritizedEventDict;
- gt:(...args:any)=>void;
- /**
- * Returns whether the place the playercharacter currently is at has internet access.
- * @returns {boolean}
- */
- hasInternet(): boolean;
- navigationOverride:(destinationPassageName:string)=>string;
- recursionCounterGT:number[];
- settingsApply:(settings: any)=>void;
- tooltipCounter:number;
- wardrobeSettings:WardrobeSettings;
- weekDayIntToString: any;
- worldSettings:any;
- isWebVersion:boolean;
- difficultyOfHighHeels(shoes?: OutfitItemShoes,levelCategory?:number):ESkillDifficulty
- skillHistoryDrawGraph(domElementId:string,skillID:string):void;
- appearanceFunctions:{
- current: {[key:string]: (pc:PlayerCharacter) => string};
- lasting: {[key:string]: (pc:PlayerCharacter) => string};
- genetic: {[key:string]: (pc:PlayerCharacter) => string};
- }
- wardrobeWearableFunctions:{[key:string]:((outfitOwned:OutfitOwned)=>string|null)};
- }
-
- export interface SugarCubeStoryVariables {
- events: Events;
- finances: any;
- housing:any;
- inventory: Inventory;
- jobs: any;
- location: GameLocation;
- npcs:NPCsDict;
- pc: PlayerCharacter;
- q: QuestsDict;
- settings:any;
- startCharacter: string;
- time: GameTime;
- wardrobe:Wardrobe;
- actions:{[actionId:string]:{cooldownEnd:number}}
-
- ARGS: Array<string>;
- connectedLocations: ConnectedLocation[];
-
- /**
- * The location to go back to once an event has fired.
- *
- * @type {LocationIdentifier}
- */
- eventReturnLocation: LocationIdentifier;
- here: string;
- location_var: object;
- locationTravelRequest?:LocationTravelRequest;
- media_path: string;
- modVars:any;
- quest: (id:string)=>Quest;
- result: number | string;
- /**
- * The version of the game. Format is xxxxxxx.xx.xx.
- * @type {number}
- * @example
- * version = 10345; //1.3.45
- */
- version: number;
- callStack: [string,number][];
- }
- export interface SugarCubeTemporaryVariables{
- actions:Action[];
- temporaryEvents:PrioritizedEventDict;
- thisMainPassage:string;
- }
-
- }
- declare global {
- export interface Array<T>{
- getRandomWeighted(): T;
- fancyMathEvaluate(): number;
- filterByObject(filter: object): Array<T>;
- isConsecutive(stepSize?:number): boolean;
- sortByPriority(): Array<T>;
- }
- interface Date{
- format: (formatString:string)=>string;
-
- /**
- * Returns whether the date lies in the future according to the game-time. Returns false if the given time is now. Returns true if gametime is not initialized.
- * @type {()=>boolean}
- */
- isFuture: ()=>boolean;
- }
- interface Math {
-
- /**
- * Rounds to the higher number if positive, to the lower number if negative.
- * @type {(n:number)=>number}
- */
- ceilAbs: (n:number)=>number;
- logBase: (n:number, base:number)=>number;
- }
- export interface Number{
- roundToDecimal:(decimalPlaces:number)=>number;
- toBoolean:()=>boolean;
-
- }
- export interface String{
- formatUnicorn(format:{}):string;
- removeLeading(leading:string):string;
- toBoolean():boolean;
- }
- export class Util{
- static slugify(s:string): string;
- }
- export interface Window{
- rand(x:number,y:number): number;
- NPCsDict: { new(): NPCsDict };
- Wardrobe: { new(): Wardrobe };
- }
- export interface ActFlags{
-
- /**
- * Overwrite the label in the action bar
- * @type {?string}
- */
- ab_label?:string;
-
-
- /**
- * What's that again?
- * @todo
- * @type {?string}
- */
- action?:string;
- /**
- * Minimum required arousal
- * @type {?number}
- */
- arousal?:number;
-
- /**
- * Overwrite contents
- * @type {?string}
- */
- contents?:string;
- contents_header?:string;
- contents_footer?:string;
-
- /**
- * Captured vars-array (e.g. ['_npcID'])
- * @type {?string[]}
- */
- capture?:string[];
- cost?:{both?:number;cash?:number;bank?:number};
-
- /**
- * The action is disabled. Show the value as tooltip.
- * @type {?string}
- */
- disabled?:string;
- // 'fetish': The action can't be done if you're appalled by this fetish (string or array of strings)
-
-
- /**
- * Don't show this action?
- * @type {boolean}
- */
- hidden?:boolean;
- image?:string;
-
- /**
- * Label (if not set as arg[0])
- * @type {?string}
- */
- label?:string;
-
-
- /**
- * minium required mood
- * @type {?number}
- */
- mood?:number;
- moodlet?:string;
-
-
- /**
- * In case of a string, refers to the field `actions`
- * @type {?{
- * [personalityId:string]:PersonalityRequirement|string
- * }}
- */
- personality?:{
- [personalityId:string]:PersonalityRequirement|string
- };
- priority?:number;
- repeatReset?:{
- id?:string;
- days?:number;
- }
- /**
- * (e.g. '{intelligence:50}')
- * @type {?{[skillId:string]:number}}
- */
- skillRequirment?:{[skillId:string]:number};
- template?:string|string[];
- /**
- * Added time in minutes. Display the time but don't really add it if negative.
- * @type {?number}
- */
- time?:number;
- willpower?:number;
- }
- type ActionTemplate = (flags:ActFlags)=>ActFlags;
- export interface ActiveEffect{
- isActive: boolean|((pc:PlayerCharacter)=>boolean);
- effect:Effect|string;
- }
- export interface AppearanceChange{
- time: Date;
- key: string;
- from: any;
- to: any;
- }
- export interface AppearanceModificatorDefinition{
- label:string;
- desc:string;
-
- /**
- * High comes first.
- * @type {number}
- */
- priority?:number;
-
- /**
- * Sets the appearance value. Use sparingly.
- *
- * @type {?number}
- */
- set?:number;
-
- /**
- * Sets the max number the appearance can reach.
- * @type {?number}
- */
- max?:number;
-
- /**
- * Sets the min number the appearance can reach.
- * @type {?number}
- */
- min?:number;
-
- /**
- * Decreases the appearance by the given number;
- * @type {?number}
- */
- dec?:number;
-
- /**
- * Increases the appearance by the given number;
- * @type {?number}
- */
- inc?:number;
- }
- export interface StartCharacterDefinition{
- hidden?:boolean;
- /**
- * The description that's displayed to the player
- * @type {?string}
- */
- desc?:string
- finances?:{
-
- /**
- * The starting cash of the character.
- * @type {?number}
- */
- cash?:number
- },
- housing?:{
- home?: string
- },
- /**
- * Obvious things are obvious
- * @type {?string}
- */
- image?:string
-
- /**
- * Used internally in `setup.getStartingCharacter`. Don't overwrite.
- * @type {?string[]}
- */
- inheritance?:string[]
- items?:{
- [key: string]: number | {
- generateFunction:string,
- generateParameters?:any[]
- }
-
- }
-
- /**
- * What is displayed to the player
- * @type {?string}
- */
- label?:string
- location?:{
- [key: string]:{
- [key: string]:any
- }
- }
- locationTags?:{
- [key: string]:{
- [key: string]:any
- }
- }
- npcs?:{
- bulk?:{
- [key: string]:{
- values?:{
- rel?:number,
- fam?:number
- },
- filters?:{
- [key: string]:any
- }
- }
- }
- [key: string]: any
- }
-
-
- /**
- * Another character defintion that is to be inherited.
- * @type {?string}
- */
- parent?:string
- /**
- * Starting values of the PlayerCharacter. Every field of this class can be overwritten.
- * @type {?{ [key: string]: any; }}
- */
- pc?:{ [key: string]: any; }
- personality?:{ [key: string]: number; }
- quests?:{
- [key: string]: boolean;
- }
- school?:{
- [key: string]: any;
- }
- skills?:{
- [key: string]: number;
- }
-
- /**
- * Categories of the starting character.
- * @type {string[]}
- */
- tags?:string[]
- time?: any;
- traits?:{
- [key: string]: number;
- }
- wardrobe?:{
- itemsByFilter?:{
- [key: string]:{
- filters?:{
- [key: string]:any;
- };
- count?: number;
- action?: 'add'|'wear';
- }
- },
- items?:{
- [key: string]:'add'|'wear';
- }
- };
- }
- export interface BodypartDefinition{
-
- id?:string;
- /**
- * Name of another bodypart this bodypart is a synonym for.
- * @type {?string}
- */
- synonymFor?:string;
-
- /**
- * Is this bodypart inside the body? Default: false.
- * @type {?boolean}
- */
- inside?:boolean;
- covered?:boolean|((pc:PlayerCharacter) => boolean);
-
- /**
- * Which activities clean this bodypart.
- * @type {string[]}
- */
- clean?:string[];
- cumDisabled?:boolean;
- painDisabled?:boolean;
- label?:string;
- painDesc?:string;
- }
- export interface Character{
- eyecolor:EEyeColor;
- eyesize:EEyeSize;
- hairColor:EHairColor;
- hairLengthCategory:EHairLength;
- }
- export interface ConnectedLocation{
- forPassage : string,
- destination: LocationIdentifier,
- label: string,
- image: string,
- duration: number,
- class: string,
- priority: number,
- content: string,
- hotkeys: any,
- indecencyBlocked?:boolean,
- tags?:string[];
- capturedVars: {[key:string]:any};
- }
- export interface ConnectedLocationFlags{
- allowedVehicles?:string[];
- capture?:string[];
- class?:string;
- hotkeys?:string[];
- indecencyBlocked?:boolean;
- priority?:number;
- tags?:string[];
- }
- export interface ConsumableDefinition{
- alcohol?:number;
- costItems?:string[];
- desc?:string;
-
- /**
- * Relative calories with 1 being an healthy amount.
- * @type {?number}
- */
- energy?:number;
- hunger?: number;
- image?: string;
- imageRand?: ImageRand;
- label?:string;
- moodletIds?:string[];
- price?: number;
-
- thirst?:number;
- /**
- * The time it takes to consume.
- * @type {number}
- */
- time:number;
- type: 'drink'|'meal'|'candy';
- }
-
- export interface ConsumableMenuDefinition{
- payment:'cash'|'bank'|'both';
- categories:{
- [key:string] : {
- label:string;
- items:{
- [key:string] : {
-
- /**
- * Overwrites the original items price with a flat number. In case of a function, the original price is taken as input. `Math.round()` is always applied to the result then.
- * @type {(number|((n:number)=>number))}
- */
- price?:number|((n:number)=>number);
- }
- }
- }
- }
- }
- export interface DrugDefinition{
- deterioration: number;
- effects:{[key: string]:{condition:any; effect:string;}};
- byproduct?:DrugByproductDefinition;
-
- /*{
- buildup: 1.5,
- deterioration: 0.0017,
- effects:{
- hangover:{
- condition:{mainEffectsInactive:true},
- effect: 'hangover'
- }
- }
- }*/
- }
- export interface DrugByproductDefinition extends DrugDefinition{
- buildup: number;
- }
- export interface DrugInCharacter{
- vol:number;byproduct?:number;
- }
- export interface Effect{
-
- /**
- * If true, an icon will be displayed in the sidebar. Make sure to specify `desc` and `image` in this case.
- * @type {?boolean}
- */
- sidebar?:boolean;
- desc?:string;
- image?: string;
-
- /**
- * ID of a moodlet that should automatically be enabled while the effect is active.
- * @type {string}
- */
- moodlet?: string;
-
- /**
- * Influences variables such as cerebral skill learning. 1 is the default value.
- *
- * Multiplicative
- * @type {number}
- */
- consciousness?: number;
-
- /**
- * Plain reduction of overall pain.
- * @type {?number}
- */
- painReduction?: number;
-
- /**
- * Plain increase in pain in bodypart for given reason.
- * @type {?{[bodypartId:string]:{[painReasonId:string]:number}}}
- */
- pain?:{[bodypartId:string]:{[painReasonId:string]:number}};
- painGain?:{
- [bodypartId:string]:
- number
- }
- painRegen?:{
- [bodypartId:string]:
- number
- }
-
- /**
- * Plain increase in skill.
- * @type {?{[skillId:string]:number}}
- */
- skills?:{[skillId:string]:number};
-
- /**
- * Percentage of skill gain. 1 is default. 0.9 would be a 10% decrease in skill gain.
- * @type {{
- * [skillId:string]:number
- * }}
- */
- skillGain?:{
- [skillId:string]:number
- }
- skillTagGain?:{
- [tag:string]:number
- }
- }
- export interface ExpiringVar<T>{
- val:T;
- til:Date;
- }
- export interface Filter{
- }
- export interface GameEvent{
- priority: number, weight: number, contents: string
- }
- export interface ImageRand{
- }
- export interface ItemDefinition{
-
-
- /**
- * An optional description to be displayed to the player.
- * @type {?string}
- */
- desc?: string;
-
- /**
- * Information on how the item behaves if used as furniture.
- * @type {?object}
- */
- furniture?:object;
- /**
- * Path to the image of the item.
- * @type {string}
- */
- image:string;
- /**
- * The label that's displayed to the player. Defaults to the id of the item.
- * @type {?string}
- */
- label?:string;
-
- /**
- * How many items of the same type fit into a purse.
- * @type {?number}
- */
- limit?:number;
-
- /**
- * A passage the player is sent to when he clicks the item in the inventory.
- * @type {?string}
- */
- passage?:string;
-
- /**
- * Default price.
- * @type {?number}
- */
- price?: number;
-
- }
- export interface JobDefinition{
- }
- export interface LocationDefinition{
- openTimes?:TimespanIdentifier;
- }
- export type NPC = NPCAccessor & Character & {[key:string]:any};
- export interface NPCActivity{
- location:string;
- activity:string[];
- }
- export interface NPCDefinition{
- passage?:string;
- image?:string;
- rel?:number;
- dna?:string;
- firstname?:string;
- nickname?:string;
- lastname?:string;
- usedname?:string;
- dob?:number;
- gender: EGender;
- haircol?:number;
- height?:number;
- notes?:string;
- thdick?:string;
- dick?:number;
- bust?:number;
- spermpot?:number;
- sexskill?:number;
- rep?:number;
- intel?:number;
- hotcat_rating?:number;
- preference?:{[key:string]:NPCPreference};
- defaults?:string[];
-
- /**
- * Information on where the NPC is and what they do there at a given time.
- * @type {?Timetable<NPCActivity>}
- */
- timetable?:Timetable<NPCActivity>;
- }
- export interface NPCDefaultDefinition{
- }
- export interface NPCGenerateOptions {
- generators?:string[];
- fields?:{gender?:EGender} & {[key:string]:any};
- vars?:{[key:string]:any};
- }
- export interface NPCImageDefinition{
- path:string;
- age: EAgeBracket;
- gender:EGender;
- }
- export interface NPCPreference{
- state: ENPCPreference;
- }
- export interface NPCPreferenceDefinition{
- matches:(pc:PlayerCharacter)=>boolean;
- }
- export type OutfitDefinition = OutfitDefinitionBodysuit | OutfitDefinitionBra | OutfitDefinitionClothes | OutfitDefinitionCoat | OutfitDefinitionPanties | OutfitDefinitionPurse | OutfitDefinitionShoes | OutfitDefinitionSwimwear;
- export interface OutfitDefinitionRaw{
- quality: EOutfitQuality;
- vendor:string;
- index?: number;
- description?: string;
-
- /**
- * When accessing an Outfit-object, use the getter `image`, since it supports legacy outfits as well.
- * @type {?string}
- */
- imagePath?:string;
- }
- export interface OutfitDefinitionBodysuit extends OutfitDefinitionRaw{
- type:'bodysuit';
- subtype?:number;
- material?:number;
- fun?:number;
- thinness?:number;
- cover?:number;
- coverFront?:number;
- coverBack?:number;
- }
- export interface OutfitDefinitionBra extends OutfitDefinitionRaw{
- type:'bra';
- subtype?: number;
- fun?: number;
- thinness?: number;
- material?: number;
- cover?: number;
- }
- export interface OutfitDefinitionClothes extends OutfitDefinitionRaw{
- type:'clothes';
- subtype:string;
- thinness: number;
- topcut?: number;
- includesBra?: number;
- includesPanties?: number;
- isDress?:number;
- isOnepiece?: number;
- inhib?: number;
- pantsShortness?:number;
- skirtShortness?:number;
- coverTop?:number;
- coverBack?:number;
- coverFront?:number;
-
- /**
- * 4 seems to be prostitution.
- * @type {number}
- */
- style?: number;
- style2?: number;
- style3?:number;
- bimbo?:number;
- }
- export interface OutfitDefinitionCoat extends OutfitDefinitionRaw{
- type:'coat';
- warm:number;
- }
- export interface OutfitDefinitionPanties extends OutfitDefinitionRaw{
- type:'panties';
- subtype?: number;
- fun?: number;
- thinness?: number;
- material?: number;
- coverBack?:number;
- coverFront?:number;
- }
- export interface OutfitDefinitionPurse extends OutfitDefinitionRaw{
- type:'purse';
- }
- export interface OutfitDefinitionShoes extends OutfitDefinitionRaw{
- type:'shoes';
- style?:number;
- cut?:number;
- heels?:number;
- }
- export interface OutfitDefinitionSwimwear extends OutfitDefinitionRaw{
- type:'swimwear';
- subtype?:string;
- thinness:number;
- topcut?:number;
- coverTop?:number;
- coverFront?:number;
- coverBack?:number;
- includesBra?:number;
- includesPanties:number;
- isOnepiece?:number;
- bimbo?:number;
- inhib:number;
- }
- export type OutfitOwned = OutfitDefinition & OutfitOwnerShipData;
- export interface OutfitOwnerShipData{
- h?:number;
- l?:number;
- bmi?:number;
- }
- export interface PainReasonDefinition{
-
- /**
- * How much the pain deteriorats each hour.
- * @type {number}
- */
- deterioration: number;
- label: string;
- description:string;
- }
- export interface PersonalityRequirement{
- impact: number|string;
- /**
- * Costs willpower if you're under the value, but not if you're over it.
- * @type {?number}
- */
- min?:number;
- /**
- * Costs willpower if you're over the value, but not if you're under it.
- * @type {?number}
- */
- max?:number;
-
- /**
- * Costs you willpower if you're under or over the value.
- * @type {?number}
- */
- target?:number;
- }
- export interface PersonalityScaleDefinition{
-
- /**
- * Hide this from the player if true. Will not appear in lists and won't be mentioned in dialogs.
- * @type {?boolean}
- */
- hidden?:boolean;
- start: number;
- interval: number[];
- label: string | string[];
- desc?: string;
- image?:string;
- actions?:{[key:string]:PersonalityRequirement};
- impacts?:{[key:string]:number};
- msg_tooHigh?:string;
- msg_tooLow?:string;
- functions?:{[key:string]:(any:any) => any}
- }
- export interface PrioritizedEventDict{
- [priority:number]:GameEvent
- }
- export interface SexEncounter{
-
- /**
- * The ID of the npc Sveta had sex with. If she has sex with more than one character (e.g. threesome) an encounter has to be created for each of them.
- * @type {string}
- */
- npcId: string,
- time:Date,
- types: ESexEncounterType[],
- /**
- * Is Sveta aware of the sex-act? False in case of hypnosis, blackouts, etc.
- * @type {boolean}
- */
- aware: boolean,
- /*civ: Cum in vagina
- civa:Cum in vagina aware*/
- tags: string[]
- }
- export interface SexStatistics{/*
- bj:SexStatistic;
- hj:SexStatistic;
- vaginal:SexStatistic;
- anal:SexStatistic;*/
- [key:string]: SexStatistic
- }
- export interface SexStatistic{
- /*love:number[];
- friend:number[];
- acquaintance:number[];
- stranger:number[];*/
- [key:string]: number[]
- }
- export interface SkillDefinition{
-
- label ?: string;
- description?:string;
- descibtionByLevel?:{[key:number]: string};
- image?:string;
- dailyExpLimit?:number|((levelAtStartOfDay:number)=>number);
-
- /**
- * If true, the amount of gained experience depends on the difficulty of a task.
- * @type {?boolean}
- */
- isDifficultyBased?:boolean;
-
- /**
- * Hide this skill from players in overviews when set to true.
- * @type {?boolean}
- */
- hidden?: boolean;
- /**
- * A function that provides a skill level.
- * @type {(skillLevel:number)=>number} Experience
- */
- e2s?: (skillLevel:number)=>number;
- /**
- * A function that provides a number of required skillpoints.
- * @type {(skillLevel:number)=>number} Skill Level
- */
- s2e?: (skillLevel:number)=>number;
- functions?: {[functionId:string]:Function};
- vars?:{[key:string]:any};
- }
-
- export interface SkillOfCharacter{
-
-
- /**
- * The maximum number the experience can reach. 0 if disabled.
- * @type {number}
- */
- ceil:number;
-
- /**
- * Current number of experience points.
- * @type {number}
- */
- experience:number;
-
- /**
- * History of this skill for the last days.
- * @type {number[]}
- */
- experienceHistory:number[];
-
- /**
- * The minimum number the experience can reach.
- * @type {number}
- */
- floor: number;
- /**
- * The last daystart this skill has been used.
- * @type {number}
- */
- lastUsed: number;
- }
- export interface TimespanIdentifier{
- days?: ('MO'|'TU'|'WE'|'TH'|'FR'|'SA'|'SU'|'work')[];
- daysBL?: ('MO'|'TU'|'WE'|'TH'|'FR'|'SA'|'SU'|'work')[];
-
- /**
- * True: The day needs to be a school holiday. False: The day needs to be
- * @type {?boolean}
- */
- holiday?:EDayVacationState;
- /*vacation?:boolean;*/
- begin?:number[];
- end?:number[];
- }
-
- export interface Timetable<T>{
- [key:string]:{
- time: TimespanIdentifier;
- result?: T;
- subtable?:Timetable<T>;
- either?:T[];
- }
- }
- export interface WardrobeSettings{
-
- /**
- * Maximum difference of the bmi-value of bought and worn clothes.
- * @type {number}
- */
- bmiSizeMaxDifference: number;
- }
- export interface WornOutfitDefinition{
- bra: string,
- coat: string,
- clothes: string,
- panties: string,
- purse: string,
- shoes: string
- }
- }
- export { };
|