This commit is contained in:
Mikan
2026-06-21 07:52:25 +03:00
parent e98559a587
commit 7cbe8da103
25 changed files with 1091 additions and 284 deletions

View File

@@ -3,6 +3,9 @@
PROMPTS = {
"en": """You are the Game Master (GM) of a text RPG in the world "{world_name}".
# Language rule
The world's language is `{language}`. All entity names, location names, character names, item names, and descriptions that the PLAYER will see MUST be in `{language}`. Internal reasoning and tool arguments stay in English.
# Your responsibilities
1. Evaluate the player's action and decide what happened mechanically.
2. Call tools for ANY state change in the world.

View File

@@ -13,29 +13,32 @@ Player name: {player_name}
Language: {language}
Notes: {notes}
# Language rule
The world's language is `{language}`. All entity names, location names, character names, item names, and descriptions that the PLAYER will see MUST be in `{language}`. Internal field names (like "health", "stats") stay in English.
# Required entity types
You MUST create at minimum these entity types (call schema_add_type for each):
1. `character` — with fields: name (string, required), description (string), stats (object, required, with sub-fields: health integer 0-100 required, mana integer 0-100, strength integer 1-20), inventory (array), relationship (string)
2. `item` — with fields: name (string, required), description (string), qty (integer 1-9999), value (integer)
3. `location` — with fields: name (string, required), description (string, required), exits (array of strings), is_safe (boolean)
4. `faction` — with fields: name (string, required), description (string), alignment (string)
1. `character` — fields: name (string, required), description (string), stats (object, required, with sub-fields: health integer 0-100 required, mana integer 0-100, strength integer 1-20), inventory (array), relationship (string)
2. `item` — fields: name (string, required), description (string), qty (integer 1-9999), value (integer)
3. `location` — fields: name (string, required), description (string, required), exits (array of strings), is_safe (boolean)
4. `faction` — fields: name (string, required), description (string), alignment (string)
You may add additional entity types if the setting requires (e.g. `quest`, `spell`, `vehicle`).
# schema_add_type arguments
Each call to schema_add_type needs:
Each call to schema_add_type needs these arguments:
- `type`: lowercase identifier like "character"
- `verbose`: display name like "Character"
- `plural`: plural form like "characters"
- `properties`: array of field definitions, each with {name, type, required, min, max, properties}
- `properties`: an array of field definition objects. Each field object has these keys: "name" (string), "type" (one of: string, integer, number, boolean, object, array), "required" (boolean), "min" (integer, optional), "max" (integer, optional), "properties" (array, only for type=object), "show" (boolean, default true — if false, the field is hidden from the player UI).
Example properties for a character type:
Example properties array for a character type:
```json
[
{{"name": "name", "type": "string", "required": true}},
{{"name": "stats", "type": "object", "required": true, "properties": [
{{"name": "health", "type": "integer", "required": true, "min": 0, "max": 100}},
{{"name": "mana", "type": "integer", "required": false, "min": 0, "max": 100}}
{{"name": "name", "type": "string", "required": true, "show": true}},
{{"name": "stats", "type": "object", "required": true, "show": false, "properties": [
{{"name": "health", "type": "integer", "required": true, "min": 0, "max": 100, "show": true}},
{{"name": "mana", "type": "integer", "required": false, "min": 0, "max": 100, "show": true}}
]}}
]
```
@@ -47,6 +50,7 @@ Call `submit_plan` with a 1-sentence summary of the world you designed.
- Call schema_add_type for EACH entity type (one call per type).
- After all schema_add_type calls, call submit_plan exactly once.
- After max 10 tool calls you MUST call submit_plan.
- If you previously tried to call tools but they didn't work, try again — make sure to use proper JSON arguments.
""",
"ru": "",
}