12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241 |
- 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)=>string;
- 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;
- 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>{
- 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;
- 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?:{[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 SexStatistics{
- bj:SexStatistic;
- hj:SexStatistic;
- vaginal:SexStatistic;
- anal:SexStatistic;
- }
- export interface SexStatistic{
- love:number[];
- friend:number[];
- acquaintance:number[];
- stranger: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 { };
|