upd
Browse files
src/lib/components/MonsterGenerator/MonsterGenerator.svelte
CHANGED
@@ -75,16 +75,16 @@ Here is the output schema:
|
|
75 |
"specialPassiveTraitDescription": {"type": "string", "description": "Describe a passive ability that gives this monster a unique advantage in battle"},
|
76 |
"attackActionName": {"type": "string", "description": "Name of the monster's primary damage-dealing attack (e.g., 'Flame Burst', 'Toxic Bite')"},
|
77 |
"attackActionDescription": {"type": "string", "description": "Describe how this attack damages the opponent and any special effects"},
|
78 |
-
"
|
79 |
-
"
|
80 |
-
"
|
81 |
-
"
|
82 |
"specialActionName": {"type": "string", "description": "Name of the monster's ultimate move (one use per battle)"},
|
83 |
"specialActionDescription": {"type": "string", "description": "Describe this powerful finishing move and its dramatic effects in battle"}
|
84 |
},
|
85 |
"required": ["name", "description", "rarity", "HP", "defence", "attack", "speed", "specialPassiveTraitDescription",
|
86 |
-
"attackActionName", "attackActionDescription", "
|
87 |
-
"
|
88 |
}
|
89 |
\`\`\`
|
90 |
|
@@ -214,7 +214,7 @@ Assistant: \`\`\`json`;
|
|
214 |
try {
|
215 |
const output = await rwkvClient.predict(0, [
|
216 |
conceptPrompt,
|
217 |
-
|
218 |
0.7, // temperature
|
219 |
0.8, // topP
|
220 |
0.1, // presencePenalty
|
@@ -247,7 +247,7 @@ Assistant: \`\`\`json`;
|
|
247 |
try {
|
248 |
const output = await rwkvClient.predict(0, [
|
249 |
promptGenerationPrompt,
|
250 |
-
|
251 |
0.7, // temperature
|
252 |
0.8, // topP
|
253 |
0.1, // presencePenalty
|
@@ -335,8 +335,8 @@ Assistant: \`\`\`json`;
|
|
335 |
500, // maxTokens - more for JSON
|
336 |
0.3, // temperature - lower for structured output
|
337 |
0.9, // topP
|
338 |
-
0.
|
339 |
-
0.
|
340 |
]);
|
341 |
|
342 |
console.log('Stats output:', output);
|
@@ -370,12 +370,30 @@ Assistant: \`\`\`json`;
|
|
370 |
}
|
371 |
}
|
372 |
|
373 |
-
// Map
|
374 |
if (parsedStats.specialPassiveTraitDescription) {
|
375 |
parsedStats.specialPassiveTrait = parsedStats.specialPassiveTraitDescription;
|
376 |
delete parsedStats.specialPassiveTraitDescription;
|
377 |
}
|
378 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
const stats: MonsterStats = parsedStats;
|
380 |
state.monsterStats = stats;
|
381 |
console.log('Monster stats generated:', stats);
|
|
|
75 |
"specialPassiveTraitDescription": {"type": "string", "description": "Describe a passive ability that gives this monster a unique advantage in battle"},
|
76 |
"attackActionName": {"type": "string", "description": "Name of the monster's primary damage-dealing attack (e.g., 'Flame Burst', 'Toxic Bite')"},
|
77 |
"attackActionDescription": {"type": "string", "description": "Describe how this attack damages the opponent and any special effects"},
|
78 |
+
"buffActionName": {"type": "string", "description": "Name of the monster's self-enhancement ability (e.g., 'Iron Defense', 'Speed Boost')"},
|
79 |
+
"buffActionDescription": {"type": "string", "description": "Describe which stats are boosted and how this improves the monster's battle performance"},
|
80 |
+
"debuffActionName": {"type": "string", "description": "Name of the monster's enemy-weakening ability (e.g., 'Intimidate', 'Slow Poison')"},
|
81 |
+
"debuffActionDescription": {"type": "string", "description": "Describe which enemy stats are lowered and how this weakens the opponent"},
|
82 |
"specialActionName": {"type": "string", "description": "Name of the monster's ultimate move (one use per battle)"},
|
83 |
"specialActionDescription": {"type": "string", "description": "Describe this powerful finishing move and its dramatic effects in battle"}
|
84 |
},
|
85 |
"required": ["name", "description", "rarity", "HP", "defence", "attack", "speed", "specialPassiveTraitDescription",
|
86 |
+
"attackActionName", "attackActionDescription", "buffActionName", "buffActionDescription",
|
87 |
+
"debuffActionName", "debuffActionDescription", "specialActionName", "specialActionDescription"]
|
88 |
}
|
89 |
\`\`\`
|
90 |
|
|
|
214 |
try {
|
215 |
const output = await rwkvClient.predict(0, [
|
216 |
conceptPrompt,
|
217 |
+
600, // maxTokens
|
218 |
0.7, // temperature
|
219 |
0.8, // topP
|
220 |
0.1, // presencePenalty
|
|
|
247 |
try {
|
248 |
const output = await rwkvClient.predict(0, [
|
249 |
promptGenerationPrompt,
|
250 |
+
600, // maxTokens
|
251 |
0.7, // temperature
|
252 |
0.8, // topP
|
253 |
0.1, // presencePenalty
|
|
|
335 |
500, // maxTokens - more for JSON
|
336 |
0.3, // temperature - lower for structured output
|
337 |
0.9, // topP
|
338 |
+
0.0, // presencePenalty - lower for JSON
|
339 |
+
0.0 // countPenalty
|
340 |
]);
|
341 |
|
342 |
console.log('Stats output:', output);
|
|
|
370 |
}
|
371 |
}
|
372 |
|
373 |
+
// Map field names from schema to interface
|
374 |
if (parsedStats.specialPassiveTraitDescription) {
|
375 |
parsedStats.specialPassiveTrait = parsedStats.specialPassiveTraitDescription;
|
376 |
delete parsedStats.specialPassiveTraitDescription;
|
377 |
}
|
378 |
|
379 |
+
// Handle potential old field names from LLM
|
380 |
+
if (parsedStats.boostActionName) {
|
381 |
+
parsedStats.buffActionName = parsedStats.boostActionName;
|
382 |
+
delete parsedStats.boostActionName;
|
383 |
+
}
|
384 |
+
if (parsedStats.boostActionDescription) {
|
385 |
+
parsedStats.buffActionDescription = parsedStats.boostActionDescription;
|
386 |
+
delete parsedStats.boostActionDescription;
|
387 |
+
}
|
388 |
+
if (parsedStats.disparageActionName) {
|
389 |
+
parsedStats.debuffActionName = parsedStats.disparageActionName;
|
390 |
+
delete parsedStats.disparageActionName;
|
391 |
+
}
|
392 |
+
if (parsedStats.disparageActionDescription) {
|
393 |
+
parsedStats.debuffActionDescription = parsedStats.disparageActionDescription;
|
394 |
+
delete parsedStats.disparageActionDescription;
|
395 |
+
}
|
396 |
+
|
397 |
const stats: MonsterStats = parsedStats;
|
398 |
state.monsterStats = stats;
|
399 |
console.log('Monster stats generated:', stats);
|
src/lib/components/MonsterGenerator/MonsterResult.svelte
CHANGED
@@ -150,12 +150,12 @@
|
|
150 |
<p>{workflowState.monsterStats.attackActionDescription}</p>
|
151 |
</div>
|
152 |
<div class="ability-item">
|
153 |
-
<h5>
|
154 |
-
<p>{workflowState.monsterStats.
|
155 |
</div>
|
156 |
<div class="ability-item">
|
157 |
-
<h5>Debuff: {workflowState.monsterStats.
|
158 |
-
<p>{workflowState.monsterStats.
|
159 |
</div>
|
160 |
<div class="ability-item">
|
161 |
<h5>Ultimate: {workflowState.monsterStats.specialActionName}</h5>
|
|
|
150 |
<p>{workflowState.monsterStats.attackActionDescription}</p>
|
151 |
</div>
|
152 |
<div class="ability-item">
|
153 |
+
<h5>Buff: {workflowState.monsterStats.buffActionName}</h5>
|
154 |
+
<p>{workflowState.monsterStats.buffActionDescription}</p>
|
155 |
</div>
|
156 |
<div class="ability-item">
|
157 |
+
<h5>Debuff: {workflowState.monsterStats.debuffActionName}</h5>
|
158 |
+
<p>{workflowState.monsterStats.debuffActionDescription}</p>
|
159 |
</div>
|
160 |
<div class="ability-item">
|
161 |
<h5>Ultimate: {workflowState.monsterStats.specialActionName}</h5>
|
src/lib/types/index.ts
CHANGED
@@ -114,10 +114,10 @@ export interface MonsterStats {
|
|
114 |
specialPassiveTrait: string;
|
115 |
attackActionName: string;
|
116 |
attackActionDescription: string;
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
specialActionName: string;
|
122 |
specialActionDescription: string;
|
123 |
}
|
|
|
114 |
specialPassiveTrait: string;
|
115 |
attackActionName: string;
|
116 |
attackActionDescription: string;
|
117 |
+
buffActionName: string;
|
118 |
+
buffActionDescription: string;
|
119 |
+
debuffActionName: string;
|
120 |
+
debuffActionDescription: string;
|
121 |
specialActionName: string;
|
122 |
specialActionDescription: string;
|
123 |
}
|