226 lines
11 KiB
Python
226 lines
11 KiB
Python
"""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."
|
||
),
|
||
},
|
||
}
|