瀏覽代碼

add `generate()` to `$npcs`

Stephan Fuchs 2 月之前
父節點
當前提交
5faaf52c27
共有 3 個文件被更改,包括 8 次插入4 次删除
  1. 2 2
      sugarcube/src/interfaces.d.ts
  2. 2 2
      sugarcube/src/npcs/_random/generate.ts
  3. 4 0
      sugarcube/src/npcs/_system/NPCsDict.ts

+ 2 - 2
sugarcube/src/interfaces.d.ts

@@ -68,7 +68,7 @@ declare module "twine-sugarcube" {
 		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;
+		generateNPC:(dict:NPCsDict,purpose:string,flags:NPCGenerateOptions)=>NPC;
 		getActionTemplate:(id:string)=>ActionTemplate;
 		getBodyparts:()=> {[key: string]:BodypartDefinition };
 		getBodypart:(bodypartId:string)=>BodypartDefinition;
@@ -917,7 +917,7 @@ declare global {
 
 		generators?:string[];
 
-		fields?:{[key:string]:any};
+		fields?:{gender?:EGender} & {[key:string]:any};
 
 		vars?:{[key:string]:any};
 	}

+ 2 - 2
sugarcube/src/npcs/_random/generate.ts

@@ -1,4 +1,4 @@
-setup.generateNPC = function(dict:NPCsDict,purpose:string,flags:NPCGenerateOptions):string{
+setup.generateNPC = function(dict:NPCsDict,purpose:string,flags:NPCGenerateOptions):NPC{
 	const npcId = dict.create(purpose);
 	const npc = dict.npc(npcId);
 
@@ -15,7 +15,7 @@ setup.generateNPC = function(dict:NPCsDict,purpose:string,flags:NPCGenerateOptio
 
 	for(const [fieldKey,fieldValue] of Object.entries(flags.fields ?? {}))
 		npc[fieldKey] = fieldValue;
-	return npcId;
+	return npc;
 }
 
 setup.npcGenerators = {};

+ 4 - 0
sugarcube/src/npcs/_system/NPCsDict.ts

@@ -79,6 +79,10 @@ class NPCsDict{
 		delete this._dynamicData[npcID];
 		this._generatedIds.delete(npcID);
 	}
+
+	generate(purpose:string,flags:NPCGenerateOptions):NPC{
+		return setup.generateNPC(this,purpose,flags);
+	}
 	
     /**
 	 * Get a value of a field for a NPC.