Files
ai-rpg/backend/app/prompts/fantasy_preset.py

226 lines
11 KiB
Python
Raw Normal View History

2026-06-19 11:28:04 +03:00
"""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."
),
},
}