# Classic RPG Rules — готовый набор фэнтезийных правил Classic RPG Rules — набор правил: внутри нет кода, только данные. Он даёт игре привычный фэнтезийный набор — шесть характеристик, здоровье и ману, три класса, три слота снаряжения, восемь предметов, тоник силы и четыре боевых навыка. На нём построен RPG Plus; визуальная новелла могла бы взять его разве что ради проверок харизмы. Правила действуют через другие моды. Stats Engine считает числа и показывает лист, Equipment делает снаряжение надеваемым, Items Base хранит его в сумке, Characters Engine держит карты навыков, а Battle Formulas заставляет формулы навыков работать в бою. Этот набор только говорит, *что* есть. ## В игре Плут 2-го уровня в RPG Plus с железным мечом: ![Лист персонажа плута 2-го уровня в RPG Plus: Сила 8, Ловкость 12, Интеллект 5, Выносливость 6, Харизма 9, Удача 9; Здоровье 34/34, Мана 14/14, Атака 18 (+8), Броня 3, Магия 7; Железный меч (ATK +5) в слоте Оружие.](assets/rogue-sheet.jpg) Каждое число приходит из этого набора. Ловкость плута — `8 + level * 2` = 12. Атака — формула набора `str + level` = 8 + 2 = 10, плюс черта плута `floor(agi / 4)` = 3, плюс 5 от железного меча — **18**, из которых **+8** — бонусы. Сила 8 — это `5 + level` плута = 7 и один тоник силы. ## Что внутри набора **Характеристики** (группа *Attributes*, по умолчанию 5): Сила `str`, Ловкость `agi`, Интеллект `int`, Выносливость `vit`, Харизма `cha`, Удача `luk`. **Боевые статы** (группа *Combat*) вычисляются из характеристик: ```json { "Id": "hp", "Formula": "12 + vit * 3 + level * 2", "Binds": "health" }, { "Id": "mp", "Formula": "int * 2 + level * 2", "Pool": true }, { "Id": "atk", "Formula": "str + level", "Binds": "attack" }, { "Id": "def", "Formula": "floor(vit / 2)", "Binds": "defence" }, { "Id": "mag", "Formula": "int + level" } ``` Здоровье, атака и защита становятся боевыми числами; ману тратят навыки, и она восстанавливается. **Классы** — каждый растит свои характеристики с уровнем, имеет черту и осваивает навыки: - **Воин** — сильный и крепкий (`str 7 + level * 2`, `vit 6 + level * 2`), +10% здоровья; Power strike на 1-м уровне, Guard break на 3-м. - **Маг** — `int 8 + level * 2`, +25% маны; Fireball на 1-м уровне, Heal на 2-м. - **Плут** — `agi 8 + level * 2`, харизма и удача `7 + level`, атака + четверть ловкости; Power strike на 1-м уровне, Guard break на 2-м. **Слоты**: Оружие (меч, посох, кинжал), Тело (броня, мантия), Украшение (оберег, кольцо). **Снаряжение и тоник**: ![Предметы набора: деревянный меч, железный меч, дубовый посох, кинжал, кожаная куртка, мантия, клеверный оберег, серебряное кольцо, тоник силы.](assets/gear.jpg) - Деревянный меч: атака +2. Железный меч (воин, плут): атака +5. Дубовый посох (маг): магия +4, мана +5. Кинжал: атака +3, ловкость +2. - Кожаная куртка: защита +2, здоровье +6. Мантия: мана +6, интеллект +1. - Клеверный оберег: удача +3. Серебряное кольцо: харизма +2. - Тоник силы: сила +1 навсегда. **Навыки** — боевые действия, чьи числа задают формулы (`a` — действующий, `b` — цель): ![Четыре карты навыков: Power strike, Fireball, Heal, Guard break.](assets/skills.jpg) ```json { "Id": "classic/fireball", "Type": "ToEnemy", "Values": [ "RequiredPoint=1", "Cost=mp:4", "Pierce=1", "Formula=a.mag * 2 + rand(1, 6)" ] } ``` - Power strike: `a.atk * 1.5 + rand(0, a.str / 2)`. - Fireball: стоит 4 маны, игнорирует броню, `a.mag * 2 + rand(1, 6)`. - Heal: стоит 3 маны, лечит самого себя на `a.mag * 2 + 4`. - Guard break: игнорирует броню, `a.atk + b.defence * 2`, с шансом 35% оглушает на ход. ## Как это использует RPG Plus - Первый ответ в прологе даёт герою один из трёх классов и его стартовое оружие. - Деревенский торговец продаёт мечи, кинжал, посох и броню (RPG Plus добавляет их в лавку патчем). - Тренировочный двор даёт тоник силы; провидица — клеверный оберег. - В боях навыки работают через Battle Formulas — и в обычной боевой системе, и в карточной. ## Как подключить к своей игре Добавьте `classic_rpg_pack` в коллекцию игры — зависимые моды подгрузятся вместе с ним. Затем назначьте персонажу класс действием `action stat.archetype who= id=classic/warrior` или задайте `\"Archetype\": \"classic/mage\"` в JSON персонажа. Чтобы поменять правило, выпустите ту же сущность с тем же id в моде, зависящем от этого набора, либо наложите патч. ## Если что-то пошло не так 1. **Навыки в бою ничего не делают.** Для значений `Formula=` игре нужен Battle Formulas. 2. **У персонажа на листе нет чисел.** У персонажа нет класса и собственных характеристик — назначьте ему архетип.