Files
ai-rpg/backend/app/prompts/fantasy_preset.py
2026-06-19 11:28:04 +03:00

226 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Built-in Fantasy preset (RU + EN)."""
from __future__ import annotations
FANTASY_PRESET_RU = {
"slug": "fantasy-default-ru",
"title": "Фэнтези: Меч и Магия",
"description": "Классический фэнтези-сеттинг с HP/MP, инвентарём, фракциями и заклинаниями.",
"language": "ru",
"payload": {
"world_seed_prompt": (
"Классическое темное фэнтези в духе позднего средневековья. Королевства людей, эльфийские леса, "
"гномьи города под горами, орды орков на восточных рубежах. Магия редкая и опасная, церковь "
"борется с ересями. Герой — начинающий авантюрист, ищущий славы и средств к существованию."
),
"rules": {
"stats": ["health", "mana", "stamina", "gold", "level", "xp"],
"combat": "пошаговые броски d20 + модификатор против сложности",
"magic": "трата маны на заклинания, восстановление во сне",
"death": "при health <= 0 — состояние при смерти, нужно стабилизировать",
"inventory": "слоты = 10 + сила модификатор",
"time": "внутренний календарь: дни, часы. Сон = 8ч, путешествие между локациями 4-12ч.",
},
"world_schema": {
"type": "object",
"properties": {
"player": {
"type": "object",
"properties": {
"name": {"type": "string"},
"race": {"type": "string"},
"class": {"type": "string"},
"level": {"type": "integer", "minimum": 1},
"xp": {"type": "integer", "minimum": 0},
"stats": {
"type": "object",
"properties": {
"health": {"type": "number"},
"health_max": {"type": "number"},
"mana": {"type": "number"},
"mana_max": {"type": "number"},
"stamina": {"type": "number"},
"stamina_max": {"type": "number"},
"strength": {"type": "integer"},
"dexterity": {"type": "integer"},
"constitution": {"type": "integer"},
"intelligence": {"type": "integer"},
"wisdom": {"type": "integer"},
"charisma": {"type": "integer"},
},
"required": ["health", "health_max", "mana", "mana_max"],
},
"inventory": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"qty": {"type": "integer", "minimum": 0},
"type": {"type": "string"},
"notes": {"type": "string"},
},
"required": ["name", "qty"],
},
},
"effects": {"type": "array", "items": {"type": "object"}},
"gold": {"type": "integer", "minimum": 0},
"location": {"type": "string"},
},
"required": ["name", "stats", "inventory"],
},
"npcs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "string"},
"name": {"type": "string"},
"description": {"type": "string"},
"relation": {"type": "string"},
"stats": {"type": "object"},
"location": {"type": "string"},
},
"required": ["id", "name"],
},
},
"locations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {"type": "string"},
"name": {"type": "string"},
"description": {"type": "string"},
"type": {"type": "string"},
"danger": {"type": "string"},
},
"required": ["id", "name"],
},
},
"world_time": {
"type": "object",
"properties": {
"day": {"type": "integer"},
"hour": {"type": "integer"},
"season": {"type": "string"},
"weather": {"type": "string"},
},
},
"flags": {"type": "object"},
},
"required": ["player"],
},
"initial_state": {
"player": {
"name": "Герой",
"race": "Человек",
"class": "Авантюрист",
"level": 1,
"xp": 0,
"stats": {
"health": 20, "health_max": 20,
"mana": 10, "mana_max": 10,
"stamina": 15, "stamina_max": 15,
"strength": 10, "dexterity": 10, "constitution": 10,
"intelligence": 10, "wisdom": 10, "charisma": 10,
},
"inventory": [
{"name": "Старый меч", "qty": 1, "type": "weapon", "notes": "1d8 урон"},
{"name": "Кожаная броня", "qty": 1, "type": "armor", "notes": "+1 AC"},
{"name": "Хлеб", "qty": 3, "type": "food", "notes": "восстанавливает 2 стамины"},
{"name": "Факел", "qty": 5, "type": "tool", "notes": "горит 1 час"},
],
"effects": [],
"gold": 10,
"location": "Деревня Старый Дуб",
},
"npcs": [],
"locations": [
{
"id": "village_old_oak",
"name": "Деревня Старый Дуб",
"description": "Маленькая деревня на опушке Тёмного Леса.",
"type": "settlement",
"danger": "safe",
}
],
"world_time": {"day": 1, "hour": 8, "season": "spring", "weather": "clear"},
"flags": {},
},
"initial_time": "day_1_hour_8",
"suggested_system_prompt": (
"Ты — Game Master классического фэнтези. Используй пошаговые правила: броски d20, "
"трата маны на заклинания, учёт усталости. Описывай сцены кинематографично, но коротко. "
"Соблюдай сеттинг средневекового тёмного фэнтези. Не давай игроку несбыточных обещаний."
),
},
}
FANTASY_PRESET_EN = {
"slug": "fantasy-default-en",
"title": "Fantasy: Sword & Sorcery",
"description": "Classic fantasy setting with HP/MP, inventory, factions and spells.",
"language": "en",
"payload": {
"world_seed_prompt": (
"Classic dark fantasy in a late-medieval style. Human kingdoms, elven forests, dwarven cities "
"under the mountains, orc hordes on the eastern marches. Magic is rare and dangerous, the "
"church hunts heretics. The hero is a novice adventurer seeking fame and coin."
),
"rules": {
"stats": ["health", "mana", "stamina", "gold", "level", "xp"],
"combat": "turn-based d20 rolls + modifier vs difficulty",
"magic": "mana cost per spell, recovered by sleep",
"death": "at health <= 0 — dying state, must be stabilized",
"inventory": "slots = 10 + strength modifier",
"time": "internal calendar: days, hours. Sleep = 8h, travel between locations 4-12h.",
},
"world_schema": FANTASY_PRESET_RU["payload"]["world_schema"],
"initial_state": {
"player": {
"name": "Hero",
"race": "Human",
"class": "Adventurer",
"level": 1,
"xp": 0,
"stats": {
"health": 20, "health_max": 20,
"mana": 10, "mana_max": 10,
"stamina": 15, "stamina_max": 15,
"strength": 10, "dexterity": 10, "constitution": 10,
"intelligence": 10, "wisdom": 10, "charisma": 10,
},
"inventory": [
{"name": "Old sword", "qty": 1, "type": "weapon", "notes": "1d8 damage"},
{"name": "Leather armor", "qty": 1, "type": "armor", "notes": "+1 AC"},
{"name": "Bread", "qty": 3, "type": "food", "notes": "restores 2 stamina"},
{"name": "Torch", "qty": 5, "type": "tool", "notes": "burns 1 hour"},
],
"effects": [],
"gold": 10,
"location": "Old Oak Village",
},
"npcs": [],
"locations": [
{
"id": "village_old_oak",
"name": "Old Oak Village",
"description": "A small village on the edge of the Darkwood.",
"type": "settlement",
"danger": "safe",
}
],
"world_time": {"day": 1, "hour": 8, "season": "spring", "weather": "clear"},
"flags": {},
},
"initial_time": "day_1_hour_8",
"suggested_system_prompt": (
"You are the Game Master of a classic fantasy. Use turn-based rules: d20 rolls, mana "
"costs for spells, track fatigue. Describe scenes cinematically but briefly. Stay in "
"the dark-fantasy medieval setting. Don't make the player impossible promises."
),
},
}