39004-vm/core/migrations/0002_seed_story.py
2026-03-05 11:04:00 +00:00

128 lines
4.5 KiB
Python
Raw Permalink 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.

from django.db import migrations
def seed_story(apps, schema_editor):
Scene = apps.get_model("core", "Scene")
Choice = apps.get_model("core", "Choice")
Item = apps.get_model("core", "Item")
if Scene.objects.exists():
return
starter_item = Item.objects.create(
name="Серебряный знак Стылого Волка",
slot="trinket",
power=1,
description="Амулет, усиливающий чутьё на нечисть.",
)
blade = Item.objects.create(
name="Клинок мокрых троп",
slot="weapon",
power=3,
description="Лёгкий меч, выкованный для болотных дуэлей.",
)
prologue = Scene.objects.create(
title="Угольный тракт",
slug="prologue",
body=(
"Над трактом висит туман, а трактирщик шепчет о пропавших караванах. "
"Вам предлагают золото и место у огня, если вы проверите болото."
),
)
crossroads = Scene.objects.create(
title="Перепутье болот",
slug="crossroads",
body=(
"Дорога дробится на три тропы. В одной слышен шёпот, в другой — скрежет стали, "
"третья уходит в заросли, где поблескивает огонёк."
),
)
lair = Scene.objects.create(
title="Логово на мели",
slug="lair",
body=(
"Вы находите гнездо твари раньше, чем она замечает вас. Пахнет железом и болотной "
"травой. Время решить, как закончится охота."
),
)
ambush = Scene.objects.create(
title="Засада в камышах",
slug="ambush",
body=(
"Тварь поднимается прямо из воды. Ваша спина касается холодного дерева, а туман "
"съедает пути отступления."
),
)
village = Scene.objects.create(
title="Поселение Гнилых крыш",
slug="village",
body=(
"В деревне тихо. Староста готов говорить только после того, как вы разделите "
"с ним кружку чёрного настоя."
),
)
Choice.objects.create(
scene=prologue,
text="Принять заказ и выдвинуться к болоту.",
next_scene=crossroads,
)
Choice.objects.create(
scene=prologue,
text="Сначала расспросить старосту о пропавших.",
next_scene=village,
)
Choice.objects.create(
scene=crossroads,
text="Выслеживать тварь по следам (Фокус 12).",
required_skill="focus",
difficulty=12,
success_scene=lair,
fail_scene=ambush,
reward_item=blade,
)
Choice.objects.create(
scene=crossroads,
text="Зажечь факелы и идти напролом.",
next_scene=ambush,
)
Choice.objects.create(
scene=village,
text="Попросить алхимические сведения (Алхимия 12).",
required_skill="alchemy",
difficulty=12,
success_scene=crossroads,
fail_scene=prologue,
)
Choice.objects.create(
scene=ambush,
text="Отступить к тракту и перегруппироваться.",
next_scene=prologue,
)
Choice.objects.create(
scene=lair,
text="Проверить добычу и вернуться с трофеями.",
next_scene=prologue,
reward_item=starter_item,
)
def unseed_story(apps, schema_editor):
Scene = apps.get_model("core", "Scene")
Choice = apps.get_model("core", "Choice")
Item = apps.get_model("core", "Item")
Choice.objects.all().delete()
Scene.objects.all().delete()
Item.objects.all().delete()
class Migration(migrations.Migration):
dependencies = [
("core", "0001_initial"),
]
operations = [
migrations.RunPython(seed_story, unseed_story),
]