diff --git a/faction_turns/faction_utils.py b/faction_turns/faction_utils.py new file mode 100644 index 0000000..eb08c06 --- /dev/null +++ b/faction_turns/faction_utils.py @@ -0,0 +1,644 @@ +""" +faction_utils.py — утилиты для работы с фракциями через Obsidian vault. + +Все операции с файлами (.md) выполняются через HTTP-эндпоинт бэкенда +/api/vault/query, который проксирует запрос в Obsidian через WebSocket. +Obsidian отвечает через vault_query_response. + +Экспортирует: + vault_query(query_type, payload) — базовый вызов + get_all_factions(folder) — список всех фракций + get_faction(path) — данные одной фракции + get_location(wikilink_or_path) — данные локации + get_travel_distance(from_loc, to_loc) — расстояние в милях + get_turns_to_travel(from_loc, to_loc) — ходов на перемещение + are_within_one_move(loc_a, loc_b) — в пределах одного хода? + get_assets_in_location(faction, loc) — активы фракции в локации + get_factions_in_location(factions, loc) — фракции в локации + get_recent_events(folder, tags, limit) — последние события + write_faction(path, frontmatter, body) — сохранить фракцию + create_event_file(path, content) — создать файл события + normalize_wikilink(s) — '[[Waterdeep]]' → 'waterdeep' + resolve_wikilink(name) — wikilink → путь к файлу + roll_dice(notation) — '2d6+1' → int + roll_attribute_check(a, d, extra_a, extra_d) — WWN attribute check +""" + +import re +import math +import random +import requests as http_requests +from typing import Optional + +from wwn_mechanics import calc_hp_max + +# --------------------------------------------------------------------------- +# Настройки +# --------------------------------------------------------------------------- + +BACKEND_URL = "http://localhost:5000/api" +VAULT_QUERY_TIMEOUT = 12 # секунд + +# По WWN: один faction turn ≈ 1 месяц ≈ 100 миль перемещения +WWN_MILES_PER_TURN = 100 + + +# --------------------------------------------------------------------------- +# Базовый клиент +# --------------------------------------------------------------------------- + +def vault_query(query_type: str, payload: dict) -> any: + """ + Отправляет запрос к Obsidian vault через бэкенд-прокси. + + Блокирующий вызов: ждёт пока Obsidian выполнит операцию. + Бросает RuntimeError при недоступности бэкенда или timeout. + + Поля: + query_type: тип операции + payload: параметры операции + """ + try: + resp = http_requests.post( + f"{BACKEND_URL}/vault/query", + json={"type": query_type, "payload": payload}, + timeout=VAULT_QUERY_TIMEOUT, + proxies={"http": None, "https": None} + ) + except http_requests.exceptions.ConnectionError as e: + raise RuntimeError( + f"Бэкенд недоступен ({BACKEND_URL}). " + "Убедитесь что Flask-сервер запущен." + ) + except http_requests.exceptions.Timeout: + raise RuntimeError( + f"vault_query timeout после {VAULT_QUERY_TIMEOUT}с. " + "Возможно Obsidian не подключён к WebSocket." + ) + + if resp.status_code == 504: + raise RuntimeError( + "Obsidian не ответил на запрос vault за 10 секунд. " + "Проверьте что плагин LLM Agent запущен и подключён." + ) + + if not resp.ok: + try: + err = resp.json().get("error", resp.text) + except Exception: + err = resp.text + raise RuntimeError(f"vault_query ошибка {resp.status_code}: {err}") + + return resp.json() + + +# --------------------------------------------------------------------------- +# Нормализация wikilinks +# --------------------------------------------------------------------------- + +def normalize_wikilink(s: str) -> str: + """ + Приводит wikilink к нижнему регистру без скобок и алиасов. + + Примеры: + '[[Waterdeep]]' → 'waterdeep' + '[[Waterdeep|City]]' → 'waterdeep' + 'Waterdeep' → 'waterdeep' + '' → '' + """ + if not s: + return '' + return re.sub(r'^\[\[|\]\]$', '', s).split('|')[0].strip().lower() + + +def resolve_wikilink(name: str) -> Optional[str]: + """ + Резолвит wikilink в путь к файлу через Obsidian metadataCache. + Знает об aliases. + + Принимает '[[Waterdeep]]', '[[Waterdeep|City]]' или просто 'Waterdeep'. + Возвращает путь вида 'TTRPG/Locations/Waterdeep.md' или None. + """ + original_clean = re.sub(r'^\[\[|\]\]$', '', name).split('|')[0].strip() + result = vault_query("resolve_wikilink", {"name": original_clean}) + # vault_query возвращает строку-путь или None напрямую + return result if isinstance(result, str) else None + + +# --------------------------------------------------------------------------- +# Фракции +# --------------------------------------------------------------------------- + +def get_all_factions( + factions_folder: str = "Фракции" +) -> list[dict]: + """ + Возвращает список всех фракций из папки. + + Каждый элемент: + { + "path": "Фракции/Cult_of_the_Dragon.md", + "name": "Cult_of_the_Dragon", + "frontmatter": { ... } + } + """ + result = vault_query("get_all_factions", { + "folder": factions_folder, + "tag_filter": "faction" + }) + if isinstance(result, list): + factions = result + elif isinstance(result, dict): + factions = result.get("data", []) + else: + factions = [] + + for f in factions: + f["frontmatter"] = normalize_faction_frontmatter(f.get("frontmatter", {})) + return factions + + +def get_faction(file_path: str) -> dict: + """ + Возвращает данные одной фракции: frontmatter + body. + + Возвращает: + { + "path": "...", + "name": "...", + "frontmatter": { ... }, + "body": "# Лор фракции..." + } + """ + return vault_query("get_frontmatter", {"path": file_path}) + + +def get_active_factions( + factions_folder: str = "Фракции" +) -> list[dict]: + """Возвращает только активные фракции (state != 'defeated').""" + all_factions = get_all_factions(factions_folder) + return [ + f for f in all_factions + if f.get("frontmatter", {}).get("state") != "defeated" + ] + + +def get_factions_in_location(all_factions: list[dict], locations_wikilinks: list[str] = None) -> list[dict]: + """ + Возвращает список фракций, присутствующих в указанных локациях. + Если locations_wikilinks пуст или None — возвращает все фракции. + """ + if not locations_wikilinks: + return all_factions + + # Если locations_wikilinks — строка, преобразуем её в список + if isinstance(locations_wikilinks, str): + locations_wikilinks = [locations_wikilinks] + + targets = [normalize_wikilink(loc) for loc in locations_wikilinks if loc] + if not targets: + return all_factions + + result = [] + for faction in all_factions: + fm = faction.get("frontmatter", {}) + + # Проверка списка locations фракции + locs = fm.get("locations", []) + if isinstance(locs, str): locs = [locs] + normalized_locs = [normalize_wikilink(l) for l in locs if isinstance(l, str)] + + # Проверка локаций активов + asset_locs = [ + normalize_wikilink(a.get("location", "")) + for a in fm.get("assets", []) if isinstance(a, dict) + ] + + # Если фракция есть хотя бы в одной из целевых локаций + if any(t in normalized_locs or t in asset_locs for t in targets): + result.append(faction) + + return result + +def get_assets_in_location( + faction_data: dict, + locations_wikilinks: list[str] = None +) -> list[dict]: + """ + Возвращает активы фракции в указанных локациях. + Если список локаций пуст — возвращает ВСЕ активы фракции. + """ + fm = faction_data.get("frontmatter", faction_data) + assets = fm.get("assets", []) + + if not locations_wikilinks: + return [a for a in assets if isinstance(a, dict)] + + targets = [normalize_wikilink(loc) for loc in locations_wikilinks if loc] + if not targets: + return [a for a in assets if isinstance(a, dict)] + + return [ + a for a in assets + if isinstance(a, dict) and normalize_wikilink(a.get("location", "")) in targets + ] + + +def write_faction(file_path: str, frontmatter: dict, body: str) -> bool: + """ + Сохраняет изменённый frontmatter фракции обратно в Obsidian. + + file_path — путь вида 'Фракции/Cult_of_the_Dragon.md' + frontmatter — словарь с обновлёнными данными + body — тело файла (лор-текст), берётся из get_faction() без изменений + """ + result = vault_query("write_frontmatter", { + "path": file_path, + "frontmatter": frontmatter, + "body": body + }) + if isinstance(result, dict): + return result.get("success", False) + return False + + +# --------------------------------------------------------------------------- +# Локации и расстояния +# --------------------------------------------------------------------------- + +def get_location(wikilink_or_path: str) -> dict: + """ + Возвращает данные локации: frontmatter + body. + + Принимает '[[Waterdeep]]' или 'TTRPG/Locations/Waterdeep.md'. + + frontmatter локации содержит поле travel-distance: + travel-distance: + "[[Neverwinter]]": 300 + "[[Baldur's Gate]]": 250 + """ + if wikilink_or_path.startswith("[[") or not wikilink_or_path.endswith(".md"): + path = resolve_wikilink(wikilink_or_path) + if not path: + raise ValueError( + f"Локация не найдена в vault: '{wikilink_or_path}'. " + "Проверьте что файл локации существует." + ) + else: + path = wikilink_or_path + + return vault_query("get_frontmatter", {"path": path}) + + +def get_travel_distance( + from_location: str, + to_location: str +) -> Optional[int]: + """ + Возвращает расстояние в милях между двумя локациями. + + Читает поле travel-distance из файла from_location. + Если нет прямой связи — пробует обратный маршрут. + Возвращает None если расстояние не задано. + + Формат поля в Location .md: + travel-distance: + "[[Neverwinter]]": 300 + "[[Baldur's Gate]]": 250 + "[[Daggerford]]": 50 + """ + to_normalized = normalize_wikilink(to_location) + + # Прямой маршрут + try: + loc_data = get_location(from_location) + distances: dict = loc_data.get("frontmatter", {}).get("travel-distance", {}) + for key, dist in distances.items(): + if normalize_wikilink(str(key)) == to_normalized: + return int(dist) + except (ValueError, RuntimeError): + pass + + # Обратный маршрут (граф ненаправленный) + from_normalized = normalize_wikilink(from_location) + try: + loc_data_reverse = get_location(to_location) + distances_reverse: dict = loc_data_reverse.get("frontmatter", {}).get("travel-distance", {}) + for key, dist in distances_reverse.items(): + if normalize_wikilink(str(key)) == from_normalized: + return int(dist) + except (ValueError, RuntimeError): + pass + + return None + + +def get_turns_to_travel( + from_location: str, + to_location: str, + miles_per_turn: int = WWN_MILES_PER_TURN +) -> Optional[int]: + """ + Возвращает количество faction turns для перемещения актива. + + По WWN: один ход ≈ 100 миль. Округление вверх. + Возвращает None если расстояние не задано. + """ + dist = get_travel_distance(from_location, to_location) + if dist is None: + return None + return math.ceil(dist / miles_per_turn) + + +def are_within_one_move( + location_a: str, + location_b: str, + miles_per_turn: int = WWN_MILES_PER_TURN +) -> bool: + """ + Проверяет находятся ли две локации в пределах одного faction turn move. + + Используется для проверки радиуса спецспособностей + (Informers, Vigilant Agents, Omniscient Seers и т.д.). + + Если расстояние неизвестно — возвращает True (safe default, + лучше разрешить чем молча заблокировать). + """ + dist = get_travel_distance(location_a, location_b) + if dist is None: + return True + return dist <= miles_per_turn + + +# --------------------------------------------------------------------------- +# События +# --------------------------------------------------------------------------- + +def get_recent_events( + events_folder: str = "События", + tags_filter: Optional[list[str]] = None, + max_count: int = 5 +) -> list[dict]: + """ + Возвращает последние N событий из папки events_folder. + + tags_filter — список тегов (хотя бы один должен совпасть). + None — без фильтрации. + + Каждый элемент: + { + "path": "События/2026-06-22_Cult_Attack.md", + "name": "2026-06-22_Cult_Attack", + "frontmatter": { ... } + } + """ + result = vault_query("get_recent_files", { + "folder": events_folder, + "limit": max_count, + "tags": tags_filter or [] + }) + if isinstance(result, list): + return result + return [] + + +def create_event_file(file_path: str, content: str) -> bool: + """ + Создаёт файл события в Obsidian vault. + + Если файл уже существует — перезаписывает. + Промежуточные папки создаются автоматически. + """ + result = vault_query("create_file", { + "path": file_path, + "content": content + }) + if isinstance(result, dict): + return result.get("success", False) + return False + + +# --------------------------------------------------------------------------- +# Кубики (WWN-механика) +# --------------------------------------------------------------------------- + +def roll_dice(notation: str) -> int: + """ + Бросает кубики по нотации и возвращает результат. + + Поддерживает: '1d8', '2d6', '1d10+3', '2d6+2', '1d8-1'. + Минимальный результат: 1. + """ + notation = notation.strip().lower() + + match = re.fullmatch(r'(\d+)d(\d+)([+-]\d+)?', notation) + if not match: + raise ValueError( + f"Неверный формат нотации: '{notation}'. " + "Ожидается: '2d6', '1d8+2', '1d10-1'." + ) + + num_dice = int(match.group(1)) + die_sides = int(match.group(2)) + modifier = int(match.group(3)) if match.group(3) else 0 + + total = sum(random.randint(1, die_sides) for _ in range(num_dice)) + modifier + return max(1, total) + + +def roll_attribute_check( + attacker_attr: int, + defender_attr: int, + attacker_extra_die: bool = False, + defender_extra_die: bool = False, +) -> tuple[int, int, bool]: + """ + Выполняет attribute check по правилам WWN. + + Оба бросают 1d10 + атрибут. + Атакующий побеждает только при СТРОГО большем результате (ничья = защитник). + + attacker_extra_die — True если faction tag даёт extra die + (Machiavellian/Martial/Rich): бросаются 2d10, берётся лучший. + defender_extra_die — аналогично для защитника. + + Возвращает: (attacker_total, defender_total, attacker_wins: bool) + """ + def _roll(attr: int, extra: bool) -> int: + if extra: + return max(random.randint(1, 10), random.randint(1, 10)) + attr + return random.randint(1, 10) + attr + + a_total = _roll(attacker_attr, attacker_extra_die) + d_total = _roll(defender_attr, defender_extra_die) + return a_total, d_total, a_total > d_total + + +# --------------------------------------------------------------------------- +# Тест +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + print("=== Тест faction_utils.py ===\n") + + print("--- roll_dice ---") + for notation in ["1d8", "2d6", "1d10+3", "1d6-1", "3d4+2"]: + print(f" {notation} → {roll_dice(notation)}") + + print("\n--- normalize_wikilink ---") + for s in [ + "[[Waterdeep]]", + "[[Waterdeep|City of Splendors]]", + "Waterdeep", + "[[baldur's gate]]", + "", + ]: + print(f" '{s}' → '{normalize_wikilink(s)}'") + + print("\n--- roll_attribute_check (Force 5 vs Force 3, 10 бросков) ---") + wins = sum(1 for _ in range(10) if roll_attribute_check(5, 3)[2]) + print(f" Атакующий выиграл {wins}/10") + + print("\n--- roll_attribute_check с extra die (Cunning 5 vs Cunning 5) ---") + wins_extra = sum(1 for _ in range(10) if roll_attribute_check(5, 5, attacker_extra_die=True)[2]) + print(f" С extra die: {wins_extra}/10 (ожидаем > 5)") + + print("\n--- vault_query (требует запущенный бэкенд + Obsidian) ---") + try: + factions = get_all_factions("Фракции") + print(f" Найдено фракций: {len(factions)}") + if factions: + f = factions[0] + fm = f.get("frontmatter", {}) + print(f" Первая: {f['name']} | HP: {fm.get('hp')} | Treasure: {fm.get('treasure')}") + except RuntimeError as e: + print(f" Пропущен (бэкенд недоступен): {e}") + + print("\n--- get_travel_distance (требует бэкенд + Obsidian) ---") + try: + dist = get_travel_distance("[[Waterdeep]]", "[[Neverwinter]]") + turns = get_turns_to_travel("[[Waterdeep]]", "[[Neverwinter]]") + in_range = are_within_one_move("[[Waterdeep]]", "[[Daggerford]]") + print(f" Waterdeep → Neverwinter: {dist} миль, {turns} ходов") + print(f" Waterdeep → Daggerford ≤100 миль: {in_range}") + except RuntimeError as e: + print(f" Пропущен (бэкенд недоступен): {e}") + + print("\n=== Готово ===") + + +# --------------------------------------------------------------------------- +# Нормализация фракции: дефолты для отсутствующих полей +# --------------------------------------------------------------------------- + +# Дефолтные механические значения WWN для фракции +FACTION_DEFAULTS: dict = { + "force": 1, + "wealth": 1, + "cunning": 1, + "magic": "None", + "treasure": 0, + "xp": 0, + "state": "active", + "locations": [], + "current_goal": "", + "faction_tags": [], + "tags_listen": [], + "dw_category": "", + "impulse": "", +} + + +def _clean_list_field(value) -> list: + """ + Приводит поле-список к чистому виду: + - None → [] + - строка → [строка] (если не пустая) + - список → без пустых строк "" и None + Используется для locations, motivations, assets и т.п. + """ + if value is None: + return [] + if isinstance(value, str): + return [value] if value.strip() else [] + if isinstance(value, list): + cleaned = [] + for item in value: + if item is None: + continue + if isinstance(item, str) and not item.strip(): + continue # пустая строка-заглушка "- ''" + cleaned.append(item) + return cleaned + return [] + + +def _clean_assets(fm: dict) -> list[dict]: + """ + Оставляет только валидные активы-объекты с непустым name. + Отбрасывает строки-заглушки ('- ""') и мусор. + Для каждого актива подставляет дефолты недостающих полей. + """ + raw = _clean_list_field(fm.get("assets")) + result = [] + for a in raw: + if not isinstance(a, dict) or not a.get("name"): + continue + # Дефолты полей актива + is_boi = a.get("is_base_of_influence", False) + a.setdefault("is_base_of_influence", is_boi) + a.setdefault("location", "") + a.setdefault("stealthed", False) + a.setdefault("subtle", False) + a.setdefault("hp_max", a.get("hp", 1)) + a.setdefault("hp", a.get("hp_max", 1)) + a.setdefault("cost", 0) + if not is_boi: + a.setdefault("attribute", "Force") + a.setdefault("tier_required", 1) + result.append(a) + return result + + +def normalize_faction_frontmatter(fm: dict) -> dict: + """ + Приводит frontmatter фракции к формату, ожидаемому механикой WWN. + + - Подставляет дефолты для отсутствующих скалярных полей. + - Чистит списочные поля (locations, motivations, assets...). + - Если основная 'location' не задана, но есть непустой 'locations', + берёт первый элемент как основную локацию. + - Пересчитывает hp_max по атрибутам, если не задан; + подставляет hp = hp_max, если hp не задан. + + Модифицирует fm на месте и возвращает его же. + """ + # Скалярные дефолты + for key, default in FACTION_DEFAULTS.items(): + if fm.get(key) is None: + fm[key] = default.copy() if isinstance(default, (list, dict)) else default + + # Списочные поля (нарративные) — чистим от пустых заглушек + for list_field in ("locations", "motivations", "headquarters", + "leaders", "enemies"): + fm[list_field] = _clean_list_field(fm.get(list_field)) + + # tags_listen / faction_tags тоже чистим + fm["faction_tags"] = _clean_list_field(fm.get("faction_tags")) + fm["tags_listen"] = _clean_list_field(fm.get("tags_listen")) + + # Активы + fm["assets"] = _clean_assets(fm) + + # HP: считаем hp_max по атрибутам, если не задан + if fm.get("hp_max") is None: + fm["hp_max"] = calc_hp_max( + fm.get("force", 1), + fm.get("wealth", 1), + fm.get("cunning", 1), + ) + if fm.get("hp") is None: + fm["hp"] = fm["hp_max"] + + return fm \ No newline at end of file diff --git a/faction_turns/propose_faction_turn.py b/faction_turns/propose_faction_turn.py new file mode 100644 index 0000000..c47fae1 --- /dev/null +++ b/faction_turns/propose_faction_turn.py @@ -0,0 +1,689 @@ +""" +propose_faction_turn.py — Тул 1 системы фракций WWN. + +Читает все фракции из Obsidian-хранилища (через бэкенд-прокси vault_query), +бросает инициативу, начисляет доход, проверяет апкип и для каждой активной +фракции формирует полный список механически допустимых действий с числами. + +Экспортирует функцию propose_faction_turn(debug_description, requests), +которую вызывает тул с фронта. + +requests — список объектов вида: + { + "location_wikilink": "[[Waterdeep]]", # локация для хода (обязательно) + "factions_folder": "Фракции", # папка фракций (default) + "events_folder": "События", # папка событий (default) + "game_date": "15 Mirtul 1492", # игровая дата (default: today) + "max_events": 5, # контекстных событий для LLM (default 5) + } + +Возвращает строку в формате Markdown — механический промпт для LLM. +""" + +import random +import math +from datetime import date +from typing import TypedDict + +try: + from typing_extensions import TypedDict +except ImportError: + from typing import TypedDict + +from faction_utils import ( + vault_query, + get_all_factions, + get_factions_in_location, + get_assets_in_location, + get_recent_events, + normalize_wikilink, + roll_dice, + roll_attribute_check, + are_within_one_move, +) +from wwn_assets_data import ( + get_available_assets, + get_asset, + MAGIC_LEVELS, +) +from wwn_mechanics import ( + calc_income, + calc_hp_max, + calc_asset_upkeep, + calc_repair_heal, + calc_faction_repair_heal, + calc_expand_influence_cost, + get_available_upgrades, + get_attack_extra_die_flags, + has_antimagical_penalty, + check_massive_auto_win, + format_faction_status, + format_asset_line, +) + + +# --------------------------------------------------------------------------- +# TypedDict +# --------------------------------------------------------------------------- + +class FactionTurnProposalRequest(TypedDict, total=False): + """ + Параметры одного запроса на генерацию хода фракций. + + Поля: + location_wikilink: Локация на русском в формате Obsidian wikilink. + Обязательное поле. + Пример: "[[Уотердип]]", "[[Невервинтер]]", название локации на русском. + + factions_folder: Путь к папке с файлами фракций внутри vault. + По умолчанию: "Фракции". + + events_folder: Путь к папке с файлами событий внутри vault. + По умолчанию: "События". + + game_date: Игровая дата в произвольном формате. + По умолчанию: текущая реальная дата. + Пример: "15 Mirtul 1492 DR". + + max_events: Количество последних событий для контекста LLM. + Допустимы: 1–20. + По умолчанию: 5. + """ + location_wikilink: str # wikilink локации, обязательно: "[[Уотердип]]" + factions_folder: str # default "Фракции" + events_folder: str # default "События" + game_date: str # default: today + max_events: int # 1–20, default 5 + + +# --------------------------------------------------------------------------- +# Вспомогательные функции +# --------------------------------------------------------------------------- + +def _get_default_request() -> FactionTurnProposalRequest: + """Возвращает запрос с дефолтными значениями.""" + return { + "location_wikilink": "[[Unknown Location]]", + "factions_folder": "Фракции", + "events_folder": "События", + "game_date": date.today().strftime("%d %B %Y"), + "max_events": 5, + } + + +def _merge_with_defaults(req: dict) -> dict: + """Заполняет отсутствующие поля дефолтами.""" + defaults = _get_default_request() + return {**defaults, **{k: v for k, v in req.items() if v is not None}} + + +def _roll_initiative() -> int: + """ + Бросает инициативу по правилам WWN: 1d8. + Возвращает число 1–8. + """ + return random.randint(1, 8) + + +def _get_faction_state_label(faction_fm: dict) -> str: + """ + Возвращает читаемый статус фракции с учётом HP. + + По WWN нет формальных state-меток, но добавляем для LLM: + HP 100% → active + HP 50–99% → damaged + HP 1–49% → critical + HP 0 → defeated + """ + hp = faction_fm.get("hp", 0) + hp_max = faction_fm.get("hp_max", 1) + state = faction_fm.get("state", "active") + if state == "defeated": + return "defeated" + ratio = hp / max(hp_max, 1) + if ratio >= 1.0: + return "active" + if ratio >= 0.5: + return "damaged" + if ratio > 0: + return "critical" + return "defeated" + + +def _build_attack_options( + faction_fm: dict, + all_factions: list[dict], + location_wikilink: str, +) -> list[str]: + """ + Формирует список строк с вариантами атаки для данной фракции. + + Для каждой пары (атакующий актив → цель в локации) строит: + - формулу броска с учётом faction tags + - возможный урон + - возможный контрурон + + Возвращает список Markdown-строк. + """ + loc_norm = normalize_wikilink(location_wikilink) + lines = [] + + # Активы атакующей фракции в локации с attack_attribute != None + own_assets = [ + a for a in faction_fm.get("assets", []) + if not a.get("is_base_of_influence") + and normalize_wikilink(a.get("location", "")) == loc_norm + and not a.get("stealthed") # Stealthed активы теряют Stealth при атаке + ] + + for own_asset in own_assets: + asset_def = get_asset(own_asset["name"]) + if not asset_def: + continue + if not asset_def.get("attack_attribute"): + continue # Актив не атакует + + atk_attr = asset_def["attack_attribute"] + atk_vs = asset_def["attack_vs"] + atk_dmg = asset_def["attack_damage"] + atk_val = faction_fm.get(atk_attr.lower(), 0) + + # Цели: активы и BoI других фракций в той же локации + for target_faction in all_factions: + tf_fm = target_faction.get("frontmatter", {}) + tf_name = target_faction.get("name", "Unknown") + + # Не атакуем себя + if normalize_wikilink(tf_fm.get("location", "")) == normalize_wikilink( + faction_fm.get("location", "____") + ) and tf_name == faction_fm.get("name"): + continue + + target_assets = [ + a for a in tf_fm.get("assets", []) + if normalize_wikilink(a.get("location", "")) == loc_norm + ] + if not target_assets: + continue + + for target_asset in target_assets: + ta_name = target_asset["name"] + is_boi = target_asset.get("is_base_of_influence", False) + + # Атрибут защиты + def_val = tf_fm.get(atk_vs.lower(), 0) + + # Faction tags + a_extra, d_extra = get_attack_extra_die_flags( + faction_fm, tf_fm, atk_attr, asset_def.get("magic_required", "None") + ) + antimagical = has_antimagical_penalty( + tf_fm, asset_def.get("magic_required", "None") + ) + massive_result = check_massive_auto_win(faction_fm, tf_fm, atk_attr) + + # Формула броска + a_dice = "2d10 best" if a_extra else "1d10" + d_dice = "2d10 best" if d_extra else "1d10" + if antimagical: + a_dice = "2d10 WORST (Antimagical)" + + if massive_result is True: + roll_str = f"AUTO-WIN (Massive tag)" + elif massive_result is False: + roll_str = f"AUTO-LOSS (target Massive tag)" + else: + roll_str = ( + f"{a_dice}+{atk_attr}({atk_val}) vs " + f"{d_dice}+{atk_vs}({def_val})" + ) + + # Counterattack + ta_def = get_asset(ta_name) + ctr_dmg = ta_def.get("counterattack") if ta_def else None + ctr_str = f", fail → {ctr_dmg} to {own_asset['name']}" if ctr_dmg else ", fail → no counterattack" + + # BoI примечание + boi_note = " *(→ also damages faction HP directly)*" if is_boi else "" + + hp_note = f"HP {target_asset.get('hp', '?')}/{target_asset.get('hp_max', '?')}" + lines.append( + f" - `{own_asset['name']}` → **{ta_name}** [{tf_name}, {hp_note}]{boi_note}\n" + f" Roll: {roll_str} | dmg: {atk_dmg}{ctr_str}" + ) + + return lines + + +def _build_hide_asset_options(faction_fm: dict, all_factions: list[dict], location_wikilink: str) -> list[str]: + """ + Формирует список активов доступных для скрытия (Hide Asset). + + Условия WWN: + - Cunning >= 3 + - 2 Treasure за каждый скрываемый актив + - Нельзя скрывать в локации с вражеским BoI + """ + if faction_fm.get("cunning", 0) < 3: + return [] + + loc_norm = normalize_wikilink(location_wikilink) + treasure = faction_fm.get("treasure", 0) + + # Есть ли вражеский BoI в локации? + hostile_boi_in_loc = any( + normalize_wikilink(a.get("location", "")) == loc_norm + and a.get("is_base_of_influence") + for tf in all_factions + for a in tf.get("frontmatter", {}).get("assets", []) + if tf.get("name") != faction_fm.get("name") + ) + if hostile_boi_in_loc: + return [] + + lines = [] + for a in faction_fm.get("assets", []): + if a.get("is_base_of_influence"): + continue + if a.get("stealthed"): + continue + if normalize_wikilink(a.get("location", "")) != loc_norm: + continue + if treasure < 2: + lines.append(f" - `{a['name']}` — ⚠️ недостаточно Treasure (нужно 2, есть {treasure})") + else: + lines.append(f" - `{a['name']}` — стоимость: 2 Treasure") + return lines + + +def _build_move_options(faction_fm: dict, location_wikilink: str) -> list[str]: + """ + Формирует список активов доступных для перемещения (Move Asset). + + Показывает текущую локацию каждого актива. + Subtle/Stealthed активы могут двигаться без ограничений. + """ + lines = [] + for a in faction_fm.get("assets", []): + if a.get("is_base_of_influence"): + continue + name = a["name"] + loc = a.get("location", "?") + flags = [] + if a.get("stealthed"): + flags.append("Stealthed") + if a.get("subtle"): + flags.append("Subtle") + flag_str = f" [{', '.join(flags)}]" if flags else "" + lines.append(f" - `{name}`{flag_str} currently @ {loc}") + return lines + + +def _build_repair_options(faction_fm: dict) -> list[str]: + """ + Формирует список повреждённых активов доступных для ремонта (Repair Asset). + """ + treasure = faction_fm.get("treasure", 0) + lines = [] + + for a in faction_fm.get("assets", []): + hp = a.get("hp", 0) + hp_max = a.get("hp_max", 0) + if hp >= hp_max or hp_max == 0: + continue + + attr = a.get("attribute", "Force") + repair_info = calc_repair_heal(faction_fm, attr, 1) + cost = repair_info["cost"] + heal = repair_info["heal"] + can = "✓" if treasure >= cost else f"⚠️ нужно {cost} Treasure, есть {treasure}" + + lines.append( + f" - `{a['name']}` [HP {hp}/{hp_max}] " + f"— heal {heal} HP за {cost} Treasure {can}" + ) + + # Ремонт самой фракции + faction_hp = faction_fm.get("hp", 0) + faction_hp_max = faction_fm.get("hp_max", 1) + if faction_hp < faction_hp_max: + fr = calc_faction_repair_heal(faction_fm) + can = "✓" if treasure >= fr["cost"] else f"⚠️ нужно {fr['cost']} Treasure" + lines.append( + f" - **Faction HP** [{faction_hp}/{faction_hp_max}] " + f"— heal {fr['heal']} HP за {fr['cost']} Treasure {can}" + ) + + return lines + + +def _build_create_asset_options(faction_fm: dict, location_wikilink: str) -> list[str]: + """ + Формирует список активов доступных для покупки (Create Asset). + """ + available = get_available_assets(faction_fm, location_wikilink) + if not available: + return [" - *(нет доступных активов для покупки)*"] + + lines = [] + for a in available: + magic_note = f", Magic {a['magic_required']}" if a["magic_required"] != "None" else "" + atk = f" | {a['attack_attribute'][0]} vs {a['attack_vs'][0]} / {a['attack_damage']}" \ + if a.get("attack_attribute") else "" + ctr = f" | ctr {a['counterattack']}" if a.get("counterattack") else "" + lines.append( + f" - `{a['name']}` [{a['attribute'][0]}{a['tier_required']}{magic_note}] " + f"cost {a['cost']} Treasure, HP {a['hp_max']}{atk}{ctr}" + ) + return lines + + +def _build_sell_options(faction_fm: dict) -> list[str]: + """ + Формирует список активов доступных для продажи (Sell Asset). + + По WWN: получить floor(cost/2) Treasure если актив не повреждён, + иначе 0 Treasure. + """ + lines = [] + for a in faction_fm.get("assets", []): + if a.get("is_base_of_influence"): + continue + asset_def = get_asset(a["name"]) + if not asset_def: + continue + hp = a.get("hp", 0) + hp_max = a.get("hp_max", 1) + if hp < hp_max: + gain = 0 + note = " (повреждён — 0 Treasure)" + else: + gain = math.floor(asset_def["cost"] / 2) + note = "" + lines.append(f" - `{a['name']}` → +{gain} Treasure{note}") + return lines + + +def _format_faction_section( + idx: int, + faction: dict, + initiative: int, + income_gained: int, + upkeep_info: dict, + all_factions: list[dict], + location_wikilink: str, +) -> str: + """ + Форматирует полную секцию одной фракции для вывода в propose-промпт. + + Включает: статус, доход, апкип, активы в локации, + все доступные действия с числами. + """ + fm = faction.get("frontmatter", {}) + name = faction.get("name", "Unknown") + state_label = _get_faction_state_label(fm) + + # Статус-строка + status_str = format_faction_status(fm, name) + + # Нарративные теги для LLM + dw_cat = fm.get("dw_category", "") + impulse = fm.get("impulse", "") + narrative_str = "" + if dw_cat or impulse: + narrative_str = f"\n**Нарратив:** dw_category={dw_cat} | impulse=*\"{impulse}\"*" + + # Faction tags WWN + tags = fm.get("faction_tags", []) + tags_str = f"\n**WWN Tags:** {', '.join(tags)}" if tags else "" + + # Цель фракции + goal = fm.get("current_goal", "нет") + xp = fm.get("xp", 0) + upgrades = get_available_upgrades(fm) + upgrade_str = "" + if upgrades: + u = upgrades[0] + upgrade_str = ( + f"\n**XP:** {xp} | Можно повысить: " + f"{u['attribute']} {u['current_value']}→{u['next_value']} за {u['xp_cost']} XP" + + (" ✓" if u["can_afford"] else " (не хватает XP)") + ) + + # Активы в локации + loc_norm = normalize_wikilink(location_wikilink) + assets_here = [ + a for a in fm.get("assets", []) + if normalize_wikilink(a.get("location", "")) == loc_norm + ] + assets_lines = [] + for a in assets_here: + assets_lines.append(format_asset_line(a, is_base=a.get("is_base_of_influence", False))) + assets_str = "\n".join(assets_lines) if assets_lines else " *(нет активов в этой локации)*" + + # Доход и апкип + income_str = f"+{income_gained} Treasure (было {fm.get('treasure', 0) - income_gained} → стало {fm.get('treasure', 0)})" + upkeep_str = "" + if upkeep_info["total_upkeep"] > 0: + upkeep_str = ( + f"\n⚠️ **Апкип:** {upkeep_info['total_upkeep']} Treasure/ход | " + f"лишние активы: {', '.join(upkeep_info['excess_assets']) or 'нет'}" + ) + + # Доступные действия + attack_opts = _build_attack_options(fm, all_factions, location_wikilink) + hide_opts = _build_hide_asset_options(fm, all_factions, location_wikilink) + move_opts = _build_move_options(fm, location_wikilink) + repair_opts = _build_repair_options(fm) + create_opts = _build_create_asset_options(fm, location_wikilink) + sell_opts = _build_sell_options(fm) + + # Expand Influence + treasure = fm.get("treasure", 0) + expand_str = ( + f" - Создать BoI в новой локации: 1 Treasure/HP нового BoI " + f"(текущий Treasure: {treasure}, максимальный BoI HP: {treasure})\n" + f" Потребует Cunning vs Cunning vs всех фракций с BoI в целевой локации" + ) + + def _section(title: str, lines: list[str]) -> str: + if not lines: + return f"\n**[{title}]** *(недоступно)*" + return f"\n**[{title}]**\n" + "\n".join(lines) + + return ( + f"### {idx}. {name} | Initiative: {initiative} | {state_label.upper()}\n" + f"**Статы:** {status_str}" + f"{tags_str}" + f"{narrative_str}" + f"\n**Цель:** {goal}{upgrade_str}" + f"\n**Доход этого хода:** {income_str}{upkeep_str}" + f"\n\n**Активы в локации:**\n{assets_str}" + f"\n\n#### Доступные действия:" + + _section("ATTACK", attack_opts) + + _section("CREATE ASSET", create_opts) + + _section("HIDE ASSET", hide_opts) + + _section("MOVE ASSET", move_opts) + + _section("REPAIR ASSET", repair_opts) + + f"\n**[EXPAND INFLUENCE]**\n{expand_str}" + + _section("SELL ASSET", sell_opts) + ) + + +# --------------------------------------------------------------------------- +# Главная функция +# --------------------------------------------------------------------------- + +def propose_faction_turn( + debug_description: str, + requests: list[FactionTurnProposalRequest], +) -> str: + """ + Основной метод, который вызывает тул с фронта. + + Принимает список запросов на генерацию хода фракций. + Для каждого запроса: + - загружает все фракции из Obsidian vault через WebSocket-прокси; + - фильтрует активные фракции в указанной локации; + - бросает инициативу 1d8 для каждой фракции; + - начисляет доход по формуле WWN: ceil(W/2 + (F+C)/4); + - проверяет апкип и лимиты активов; + - для каждой фракции строит полный список механически допустимых действий; + - загружает последние события для контекста LLM; + - формирует Markdown-промпт для AI-агента. + + Возвращает Markdown-строку с инструкцией для LLM. + """ + if not requests: + requests = [{}] + + sections: list[str] = [] + + for i, raw_req in enumerate(requests, start=1): + req = _merge_with_defaults(raw_req) + location_wikilink = req["location_wikilink"] + factions_folder = req["factions_folder"] + events_folder = req["events_folder"] + game_date = req["game_date"] + max_events = req["max_events"] + + # ── Загрузка данных ────────────────────────────────────────────── + try: + all_factions = get_all_factions(factions_folder) + except RuntimeError as e: + sections.append(f"## ❌ Ошибка загрузки фракций\n{e}") + continue + + active_in_loc = [ + f for f in get_factions_in_location(all_factions, location_wikilink) + if f.get("frontmatter", {}).get("state") != "defeated" + ] + + if not active_in_loc: + sections.append( + f"## Ход фракций: {location_wikilink} | {game_date}\n\n" + f"Активных фракций в локации не найдено." + ) + continue + + # ── Последние события ──────────────────────────────────────────── + # Собираем все tags_listen активных фракций + all_listen_tags: list[str] = [] + for f in active_in_loc: + all_listen_tags.extend(f.get("frontmatter", {}).get("tags_listen", [])) + all_listen_tags = list(set(all_listen_tags)) + + try: + recent_events = get_recent_events(events_folder, all_listen_tags, max_events) + except RuntimeError: + recent_events = [] + + # ── Инициатива и порядок ───────────────────────────────────────── + factions_with_init = [] + for faction in active_in_loc: + init = _roll_initiative() + factions_with_init.append((init, faction)) + factions_with_init.sort(key=lambda x: x[0], reverse=True) + + # ── Начисление дохода и апкипа ─────────────────────────────────── + # NOTE: Изменения Treasure применяются к копии frontmatter для отображения. + # Реальная запись в файл происходит в resolve_faction_turn. + for init, faction in factions_with_init: + fm = faction.get("frontmatter", {}) + income = calc_income( + fm.get("wealth", 0), + fm.get("force", 0), + fm.get("cunning", 0), + ) + fm["treasure"] = fm.get("treasure", 0) + income + # Апкип + upkeep = calc_asset_upkeep(fm) + fm["treasure"] = max(0, fm["treasure"] - upkeep["total_upkeep"]) + faction["_income"] = income + faction["_upkeep"] = upkeep + + # ── Сборка вывода ──────────────────────────────────────────────── + header = ( + f"# Ход фракций: {location_wikilink} | {game_date}\n\n" + ) + + # Последние события + events_block = "## Последние события (контекст для LLM)\n" + if recent_events: + for ev in recent_events: + ev_name = ev.get("name", "?") + ev_actor = ev.get("frontmatter", {}).get("actor", "?") + ev_action = ev.get("frontmatter", {}).get("action_type", "?") + events_block += f"- [[{ev_name}]]: {ev_actor} — {ev_action}\n" + else: + events_block += "- *(событий не найдено)*\n" + + # Секции фракций + faction_sections = [] + for idx, (init, faction) in enumerate(factions_with_init, start=1): + fm = faction.get("frontmatter", {}) + section = _format_faction_section( + idx=idx, + faction=faction, + initiative=init, + income_gained=faction.get("_income", 0), + upkeep_info=faction.get("_upkeep", {"total_upkeep": 0, "excess_assets": []}), + all_factions=all_factions, + location_wikilink=location_wikilink, + ) + faction_sections.append(section) + + # Инструкция для LLM + llm_instruction = ( + "\n---\n\n" + "## ИНСТРУКЦИЯ ДЛЯ LLM\n\n" + "Ты — опытный Мастер Игры TTRPG, ведущий живой мир.\n" + "Для каждой фракции со статусом ACTIVE, DAMAGED или CRITICAL:\n\n" + "1. Выбери **одно действие** из предложенного списка. " + "Обоснуй через impulse и последние события (1–2 предложения).\n" + "2. Если выбрано ATTACK — укажи точную пару (актив → цель) из списка.\n" + "3. Если выбрано CREATE ASSET — укажи точное название актива из списка.\n" + "4. Если выбрано EXPAND INFLUENCE — укажи целевую локацию и HP нового BoI.\n" + "5. Если выбрано HIDE ASSET — укажи какой актив скрывается.\n" + "6. Если выбрано MOVE ASSET — укажи актив и destination-локацию.\n" + "7. В конце добавь блок **'ДЕЙСТВИЯ ПО УМОЛЧАНИЮ'** — самый логичный выбор " + "одной строкой для каждой фракции.\n\n" + "**НЕ МЕНЯЙ** механические данные (броски, урон, стоимости).\n" + "**НЕ ВЫДУМЫВАЙ** действия которых нет в списке.\n" + "После выбора ГМ вызовет `resolve_faction_turn` с конкретными параметрами." + ) + + full_section = ( + header + + events_block + + "\n---\n\n" + + "\n\n---\n\n".join(faction_sections) + + llm_instruction + ) + sections.append(full_section) + + return "\n\n---\n\n".join(sections) + + +# --------------------------------------------------------------------------- +# Точка входа для тестирования +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + result = propose_faction_turn( + "тест propose_faction_turn", + [ + { + "location_wikilink": "[[Waterdeep]]", + "factions_folder": "Фракции", + "events_folder": "События", + "game_date": "15 Mirtul 1492 DR", + "max_events": 5, + }, + { + "location_wikilink": "[[Neverwinter]]", + # остальные поля → дефолты + }, + ], + ) + print(result) \ No newline at end of file diff --git a/faction_turns/resolve_faction_turn.py b/faction_turns/resolve_faction_turn.py new file mode 100644 index 0000000..80f7215 --- /dev/null +++ b/faction_turns/resolve_faction_turn.py @@ -0,0 +1,1222 @@ +""" +resolve_faction_turn.py — Тул 2 системы фракций WWN. + +Применяет выбранные ГМом действия фракций: бросает кубики, наносит урон, +обновляет YAML-файлы фракций в Obsidian-хранилище, создаёт файлы событий. + +Экспортирует функцию resolve_faction_turn(debug_description, requests), +которую вызывает тул с фронта. + +requests — список объектов вида: + { + "game_date": "15 Mirtul 1492", # игровая дата + "factions_folder": "Фракции", # папка фракций + "events_folder": "События", # папка событий + "actions": [ # список действий фракций + { + "faction_file": "Cult_of_the_Dragon", # имя файла без .md + "action_type": "Attack", + "attacking_asset": "Organization Moles", + "target_faction": "Harpers", + "target_asset": "Informers", + "location": "[[Waterdeep]]", + }, + { + "faction_file": "Harpers", + "action_type": "Create Asset", + "asset_name": "Spymaster", + "location": "[[Waterdeep]]", + }, + ... + ] + } + +Возвращает строку в формате Markdown — сухой отчёт об изменениях для LLM. +""" + +import random +import math +import re +from datetime import date +from typing import TypedDict, Optional + +try: + from typing_extensions import TypedDict +except ImportError: + from typing import TypedDict + +from faction_utils import ( + vault_query, + get_all_factions, + write_faction, + create_event_file, + normalize_wikilink, + normalize_faction_frontmatter, + roll_dice, + roll_attribute_check, + resolve_wikilink, +) +from wwn_assets_data import ( + get_asset, + MAGIC_LEVELS, +) +from wwn_mechanics import ( + calc_income, + calc_asset_upkeep, + calc_repair_heal, + calc_faction_repair_heal, + get_attack_extra_die_flags, + has_antimagical_penalty, + check_massive_auto_win, + calc_xp_cost_to_raise, + get_available_upgrades, + calc_hp_max, +) + + +# --------------------------------------------------------------------------- +# TypedDict +# --------------------------------------------------------------------------- + +class FactionAction(TypedDict, total=False): + """ + Параметры одного действия одной фракции за ход. + + Поля: + faction_file: Имя файла фракции без расширения .md. + Обязательное поле. + Пример: "Cult_of_the_Dragon", "Harpers". + + action_type: Тип действия по WWN. + Допустимы: "Attack", "Move Asset", "Repair Asset", + "Expand Influence", "Create Asset", "Hide Asset", "Sell Asset". + Обязательное поле. + + location: Локация на русском в формате Obsidian wikilink. + Обязательное поле. + Пример: "[[Уотердип]]", "[[Невервинтер]]", название локации на русском. + + attacking_asset: Имя атакующего актива (для Attack). + Пример: "Organization Moles". + + target_faction: Имя файла целевой фракции без .md (для Attack). + Пример: "Harpers". + + target_asset: Имя целевого актива или "BoI [[Уотердип]]" (для Attack). + Пример: "Informers". + + asset_name: Имя актива (для Create Asset, Hide Asset, Sell Asset, Move Asset). + Пример: "Spymaster". + + move_destination: Wikilink новой локации (для Move Asset). + Пример: "[[Невервинтер]]". + + repair_asset: Имя ремонтируемого актива или "faction" (для Repair Asset). + Пример: "Infantry", "faction". + + expand_location: Wikilink целевой локации (для Expand Influence). + Пример: "[[Невервинтер]]". + + expand_hp: Желаемый HP нового BoI (для Expand Influence). + Допустимы: 1–30. По умолчанию: 5. + + upgrade_attribute: Атрибут для повышения через XP (опционально). + Допустимы: "force", "wealth", "cunning". + + event_description: Короткое описание события для файла события (1–2 предложения). + По умолчанию: генерируется автоматически. + """ + faction_file: str # имя файла без .md, обязательно + action_type: str # "Attack"|"Move Asset"|"Repair Asset"|"Expand Influence"|"Create Asset"|"Hide Asset"|"Sell Asset" + location: str # "[[Уотердип]]" + attacking_asset: str # для Attack + target_faction: str # имя файла цели без .md, для Attack + target_asset: str # имя целевого актива, для Attack + asset_name: str # для Create/Hide/Sell/Move Asset + move_destination: str # для Move Asset + repair_asset: str # "asset name" | "faction", для Repair Asset + expand_location: str # для Expand Influence + expand_hp: int # 1–30, default 5 + upgrade_attribute: str # "force"|"wealth"|"cunning", опционально + event_description: str # описание события, default auto + + +class FactionTurnResolveRequest(TypedDict, total=False): + """ + Параметры одного вызова resolve_faction_turn. + + Поля: + game_date: Игровая дата в произвольном формате. + По умолчанию: текущая реальная дата. + + factions_folder: Путь к папке с файлами фракций. + По умолчанию: "Фракции". + + events_folder: Путь к папке с файлами событий. + По умолчанию: "События". + + actions: Список действий фракций за этот ход. + Обязательное поле. Каждый элемент — FactionAction. + """ + game_date: str # default: today + factions_folder: str # default "Фракции" + events_folder: str # default "События" + actions: list[FactionAction] # list[FactionAction] + + +# --------------------------------------------------------------------------- +# Вспомогательные функции +# --------------------------------------------------------------------------- + +def _default_resolve_request() -> dict: + """Дефолтные значения для FactionTurnResolveRequest.""" + return { + "game_date": date.today().strftime("%d %B %Y"), + "factions_folder": "Фракции", + "events_folder": "События", + "actions": [], + } + + +def _load_faction_file(faction_file: str, factions_folder: str) -> tuple[dict, str, str]: + """ + Загружает файл фракции из vault. + + Возвращает (frontmatter_dict, body_str, file_path). + Бросает ValueError если файл не найден. + """ + # 1. Пытаемся найти полный путь через кэш (ищет во всех подпапках) + path = resolve_wikilink(faction_file) + + # 2. Если резолв не помог (например, файл только что создан или имя странное), + # пробуем старый метод как запасной вариант + if not path: + path = f"{factions_folder}/{faction_file}.md" + + data = vault_query("get_frontmatter", {"path": path}) + if "error" in data: + raise ValueError( + f"Фракция не найдена: '{faction_file}'. " + f"Obsidian не смог найти путь автоматически, а по пути '{path}' файла нет." + ) + + fm = normalize_faction_frontmatter(data.get("frontmatter", {})) + return fm, data.get("body", ""), path + + +def _find_asset_in_faction(fm: dict, asset_name: str) -> Optional[dict]: + """ + Ищет актив по имени в списке активов фракции. + Возвращает ссылку на объект или None. + """ + for a in fm.get("assets", []): + if a.get("name") == asset_name: + return a + return None + + +def _find_boi_in_faction(fm: dict, location_wikilink: str) -> Optional[dict]: + """ + Ищет Base of Influence фракции в указанной локации. + """ + loc_norm = normalize_wikilink(location_wikilink) + for a in fm.get("assets", []): + if a.get("is_base_of_influence") and normalize_wikilink(a.get("location", "")) == loc_norm: + return a + return None + + +def _apply_damage_to_asset( + fm: dict, + asset_name: str, + damage: int, +) -> tuple[int, bool]: + """ + Наносит урон активу в frontmatter. + + Возвращает (damage_dealt: int, asset_destroyed: bool). + Если актив уничтожен — удаляет его из списка. + Урон не уходит через 0 (overflow не передаётся). + """ + asset = _find_asset_in_faction(fm, asset_name) + if not asset: + return 0, False + + current_hp = asset.get("hp", 0) + actual_damage = min(damage, current_hp) + asset["hp"] = current_hp - actual_damage + + destroyed = asset["hp"] <= 0 + if destroyed: + fm["assets"] = [a for a in fm["assets"] if a.get("name") != asset_name] + + return actual_damage, destroyed + + +def _apply_damage_to_boi( + fm: dict, + boi_asset: dict, + damage: int, +) -> tuple[int, bool]: + """ + Наносит урон Base of Influence И напрямую HP фракции (WWN правило). + + По WWN: урон BoI = урон HP фракции, overflow НЕ передаётся. + + Возвращает (damage_dealt: int, boi_destroyed: bool). + """ + current_boi_hp = boi_asset.get("hp", 0) + actual_damage = min(damage, current_boi_hp) + boi_asset["hp"] = current_boi_hp - actual_damage + + # Прямой урон HP фракции + faction_hp = fm.get("hp", 0) + fm["hp"] = max(0, faction_hp - actual_damage) + + destroyed = boi_asset["hp"] <= 0 + if destroyed: + boi_name = boi_asset.get("name", "") + fm["assets"] = [a for a in fm["assets"] if a.get("name") != boi_name] + if fm["hp"] <= 0: + fm["state"] = "defeated" + + return actual_damage, destroyed + + +def _make_event_filename(game_date: str, faction_file: str, action_type: str) -> str: + """ + Генерирует имя файла события. + + Формат: YYYY-MM-DD_{faction}_{action}.md + Если game_date не в ISO формате — использует реальную дату. + """ + safe_date = re.sub(r'[^\d\-]', '-', game_date)[:10] + if len(safe_date) < 10: + safe_date = date.today().isoformat() + safe_faction = re.sub(r'[^a-zA-Z0-9_]', '_', faction_file) + safe_action = re.sub(r'[^a-zA-Z0-9_]', '_', action_type) + return f"{safe_date}_{safe_faction}_{safe_action}.md" + + +def _make_event_content( + game_date: str, + faction_file: str, + faction_fm: dict, + action_type: str, + description: str, + mechanical_result: dict, + location: str, +) -> str: + """ + Формирует полное содержимое файла события (YAML frontmatter + тело). + """ + actor_link = f"[[{faction_file}]]" + tags = faction_fm.get("tags", []) + + fm_lines = [ + "---", + f'event_date: "{game_date}"', + f"actor: \"{actor_link}\"", + f'action_type: "{action_type}"', + f'location: "{location}"', + "tags:", + ] + for t in tags: + fm_lines.append(f' - "{t}"') + + # Механический результат + fm_lines.append("mechanical_result:") + for k, v in mechanical_result.items(): + if isinstance(v, str): + fm_lines.append(f' {k}: "{v}"') + else: + fm_lines.append(f' {k}: {v}') + + fm_lines.append("requires_player_attention: false") + fm_lines.append("---") + + body = f"# {action_type}: {faction_file}\n\n{description}\n" + return "\n".join(fm_lines) + "\n\n" + body + + +# --------------------------------------------------------------------------- +# Обработчики действий +# --------------------------------------------------------------------------- + +def _resolve_attack( + action: dict, + faction_fm: dict, + all_factions_data: dict, # faction_file → (fm, body, path) + factions_folder: str, +) -> dict: + """ + Выполняет действие Attack по правилам WWN. + + Бросает 1d10+attr vs 1d10+attr с учётом faction tags. + Применяет урон к target_asset или BoI. + При ударе по BoI — также наносит урон HP фракции. + + Возвращает словарь с результатами для отчёта. + """ + attacking_asset_name = action.get("attacking_asset", "") + target_faction_file = action.get("target_faction", "") + target_asset_name = action.get("target_asset", "") + location = action.get("location", "") + + result = { + "action": "Attack", + "attacker": action.get("faction_file", ""), + "attacking_asset": attacking_asset_name, + "target_faction": target_faction_file, + "target_asset": target_asset_name, + } + + # Загружаем определение атакующего актива + own_asset_def = get_asset(attacking_asset_name) + if not own_asset_def: + result["error"] = f"Актив '{attacking_asset_name}' не найден в таблицах WWN" + return result + + atk_attr = own_asset_def.get("attack_attribute", "Force") + atk_vs = own_asset_def.get("attack_vs", "Force") + atk_dmg_notation = own_asset_def.get("attack_damage", "1d6") + + # Значения атрибутов + atk_val = faction_fm.get(atk_attr.lower(), 0) + + # Загружаем цель + if target_faction_file not in all_factions_data: + result["error"] = f"Фракция-цель '{target_faction_file}' не найдена" + return result + + tf_fm, tf_body, tf_path = all_factions_data[target_faction_file] + def_val = tf_fm.get(atk_vs.lower(), 0) + + # Faction tags + a_extra, d_extra = get_attack_extra_die_flags( + faction_fm, tf_fm, atk_attr, own_asset_def.get("magic_required", "None") + ) + antimagical = has_antimagical_penalty(tf_fm, own_asset_def.get("magic_required", "None")) + if antimagical: + a_extra = False # Antimagical: атакующий берёт худший из 2d10 + + # Massive автопобеда + massive_result = check_massive_auto_win(faction_fm, tf_fm, atk_attr) + if massive_result is True: + attacker_wins = True + a_roll, d_roll = 10 + atk_val, 0 + result["roll_note"] = "AUTO-WIN (Massive)" + elif massive_result is False: + attacker_wins = False + a_roll, d_roll = 0, 10 + def_val + result["roll_note"] = "AUTO-LOSS (target Massive)" + else: + if antimagical: + # Бросаем 2d10 и берём ХУДШИЙ + r1 = random.randint(1, 10) + r2 = random.randint(1, 10) + a_base = min(r1, r2) + elif a_extra: + r1 = random.randint(1, 10) + r2 = random.randint(1, 10) + a_base = max(r1, r2) + else: + a_base = random.randint(1, 10) + + if d_extra: + r1 = random.randint(1, 10) + r2 = random.randint(1, 10) + d_base = max(r1, r2) + else: + d_base = random.randint(1, 10) + + a_roll = a_base + atk_val + d_roll = d_base + def_val + attacker_wins = a_roll > d_roll # строго больше + + result["attacker_roll"] = a_roll + result["defender_roll"] = d_roll + result["attacker_wins"] = attacker_wins + + if attacker_wins: + # Special attack: не бросаем обычный урон + if atk_dmg_notation == "Special": + damage = 0 + result["damage"] = 0 + result["note"] = "Special attack effect — применить вручную" + else: + damage = roll_dice(atk_dmg_notation) + result["damage"] = damage + + # Определяем цель — BoI или обычный актив + is_boi_target = target_asset_name.startswith("BoI") or \ + "Base of Influence" in target_asset_name + + if is_boi_target: + # Ищем BoI в локации + boi = _find_boi_in_faction(tf_fm, location) + if boi: + dmg_dealt, destroyed = _apply_damage_to_boi(tf_fm, boi, damage) + result["damage_dealt"] = dmg_dealt + result["boi_destroyed"] = destroyed + result["target_faction_hp_after"] = tf_fm.get("hp", 0) + if destroyed: + result["note"] = f"BoI уничтожен! Фракция {target_faction_file} потеряла {dmg_dealt} HP" + if tf_fm.get("state") == "defeated": + result["faction_defeated"] = target_faction_file + else: + dmg_dealt, destroyed = _apply_damage_to_asset(tf_fm, target_asset_name, damage) + result["damage_dealt"] = dmg_dealt + result["asset_destroyed"] = destroyed + if destroyed: + result["note"] = f"Актив '{target_asset_name}' уничтожен!" + else: + # Контратака + target_def = get_asset(target_asset_name) + ctr_notation = target_def.get("counterattack") if target_def else None + + if ctr_notation: + ctr_damage = roll_dice(ctr_notation) + result["counterattack_damage"] = ctr_damage + + # Zealot tag: при провале может перебросить, но получает контратаку + if "Zealot" in faction_fm.get("faction_tags", []): + result["zealot_note"] = "Zealot: может перебросить (применить вручную), но контратака уже нанесена" + + own_asset_ref = _find_asset_in_faction(faction_fm, attacking_asset_name) + if own_asset_ref: + ctr_dealt, own_destroyed = _apply_damage_to_asset( + faction_fm, attacking_asset_name, ctr_damage + ) + result["counterattack_dealt"] = ctr_dealt + result["attacking_asset_destroyed"] = own_destroyed + else: + result["counterattack_damage"] = 0 + result["note"] = "Цель не имеет counterattack" + + return result + + +def _resolve_create_asset( + action: dict, + faction_fm: dict, + location_wikilink: str, +) -> dict: + """ + Выполняет действие Create Asset по правилам WWN. + + Проверяет все условия: атрибут, magic, treasure, лимит, BoI. + Добавляет актив в список и снимает Treasure. + """ + asset_name = action.get("asset_name", "") + result = {"action": "Create Asset", "asset": asset_name} + + asset_def = get_asset(asset_name) + if not asset_def: + result["error"] = f"Актив '{asset_name}' не найден в таблицах WWN" + return result + + attr = asset_def["attribute"] + tier_req = asset_def["tier_required"] + cost = asset_def["cost"] + + # Проверки + if faction_fm.get(attr.lower(), 0) < tier_req: + result["error"] = f"Недостаточный {attr} ({faction_fm.get(attr.lower(), 0)} < {tier_req})" + return result + + magic_level = MAGIC_LEVELS.get(faction_fm.get("magic", "None"), 0) + req_magic_level = MAGIC_LEVELS.get(asset_def["magic_required"], 0) + if magic_level < req_magic_level: + result["error"] = f"Недостаточный Magic уровень ({faction_fm.get('magic')} < {asset_def['magic_required']})" + return result + + if faction_fm.get("treasure", 0) < cost: + result["error"] = f"Недостаточно Treasure ({faction_fm.get('treasure', 0)} < {cost})" + return result + + # Лимит активов атрибута + attr_count = sum( + 1 for a in faction_fm.get("assets", []) + if not a.get("is_base_of_influence") and a.get("attribute") == attr + ) + attr_limit = faction_fm.get(attr.lower(), 0) + if attr_count >= attr_limit: + result["error"] = f"Лимит {attr}-активов достигнут ({attr_count}/{attr_limit})" + return result + + # BoI проверка + loc_norm = normalize_wikilink(location_wikilink) + has_boi = any( + a.get("is_base_of_influence") and normalize_wikilink(a.get("location", "")) == loc_norm + for a in faction_fm.get("assets", []) + ) + if not has_boi: + result["error"] = f"Нет Base of Influence в {location_wikilink}" + return result + + # Уже куплен? + if any(a.get("name") == asset_name for a in faction_fm.get("assets", [])): + result["error"] = f"Актив '{asset_name}' уже есть у фракции" + return result + + # Применяем + new_asset = { + "name": asset_name, + "is_base_of_influence": False, + "attribute": attr, + "tier_required": tier_req, + "cost": cost, + "hp": asset_def["hp_max"], + "hp_max": asset_def["hp_max"], + "location": location_wikilink, + "stealthed": asset_def.get("special_key") in ( + "occult_infiltrators_start_stealthed", + "summoned_hunter_start_stealthed", + "demonic_slayer_start_stealthed", + ), + "subtle": "Subtle" in asset_def.get("qualities", []), + } + + faction_fm["assets"].append(new_asset) + faction_fm["treasure"] = faction_fm.get("treasure", 0) - cost + + # Добавляем регион в список regions, если его там нет + loc_norm = normalize_wikilink(location_wikilink) + current_regions = faction_fm.get("regions", []) + if not any(normalize_wikilink(r) == loc_norm for r in current_regions): + current_regions.append(location_wikilink) + faction_fm["regions"] = current_regions + + result["treasure_spent"] = cost + result["treasure_after"] = faction_fm["treasure"] + result["asset_hp"] = asset_def["hp_max"] + return result + + +def _resolve_hide_asset(action: dict, faction_fm: dict) -> dict: + """ + Выполняет действие Hide Asset по правилам WWN. + + Условия: Cunning >= 3, стоимость 2 Treasure за актив, + нельзя скрывать в локации с вражеским BoI. + """ + asset_name = action.get("asset_name", "") + result = {"action": "Hide Asset", "asset": asset_name} + + if faction_fm.get("cunning", 0) < 3: + result["error"] = "Cunning < 3 — Hide Asset недоступно" + return result + + if faction_fm.get("treasure", 0) < 2: + result["error"] = f"Недостаточно Treasure (нужно 2, есть {faction_fm.get('treasure', 0)})" + return result + + asset = _find_asset_in_faction(faction_fm, asset_name) + if not asset: + result["error"] = f"Актив '{asset_name}' не найден" + return result + + asset["stealthed"] = True + faction_fm["treasure"] = faction_fm.get("treasure", 0) - 2 + result["treasure_spent"] = 2 + result["treasure_after"] = faction_fm["treasure"] + return result + + +def _resolve_move_asset(action: dict, faction_fm: dict) -> dict: + """ + Выполняет действие Move Asset по правилам WWN. + + Обновляет location актива. + Если актив не Subtle/Stealthed и перемещается во враждебную локацию — + помечает предупреждением (проверку враждебности делает LLM/ГМ). + """ + asset_name = action.get("asset_name", "") + destination = action.get("move_destination", "") + result = {"action": "Move Asset", "asset": asset_name, "destination": destination} + + asset = _find_asset_in_faction(faction_fm, asset_name) + if not asset: + result["error"] = f"Актив '{asset_name}' не найден" + return result + + old_location = asset.get("location", "?") + asset["location"] = destination + result["from"] = old_location + result["to"] = destination + + if not asset.get("subtle") and not asset.get("stealthed"): + result["note"] = ( + "Актив не Subtle/Stealthed — при перемещении во враждебную локацию " + "может быть заблокирован. Проверьте наличие вражеского BoI в destination." + ) + return result + + +def _resolve_repair_asset(action: dict, faction_fm: dict) -> dict: + """ + Выполняет действие Repair Asset по правилам WWN. + + repair_asset = "faction" → ремонтирует HP самой фракции. + repair_asset = имя актива → ремонтирует актив. + """ + repair_target = action.get("repair_asset", "") + result = {"action": "Repair Asset", "target": repair_target} + + treasure = faction_fm.get("treasure", 0) + + if repair_target == "faction": + if treasure < 1: + result["error"] = "Недостаточно Treasure для ремонта фракции" + return result + repair_info = calc_faction_repair_heal(faction_fm) + cost = repair_info["cost"] + heal = repair_info["heal"] + old_hp = faction_fm.get("hp", 0) + hp_max = faction_fm.get("hp_max", 1) + faction_fm["hp"] = min(hp_max, old_hp + heal) + faction_fm["treasure"] = treasure - cost + result["healed"] = faction_fm["hp"] - old_hp + result["hp_after"] = faction_fm["hp"] + result["treasure_spent"] = cost + else: + asset = _find_asset_in_faction(faction_fm, repair_target) + if not asset: + result["error"] = f"Актив '{repair_target}' не найден" + return result + + attr = asset.get("attribute", "Force") + repair_info = calc_repair_heal(faction_fm, attr, 1) + cost = repair_info["cost"] + heal = repair_info["heal"] + + if treasure < cost: + result["error"] = f"Недостаточно Treasure (нужно {cost}, есть {treasure})" + return result + + old_hp = asset.get("hp", 0) + hp_max = asset.get("hp_max", 1) + asset["hp"] = min(hp_max, old_hp + heal) + faction_fm["treasure"] = treasure - cost + result["healed"] = asset["hp"] - old_hp + result["hp_after"] = asset["hp"] + result["treasure_spent"] = cost + + result["treasure_after"] = faction_fm.get("treasure", 0) + return result + + +def _resolve_expand_influence( + action: dict, + faction_fm: dict, + all_factions_data: dict, +) -> dict: + """ + Выполняет действие Expand Influence по правилам WWN. + + Создаёт новый BoI в expand_location за expand_hp Treasure. + Затем выполняет Cunning vs Cunning против каждой фракции с BoI в локации. + При проигрыше — враг получает право на немедленную атаку (помечается в отчёте). + """ + expand_loc = action.get("expand_location", action.get("location", "")) + desired_hp = action.get("expand_hp", 5) + result = { + "action": "Expand Influence", + "location": expand_loc, + "boi_hp": desired_hp, + } + + + # Получаем текущий список (если его нет, создаем пустой) + if "locations" not in faction_fm: + faction_fm["locations"] = [] + + # Проверяем, нет ли уже этой локации в списке (нормализованно) + loc_norm = normalize_wikilink(expand_loc) + existing_locs_norm = [normalize_wikilink(l) for l in faction_fm["locations"]] + + if loc_norm not in existing_locs_norm: + # Добавляем именно в том виде, в котором пришло (например, "[[Neverwinter]]") + faction_fm["locations"].append(expand_loc) + + + cost = desired_hp # 1 Treasure per HP + treasure = faction_fm.get("treasure", 0) + + if treasure < cost: + # Если денег не хватило, удаляем локацию обратно (откат) + if expand_loc in faction_fm["locations"]: + faction_fm["locations"].remove(expand_loc) + result["error"] = f"Недостаточно Treasure (нужно {cost}, есть {treasure})" + return result + + # Создаём BoI + loc_norm = normalize_wikilink(expand_loc) + boi_name = f"Base of Influence — {expand_loc.strip('[]')}" + new_boi = { + "name": boi_name, + "is_base_of_influence": True, + "hp": desired_hp, + "hp_max": desired_hp, + "location": expand_loc, + "cost": cost, + "stealthed": False, + "subtle": False, + } + faction_fm["assets"].append(new_boi) + faction_fm["treasure"] = treasure - cost + result["treasure_spent"] = cost + result["treasure_after"] = faction_fm["treasure"] + result["boi_created"] = boi_name + + # Cunning checks против враждебных фракций в локации + own_cunning = faction_fm.get("cunning", 0) + contesting_checks = [] + + for tf_file, (tf_fm, _tf_body, _tf_path) in all_factions_data.items(): + # Проверяем есть ли у них BoI в expand_loc + tf_has_boi = any( + a.get("is_base_of_influence") and normalize_wikilink(a.get("location", "")) == loc_norm + for a in tf_fm.get("assets", []) + ) + if not tf_has_boi: + continue + + tf_cunning = tf_fm.get("cunning", 0) + a_roll, d_roll, attacker_wins = roll_attribute_check(own_cunning, tf_cunning) + contesting_checks.append({ + "contesting_faction": tf_file, + "our_roll": a_roll, + "their_roll": d_roll, + "we_win": attacker_wins, + "note": "OK — BoI создан без противодействия" if attacker_wins + else f"⚠️ {tf_file} может немедленно атаковать новый BoI!" + }) + + result["cunning_checks"] = contesting_checks + return result + + +def _resolve_sell_asset(action: dict, faction_fm: dict) -> dict: + """ + Выполняет действие Sell Asset по правилам WWN. + + Если актив не повреждён — получить floor(cost/2) Treasure. + Если повреждён — 0 Treasure. + """ + asset_name = action.get("asset_name", "") + result = {"action": "Sell Asset", "asset": asset_name} + + asset = _find_asset_in_faction(faction_fm, asset_name) + if not asset: + result["error"] = f"Актив '{asset_name}' не найден" + return result + + asset_def = get_asset(asset_name) + hp = asset.get("hp", 0) + hp_max = asset.get("hp_max", 1) + + if hp < hp_max: + gain = 0 + result["note"] = "Актив повреждён — получено 0 Treasure" + else: + gain = math.floor((asset_def["cost"] if asset_def else 0) / 2) + + faction_fm["assets"] = [a for a in faction_fm["assets"] if a.get("name") != asset_name] + faction_fm["treasure"] = faction_fm.get("treasure", 0) + gain + result["treasure_gained"] = gain + result["treasure_after"] = faction_fm["treasure"] + return result + + +def _resolve_upgrade_attribute(action: dict, faction_fm: dict) -> Optional[dict]: + """ + Применяет повышение атрибута через XP (если указан upgrade_attribute). + + Возвращает dict с результатом или None если повышения нет. + """ + attr = action.get("upgrade_attribute", "") + if not attr: + return None + + current = faction_fm.get(attr, 0) + cost = calc_xp_cost_to_raise(current) + if cost is None: + return {"action": "XP Upgrade", "error": f"{attr} уже на максимуме (8)"} + + current_xp = faction_fm.get("xp", 0) + if current_xp < cost: + return { + "action": "XP Upgrade", + "error": f"Недостаточно XP ({current_xp} < {cost}) для повышения {attr}" + } + + faction_fm[attr] = current + 1 + faction_fm["xp"] = current_xp - cost + + # Пересчитываем hp_max + new_hp_max = calc_hp_max( + faction_fm.get("force", 0), + faction_fm.get("wealth", 0), + faction_fm.get("cunning", 0), + ) + faction_fm["hp_max"] = new_hp_max + + return { + "action": "XP Upgrade", + "attribute": attr, + "old_value": current, + "new_value": current + 1, + "xp_spent": cost, + "xp_after": faction_fm["xp"], + "new_hp_max": new_hp_max, + } + + +# --------------------------------------------------------------------------- +# Главная функция +# --------------------------------------------------------------------------- + +def resolve_faction_turn( + debug_description: str, + requests: list[FactionTurnResolveRequest], +) -> str: + """ + Основной метод, который вызывает тул с фронта. + + Принимает список запросов на применение хода фракций. + Для каждого запроса: + - загружает все затронутые файлы фракций из Obsidian vault; + - применяет каждое действие по правилам WWN: + Attack → attribute check 1d10+attr vs 1d10+attr, урон активам/BoI; + Create Asset → проверки + создание актива; + Hide Asset → стоимость 2 Treasure, stealth = true; + Move Asset → обновление location; + Repair Asset → heal по формуле WWN; + Expand Influence → создание BoI + cunning checks; + Sell Asset → получение Treasure; + - накапливает все изменения в памяти (TODO: сейчас применяются разом; + можно изменить на немедленное применение по порядку инициативы); + - записывает изменённые файлы фракций обратно в vault; + - создаёт файлы событий в events_folder; + - формирует сухой отчёт об изменениях для LLM-хроникёра. + + Возвращает Markdown-строку с отчётом. + """ + if not requests: + requests = [{}] + + all_sections: list[str] = [] + + for raw_req in requests: + req = {**_default_resolve_request(), **{k: v for k, v in raw_req.items() if v is not None}} + game_date = req["game_date"] + factions_folder = req["factions_folder"] + events_folder = req["events_folder"] + actions: list[dict] = req.get("actions", []) + + if not actions: + all_sections.append("## resolve_faction_turn\n\n*(Нет действий для применения)*") + continue + + # ── TODO: [ПОДУМАТЬ] Сейчас все изменения накапливаются в памяти и применяются разом. + # Альтернатива: применять немедленно по порядку инициативы (порядок action в списке). + # Текущий подход: загружаем все файлы → применяем все дельты → пишем все файлы. + # Плюс: нет частичных состояний при ошибке в середине. + # Минус: фракция, атакованная второй, не "знает" об уроне от первой атаки. + + # Шаг 1: Загружаем все затронутые фракции + all_factions_data: dict[str, tuple[dict, str, str]] = {} # file → (fm, body, path) + load_errors: list[str] = [] + + faction_files_needed = set() + for action in actions: + faction_files_needed.add(action.get("faction_file", "")) + if action.get("action_type") == "Attack": + faction_files_needed.add(action.get("target_faction", "")) + + for ff in faction_files_needed: + if not ff: + continue + try: + fm, body, path = _load_faction_file(ff, factions_folder) + all_factions_data[ff] = (fm, body, path) + except ValueError as e: + load_errors.append(str(e)) + + if load_errors: + all_sections.append("## ❌ Ошибки загрузки\n" + "\n".join(f"- {e}" for e in load_errors)) + + # Шаг 2: Применяем действия + action_results: list[dict] = [] + event_files_created: list[str] = [] + + for action in actions: + faction_file = action.get("faction_file", "") + action_type = action.get("action_type", "") + location = action.get("location", "") + + if faction_file not in all_factions_data: + action_results.append({ + "action": action_type, + "faction": faction_file, + "error": f"Фракция '{faction_file}' не была загружена", + }) + continue + + fm, body, path = all_factions_data[faction_file] + result = {"faction": faction_file} + + if action_type == "Attack": + result.update(_resolve_attack(action, fm, all_factions_data, factions_folder)) + + elif action_type == "Create Asset": + result.update(_resolve_create_asset(action, fm, location)) + + elif action_type == "Hide Asset": + result.update(_resolve_hide_asset(action, fm)) + + elif action_type == "Move Asset": + result.update(_resolve_move_asset(action, fm)) + + elif action_type == "Repair Asset": + result.update(_resolve_repair_asset(action, fm)) + + elif action_type == "Expand Influence": + result.update(_resolve_expand_influence(action, fm, all_factions_data)) + + elif action_type == "Sell Asset": + result.update(_resolve_sell_asset(action, fm)) + + else: + result["error"] = f"Неизвестный action_type: '{action_type}'" + + # Повышение атрибута через XP (опционально для любого действия) + upgrade_result = _resolve_upgrade_attribute(action, fm) + if upgrade_result: + result["xp_upgrade"] = upgrade_result + + # Обновляем last_action + fm["last_turn_date"] = game_date + fm["last_action"] = f"{action_type}: {action.get('attacking_asset') or action.get('asset_name') or ''}" + + action_results.append(result) + + # Шаг 3: Записываем все изменённые файлы фракций в vault + write_errors: list[str] = [] + for ff, (fm, body, path) in all_factions_data.items(): + try: + success = write_faction(path, fm, body) + if not success: + write_errors.append(f"Не удалось записать {path}") + except Exception as e: + write_errors.append(f"Ошибка записи {path}: {e}") + + # Шаг 4: Создаём файлы событий + for action, result in zip(actions, action_results): + if "error" in result: + continue + + faction_file = action.get("faction_file", "") + action_type = action.get("action_type", "") + location = action.get("location", "") + + if faction_file not in all_factions_data: + continue + + fm, body, path = all_factions_data[faction_file] + + event_description = action.get("event_description") or ( + f"{faction_file} выполнил {action_type}" + + (f" против {action.get('target_faction', '')}" if action.get("target_faction") else "") + + f" в {location}." + ) + + # Механический результат для frontmatter события + mechanical_result = { + k: v for k, v in result.items() + if k not in ("faction",) and not isinstance(v, (dict, list)) + } + + event_filename = _make_event_filename(game_date, faction_file, action_type) + event_path = f"{events_folder}/{event_filename}" + event_content = _make_event_content( + game_date=game_date, + faction_file=faction_file, + faction_fm=fm, + action_type=action_type, + description=event_description, + mechanical_result=mechanical_result, + location=location, + ) + + try: + success = create_event_file(event_path, event_content) + if success: + event_files_created.append(event_path) + except Exception as e: + write_errors.append(f"Ошибка создания события {event_path}: {e}") + + # Шаг 5: Формируем отчёт + report_lines = [ + f"## 📋 Отчёт хода фракций | {game_date}\n", + ] + + for result in action_results: + faction = result.get("faction", "?") + action_type = result.get("action", "?") + icon = "✅" if "error" not in result else "❌" + + report_lines.append(f"### {icon} {faction} — {action_type}") + + if "error" in result: + report_lines.append(f"**Ошибка:** {result['error']}\n") + continue + + # Детали по типу действия + if action_type == "Attack": + target = result.get("target_asset", "?") + tf = result.get("target_faction", "?") + a_roll = result.get("attacker_roll", "?") + d_roll = result.get("defender_roll", "?") + wins = result.get("attacker_wins", False) + outcome = "🗡️ Успех" if wins else "🛡️ Провал" + report_lines.append( + f"- Атака: `{result.get('attacking_asset')}` → `{target}` [{tf}]\n" + f"- Бросок: {a_roll} vs {d_roll} → **{outcome}**" + ) + if wins: + dmg = result.get("damage_dealt", result.get("damage", "?")) + report_lines.append(f"- Урон: {dmg} HP") + if result.get("asset_destroyed"): + report_lines.append(f"- 💥 `{target}` **уничтожен**!") + if result.get("boi_destroyed"): + report_lines.append(f"- 💥 **BoI уничтожен!** Фракция {tf} теряет HP напрямую") + if result.get("faction_defeated"): + report_lines.append(f"- ☠️ **Фракция {result['faction_defeated']} УНИЧТОЖЕНА!**") + else: + ctr = result.get("counterattack_dealt", 0) + if ctr: + report_lines.append(f"- Контратака: {ctr} HP урона по `{result.get('attacking_asset')}`") + if result.get("attacking_asset_destroyed"): + report_lines.append(f"- 💥 `{result.get('attacking_asset')}` **уничтожен контратакой**!") + if result.get("note"): + report_lines.append(f"- ⚠️ {result['note']}") + + elif action_type == "Create Asset": + report_lines.append( + f"- Создан: `{result.get('asset')}` [HP {result.get('asset_hp')}]\n" + f"- Потрачено: {result.get('treasure_spent')} Treasure → осталось {result.get('treasure_after')}" + ) + + elif action_type == "Hide Asset": + report_lines.append( + f"- `{result.get('asset')}` теперь **Stealthed**\n" + f"- Потрачено: {result.get('treasure_spent')} Treasure → осталось {result.get('treasure_after')}" + ) + + elif action_type == "Move Asset": + report_lines.append( + f"- `{result.get('asset')}`: {result.get('from')} → {result.get('to')}" + ) + if result.get("note"): + report_lines.append(f"- ⚠️ {result['note']}") + + elif action_type == "Repair Asset": + report_lines.append( + f"- `{result.get('target')}` восстановлен на {result.get('healed')} HP " + f"[HP после: {result.get('hp_after')}]\n" + f"- Потрачено: {result.get('treasure_spent')} Treasure → осталось {result.get('treasure_after')}" + ) + + elif action_type == "Expand Influence": + report_lines.append( + f"- Создан **{result.get('boi_created')}** [HP {result.get('boi_hp')}]\n" + f"- Потрачено: {result.get('treasure_spent')} Treasure → осталось {result.get('treasure_after')}" + ) + for check in result.get("cunning_checks", []): + icon_c = "✅" if check["we_win"] else "⚠️" + report_lines.append( + f" - {icon_c} vs {check['contesting_faction']}: " + f"{check['our_roll']} vs {check['their_roll']} — {check['note']}" + ) + + elif action_type == "Sell Asset": + report_lines.append( + f"- `{result.get('asset')}` продан за {result.get('treasure_gained')} Treasure\n" + f"- Treasure после: {result.get('treasure_after')}" + ) + + # XP upgrade + xp_upg = result.get("xp_upgrade") + if xp_upg and "error" not in xp_upg: + attr = xp_upg.get("attribute", "?") + report_lines.append( + f"- 🌟 **XP Upgrade:** {attr} {xp_upg['old_value']}→{xp_upg['new_value']} " + f"(потрачено {xp_upg['xp_spent']} XP, осталось {xp_upg['xp_after']})" + ) + + report_lines.append("") + + # Записанные файлы + if event_files_created: + report_lines.append("### 📄 Созданы файлы событий") + for ep in event_files_created: + report_lines.append(f"- `{ep}`") + report_lines.append("") + + if write_errors: + report_lines.append("### ⚠️ Ошибки записи") + for we in write_errors: + report_lines.append(f"- {we}") + + all_sections.append("\n".join(report_lines)) + + return "\n\n---\n\n".join(all_sections) + + +# --------------------------------------------------------------------------- +# Точка входа для тестирования +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + result = resolve_faction_turn( + "тест resolve_faction_turn", + [ + { + "game_date": "15 Mirtul 1492 DR", + "factions_folder": "Фракции", + "events_folder": "События", + "actions": [ + { + "faction_file": "Cult_of_the_Dragon", + "action_type": "Attack", + "attacking_asset": "Organization Moles", + "target_faction": "Harpers", + "target_asset": "Informers", + "location": "[[Waterdeep]]", + "event_description": "Агенты Культа нанесли удар по агентурной сети Харперов.", + }, + { + "faction_file": "Harpers", + "action_type": "Create Asset", + "asset_name": "Spymaster", + "location": "[[Waterdeep]]", + }, + ], + }, + { + # Минимальный запрос — только дефолты + "actions": [ + { + "faction_file": "Shadow_Thieves", + "action_type": "Hide Asset", + "asset_name": "Smugglers", + "location": "[[Waterdeep]]", + } + ], + }, + ], + ) + print(result) \ No newline at end of file diff --git a/faction_turns/wwn_assets_data.py b/faction_turns/wwn_assets_data.py new file mode 100644 index 0000000..7bf792b --- /dev/null +++ b/faction_turns/wwn_assets_data.py @@ -0,0 +1,1250 @@ +""" +wwn_assets_data.py — полный справочник активов системы фракций WWN (Worlds Without Number). + +Содержит три таблицы активов из книги: + CUNNING_ASSETS — активы на основе Cunning (шпионаж, интриги, подкуп) + FORCE_ASSETS — активы на основе Force (военная сила, солдаты, оружие) + WEALTH_ASSETS — активы на основе Wealth (торговля, деньги, экономика) + +Каждый актив — словарь со следующими полями: + name (str) — уникальное имя актива + attribute (str) — "Cunning" | "Force" | "Wealth" + tier_required (int) — минимальное значение атрибута для покупки (1–8) + cost (int) — стоимость покупки в Treasure + hp_max (int) — максимальные HP актива + magic_required (str) — "None" | "Low" | "Medium" | "High" + attack_attribute (str|None) — атрибут атаки ("Cunning"|"Force"|"Wealth"|None) + attack_vs (str|None) — атрибут защиты цели ("Cunning"|"Force"|"Wealth"|None) + attack_damage (str|None) — нотация урона ("1d6", "2d8+2") или "Special" или None + counterattack (str|None) — нотация урона при контратаке или None + qualities (list[str]) — список качеств: "Subtle", "Action", "Special" + description (str) — краткое описание эффекта актива + special_key (str|None) — ключ специального эффекта для wwn_mechanics.py или None + +Вспомогательная функция: + get_asset(name) — найти актив по имени + get_assets_by_attribute(attr) — все активы для атрибута + get_available_assets(faction_data) — активы доступные фракции к покупке +""" + +from typing import Optional + +# --------------------------------------------------------------------------- +# Cunning Assets (стр. 328–329 WWN) +# --------------------------------------------------------------------------- + +CUNNING_ASSETS: list[dict] = [ + # Tier 1 + { + "name": "Informers", + "attribute": "Cunning", "tier_required": 1, "cost": 2, "hp_max": 3, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "Special", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Spend 1 Treasure as free action: Cunning vs Cunning against a chosen faction. " + "On success, all Stealthed assets of that faction within one move are revealed." + ), + "special_key": "informers_reveal", + }, + { + "name": "Petty Seers", + "attribute": "Cunning", "tier_required": 1, "cost": 2, "hp_max": 2, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d6", + "qualities": ["Subtle"], + "description": "Fortune-tellers and minor oracles; no attack, strong counterattack.", + "special_key": None, + }, + { + "name": "Smugglers", + "attribute": "Cunning", "tier_required": 1, "cost": 2, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Wealth", + "attack_damage": "1d4", + "counterattack": None, + "qualities": ["Subtle", "Action"], + "description": ( + "Free action once per turn: move any allied Wealth or Cunning asset " + "in same location to destination within movement range, bypassing restrictions." + ), + "special_key": "smugglers_move", + }, + { + "name": "Useful Idiots", + "attribute": "Cunning", "tier_required": 1, "cost": 1, "hp_max": 2, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "If an allied asset within one move is struck, sacrifice Useful Idiots " + "to negate the attack. Only one band can be sacrificed per turn." + ), + "special_key": "useful_idiots_sacrifice", + }, + # Tier 2 + { + "name": "Blackmail", + "attribute": "Cunning", "tier_required": 2, "cost": 4, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "1d4", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "While present, hostile factions can't roll more than one die during Attacks " + "made by or against them here, even with tags or assets granting bonus dice." + ), + "special_key": "blackmail_suppress_dice", + }, + { + "name": "Dancing Girls", + "attribute": "Cunning", "tier_required": 2, "cost": 4, "hp_max": 3, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Wealth", + "attack_damage": "2d4", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Immune to Attack or Counterattack damage from Force assets, " + "but cannot defend against Force asset attacks." + ), + "special_key": "dancing_girls_force_immune", + }, + { + "name": "Hired Friends", + "attribute": "Cunning", "tier_required": 2, "cost": 4, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "1d6", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Free action once per turn: spend 1 Treasure to grant a Wealth asset " + "within one move the Subtle quality until Hired Friends move or are destroyed." + ), + "special_key": "hired_friends_grant_subtle", + }, + { + "name": "Saboteurs", + "attribute": "Cunning", "tier_required": 2, "cost": 5, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Wealth", + "attack_damage": "2d4", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "An asset attacked by Saboteurs can't use any free action abilities " + "next turn, regardless of attack success." + ), + "special_key": "saboteurs_suppress_actions", + }, + # Tier 3 + { + "name": "Bewitching Charmer", + "attribute": "Cunning", "tier_required": 3, "cost": 6, "hp_max": 4, + "magic_required": "Low", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "Special", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "On successful Attack: targeted asset cannot leave same location " + "until Charmer moves or is destroyed. Immune to Counterattack." + ), + "special_key": "charmer_pin", + }, + { + "name": "Covert Transport", + "attribute": "Cunning", "tier_required": 3, "cost": 8, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Free action once per turn: pay 1 Treasure to move any Cunning or Wealth " + "asset at same location; transported asset gains Stealth until used." + ), + "special_key": "covert_transport_move", + }, + { + "name": "Occult Infiltrators", + "attribute": "Cunning", "tier_required": 3, "cost": 6, "hp_max": 4, + "magic_required": "Medium", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d6", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": "Magically gifted spies; always begin play with Stealth quality.", + "special_key": "occult_infiltrators_start_stealthed", + }, + { + "name": "Spymaster", + "attribute": "Cunning", "tier_required": 3, "cost": 8, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "1d6", + "counterattack": "2d6", + "qualities": ["Subtle"], + "description": "Veteran counterintelligence operative; strong counterattack.", + "special_key": None, + }, + # Tier 4 + { + "name": "Court Patronage", + "attribute": "Cunning", "tier_required": 4, "cost": 8, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "1d6", + "counterattack": "1d6", + "qualities": ["Subtle", "Special"], + "description": "Automatically grants 1 Treasure to owning faction each turn.", + "special_key": "court_patronage_income", + }, + { + "name": "Idealistic Thugs", + "attribute": "Cunning", "tier_required": 4, "cost": 8, "hp_max": 12, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Force", + "attack_damage": "1d6", + "counterattack": "1d6", + "qualities": ["Subtle"], + "description": "Easily-manipulated hotheads; high HP for a Cunning asset.", + "special_key": None, + }, + { + "name": "Seditionists", + "attribute": "Cunning", "tier_required": 4, "cost": 12, "hp_max": 8, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": "Special", + "counterattack": None, + "qualities": ["Subtle"], + "description": ( + "Instead of Attack: spend 1d4 Treasure to attach to a hostile asset in same location. " + "Until destroyed or moved, that asset cannot be used and grants no benefits." + ), + "special_key": "seditionists_infest", + }, + { + "name": "Vigilant Agents", + "attribute": "Cunning", "tier_required": 4, "cost": 12, "hp_max": 8, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d4", + "qualities": ["Subtle", "Special"], + "description": ( + "When a Stealthed hostile asset moves into location within one move: " + "Cunning vs Cunning. On success, intruder loses Stealth after completing move." + ), + "special_key": "vigilant_agents_detect", + }, + # Tier 5 + { + "name": "Cryptomancers", + "attribute": "Cunning", "tier_required": 5, "cost": 14, "hp_max": 6, + "magic_required": "Low", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "Special", + "counterattack": None, + "qualities": ["Subtle"], + "description": ( + "Instead of Attack: Cunning vs Cunning against specific hostile asset within one move. " + "On success, target cannot act next turn. On failure, no counterattack." + ), + "special_key": "cryptomancers_disable", + }, + { + "name": "Organization Moles", + "attribute": "Cunning", "tier_required": 5, "cost": 8, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d6", + "counterattack": None, + "qualities": ["Subtle"], + "description": "Sleeper agents deep in hostile organizations; no counterattack damage.", + "special_key": None, + }, + { + "name": "Shapeshifters", + "attribute": "Cunning", "tier_required": 5, "cost": 14, "hp_max": 8, + "magic_required": "Medium", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d6", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Free action once per turn: spend 1 Treasure to gain Stealth quality." + ), + "special_key": "shapeshifters_self_stealth", + }, + # Tier 6 + { + "name": "Interrupted Logistics", + "attribute": "Cunning", "tier_required": 6, "cost": 20, "hp_max": 10, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Non-Stealthed hostile units cannot enter same location without " + "paying 1d4 Treasure and waiting one turn." + ), + "special_key": "interrupted_logistics_toll", + }, + { + "name": "Prophet", + "attribute": "Cunning", "tier_required": 6, "cost": 20, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d8", + "counterattack": "1d8", + "qualities": ["Subtle"], + "description": "Charismatic prophet or rebel leader; powerful attack and counterattack.", + "special_key": None, + }, + { + "name": "Underground Roads", + "attribute": "Cunning", "tier_required": 6, "cost": 18, "hp_max": 15, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "Free action: pay 1 Treasure to move any friendly asset from within " + "one move of Roads to another location within one move of Roads." + ), + "special_key": "underground_roads_teleport", + }, + # Tier 7 + { + "name": "Expert Treachery", + "attribute": "Cunning", "tier_required": 7, "cost": 10, "hp_max": 5, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "Special", + "counterattack": None, + "qualities": ["Subtle"], + "description": ( + "On successful Attack: this asset is lost, owning faction gains 5 Treasure, " + "and targeted asset switches sides (even if new owner lacks required attributes)." + ), + "special_key": "expert_treachery_convert", + }, + { + "name": "Mindbenders", + "attribute": "Cunning", "tier_required": 7, "cost": 20, "hp_max": 10, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "2d8", + "qualities": ["Subtle", "Special"], + "description": ( + "Once per turn: force a rival faction to reroll any check they just made, " + "take whichever result Mindbenders prefer. A faction can only be affected once per turn." + ), + "special_key": "mindbenders_reroll", + }, + { + "name": "Popular Movement", + "attribute": "Cunning", "tier_required": 7, "cost": 25, "hp_max": 16, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d6", + "counterattack": "1d6", + "qualities": ["Subtle", "Special"], + "description": ( + "Any friendly asset may move into same location as Popular Movement, " + "even if normally forbidden and lacking Subtle. If Popular Movement moves or is " + "destroyed, such assets must also leave or suffer usual consequences." + ), + "special_key": "popular_movement_sanctuary", + }, + # Tier 8 + { + "name": "Just As Planned", + "attribute": "Cunning", "tier_required": 8, "cost": 40, "hp_max": 15, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d10", + "qualities": ["Subtle", "Special"], + "description": ( + "When faction's assets make a Cunning roll: may reroll a failed check " + "at cost of 1d6 damage to Just As Planned. No range limit. May be used repeatedly." + ), + "special_key": "just_as_planned_reroll", + }, + { + "name": "Omniscient Seers", + "attribute": "Cunning", "tier_required": 8, "cost": 30, "hp_max": 10, + "magic_required": "High", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d8", + "qualities": ["Subtle", "Special"], + "description": ( + "At start of turn: each hostile Stealthed asset within one move must succeed " + "Cunning vs Cunning or lose Stealth. Also grants extra Cunning die for all rolls " + "within one move." + ), + "special_key": "omniscient_seers_mass_detect", + }, +] + +# --------------------------------------------------------------------------- +# Force Assets (стр. 330–331 WWN) +# --------------------------------------------------------------------------- + +FORCE_ASSETS: list[dict] = [ + # Tier 1 + { + "name": "Fearful Intimidation", + "attribute": "Force", "tier_required": 1, "cost": 2, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d4", + "qualities": [], + "description": "Intimidation of locals; no attack, counterattack only.", + "special_key": None, + }, + { + "name": "Local Guard", + "attribute": "Force", "tier_required": 1, "cost": 3, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "1d3+1", + "counterattack": "1d4+1", + "qualities": [], + "description": "Citizen night watch and local guard units; better at defending.", + "special_key": None, + }, + { + "name": "Summoned Hunter", + "attribute": "Force", "tier_required": 1, "cost": 4, "hp_max": 4, + "magic_required": "Medium", + "attack_attribute": "Cunning", "attack_vs": "Force", + "attack_damage": "1d6", + "counterattack": None, + "qualities": ["Subtle"], + "description": "Magically summoned or bound assassin-beast; begins play Stealthed.", + "special_key": "summoned_hunter_start_stealthed", + }, + { + "name": "Thugs", + "attribute": "Force", "tier_required": 1, "cost": 2, "hp_max": 1, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Cunning", + "attack_damage": "1d6", + "counterattack": None, + "qualities": ["Subtle"], + "description": "Gutter ruffians and common kneebreakers; very fragile.", + "special_key": None, + }, + # Tier 2 + { + "name": "Guerrilla Populace", + "attribute": "Force", "tier_required": 2, "cost": 6, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "1d4+1", + "counterattack": None, + "qualities": [], + "description": "Locals trained in guerrilla warfare; good against supply lines.", + "special_key": None, + }, + { + "name": "Military Transport", + "attribute": "Force", "tier_required": 2, "cost": 4, "hp_max": 6, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Action"], + "description": ( + "Free action once per turn: bring an allied asset to its location or " + "move an allied asset from its location, within one move. Can chain movement." + ), + "special_key": "military_transport_move", + }, + { + "name": "Reserve Corps", + "attribute": "Force", "tier_required": 2, "cost": 4, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "1d6", + "counterattack": "1d6", + "qualities": [], + "description": "Retired military personnel spread through area as colonists.", + "special_key": None, + }, + { + "name": "Scouts", + "attribute": "Force", "tier_required": 2, "cost": 5, "hp_max": 5, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d4", + "counterattack": "1d4+1", + "qualities": ["Subtle"], + "description": "Long-range scouts and reconnaissance experts.", + "special_key": None, + }, + # Tier 3 + { + "name": "Enchanted Elites", + "attribute": "Force", "tier_required": 3, "cost": 8, "hp_max": 6, + "magic_required": "Medium", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "1d10", + "counterattack": "1d6", + "qualities": ["Subtle"], + "description": "Magically armed and blessed warriors; strong attack.", + "special_key": None, + }, + { + "name": "Infantry", + "attribute": "Force", "tier_required": 3, "cost": 6, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "1d8", + "counterattack": "1d6", + "qualities": [], + "description": "Common foot soldiers; reliable and numerous.", + "special_key": None, + }, + { + "name": "Temple Fanatics", + "attribute": "Force", "tier_required": 3, "cost": 4, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d6", + "counterattack": "2d6", + "qualities": ["Special"], + "description": ( + "After every time they defend or successfully attack, take 1d4 damage. " + "High damage both ways." + ), + "special_key": "temple_fanatics_self_damage", + }, + { + "name": "Witch Hunters", + "attribute": "Force", "tier_required": 3, "cost": 6, "hp_max": 4, + "magic_required": "Low", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "1d4+1", + "counterattack": "1d6", + "qualities": [], + "description": "Trained to find traitors, spies and hostile magic.", + "special_key": None, + }, + # Tier 4 + { + "name": "Cavalry", + "attribute": "Force", "tier_required": 4, "cost": 8, "hp_max": 12, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d6", + "counterattack": "1d4", + "qualities": [], + "description": "Mounted troops; weak on defense, powerful charges.", + "special_key": None, + }, + { + "name": "Military Roads", + "attribute": "Force", "tier_required": 4, "cost": 10, "hp_max": 10, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Action"], + "description": ( + "Logistical road network. Once per turn: move any one asset from any location " + "within reach to any other within reach for 1 Treasure." + ), + "special_key": "military_roads_network", + }, + { + "name": "Vanguard Unit", + "attribute": "Force", "tier_required": 4, "cost": 10, "hp_max": 10, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d6", + "qualities": ["Action"], + "description": ( + "During Relocate Asset action: can move itself and allied units at same location " + "to any location within range, even normally-prohibited ones." + ), + "special_key": "vanguard_forced_march", + }, + { + "name": "War Fleet", + "attribute": "Force", "tier_required": 4, "cost": 12, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d6", + "counterattack": "1d8", + "qualities": ["Action"], + "description": ( + "Can only attack assets/locations reachable by waterways. " + "Once per turn: freely relocate to any coastal area within movement range." + ), + "special_key": "war_fleet_coastal", + }, + # Tier 5 + { + "name": "Demonic Slayer", + "attribute": "Force", "tier_required": 5, "cost": 12, "hp_max": 4, + "magic_required": "High", + "attack_attribute": "Cunning", "attack_vs": "Cunning", + "attack_damage": "2d6+2", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": "Summoned inhuman assassin-beast; enters play Stealthed.", + "special_key": "demonic_slayer_start_stealthed", + }, + { + "name": "Magical Logistics", + "attribute": "Force", "tier_required": 5, "cost": 14, "hp_max": 6, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Special"], + "description": ( + "Once per faction turn as free action: repair 2 hit points of damage " + "to an allied Force asset." + ), + "special_key": "magical_logistics_repair", + }, + { + "name": "Siege Experts", + "attribute": "Force", "tier_required": 5, "cost": 10, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Wealth", + "attack_damage": "1d6", + "counterattack": "1d6", + "qualities": [], + "description": ( + "On successful Attack: target's owner loses 1d4 Treasure and this faction gains it." + ), + "special_key": "siege_experts_loot", + }, + # Tier 6 + { + "name": "Fortification Program", + "attribute": "Force", "tier_required": 6, "cost": 20, "hp_max": 18, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "2d6", + "qualities": ["Action"], + "description": ( + "Once per turn: when enemy makes Attack targeting faction's Force rating, " + "can use Fortification Program to defend if within one move of attack." + ), + "special_key": "fortification_intercept", + }, + { + "name": "Knights", + "attribute": "Force", "tier_required": 6, "cost": 18, "hp_max": 16, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d8", + "counterattack": "2d6", + "qualities": [], + "description": "Elite warriors of considerable personal prowess.", + "special_key": None, + }, + { + "name": "War Machines", + "attribute": "Force", "tier_required": 6, "cost": 25, "hp_max": 14, + "magic_required": "Medium", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d10+4", + "counterattack": "1d10", + "qualities": [], + "description": "Mobile war machines driven by beasts or magical motive power.", + "special_key": None, + }, + # Tier 7 + { + "name": "Brilliant General", + "attribute": "Force", "tier_required": 7, "cost": 25, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Force", + "attack_damage": "1d8", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "When Brilliant General or any allied Force asset in same location " + "Attacks or defends, it rolls an extra die." + ), + "special_key": "brilliant_general_extra_die", + }, + { + "name": "Purity Rites", + "attribute": "Force", "tier_required": 7, "cost": 20, "hp_max": 10, + "magic_required": "Low", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "2d8+2", + "qualities": ["Special"], + "description": ( + "Can only defend against attacks targeting faction's Cunning. " + "Allows faction to roll extra die to defend." + ), + "special_key": "purity_rites_cunning_defense", + }, + { + "name": "Warshaped", + "attribute": "Force", "tier_required": 7, "cost": 30, "hp_max": 16, + "magic_required": "High", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d8+2", + "counterattack": "2d8", + "qualities": ["Subtle"], + "description": "Magically altered creatures designed for warfare; elusive.", + "special_key": None, + }, + # Tier 8 + { + "name": "Apocalypse Engine", + "attribute": "Force", "tier_required": 8, "cost": 35, "hp_max": 20, + "magic_required": "Medium", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "3d10+4", + "counterattack": None, + "qualities": [], + "description": "Ancient super-weapon; devastating attack, no counterattack.", + "special_key": None, + }, + { + "name": "Invincible Legion", + "attribute": "Force", "tier_required": 8, "cost": 40, "hp_max": 30, + "magic_required": "None", + "attack_attribute": "Force", "attack_vs": "Force", + "attack_damage": "2d10+4", + "counterattack": "2d10+4", + "qualities": ["Special"], + "description": ( + "During Relocate Asset: can move to locations normally prohibited for military, " + "as if it had Subtle. It is not actually subtle." + ), + "special_key": "invincible_legion_forced_entry", + }, +] + +# --------------------------------------------------------------------------- +# Wealth Assets (стр. 332–333 WWN) +# --------------------------------------------------------------------------- + +WEALTH_ASSETS: list[dict] = [ + # Tier 1 + { + "name": "Armed Guards", + "attribute": "Wealth", "tier_required": 1, "cost": 1, "hp_max": 3, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Force", + "attack_damage": "1d3", + "counterattack": "1d4", + "qualities": [], + "description": "Hired caravan guards and bodyguards.", + "special_key": None, + }, + { + "name": "Cooperative Businesses", + "attribute": "Wealth", "tier_required": 1, "cost": 1, "hp_max": 2, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d4-1", + "counterattack": None, + "qualities": ["Subtle", "Special"], + "description": ( + "If any other faction attempts to create an asset in same location, " + "cost increases by 1 Treasure. Penalty stacks." + ), + "special_key": "cooperative_businesses_price_hike", + }, + { + "name": "Farmers", + "attribute": "Wealth", "tier_required": 1, "cost": 2, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d4", + "qualities": ["Action"], + "description": ( + "Once per turn as free action: roll 1d6; on 5+ gain 1 Treasure." + ), + "special_key": "farmers_income", + }, + { + "name": "Front Merchant", + "attribute": "Wealth", "tier_required": 1, "cost": 2, "hp_max": 3, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d4", + "counterattack": "1d4-1", + "qualities": ["Subtle"], + "description": ( + "On successful Attack: target faction loses 1 Treasure (if any), " + "Front Merchant's owner gains it. Once per turn." + ), + "special_key": "front_merchant_steal", + }, + # Tier 2 + { + "name": "Caravan", + "attribute": "Wealth", "tier_required": 2, "cost": 5, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d4", + "counterattack": None, + "qualities": ["Action"], + "description": ( + "Free action once per turn: spend 1 Treasure to move itself and " + "one other asset in same place to new location within one move." + ), + "special_key": "caravan_move", + }, + { + "name": "Dragomans", + "attribute": "Wealth", "tier_required": 2, "cost": 4, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d4", + "qualities": ["Subtle", "Special"], + "description": ( + "Faction taking Expand Influence in same location rolls extra die on all checks. " + "Free action once per turn: this asset can move." + ), + "special_key": "dragomans_expand_bonus", + }, + { + "name": "Pleaders", + "attribute": "Wealth", "tier_required": 2, "cost": 6, "hp_max": 4, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Wealth", + "attack_damage": "2d4", + "counterattack": "1d6", + "qualities": ["Special"], + "description": ( + "Can turn local laws against enemies. Cannot Attack or inflict Counterattack " + "damage on Force assets." + ), + "special_key": "pleaders_no_force", + }, + { + "name": "Worker Mob", + "attribute": "Wealth", "tier_required": 2, "cost": 4, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Force", + "attack_damage": "1d4+1", + "counterattack": "1d4", + "qualities": [], + "description": "Organized brutal laborers for disciplining enemies.", + "special_key": None, + }, + # Tier 3 + { + "name": "Ancient Mechanisms", + "attribute": "Wealth", "tier_required": 3, "cost": 8, "hp_max": 4, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Special"], + "description": ( + "When an asset in same location rolls to make a profit (Farmers, Manufactory), " + "roll the die twice and take the better result." + ), + "special_key": "ancient_mechanisms_reroll", + }, + { + "name": "Arcane Laboratory", + "attribute": "Wealth", "tier_required": 3, "cost": 6, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Special"], + "description": ( + "Faction's overall Magic is counted as one step higher for creating assets " + "in same location. Multiple labs stack." + ), + "special_key": "arcane_lab_magic_boost", + }, + { + "name": "Free Company", + "attribute": "Wealth", "tier_required": 3, "cost": 8, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Force", + "attack_damage": "2d4+2", + "counterattack": "1d6", + "qualities": ["Action", "Special"], + "description": ( + "Free action once per turn: move itself. " + "Costs 1 Treasure upkeep per turn; if unpaid roll 1d6: 1–3 lost, 4–6 goes rogue." + ), + "special_key": "free_company_upkeep", + }, + { + "name": "Manufactory", + "attribute": "Wealth", "tier_required": 3, "cost": 8, "hp_max": 4, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "1d4", + "qualities": ["Action"], + "description": ( + "Once per turn as free action: roll 1d6: " + "1 = lose 1 Treasure, 2–5 = gain 1 Treasure, 6 = gain 2 Treasure. " + "If Treasure lost and none available, asset is lost." + ), + "special_key": "manufactory_gamble", + }, + # Tier 4 + { + "name": "Healers", + "attribute": "Wealth", "tier_required": 4, "cost": 12, "hp_max": 8, + "magic_required": "None", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": ["Action"], + "description": ( + "When an asset within one move is destroyed by Force attack: " + "pay half its purchase cost (rounded up) to instantly restore it with 1 HP. " + "Cannot restore Bases of Influence." + ), + "special_key": "healers_revive", + }, + { + "name": "Monopoly", + "attribute": "Wealth", "tier_required": 4, "cost": 8, "hp_max": 12, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d6", + "counterattack": "1d6", + "qualities": ["Action"], + "description": ( + "Once per turn as free action: target an asset in same location; " + "that asset's owner must pay 1 Treasure to owning faction or lose the asset." + ), + "special_key": "monopoly_extort", + }, + { + "name": "Occult Countermeasures", + "attribute": "Wealth", "tier_required": 4, "cost": 10, "hp_max": 8, + "magic_required": "Low", + "attack_attribute": "Wealth", "attack_vs": "Cunning", + "attack_damage": "2d10", + "counterattack": "1d10", + "qualities": ["Special"], + "description": ( + "Can only Attack or Counterattack assets that require at least Low Magic to purchase." + ), + "special_key": "occult_countermeasures_magic_only", + }, + { + "name": "Usurers", + "attribute": "Wealth", "tier_required": 4, "cost": 12, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d10", + "counterattack": None, + "qualities": ["Action"], + "description": ( + "For each unit of Usurers owned: Treasure cost of buying assets may be decreased " + "by 2 (to minimum half cost). Each use inflicts 1d4 damage on Usurers." + ), + "special_key": "usurers_discount", + }, + # Tier 5 + { + "name": "Mad Genius", + "attribute": "Wealth", "tier_required": 5, "cost": 6, "hp_max": 2, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Cunning", + "attack_damage": "1d6", + "counterattack": None, + "qualities": ["Action"], + "description": ( + "Free action once per turn: move. " + "Free action once per turn: sacrifice to treat Magic in its location as High " + "for purpose of buying one asset." + ), + "special_key": "mad_genius_magic_sacrifice", + }, + { + "name": "Smuggling Fleet", + "attribute": "Wealth", "tier_required": 5, "cost": 12, "hp_max": 6, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Force", + "attack_damage": "2d6", + "counterattack": None, + "qualities": ["Subtle", "Action"], + "description": ( + "Once per turn as free action: move itself and any one asset at current location " + "to any water-accessible location within one move. Moved asset gains Subtle until used." + ), + "special_key": "smuggling_fleet_move", + }, + { + "name": "Supply Interruption", + "attribute": "Wealth", "tier_required": 5, "cost": 10, "hp_max": 8, + "magic_required": "None", + "attack_attribute": "Cunning", "attack_vs": "Wealth", + "attack_damage": "1d6", + "counterattack": None, + "qualities": ["Subtle", "Action"], + "description": ( + "Free action once per turn: Cunning vs Wealth check against asset in same location. " + "On success: owner must sacrifice Treasure equal to half target's purchase cost, " + "or asset is disabled until paid." + ), + "special_key": "supply_interruption_disable", + }, + # Tier 6 + { + "name": "Economic Disruption", + "attribute": "Wealth", "tier_required": 6, "cost": 25, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "2d6", + "counterattack": None, + "qualities": ["Subtle", "Action"], + "description": "Free action once per turn: move itself without cost.", + "special_key": "economic_disruption_free_move", + }, + { + "name": "Merchant Prince", + "attribute": "Wealth", "tier_required": 6, "cost": 20, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "2d8", + "counterattack": "1d8", + "qualities": ["Action"], + "description": ( + "Free action once per turn before buying asset in same location: " + "Merchant Prince takes 1d4 damage, purchased asset costs 1d8 less " + "(to minimum half normal price)." + ), + "special_key": "merchant_prince_discount", + }, + { + "name": "Trade Company", + "attribute": "Wealth", "tier_required": 6, "cost": 15, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "2d6", + "counterattack": "1d6", + "qualities": ["Action"], + "description": ( + "Free action once per turn: accept 1d4 damage to earn 1d6-1 Treasure." + ), + "special_key": "trade_company_risk", + }, + # Tier 7 + { + "name": "Ancient Workshop", + "attribute": "Wealth", "tier_required": 7, "cost": 25, "hp_max": 16, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": None, + "qualities": [], + "description": ( + "Free action once per turn: take 1d6 damage and gain 1d6 Treasure." + ), + "special_key": "ancient_workshop_produce", + }, + { + "name": "Lead or Silver", + "attribute": "Wealth", "tier_required": 7, "cost": 20, "hp_max": 10, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "2d10", + "counterattack": "2d8", + "qualities": [], + "description": ( + "If Attack reduces enemy asset to 0 HP: owner may immediately pay " + "half target's purchase cost to claim it, reviving with 1 HP." + ), + "special_key": "lead_or_silver_capture", + }, + { + "name": "Transport Network", + "attribute": "Wealth", "tier_required": 7, "cost": 15, "hp_max": 5, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Wealth", + "attack_damage": "1d12", + "counterattack": None, + "qualities": ["Action"], + "description": ( + "Free action: spend 1 Treasure to move any friendly asset from within " + "two moves to any location within one move of either target or Network." + ), + "special_key": "transport_network_relay", + }, + # Tier 8 + { + "name": "Golden Prosperity", + "attribute": "Wealth", "tier_required": 8, "cost": 40, "hp_max": 30, + "magic_required": "Medium", + "attack_attribute": None, "attack_vs": None, + "attack_damage": None, + "counterattack": "2d10", + "qualities": [], + "description": ( + "Each turn as free action: gain 1d6 Treasure usable only to repair damaged assets. " + "Unspent Treasure from this ability is lost." + ), + "special_key": "golden_prosperity_repair_fund", + }, + { + "name": "Hired Legion", + "attribute": "Wealth", "tier_required": 8, "cost": 30, "hp_max": 20, + "magic_required": "None", + "attack_attribute": "Wealth", "attack_vs": "Force", + "attack_damage": "2d10+4", + "counterattack": "2d10", + "qualities": ["Action", "Special"], + "description": ( + "Free action once per turn: move itself. " + "Costs 2 Treasure upkeep per turn; if unpaid goes rogue as Free Company. " + "Cannot be voluntarily sold or disbanded." + ), + "special_key": "hired_legion_upkeep", + }, +] + +# --------------------------------------------------------------------------- +# Объединённый справочник и вспомогательные функции +# --------------------------------------------------------------------------- + +ALL_ASSETS: list[dict] = CUNNING_ASSETS + FORCE_ASSETS + WEALTH_ASSETS + +# Индекс по имени для быстрого поиска O(1) +_ASSET_INDEX: dict[str, dict] = {a["name"]: a for a in ALL_ASSETS} + +# Числовые уровни magic для сравнения +MAGIC_LEVELS: dict[str, int] = { + "None": 0, + "Low": 1, + "Medium": 2, + "High": 3, +} + + +def get_asset(name: str) -> Optional[dict]: + """ + Возвращает определение актива по точному имени или None. + + Поиск регистрозависимый — имена активов уникальны и зафиксированы. + """ + return _ASSET_INDEX.get(name) + + +def get_assets_by_attribute(attribute: str) -> list[dict]: + """ + Возвращает все активы для указанного атрибута. + + attribute — "Cunning" | "Force" | "Wealth" + """ + return [a for a in ALL_ASSETS if a["attribute"] == attribute] + + +def get_available_assets( + faction_fm: dict, + location_wikilink: str, +) -> list[dict]: + """ + Возвращает список активов доступных фракции для покупки прямо сейчас. + + Проверяет все условия WWN: + 1. faction.attribute >= asset.tier_required + 2. faction.magic >= asset.magic_required + 3. faction.treasure >= asset.cost + 4. Текущее количество активов этого атрибута < значение атрибута + (лимит: не более Force Force-активов, не более Wealth Wealth-активов и т.д.) + 5. Фракция имеет Base of Influence в location_wikilink + 6. У фракции ещё нет актива с таким именем + + faction_fm — frontmatter фракции из get_faction() + location_wikilink — '[[Waterdeep]]' — место где есть BoI + """ + import re as _re + + def _norm(s: str) -> str: + return _re.sub(r'^\[\[|\]\]$', '', s).split('|')[0].strip().lower() + + loc_norm = _norm(location_wikilink) + + # Проверяем наличие BoI в локации + has_boi = any( + a.get("is_base_of_influence") and _norm(a.get("location", "")) == loc_norm + for a in faction_fm.get("assets", []) + ) + if not has_boi: + return [] + + # Текущие активы фракции + owned = faction_fm.get("assets", []) + owned_names = {a["name"] for a in owned} + + # Считаем сколько активов каждого атрибута уже есть + attr_counts: dict[str, int] = {"Cunning": 0, "Force": 0, "Wealth": 0} + for a in owned: + attr = a.get("attribute") + if attr in attr_counts: + attr_counts[attr] += 1 + + faction_magic_level = MAGIC_LEVELS.get(faction_fm.get("magic", "None"), 0) + treasure = faction_fm.get("treasure", 0) + + result = [] + for asset_def in ALL_ASSETS: + attr = asset_def["attribute"] + tier_req = asset_def["tier_required"] + + # Условие 1: атрибут достаточен + if faction_fm.get(attr.lower(), 0) < tier_req: + continue + + # Условие 2: magic достаточен + asset_magic_level = MAGIC_LEVELS.get(asset_def["magic_required"], 0) + if faction_magic_level < asset_magic_level: + continue + + # Условие 3: хватает Treasure + if treasure < asset_def["cost"]: + continue + + # Условие 4: не превышен лимит активов атрибута + attr_limit = faction_fm.get(attr.lower(), 0) + if attr_counts.get(attr, 0) >= attr_limit: + continue + + # Условие 5: BoI уже проверен выше + + # Условие 6: актив ещё не куплен + if asset_def["name"] in owned_names: + continue + + result.append(asset_def) + + return result \ No newline at end of file diff --git a/faction_turns/wwn_mechanics.py b/faction_turns/wwn_mechanics.py new file mode 100644 index 0000000..1eecdc6 --- /dev/null +++ b/faction_turns/wwn_mechanics.py @@ -0,0 +1,499 @@ +""" +wwn_mechanics.py — механика системы фракций WWN (Worlds Without Number). + +Содержит все расчётные формулы и таблицы из книги: + - Расчёт hp_max фракции по атрибутам + - Расчёт дохода за ход (Treasure income) + - Таблица стоимости повышения атрибутов (XP) + - Проверка лимитов активов + - Расчёт апкипа за превышение лимитов + - Логика faction goals (цели фракций) + - Вспомогательные функции для propose и resolve тулов +""" + +import math +from typing import Optional +from wwn_assets_data import MAGIC_LEVELS, get_asset + +# --------------------------------------------------------------------------- +# Таблицы WWN (стр. 327) +# --------------------------------------------------------------------------- + +# hp_value[attribute_rating] = HP contribution +HP_VALUE: dict[int, int] = { + 1: 1, + 2: 2, + 3: 4, + 4: 6, + 5: 9, + 6: 12, + 7: 16, + 8: 20, +} + +# XP cost to raise attribute FROM current level TO current+1 +# Key = текущее значение атрибута, Value = стоимость повышения до следующего +XP_COST_TO_RAISE: dict[int, int] = { + 1: 2, + 2: 4, + 3: 6, + 4: 9, + 5: 12, + 6: 16, + 7: 20, +} + +# --------------------------------------------------------------------------- +# Расчёт HP фракции +# --------------------------------------------------------------------------- + +def calc_hp_max(force: int, wealth: int, cunning: int) -> int: + """ + Считает максимальные HP фракции по таблице WWN (стр. 327). + + HP = hp_value(Force) + hp_value(Wealth) + hp_value(Cunning) + + Примеры: + Force 2, Wealth 4, Cunning 5 → 2 + 6 + 9 = 17 + Force 3, Wealth 3, Cunning 3 → 4 + 4 + 4 = 12 + """ + return ( + HP_VALUE.get(force, 0) + + HP_VALUE.get(wealth, 0) + + HP_VALUE.get(cunning, 0) + ) + + +# --------------------------------------------------------------------------- +# Расчёт дохода +# --------------------------------------------------------------------------- + +def calc_income(wealth: int, force: int, cunning: int) -> int: + """ + Считает Treasure income за один faction turn (стр. 324 WWN). + + Income = ceil(Wealth/2 + (Force + Cunning)/4) + + Примеры: + Wealth 4, Force 2, Cunning 5 → ceil(2 + 1.75) = 4 + Wealth 2, Force 1, Cunning 1 → ceil(1 + 0.5) = 2 + """ + return math.ceil(wealth / 2 + (force + cunning) / 4) + + +# --------------------------------------------------------------------------- +# Апкип активов +# --------------------------------------------------------------------------- + +def calc_asset_upkeep(faction_fm: dict) -> dict: + """ + Рассчитывает апкип фракции за превышение лимитов активов (стр. 325 WWN). + + Правило: фракция не может иметь больше Force/Wealth/Cunning активов + чем её соответствующий атрибут. За каждый лишний актив платится 1 Treasure/ход. + + Также считает обязательный апкип для Free Company (1 Treasure) и + Hired Legion (2 Treasure). + + Возвращает словарь: + { + "excess_cunning": int, количество лишних Cunning-активов + "excess_force": int, + "excess_wealth": int, + "free_company_count": int, + "hired_legion_count": int, + "total_upkeep": int, суммарный Treasure к оплате + "excess_assets": list[str] имена лишних активов (для уведомления LLM) + } + """ + owned = faction_fm.get("assets", []) + + # Считаем активы по атрибутам (BoI не считается в лимит) + attr_counts: dict[str, list[str]] = {"Cunning": [], "Force": [], "Wealth": []} + free_company_count = 0 + hired_legion_count = 0 + + for a in owned: + if a.get("is_base_of_influence"): + continue + attr = a.get("attribute") + if attr in attr_counts: + attr_counts[attr].append(a["name"]) + if a["name"] == "Free Company": + free_company_count += 1 + if a["name"] == "Hired Legion": + hired_legion_count += 1 + + # Лимиты + limits = { + "Cunning": faction_fm.get("cunning", 0), + "Force": faction_fm.get("force", 0), + "Wealth": faction_fm.get("wealth", 0), + } + + excess_assets: list[str] = [] + excess: dict[str, int] = {} + for attr, asset_names in attr_counts.items(): + over = max(0, len(asset_names) - limits[attr]) + excess[attr] = over + if over > 0: + # Лишние — последние в списке (произвольный порядок) + excess_assets.extend(asset_names[-over:]) + + total_upkeep = ( + excess["Cunning"] + + excess["Force"] + + excess["Wealth"] + + free_company_count * 1 + + hired_legion_count * 2 + ) + + return { + "excess_cunning": excess["Cunning"], + "excess_force": excess["Force"], + "excess_wealth": excess["Wealth"], + "free_company_count": free_company_count, + "hired_legion_count": hired_legion_count, + "total_upkeep": total_upkeep, + "excess_assets": excess_assets, + } + + +# --------------------------------------------------------------------------- +# Repair Asset +# --------------------------------------------------------------------------- + +def calc_repair_heal(faction_fm: dict, asset_attribute: str, application_number: int) -> dict: + """ + Считает параметры одного применения Repair Asset (стр. 326 WWN). + + Правило: + 1-е применение на актив: cost=1 Treasure, heal=ceil(attr/2) + 2-е применение на тот же актив: cost=2 Treasure, heal=ceil(attr/2) + 3-е: cost=3 и т.д. + + asset_attribute — "Force" | "Wealth" | "Cunning" + application_number — порядковый номер применения на этот актив за ход (1, 2, 3...) + + Возвращает {"cost": int, "heal": int} + """ + attr_value = faction_fm.get(asset_attribute.lower(), 0) + heal = math.ceil(attr_value / 2) + return {"cost": application_number, "heal": heal} + + +def calc_faction_repair_heal(faction_fm: dict) -> dict: + """ + Считает параметры починки HP самой фракции (стр. 326 WWN). + + Правило: один раз за ход, 1 Treasure, + лечит ceil((highest_attr + lowest_attr) / 2). + + Возвращает {"cost": 1, "heal": int, "highest_attr": str, "lowest_attr": str} + """ + attrs = { + "force": faction_fm.get("force", 0), + "wealth": faction_fm.get("wealth", 0), + "cunning": faction_fm.get("cunning", 0), + } + highest = max(attrs, key=lambda k: attrs[k]) + lowest = min(attrs, key=lambda k: attrs[k]) + heal = math.ceil((attrs[highest] + attrs[lowest]) / 2) + return { + "cost": 1, + "heal": heal, + "highest_attr": highest, + "lowest_attr": lowest, + } + + +# --------------------------------------------------------------------------- +# Expand Influence +# --------------------------------------------------------------------------- + +def calc_expand_influence_cost(desired_hp: int) -> int: + """ + Считает стоимость создания нового Base of Influence (стр. 326 WWN). + + Правило: 1 Treasure за каждый HP нового BoI. + desired_hp — желаемый hp_max нового BoI. + """ + return desired_hp + + +# --------------------------------------------------------------------------- +# Faction Goals и XP +# --------------------------------------------------------------------------- + +def calc_xp_cost_to_raise(current_value: int) -> Optional[int]: + """ + Возвращает стоимость в XP для повышения атрибута с current_value до current_value+1. + + Возвращает None если атрибут уже на максимуме (8). + + Таблица из WWN стр. 327: + 1→2: 2 XP + 2→3: 4 XP + 3→4: 6 XP + 4→5: 9 XP + 5→6: 12 XP + 6→7: 16 XP + 7→8: 20 XP + """ + if current_value >= 8: + return None + return XP_COST_TO_RAISE.get(current_value) + + +def get_available_upgrades(faction_fm: dict) -> list[dict]: + """ + Возвращает список атрибутов которые фракция может повысить прямо сейчас. + + Каждый элемент: + { + "attribute": "cunning", + "current_value": 5, + "next_value": 6, + "xp_cost": 12, + "current_xp": 15, + "can_afford": True + } + """ + current_xp = faction_fm.get("xp", 0) + result = [] + + for attr in ("force", "wealth", "cunning"): + current = faction_fm.get(attr, 0) + cost = calc_xp_cost_to_raise(current) + if cost is None: + continue + result.append({ + "attribute": attr, + "current_value": current, + "next_value": current + 1, + "xp_cost": cost, + "current_xp": current_xp, + "can_afford": current_xp >= cost, + }) + + return result + + +# --------------------------------------------------------------------------- +# Faction Tags — extra die flags +# --------------------------------------------------------------------------- + +def get_attack_extra_die_flags( + attacker_fm: dict, + defender_fm: dict, + attack_attribute: str, + asset_magic_required: str = "None", +) -> tuple[bool, bool]: + """ + Определяет флаги extra die для attribute check на основе faction tags (стр. 325 WWN). + + WWN-правила: + Machiavellian → extra die для всех Cunning checks (Cunning должен быть высшим) + Martial → extra die для всех Force checks + Rich → extra die для всех Wealth checks + Antimagical (у защитника) → атаки с Medium+ Magic: атакующий берёт ХУДШИЙ из 2d10 + Zealot (у атакующего) → при провале может перебросить, но получает counterattack + + Возвращает (attacker_extra_die: bool, defender_extra_die: bool). + Antimagical кодируется как defender_extra_die=True И отдельно помечается + флагом antimagical_penalty в вызывающем коде. + """ + def has_tag(fm: dict, tag: str) -> bool: + return tag in fm.get("faction_tags", []) + + attacker_extra = False + defender_extra = False + + if attack_attribute == "Cunning": + if has_tag(attacker_fm, "Machiavellian"): + attacker_extra = True + if has_tag(defender_fm, "Machiavellian"): + defender_extra = True + + elif attack_attribute == "Force": + if has_tag(attacker_fm, "Martial"): + attacker_extra = True + if has_tag(defender_fm, "Martial"): + defender_extra = True + + elif attack_attribute == "Wealth": + if has_tag(attacker_fm, "Rich"): + attacker_extra = True + if has_tag(defender_fm, "Rich"): + defender_extra = True + + # Antimagical: если у защитника есть тег и атака требует Medium+ magic, + # атакующий бросает с ХУДШИМ результатом (моделируется как penalty, не bonus) + # Возвращаем как отдельный флаг в расширенной версии + return attacker_extra, defender_extra + + +def has_antimagical_penalty(defender_fm: dict, asset_magic_required: str) -> bool: + """ + Проверяет применяется ли штраф Antimagical тега (стр. 325 WWN). + + Antimagical: Assets that require Medium or higher Magic roll all attribute + checks twice against this faction during an Attack and take the worst roll. + """ + if "Antimagical" not in defender_fm.get("faction_tags", []): + return False + return MAGIC_LEVELS.get(asset_magic_required, 0) >= MAGIC_LEVELS["Medium"] + + +# --------------------------------------------------------------------------- +# Massive tag +# --------------------------------------------------------------------------- + +def check_massive_auto_win( + attacker_fm: dict, + defender_fm: dict, + attribute: str, +) -> Optional[bool]: + """ + Проверяет автоматическую победу по тегу Massive (стр. 325 WWN). + + Massive: faction automatically wins attribute checks if its attribute + is more than twice as big as the opposing side's, unless the other side + is also Massive. + + Возвращает: + True — атакующий автоматически побеждает + False — защитник автоматически побеждает + None — броски нужны (нет автопобеды) + """ + def has_massive(fm: dict) -> bool: + return "Massive" in fm.get("faction_tags", []) + + a_val = attacker_fm.get(attribute.lower(), 0) + d_val = defender_fm.get(attribute.lower(), 0) + + a_massive = has_massive(attacker_fm) + d_massive = has_massive(defender_fm) + + if a_massive and not d_massive and a_val > d_val * 2: + return True + if d_massive and not a_massive and d_val > a_val * 2: + return False + return None + + +# --------------------------------------------------------------------------- +# Форматирование для вывода в Markdown +# --------------------------------------------------------------------------- + +def format_faction_status(faction_fm: dict, faction_name: str) -> str: + """ + Форматирует статус фракции в одну строку для вывода в propose-промпте. + + Пример: + "Force 2 | Wealth 4 | Cunning 5 | Magic: Medium | Treasure: 10 | HP: 17/17" + """ + locs_list = faction_fm.get("locations", []) + locs_str = ", ".join(locs_list) if locs_list else "нет влияния" + + return ( + f"Force {faction_fm.get('force', '?')} | " + f"Wealth {faction_fm.get('wealth', '?')} | " + f"Cunning {faction_fm.get('cunning', '?')} | " + f"Magic: {faction_fm.get('magic', 'None')} | " + f"Treasure: {faction_fm.get('treasure', 0)} | " + f"HP: {faction_fm.get('hp', '?')}/{faction_fm.get('hp_max', '?')}" + f"Locs: [{locs_str}]" + ) + + +def format_asset_line(asset: dict, is_base: bool = False) -> str: + """ + Форматирует одну строку описания актива для вывода в propose-промпте. + + Пример для обычного актива: + " - Organization Moles [C5, HP 10/10, Stealthed ✓] C vs C / 2d6 dmg" + Пример для BoI: + " - BoI [[Waterdeep]] [HP 17/17]" + """ + if is_base: + hp = asset.get("hp", "?") + hp_max = asset.get("hp_max", "?") + loc = asset.get("location", "?") + return f" - **BoI** {loc} [HP {hp}/{hp_max}]" + + name = asset.get("name", "?") + attr = asset.get("attribute", "?")[0] # C/F/W + tier = asset.get("tier_required", "?") + hp = asset.get("hp", "?") + hp_max = asset.get("hp_max", "?") + stealthed = " 🥷Stealthed" if asset.get("stealthed") else "" + loc = asset.get("location", "") + loc_str = f" @ {loc}" if loc else "" + + # Атака + atk_attr = asset.get("attack_attribute", "") + atk_vs = asset.get("attack_vs", "") + atk_dmg = asset.get("attack_damage", "") + if atk_attr and atk_vs and atk_dmg: + atk_str = f" | {atk_attr[0]} vs {atk_vs[0]} / {atk_dmg} dmg" + else: + atk_str = " | no attack" + + ctr = asset.get("counterattack", "") + ctr_str = f" | ctr {ctr}" if ctr else "" + + return ( + f" - **{name}** [{attr}{tier}, HP {hp}/{hp_max}{stealthed}]" + f"{atk_str}{ctr_str}{loc_str}" + ) + + +# --------------------------------------------------------------------------- +# Тест +# --------------------------------------------------------------------------- + +if __name__ == "__main__": + print("=== Тест wwn_mechanics.py ===\n") + + print("--- calc_hp_max ---") + cases = [(2, 4, 5), (3, 3, 3), (7, 6, 5), (1, 1, 1), (8, 8, 8)] + for f, w, c in cases: + hp = calc_hp_max(f, w, c) + print(f" Force {f}, Wealth {w}, Cunning {c} → HP max {hp}") + + print("\n--- calc_income ---") + for w, f, c in [(4, 2, 5), (2, 1, 1), (8, 7, 6)]: + inc = calc_income(w, f, c) + print(f" Wealth {w}, Force {f}, Cunning {c} → Income {inc}") + + print("\n--- calc_xp_cost_to_raise ---") + for v in range(1, 9): + cost = calc_xp_cost_to_raise(v) + print(f" Raise from {v} → {v+1}: {cost} XP") + + print("\n--- calc_repair_heal ---") + test_fm = {"force": 4, "wealth": 3, "cunning": 5} + for attr, app in [("Force", 1), ("Force", 2), ("Cunning", 1)]: + r = calc_repair_heal(test_fm, attr, app) + print(f" Repair {attr} (application #{app}): cost={r['cost']} Treasure, heal={r['heal']} HP") + + print("\n--- calc_asset_upkeep ---") + fm_over = { + "force": 2, "wealth": 3, "cunning": 2, + "assets": [ + {"name": "Infantry", "attribute": "Force"}, + {"name": "Cavalry", "attribute": "Force"}, + {"name": "Knights", "attribute": "Force"}, # лишний + {"name": "Front Merchant", "attribute": "Wealth"}, + {"name": "Farmers", "attribute": "Wealth"}, + {"name": "Free Company", "attribute": "Wealth"}, + {"name": "Smugglers", "attribute": "Cunning"}, + {"name": "Spymaster", "attribute": "Cunning"}, + {"name": "Blackmail", "attribute": "Cunning"}, # лишний + ] + } + upkeep = calc_asset_upkeep(fm_over) + print(f" Excess: {upkeep}") + + print("\n=== Готово ===") \ No newline at end of file diff --git a/generate_encounter/elemental_planes_description.txt b/generate_encounter/elemental_planes_description.txt new file mode 100644 index 0000000..a8c0b3d --- /dev/null +++ b/generate_encounter/elemental_planes_description.txt @@ -0,0 +1,242 @@ + +Elemental Plane of Air +The Elemental Plane of Air was an Inner Plane[9] or Elemental Plane[14] of the Great Wheel cosmology and the World Tree cosmology models. After the Spellplague, the Elemental Plane of Air collapsed into the Elemental Chaos, mixing with all the other Inner Planes.[15] Air is one of the four elements and two energies that make up the known universe and therefore of keen interest to cosmologists as well as spell casters that wish to harness and wield the raw power of the elements.[16] + + 1 Cosmology + 2 Description + 2.1 Notable Locations + 3 Inhabitants + 4 Realms + 5 Appendix + 5.1 Notes + 5.2 Appearances + 5.2.1 Adventures + 5.2.2 Novels & Short Stories + 5.2.3 Video Games + 5.2.4 Board Games + 5.2.5 Organized Play & Licensed Adventures + 5.3 Further Reading + 5.4 External Links + 5.5 References + 5.6 Connections + +Cosmology[] + +According to the Great Wheel cosmology model, the Elemental Plane of Air could be reached via the Ethereal Plane, an adjacent elemental plane, or by an elemental vortex.[9] If traveling through the Deep Ethereal, a blue curtain of vaporous color indicated the boundary of the Plane of Air's Border Ethereal region. Once in the Border Ethereal, a traveler could observe the Plane of Air and be detected by its denizens.[17] Using the spherical model, this plane was adjacent to the para-elemental planes of Ice and Smoke and the quasi-elemental planes of Lightning and Vacuum.[10] Elemental vortices could occur wherever a high concentration or nearly pure form of an element was found, and could be temporary or permanent. A vortex to the Plane of Air could manifest in the eye of a hurricane or in the clean, crisp air atop a high mountain, for example.[3] There was a vortex to the Elemental Plane of Water called the Waterspout not far from the djinn city/palace called the Citadel of Ice and Steel.[18] Temporary gates could be created by the plane shift [19] spell or the abilities of high level druids.[9][20] + +In the World Tree cosmology model, the Astral Plane connected all planes with the Prime Material Plane and the Ethereal Plane was only used for journeying between locations on the Prime.[21] The Elemental Plane of Air was not connected or coterminous with any other elemental plane.[22] The spell astral projection [23][24] could be used to reach the Plane of Air via a pale blue color pool.[25] Additionally, the gate [26][27] and plane shift [23][28] spells could be used to open a temporary portal to this plane. To reach the plane in this manner required a tin fork tuned to the note of A as a spell focus.[29] +Description[] + +The Elemental Plane of Air was filled essentially completely with air but had various impurities that tended to form pockets or bubbles in the otherwise pure atmosphere.[30] Gaseous bubbles included clouds of every type, fog, steam, mist, smoke, poisonous clouds and acidic vapors; also the rare intrusion of elemental fire which is flame without fuel. Liquid impurities were usually water or water-based and tended to form floating spheres when not buffeted or frozen by the winds.[18] Solid matter could be found here, from dust, ash, salt, or sand, to chunks of earth approaching the size of a large asteroid. The larger chunks were often brought into the plane by intelligent beings and were very likely to be inhabited or formerly inhabited.[18][31] As described by the Great Wheel model, a traveler with a guide could approach the boundaries with the para- and quasi-elemental planes: where the whiff of smoke eventually became hot, thick, and choking, or the tang of ozone soon lead to heavy storms with arcs of lightning in all directions, or the temperature dropped until flakes of snow, crystals of ice, and lumps of hail finally became a wall of ice, or the light faded to gray and the air thinned out until there was nothing.[18][32] + +If you had to describe the Elemental Plane of Air in a single word, it would have been "blue". The very substance of the plane seemed to radiate the magnificent sapphire hue of a clear summer day on the Prime Material Plane.[30] Visibility was twice what the best conditions on the Prime could allow unless, of course, something obscured vision.[33] Weather was the primary natural hazard in this plane. The winds were normally light to moderately strong throughout the plane but could intensify into tornadoes, maelstroms, and hurricanes with powerful lightning. These extreme weather events were common,[34] and when other elements got caught up in the storm, it could produce pounding rain, blinding snow, pelting hail, freezing sleet, and storms of choking smoke, biting sand, burning ash, scalding steam, or searing fire.[31] The worst of these was the maelstrom, a toroid-shaped tornado that could last for decades.[18][35] Being caught in one was like being in a violent dust storm and death was only a matter of minutes away unless the victim was able to achieve great speed (escape velocity),[35] perform an act of great strength[18] or receive outside assistance.[35][18] Spellcasting was impossible within a maelstrom.[18] +Notable Locations[] + + Borealis[18] + Citadel of Ice and Steel[18] + Taifun, Palace of Tempests[18] + +Inhabitants[] +A and inhabited island in the Plane of Air. + +A djinni and inhabited island in the Plane of Air. + +Invisible, and yet the most common denizens of this plane were the elementals themselves[3][36] including aerial servants,[37] invisible stalkers[1][2][38] and wind walkers.[39] Unless magic was employed their outlines were only vaguely visible if dust or debris were caught in their bodies. When made visible, air elementals were usually large wispy beings with aerodynamic bodies and wings, or propelled themselves by forcing air through their bodies and using fins for maneuvering.[2] Others, sometimes called animentals,[36] mimicked the shape of Prime Material animals and monsters.[3] + +Immigrants[note 1] to the Elemental Plane of Air included the djinn,[1][2][34][40] some jann,[2][41] mephits of the air, dust and ice subtypes,[3] and arrowhawks.[1][3] Reported sightings of other creatures included beholders,[3][42] belkers,[1][43] cloud giants,[43][44] devas,[2][45] hippogriffs,[3][46] ildriss,[47] pegasi,[3][48] skriaxit,[18] spectres,[2][49] sphinxes,[2][3][49] sprites,[3][50] sylphs,[18] and vapor rats.[2][51] + + +--- + + +Elemental Plane of Earth +The Elemental Plane of Earth was an Inner Plane[10] or Elemental Plane[16] of the Great Wheel cosmology and the World Tree cosmology models. After the Spellplague, the Elemental Plane of Earth collapsed into the Elemental Chaos, mixing with all the other Inner Planes.[17] Earth is one of the four elements and two energies that make up the known universe and therefore of keen interest to cosmologists.[18] The abundance of large gems and huge ore deposits lured many greedy prospectors to brave the significant dangers of this plane.[2] + + 1 Cosmology + 2 Description + 2.1 Notable Locations + 2.2 Divine Realms + 3 Inhabitants + 4 Appendix + 4.1 Appearances + 4.2 Notes + 4.3 References + 4.4 Connections + +Cosmology[] + +According to the Great Wheel cosmology model, the Elemental Plane of Earth could be reached via the Ethereal Plane, an adjacent elemental plane, or by an elemental vortex.[10] A vortex called the Pale River led to the Elemental Plane of Water and a vortex called the Iron Crucible connected to the Elemental Plane of Fire.[20] If traveling through the Deep Ethereal, a brown curtain of vaporous color indicated the boundary of the Plane of Earth's Border Ethereal region. Once in the Border Ethereal, a traveler could observe the Plane of Earth and be detected by its denizens.[21] Using the spherical model, this plane was adjacent to the para-elemental planes of Ooze and Magma and the quasi-elemental planes of Minerals and Dust.[11] Elemental vortices could occur wherever a high concentration or nearly pure form of an element was found, and could be temporary or permanent. Vortices to the Plane of Earth were nearly always found in the heart of mountain ranges, particularly young ones.[22] Temporary gates could be created by the plane shift [23] spell or the abilities of high level druids.[10][24] + +In the World Tree cosmology model, the Astral Plane connected all planes with the Prime Material Plane and the Ethereal Plane was only used for journeying between locations on the Prime.[25] The Elemental Plane of Earth was not connected or coterminous with any other elemental plane.[26] The spell astral projection [27][28] could be used to reach the Plane of Earth via a moss granite color pool.[29] Additionally, the gate [30][31] and plane shift [27][32] spells could be used to open a temporary portal to this plane, but could be extremely dangerous unless the destination was previously scouted. To reach the Plane of Earth by means of a plane shift spell required a zinc fork tuned to the note of A.[33] + +An unusual ability granted by Moradin to his ardent followers, the Hammers of Moradin, allowed them to use the Earth Plane as a transitive plane much like the shadow walk spell allowed spellcasters to skirt the edge of the Shadow Plane and quickly travel between locations on the Prime Plane.[34] +Description[] + +The Elemental Plane of Earth was an infinite expanse of solid matter pockmarked by bubbles of other elements and riddled with fissures and tunnels created by burrowing creatures or the occasional small mining operation.[22][36] Ensconced in a few of these pockets were trading outposts and the rare hidden wizard fortress.[20] Solid does not imply stationary: the substances of this plane were constantly moving in a slow, grinding motion punctuated by earthquakes from small tremors to massively violent upheavals.[4][37] Open spaces were gradually filled by the relentless shifting[20][36] (or marauding earth elementals)[15] unless action was taken to prevent it. Air could be found in scattered pockets but unbreathable gasses were also present—unprepared travelers lucky enough to arrive in a cavern might slowly asphyxiate while the unlucky quickly suffocated by being buried alive.[36][37] Other pockets of magma, water, ooze, dust, or ash were particularly dangerous for miners if they accidentally breached one of these.[20] No light existed in the Plane of Earth except for rare luminous gems buried in the crushing darkness. Travelers able to pass through stone were effectively blind unless they used magic such as a ring of x-ray vision,[38][39][40] or until their eyes reached an open space where darkvision could operate or a source of light could be produced.[36] Hearing was actually enhanced while encased in earth, to the point where travelers could detect any movement through the rock within a certain radius of their position.[37] + +As described by the Great Wheel model, the solid earth changed in proximity to the para- and quasi-elemental planes. A native guide was necessary to find these border regions and each had their own dangers. Near the Plane of Ooze, more water was present and the rock gradually lost cohesion. Approaching the Plane of Magma the temperature rose until the rock glowed with heat and became viscous. Proximity to the Negative Material plane dessicated the earth and caused it to crumble to dust. Toward the Positive Material plane, veins of ore, crystal, and gems became richer and more prevalent, finally crossing the border to the quasi-elemental plane of Minerals.[41] + +Every type of rock, soil, mineral, metal ore, sand, and dirt could be found here in abundance, ranging from talc soft to marble tough to diamond hard. Mining operations tended to be small and short-lived because the movement of the substance of the plane and intense gravity caused cave-ins, and the native population defended their territory and/or food supply.[22] In addition, there was the unusual problem of where to put the discarded mine tailings.[37] The dao were the only people known to successfully manage large continuous mining operations in the Plane of Earth. They did this in the Great Dismal Delve mercilessly using slave labor to dig and repair earthquake damage.[2][4][42] +Notable Locations[] + + The Great Dismal Delve[2][4][20][42] + The Sevenfold Mazework[43] + The Hidden Fulcrum[44] + The Pale River[45] + The Iron Crucible[45] + The Aviary was a gigantic air-filled cavern inhabitated by a colony of avariel; due to its effective lack of gravity it was a paradise for all who enjoyed flying.[46] + +Divine Realms[] + + Geb of the Mulhorandi pantheon had a realm here called the Caverns under the Stars.[41][47][46] + Grumbar, the Lord of the Earth, Gnarly One, King of the Land Below the Roots, Boss of Earth Elementals,[48][49][50][51][52] was thought to be a mountain-sized earth elemental with god-like powers that rarely granted audiences.[42] His realm was called the Great Mountain.[53] After the Spellplague it was revealed that he was a primordial and he formed a new realm called Root Hold in the Elemental Chaos.[17] + Kabril Ali al-Sara al-Zalazil, Great Khan of the Dao, the Fountain of Wealth, the Perfect Compass, Atamen of the Mountain's Roots, and other titles lived in the Great Dismal Delve in a palace called the Sevenfold Mazework.[20] + Ogremoch, Prince of Evil Earth Creatures,[54] had a citadel called Stonemire[55] atop a large mesa within a huge pocket of vacuum[42] near the paraplane of Magma.[55] + Sunnis, Princess of Good Earth Creatures, resided in a fortress called Sandfall.[55] + +Inhabitants[] +stalked by in the Plane of Earth. + +Adventurers stalked by xorn in the Plane of Earth. + +The matter of the plane itself came to life, with earth elementals being the most numerous creatures on the plane,[2][3][4] with typically blocky, angular bodies covered in sharp edges, ranging from man-sized to mountainous.[42] Other native creatures looked like rough-hewn statues of Prime Material Plane animals and monsters or animated crystalline forms[3] like crysmals.[56] Then there were the alien-looking khargra,[3][57] xorn,[3][4][58] and xaren[3][59] with tri-fold symmetric bodies and a taste for metal. All natives and some creatures with an earth-affinity could move through the plane like a fish through water, the rock flowing around them and closing back up again, leaving no tunnel.[15][note 1] + +Immigrants and visitors to the Elemental Plane of Earth included basilisks (greater),[3][60] chaggrin,[61] the dao,[2][3][4][62] dwarves,[15][63] an occasional blue[4][64] or copper dragon,[4][65] galeb duhr,[20] gargoyles,[15][66] janni,[4][67] lava children,[3][68] mephits of the earth and salt subtypes,[4] the pech,[3][69] sandlings,[3][70] stone giants,[4][71] thoqqua,[4][72] and wraiths.[3][58] + +--- + + +Elemental Plane of Fire +FA-symbol +Elemental Plane of Fire is a Featured Article! It is one of the best articles created by the Forgotten Realms Wiki community. +However, if you can update it or think of a way to further improve it, then please feel free to contribute. +The Elemental Plane of Fire was an Inner Plane[9] or Elemental Plane[15] of the Great Wheel cosmology and the World Tree cosmology models. After the Spellplague, the Elemental Plane of Fire collapsed into the Elemental Chaos, mixing with all the other Inner Planes.[16] Fire is one of the four elements and two energies that make up the known universe[17] and more than any other element has fascinated sentient beings since the beginning of time. The flickering of a candle, the spark of a flint and steel, or the dying embers of a campfire, all have the potential to grow and engulf the world in flame—can a drop of water, a breath of air, or a mote of dust do the same? Elemental fire is pure flame that does not require air or fuel to burn and can take on a solid, liquid, or gaseous state, yet it will ignite and consume anything flammable and unprotected from fire.[14] + + 1 Cosmology + 2 Description + 2.1 City of Brass + 2.2 The Elemental Foundation of Fire + 3 Inhabitants + 4 History + 5 Realms + 6 Connections + 7 Appendix + 7.1 Notes + 7.2 Appearances + 7.2.1 Adventures + 7.2.2 Novels & Short Stories + 7.2.3 Video Games + 7.2.4 Organized Play & Licensed Adventures + 7.3 External links + 7.4 References + 7.5 Connections + +Cosmology[] + +According to the Great Wheel cosmology model, the Elemental Plane of Fire could be reached via the Ethereal Plane, an adjacent elemental plane, or by an elemental vortex.[9] Two known vortices to adjacent elemental planes were the Iron Crucible that led to the Elemental Plane of Earth[18] and a vortex to the Plane of Air atop Jabal Turab, the Mount of Dust.[19] If traveling through the Deep Ethereal, a red curtain of vaporous color indicated the boundary of the Plane of Fire's Border Ethereal region. Once in the Border Ethereal, a traveler could observe the Plane of Fire and be detected by its denizens.[4] Using the spherical model, this plane was adjacent to the para-elemental planes of Smoke and Magma and the quasi-elemental planes of Radiance and Ash.[10] Elemental vortices could occur wherever a high concentration or nearly pure form of an element was found, and could be temporary or permanent. Vortices to the Plane of Fire could often be found in pools of molten lava or the upwelling of magma in active volcanoes.[20] Temporary gates could be created by the plane shift [21] spell or the abilities of high-level druids.[9][22] + +As described by the World Tree cosmology model, the Astral Plane connected all planes with the Prime Material Plane and the Ethereal Plane was only used for journeying between locations on the Prime.[23] The Elemental Plane of Fire was not connected or coterminous with any other elemental plane.[24] The spell astral projection [25][26] could be used to reach the Plane of Fire via a fire opal color pool.[27][note 1] Additionally, the gate [28][29] and plane shift [25][30] spells could be used to open a temporary portal to this plane. To reach the Plane of Fire by means of a plane shift spell required a copper fork tuned to the note of A.[31] +Description[] + +Arriving on the Plane of Fire was like stepping into the flaming maw of an ancient red dragon; if one didn't have protection or immunity from temperatures high enough to melt stone then death was swift.[14][32] The following discussion assumes a visitor and all their clothing and gear had this capability and either did not need to breathe or could compensate for a superheated, often toxic atmosphere that could immolate one from the inside[32][33] (think cloudkill plus incendiary cloud). In general, the more fluid the elemental fire, the hotter it was and the more damage it did to unprotected material.[3] Permanent physical structures were very rare.[32][33] +Efreet and the City of Brass in the Plane of Fire + +Efreet and the City of Brass in the Plane of Fire + +Unlike the other three elemental planes, the Plane of Fire had normal gravity and a landscape, although most of the "ground" was made primarily of loosely packed elemental fire and felt like walking in a swamp of hot coals.[33] The rivers and oceans were filled with a more liquid version of the same stuff and swimming worked normally as a mode of transportation.[32] Non-native flying creatures found the atmosphere thin and therefore did not have their usual speed or maneuverability. Visibility was hampered by the smoke coming off the flames engulfing, but not consuming, nearly every solid, liquid, or gas (and creature) on the plane. What one could see was usually distorted by heat ripples. Geographic features such as hills, mountains, and cliffs did not have a geologic lifespan because even the more solid areas slowly moved like a subterranean magma flow as seen on the Prime Material Plane.[33] While rare, the plane was home to a native plant known as the flame flower.[34] + +If the Plane of Fire had weather, it was of course hot and deadly. Rains of hot ash moved about like thunderstorms, threatening those on or near the ground with hot embers and blinding ash.[3] Those in the air had to watch out for clouds of superheated steam blowing around and condensing scalding water on exposed surfaces. The water quickly evaporated and the cycle began anew.[35] Easier to avoid but just as deadly were the rivers of magma and "firefalls". Matter from other planes either evaporated, burned to ash, or melted into magma. Magma mixed with elemental fire formed a rapidly moving, incredibly hot slurry that coursed around the terrain and occasionally cascaded over a cliff edge to create a firefall, often manifesting an elemental vortex in the spectacular display.[3] The Great Wheel cosmology model explained these hazards and others as pockets of elements from all the other elemental, para-, and quasi-elemental planes that got sucked into the Plane of Fire and cast adrift to face their fate.[36] Cold spots could even be found where it felt like the middle of the Raurin desert at midday.[20] With a guide, a traveler could approach the borders with the other planes, where the smoke finally choked out the fire, or the fire became nothing but cold ash, or the molten earth absorbed the fire, or the radiance ultimately outshone the fire.[37] + +The dangers of the plane could not be overstated, but those that survived the trip saw wonders and beauty at nearly every turn. Flame colors spanned the rainbow, from the vermilion of a forge hearth to the yellow-white of heated iron, from the blues and greens of alchemical reactions to the familiar candle-flame yellows and oranges. The conflagration formed fountains, jets, sheets, rivers, waves, walls, rains, cascades, clouds, swirls, and pits of brilliant incandescence on a scale found nowhere else.[14][38] +City of Brass[] + +One famous refuge from the destructive heat was the City of Brass, home of the efreet. At the will of the grand sultan, the city was protected from the pervasive smoke and flames, and visitors enjoyed unrestricted vision and uncomfortable yet tolerable temperatures,[33][39] but walls and surfaces were still hot enough to burn unprotected flesh on contact.[1] The city sat in a bowl of golden brass 40 miles (64 kilometers) in diameter that floated about the plane[39] or hovered over a huge disk of obsidian that was cracked from the heat.[1][33] Architecture included soaring towers, grand minarets, and everything from tool sheds to palaces made of brass. The treasure vaults of the grand sultan, and his wrath towards any who attempted to acquire even a single piece, were legendary.[33][39] +The Elemental Foundation of Fire[] + +An important feature of the plane was the Elemental Foundation of Fire, one of four magical switches (one in each of the four elemental planes) that when activated caused the Onyx Tower to rise on the Prime Material Plane.[40] +Inhabitants[] +Two efreet in the City of Brass. + +Two efreet in the City of Brass. + +Surprisingly many creatures and races could tolerate and even thrive in the Elemental Plane of Fire. First and foremost were the fire elementals, of course, being constructed directly from the substance of the plane itself. They could assume the form of animals or monsters from the Prime Material Plane,[14] mimic humanoid shape, or create composites with elemental shapes: a lava lion with a flaming mane and charcoal eyes, or a man-shaped torso with fire jets for arms and legs and a tiny tornado of flame for a head, for example. Fire elementals could usually be distinguished by the different colors of flame coming off their bodies, but when standing still they could blend into the background just as a rogue could hide in shadows.[2] Fire bats,[2][41] fire snakes,[42] harginn,[43] phantom stalkers,[2][44] and salamanders[2][45] were also thought to be natives of this plane, but the origins of magmen (or magmin)[3][32][46] and the azer[2][3][47][48] were hotly debated. + +Visitors and immigrants to the Plane of Fire included brass[3][49] and gold dragons;[3][50] the efreet;[3][51] fire giants;[3][52] hell hounds;[3][53] some janni;[3][54] mephits of the fire, magma, and steam varieties;[3][55] pyrohydra;[3][56] rast;[3] and thoqqua.[3][57] Trading missions and diplomacy brought many peoples to the City of Brass, such as the mercane[3] and devils from the Nine Hells.[14] + +The language spoken by the natives was called Ignan and it resembled the hisses and clicks of green wood being consumed by a burning campfire.[14] +History[] + +On the material plane, in the land of Thay in Faerûn on Abeir-Toril in the Year of the Prince, 1357 DR, the tharchion Hargrid Tenslayer and the zulkirs Aznar Thrul and Nevron opened a gate to the Plane of Fire and contacted Fyzzar, a salamander lord, and Sultan Marrake of the efreet, bypassing Kossuth, the Lord of Flames. They offered an alliance, begging their help in conquering coastal cities in exchange for a permanent gate and a foothold in Faerûn in the conquered lands. The greedy elementals accepted, and launched an invasion, rapidly capturing or destroying the cities, before demanding their payment. The Thayans promptly betrayed them, expelling the efreet but missing the salamanders, who retaliated by launching the Salamander War. Aznar Thrul and the clerics of Kossuth persuaded the Firelord to intervene, and he sent his own fire elementals to drive the salamanders out.[58][59][60] +Realms[] + + Kossuth, the Lord of Flames, the Firelord, Tyrant among Fire Elementals, the Fire Tyrant, once had a palace made of elemental fire here,[39][61][62][63][64] called the Crimson Pillar.[65] After the Spellplague, it was revealed that he was a primordial and he created a new realm in the Elemental Chaos called the Undying Pyre.[16] + Amaimon, King of the Azer, had no specific palace but traveled with his court from tower to tower (the azer were marvelous metalworkers and built grand towers scattered about the plane), holding feasts and fetes with dancing.[39][47] + Marrake al-Sidan al-Hariq ben Lazan, Sultan of the Efreet, the Lord of the Flame, the Potentate Incandescent, the Tempering and Eternal Flame of Truth, the Smoldering Dictator, and other titles, lived in his Charcoal Palace in the City of Brass.[19] + Imix, the Prince of Evil Fire Creatures, once dwelled within a tremendous active volcano on this plane in his pyramidic Temple of Ultimate Consumption.[39][66][67] + Zaaman Rul, the Prince of Good Fire Creatures, entrenched himself in his fortress called the Hidden Heart.[68] + +Connections[] + +There were several permanent connections to the Plane of Fire on Toril in the Material Plane. + +In his lair beneath Zhentil Keep, the banelich Stallac Benadi constructed an open, one-way gate to the Elemental Plane of Fire. It was used for disposing of mining rubble and incinerating unused corpses.[69] + +In the lair of the black dragon Harondalbar in the Sunset Mountains, Faren Starlight created a furnace that vented magically to the Plane of Fire. This was used for cooking, heating, and magical experimentation.[70] + +Across the River Agis from the city of Memnon laid the ruins of the ancient efreet city of Memnonnar. Deep beneath these ruins was the Great Brass Gate, a vertical ring of solid brass about 100 feet (30 meters) in diameter, that formed a two-way portal to the Fire Plane. Seepage from this portal filled nearby passages with toxic smoke and heated the surrounding ruins to such a degree that some of the walls glowed.[71] + +--- + + +Elemental Plane of Water +The Elemental Plane of Water was an Inner Plane[9] or Elemental Plane[15] of the Great Wheel cosmology and the World Tree cosmology models. After the Spellplague, the Elemental Plane of Water collapsed into the Elemental Chaos, mixing with all the other Inner Planes.[16] Water is one of the four elements and two energies that make up the known universe and therefore of great interest to cosmologists.[17] This plane was abundant with life: native creatures born of the elemental nature of the plane itself, sentient water-breathing peoples, and most every species of aquatic life that could survive after being sucked through a vortex from their plane of origin.[14] + + 1 Cosmology + 2 Description + 3 Inhabitants + 4 Realms + 5 Appendix + 5.1 Further Reading + 5.2 References + 5.3 Connections + +Cosmology[] +meet a near an in the Plane of Water. + +Adventurers meet a kuo-toan near an elemental vortex in the Plane of Water. + +According to the Great Wheel cosmology model, the Elemental Plane of Water could be reached via the Ethereal Plane, an adjacent elemental plane, or by an elemental vortex.[9] The Pale River vortex on the Elemental Plane of Earth had its source here, and there was a vortex to the Plane of Air called the Bubble Net.[18] If traveling through the Deep Ethereal, a green curtain of vaporous color indicated the boundary of the Plane of Water's Border Ethereal region. Once in the Border Ethereal, a traveler could observe the Plane of Water and be detected by its denizens.[19] Using the spherical model, this plane was adjacent to the para-elemental planes of Ice and Ooze and the quasi-elemental planes of Steam and Salt.[10] Elemental vortices could occur wherever a high concentration or nearly pure form of an element was found, and could be temporary or permanent. Vortices to the Plane of Water could often be found in the deepest parts of the seas and oceans, in clear underground lakes, or as surface whirlpools in any large body of water.[20] Temporary gates could be created by the plane shift [21] spell or the abilities of high level druids.[9][22] + +As described by the World Tree cosmology model, the Astral Plane connected all planes with the Prime Material Plane and the Ethereal Plane was only used for journeying between locations on the Prime.[23] The Elemental Plane of Water was not connected or coterminous with any other elemental plane,[24] however both the cross-planar rivers Styx and Oceanus were known to have vortices to the Plane of Water[14] and there were known portals to the Fated Depths.[25] The spell astral projection [26][27] could be used to reach the Plane of Water via a dark blue color pool.[28] Additionally, the gate [29][30] and plane shift [26][31] spells could be used to open a temporary portal to this plane, provided a lead fork tuned to the note of A was used as a spell focus.[32] + +It was said that portals to the Water Plane could be found in the cold, clear depths of the Moonsea[33] in North Faerûn and the Riftlake[34] in the Great Rift of South Faerûn. +Description[] + +There was no deep or shallow, no dark depths nor wavy surface, just an endless ocean that felt as if you were submerged several feet (say a couple meters) in any body of water on the Prime Material Plane. There was no sun, yet the water itself seemed to glow dimly with a bluish green luminescence. Volumes of water at any temperature and salinity could be found if you knew where to look or had a guide.[1][2][14] The Great Wheel cosmology model explained this by the proximity to the para- and quasi-elemental planes: water became cold and formed icebergs as you neared the Plane of Ice; water became brackish as you approached the Plane of Salt; water became silty and slimy as you neared the Plane of Ooze; water started to boil as you approached the Plane of Steam.[2] The World Tree cosmology described this plane as having all varieties of water constantly in motion, influenced by currents and tides. Life that depended on particular conditions flowed along with their preferred environment or suffered the consequences.[1][14] Impurities such as bubbles of air, chunks of earth, and even short-lived balls of fire could be found floating about due to elemental vortices or the workings of powerful beings. Habitats and settlements typically formed near sources of food and shelter, or near portals and vortices to facilitate trade.[35][36] + +Supporting the teeming life of this plane were the corals and plants that made their way here and found purchase. Huge drifting three-dimensional reefs and loose spheres of freshwater grasses, kelp, and seaweed were home to myriad species and were fertile fishing spots.[37] Travelers had to keep in mind that large predators knew of these fishing grounds also, or else they might discover just how bite-sized they actually were. Just like a Prime ocean, the Elemental Plane of Water seemed to have no limit on how large some creatures could be as giant squid, aboleth, and kraken were known to prowl the plane.[14] Small creatures could be deadly too, with poisonous spines or barbed tails. The smallest of them all was perhaps the deadliest: algae that formed the infamous "red tide". Exposure of the eyes or lungs to the red tide caused blinding sickness.[37] + +If the Plane of Water had any weather, it was the currents, whirlpools, tidal bores,[36] and flows of ice, steam, or silt[20] that could inconvenience a traveler or be a deadly surprise. Usually invisible, currents could be strong enough to pull visitors off in some direction for long distances before they were able to exit the current. Tidal bores were the most dangerous currents, hitting like a thrown boulder and carrying the unlucky creature away for miles (kilometers). Whirlpools were caused by countervailing currents that sucked everything in a tightening spiral, some of which led to vortices to other planes.[36] Ice and silt flows were fairly easy to spot before encountering, but steam flows were nearly undetectable and could cause nasty burns or boil the flesh from your bones.[20] +Inhabitants[] + +It is difficult to determine what type of creatures were the most numerous in the Elemental Plane of Water but presumably the water elementals had the upper hand because they were manifestations of the plane itself.[14][35][38] They could take on any shape their fluid bodies could form but they were extremely hard to see, similar to the effect of a robe of blending,[35][39] and therefore were often described as blurry versions of Prime Material Plane animals and monsters typically of the aquatic variety.[14][40] Water weirds, an intelligent life form that could possess water elementals, were also thought to be native to this plane.[2][41] + +All other peoples and creatures are interlopers or inadvertent immigrants by way of being sucked through an elemental vortex. Those that made a home here and thrived included some jann,[40][42][43] the marids,[40][42][44] the nereids,[40][45] and the tritons.[40][42][46] Besides almost every species of salt- and fresh-water marine life, there were reports of sightings or encounters with many creatures including aboleth,[42][47][48] charonadaemons,[40][49] black[42][50] and bronze dragons,[42][51] eyes of the deep,[40][52] giant nautiluses,[53] mephits of the ice, ooze, steam,[54] and water varieties,[42] mud-men,[40][55] sea hags,[42][56] tojanida,[42] varrdig,[57] and will-o'-wisps.[40][42][58] + +Trade also brought many different races to the Elemental Plane of Water. Merchants that traded with the dao and the marids included aquatic elves, humans, kuo-toans, lizardfolk, locathah, mercanes, and sahuagin.[59] +Realms[] + + Ahto, the Finnish King of the Seas, contemplated matters of water and current in is realm named Curling Wave.[60] + Ben-hadar, the Prince of Good Water Creatures, had a realm called the Coral Reef of Ssesurgass, containing a massive hidden fortress as his main seat.[61][62][63] + Blibdoolpoolp, the Sea Mother of the Kuo-toa, once dwelled in the Elemental Plane of Water in her domain called the Murky Depths.[2][64][65] + Eadro, deity of the locathah and merfolk, had his realm of Shelluria on the plane.[65] + Istishia, The Water Lord, God-King of Water Elementals, once had a realm called Sea of Timelessness here.[40][66][67][68][69][70][71] After the Spellplague he was revealed to be a primordial and he formed a domain in the Elemental Chaos called Cresting Spires.[16] + Kalbari al-Durrat al-Amwaj ibn Jari, Padishah of the Marids, Pearl of the Sea, Mother of Foam, Mistress of the Rivers, Savior of Fish, Patron of Waterspouts, and many more titles, had a palace near the Bubble Net called the Citadel of Ten Thousand Pearls.[18] + Olhydra, Princess of Evil Water Creatures,[72] once inhabited the ruins of a huge citadel made from black coral. She claimed it was the capital of a great empire that she destroyed long ago.[40] + Persana, god of the tritons, shared the realm of Shelluria with Eadro.[65] + Tefnut, mother of Geb in the Mulhorandi pantheon, was said to live here,[2][73] though she also had a realm in Bytopia.[74] + +Appendix[] +Further Reading[] + + Richard Baker, Joseph D. Carriker, Jr., Jennifer Clarke Wilkes (August 2005). Stormwrack. Edited by John D. Rateliff, John Thompson. (Wizards of the Coast), p. 9. ISBN 0-7869-3689-4. \ No newline at end of file diff --git a/generate_encounter/elementals.txt b/generate_encounter/elementals.txt new file mode 100644 index 0000000..03adfd0 --- /dev/null +++ b/generate_encounter/elementals.txt @@ -0,0 +1,3336 @@ + +Водная аномалия [Water weird] +MM14 +MM24 + + Большой? Элементаль, нейтральный + Класс Доспеха 13 + Хиты 58 (9к10 + 9) + Скорость 0 футов, плавая 60 футов + Сил + 17 (+3) + Лов + 16 (+3) + Тел + 13 (+1) + Инт + 11 (+0) + Мдр + 10 (+0) + Хар + 10 (+0) + Сопротивление урону огонь; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию сбивание с ног?, паралич?, отравление?, опутанность?, истощение?, захват?, бессознательность? + Чувства слепое зрение? 30 футов, пассивное Восприятие 10 + Языки Акван + Опасность 3 (700 опыта) + Бонус мастерства +2 + Местность обитания город, подземье + + Языки — понимает Акван, но не говорит. + + Невидимость в воде. Водная аномалия невидима, если полностью погружена в воду. + + Привязка к воде. Водная аномалия умирает, если покидает воду, к которой привязана, или если эта вода уничтожается. + Действия + + Сжимание. Рукопашная атака оружием: +5 к попаданию, досягаемость 10 футов, одно существо. Попадание: Дробящий урон 13 (3к6 + 3). Если размер цели не больше Среднего, она становится схваченной (Сл высвобождения 13) и подтягивается на 5 футов к водной аномалии. Пока цель схвачена, она опутана, водная аномалия пытается её утопить, и аномалия не может сжимать другую цель. + Описание + + Водная аномалия является элементалем-защитником, связанным с определенным местом, заполненным водой, таким как бассейн или фонтан. Ее змеевидное тело, невидимое, пока погружено в воду, становится заметным только когда она появляется, чтобы напасть, обвиваясь вокруг любого существа, кроме её призывателя и тех, кому разрешит находиться призыватель. Когда водная аномалия повержена, она становится неживой лужей воды. + + Добрые и злые аномалии. Как у большинства элементалей, у водной аномалии нет понятия добра или зла. Однако аномалия, связанная со священным или оскверненным источником воды, начинает черпать природу того места, становясь нейтрально-доброй или нейтрально-злой. + + Нейтрально-добрая водная аномалия старается отпугнуть незваных гостей, а не убить их, в то время как нейтрально-злая с удовольствием убьет их, и даже может предать своего призывателя. Водная аномалия теряет свое злое мировоззрение, если её источник очистить при помощи заклинания очищение пищи и питья [purify food and drink]. + + Стихийная натура. Водной аномалии не нужен воздух, еда, питье и сон. + +Водный элементальный мирмидон [Water Elemental Myrmidon] +MPMM + + Средний? Элементаль, обычно нейтральный + Класс Доспеха 18 (латы) + Хиты 127 (17к8 + 51) + Скорость 40 футов, плавая 40 футов + Сил + 18 (+4) + Лов + 14 (+2) + Тел + 15 (+2) + Инт + 8 (-1) + Мдр + 10 (+0) + Хар + 10 (+0) + Сопротивление урону кислота; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию окаменение?, отравление?, сбивание с ног?, паралич? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Акван + Опасность 7 (2900 опыта) + Бонус мастерства +3 + + Языки. Акван и один язык по выбору его создателя + Действия + + Мультиатака. Мирмидон совершает три атаки Трезубцем. + + Трезубец. Рукопашная или дальнобойная атака оружием: +7 к попаданию, досягаемость 5 фт. или дистанция 20/60 фт., одна цель. Попадание: 7 (1к6 + 4) урона силовым полем, или 8 (1к8 + 4) урона силовым полем, если используется двумя руками. + + Замораживающие удары (перезарядка 6). Мирмидон использует Мультиатаку. Каждая успешная атака наносит дополнительно 5 (1к10) урона холодом. Скорость цели, поражённой одной или несколькими этими атаками, уменьшается на 10 фт. до конца следующего хода мирмидона. + Описание + + Элементальные мирмидоны – элементали, призванные и связанные магией в ритуально созданных пластинчатых доспехах. В такой форме они не помнят о своём прежнем существовании в форме свободного элементаля. Они существуют только для того, чтобы следовать приказам своих хозяев. + +Водяной элементаль [Water Elemental] +MM14 +MM24 + + Большой? Элементаль, нейтральный + Класс Доспеха 14 (природный доспех) + Хиты 114 (12к10 + 48) + Скорость 30 футов, плавая 90 футов + Сил + 18 (+4) + Лов + 14 (+2) + Тел + 18 (+4) + Инт + 5 (-3) + Мдр + 10 (+0) + Хар + 8 (-1) + Сопротивление урону кислота; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию сбивание с ног?, паралич?, отравление?, опутанность?, окаменение?, истощение?, захват?, бессознательность? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Акван + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания горы, арктика + + Водяное тело. Элементаль может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. + + Замерзание. Если Элементаль получает урон холодом, он частично замерзает: его скорость уменьшается на 20 футов до конца его следующего хода. + Действия + + Мультиатака. Элементаль совершает два Размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +7 к попаданию, досягаемость 5 футов, одна цель. Попадание: 13 (2к8 + 4) дробящего урона. + + Захлёст (перезарядка 4–6). Все существа в пространстве Элементаля должны совершить спасбросок Силы Сл 15. При провале цель получает 13 (2к8 + 4) дробящего урона. Если размер цели Большой или меньше, она также становится схваченной (Сл высвобождения 14). Пока цель схвачена, она опутана и не может дышать, если только не может дышать под водой. Если спасбросок был успешным, цель выталкивается из пространства Элементаля. + + Элементаль может одновременно держать в захвате одно существо Большого размера или до двух существ Среднего размера. В начале каждого хода Элементаля каждая схваченная им цель получает 13 (2к8 + 4) дробящего урона. Существо, находящееся в пределах 5 футов от Элементаля, может вытянуть существо или предмет, если действием совершит проверку Силы Сл 14 и преуспеет. + Описание + + Водяной элементаль вздымающейся волной катится по земле, становясь почти невидимым в водоёме. Он поглощает существ, которые стоят у него на пути, заполняет их рот и лёгкие, так же легко, как тушит пламя. + + См. дополнительно статью: «Бестиарий: Элементали» + +Воздушный элементаль [Air Elemental] +MM14 +MM24 + + Большой? Элементаль, нейтральный + Класс Доспеха 15 + Хиты 90 (12к10 + 24) + Скорость 0 футов, летая 90 футов (парит) + Сил + 14 (+2) + Лов + 20 (+5) + Тел + 14 (+2) + Инт + 6 (-2) + Мдр + 10 (+0) + Хар + 6 (-2) + Сопротивление урону звук, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию бессознательность?, сбивание с ног?, паралич?, опутанность?, окаменение?, истощение?, захват?, отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Ауран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания горы, арктика + + Воздушное тело. Элементаль может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. + Действия + + Мультиатака. Элементаль совершает два Размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 5 футов, одна цель. Попадание: 14 (2к8 + 5) дробящего урона. + + Вихрь (перезарядка 4–6). Все существа в пространстве Элементаля должны совершить спасбросок Силы Сл 13. При провале цель получает 15 (3к8 + 2) дробящего урона и отбрасывается на расстояние 20 футов от Элементаля в случайном направлении, после чего падает ничком. Если отброшенная цель ударяется о предмет, такой как стена или пол, цель получает 3 (1к6) дробящего урона за каждые 10 футов перемещения. Если цель отброшена в другое существо, это существо должно преуспеть в спасброске Ловкости Сл 13, иначе получит такой же урон и упадет ничком. + + Если исходный спасбросок был успешным, цель получает половину дробящего урона, не отбрасывается и не падает ничком. + Описание + + Воздушный элементаль представляет собой клубящееся облако воздуха с неким подобием лица. Хотя он любит нестись вдоль земли, вздымая вверх пыль и мусор, он также может взлететь в воздух и атаковать сверху. + + Элементаль воздуха может превращаться в ревущий ураган, создавая вихрь, который, затягивая в себя существ, молотит их на лету. + + Стихийная натура. Элементалю не нужен воздух, еда, питьё и сон. + + См. дополнительно статью: «Бестиарий: Элементали» + +Воздушный элементальный мирмидон [Air Elemental Myrmidon] +MPMM + + Средний? Элементаль, обычно нейтральный + Класс Доспеха 18 (латы) + Хиты 117 (18к8 + 36) + Скорость 30 футов, летая 30 футов (парит) + Сил + 18 (+4) + Лов + 14 (+2) + Тел + 14 (+2) + Инт + 9 (-1) + Мдр + 10 (+0) + Хар + 10 (+0) + Сопротивление урону звук, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию окаменение?, отравление?, сбивание с ног?, паралич? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Ауран, один язык по выбору создателя + Опасность 7 (2900 опыта) + Бонус мастерства +3 + Действия + + Мультиатака. Мирмидон совершает три атаки Цепом. + + Цеп. Рукопашная атака оружием: +7 к попаданию, досягаемость 5 футов, одна цель. Попадание: 8 (1к8 + 4) урона силовым поле. + + Удар молнии (перезарядка 6). Мирмидон совершает одну атаку Цепом. В случае попадания цель дополнительно получает 18 (4к8) урона электричеством и должна преуспеть спасброске Телосложения Сл 13. В случае провала цель становится ошеломлённой до конца следующего хода мирмидона. + Описание + + Элементальные мирмидоны – элементали, призванные и связанные магией в ритуально созданных пластинчатых доспехах. В такой форме они не помнят о своём прежнем существовании в форме свободного элементаля. Они существуют только для того, чтобы следовать приказам своих хозяев. + +Галеб дур [Galeb duhr] +MM14 +MM24 + + Средний? Элементаль, нейтральный + Класс Доспеха 16 (природный доспех) + Хиты 85 (9к8 + 45) + Скорость 15 футов (30 футов когда катится, 60 футов когда катится по склону) + Сил + 20 (+5) + Лов + 14 (+2) + Тел + 20 (+5) + Инт + 11 (+0) + Мдр + 12 (+1) + Хар + 11 (+0) + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию паралич?, отравление?, окаменение?, истощение? + Чувства тёмное зрение? 60 футов, чувство вибрации? 60 футов, пассивное Восприятие 11 + Языки Терран + Опасность 6 (2300 опыта) + Бонус мастерства +3 + Местность обитания горы, холмы + + Обманчивая внешность. Пока галеб дур остаётся без движения, он неотличим от обычного валуна. + + Катящаяся атака в броске. Если галеб дур прокатится как минимум 20 футов по направлению к цели, а затем в том же ходу попадёт по ней атакой размашистым ударом, цель получает от атаки дополнительный 7 (2к6) дробящего урона. Если цель — существо, она должна преуспеть в спасброске Силы Сл 16, иначе будет сбита с ног. + Действия + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 5 футов, одна цель. Попадание: 12 (2к6+5) дробящего урона. + + Оживление валунов (1/день). Галеб дур магическим образом оживляет до двух валунов, которые видит в пределах 60 футов от себя. Валун обладает статистикой галеб дура, за исключением того, что у него Интеллект 1 и Харизма 1, его нельзя очаровать и испугать, и у него нет этого варианта действия. Валун остаётся живым, пока галеб дур сохраняет концентрацию, вплоть до 1 минуты (как при концентрации на заклинании). + Описание + + Галеб дур — существо, похожее на валун с массивными выступами, которые используются как руки и ноги. Он способен оживлять находящиеся рядом с ним камни, и обычно встречается в горной местности. + + Могущественная магия позволяет заклинателям призывать галеб дура с Плана Земли, хотя некоторые из них могут появиться и без помощи магии — в тех местах, что соприкасаются с этим планом. По сравнению с другими элементалями, галеб дур обладает большим интеллектом, что позволяет ему лучше оценивать степень угрозы и вступать в диалог с существами, зашедшими на охраняемую им территорию. + + Каменный страж. Галеб дур не стареет, не ест и не пьёт, что делает его великолепным охранником. Могущественный друид может поручить ему охрану каменного круга или священного холма. Другой галеб дур может быть создан для охраны подземной гробницы или башни волшебника. По своему усмотрению он может принять облик обычного валуна и находиться в нём годами. + + Галеб дур навечно связан с Материальным Планом, поэтому после смерти не возвращается на План Земли. У него великолепная память, и он всегда рад поделиться информацией о местности с существами, которых не расценивает как угрозу. + + Связь с камнем. Галеб дур способен слиться воедино с землёй вокруг себя, что позволяет ему наполнить близлежащие камни и валуны неким подобием жизни. Он использует оживлённые камни, чтобы отпугивать чужаков и защищать то, что ему поручено. Чтобы приблизиться к нарушителям, он прижимает конечности к телу и с бешеной скоростью катится вперёд. + +Гигантский ходун [Giant strider] +MPMM + + Большой? Элементаль, без мировоззрения + Класс Доспеха 14 (природный доспех) + Хиты 22 (3к10 + 6) + Скорость 50 футов + Сил + 18 (+4) + Лов + 13 (+1) + Тел + 14 (+2) + Инт + 4 (-3) + Мдр + 12 (+1) + Хар + 6 (-2) + Иммунитет к урону огонь + Чувства пассивное Восприятие 11 + Опасность 1 (200 опыта) + Бонус мастерства +2 + Местность обитания болото, горы, подземье + + Поглощение огня. Когда гигантский ходун должен получить урон огнём, он не получает урона, а восстанавливает хиты в количестве, равном половине этого урона огнём. + Действия + + Укус. Рукопашная атака оружием: +6 к попаданию, досягаемость 5 футов, одна цель. Попадание: 8 (1к8 + 4) колющего урона. + + Огненный взрыв (Перезарядка 5–6). Гигантский ходун запускает сгусток огня в точку, которую может видеть, не далее 60 футов от себя. Каждое существо в сфере радиусом 10 футов с центром в этой точке должно совершить спасбросок Ловкости Сл 12, получая 14 (4к6) урона огнём при провале или половину этого урона при успехе. Огонь распространяясь огибает углы и поджигает возгораемые объекты в этой области, которые никто не несет и не носит. + Описание + + “Из любопытства я однажды приручил гигантского ходуна. Несколько зелий сопротивления огню спустя, существо мурлыкало у меня на коленях, а я совершенно ничего не чувствовал.” + - Морденкайнен + + “Возможно, мы нашли ключ к холодному сердца Морденкайнена: волшебные домашние животные!” + - Таша + + Эти существа напоминают и птиц, и рептилий, но не являются ни тем, ни другим. Гигантские ходуны обладают сверхъестественной близостью с огнём и могут извергать потоки пламени в далеко стоящих врагов. Чаще всего они встречаются в тропических, вулканически активных районах или регионах, которые похожим образом являются источниками как воды, так и экстремальной жары. + + Огненные тритоны ценят гигантских ходунов и стремятся приручить их, когда это возможно. Огненные тритоны дают корм, кров и место для размножения гигантским ходунам в своих логовах, а те в ответ добровольно служат ездовыми животными огненным тритонам воинам [Firenewt warrior]. + +Горгулья [Gargoyle] +MM14 +MM24 + + Средний? Элементаль, хаотично-злой + Класс Доспеха 15 (природный доспех) + Хиты 52 (7к8 + 21) + Скорость 30 футов, летая 60 футов + Сил + 15 (+2) + Лов + 11 (+0) + Тел + 16 (+3) + Инт + 6 (-2) + Мдр + 11 (+0) + Хар + 7 (-2) + Сопротивление урону дробящий, колющий, рубящий от немагических атак, кроме нанесённых адамантиновым оружием + Иммунитет к урону яд + Иммунитет к состоянию отравление?, окаменение?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Терран + Опасность 2 (450 опыта) + Бонус мастерства +2 + Местность обитания город, подземье + + Обманчивая внешность. Пока горгулья остаётся без движения, она неотличима от неживой статуи. + Действия + + Мультиатака. Горгулья совершает две атаки: одну укусом и одну когтями. + + Укус. Рукопашная атака оружием: +4 к попаданию, досягаемость 5 футов, одна цель. Попадание: Колющий урон 5 (1к6 + 2). + + Когти. Рукопашная атака оружием: +4 к попаданию, досягаемость 5 футов, одна цель. Попадание: Рубящий урон 5 (1к6 + 2). + Осколки стихийного зла + + Проходя по своему каменному царству, Огремох, злой Князь Стихийной Земли, оставляет за собой след из осколков раздробленных камней. Эти наполненные частицами сознания осколки входят в резонанс с сущностью владыки стихии и за несколько лет принимают человекоподобную форму, становясь в итоге ужасными, безжалостными горгульями. + + Огремох не создаёт их намеренно, но они являются материальным воплощением его злой сути. Горгульи — насмешка над стихией Воздуха, которую презирает Огремох. Это тяжеловесные существа из ожившего камня, которые всё же способны летать. Подобно своему создателю, они ненавидят существ воздушной стихии, в том числе ааракокр, и с наслаждением используют любую возможность, чтобы их уничтожить. + + На своём родном плане горгульи вырезают каменные глыбы, которые Огремох швыряет в Аакуа — владения аарококр и великодушных Герцогов Ветра, которым служит крылатое племя Стихийного Плана Воздуха. + Описание + + «ДОБРО ПОЖАЛОВАТЬ В ВЕЛИКУЮ МРАЧНУЮ РЫТВИНУ, ЖЕМЧУЖИНУ ВНУТРЕННИХ ПЛАНОВ. ОТНЫНЕ ВЫ — РАБЫ МОГУЩЕСТВЕННОЙ И МИЛОСЕРДНОЙ ХАТУН ЗАФАРА АЛЬ-ЙИЛЬ ДЖИН ЗАРЕЙН, КОРОЛЕВЫ ПЕНИСТЫХ ГЛУБИН, ВЕРХОВНОЙ ЖРИЦЫ АЛМАЗНОГО ХРАМА, ЗАЩИТНИЦЫ МАЛАХИТОВОГО СКИПЕТРА, И ПРОЧАЯ, И ПРОЧАЯ» + + — ОБЫЧНОЕ ПРИВЕТСТВИЕ ГОРГУЛЬИ-СЕНЕШАЛЯ + + + Облик безжизненных горгулий, украшающих вершины величественных зданий, навеян этими злобными существами стихии земли, похожими на гротескные дьявольские статуи. Горгулья таится среди каменных стен и руин, неподвижная, подобно каменным скульптурам, и наслаждается тем ужасом, который она вселяет, когда оживает, и той болью, которую причиняет своим жертвам. + + Оживший камень. Горгульи гнездятся на утёсах и скалах, а также на выступах в пещерах. Они обитают на городских крышах, подобно стервятникам, примостившись среди высоких каменных арок и контрфорсов замков и соборов, и способны сидеть настолько смирно, что выглядят безжизненными. В таком состоянии горгулья может находиться годами, что делает её идеальным стражем. + + Зловещая репутация. Горгульи известны своей жестокостью. Статуи в виде горгулий присутствуют в архитектуре многих культур, и они призваны отпугивать злоумышленников. Несмотря на то, что это всего лишь статуи, среди них могут затаиться настоящие горгульи, поджидающие своих жертв. Со скуки горгулья может ловить и мучать птиц и грызунов, но чем дольше она ждёт, тем сильнее жаждет навредить разумным существам. + + Безжалостные слуги. Хитрые существа с лёгкостью могут заставить горгулий служить себе. Им нравятся простые задачи, такие как охрана хозяйского дома, пытки и убийство нарушителей, в общем, всё, что связано с минимумом усилий и максимум боли и насилия. + + Из-за склонности к беспричинному хаосу и разрушению горгульи иногда служат демонам. Могущественные заклинатели также без труда привлекают горгулий для охраны ворот и стен. Горгульи обладают терпением и стойкостью камня, и годами могут служить даже жесточайшему хозяину, не выражая недовольства. + + Стихийная натура. Горгулье не нужен воздух, еда, питьё и сон. + +Грязевой мефит [Mud mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 11 + Хиты 27 (6к6 + 6) + Скорость 20 футов, плавая 20 футов, летая 20 футов + Сил + 8 (-1) + Лов + 12 (+1) + Тел + 12 (+1) + Инт + 9 (-1) + Мдр + 11 (+0) + Хар + 7 (-2) + Навыки Скрытность +3 + Иммунитет к урону яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Акван, Терран + Опасность 1/4 (50 опыта) + Бонус мастерства +2 + Местность обитания болото + + Предсмертная вспышка. Когда мефит умирает, он разлетается во все стороны липкой грязью. Все существа с размером не больше Среднего в пределах 5 футов от него должны преуспеть в спасброске Ловкости Сл 11, иначе станут опутанными до конца своего следующего хода. + + Обманчивая внешность. Пока мефит остаётся без движения, он неотличим от обычной кучи грязи. + Действия + + Кулаки. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одно существо. Попадание: Дробящий урон 4 (1к6+1). + + Грязевое дыхание (перезарядка 6). Мефит изрыгает липкую грязь на одно существо, находящееся в пределах 5 футов от него. Если размер цели не больше Среднего, она должна преуспеть в спасброске Ловкости Сл 11, иначе станет опутанной на 1 минуту. Существо может повторять этот спасбросок в конце каждого своего хода, оканчивая эффект на себе при успехе. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Грязевые мефиты медлительны и маслянисты. Они состоят из земли и воды. Они будут жаловаться на жизнь любому, кто станет их слушать, и будут беспрестанно требовать к себе внимания и выпрашивать подарки. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + +Грязевой скиталец [Mud Hulk] +BPGG + + Большой? Элементаль, обычно хаотично-злой + Класс Доспеха 13 (природный доспех) + Хиты 68 (8к10 + 24) + Скорость 40 футов + Сил + 16 (+3) + Лов + 8 (-1) + Тел + 16 (+3) + Инт + 5 (-3) + Мдр + 9 (-1) + Хар + 6 (-2) + Сопротивление урону кислота + Иммунитет к состоянию истощение?, паралич? + Чувства пассивное Восприятие 9 + Языки Великаний, Терран + Опасность 3 (700 опыта) + Бонус мастерства +2 + + Аморфный. Грязевой скиталец может, не протискиваясь, перемещаться через узкое пространство шириной вплоть до 1 дюйма. + + Вязкая грязь. Земля в пределах 15 футов от грязевого скитальца становится труднопроходимой местностью для других существ. + Действия + + Обволакивающий удар. Рукопашная атака оружием: +5 к попаданию, досягаемость 10 футов, одна цель. Попадание: 9 (1к12 + 3) дробящего урона. Если цель - существо Большого размера или меньше, оно должно преуспеть в спасброске Силы Сл 13, иначе будет затянуто в пространство грязевого скитальца и поглощено им. Будучи поглощенной, цель не может дышать, становится опутанной и получает 6 (1к12) урона кислотой в начале каждого своего хода. Когда грязевой скиталец перемещается, поглощённая цель перемещается вместе с ней. Грязевой скиталец может иметь поглощённой лишь одно существо. Пока существо поглощено, грязевой скиталец не может использовать свою способность Аморфный. + + Поглощённая цель может повторять спасбросок в конце каждого своего хода. Вырываюсь в случае успеха и перемещаясь в ближайшее незанятое пространство. + + Грязевой всплеск. Грязевой скиталец выбрасывает грязевую массу, которая разбрызгивается в сфере радиусом 10 футов с центром в точке, находящейся в пределах 30 футов от грязевого скитальца. Каждое существо в этой области должно совершить спасбросок Ловкости Сл 13, получая 10 (2к6 + 3) дробящего урона в случае провала или половину этого урона в случае успеха. Пораженный участок становится труднопроходимой местностью до начала следующего хода грязевого скитальца. + Описание + + Что ж, пока ты скорбишь, эта тварь пытается утопить меня в грязи! Простите, я выставляю руку, чтобы уберечь себя от этого. + - Бигби + + Предками глиняных скитальцев были холмовые великаны, которые, живя в изоляции, поедали все, что попадалось под руку, пока не были вынуждены начать питаться самой землей. Элементальная природа великанов проявила себя и превратила их в созданий из живой грязи. + + Грязевой скиталец отдаленно напоминает своих предков, но его тело состоит из влажной грязи, которая постоянно отслаивается, создавая вокруг него густые лужи из этого вещества повсюду, где проходит существо. Он сохраняет голод холмового великана, обволакивая все, что хоть отдаленно похоже на что то съедобное, и непосредственно всасывая это в свой организм. Когда ему угрожают, он швыряет массы грязи в своих врагов, чтобы убедиться, что они остаются на месте достаточно долго, для того что бы грязевой скиталец поглотил их. + +Дао [Dao] +MM14 +MM24 + + Большой? Элементаль, нейтрально-злой + Класс Доспеха 18 (природный доспех) + Хиты 187 (15к10 + 105) + Скорость 30 футов, летая 30 футов, копая 30 футов + Сил + 23 (+6) + Лов + 12 (+1) + Тел + 24 (+7) + Инт + 12 (+1) + Мдр + 13 (+1) + Хар + 14 (+2) + Спасброски Инт +5, Мдр +5, Хар +6 + Иммунитет к состоянию окаменение? + Чувства тёмное зрение? 120 футов, пассивное Восприятие 11 + Языки Терран + Опасность 11 (7200 опыта) + Бонус мастерства +4 + Местность обитания подземье + + Скольжение сквозь землю. Дао может перемещаться, копая, сквозь немагические и необработанные землю и камень. При этом дао не беспокоит материал, через который перемещается. + + Элементальная гибель. Если дао умирает, его тело распадается на кристаллическую пыль, оставляя только снаряжение, которое дао носил и нёс. + + Врождённое колдовство. Базовой характеристикой дао является Харизма (Сл спасброска от заклинания 14, +6 к попаданию атаками заклинаниями). Он может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: изменение формы камня [stone shape], обнаружение зла и добра [detect evil and good], обнаружение магии [detect magic] + 3/день каждое: движение почвы [move earth], создание прохода [passwall], языки [tongues] + 1/день каждое: воображаемый убийца [phantasmal killer], газообразная форма [gaseous form], каменная стена [wall of stone], невидимость [invisibility], призыв элементаля [conjure elemental] (только земляной элементаль), уход в иной мир [plane shift] + + Устойчивый. Дао совершает с преимуществом спасброски Силы и Ловкости против эффектов, сбивающих его с ног. + Действия + + Мультиатака. Дао совершает две атаки кулаком, либо две атаки молотом. + + Кулак. Рукопашная атака оружием: +10 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 15 (2к8 + 6). + + Молот. Рукопашная атака оружием: +10 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 20 (4к6 + 6). Если цель — существо с размером не больше Огромного, она должна преуспеть в проверке Силы Сл 18, иначе будет сбита с ног. + Вариант: Способности гениев + + Гении обладают различными магическими способностями, включая заклинания. Некоторые владеют столь великой силой, что могут менять обличья или изменять природу реальности. + + Маскировка. Некоторые гении могут скрыть свою истинную природу, наложив на себя иллюзию сходного по сложению другого существа. Такие гении могут неограниченно накладывать заклинание маскировка [disguise self], зачастую с увеличенной длительностью. Более могущественные гении могут накладывать заклинание истинное превращение [true polymorph] от одного до трёх раз в день, возможно, с увеличенной длительностью. Такие гении могут менять только собственный облик, и крайне редко могут накладывать подобные заклинания на других существ или предметы. + + Желания. Среди смертных ходят легенды о гениях, исполняющих желания. Но лишь могущественнейшие из гениев, например, их знатные представители, могут это сделать. Те из них, кто обладают такой силой, могут даровать исполнение от одного до трёх желаний любому существу, кроме другого гения. Если гений уже исполнил свой предел желаний, он не сможет сделать это вновь в течение некоторого времени (обычно 1 год), и, согласно законам вселенной, один и тот же гений может потратить свой лимит желаний на другое существо только один раз в жизни этого существа. + + Чтобы гений исполнил желание, существо должно сформулировать его, находясь в 60 футах от гения. После этого гений накладывает заклинание исполнение желаний [wish], воспроизводящее эффект. Изворотливые по своей природе гении могут попытаться извратить желание, воспользовавшись несовершенством его формулировки. Как правило, искажение формулировок гении оборачивают себе на пользу. + Описание + + Дао — жадные и злобные гении со Стихийного Плана Земли. Они носят ювелирные украшения из драгоценных камней и редких металлов. Во время полёта нижняя часть их тел становится столбом вращающегося песка. Дао не испытывает счастья, если ему не завидуют другие дао. + + Всё, что блестит. Дао обитают на Стихийном Плане Земли в комплексах переплетающихся туннелей и пещер, пронизанных мерцающими рудами. Эти лабиринты постоянно расширяются, поскольку дао роют и перестраивают своё пространство. Дао нет дела до бедности и несчастий всех остальных. Подобно тому, как смертные используют пряности, дао могут посыпать свою пищу перемолотыми в пыль золотом и драгоценными камнями. + + Властители земли. Дао никогда не помогает смертным, если только не может получить от них что-то взамен, желательно сокровище. Среди гениев дао общаются и торгуют с ифритами, но презирают джиннов и маридов. Другие расы, населяющие Стихийный План Земли, сторонятся дао, которые постоянно ищут новых рабов для разработки лабиринтов их парящих каменных островов. + + Гордые рабовладельцы. Дао достают лучших рабов, которых только можно купить, и заставляют их работать в опасных подземных мирах, дрожащих от землетрясений. + + Сколь сильно дао любят порабощать других, столь же сильно они ненавидят, когда порабощают их самих. Известно, что могущественные волшебники заманивают дао на Материальный План и заключают их в драгоценные камни или железные фляги. К несчастью для дао, их жадность позволяет магам довольно легко обманывать их и заставлять себе служить. + + См. дополнительно статью: "Бестиарий: Гении" + +Джинн [Djinni] +MM14 +MM24 + + Большой? Элементаль, хаотично-добрый, законно-добрый + Класс Доспеха 17 (природный доспех) + Хиты 161 (14к10 + 84) + Скорость 30 футов, летая 90 футов + Сил + 21 (+5) + Лов + 15 (+2) + Тел + 22 (+6) + Инт + 15 (+2) + Мдр + 16 (+3) + Хар + 20 (+5) + Спасброски Лов +6, Мдр +7, Хар +9 + Иммунитет к урону звук, электричество + Чувства тёмное зрение? 120 футов, пассивное Восприятие 13 + Языки Ауран + Опасность 11 (7200 опыта) + Бонус мастерства +4 + Местность обитания побережье + + Элементальная гибель. Если джинн умирает, его тело распадается на тёплый ветерок, оставляя только снаряжение, которое джинн носил и нёс. + + Врождённое колдовство. Базовой характеристикой джинна является Харизма (Сл спасброска от заклинания 17, +9 к попаданию атаками заклинаниями). Он может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: волна грома [thunderwave], обнаружение зла и добра [detect evil and good], обнаружение магии [detect magic] + 3/день каждое: сотворение пищи и воды [create food and water] (может создавать вино вместо воды), хождение по ветру [wind walk], языки [tongues] + 1/день каждое: газообразная форма [gaseous form], невидимость [invisibility], образ [major image], призыв элементаля [conjure elemental] (только воздушный элементаль), сотворение [creation], уход в иной мир [plane shift] + Действия + + Мультиатака. Джинн совершает три атаки скимитаром. + + Скимитар. Рукопашная атака оружием: +9 к попаданию, досягаемость 5 футов, одна цель. Попадание: Рубящий урон 12 (2к6 + 5) плюс урон звуком или электричеством 3 (1к6) (на выбор джинна). + + Создание смерча. В точке, которую джинн видит в пределах 120 футов от себя, магическим образом появляется смерч в виде цилиндра с радиусом 5 футов и высотой 30 футов. Смерч существует, пока джинн поддерживает концентрацию (как при концентрации на заклинании). Все существа кроме джинна, входящие в смерч, должны преуспеть в спасброске Силы Сл 18, иначе станут опутанными им. Джинн может действием перемещать смерч на расстояние до 60 футов, и существа, опутанные смерчем, перемещаются вместе с ним. Смерч исчезает, если джинн перестаёт его видеть. + + Существо может действием освободить существо, опутанное смерчем, в том числе и себя, преуспев в проверке Силы Сл 18. Если проверка успешна, существо перестаёт быть опутанным и перемещается в ближайшее пространство за пределами смерча. + Вариант: Способности гениев + + Гении обладают различными магическими способностями, включая заклинания. Некоторые владеют столь великой силой, что могут менять обличья или изменять природу реальности. + + Маскировка. Некоторые гении могут скрыть свою истинную природу, наложив на себя иллюзию сходного по сложению другого существа. Такие гении могут неограниченно накладывать заклинание маскировка [disguise self], зачастую с увеличенной длительностью. Более могущественные гении могут накладывать заклинание истинное превращение [true polymorph] от одного до трёх раз в день, возможно, с увеличенной длительностью. Такие гении могут менять только собственный облик, и крайне редко могут накладывать подобные заклинания на других существ или предметы. + + Желания. Среди смертных ходят легенды о гениях, исполняющих желания. Но лишь могущественнейшие из гениев, например, их знатные представители, могут это сделать. Те из них, кто обладают такой силой, могут даровать исполнение от одного до трёх желаний любому существу, кроме другого гения. Если гений уже исполнил свой предел желаний, он не сможет сделать это вновь в течение некоторого времени (обычно 1 год), и, согласно законам вселенной, один и тот же гений может потратить свой лимит желаний на другое существо только один раз в жизни этого существа. + + Чтобы гений исполнил желание, существо должно сформулировать его, находясь в 60 футах от гения. После этого гений накладывает заклинание исполнение желаний [wish], воспроизводящее эффект. Изворотливые по своей природе гении могут попытаться извратить желание, воспользовавшись несовершенством его формулировки. Как правило, искажение формулировок гении оборачивают себе на пользу. + Описание + + Гордые, эмоциональные гении со Стихийного Плана Воздуха. Джинны — это привлекательные, хорошо сложённые, высокие гуманоиды с синей кожей и тёмными глазами. Они одеваются в невесомые мерцающие шелка, которые не только удобны, но и хорошо подчёркивают их мускулатуру. + + Ветреные эстеты. Джинны правят облачными островами, покрытыми бесчисленными шатрами или увенчанными чудесными зданиями, фонтанами и садами. Джинны любят комфорт и удобство, наслаждаются сочными фруктами, острыми винами, ароматными благовониями и прекрасной музыкой.   + + Джинны известны своим озорством и благосклонным отношением к смертным. В среде гениев джинны прохладно относятся к ифритам и маридам, которых считают высокомерными. Они открыто презирают дао и при малейшей провокации с их стороны отвечают им той же монетой. + + Властители ветров. Будучи повелителями воздуха, джинны ездят на мощных вихрях, которые сами же и создают развлечения ради. Они способны управлять ими, и даже перевозить на них пассажиров. Существа, противостоящие джинну, атакуются ветром и громом, и на этом же ветру джинн покинет поле боя, если враг окажется сильнее. Во время полёта нижняя часть тела джинна становится столбом вращающегося воздуха. + + Покорные слуги. Джинны верят, что подневольная служба — это проявление судьбы, и что никто не может противиться ей. Поэтому они единственные из всех гениев наиболее подходят для подобной службы, хотя она никогда не доставляет им радости. Своих рабов джинны воспринимают больше как слуг, заслуживающих доброты и защиты, и неохотно с ними расстаются. + + Смертный, желающий получить услугу от джинна, может упросить его, преподнеся хорошие дары, или прибегнув к лести. Однако могущественные волшебники способны просто призвать джинна и заставить его служить, или могут поймать его, используя магию. Долговременная служба раздражает джинна, а заточение — непростительно. Джиннов возмущают жестокие волшебники, заставляющие их столетиями томиться в бутылках, железных флягах и духовых инструментах. Предательство, особенно со стороны смертного, которому джинн доверял — крайне мерзкое деяние, которое можно искупить только смертью. + + См. дополнительно статью: "Бестиарий: Гении" + +Древний шторм [Elder Tempest] +MPMM + + Громадный? Элементаль, обычно нейтральный + Класс Доспеха 19 + Хиты 264 (16к20 + 96) + Скорость 0 футов, летая 120 футов (парит) + Сил + 26 (+8) + Лов + 28 (+9) + Тел + 23 (+6) + Инт + 2 (-4) + Мдр + 21 (+5) + Хар + 18 (+4) + Спасброски Мдр +12, Хар +11 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону звук, электричество, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, захват?, паралич?, ошеломление?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 15 + Опасность 23 (50 000 опыта) + Бонус мастерства +7 + Местность обитания арктика, горы, луг, побережье, холмы + + Воздушное тело. Древний шторм может войти в пространство враждебного существа и остаться там. Он может, не протискиваясь, перемещаться через пространство шириной до 1 дюйма. + + Облёт. Древний шторм не провоцирует атаки, когда вылетает из зоны досягаемости противника. + + Легендарное сопротивление (3/день). Если Древний шторм проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Живой шторм. Древний шторм - эпицентр грозы с диаметром 1к6 + 4 миль. В этой зоне происходят обильные осадки в виде дождя или снега из-за чего местность становиться едва видимой. Тяжелый дождь также тушит огни и накладывает помехи на проверки Мудрости (Восприятие), зависящие от слуха. Вдобавок, в местности бушуют сильные ветра. Ветра накладывают помехи на броски дальнобойных атак, тушат огни и разгоняют туман. + + Осадное чудовище. Древний шторм наносит двойное повреждение объектам и строениям. + Действия + + Мультиатака. Древний шторм совершает две атаки Громовым ударом. + + Громовой удар. Рукопашная атака оружием: +16 к попаданию, досягаемость 20 футов, одна цель. Попадание: 23 (4к6+9) урона звуком. + + Гроза (перезарядка 6). Все существа, находящиеся на расстоянии 120 футов от Древнего шторма, должны совершить спасбросок Ловкости Сл 21, получая 27 (6к8) урона электричеством при провале, или половину этого урона при успехе. Если цель проваливает спасбросок на 5 или более, то существо становится ошеломлённым до конца своего следующего хода. + Легендарные действия + + Древний шторм может совершить 3 легендарных действия, выбирая из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Древний шторм восстанавливает использованные легендарные действия в начале своего хода. + + Перемещение. Древний шторм перемещается на свою скорость. + + Удар молнией (стоит 2 действия). Древний шторм может вызвать молнию на любую точку поверхности, что находится под грозой. Каждое существо, находящееся в пределах 5 футов от места удара молнии, должно совершить спасбросок Ловкости Сл 21, получая 16 (3к10) урона электричеством при провале, или половину этого урона при успехе. + + Грохот бури (стоит 3 действия). Древний шторм выпускает вспышку грома и ветра линией, длиной 300 футов и шириной 20 футов. Объекты в зоне поражения этой особенности получают 22 (4к10) урона звуком. Каждое существо должно преуспеть в спасброске Ловкости Сл 21, иначе получит 22 (4к10) урона звуком и будет отброшено на 60 футов от стороны направления линии. Если отброшенная цель приземлится на неподвижный объект, вроде стены или пола, то получает 3 (1к6) дробящего урона за каждые 10 футов, что была отброшена. Если цель приземлится на другое существо, то другое существо должно преуспеть в спасброске Ловкости Сл 19, иначе получит такой же урон и будет сбито с ног. + Описание + + Ужасающие штормы проявляются в теле древнего шторма. Бытие, вырезанное из облаков, ветра, дождя и молний, древний шторм принимает форму скользящего по небу змея. Шторм топит сушу под собой дождями и бьёт по земле копьями молний. Суровые ветра воют вокруг него во время полёта подпитывая создаваемый им хаос. + +Дух дикого огня [Wildfire spirit] +TCE + + Маленький? Элементаль, любое мировоззрение + Класс Доспеха 13 (природный доспех) + Хиты 5 + пятикратный уровень друида + Скорость 30 футов, летая 30 футов (парит) + Сил + 10 (+0) + Лов + 14 (+2) + Тел + 14 (+2) + Инт + 13 (+1) + Мдр + 15 (+2) + Хар + 11 (+0) + Иммунитет к урону огонь + Иммунитет к состоянию опутанность?, сбивание с ног?, захват?, очарование?, испуг? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 12 + Языки понимает языки, на которых вы говорите + Бонус мастерства равен вашему бонусу + Действия + + Огненное семя. Дальнобойная атака оружием: ваш модификатор атаки заклинанием для попадания, дальность 60 футов, одна цель, которую вы можете видеть. Попадание: 1к6 + БМ урона огнём. + + Огненная телепортация. Дух и каждое согласное существо по вашему выбору в пределах 5 футов от духа телепортируются на 15 футов в свободное пространство, которые вы можете видеть. Затем каждое существо в пределах 5 футов от пространства, из которого телепортировался дух, должно преуспеть в спасброске Ловкости против Сл ваших заклинаний, иначе получит 1к6 + БМ урона огнём. + Описание + + Блок статистики для призыва духа дикого огня друидом круга дикого огня. + +Дух стихии [Elemental Spirit] +TCE +MM24 + + Средний? Элементаль, без мировоззрения + Класс Доспеха 11 + уровень ячейки (природный доспех) + Хиты 50 + 10 за каждый уровень ячейки выше 4-го + Скорость 40 футов, плавая 40 футов (только вода), летая 40 футов ((парит) только воздух), копая 40 футов (только земля) + Сил + 18 (+4) + Лов + 15 (+2) + Тел + 17 (+3) + Инт + 4 (-3) + Мдр + 10 (+0) + Хар + 16 (+3) + Сопротивление урону звук (только воздух), кислота (только вода), электричество (только воздух); колющий (только земля), рубящий (только земля) + Иммунитет к урону огонь (только огонь), яд + Иммунитет к состоянию окаменение?, отравление?, паралич?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Первичный, понимает языки, на которых вы говорите + Бонус мастерства равен вашему бонусу + + Аморфный (только воздух, огонь и вода). Элементаль может перемещаться сквозь пространство шириной в 1 дюйм, без протискивания. + Действия + + Мультиатака. Элементаль совершает количество атак, равное половине уровня ячейки, использованной для призыва (с округлением в меньшую сторону). + + Размашистый удар. Рукопашная атака оружием: ваш модификатор броска атаки заклинанием к попаданию, досягаемость 5 фт., одна цель. Попадание: 1к10 + 4 + уровень ячейки дробящего урона (только воздух, земля или вода) или урона огнём (только огонь). + Описание + + Блок статистики для призыва духа стихии с помощью заклинания призыв духа стихии [summon elemental]. + +Дымовой мефит [Smoke mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 12 + Хиты 22 (5к6 + 5) + Скорость 30 футов, летая 30 футов + Сил + 6 (-2) + Лов + 14 (+2) + Тел + 12 (+1) + Инт + 10 (+0) + Мдр + 10 (+0) + Хар + 11 (+0) + Навыки Восприятие +2, Скрытность +4 + Иммунитет к урону огонь, яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 12 + Языки Ауран, Игнан + Опасность 1/4 (50 опыта) + Бонус мастерства +2 + Местность обитания город + + Предсмертная вспышка. Когда мефит умирает, он оставляет после себя облачко дыма, заполняющее сферу с радиусом 5 футов и центром на его пространстве. Пространство сферы сильно заслонено. Ветер рассеивает облачко, которое в противном случае висит 1 минуту. + + Врождённое колдовство (1/день). Мефит может накладывать пляшущие огоньки [dancing lights], не нуждаясь в материальных компонентах. Его базовой характеристикой является Харизма. + Действия + + Когти. Рукопашная атака оружием: +4 к попаданию, досягаемость 5 футов, одно существо. Попадание: Рубящий урон 4 (1к4 + 2). + + Пепельное дыхание (перезарядка 6). Мефит выдыхает горячий пепел 15-футовым конусом. Все существа в этой области должны преуспеть в спасброске Ловкости Сл 10, иначе станут ослепленными до конца следующего хода мефита. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Это грубые, ленивые, сотворенные из воздуха и огня создания, которые постоянно дымятся. Они редко говорят правду и любят издеваться над другими существами, вводя их в заблуждение. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + +Заратан [Zaratan] +MPMM + + Громадный? Элементаль, обычно нейтральный + Класс Доспеха 21 (природный доспех) + Хиты 307 (15к20 + 150) + Скорость 40 футов, плавая 40 футов + Сил + 30 (+10) + Лов + 10 (+0) + Тел + 30 (+10) + Инт + 2 (-4) + Мдр + 21 (+5) + Хар + 18 (+4) + Спасброски Мдр +12, Хар +11 + Сопротивление урону огонь, холод, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию окаменение?, отравление?, паралич?, ошеломление?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 15, чувство вибрации? 60 футов + Опасность 22 (41 000 опыта) + Бонус мастерства +7 + Местность обитания горы, лес, луг, подземье, пустыня, холмы + + Легендарное сопротивление (3/день). Если Заратан проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Осадное чудовище. Элементаль причиняет двойной урон предметам и строениям. (включая Сотрясающее движение). + Действия + + Мультиатака. Заратан совершает одну атаку Укусом и одну атаку Топотом. + + Укус. Рукопашная атака оружием: +17 к попаданию, досягаемость 20 футов, одна цель. Попадание: 28 (4к8 + 10) урона силовым полем. + + Топот. Рукопашная атака оружием: +17 к попаданию, досягаемость 20 футов, одна цель. Попадание: 26 (3к10 + 10) урона звуком. + + Плевок камнем. Дальнобойная атака оружием: +17 к попаданию, дистанция 120 /240 футов, одна цель. Попадание: 31 (6к8 + 10) урона силовым полем. + + Брызги земли (перезарядка 5-6). Заратан выплёвывает каменные обломки 90 футовым кубом. Каждое существо в области должно преуспеть в спасброске Ловкости Сл 25. Существа получают 33 (6к10) дробящего урона при провале или половину этого урона при успехе. Существо провалившее бросок на 5 или больше падает ничком. + Бонусные действия + + Сотрясающее движение. Пройдя по земле не менее 10 футов, заратан может послать ударную волну по земле сферой радиусом 120 футов вокруг себя. Область становится труднопроходимой местностью на 1 минуту. Каждое существо, находящееся на земле должно совершить спасбросок Телосложения Сл 25 или потерять концентрацию. + + Ударная волна наносит 100 урона звуком всем строениями, находящиеся в контакте с землёй и в зоне поражения. Если существо находится рядом с обрушивающимся сооружением,оно может быть погребено под обломками; существо, находящееся от здания на расстоянии, равном менее половины его высоты должно совершить спасбросок Ловкости Сл 25. При провале цель получает 17 (5к6) дробящего урона, падает ничком и завалена обломками. Заваленное обломками существо опутано, и ему требуется действием преуспеть в проверке Силы (Атлетика) Сл 20, чтобы выбраться. Другое существо в пределах 5 футов от погребённого существа может действием расчистить обломки, давая погребённому существу преимущество. Если три существа тратят действия на расчистку завала, проверка автоматический преуспевает. При успехе существо получает половину урона, не падает ничком и не заваливается обломками. + Легендарные действия + + Заратан может совершить 3 легендарных действия, выбирая из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Заратан восстанавливает использованные легендарные действия в начале своего хода. + + Топот. Заратан совершает одну атаку Топотом. + + Движение. Заратан перемещается на свою скорость. + + Плевок (стоит 2 действия). Заратан использует действие Плевок камнем. + + Скрыться (стоит 2 действия). Заратан скрывается в своём панцире. Пока он не использует "Появление", он получает сопротивление всему урону и становится опутанным. В следующий раз, когда он будет использовать легендарное действие, этим действием должно быть "Исцеление" или "Появление". + + Исцеление (стоит 2 действия). Это действие можно делать только если Заратан скрылся в панцире. Он восстанавливает 52 (5к20) хита. В следующий раз, когда он будет использовать легендарное действие, этим действием должно быть "Появление". + + Появление (стоит 2 действия). Заратан вылезает из своего панциря и использует действие "Плевок камнем". Это действие можно совершить только если он скрывался в своём панцире. + Описание + + Когда заратан призывается из Стихийного Плана Земли, земля поднимается, принимая форму неуклюжей бронированной рептилии. Шаги заратана вызывают ударные волны, достаточно сильные, чтобы сравнять здания с землей. Он выражает свою ярость трубными криками и случайным валуном или взрывом обломков, которые он извергает из своей пещерообразной пасти. Если заратан серьезно ранен, он втягивает свои конечности, чтобы укрыться под своей непробиваемой оболочкой, выжидая, пока не восстановится и не сможет возобновить свой поход. + +Земляной элементаль [Earth Elemental] +MM14 +MM24 + + Большой? Элементаль, нейтральный + Класс Доспеха 17 (природный доспех) + Хиты 126 (12к10 + 60) + Скорость 30 футов, копая 30 футов + Сил + 20 (+5) + Лов + 8 (-1) + Тел + 20 (+5) + Инт + 5 (-3) + Мдр + 10 (+0) + Хар + 5 (-3) + Уязвимость к урону звук + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию паралич?, окаменение?, истощение?, бессознательность?, отравление? + Чувства тёмное зрение? 60 футов, чувство вибрации? 60 футов, пассивное Восприятие 10 + Языки Терран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания подземье + + Скольжение сквозь землю. Элементаль может перемещаться, копая сквозь немагические и необработанные землю и камень. При этом Элементаль не беспокоит материал, через который перемещается. + + Осадное чудовище. Элементаль причиняет двойной урон предметам и строениям. + Действия + + Мультиатака. Элементаль совершает два Размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 10 футов, одна цель. Попадание: 14 (2к8 + 5) дробящего урона. + Описание + + Земляной элементаль подобен движущемуся холму, упрямо идущему вперёд, с похожими на дубины руками, качающимися вдоль тела. Голова и тело его состоят из земли и камней, иногда попадаются вкрапления металла, самоцветов и ярких минералов. + + Земляной элементаль может скользить сквозь скалы и землю, словно это жидкая вода. Ходящие по земле существа должны бояться земляного элементаля, поскольку он может определить местоположение любого врага, который стоит рядом на твёрдой поверхности. + + Стихийная натура. Элементалю не нужен воздух, еда, питьё и сон. + + См. дополнительно статью: «Бестиарий: Элементали» + +Земляной элементальный мирмидон [Earth Elemental Myrmidon] +MPMM + + Средний? Элементаль, обычно нейтральный + Класс Доспеха 18 (латы) + Хиты 127 (17к8 + 51) + Скорость 30 футов + Сил + 18 (+4) + Лов + 10 (+0) + Тел + 17 (+3) + Инт + 8 (-1) + Мдр + 10 (+0) + Хар + 10 (+0) + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию окаменение?, отравление?, сбивание с ног?, паралич? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Терран + Опасность 7 (2900 опыта) + Бонус мастерства +3 + + Языки. Терран и один язык по выбору создателя. + Действия + + Мультиатака. Мирмидон совершает две атаки Кувалдой. + + Кувалда. Рукопашная атака оружием: +7 к попаданию, досягаемость 5 фт., одна цель. Попадание: 11 (2к6 + 4) урона силовым полем. + + Громовой удар (перезарядка 6). Мирмидон совершает одну атаку Кувалдой. В случае попадания цель дополнительно получает 22 (4к10) урона звуком и должна преуспеть в спасброске Силы Сл 14, иначе станет сбитой с ног. + Описание + + Элементальные мирмидоны – элементали, призванные и связанные магией в ритуально созданных пластинчатых доспехах. В такой форме они не помнят о своём прежнем существовании в форме свободного элементаля. Они существуют только для того, чтобы следовать приказам своих хозяев. + +Зорн [Xorn] +MM14 +MM24 + + Средний? Элементаль, нейтральный + Класс Доспеха 19 (природный доспех) + Хиты 73 (7к8 + 42) + Скорость 20 футов, копая 20 футов + Сил + 17 (+3) + Лов + 10 (+0) + Тел + 22 (+6) + Инт + 11 (+0) + Мдр + 10 (+0) + Хар + 11 (+0) + Навыки Восприятие +6, Скрытность +3 + Сопротивление урону колющий, рубящий от немагических атак, кроме нанесённых адамантиновым оружием + Чувства тёмное зрение? 60 футов, чувство вибрации? 60 футов, пассивное Восприятие 16 + Языки Терран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания подземье + + Скольжение сквозь землю. Зорн может перемещаться, копая, сквозь немагические и необработанные землю и камень. При этом зорн не беспокоит материал, через который перемещается. + + Каменный камуфляж. Зорн совершает с преимуществом проверки Ловкости (Скрытность), когда пытается спрятаться на каменистой местности. + + Нюх на сокровища. Зорн может определять по запаху местонахождение драгоценных металлов и камней, таких как монеты и ограненные драгоценные камни, в пределах 60 футов от себя. + Действия + + Мультиатака. Зорн совершает три атаки когтем и одну атаку укусом. + + Коготь. Рукопашная атака оружием: +6 к попаданию, досягаемость 5 футов, одна цель. Попадание: Рубящий урон 6 (1к6 + 3). + + Укус. Рукопашная атака оружием: +6 к попаданию, досягаемость 5 футов, одна цель. Попадание: Колющий урон 13 (3к6 + 3). + Описание + + «ВСЕГДА ХРАНИ В КАРМАНЕ ПАРОЧКУ ДРАГОЦЕННЫХ КАМНЕЙ. ГОЛОДНЫЙ ЗОРН — ПОЛЕЗНЫЙ ЗОРН». + + — ШЕСТОЕ ПРАВИЛО ВЫЖИВАНИЯ В ПОДЗЕМЕЛЬЯХ МИСТИКА X + + Странные существа со Стихийного Плана Земли, зорны вынюхивают драгоценные камни и металлы, после чего пробираются через землю и скалы, чтоб поглотить эти сокровища. На Материальном Плане зорну приходится много перемещаться по Подземью, чтоб прокормить себя, поэтому, если в их рационе не хватает ценных минералов, они становятся агрессивными к шахтерам и искателям сокровищ. + + На неестественное происхождение зорнов намекают их необычайно тяжелое тело и огромный мощный рот, расположенный на вершине головы. Три его длинные руки заканчиваются острыми когтями, а его три больших глаза с каменными веками смотрят во всех направлениях. + + Стихийные путешественники. Обладающие силой стихийной земли зорны скользят сквозь камень и грязь так же легко, как рыба плавает в воде. При движении они не перемещают землю или камни, а сливаются с ней и проходят, не оставляя ни туннелей, ни дыр, ни намека на свое присутствие. + + Зорны предпочитают не покидать свой родной план, где они с легкостью могут поедать запасы драгоценных камней и металлов. Когда зорн попадает на Материальный План, будь то случайно или из любопытства, он в равной мере ищет пропитание и путь домой. + + Воры и попрошайки. Зорны блуждают в недрах земли в поисках драгоценных металлов и камней. Из-за неспособности поглощать органическую материю, они игнорируют прочих существ. Однако умение зорна унюхать металлы и камни часто привлекает его внимание к искателям приключений, имеющим при себе монеты и драгоценные камни. Так как зорны не злые, они выпрашивают или торгуются, предлагая информацию, полученную ими в путешествии, в обмен на сокровища. При отказе зорны переходят к угрозам и запугиванию. Голодающие или разозленные они прибегают к силе. + +Имикс [Imix] +POA + + Огромный? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 17 + Хиты 325 (26к12 + 156) + Скорость 50 футов, летая 50 футов + Сил + 19 (+4) + Лов + 24 (+7) + Тел + 22 (+6) + Инт + 15 (+2) + Мдр + 16 (+3) + Хар + 23 (+6) + Спасброски Лов +14, Тел +13, Хар +13 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, паралич?, очарование?, испуг? + Чувства слепое зрение? 120 футов, пассивное Восприятие 13 + Языки Общий, Игнан + Опасность 19 (22 000 опыта) + Бонус мастерства +6 + + Огненная аура. В начале каждого хода Имикса все существа в пределах 10 футов от него получают урон огнём 17 (5к6), а горючие предметы в этой области, которые никто не несёт и не носит, воспламеняются. Кроме того, существо, касающееся Имикса или попадающее по нему рукопашной атакой, находясь в пределах 10 футов от него, получает урон огнём 17 (5к6), и когда Имикс первый раз за ход входит в пространство этого существа, оно получает такой же урон. Немагическое оружие, попадающее по Имиксу, немедленно разрушается из-за огня после того, как нанесёт ему урон. + + Свечение. Имикс испускает яркий свет в радиусе 60 футов и тусклый свет в пределах ещё 60 футов. + + Усиленные удары. Размашистые удары Имикса считаются магическими при преодолении сопротивления или иммунитета к атакам немагическим оружием. + + Огненное тело. Имикс может входить в пространство враждебного существа и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания, если там может пройти пламя. + + Легендарное сопротивление (3/день). Если Имикс проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Врождённое колдовство. Базовой характеристикой Имикса является Харизма (Сл спасброска от заклинаний 20, +12 к попаданию заклинаниями). Он врождённо может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: огненный шар [fireball],огненная стена [wall of fire] + 3/день каждое: огненная буря [fire storm], ускорение [haste], телепортация [teleport] + + Сопротивление магии. Имикс совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + Действия + + Мультиатака. Имикс совершает две атаки размашистыми ударами или два пламенных взрыва. + + Размашистый удар. Рукопашная атака оружием: +12 к попаданию, досягаемость 10 фт., одна цель. Попадание: дробящий урон 18 (2к10 + 7) плюс урон огнём 18 (5к6). + + Пламенный взрыв. Дальнобойная атака заклинанием: +12 к попаданию, радиус 250 фт., одна цель. Попадание: урон огнём 35 (10к6). + + Призыв элементалей (1/день). Имикс призывает до трёх огненных элементалей, теряя по 30 хитов за каждого элементаля, вызванного таким образом. Призванные элементали имеют максимальное количество хитов и появляются в радиусе 100 футов от Имикса. Они исчезают, если хиты Имикса упадут до 0. + Легендарные действия + + Имикс может совершить 3 легендарных действия, выбирая их из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Имикс восстанавливает использованные легендарные действия в начале своего хода. + + Волна зноя. Имикс создаёт палящий поток воздуха в пределах 300 футов от себя. Каждое существо внутри этой области, которое поддерживает физический контакт с металлическими объектами (например, носит сделанные из металла оружие или доспехи), получает урон огнём 9 (2к8). Каждое существо внутри этой области, если у него нет сопротивления или иммунитета к урону огнём, должно преуспеть в спасброске Телосложения Сл 21, иначе получит один уровень истощения. + + Телепортация (стоит 2 действия). Имикс магическим образом телепортируется на расстояние до 120 футов в свободное пространство, которое он видит. Всё несомое или носимое Имиксом снаряжение остаётся на прежнем месте. + + Воспламенение (стоит 3 действия). Имикс заставляет одно видимое им существо в пределах 30 футов от него вспыхнуть пламенем. Цель должна совершить спасбросок Телосложения Сл 21. При провале цель получает урон огнём 70 (20к6) и загорается. Загоревшаяся цель получает урон огнём 10 (3к6) в начале каждого своего хода, пока она или кто-то другой не потратит действие, чтобы сбить огонь. При успехе цель получает половину урона и не загорается. + Логово + + Дом Имикса расположен внутри вулкана на Стихийном Плане Огня и выполнен в виде перевёр­нутой огненной пирамиды. Этот дворец крепость известен под именем Храма Абсолютного Поглощения [Temple of Ultimate Consumption]. + + Имикс быстро отвечает на призывы с Материального Плана, поскольку вечно жаждет обратить всё новые и новые леса, луга и королевства в пепел. + Действия логова + + Имикс может повелевать зноем и огнём поблизости от себя. Он может использовать действия логова на Стихийном Плане Огня или в любом огненном элементальном узле (таком, как Рыдающий Колосс, описанный в главе 5). При значении инициативы «20» (в случае ничьей проигрывает всем конку­рентам) Имикс использует действие логова, чтобы вызвать один из следующих эффектов: + Любые источники огня в логове резко вспыхива­ют, при этом занимаемая ими площадь увеличивается в 4 раза (например, огонь, горящий в области 5×5 футов, займёт область 10×10 футов). Этот эффект распространяется на лужи и потоки лавы или других расплавленных материалов. Существа, попавшие в область увеличившегося огня, получают столько же урона, сколько и при вхождении в область обычного огня или при нахождении в такой области. Существа, под­ хваченные внезапным потоком лавы, должны преуспеть в спасброске Силы Сл 20, иначе будут сбиты с ног в дополнение к обычному урону от контакта с магмой. + Облако густого чёрного дыма и тлеющих углей заполняет сферу, радиусом 40 футов, в пределах 120 футов от Имикса. Существа и объекты, на­ходящиеся внутри облака или за ним, считаются сильно заслонёнными. Существо, которое впер­вые за ход входит в облако или начинает там свой ход, получает урон огнём 10 (3к6). Облако рассеивается в следующем раунде при значении инициативы «20». + Область логова радиусом 300 футов вокруг Имикса на мгновение заполняет волна ужасной жары. Все существа, кроме Имикса в этой обла­сти должны совершить спасбросок Телосложения Сл 15, получая при провале урон огнём 1к8. Существа, получившие урон от этого эффекта, также получают один уровень истощения. Кроме того, существует шанс в 50%, что любой сосуд с жидкостью, который несёт или носит подобное существо (например, волшебное зелье), будет уничтожен. + Местные эффекты + + Регион с элементальным узлом, в котором находится Имикс, становится уязвимым к огню. Там проявляются следующие эффекты: + Сухая, жгучая жара обрушивается на область в пределах 10 миль от местоположения Имикса. Сперва эффекты проявляются незначительно­: трава начинает буреть, животные кажутся вялыми, а работа и путешествия превращаются в утомительные занятия. Но чем дольше Имикс остаётся в регионе, тем страшнее становится жара. На 5-­й день погибают посевы и пересы­хают пруды, на 10­-й день дохнет оставленный на солнце скот, исчезают родники и маленькие речушки, на 20-­й день мелеют большие озёра и реки: их глубина сокращается на 20 футов, а площадь уменьшается соответствующим обра­зом. + В пределах 5 миль от логова Имикса вспыхивают лесные пожары. Каждый час, пока персонажи находятся в этой области, существует шанс в 10%, что они окажутся на пути пожара, движу­щегося со скоростью 50 футов в раунд. Каждый персонаж должен совершить спасбросок Телос­ложения Сл 21, получив при провале урон огнём 10 (3к6). Пожар будет угрожать персонажам на протяжении 1к10 раундов или пока они не уйдут с его пути. Там, где прошёл лесной пожар, будут уничтожены любые деревянные строения. + В пределах 1 мили от логова Имикса из-под земли вырываются фонтаны лавы. Каждый час, пока персонажи находятся в этой области, су­ществует шанс в 10%, что они будут достаточно близко к извержению, чтобы оказаться в опас­ности. Извержение создаёт в земле отверстие диаметром в 20 футов и разбрасывает камни и потоки лавы в пределах 200 футов. Каждый персонаж в этой области должен пройти спасбросок Ловкости Сл 21, получая при провале дробящий урон 11 (2к10) плюс урон огнём 17 (5к6). Извержение длится 2к10 раундов, а затем стихает. + В пределах 1 мили от логова Имикса лесные пожары и вулканические трещины создают временные порталы на Стихийный План Огня, про­ пуская в мир смертных элементальных существ, которые будут обитать неподалёку от таких мест. + + Если Имикс уничтожен или изгнан на свой родной план, местные эффекты рассеиваются в течение следующих 1к10 дней. + Описание + + Принц Злого Огня известен как Вечное Пламя и Всепожирающий Огонь, но настоящее его имя — Имикс. В своей истинной форме он представляет собой столб пламени высотой 30 футов и диаметром 10 футов, с дымящимися чёрными провалами вместо глаз. Имикс редко говорит, но, когда что-нибудь горючее вспыхивает в его огненной хватке, он разражается ужасным смехом, сквозь который слышен треск. Имикс презирает смертных существ, и он сожжёт заживо любого, до кого сможет дотянуться, если ему вдруг захочет посмотреть, как кто-нибудь корчится, умирая в его пламени. + + Как и его родная стихия, Имикс обладает пыл­ким темпераментом, непостоянен и в высшей степени разрушителен. Всё, что способно гореть, поддерживает огонь его голода, но наивысшее наслаждение он получает, пожирая имущество разумных существ и дела их рук, такие, как поля, здания или товары. Имикс не щадит даже своих собственных последователей, как и тех, кто пытается умилостивить его дарами и жертвоприношениями: он своенравен, непредсказуем, и его ярость часто сжигает глупцов, возомнивших, что добились его благосклонности. + +Инейный скиталец [Rime Hulk] +BPGG + + Большой? Элементаль, обычно нейтрально-злой + Класс Доспеха 15 (природный доспех) + Хиты 85 (9к10 + 36) + Скорость 30 футов + Сил + 18 (+4) + Лов + 10 (+0) + Тел + 18 (+4) + Инт + 8 (-1) + Мдр + 9 (-1) + Хар + 6 (-2) + Иммунитет к урону холод, яд + Иммунитет к состоянию истощение?, отравление? + Чувства пассивное Восприятие 9 + Языки Акван, Великаний + Опасность 5 (1800 опыта) + Бонус мастерства +3 + + Предсмертная вспышка. Когда инейный скиталец умирает, он взрывается сферой холодного воздуха, радиусом 10 футов с центром в его пространстве. Каждое существо в этой области должно преуспеть в спасброске Телосложения Сл 15, иначе получит 10 (3к6) урона холодом. + Действия + + Мультиатака. Инейный скиталец совершает две атаки Размашистым ударом. + + Размашистый удар. Рукопашная атака оружием: +7 к попаданию, досягаемость 10 футов, одна цель. Попадание: 9 (1к10 + 4) дробящего урона плюс 9 (2к8) урона холодом. + + Морозный шлейф (перезарядка 5-6). Инейный скиталец перемещается на свою скорость, не провоцируя атак, и может перемещаться через пространство существ Среднего размера и меньше. Каждый раз, когда инейный скиталец впервые входит в пространство другого существа во время этого перемещения, это существо должно совершить спасбросок Телосложения Сл 15. В случае провала существо получает 22 (4к10) урона холодом, а его скорость снижается на 10 футов до начала следующего хода инейного скитальца. В случае успеха существо получает только половину этого урона. + Описание + + Впрочем, если говорить серьезно, лучше не погружаться в то, кем были или чем могли бы стать эти скитальцы, если бы у них все сложилось по-другому. Они опасны, и большинство из них не желают вам добра. Действуйте соответственно. + -Бигби + + Инейные скитальцы - это увядшая ветвь генеалогического древа ледяных великанов, происходящая от древних великанов, что удалились от мира и поддались своей элементальной природе. Большинство инейных скитальцев обитают в Вечной Мерзлоте, “Плана Льда”, которая образует границу между Планами Стихий Воздуха и Воды. Другие скрываются в изолированных расщелинах огромных полярных ледников. + + Меньшие по размерам и более слабые, чем их предки, инейные скитальцы представляют собой грубо сформированные массы инея и льда. Их физические формы, отдаленно напоминающие великанов, нестабильны, постоянно распадаясь на части и перестраиваясь по мере того, как от них поднимаются облака холодного воздуха. Когда инейный скиталец движется, он оставляет за собой ледяной след, который может заморозить врагов на месте. Когда он умирает, инейный скиталец взрывается потоком холода. + +Ифрит [Efreeti] +MM14 +MM24 + + Большой? Элементаль, законно-злой + Класс Доспеха 17 (природный доспех) + Хиты 200 (16к10 + 112) + Скорость 40 футов, летая 60 футов + Сил + 22 (+6) + Лов + 12 (+1) + Тел + 24 (+7) + Инт + 16 (+3) + Мдр + 15 (+2) + Хар + 16 (+3) + Спасброски Инт +7, Мдр +6, Хар +7 + Иммунитет к урону огонь + Чувства тёмное зрение? 120 футов, пассивное Восприятие 12 + Языки Игнан + Опасность 11 (7200 опыта) + Бонус мастерства +4 + Местность обитания пустыня + + Элементальная гибель. Если ифрит умирает, его тело распадается во вспышке огня и клубах дыма, оставляя только снаряжение, которое ифрит носил и нёс. + + Врождённое колдовство. Базовой характеристикой ифрита является Харизма (Сл спасброска от заклинания 15, +7 к попаданию атаками заклинаниями). Он может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: обнаружение магии [detect magic]; + 3/день каждое: увеличение/уменьшение [enlarge/reduce], языки [tongues]; + 1/день каждое: газообразная форма [gaseous form], невидимость [invisibility], образ [major image], огненная стена [wall of fire], призыв элементаля [conjure elemental] (только огненный элементаль), уход в иной мир [plane shift]. + Действия + + Мультиатака. Ифрит совершает две атаки скимитаром, либо два раза использует Метание пламени. + + Скимитар. Рукопашная атака оружием: +10 к попаданию, досягаемость 5 футов, одна цель. Попадание: Рубящий урон 13 (2к6 + 6) плюс урон огнём 7 (2к6). + + Метание пламени. Дальнобойная атака заклинанием: +7 к попаданию, дистанция 120 футов, одна цель. Попадание: Урон огнём 17 (5к6). + Вариант: Способности гениев + + Гении обладают различными магическими способностями, включая заклинания. Некоторые владеют столь великой силой, что могут менять обличья или изменять природу реальности. + + Маскировка. Некоторые гении могут скрыть свою истинную природу, наложив на себя иллюзию сходного по сложению другого существа. Такие гении могут неограниченно накладывать заклинание маскировка [disguise self], зачастую с увеличенной длительностью. Более могущественные гении могут накладывать заклинание истинное превращение [true polymorph] от одного до трёх раз в день, возможно, с увеличенной длительностью. Такие гении могут менять только собственный облик, и крайне редко могут накладывать подобные заклинания на других существ или предметы. + + Желания. Среди смертных ходят легенды о гениях, исполняющих желания. Но лишь могущественнейшие из гениев, например, их знатные представители, могут это сделать. Те из них, кто обладают такой силой, могут даровать исполнение от одного до трёх желаний любому существу, кроме другого гения. Если гений уже исполнил свой предел желаний, он не сможет сделать это вновь в течение некоторого времени (обычно 1 год), и, согласно законам вселенной, один и тот же гений может потратить свой лимит желаний на другое существо только один раз в жизни этого существа. + + Чтобы гений исполнил желание, существо должно сформулировать его, находясь в 60 футах от гения. После этого гений накладывает заклинание исполнение желаний [wish], воспроизводящее эффект. Изворотливые по своей природе гении могут попытаться извратить желание, воспользовавшись несовершенством его формулировки. Как правило, искажение формулировок гении оборачивают себе на пользу. + Описание + + «АРМИЯ ВЕЛИКОГО СУЛТАНА УСИЛЕНА ЛЕГИОНОМ ДЬЯВОЛОВ, ЕГО ОБИТЕЛЬ ЗАЩИЩЕНА ЗАКЛИНАНИЯМИ ТЫСЯЧИ АРХИМАГОВ, ЕГО СОКРОВИЩА ОХРАНЯЮТ КРАСНЫЕ ДРАКОНЫ И ОГНЕННЫЕ ЭЛЕМЕНТАЛИ. НИКТО НЕ СМОГ ОГРАБИТЬ ЛЕГЕНДАРНЫЕ ЧЕРТОГИ ИФРИТОВ И ВЕРНУТЬСЯ ЖИВЫМ, ЧТОБЫ ПОВЕДАТЬ ОБ ЭТОМ. МИЛОСТЬЮ ТЫСЯЧИ ВЕТРОВ, ТЫ МОЖЕШЬ СТАТЬ ПЕРВЫМ» + + — ДЖИНН ЗАВЛЕКАЕТ ИСКАТЕЛЕЙ ПРИКЛЮЧЕНИЙ, ЧТОБЫ ОСВОБОДИТЬ СВОЕГО ХАЛИФА ИЗ ВОЛШЕБНОЙ ЛАМПЫ В УГОЛЬНОМ ДВОРЦЕ ЛАТУННОГО ГОРОДА» + + Ифриты — громадные гении со Стихийного Плана Огня — повелевают пламенем, обладают иммунитетом к огню и способны создавать его по своему желанию. Тонкие шёлковые кафтаны и узорчатые одеяния покрывают их красную, как лава, или чёрную, как уголь, кожу. Ифриты украшают себя сверкающими ожерельями, цепями и кольцами с драгоценными камнями. Во время полёта нижняя часть тела ифрита выглядит как столб дыма и тлеющих углей. + + Надменные и жестокие. Ифриты коварны, хитры и жестоки, а порой беспощадны. Они не выносят вынужденной службы и безжалостны в своей мести тем, кто причинил им вред. Сами ифриты этого не осознают, и считают свою расу честной и спокойной, хотя и признают, что немного эгоистичны. + + Злобные рабовладельцы. Ифриты расценивают все остальные расы как врагов или потенциальных рабов. За рабами они совершают набеги на Материальный и стихийные планы. Ифриты правят как деспоты и тираны, возвышая лишь жесточайших из рабов. Те становятся надсмотрщиками, которые при помощи кнута держат в узде остальных рабов. + + Планарные налётчики. Большинство ифритов живёт на Стихийном Плане Огня, в больших увенчанных куполами крепостях из чёрного стекла и базальта, окружённых кипящими огненными озёрами, или в знаменитом Латунном городе. Кроме того, по многим планам разбросаны военные аванпосты ифритов, переполненные их приспешниками и рабами. + + На Материальном Плане ифриты обитают в жарких местах, таких как вулканы или пустыни. Их любовь к пустыням приводит к конфликтам с джиннами, которые ездят на пустынных смерчах, и связанными с землёй дао. Ифриты ненавидят маридов, с которыми враждуют весь период существования обеих рас. + + См. дополнительно статью: "Бестиарий: Гении" + +Колыбель каменного отпрыска [Cradle of the Stone Scion] +BPGG + + Громадный? Элементаль, обычно нейтральный + Класс Доспеха 20 (природный доспех) + Хиты 455 (26к20 + 182) + Скорость 40 футов + Сил + 26 (+8) + Лов + 15 (+2) + Тел + 24 (+7) + Инт + 11 (+0) + Мдр + 18 (+4) + Хар + 10 (+0) + Спасброски Мдр +11, Хар +7 + Сопротивление урону огонь, холод, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону кислота, яд + Иммунитет к состоянию испуг?, истощение?, окаменение?, отравление?, очарование?, паралич?, сбивание с ног? + Чувства пассивное Восприятие 14, чувство вибрации? 120 футов + Языки Великаний, Первичный + Опасность 23 (50 000 опыта) + Бонус мастерства +7 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Скорауса [scion of Skoraeus]. Когда хиты колыбели уменьшаются до 0, её остов рассыпается в пыль. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает две атаки Размашистым ударом или Плевком камнем. + + Размашистый удар. Рукопашная атака оружием: + 15 к попаданию, досягаемость 20 футов, одна цель. Попадание: 30 (4к10 + 8) дробящего урона. + + Плевок камнем. Дальнобойная атака оружием: +15 к попаданию, дистанция 120 футов, одна цель. Попадание: 24 (3к10 + 8) дробящего урона, и цель должна преуспеть в спасброске Силы Сл 23, иначе упадёт ничком. + + Сокрушительный рёв (перезарядка 5-6). Колыбель издает болезненный протяжный рёв. Каждое существо в пределах 60 футов от колыбели должно совершить спасбросок Телосложения Сл 23. В случае провала существо получает 33 (6к10) урона звуком и становится недееспособным до конца своего следующего хода. + Бонусные действия + + Сияющие кристаллы. Колыбель заставляет кристаллы на своём теле вспыхивать светом. Каждое существо в пределах 30 футов от колыбели должно преуспеть в спасброске Телосложения Сл 22, иначе получит 21 (6к6) урона излучением и станет ослеплённым до конца следующего хода колыбели. + + Каменные шипы. Колыбель заставляет землю на 20-футовом квадрате, находящейся в пределах 90 футов от себя прорасти кристаллическими шипами до начала своего следующего хода. На это время местность становится труднопроходимой. Если существо перемещает по этой местности оно получает 10 (3к6) колющего урона за каждые пройденные 5 футов. + Описание + + Отпрыск Скорауса обычно дремлет глубоко в сердце возвышающейся горы, почти сливаясь с землей. Пока отпрыск спит, горные минералы превращаются в изящные резные камни и блестящие самоцветы. + + Если шахтер прокладывает туннель слишком близко к сердцу горы, колыбель просыпается в виде двуногой массы камня и кристаллов. Она обрушивает тяжесть горы на голову нарушителя и издает оглушительный рёв, способный обрушить шахтные туннели. + + Если колыбель разрушена, отпрыск Скорауса внутри нее пробуждается. Достигая почти 70 футов в высоту, он возвышается над большинством других существ и использует массу кристаллов в качестве дубинки. Однажды пробудившись, отпрыск продолжает заниматься искусством, которое украшало его сны, стремясь придать камню прекрасную элегантность. Если ему понадобится больше сырья, отпрыск может превратить живое существо на своей ладони в камень. + +Колыбель ледяного отпрыска [Cradle of the Frost Scion] +BPGG + + Громадный? Элементаль, обычно нейтрально-злой + Класс Доспеха 20 (природный доспех) + Хиты 499 (27к20 + 216) + Скорость 40 футов, плавая 40 футов + Сил + 27 (+8) + Лов + 14 (+2) + Тел + 26 (+8) + Инт + 11 (+0) + Мдр + 19 (+4) + Хар + 16 (+3) + Спасброски Мдр +11, Хар +10 + Сопротивление урону огонь, электричество; немагический дробящий, колющий, рубящий + Иммунитет к урону холод, яд + Иммунитет к состоянию испуг?, истощение?, окаменение?, отравление?, очарование?, паралич? + Чувства тёмное зрение? 120 футов, пассивное Восприятие 14 + Языки Великаний, Первичный + Опасность 24 (62 000 опыта) + Бонус мастерства +7 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Трима. Когда хиты колыбели уменьшаются до 0, её остов распадается ледяными осколками. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает две атаки Размашистым ударом или Метанием льдины. + + Размашистый удар. Рукопашная атака оружием: + 15 к попаданию, досягаемость 20 футов, одна цель. Попадание: 30 (4к10 + 8) дробящего урона плюс 11 (2к10) урона холодом. + + Метание льдины. Дальнобойная атака оружием: +15 к попаданию, дистанция 120 футов, одна цель. Попадание: 26 (4к8 + 8) колющего урона плюс 9 (2к8) урона холодом и цель должна преуспеть в спасброске Силы Сл 23, иначе упадёт ничком. + + Морозное дыхание (перезарядка 5-6). Колыбель выдыхает поток холода в виде 90-футового конуса. Каждое существо в этой области должно совершить спасбросок Телосложения Сл 23. В случае провала существо получает 52 (8к12) урона холодом, а его скорость уменьшается до 0 до конца его следующего хода. В случае успеха существо получает получает половину этого урона. Если этот урон уменьшает хиты цели до 0, она вместо этого остаётся с 1 хитом и становится окаменевшей, превращаясь в ледяную статую. + + Если статуя получает дробящий урон, она разбивается вдребезги, убивая замороженное существо. Если статуя получает урон огнём, то вместо этого она не получает никакого урона и оттаивает, оканчивая окаменение. + Бонусные действия + + Леденящий туман. Колыбель волшебным образом создает облако леденящего тумана, заполняющий сферу радиусом 30 футов с центром в точке, которую она может видеть на расстоянии 90 футов. Туман огибает углы. Каждое существо в этой области должно преуспеть в спасброске Телосложения 19, иначе получит 28 (8к6) урона холодом и не сможет совершать реакции до начала своего следующего хода. Туман исчезает в конце хода колыбели. + Описание + + Дремлющий отпрыск Трима, заключенный в свою колыбель, идентичен леднику или айсбергу, расположенному в высокогорной долине или дрейфующему в полярном море. В своем зимнем уединении отпрыск мечтает о битве и славе. + + Если его потревожить, колыбель отпрыска оживет в виде двуногой фигуры, сделанной изо льда и снега. Она разбивает незваных гостей своими ледяными кулаками или швыряет в них осколки своей собственной ледяной субстанции, а также может выдохнуть струю холодного воздуха, чтобы заморозить врагов на месте. + + Если колыбель разрушена, её ледяное тело разлетается вдребезги, демонстрируя пробужденного отпрыска Трима внутри неё. Сжимая в руке обоюдоострый топор, 70-футовый отпрыск бросается на любого врага, который осмеливается бросить ему вызов. Подражая сагам о Триме, отпрыск может достичь невероятной силы: создать ледник в земле и подбросить его в небо вместе с любыми существами, стоящими на нём. + + + --- + + +Колыбель облачного отпрыска [Cradle of the Cloud Scion] +BPGG + + Громадный? Элементаль, обычно хаотично-нейтральный + Класс Доспеха 19 (природный доспех) + Хиты 624 (32к20 + 288) + Скорость 0 футов, летая 90 футов (парит) + Сил + 29 (+9) + Лов + 21 (+5) + Тел + 28 (+9) + Инт + 14 (+2) + Мдр + 22 (+6) + Хар + 19 (+4) + Спасброски Инт +10, Хар +12 + Сопротивление урону огонь, холод, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону звук, яд + Иммунитет к состоянию захват?, истощение?, окаменение?, опутанность?, отравление?, ошеломление?, паралич?, сбивание с ног? + Чувства пассивное Восприятие 16 + Языки Великаний, Первичный + Опасность 26 (90 000 опыта) + Бонус мастерства +8 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Мемнора [scion of Memnor]. Когда хиты колыбели уменьшаются до 0, её остов развеивается облаками. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Пролёт. Колыбель не провоцирует атаку, когда она вылетает за пределы досягаемости врага. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает три атаки Размашистым ударом или Копьём ветра, в любой комбинации. + + Размашистый удар. Рукопашная атака оружием: + 17 к попаданию, досягаемость 20 футов, одна цель. Попадание: 31 (4к10 + 9) дробящего урона плюс 19 (3к12) урона звуком. + + Копьё ветра. Дальнобойная атака оружием: +17 к попаданию, дистанция 120 футов, одна цель. Попадание: 27 (4к8 + 9) дробящего урона плюс 10 (3к6) урона звуком, и цель должна преуспеть в спасброске Силы Сл 25, иначе упадёт ничком. + + Вихрь (перезарядка 5-6). Колыбель создает вихрь ветра в точке, которую она может видеть в пределах 90 футов от себя. Вихрь ветра представляет собой цилиндр радиусом 30 футов и высотой 100 футов с центром в этой точке. Каждое существо, кроме колыбели, в этой области должно совершить спасбросок Ловкости Сл 25. В случае провала существо получает 71 (11к12) дробящего урона и становится опутанным, оказываясь внутри вихря. В случае успеха существо получает половину этого урона и перемещается в ближайшее незанятое пространство за пределами цилиндра. Вихрь существует до начала следующего хода колыбели. Опутанное существо падает ничком, когда вихрь заканчивается. + Опутанное существо может действием попытаться вырваться из вихря. Оно должно совершить проверку Силы (Атлетика) Сл 19 или Ловкости (Акробатика). В случае успеха существо вырывается и перемещается на расстояние 3к6 × 10 футов от вихря в случайном направлении. + Реакции + + Раскат грома. Сразу после получения урона колыбель испускает удар грома сферой радиусом 30 футов, с центром на себе. Каждое существо в этой области должны преуспеть в спасброске Телосложения Сл 25, иначе получит 18 (4к8) урона звуком и становится оглохшим на 1 минуту. + Описание + + Дремлющий отпрыск Мемнора предстает в виде плотной, медленно дрейфующей башни из облаков, которая никогда не рассеивается. Часто это облако задерживается над удалённой долиной, создавая постоянно затянутое тучами небо. Разумные существа, живущие под этим облаком, часто проявляют суеверное и лицемерное поведение, почти бессознательно оставляя подарки “духам дождя” и при этом озорно подшучивая друг над другом. + + При пробуждении, колыбель облачного отпрыска проявляется как титанический элементаль воздуха, созданный из свирепых ветров и клочьев облаков. Он повелевает воздухом и громом, сбрасывая врагов с небес. + + Если колыбель разрушена, отпрыск Мемнора появляется из рассеивающегося облака, часто смеясь, как будто только что услышал отличную шутку. Невероятно высокий и долговязый, отпрыск возвышается на 75 футов и владеет моргенштерном, магически сотканным из плотных облаков. Он склонен рассматривать других существ скорее как игрушки, чем как серьезную угрозу, и использует свою магию иллюзии, чтобы заставить существ сражаться друг с другом. Если ему угрожает серьезная опасность, он использует гром и ветер, чтобы уничтожить своих врагов. + +Колыбель огненного отпрыска [Cradle of the Fire Scion] +BPGG + + Громадный? Элементаль, обычно законно-злой + Класс Доспеха 20 (природный доспех) + Хиты 555 (30к20 + 240) + Скорость 40 футов + Сил + 28 (+9) + Лов + 12 (+1) + Тел + 27 (+8) + Инт + 12 (+1) + Мдр + 20 (+5) + Хар + 17 (+3) + Сопротивление урону холод, электричество; немагический дробящий, колющий, рубящий + Иммунитет к урону огонь, яд + Иммунитет к состоянию истощение?, окаменение?, отравление? + Чувства тёмное зрение? 120 футов, пассивное Восприятие 15 + Языки Великаний, Первичный + Опасность 25 (75 000 опыта) + Бонус мастерства +8 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Суртура [scion of Surtur]. Когда хиты колыбели уменьшаются до 0, её остов каменеет, после чего обращается в прах. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает три атаки Размашистым ударом или Извержением лавы в любой их комбинации. + + Размашистый удар. Рукопашная атака оружием: + 17 к попаданию, досягаемость 20 футов, одна цель. Попадание: 31 (4к10 + 9) дробящего урона плюс 14 (4к6) урона огнём. + + Извержение лавы. Дальнобойная атака оружием: +17 к попаданию, дистанция 120 футов, одна цель. Попадание: 27 (4к8 + 9) урона огнём. Если целью является существо или легковоспламеняющийся предмет, он воспламеняется. До тех пор, пока существо находящееся в 5 футов от воспламенения и не использует действие что бы потушить огонь, цель получает 10 (3к6) урона огнём в начале каждого своего хода. + + Извергающееся дыхание (перезарядка 5-6). Колыбель выдыхает пламя и вулканические газы в виде 90-футового конуса. Каждое существо в этой области должно совершить спасбросок Ловкости Сл 24. В случае провала существо получает 55 (10к10) урона огнём и становится отравленным на 1 минуту. В случае успеха существо получает половину этого урона. + + Существо, отравленное таким образом, может совершать спасбросок Телосложения Сл 24 в конце каждого своего хода, оканчивая на себе дейтсвие эффекта в случае успеха. + Бонусные действия + + Лавовый гейзер. Колыбель вызывает извержение лавы из точки на земле, которую она может видеть в пределах 120 футов. Каждое существо в цилиндре радиусом 20 футов и высотой 50 футов с центром в этой точке должно совершить спасбросок Ловкости Сл 21, иначе получит 14 (4к6) урона огнём. + Описание + + Отпрыск Суртура, дремлющий на вершине вулкана, заставляет подниматься нескончаемый столб дыма, иногда подсвечиваемый снизу огненными всплесками лавы. Пока отпрыск грезит о битве — возможно, о битве за то, чтобы вывести Аннама из затворничества, объединив великанов или о войне за завоевание всего во имя Суртура — вулкан грохочет и извергает расплавленную ярость. + + Если незваные гости потревожат место его упокоения, колыбель огненного отпрыска поднимется в виде двуногого джаггернаута из расплавленного камня. Иногда шахтеры рискуют своей жизнью, чтобы найти богатые залежи руды в вулкане отпрыска или заблудшие приверженцы культа огня приносят жертвы, призванные умиротворить или пробудить вулкан, но пробужденная колыбель бросает вызов всем их ожиданиям. Подобно живому вулкану, колыбель метает в незваных гостей шары магмы, выдыхает пылающие газы и заставляет расплавленный камень извергаться из земли вокруг неё. + + Если колыбель разрушена, отпрыск Суртура внутри нее пробуждается. Фигура отпрыска высотой 60 футов окутана непрерывным облаком вздымающегося пепла и дыма. Пробужденный отпрыск формирует клинок из лавы в своей могучей руке и планирует возобновить свои древние завоевательные кампании, предпочтительно во главе армии огненных великанов. + +Колыбель холмового отпрыска [Cradle of the Hill Scion] +BPGG + + Громадный? Элементаль, обычно хаотично-злой + Класс Доспеха 19 (природный доспех) + Хиты 402 (23к20 + 161) + Скорость 40 футов + Сил + 25 (+7) + Лов + 10 (+0) + Тел + 24 (+7) + Инт + 9 (-1) + Мдр + 16 (+3) + Хар + 10 (+0) + Спасброски Мдр +10, Хар +7 + Сопротивление урону огонь, холод, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию истощение?, окаменение?, отравление?, паралич?, сбивание с ног? + Чувства пассивное Восприятие 13 + Языки Великаний, Первичный + Опасность 22 (41 000 опыта) + Бонус мастерства +7 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Гролантора [scion of Grolantor]. Когда хиты колыбели уменьшаются до 0, её остов рассыпается в грязь и мох. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает три атаки Размашистым ударом или Плевком камнем, в любой комбинации и одну атаку Цепким корнем. + + Размашистый удар. Рукопашная атака оружием: + 14 к попаданию, досягаемость 20 футов, одна цель. Попадание: 33 (4к12 + 7) дробящего урона. + + Плевок камнем. Дальнобойная атака оружием: +14 к попаданию, дистанция 120 футов, одна цель. Попадание: 25 (4к8 + 7) дробящего урона, и цель должна преуспеть в спасброске Силы Сл 22, иначе упадёт ничком. + + Цепкий корень. Рукопашная атака оружием: +14 к попаданию, досягаемость 30 футов, одно существо не схваченное колыбелью. Попадание: цель становится схваченной (Сл высвобождения17). Пока захват не закончится, цель получает 29 (4к10 + 7) дробящего урона в начале каждого своего хода. Корень имеет КД 19, и его можно отсечь, нанеся ему 15 или более рубящего урона за одну атаку. Отсечение корня не вредит колыбели, но окончит захват. + + Холмистая местность (перезарядка 6). Колыбель волшебным образом создает волну грязи, распространяющаяся из точки на земле, находящейся в пределах 120 футов от себя. Волна достигает 30 футов в длину, до 30 футов в высоту и до 30 футов в ширину. Каждое существо оказавшееся в волне должно совершить спасбросок Силы Сл 22. В случае провала существо получает 58 (9к12) дробящего урона, падает ничком и становится погребенным под грязью. В случае успеха существо получает только половину этого урона. + + Погребенное существо опутано, имеет полное укрытые и не может дышать. Действием существо, погребённое таким образом или другое существо находящееся в 5 футов от него, которое не погребено, может совершить проверку Силы (Атлетика) Сл 17. В случае успеха погребенное существо перестаёт быть опутанным и сбитым с ног. + Описание + + Дремлющего отпрыска Гролантора часто принимают за холм, и иногда люди возводят стоячие камни, деревню или город на спине отпрыска, не подозревая о могучей силе, скрывающейся под ними. Такие поселения могут процветать веками, поскольку магия отпрыска способствует процветанию сельскохозяйственных культур и домашнего скота в окружающем регионе. Древнее дерево возвышается на гребне холма. + + При пробуждении "колыбель холмового отпрыска" поднимается в виде массы грязи, камня и корней с двумя массивными ветвями. Колыбель использует корни деревьев и волны грязи, чтобы сковать и похоронить врагов. + + Если колыбель разрушена, отпрыск Гролантора внутри нее пробуждается. Достигая 50 футов в высоту, отпрыск пожирает все, что находится в пределах досягаемости, чтобы утолить свой голод. Его мощные легкие могут всасывать пищу прямо в пищевод. Отпрыск использует огромное дерево, чтобы отбрасывать врагов на далёкие расстояния. + +Колыбель штормового отпрыска [Cradle of the Storm Scion] +BPGG + + Громадный? Элементаль, обычно хаотично-добрый + Класс Доспеха 19 (природный доспех) + Хиты 682 (35к20 + 315) + Скорость 40 футов, плавая 60 футов, летая 60 футов (парит) + Сил + 30 (+10) + Лов + 14 (+2) + Тел + 29 (+9) + Инт + 16 (+3) + Мдр + 23 (+6) + Хар + 18 (+4) + Сопротивление урону звук, огонь, холод; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону электричество, яд + Иммунитет к состоянию захват?, истощение?, окаменение?, опутанность?, отравление?, ошеломление?, паралич?, сбивание с ног? + Чувства пассивное Восприятие 16 + Языки Великаний, Первичный + Опасность 27 (105 000 опыта) + Бонус мастерства +8 + + Пробуждение отпрыска. Колыбель - это сосуд отпрыска Стронмауса [scion of Stronmaus]. Когда хиты колыбели уменьшаются до 0, её остов взрывается вспышкой света. Отпрыск мгновенно появляется в том пространстве, которое занимала колыбель, и использует инициативу колыбели. + + Легендарное сопротивление (5/день). Если колыбель проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Колыбель совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадный монстр. Колыбель наносит двойной урон объектам и сооружениям. + Действия + + Мультиатака. Колыбель совершает три атаки Размашистым ударом или Плевком градом в любой их комбинации. + + Размашистый удар. Рукопашная атака оружием: + 18 к попаданию, досягаемость 20 футов, одна цель. Попадание: 36 (4к12 + 10) дробящего урона плюс 19 (3к12) урона электричеством. + + Плевок градом. Дальнобойная атака оружием: +18 к попаданию, дистанция 120 футов, одна цель. Попадание: 32 (4к10 + 10) дробящего урона плюс 14 (4к6) урона холодом, и цель должна преуспеть в спасброске Силы Сл 26, иначе упадёт ничком. + + Шквал молний (перезарядка 5-6). Колыбель метает множество магических молний в двух существ, которых она может видеть в пределах 500 футов от себя. Каждая цель должна совершить спасбросок Ловкости Сл 22. В случае провала цель получает 71 (11к12) урона электричеством и становится ошеломлённой до конца своего следующего хода. В случае успеха цель получает только половину этого урона. + Реакции + + Громовой шаг. Сразу после получения урона колыбель с грохотом разлетается, а затем волшебным образом телепортируется до 60 футов в видимое ей незанятое пространство. Каждое существо в пределах 10 футов от места, оставленного колыбелью, должно совершить спасбросок Телосложения Сл 22, получая 14 (4к6) урона звуком в случае провала или половину этого урона в случае успеха. + Описание + + Отпрыск Стронмауса часто дремлет высоко в небе или глубоко в океане, где суматоха, вызываемая беспокойным сном отпрыска, мало влияет на окружающий мир. Если он дрейфует слишком близко к земле или поверхности океана, это вызывает сильные штормы или свирепые водовороты. Сон наследника наполнен снами, варьирующимися от вдохновляющих видений возвращения Аннама до меланхоличных пророчеств о неизбежном упадке, от радостных проблесков идиллического прошлого до ужасающих кошмаров о мучениях и опустошении. + + Колыбель штормового отпрыска начинает действовать не только тогда, когда отпрыску угрожает опасность, но и в том случае, если сон отпрыска нарушен кошмарами. Когда колыбель пробуждается, она приобретает форму смутно напоминающую великана, состоящую из яростно кружащихся воздуха, воды и льда. + + Если колыбель разрушена, отпрыск Стронмауса внутри нее пробуждается. Одно из самых могущественных созданий всего рода великанов, отпрыск достигает 80 футов в высоту. Он часто находит некоторое облегчение в пробуждении и освобождении от своих тревожных снов, поэтому не обязательно прибегает к насилию, когда выходит из своей колыбели. Но его не особенно интересуют гуманоиды или другие маленькие существа — ни общение с ними, ни защита от вреда, который они могут причинить. + + Если отпрыску угрожает опасность, он высвобождает мощь стихий, на которую способны немногие другие силы в мультивселенной: клинки молний, градины размером с валун и ураган из бушующих стихий. + +Комета-убийца [Murder Comet] +SAS + + Средний? Элементаль, обычно нейтрально-злой + Класс Доспеха 19 (природный доспех) + Хиты 66 (7к8 + 35) + Скорость 0 футов, летая 120 футов + Сил + 15 (+2) + Лов + 15 (+2) + Тел + 20 (+5) + Инт + 6 (-2) + Мдр + 10 (+0) + Хар + 6 (-2) + Иммунитет к урону огонь, яд + Иммунитет к состоянию бессознательность?, истощение?, окаменение?, отравление?, паралич?, сбивание с ног? + Чувства тёмное зрение? 240 футов, пассивное Восприятие 10 + Языки Игнан, Терран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + + Взрыв. Когда хиты кометы опускаются до 0, она взрывается сферой радиусом 20 футов с центром на себе. Все существа в сфере должны совершить спасбросок Ловкости Сл 16, получая 28 (8к6) урона огнём при провале, или половину этого урона при успехе. + + Пролёт. Комета не провоцирует атаки, когда вылетает из досягаемости врага. + + Свечение. Комета испускает яркий свет в пределах 30 футов и тусклый свет в пределах ещё 30 футов. + + Осадное чудовище. Комета наносит двойной урон объектам и сооружениям. + + Необычная природа. Комета не нуждается в воздухе, еде, питье и сне. + Действия + + Мультиатака. Комета совершает одну атаку Размашистым ударом и одну атаку Плевком огня. + + Размашистый удар. Рукопашная атака оружием: +5 к попаданию, досягаемость 5 футов, одна цель. Попадание: 6 (1к8 + 2) дробящего урона плюс 7 (2к6) урона огнём. + + Плевок огнём. Дальнобойная атака оружием: +5 к попаданию, дистанция 60 фт., одна цель. Попадание: 13 (2к10 + 2) урона огнём. + Описание + + Злые заклинатели создают комет-убийц, соединяя сущность элементалей земли и элементалей огня. Комета-убийца выглядит как кричащая каменная голова, объятая пламенем. Она оставляет за собой огненный след, когда летит через Дикий космос. Одна или в группе с другими кометами-убийцами, она выискивает корабли, экипажи и другие ничего не подозревающие цели для уничтожения. + + Создатель кометы-убийцы может привязать свой дух к комете. В таком виде создатель становится вечным и бессмертным. Он может свободно носиться по Дикому космосу, не нуждаясь в воздухе, сне, пропитании. Лицо кометы-убийцы принимает облик её создателя, а её статистика изменяется следующим образом: + + Замените показатели характеристики Интеллекта, Мудрости и Харизмы кометы на показатели её создателя. + Замените мировоззрение и языки кометы соответствующими его создателю. + +Левиафан [Leviathan] +MPMM + + Громадный? Элементаль, обычно нейтральный + Класс Доспеха 17 + Хиты 328 (16к20 + 160) + Скорость 40 футов, плавая 120 футов + Сил + 27 (+8) + Лов + 24 (+7) + Тел + 30 (+10) + Инт + 2 (-4) + Мдр + 18 (+4) + Хар + 17 (+3) + Спасброски Мдр +10, Хар +9 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону кислота, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, захват?, паралич?, ошеломление?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 14 + Опасность 20 (25 000 опыта) + Бонус мастерства +6 + Местность обитания побережье, под водой + + Легендарное сопротивление (3/день). Если Левиафан проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Частичная заморозка. Если Левиафан получает 50 урона холодом или более за один ход, Левиафан частично замораживается; до конца его следующего хода, его скорость уменьшается до 20 футов, и он совершает атаки с помехой. + + Осадное чудовище. Левиафан наносит двойное повреждение объектам и строениям (включено в Волну прилива). + + Водяное тело. Левиафан может войти в клетку враждебного существа и остановиться там. Он может проходить через пространства размером более одного дюйма не протискиваясь. + Действия + + Мультиатака. Левиафан совершает одну атаку Размашистым ударом и одну атаку Хвостом. + + Размашистый удар. Рукопашная атака оружием: +14 к попаданию, досягаемость 20 футов, одна цель. Попадание: 21 (2к12 + 8) дробящего урона плюс 13 (2к12) урона кислотой. + + Хвост. Рукопашная атака оружием: +14 к попаданию, досягаемость 20 футов, одна цель. Попадание: 19 (2к10 + 8) дробящего урона плюс 10 (3к6) урона кислотой. + + Приливная волна (перезарядка 6). Левиафан магическим образом создаёт волну, исходящей из видимой точки в пределах 120 футов. Волна достигает в длину и высоту до 250 футов, а ширину до 50 футов. Когда волна появляется, все остальные существа в зоне должны совершить спасбросок Силы Сл 24. При провале существа получают 45 (7к12) дробящего урона или половину этого урона при успехе. Вода растекается по земле во всех направлениях, туша незащищенное пламя в своей области и в пределах 250 футов от неё, после чего исчезает. + Легендарные действия + + Левиафан может совершить 3 легендарных действия, выбирая из перечисленных действий. Можно делать только одно легендарное действие, и только в конце хода другого существа. Левиафан восстанавливает все легендарные действия в начале своего хода. + + Удар (стоит 2 действия). Левиафан совершает одну атаку Размашистым ударом. + + Перемещение. Левиафан перемещается на свою скорость. + Описание + + Левиафан - это огромное существо, которое действует как сила природы, что тянет корабли ко дну океана и смывает прибрежные поселения. Когда его призывают, левиафан возникает из огромного количества воды, преобразуясь в огромное змееобразное существо. + + Обычно встречающийся только на Стихийном Плане Воды, левиафан иногда проплывает через портал в другой мир, где тритоны, морские эльфы и другие водные обитатели пытаются его сдержать. Известно также, что нигилистические культы совершают сложные ритуалы для вызова левиафана в мир с целью использования этого существа для уничтожения прибрежных поселений. Эти культисты часто считают благословением утонуть в водах элементаля. + +Ледяной мефит [Ice mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 11 + Хиты 21 (6к6) + Скорость 30 футов, летая 30 футов + Сил + 7 (-2) + Лов + 13 (+1) + Тел + 10 (+0) + Инт + 9 (-1) + Мдр + 11 (+0) + Хар + 12 (+1) + Навыки Восприятие +2, Скрытность +3 + Уязвимость к урону огонь; дробящий + Иммунитет к урону холод, яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 12 + Языки Акван, Ауран + Опасность 1/2 (100 опыта) + Бонус мастерства +2 + Местность обитания арктика + + Предсмертная вспышка. Когда мефит умирает, он разлетается во все стороны обломками льда. Все существа в пределах 5 футов от него должны совершить спасбросок Ловкости Сл 10, получая рубящий урон 4 (1к8) при провале, или половину этого урона при успехе. + + Обманчивая внешность. Пока мефит остается без движения, он неотличим от обычной глыбы льда. + + Врождённое колдовство (1/день). Мефит может накладывать туманное облако [fog cloud], не нуждаясь в материальных компонентах. Его базовой характеристикой является Харизма. + Действия + + Когти. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одно существо. Попадание: Рубящий урон 3 (1к4 + 1) плюс урон холодом 2 (1к4). + + Ледяное дыхание (перезарядка 6). Мефит выдыхает холодный воздух 15-футовым конусом. Все существа в этой области должны преуспеть в спасброске Ловкости Сл 10, получая урон холодом 5 (2к4) при провале, или половину этого урона при успехе. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Ледяные мефиты состоят из холодного воздуха и воды. Они отчужденные и холодные, и превосходят всех остальных мефитов в беспощадной жестокости. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + +Магмин [Magmin] +MM14 +MM24 + + Маленький? Элементаль, хаотично-нейтральный + Класс Доспеха 14 (природный доспех) + Хиты 9 (2к6 + 2) + Скорость 30 футов + Сил + 7 (-2) + Лов + 15 (+2) + Тел + 12 (+1) + Инт + 8 (-1) + Мдр + 11 (+0) + Хар + 10 (+0) + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан + Опасность 1/2 (100 опыта) + Бонус мастерства +2 + + Предсмертная вспышка. Когда магмин умирает, он взрывается огнём и лавой. Все существа в пределах 10 футов от него должны совершить спасбросок Ловкости Сл 11, получая урон огнём 7 (2к6) при провале, или половину этого урона при успехе. Горючие предметы, которые никто не несет и не носит в этой области, воспламеняются. + + Свечение от горения. Магмин может бонусным действием вспыхнуть или погасить пламя на себе. Пока магмин горит, он испускает яркий свет в радиусе 10 футов и тусклый свет в пределах ещё 10 футов. + Действия + + Касание. Рукопашная атака оружием: +4 к попаданию, досягаемость 5 футов, одна цель. Попадание: Урон огнём 7 (2к6). Если цель — существо или горючий предмет, она воспламеняется. Пока какое-нибудь существо не потушит огонь действием, цель получает урон огнём 3 (1к6) в конце каждого своего хода. + Описание + + Магмины — зловредные существа с поганой ухмылкой, похожие на приземистого человека, сделанного из куска чёрной магмы. Даже когда они не горят в полную силу, распространяя вокруг себя жар, словно от большого костра, сквозь их пористую кожу пробиваются небольшие языки пламени. + + Призванные пироманы. Магмины — стихийные духи огня, получившие физическое воплощение при помощи магии, поэтому они могут появиться на Материальном Плане только тогда, когда их призывают. Все воспламеняющиеся предметы они воспринимают как потенциальную растопку для грандиозного пожара, и только магический контроль со стороны призвавшего сдерживает их от того, чтобы поджигать все, к чему они прикасаются. Непредсказуемая огненная природа магминов делает их идеальными инструментами для желающих сеять хаос и разрушения. Группа магминов, призванных в стенах замка, может за считанные минуты превратить его в дымящиеся развалины. + + Разрушительное пламя. Огонь магминов жарок, но его сдерживает твердый магматический панцирь, не позволяющий мгновенно воспламенять все, что находится поблизости. При этом, подобно пламени, горящему у них внутри, магмины капризны и непредсказуемы. Более того, как довольно примитивные стихийные создания, они могут забывать о том, что их родная стихия может причинять вред существам Материального Плана. + + Если призванному магмину представится такая возможность, он постарается забраться туда, где пожарче — они любят лесные пожары и бурлящие озера лавы в жерлах активных вулканов. Если такой возможности нет, магмин будет время от времени неосознанно высвобождать пламя из кончиков своих пальцев, утешаясь хотя бы возможностью что-нибудь поджечь. + +Магмовый мефит [Magma mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 11 + Хиты 22 (5к6 + 5) + Скорость 30 футов, летая 30 футов + Сил + 8 (-1) + Лов + 12 (+1) + Тел + 12 (+1) + Инт + 7 (-2) + Мдр + 10 (+0) + Хар + 10 (+0) + Навыки Скрытность +3 + Уязвимость к урону холод + Иммунитет к урону огонь, яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан, Терран + Опасность 1/2 (100 опыта) + Бонус мастерства +2 + Местность обитания подземье + + Предсмертная вспышка. Когда мефит умирает, он разлетается во все стороны потоками лавы. Все существа в пределах 5 футов от него должны совершить спасбросок Ловкости Сл 11, получая урон огнём 7 (2к6) при провале, или половину этого урона при успехе. + + Обманчивая внешность. Пока мефит остается без движения, он неотличим от обычного наплыва магмы. + + Врождённое колдовство (1/день). Мефит может накладывать раскалённый металл [heat metal] (Сл спасброска от заклинания 10), не нуждаясь в материальных компонентах. Его базовой характеристикой является Харизма. + Действия + + Когти. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одно существо. Попадание: Рубящий урон 3 (1к4 + 1) плюс урон огнём 2 (1к4). + + Огненное дыхание (перезарядка 6). Мефит выдыхает пламя 15-футовым конусом. Все существа в этой области должны совершить спасбросок Ловкости Сл 11, получая урон огнём 7 (2к6) при провале, или половину этого урона при успехе. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Состоящие из земли и огня, магмовые мефиты светятся тусклым красным светом, так как их кожа покрыта каплями расплавленной лавы. Они тугодумы, и с трудом понимают значение слов или действий других существ. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + +Марид [Marid] +MM14 +MM24 + + Большой? Элементаль, хаотично-нейтральный + Класс Доспеха 17 (природный доспех) + Хиты 229 (17к10 + 136) + Скорость 30 футов, плавая 90 футов, летая 60 футов + Сил + 22 (+6) + Лов + 12 (+1) + Тел + 26 (+8) + Инт + 18 (+4) + Мдр + 17 (+3) + Хар + 18 (+4) + Спасброски Лов +5, Мдр +7, Хар +8 + Сопротивление урону кислота, холод, электричество + Чувства слепое зрение? 30 футов, тёмное зрение? 120 футов, пассивное Восприятие 13 + Языки Акван + Опасность 11 (7200 опыта) + Бонус мастерства +4 + Местность обитания побережье, под водой + + Амфибия. Марид может дышать и воздухом и под водой. + + Элементальная гибель. Если марид умирает, его тело распадается во взрыве воды и пены, оставляя только снаряжение, которое марид носил и нёс. + + Врождённое колдовство. Базовой характеристикой марида является Харизма (Сл спасброска от заклинания 16, +8 к попаданию атаками заклинаниями). Он может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: обнаружение зла и добра [detect evil and good], обнаружение магии [detect magic], очищение пищи и питья [purify food and drink], сотворение или уничтожение воды [create or destroy water], туманное облако [fog cloud]; + 3/день каждое: подводное дыхание [water breathing], хождение по воде [water walk], языки [tongues]; + 1/день каждое: власть над водами [control water], газообразная форма [gaseous form], невидимость [invisibility], призыв элементаля [conjure elemental] (только водяной элементаль), уход в иной мир [plane shift]. + Действия + + Мультиатака. Марид совершает две атаки трезубцем. + + Трезубец. Рукопашная или дальнобойная атака оружием: +10 к попаданию, досягаемость 5 футов или дистанция 20/60 футов, одна цель. Попадание: Колющий урон 13 (2к6 + 6), или колющий урон 15 (2к8 + 6), если используется двумя руками для совершения рукопашной атаки. + + Струя воды. Марид магическим образом испускает струю воды 60-футовой линией шириной 5 футов. Все существа в этой линии должны совершить спасбросок Ловкости Сл 16. При провале цель получает дробящий урон 21 (6к6) и, если её размер не больше Огромного, толкается на расстояние до 20 футов от марида и сбивается с ног. При успехе цель получает половину дробящего урона, но не толкается и не сбивается с ног. + Вариант: Способности гениев + + Гении обладают различными магическими способностями, включая заклинания. Некоторые владеют столь великой силой, что могут менять обличья или изменять природу реальности. + + Маскировка. Некоторые гении могут скрыть свою истинную природу, наложив на себя иллюзию сходного по сложению другого существа. Такие гении могут неограниченно накладывать заклинание маскировка [disguise self], зачастую с увеличенной длительностью. Более могущественные гении могут накладывать заклинание истинное превращение [true polymorph] от одного до трёх раз в день, возможно, с увеличенной длительностью. Такие гении могут менять только собственный облик, и крайне редко могут накладывать подобные заклинания на других существ или предметы. + + Желания. Среди смертных ходят легенды о гениях, исполняющих желания. Но лишь могущественнейшие из гениев, например, их знатные представители, могут это сделать. Те из них, кто обладают такой силой, могут даровать исполнение от одного до трёх желаний любому существу, кроме другого гения. Если гений уже исполнил свой предел желаний, он не сможет сделать это вновь в течение некоторого времени (обычно 1 год), и, согласно законам вселенной, один и тот же гений может потратить свой лимит желаний на другое существо только один раз в жизни этого существа. + + Чтобы гений исполнил желание, существо должно сформулировать его, находясь в 60 футах от гения. После этого гений накладывает заклинание исполнение желаний [wish], воспроизводящее эффект. Изворотливые по своей природе гении могут попытаться извратить желание, воспользовавшись несовершенством его формулировки. Как правило, искажение формулировок гении оборачивают себе на пользу. + Описание + + Живущие на Стихийном Плане Воды мариды — наиболее удивительные из гениев. Несмотря на то, что все гении обладают великой силой, даже слабейший из маридов считает себя сильнее ветреного джинна, приземлённого дао и дымящегося ифрита. + + Огромные и рыбоподобные, мариды представляют собой странное зрелище в своих жилетах и ярко окрашенных шароварах. Их голоса бывают то мягкими, как дыхание морского бриза, то неистовыми и громоподобными, как штормовые волны, разбивающиеся о скалы. В полёте их тела обращаются в столбы пенистой воды. + + Повелители воды. Вода — родная стихия маридов, и эти гении властны творить с ней всё, что пожелают. Марид может ходить по воде и дышать, находясь под водой. Он может создать воду или сформировать облако пара или туман из влаги, присутствующей в воздухе. Он может даже сам превратиться в туман или обратить мощь воды против своих врагов. + + Дома маридов. Мариды редки на Материальном Плане. Они обитают в могучих магических коралловых крепостях в Стихийном Плане Воды. Их цитадели дрейфуют в глубинах вод, но в них есть отдельные залы с воздухом, где могут разместиться рабы или гости. + + Мариды не требуют многого от своих рабов, но желают обладать ими просто ради положения в обществе. Мариды покидают свои пределы, дабы захватить людей, искусных в ремёслах или искусствах, шутов или рассказчиков, и обращают их в рабов при своём дворе. + + Иерархия тщеславия. Все мариды претендуют на благородные титулы, и меж собой в высоте звания соревнуются шахи, султаны, муфтии и хедивы. Обычно титулы маридов не значат ничего, кроме степени высокомерия носящих их. + + Мариды свысока смотрят на всех прочих — даже на других гениев — как на низших в различной степени существ, от «бедных родственников» до тех, от кого можно ждать лишь беды. Они терпят джиннов, не любят дао, и ненавидят ифритов. + + Гуманоиды — это последние из существ, которых мариды готовы терпеть, но иногда они согласны заключать сделки с могучими волшебниками и властителями почти как с равными. Иногда это бывает ошибкой, ведь волшебники заключают маридов в морские раковины, кувшины и фляги. Сладкие речи и богатые дары — вот каким языком следует обращаться к мариду ничтожным смертным, знающим своё место. + + Своенравные рассказчики. Мариды — непревзойдённые рассказчики, чьи излюбленные легенды прославляют доблесть всего рода маридов и, разумеется, самого рассказчика. Прихотливые и чудаковатые, они лгут часто и искусно. Они не всегда намеренно лгут, зачастую они лишь желают приукрасить свой рассказ. Мариды сочтут преступлением попытку низшего существа прервать их рассказ, а оскорбление марида — это верный способ обратить его гнев против себя. + + См. дополнительно статью: "Бестиарий: Гении" + +Молниевый скиталец [Lightning Hulk] +BPGG + + Большой? Элементаль, обычно хаотично-нейтральный + Класс Доспеха 15 + Хиты 102 (12к10 + 36) + Скорость 0 футов, летая 90 футов (парит) + Сил + 18 (+4) + Лов + 21 (+5) + Тел + 16 (+3) + Инт + 14 (+2) + Мдр + 14 (+2) + Хар + 15 (+2) + Спасброски Лов +9, Тел +7, Мдр +6, Хар +6 + Навыки Восприятие +6 + Сопротивление урону звук, холод; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону электричество, яд + Иммунитет к состоянию захват?, истощение?, окаменение?, опутанность?, отравление?, паралич?, сбивание с ног? + Чувства пассивное Восприятие 16 + Языки Ауран, Великаний + Опасность 9 (5000 опыта) + Бонус мастерства +4 + + Свечение. Скиталец испускает яркий свет в радиусе 20 футов и тусклый свет в пределах ещё 20 футов. + + Форма молнии. Молниевый скиталец входить в пространство враждебных существ и останавливаться там. Когда он впервые за ход входит в пространство существа или если он начинает свой ход в пространстве существа, это существо получает 7 (2к6) урона электричеством. Так же, скиталец может перемещаться сквозь пространство шириной в 1 дюйм без протаскивания. Существо, которое касается молниевого скитальца или попадает по нему рукопашной атакой, находясь в 5 футов от него, получает 7 (2к6) урона электричеством. + Действия + + Дуговая молния. Рукопашная или дальнобойная атака оружием: +9 к попаданию, досягаемость 10 футов или дистанция 60 футов, одна цель. Попадание: 18 (4к8) урона электричеством. Если целью является существо, оно не может совершать реакции до начала своего следующего хода, и молния перепрыгивает с цели на другое существо по выбору молниевого скитальца, которое он может видеть в пределах 30 футов. Второе существо должно преуспеть в спасброске Ловкости Сл 18, иначе получит 18 (4к8) урона электричеством. + Описание + + По крайней мере, молниевый и пылевой скитальцы, похоже, довольны своей судьбой. В их существовании есть своя прелесть, каким бы искажённым оно ни казалось. + - Бигби + + + Молниевые скитальцы - потомки громовых великанов, покинувших этот мир в прошлые века. На протяжении веков элементальная природа этих великанов росла, чему способствовали вливания энергии с Элементальных планов, овладевая над этими великанами, в конечном счете освобождая их от ограничений плоти. + + Молниевый скиталец- это, по сути, живой разряд молнии, единственным сохранившимся признаком его прежней природы является расплывчатое лицо, появляющееся в верхней части разряда, когда он рассекает воздух. В редкие моменты скиталец принимает двуногую форму, напоминающую штормового великана, но эти моменты так же мимолетны, как удар молнии. В другое время, особенно вблизи металла или твердой земли, скиталец, кажется, вот-вот полностью рассеется, теряя последние остатки целостности. Его психическое состояние столь же непредсказуемо: молниевый скиталец мечется с одного места на другое без особой цели и без намека на созерцательность, присущую его дальним родственникам-великанам. + +Морозная саламандра [Frost Salamander] +MPMM + + Огромный? Элементаль, без мировоззрения + Класс Доспеха 17 (природный доспех) + Хиты 168 (16к12 + 64) + Скорость 60 футов, лазая 40 футов, копая 40 футов + Сил + 20 (+5) + Лов + 12 (+1) + Тел + 18 (+4) + Инт + 7 (-2) + Мдр + 11 (+0) + Хар + 7 (-2) + Спасброски Тел +8, Мдр +4 + Навыки Восприятие +4 + Уязвимость к урону огонь + Иммунитет к урону холод + Чувства тёмное зрение? 60 футов, пассивное Восприятие 14, чувство вибрации? 60 футов + Языки Первичный + Опасность 9 (5000 опыта) + Бонус мастерства +4 + Местность обитания арктика + + Полыхающая ярость. Когда саламандра получает урон огнём, её Замораживающее дыхание автоматически перезаряжается. + Действия + + Мультиатака. Саламандра совершает одну атаку Укусом и четыре Когтями. + + Когти. Рукопашная атака оружием: +9 к попаданию, досягаемость 10 футов, одна цель. Попадание: 8 (1к6 + 5) колющего урона. + + Укус. Рукопашная атака оружием: +9 к попаданию, досягаемость 15 футов, одна цель. Попадание: 9 (1к8+5) колющего урона и 5 (1к10) урона холодом. + + Замораживающее дыхание (перезарядка 6). Саламандра выдыхает ледяной ветер 60 футовым конусом. Каждое существо в этой области должно совершить спасбросок Телосложения Сл 17, получая 44 (8к10) урона холодом при провале и половину этого урона в случае успеха. + Описание + + Морозные саламандры – обитатели Плана Льда, более известного как Царство Льда [Frostfell], что расположен между Планом Воздуха и Планом Воды. Морозные саламандры особенно любят охотиться на теплокровных существ. Иногда они посещают холодные климатические зоны Материального Плана, проходя через планарные врата. + + Агрессивное желание морозных саламандр поедать любой источник тепла побуждает их атаковать поселения, с которыми они сталкиваются. Кузнечный огонь или костёр ошибочно принятые морозными саламандрами за большую, вкусную еду, заставляет их атаковать экспедиции и поселения, которых избегали бы другие хищники. Иногда азеры отправляются в Царство Льда, где используют крупные источники огня, чтобы заманить морозных саламандр в ловушки, убить их и содрать шкуры и клыки для использования их в создании орудий и доспехов. + + Хотя морозные саламандры могут прокапывать путь в рыхлой почве, они предпочитают зарываться в лёд. Саламандры закапываются в груды сломанных кусков льда, позволяя льду царапать себе спину, пока они его размалывают. Эта привычка заставляет морозных саламандр создавать обширные сети ледяных пещер, становясь все крупнее что бы цепляться за свежие сколы льда на стенах их логова. + + Морозная саламандра, которая некоторое время обитает в логове, создаёт достаточно места, чтобы небольшая армия могла обустроить лагерь внутри. Неопытные путешественники, которые сталкиваются с подобными пещерами, считают это отличной идеей, чтобы обустроить лагерь, хотя это совершенно не так. Морозные саламандры жадно пожирают любую добычу, которая достаточна безрассудна, чтобы спать в их логове. + + В редких случаях, морозные гиганты всё же ловят и приручают этих существ, применяя их способность вкапываться в лёд для сооружения собственных аванпостов и укреплений. + +Невидимый охотник [Invisible stalker] +MM14 +MM24 + + Средний? Элементаль, нейтральный + Класс Доспеха 14 + Хиты 104 (16к8 + 32) + Скорость 50 футов, летая 50 футов (парит) + Сил + 16 (+3) + Лов + 19 (+4) + Тел + 14 (+2) + Инт + 10 (+0) + Мдр + 15 (+2) + Хар + 11 (+0) + Навыки Восприятие +8, Скрытность +10 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию сбивание с ног?, паралич?, отравление?, опутанность?, окаменение?, истощение?, захват?, бессознательность? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 18 + Языки Общий, Ауран + Опасность 6 (2300 опыта) + Бонус мастерства +3 + Местность обитания город + + Языки - понимает Общий, но не говорит на нем. + + Невидимость. Охотник невидим. + + Безупречный следопыт. Призыватель назначает охотнику добычу. Охотник знает, в каком направлении находится добыча и расстояние до нее, если они находятся на одном плане существования. Охотник также знает местонахождение того, кто его призвал. + Действия + + Мультиатака. Охотник совершает два размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +6 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 10 (2к6 + 3). + Описание + + Невидимый охотник — это воздушный элементаль, призванный со своего родного плана и превращенный мощной магией. Единственная его цель — охотиться за кем-то и добывать определенные предметы для своего призывателя. Если невидимый охотник повержен или магия, которая связывает его, рассеивается, невидимый охотник исчезает в порыве ветра. + + Целеустремленный охотник. После создания невидимый охотник остается при своем призывателе, пока не получит от него задание. Если такое задание не состоит в поиске и уничтожении конкретного существа или получении определенного предмета, то магия, связывающая невидимого охотника, рассеивается, и элементаль вновь обретает свободу. В противном случае он выполняет задание и возвращается к призывателю за следующим поручением, служа ему таким образом, пока связывающая его магия не рассеивается. Если во время выполнения задания призыватель погибает, то невидимый охотник исчезает после того, как выполнит это задание. + + Невидимый охотник служит в лучшем случае неохотно, и ему отвратительны все получаемые поручения. Если задание занимает много времени, невидимый охотник может даже попытаться извратить полученное поручение, поэтому оно должно быть сформулировано очень аккуратно. + + Невидимая угроза. Невидимые охотники состоят из воздуха, поэтому по своей природе невидимы. Его перемещения можно услышать или почувствовать, но элементаль остается невидимым даже когда атакует. Заклинания, позволяющие видеть невидимое, показывают только расплывчатые очертания охотника. + + Стихийная натура. Невидимому охотнику не нужен воздух, еда, питье и сон. + +Огненная змея [Fire snake] +MM14 +MM24 + + Средний? Элементаль, нейтрально-злой + Класс Доспеха 14 (природный доспех) + Хиты 22 (5к8) + Скорость 30 футов + Сил + 12 (+1) + Лов + 14 (+2) + Тел + 11 (+0) + Инт + 7 (-2) + Мдр + 10 (+0) + Хар + 8 (-1) + Уязвимость к урону холод + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан + Опасность 1 (200 опыта) + Бонус мастерства +2 + Местность обитания подземье + + Языки - понимает Игнан, но не говорит. + + Раскаленное тело. Существо, касающееся змеи или попадающее по ней рукопашной атакой, находясь в пределах 5 футов от нее, получает урон огнём 3 (1к6). + Действия + + Мультиатака. Змея совершает две атаки: одну укусом, и одну хвостом. + + Укус. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одна цель. Попадание: Колющий урон 3 (1к4 + 1) плюс урон огнём 3 (1к6). + + Хвост. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 3 (1к4 + 1) плюс урон огнём 3 (1к6). + Описание + + См. дополнительно статью: "Бестиарий: Саламандры" + +Огненный тритон воин [Firenewt warrior] +MPMM + + Средний? Элементаль, обычно нейтрально-злой + Класс Доспеха 13 (щит) + Хиты 27 (5к8 + 5) + Скорость 30 футов + Сил + 10 (+0) + Лов + 13 (+1) + Тел + 12 (+1) + Инт + 7 (-2) + Мдр + 11 (+0) + Хар + 8 (-1) + Иммунитет к урону огонь + Чувства пассивное Восприятие 10 + Языки Драконий, Игнан + Опасность 1/2 (100 опыта) + Бонус мастерства +2 + Местность обитания горы, подземье, пустыня, холмы + + Амфибия. Огненный тритон может дышать и на воздухе и в воде. + Действия + + Мультиатака. Огненный тритон совершает две атаки Скимитаром. + + Скимитар. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одна цель. Попадание: 4 (1к6 + 1) рубящего урона. + + Огненный плевок (Перезаряжается после короткого или продолжительного отдыха). Огненный тритон плюет огнём в существо не далее 10 футов от себя. Существо должно совершить спасбросок Ловкости Сл 11 иначе получит 9 (2к8) урона огнём при провале или половину этого урона при успехе. + Описание + + Огненный тритон воин может извергать огонь. Многие из этих воинов имеют тесные отношения с гигантскими ходунами [Giant strider]. Они предоставляют убежище, пищу и места размножения в своих логовищах гигантским ходунам, которые затем добровольно служат им в качестве верховых животных. + + + ОГНЕННЫЙ ТРИТОН + + Родом из Стихийного Плана Огня, огненные тритоны могут быть обнаружены на Материальном Плане вблизи горячих источников и вулканов. Огненным тритонам для жизни и размножения необходима горячая вода. Огненный тритон становится медлительным физически и ментально после недели без внешнего источника жара и влаги. Поэтому огненные тритоны ищут источники тепла в земле, а их логова имеют сеть каналов и шлюзов для циркуляции горячей жидкости по территории. + +Огненный тритон колдун Имикса [Firenewt warlock of Imix] +MPMM + + Средний? Элементаль, обычно нейтрально-злой + Класс Доспеха 10 (13 с доспехами мага) + Хиты 33 (6к8 + 6) + Скорость 30 футов + Сил + 13 (+1) + Лов + 11 (+0) + Тел + 12 (+1) + Инт + 9 (-1) + Мдр + 11 (+0) + Хар + 14 (+2) + Иммунитет к урону огонь + Чувства тёмное зрение? 120 футов, пассивное Восприятие 10 + Языки Драконий, Игнан + Опасность 1 (200 опыта) + Бонус мастерства +2 + Местность обитания горы, подземье, пустыня, холмы + + Амфибия. Огненный тритон может дышать и на воздухе и в воде. + + Дьявольское зрение. Магическая тьма не мешает тёмному зрению огненного тритона. + + Благословение Имикса. Когда огненный тритон уменьшает хиты врага до 0, он получает 5 временных хитов. + Действия + + Мультиатака. Огненный тритон совершает три атаки Моргенштерном или Огненным лучом. + + Моргенштерн. Рукопашная атака оружием: +3 к попаданию, досягаемость 5 футов, одна цель. Попадание: 5 (1к8 + 1) колющего урона. + + Огненный луч. Дальнобойная атака заклинанием: +4 к попаданию, дистанция 120 футов, одна цель. Попадание: 5 (1к6 + 2) урона огнём. + + Использование заклинаний. Огненный тритон накладывает одно из следующих заклинаний, используя Харизму в качестве базовой характеристики (Сл спасброска от заклинаний 12): + + Неограниченно: указание [guidance], свет [light], доспехи мага [mage armor], волшебная рука [mage hand], фокусы [prestidigitation]. + + Описание + Огненные тритоны, служащие Имиксу, Принцу Злого Огня, живут в милитаристских теократиях, которые почитают стихийный огонь в его самом разрушительном воплощении и поощряют агрессию и жестокость. Огненные колдуны Имикса возглавляют эти теократии или служат советниками верховного жреца. + + + Огненный тритон + Родом из Стихийного Плана Огня, огненные тритоны могут быть обнаружены на Материальном Плане вблизи горячих источников и вулканов. Огненным тритонам для жизни и размножения необходима горячая вода. Огненный тритон становится медлительным физически и ментально после недели без внешнего источника жара и влаги. Поэтому огненные тритоны ищут источники тепла в земле, а их логова имеют сеть каналов и шлюзов для циркуляции горячей жидкости по территории. + +Огненный элементаль [Fire Elemental] +MM14 +MM24 + + Большой? Элементаль, нейтральный + Класс Доспеха 13 + Хиты 102 (12к10 + 36) + Скорость 50 футов + Сил + 10 (+0) + Лов + 17 (+3) + Тел + 16 (+3) + Инт + 6 (-2) + Мдр + 10 (+0) + Хар + 7 (-2) + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь, яд + Иммунитет к состоянию сбивание с ног?, паралич?, отравление?, опутанность?, окаменение?, истощение?, захват?, бессознательность? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания пустыня + + Огненное тело. Элементаль может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. Существо, касающееся Элементаля или попадающее по нему рукопашной атакой, находясь в пределах 5 футов от него, получает 5 (1к10) урона огнём. Кроме того, Элементаль может входить в пространство враждебных существ и останавливаться там. Когда он впервые за ход входит в пространство существа, это существо получает 5 (1к10) урона огнём и загорается: пока кто-нибудь не потушит огонь действием, это существо получает 5 (1к10) урона огнём в начале каждого своего хода. + + Свечение. Элементаль испускает яркий свет в радиусе 30 футов и тусклый свет в пределах ещё 30 футов. + + Восприимчивость к воде. За каждые 5 футов перемещения в воде или за каждый вылитый на него галлон воды Элементаль получает 1 урон холодом. + Действия + + Мультиатака. Элементаль совершает две атаки Прикосновением. + + Прикосновение. Рукопашная атака оружием: +6 к попаданию, досягаемость 5 футов, одна цель. Попадание: 10 (2к6 + 3) урона огнём. Если цель — существо или горючий предмет, она загорается. Пока какое-нибудь существо не потушит огонь действием, цель получает 5 (1к10) урона огнём в начале каждого своего хода. + Описание + + В середине этого дикого, ревущего пламени можно разглядеть человекоподобную фигуру. Огненный элементаль это чистая мощь разрушения. Куда бы он не двигался, всё вокруг полыхает, мир превращается в пепел, дым и тлеющие угли. Только вода прекратит разрушения, заставляя элементаля шипя и пуская клубы дыма отступить в боли и ярости. + + Стихийная натура. Элементалю не нужен воздух, еда, питьё и сон. + + См. дополнительно статью: «Бестиарий: Элементали» + +Огненный элементальный мирмидон [Fire Elemental Myrmidon] +MPMM + + Средний? Элементаль, обычно нейтральный + Класс Доспеха 18 (латы) + Хиты 123 (19к8 + 38) + Скорость 40 футов + Сил + 13 (+1) + Лов + 18 (+4) + Тел + 15 (+2) + Инт + 9 (-1) + Мдр + 10 (+0) + Хар + 10 (+0) + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь, яд + Иммунитет к состоянию окаменение?, отравление?, сбивание с ног?, паралич? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан, один язык по выбору создателя + Опасность 7 (2900 опыта) + Бонус мастерства +3 + + Свечение. Мирмидон испускает яркий свет в радиусе 20 футов и тусклый свет в пределах ещё 40 футов. + + Уязвимость к воде. За каждые 5 футов, которые мирмидон перемещается в 1 или более футе воды, он получает 2 (1к4) урона холодом. + Действия + + Мультиатака. Мирмидон совершает три атаки Скимитаром. + + Скимитар. Рукопашная атака оружием: +7 к попаданию, досягаемость 5 фт., одна цель. Попадание: 7 (1к6 + 4) урона силовым полем. + + Воспламеняющий удар (перезарядка 6). Мирмидон использует Мультиатаку. Каждая успешная атака причиняет дополнительные 7 (2к6) урона огнём. + Описание + + Элементальные мирмидоны – элементали, призванные и связанные магией в ритуально созданных пластинчатых доспехах. В такой форме они не помнят о своём прежнем существовании в форме свободного элементаля. Они существуют только для того, чтобы следовать приказам своих хозяев. + +Огремох [Ogremoch] +POA + + Громадный? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 20 (природный доспех) + Хиты 526 (27к20 + 243) + Скорость 50 футов, копая 50 футов + Сил + 26 (+8) + Лов + 11 (+0) + Тел + 28 (+9) + Инт + 11 (+0) + Мдр + 15 (+2) + Хар + 22 (+6) + Спасброски Сил +14, Тел +15, Мдр +8 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию окаменение?, отравление?, сбивание с ног?, паралич?, очарование?, испуг? + Чувства слепое зрение? 120 футов, пассивное Восприятие 12, чувство вибрации? 120 футов + Языки Общий, Терран + Опасность 20 (25 000 опыта) + Бонус мастерства +6 + + Усиленные удары. Размашистые удары Огремоха считаются магическими и адамантиновыми при преодолении сопротивления или иммунитета к атакам немагическим оружием. + + Врождённое колдовство. Базовой характеристикой Огремоха является Харизма (Сл спасброска от заклинаний 20, +12 к попаданию заклинаниями). Он врождённо может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + + Неограниченно: слияние с камнем [meld into stone], движение почвы [move earth], каменная стена [wall of stone] + + Легендарное сопротивление (3/день). Если Огремох проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Огремох совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Осадное чудовище. Огремох наносит двойной урон предметам и строениям своими рукопашными и дальнобойными атаками оружием. + Действия + + Мультиатака. Огремох совершает два размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +14 к попаданию, досягаемость 15 фт., одна цель. Попадание: дробящий урон 30 (4к10 + 8). + + Валун. Дальнобойная атака оружием: +6 к попаданию, радиус 500 фт., одна цель. Попадание: дробящий урон 46 (7к10 + 8). Если цель — существо, она должна преуспеть в спасброске Силы Сл 23, иначе будет сбита с ног. + + Призыв элементалей (1/день). Огремох призывает до трёх земляных элементалей, теряя по 30 хитов за каждого элементаля, вызванного таким образом. Призванные элементали имеют максимальное количество хитов и появляются в радиусе 100 футов от Огремоха. Они исчезают, если хиты Огремоха упадут до 0. + Легендарные действия + + Огремох может совершить 3 легендарных действия, выбирая их из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Огремох восстанавливает использованные легендарные действия в начале своего хода. + + Кристаллы-светильники. Кристаллические выступы на Огремохе вспыхивают, и каждое существо в пределах 30 футов от Огремоха освещается тусклым оранжевым сиянием, имеющим радиус 10 фт. Любой бросок атаки против существа, находящегося под действием этого эффекта, совершается с преимуществом, если атакующий может его видеть. Кроме того, такое существо не получает никаких преимуществ от невидимости. + + Топот (стоит 2 действия). Огремох топает по земле, сотрясая её в радиусе 30 футов. Все прочие существа, стоящие на земле в этом радиусе, должны преуспеть в спасброске Ловкости Сл 23, иначе будут сбитыми с ног. + + Создание горгульи (стоит 3 действия). Огремох отламывает кусок от своего тела, при этом уменьшая свои текущие хиты на 50, и ставит его на землю, в свободное пространство в пределах 15 футов от себя. Каменный обломок немедленно превращается в горгулью и действует с тем же значением инициативы, что и Огремох. + + Огремох не может использовать это действие, если у него осталось 50 хитов или меньше. Горгулья подчиняется приказам Огремоха и сражается до тех пор, пока не будет уничтожена. + Логово + + Огремох живёт в недрах Стихийного Плана Земли. + + Для своего тронного зала он выбирает пещеры, где растут чёрные кристаллы и возвышаются зазу­бренные каменные пики. При помощи надлежащих ритуалов он может пройти на Материальный План, если элементальный узел будет достаточно большим и хорошо сформированным. Внутри таких узлов сила Огремоха поистине ужасает. + Действия логова + + Огремох может применять действия логова на Сти­хийном Плане Земли или в любом земляном элемен­тальном узле (включая Чёрную Жеоду, описанную в главе 5), тем самым доказывая свою власть над землёй и камнем вокруг себя. При значении ини­циативы «20» (в случае ничьей проигрывает всем конкурентам) Огремох использует действие логова, чтобы вызвать один из следующих эффектов: + Участок поверхности, сделанной из камня или земли, радиусом 10 футов и расположенный в пределах 60 футов от Огремоха, превращается в липкую грязь. Любое существо, которое на­ходится на этом участке поверхности, должно совершить спасбросок Ловкости Сл 15, при про­ вале погружаясь в грязь на 5 футов и становясь опутанным. Существо может действием совер­шить проверку Силы Сл 15 и, в случае успеха, окончить этот эффект на себе или на другом существе в пределах своей досягаемости. + Кристаллы в виде острых шипов вырастают на участке земли радиусом 20 футов, расположенном в пределах 60 футов от Огремоха, превращая его в труднопроходимую местность. Существо, которое перемещается в этой области, получает колющий урон 1к8 за каждые 5 футов, пройденные им. Существам, сбитым с ног в этой области, наносится столько же урона. + Ужасный толчок сотрясает область логова ради­усом 120 футов с центром на Огремохе. Все су­щества, кроме Огремоха, которые находятся на этом участке поверхности, должны совершить спасбросок Силы или Ловкости (на усмотрение существа) Сл 15, и в случае провала будут сбиты с ног. + Местные эффекты + + Регион с элементальным узлом, в котором находится Огремох, становится сильно подверженным его влиянию и геологически нестабильным. Там проявляются следующие эффекты: + В пределах 10 миль от местоположения Огремоха каждые 2к12 часов происходят землетрясения, каждое из которых длится 1к10 раундов. Спер­ва их последствия незначительны: разбиваются оконные стекла, со стен отваливается штукатур­ ка, а с полок падают вещи. Но чем дольше Огремох остаётся в регионе, тем сильнее они стано­вятся. На 5 день толчки становится достаточно мощными, чтобы уничтожить ветхие строения, на 10 день их сила способна разрушить обычные деревянные постройки, на 20 день землетря­сения способны повредить даже укреплённые здания и фортификации. + В пределах 10 миль от Огремоха перестают ра­ботать компасы из-за возмущений в магнитном поле. + В пределах 1 мили от местоположения Огремоха в земле образуются неприметные расщелины и карстовые воронки. Любое существо, облада­ющее пассивной Мудростью (Восприятием) не меньше 15 или совершившее успешную про­верку Мудрости (Восприятие) Сл 15, замечает такие воронки. В ином случае первое существо, которое наступит на тонкий слой горной поро­ды, закрывающий воронку, должно совершить спасбросок Ловкости Сл 15, при провале падая вниз с высоты 1к6 × 10 футов. + В пределах 1 мили от логова Огремоха есте­ственные пещеры и подземные проходы создают временные порталы на Стихийный План Зем­ли, пропуская в мир смертных элементальных существ, которые будут обитать неподалёку от таких мест. + + Если Огремох уничтожен или изгнан на свой родной план, местные эффекты рассеиваются в течение следующих 1к10 дней. + Описание + + Огремоха, Принца Злой Земли, также называют Горой­Что­Ходит. В своей естественной форме он выглядит как медленный, шаркающий каменный колосс высотой в 50 футов, по всему телу которого растут кристаллы. Если он соизволит заговорить, голос его будет напоминать скрежет камней. + + Огремох жаден и считает все полезные иско­паемые и сокровища, таящиеся в земле, своей собственностью. Он презирает смертных (как и любых других обитателей Материального Плана). + + Его единственное желание — крушить и подчинять своей воле всё, что попадается ему на пути. То же, что ему не удастся разрушить, само падёт под на­тиском времени — Принц Злой Земли живет очень долго, и терпения ему не занимать. + + Особенно страдают от гнева Огремоха смерт­ные, которые смеют извлекать ценные минералы и металлы из земли, а также те, кто обрабатывает камень и создаёт из него постройки. Он помнит каждый слиток золота, каждый необработанный самоцвет, покинувший его владения, и жаждет вернуть «украденные» у него сокровища и нака­зать грабителей. Когда Принц Злой Земли пройдёт через элементальный узел на Материальный План, он начнёт методически искать и уничтожать все рудники, каменоломни, города и крепости — не из­ за их богатств, но из принципа: сама мысль о том, чтобы достать сокровища из-­под земли, приводит Огремоха в дикое бешенство. + +Ольгидра [Olhydra] +POA + + Огромный? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 18 (природный доспех) + Хиты 324 (24к12 + 168) + Скорость 50 футов, плавая 100 футов + Сил + 21 (+5) + Лов + 22 (+6) + Тел + 24 (+7) + Инт + 17 (+3) + Мдр + 18 (+4) + Хар + 23 (+6) + Спасброски Сил +11, Тел +13, Мдр +10 + Сопротивление урону электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону кислота, холод, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, паралич?, очарование?, испуг? + Чувства слепое зрение? 120 футов, пассивное Восприятие 14 + Языки Акван + Опасность 18 (20 000 опыта) + Бонус мастерства +6 + + Усиленные удары. Размашистые удары Ольгидры считаются магическими при преодолении сопротивления или иммунитета к атакам немагическим оружием. + + Врождённое колдовство. Базовой характеристикой Ольгидры является Харизма (Сл спасброска от заклинаний 20, +12 к попаданию заклинаниями). Она врождённо может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + Неограниченно: ледяная стена [wall of ice] + 3/день: град [ice storm] + 1/день: гроза гнева [storm of vengeance] + + Легендарное сопротивление (3/день). Если Ольгидра проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Ольгидра совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Водяное тело. Ольгидра может входить в пространство враждебных существ и останавливаться там. Она может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. + Действия + + Мультиатака. Ольгидра совершает две атаки размашистыми ударами или создаёт две струи воды. + + Размашистый удар. Рукопашная атака оружием: +11 к попаданию, досягаемость 10 фт., одна цель. Попадание: дробящий урон 21 (3к10 + 5), и цель становится схваченной (Сл высвобождения 19). Ольгидра может схватить не больше четырёх целей. Когда Ольгидра перемещается, все схваченные ею существа перемещаются вместе с ней. + + Струя воды. Дальнобойная атака оружием: +12 к попаданию, дистанция 120 фт, одна цель. Попадание: дробящий урон 21 (6к6), и цель должна преуспеть в спасброске Силы Сл 19, иначе будет сбита с ног. + + Призыв элементалей (1/день). Ольгидра призывает до трёх водяных элементалей, теряя по 30 хитов за каждого элементаля, вызванного таким образом. Призванные элементали имеют максимальное количество хитов и появляются в радиусе 100 футов от Ольгидры. Они исчезают, если хиты Ольгидры упадут до 0. + Легендарные действия + + Ольгидра может совершить 3 легендарных действия, выбирая их из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Ольгидра восстанавливает использованные легендарные действия в начале своего хода. + + Сдавливание. Ольгидра сжимает одно схваченное ею существо, нанося ему дробящий урон 21 (3к10 + 5). + + Бросок (стоит 2 действия). Ольгидра освобождает одно из схваченных ею существ, выстреливая им в направлении по своему усмотрению на расстояние до 60 футов. + + Если брошенное таким образом существо столкнётся с твердой поверхностью, например стеной или полом, оно получит дробящий урон 1к6 за каждые 10 футов броска. + + Воду в кислоту (стоит 3 действия). Ольгидра превращает воду, из которой состоит её тело, в кислоту. Этот эффект длится до следующего хода Ольгидры. + + Любое существо, которое физически взаимодействует с Ольгидрой или попадает по ней рукопашной атакой, находясь в 5 футах от неё, получает урон кислотой 11 (2к10). Любое существо, схваченное Ольгидрой, получает в начале своего хода урон кислотой 22 (4к10). + Логово + + Родина Ольгидры — Стихийный План Воды, где она живет в чёрной бездне бесконечного моря, восседая на троне среди колючих рифов. Ольгидра ждёт момента, когда она сможет прорваться на Материальный План через элементальные узлы воды, или когда её вызовут при помощи определённого ритуала. Находится ли она в своих владениях или внутри узла воды — Ольгидра может повелевать водами вокруг себя, придавая им любую форму, какую захочет. + Действия логова + + Ольгидра может управлять водой вокруг себя, ис­пользуя действия логова на Стихийном Плане Воды или в любом водяном элементальном узле (например, внутри Ниспадающих Потоков, описанных в главе 5). При значении инициативы «20» (в случае ничьей проигрывает всем конкурентам) Ольгидра использует действие логова, чтобы вызвать один из следующих эффектов: + В водоёмах, расположенных в логове, поднима­ются волны, которые обрушиваются на берег. Все существа, находящиеся в пределах 20 футов от такого водоёма, должны преуспеть в спасбро­ске Силы Сл 20, иначе будут сбиты с ног и затянуты отступающей волной в воду на 20 футов. + Вода в пределах 120 футов от Ольгидры стано­вится тёмной и непрозрачной. В такой воде не могут видеть существа с тёмным зрением, и свет не может осветить её. Эффект заканчивается в следующем раунде при значении инициативы «20». + Ледяной туман заполняет сферу, радиусом 40 футов, расположенную в пределах 120 футов от Ольгидры. Существа и объекты, находящиеся внутри тумана или за ним, считаются сильно заслонёнными. Существо, которое впервые за ход входит в облако ледяного тумана или начинает там свой ход, получает урон холодом 10 (3к6). + + Облако рассеивается в следующем раунде при значении инициативы «20». + Местные эффекты + + Присутствие Ольгидры в элементальном узле создает целый ряд эффектов, оказывающих влияние на окрестности: там портится погода, усиливаются волны, а хищные морские создания становятся более агрессивными. + В пределах 10 миль от логова Ольгидры начина­ ют идти дожди ужасной силы. Они начинаются каждые 2к12 часов и продолжаются 1к3 часа. Эти дожди настолько сильны, что обычная скорость существ, перемещающихся по суше в этой области, сокращается вдвое. + В пределах 5 миль от логова волны и течения становятся исключительно сильными и коварными. В этих водах все проверки характеристик для безопасного управления судном совершают­ся с помехой. + Когда водные существа со значением Интеллекта 2 или ниже подплывают ближе, чем на 1 милю к логову, они должны совершить спасбросок Мудрости Сл 15. При успехе до тех пор, пока существа не покинут эту область, они остаются испуганными. При провале существо становит­ся в высшей степени агрессивным и не может покинуть область на протяжении 24 часов. Пока существа находятся в таком состоянии, они со­вершают спасброски против эффектов страха и очарования с преимуществом. + В пределах 1 мили от логова природные источники и водоёмы создают временные порталы на Стихийный План Воды, пропуская в мир смерт­ных элементальных существ, которые будут обитать неподалёку от таких мест. + + Если Ольгидра уничтожена или изгнана на свой родной план, местные эффекты рассеиваются в течение следующих 1к10 дней. + Описание + + Титул Принцессы Злой Воды принадлежит Ольги­дре, которую также называют Сокрушительной Волной, Тёмным Приливом или Источником Бес­конечных Страданий. Как правило, она принимает форму гигантской волны, высотой 20 футов и шириной 15 футов с мерцающими глазами. Она не любит уходить далеко от больших водоёмов: морей, озёр, рек или бассейнов с подземными водами. + + Конечно, когда необходимо, она может обру­шиться на берег, подобно цунами, но только крайне сильное чувство гнева или отчаяния заставят Ольгидру отойти от родной стихии больше чем на несколько сотен футов. + + Ольгидра безустанно и неуклонно движется к своей цели. Ей нравится создавать опасные и разрушительные проявления водной стихии, например, устраивать потопы и водовороты. Она обожает доказывать свою силу, разбивая в щепки любое судно, осмелившееся вторгнуться в её цар­ство, и опустошая деревни и города, возведённые около её владений. Всё, что она не может потопить или уничтожить несколькими мощными ударами, она разрушает постепенно и не торопясь: Ольгидра терпелива и отступает только затем, чтобы вер­нуться ещё сильнее, чем прежде. + + Из всех принцев Элементального Зла Ольгидра больше всего заинтересована в смертных. Она понимает, что пираты и морские разбойники, которые окрашивают воды её царства кровью живых существ (а, порой, и отправляют к ней в руки корабли, чьи трюмы набиты сокровищами), служат орудием её злой воли, и неважно, знают они об этом или нет. Поэтому Принцесса Злой Воды иногда щадит самых жестоких мореходов, терпели­во ожидая, когда те выплатят ей кровавый выкуп за свои жизни. + +Ориль (Вторая форма) [Auril (Second Form)] +IDRF + + Большой? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 16 (природный доспех) + Хиты 136 (13к10 + 65) + Скорость 30 футов + Сил + 16 (+3) + Лов + 16 (+3) + Тел + 21 (+5) + Инт + 24 (+7) + Мдр + 26 (+8) + Хар + 28 (+9) + Спасброски Тел +9, Мдр +12 + Навыки Восприятие +16, Запугивание +13, Обман +13, Проницательность +12 + Уязвимость к урону огонь + Иммунитет к урону холод, яд + Иммунитет к состоянию испуг?, истощение?, окаменение?, отравление?, очарование?, ошеломление?, паралич? + Чувства истинное зрение? 120 футов, тёмное зрение? 120 футов, пассивное Восприятие 26 + Языки Все, Телепатия 1000 фт. + Опасность 10 (5900 опыта) + Бонус мастерства +4 + + Божественная сущность. Ориль нельзя застать врасплох и её облик нельзя преобразовать в другой против её воли. + + Божественное восстановление. Когда хиты Ориль опускаются до 0, её тело превращается в сырой снег и тает. + + После этого она немедленно появляется в своей третьей форме в свободном пространстве в пределах 60 футов от того места где исчезла её вторая форма. При этом значение её инициативы не изменяется. + + Легендарное сопротивление (2/день в этой форме). Если Ориль проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Ориль совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Необычная природа. Ориль не нуждается в воздухе, питье, еде и сне. + Действия + + Мультиатака. Ориль совершает две атаки своим Ледяным моргенштерном или бросает три Ледяных дротика. + + Ледяной моргенштерн. Рукопашная атака оружием: +7 к попаданию, досягаемость 5 футов, одна цель. Попадание: 7 (1к8 + 3) колющего урона плюс 9 (2к8) урона холодом. + + Ледяной дротик. Дальнобойная атака оружием: +7 к попаданию, дистанция 20/60 футов, одна цель. Попадание: 5 (1к4 + 3) колющего урона плюс 3 (1к6) урона холодом. + + Конус холода (перезаряжается после короткого или продолжительного отдыха). Из руки Ориль вырывается волна холодного воздуха. Все существа в 60-футовом конусе должны совершить спасбросок Телосложения Сл 21, получая 36 (8к8) урона холодом при провале, или половину этого урона при успехе. + + Создание ледяного мефита (3/день). Ориль отламывает одну из сосулек от своего тела и швыряет её в незанятое пространство в пределах 20 футов, которое она может видеть. Сосулька волшебным образом превращается в ледяного мефита [ice mephit]. Мефит ходит сразу после Ориль и подчиняется её командам. + + Ледяной стазис (перезарядка 5–6). Ориль волшебным образом создаёт ледяной кристалл размером с драгоценный камень, парящий в пределах 5 футов от неё. Затем Ориль выбирает в качестве цели существо, которое она может видеть, в пределах 60 футов от кристалла. Цель должна преуспеть в спасброске Харизмы Сл 21, иначе будет заключена в кристалл и обездвижена. В случае успеха кристалл разбивается и ничего не происходит. + + Заключенное в кристалле существо оглушено, имеет полное укрытие от атак и других эффектов за пределами кристалла и получает 21 (6к6) урона холодом в начале каждого своего хода. Существо может повторять спасбросок в конце каждого своего хода, освобождаясь из ледяной тюрьмы в случае успеха. Существо также можно освободить разрушив кристалл, являющийся Крошечным объектом с КД 19, 9 хитами и иммунитетом к любому урону кроме урона огнём. Освободившееся существо появляется в свободном пространстве по своему выбору в пределах 30 футов от разбившегося кристалла. + Легендарные действия + + Ориль может совершить 3 легендарных действия, выбирая из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Ориль восстанавливает использованные легендарные действия в начале своего хода. + + Атака. Ориль совершает одну атаку оружием. + + Ледяной шквал (стоит 2 действия). Каждое существо в пределах 30 футов от Ориль получает 5 (2к4) колющего урона от резкого шквала льдинок, также в этой области гаснет любое немагическое открытое пламя. + + Осколок (стоит 3 действия). Ориль использует «Создание ледяного мефита» или заставляет одного ледяного мефита, которого она может видеть в пределах 60 футов взорваться и погибнуть. Умирающий таким способом мефит не может использовать «Предсмертную вспышку». Вместо этого каждое существо в пределах 10 футов от взрывающегося мефита должно совершить спасбросок Ловкости Сл 21, получая 13 (3к8) колющего урона при провале или половину этого урона при его успехе. + Логово + + Ориль находится на острове Солнцестояния, замерзшем и скрытом среди титанических айсбергов в море Движущегося Льда. Немногие существа знают о нём, не говоря уже о том, как до него добраться. + + В главе 5 находится информация о местных эффектах действующих на острове. + Действия логова + + Пока Морозная Дева находится на острове, она может совершить одно из следующих действий логова при значении инициативы «20» (в случае ничьей проигрывает всем конкурентам): + Ориль мгновенно узнает о местонахождении и состоянии здоровья всех других существ на острове. Она знает какое количество урона получило каждое из этих существ, сколько у них степеней истощения и в каких состояниях они находятся на данный момент. + Ориль мгновенно телепортируется в любое место на острове. Если целевое пространство уже занято, Ориль появляется в ближайшем к нему свободном пространстве. + Ориль может телепатически общаться с любым количеством существ одновременно при условии, что все они находятся на острове. Этот эффект длится до тех пор, пока Ориль не перестанет концентрироваться на нем (как при концентрации на заклинании), пока она не покинет остров или не использует другое действие логова. + Описание + Три формы Ориль + + В своем нынешнем ослабленном состоянии Ориль может принять три различные формы. Чтобы уничтожить ее, персонажи должны уменьшить хиты каждой из ее форм до 0, одну за другой. После того, как Ориль потерпит поражение в своей третьей и последней форме, она умирает. Однако, пока у неё есть поклоняющиеся ей смертные последователи, Ориль возродится с полными силами во время следующего зимнего солнцестояния с божественной мощью, намного превосходящей той которая отражена в представленных здесь блоках статистики. После продолжительного отдыха Ориль восстанавливает все свои уничтоженные формы, при условии, что хотя бы одна из форм выжила. Когда она переходит из одной формы в другую, она теряет все черты и действия старой формы и приобретает особенности и действия новой. Блоки статистики для каждой из трех форм Ориль представлены по отдельности. Эти описания не отражают полную мощь Ориль, а показывают Аурил в том виде, в каком она встречается в этом приключении. + + Вторая форма + + Вторая форма Ориль, известная её последователям как Леди Ледяного Поцелуя или Хрупкая Дева, — это десятифутовая женщина устрашающего вида, полностью состоящая изо льда и снега. Ее глаза горят холодным голубым светом, а вокруг клубится тонкая пелена тумана. Из её тела под странными углами вырастают ледяные лезвия и они отламываются прежде, чем становятся слишком длинными. Когда она двигается, ее тело хрустит. + + В этой форме Ориль создает оружие изо льда при помощи которого сражается с врагами. Это оружие сверхъестественно устойчиво, пока Ориль не выбросит его, после чего оно ломается и тает, как обычный лед. + + Ориль Морозная Дева — нейтрально-злое меньшее божество. ледяного безразличия, олицетворяющее жестокость зимы. + + Ориль желает заключить в объятья льда всё несущее хоть какую-то ценность, оберегая эти вещи от разрушительного воздействия времени. Она сохраняет красоту во всех её проявлениях, от предметов искусства и цветов до искусных ремесленников и + + их чудесных работ, замораживая их в волшебном льду для своего удовольствия. + + Ориль была связана с Талосом, Амберли и Маларом. Вместе они несли миру ужасные разрушения, внушая страх, заставлявший нести подношения, чтобы сдерживать их силу. Амберли, королева бушующих морей, всегда презирала постоянство природы льда и снега, созданных Ориль и вскипела, когда холод Ориль превратил хаотичные, непредсказуемые приливы в жесткие, неподвижные ледяные покровы. Заключив союз с Талосом и Маларом, они вынудили Ориль отступить в самый холодный уголок Торила, спасаясь от их ярости. + + После потрясшего мир события, известного как Раскол, большинство богов покинуло Торил, предоставив смертным самим распоряжаться своими судьбами без божественного вмешательства, но Морозная Дева не смогла долго оставаться в стороне. Ориль вернулась в свое ледяное царство на крайнем севере и через некоторое время, используя свою магию, погрузила его в ледяную тьму. + + Творя такую великую магию ночь за ночью, одновременно даруя заклинания своим преданным последователям, Ориль стала слабой и уязвимой. В своем ослабленном состоянии, Ориль склонна быть более осторожной и избегает контактов с другими существами, которые могут причинить ей вред. + + Последователи Ориль понимают, что лучше не нарушать ее добровольную изоляцию. Ужасные метели отрезали долину Ледяного Ветра от остального мира, и пелена тумана скрывает ото всех ее остров в море Движущегося Льда. + + Отыгрыш Ориль + + Отыгрыш божества, даже меньшего бога, как Ориль, может быть непростым. Для отыгрыша вам могут помочь следующие предложения: + Пока у Ориль есть последователи среди смертных, она не может по-настоящему умереть (хотя персонажи могут избавить мир от неё на время). Из-за этого у неё нет причин уступать требованиям смертных. Как олицетворение жестокости зимы, она не способна проявлять ни милосердие, ни сострадание. Изобразите ее в высшей степени холодным и бесчувственным существом. + Пусть Ориль говорит только тогда, когда это необходимо. Чем меньше она говорит, тем меньше у вас риска непреднамеренно снять завесу её таинственности в глазах ваших игроков. Пусть за неё говорят действия, а не слова. + Меньшие боги в мультивселенной D&D чрезвычайно могущественны и высокомерны, но они также подвержены ошибкам и слепы к своим собственным недостаткам. Для Ориль уместно вести себя так, как будто она непобедима, недооценивая своих врагов, даже в своём нынешнем ослабленном состоянии. + +Ориль (Третья форма) [Auril (Third Form)] +IDRF + + Маленький? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 19 (природный доспех) + Хиты 136 (16к6 + 80) + Скорость летая 30 футов (парит) + Сил + 1 (-5) + Лов + 12 (+1) + Тел + 21 (+5) + Инт + 24 (+7) + Мдр + 26 (+8) + Хар + 28 (+9) + Спасброски Тел +9, Мдр +12 + Навыки Восприятие +16, Запугивание +13, Обман +13, Проницательность +12 + Уязвимость к урону звук + Иммунитет к урону холод, яд + Иммунитет к состоянию испуг?, истощение?, окаменение?, отравление?, очарование?, ошеломление?, паралич? + Чувства истинное зрение? 120 футов, тёмное зрение? 120 футов, пассивное Восприятие 26 + Языки Все, Телепатия 1000 фт. + Опасность 11 (7200 опыта) + Бонус мастерства +4 + + Божественная сущность. Ориль нельзя застать врасплох, и её облик нельзя преобразовать в другой против её воли. + + Божественное восстановление. Когда хиты Ориль опускаются до 0, её кристаллическая форма разрушается и божественная искра исчезает. Она мертва до следующего зимнего солнцестояния, при котором она вновь возрождается со всеми хитами в холодном, удалённом от поселений месте по своему выбору. + + Морозящая аура. Пока у Ориль остаётся хотя бы 1 хит, каждое существо в пределах 10 футов о неё получает 10 урона холодом в начале каждого хода Ориль. + + Легендарное сопротивление (1/день в этой форме). Если Ориль проваливает спасбросок, она может вместо этого сделать спасбросок успешным. + + Сопротивление магии. Ориль совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + + Необычная природа. Ориль не нуждается в воздухе, питье, еде и сне. + Действия + + Мультиатака. Ориль совершает две атаки полярным лучом. + + Полярный луч. Дальнобойная атака заклинанием: +13 к попаданию, дистанция 120 фт., одна цель. Попадание: 14 (4к6) урона холодом. + + Пелена вьюги. Ориль создаёт 30-футовую сферу магической вьюги с центром на себе. Пространство внутри сферы сильно заслонено, и сфера движется вместе с Ориль. Эффект действует до тех пор, пока хиты Ориль не опустятся до 0, пока она сама не решит окончить эффект (действие не требуется) или пока она не потеряет концентрацию (подобно концентрации при заклинании). + Легендарные действия + + Ориль может совершить 3 легендарных действия, выбирая из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Ориль восстанавливает использованные легендарные действия в начале своего хода. + + Полярный луч. Ориль использует полярный луч. + + Усиление ауры (стоит 2 действия). Морозящая аура Ориль причиняет дополнительно 10 урона холодом до конца её следующего хода. + + Ослепляющая вспышка (стоит 2 действия). Ориль образует блики ярко-синего света. Каждое существо, которое может видеть Ориль и находится в пределах 10 футов от неё должно преуспеть в спасброске Мудрости Сл 17, иначе будет ослеплено вспышкой Ориль на 1 минуту. Ослепленное существо может повторять спасбросок в конце каждого своего хода, оканчивая действие эффекта на себе при успехе + Логово + + Ориль находится на острове Солнцестояния, замерзшем и скрытом среди титанических айсбергов в море Движущегося Льда. Немногие существа знают о нём, не говоря уже о том, как до него добраться. + + В главе 5 находится информация о местных эффектах действующих на острове. + Действия логова + + Пока Морозная Дева находится на острове, она может совершить одно из следующих действий логова при значении инициативы «20» (в случае ничьей проигрывает всем конкурентам): + Ориль мгновенно узнает о местонахождении и состоянии здоровья всех других существ на острове. Она знает какое количество урона получило каждое из этих существ, сколько у них степеней истощения и в каких состояниях они находятся на данный момент. + Ориль мгновенно телепортируется в любое место на острове. Если целевое пространство уже занято, Ориль появляется в ближайшем к нему свободном пространстве. + Ориль может телепатически общаться с любым количеством существ одновременно при условии, что все они находятся на острове. Этот эффект длится до тех пор, пока Ориль не перестанет концентрироваться на нем (как при концентрации на заклинании), пока она не покинет остров или не использует другое действие логова. + Описание + Три формы Ориль + + В своем нынешнем ослабленном состоянии Ориль может принять три различные формы. Чтобы уничтожить ее, персонажи должны уменьшить хиты каждой из ее форм до 0, одну за другой. После того, как Ориль потерпит поражение в своей третьей и последней форме, она умирает. Однако, пока у неё есть поклоняющиеся ей смертные последователи, Ориль возродится с полными силами во время следующего зимнего солнцестояния с божественной мощью, намного превосходящей той которая отражена в представленных здесь блоках статистики. После продолжительного отдыха Ориль восстанавливает все свои уничтоженные формы, при условии, что хотя бы одна из форм выжила. Когда она переходит из одной формы в другую, она теряет все черты и действия старой формы и приобретает особенности и действия новой. Блоки статистики для каждой из трех форм Ориль представлены по отдельности. Эти описания не отражают полную мощь Ориль, а показывают Ориль в том виде, в каком она встречается в этом приключении. + + Третья форма + + Третья форма Ориль, которую ее самые верные последователи называли Чрево Зимы или Царица Ледяных Слез, представляет собой ледяной бриллиант диаметром 3 фута, содержащий божественную искру. Бриллиант огранен и имеет острие внизу. Он парит в воздухе, излучая сильный холод вокруг себя. Когда Ориль говорит, ее голос, словно, исходит из сердца бриллианта. + + Если Ориль будет убита в своей третьей и последней форме, она умирает до следующего зимнего солнцестояния. Пока она мертва, её смертные последователи теряют дарованные ею заклинания и способности. + + Ориль Морозная Дева — нейтрально-злое меньшее божество. ледяного безразличия, олицетворяющее жестокость зимы. + + Ориль желает заключить в объятья льда всё несущее хоть какую-то ценность, оберегая эти вещи от разрушительного воздействия времени. Она сохраняет красоту во всех её проявлениях, от предметов искусства и цветов до искусных ремесленников и + + их чудесных работ, замораживая их в волшебном льду для своего удовольствия. + + Ориль была связана с Талосом, Амберли и Маларом. Вместе они несли миру ужасные разрушения, внушая страх, заставлявший нести подношения, чтобы сдерживать их силу. Амберли, королева бушующих морей, всегда презирала постоянство природы льда и снега, созданных Ориль и вскипела, когда холод Ориль превратил хаотичные, непредсказуемые приливы в жесткие, неподвижные ледяные покровы. Заключив союз с Талосом и Маларом, они вынудили Ориль отступить в самый холодный уголок Торила, спасаясь от их ярости. + + После потрясшего мир события, известного как Раскол, большинство богов покинуло Торил, предоставив смертным самим распоряжаться своими судьбами без божественного вмешательства, но Морозная Дева не смогла долго оставаться в стороне. Ориль вернулась в свое ледяное царство на крайнем севере и через некоторое время, используя свою магию, погрузила его в ледяную тьму. + + Творя такую великую магию ночь за ночью, одновременно даруя заклинания своим преданным последователям, Ориль стала слабой и уязвимой. В своем ослабленном состоянии, Ориль склонна быть более осторожной и избегает контактов с другими существами, которые могут причинить ей вред. + + Последователи Ориль понимают, что лучше не нарушать ее добровольную изоляцию. Ужасные метели отрезали долину Ледяного Ветра от остального мира, и пелена тумана скрывает ото всех ее остров в море Движущегося Льда. + + Отыгрыш Ориль + + Отыгрыш божества, даже меньшего бога, как Ориль, может быть непростым. Для отыгрыша вам могут помочь следующие предложения: + Пока у Ориль есть последователи среди смертных, она не может по-настоящему умереть (хотя персонажи могут избавить мир от неё на время). Из-за этого у неё нет причин уступать требованиям смертных. Как олицетворение жестокости зимы, она не способна проявлять ни милосердие, ни сострадание. Изобразите ее в высшей степени холодным и бесчувственным существом. + Пусть Ориль говорит только тогда, когда это необходимо. Чем меньше она говорит, тем меньше у вас риска непреднамеренно снять завесу её таинственности в глазах ваших игроков. Пусть за неё говорят действия, а не слова. + Меньшие боги в мультивселенной D&D чрезвычайно могущественны и высокомерны, но они также подвержены ошибкам и слепы к своим собственным недостаткам. Для Ориль уместно вести себя так, как будто она непобедима, недооценивая своих врагов, даже в своём нынешнем ослабленном состоянии. + +Паровой мефит [Steam mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 10 + Хиты 21 (6к6) + Скорость 30 футов, летая 30 футов + Сил + 5 (-3) + Лов + 11 (+0) + Тел + 10 (+0) + Инт + 11 (+0) + Мдр + 10 (+0) + Хар + 12 (+1) + Иммунитет к урону огонь, яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Акван, Игнан + Опасность 1/4 (50 опыта) + Бонус мастерства +2 + Местность обитания под водой + + Предсмертная вспышка. Когда мефит умирает, он взрывается облаком пара. Все существа в пределах 5 футов от мефита должны преуспеть в спасброске Ловкости Сл 10, иначе получат урон огнём 4 (1к8). + + Врождённое колдовство (1/день). Мефит может накладывать размытый образ [blur], не нуждаясь в материальных компонентах. Его базовой характеристикой является Харизма. + Действия + + Когти. Рукопашная атака оружием: +2 к попаданию, досягаемость 5 футов, одно существо. Попадание: Рубящий урон 2 (1к4) плюс урон огнём 2 (1к4). + + Паровое дыхание (перезарядка 6). Мефит выдыхает обжигающий пар 15-футовым конусом. Все существа в этой области должны преуспеть в спасброске Ловкости Сл 10, получая урон огнём 4 (1к8) при провале, или половину этого урона при успехе. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Состоящие из воды и огня паровые мефиты всегда оставляют за собой след из горячей воды, а также шипят, испуская пар. Паровые мефиты — существа властные и гиперчувствительные, это самопровозглашенные повелители всех мефитов. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + +Пепельный скиталец [Cinder hulk] +BPGG GSF + + Большой? Элементаль, обычно хаотично-злой + Класс Доспеха 16 (природный доспех) + Хиты 84 (8к10 + 40) + Скорость 40 футов + Сил + 20 (+5) + Лов + 12 (+1) + Тел + 20 (+5) + Инт + 9 (-1) + Мдр + 14 (+2) + Хар + 10 (+0) + Спасброски Лов +4, Тел +8, Мдр +5 + Навыки Восприятие +5 + Иммунитет к урону огонь, яд + Иммунитет к состоянию истощение?, отравление? + Чувства пассивное Восприятие 15 + Языки Великаний, Игнан + Опасность 7 (2900 опыта) + Бонус мастерства +3 + + Предсмертная вспышка. Когда пепельный скиталец умирает, он оставляет после себя облако пепла и дыма, которое заполняет сферу радиусом 10 футов с центром в его пространстве. Сфера это сильно заслонённая область. Любое существо, которое перемещается в эту область впервые за ход или начинает свой ход в ней, должно преуспеть в спасброске Телосложения Сл 16 или получит 10 (3к6) урона огнём. Облако держится 1 минуту или пока его не рассеет сильный ветер. + Действия + + Мультиатака. Пепельный скиталец совершает два Размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 5 футов, одна цель. Попадание: 16 (2к10 + 5) дробящего урона плюс 10 (3к6) урона огнём. + + Волна пепла (Перезарядка 5–6). Пепельный скиталец испускает волну тлеющего пепла со своего лица, рук или груди в виде 30-футового конуса. Каждое существо в этой области должно совершить спасбросок Ловкости Сл 16. В случае провала существо получает 31 (7к8) урона огнём и становится ослеплённым до конца своего следующего хода. В случае успеха существо получает только половину урона. + Описание + + Пепельные скитальцы — далекие потомки огненных великанов, которые изолировали себя от мира и погрузились в энергию Планов Стихий. За прошедшие столетия эти великаны превратились в Элементалей, сделанных из дыма и пепла. Вполовину меньше своих предков-великанов, пепельные скитальцы сохраняют базовую физическую форму огненных великанов, но пепел и угли клубятся вокруг их едва сплочённых физических форм. + + Пепельные скитальцы живут в изолированных анклавах в огненных местах на Материальном Плане, на Стихийных Планах Воздуха и Огня и особенно в Великом Пожарище, пограничном регионе между этими двумя планами. Они не сохранили ни навыков, ни мотивации своих великаньих предков; они просто хотят гореть столько, сколько могут, пока их собственное пламя не погаснет. Когда пепельный скиталец умирает, он превращается в клубящееся облако обжигающего дыма. + +Пылевой мефит [Dust mephit] +MM14 +MM24 + + Маленький? Элементаль, нейтрально-злой + Класс Доспеха 12 + Хиты 17 (5к6) + Скорость 30 футов, летая 30 футов + Сил + 5 (-3) + Лов + 14 (+2) + Тел + 10 (+0) + Инт + 9 (-1) + Мдр + 11 (+0) + Хар + 10 (+0) + Навыки Восприятие +2, Скрытность +4 + Уязвимость к урону огонь + Иммунитет к урону яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 12 + Языки Ауран, Терран + Опасность 1/2 (100 опыта) + Бонус мастерства +2 + Местность обитания пустыня + + Предсмертная вспышка. Когда мефит умирает, он разлетается во все стороны пылью. Все существа в пределах 5 футов от него должны преуспеть в спасброске Телосложения Сл 10, иначе станут ослепленными на 1 минуту. Ослепленное существо может повторять спасбросок в каждом своем ходу, оканчивая эффект на себе при успехе. + + Врождённое колдовство (1/день). Мефит может накладывать усыпление [sleep], не нуждаясь в материальных компонентах. Его базовой характеристикой является Харизма. + Действия + + Когти. Рукопашная атака оружием: +4 к попаданию, досягаемость 5 футов, одно существо. Попадание: Рубящий урон 4 (1к4 + 2). + + Ослепляющее дыхание (перезарядка 6). Мефит выдыхает ослепляющую пыль 15-футовым конусом. Все существа в этой области должны преуспеть в спасброске Ловкости Сл 10, иначе станут ослепленными на 1 минуту. Существо может повторять этот спасбросок в конце каждого своего хода, оканчивая эффект на себе при успехе. + ВАРИАНТ: ПРИЗЫВ МЕФИТА + + У некоторых мефитов может быть действие, позволяющее им призывать других мефитов. + + Призыв мефитов (1/день). У мефита есть 25% шанс призвать 1к4 мефита одной с ним разновидности. Призванные мефиты появляются в свободном пространстве в пределах 60 футов от призывателя, действуют как союзники призывателя, и не могут призывать других мефитов. Они остаются в течение 1 минуты, либо до тех пор, пока не убьют их или призвавшего их, или пока призыватель не отпустит их действием. + Описание + + Состоящие из земли и воздуха пылевые мефиты любят обитать в катакомбах и считают смерть ужасно захватывающей. + + Мефиты — своенравные, похожие на бесов существа, родом со стихийных планов. Есть шесть разновидностей мефитов, каждая из которых представляет собой смесь двух стихий. + + Мефиты эти нестареющие озорники, во множестве населяющие Стихийные Планы и Стихийный Хаос. Они также нередко находят пути на Материальный План, где предпочитают обитать в местах, богатых их родными стихиями. Например, магмовый мефит состоит из огня и земли, и предпочитает обитать внутри вулканов, в то время как ледяной мефит, состоящий из воздуха и воды, предпочитает места, где похолоднее. + + Стихийная натура. Мефиту не нужны еда, питье и сон. + + См. дополнительно статью: "Бестиарий: Мефиты" + + --- + + +Пылевой скиталец [Dust Hulk] +BPGG + + Большой? Элементаль, обычно хаотично-нейтральный + Класс Доспеха 16 (природный доспех) + Хиты 68 (8к10 + 24) + Скорость 0 футов, летая 30 футов (парит) + Сил + 15 (+2) + Лов + 19 (+4) + Тел + 16 (+3) + Инт + 10 (+0) + Мдр + 12 (+1) + Хар + 8 (-1) + Иммунитет к урону яд + Иммунитет к состоянию захват?, истощение?, окаменение?, опутанность?, отравление?, паралич? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 11 + Языки Великаний, Терран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + + Воздушная форма. Пылевой скиталец может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. + + Предсмертная вспышка. Когда скиталец умирает, он разлетается во все стороны пылью, которая заполняет сферу радиусом 10 футов с центром в его пространстве. Все существа в этой области должны преуспеть в спасброске Телосложения Сл 14, иначе станут ослеплёнными на 1 минуту. Ослеплённое существо может повторять спасбросок в конце каждого своего хода, оканчивая на себе эффект в случае успеха. + Действия + + Мультиатака. Пылевой скиталец совершает три атаки Размашистым ударом. Он может заменить одну из этих атак Жгучей пылью. + + Размашистый удар. Рукопашная атака оружием: +7 к попаданию, досягаемость 10 футов, одна цель. Попадание: 13 (2к8 + 4) дробящего урона. + + Жгучая пыль. Одно существо по выбору пыльного скиталец внутри его пространства должно совершить спасбросок Телосложения Сл 14. В случае провала существо получает 10 (3к6) дробящего урона и становится ослеплённым до конца своего следующего хода. В случае успеха существа получает только половину этого урона. + Описание + + Заманчиво рассматривать различных скитальцев символами длительного и медленного упадка великанов как народа. Но вряд ли это справедливо по отношению к великанам, которые все еще выживают и процветают в мире, унаследовав колоссальную славу. + - Бигби + + Пылевые скитальцы происходят из анклавов каменных великанов, которые жили в экстремальных условиях, изолированные от других. Элементальная энергия с Плана Воздуха разрушала их физические тела и медленно превращала их в Элементалей. Они представляют собой немногим больше, чем облака гравия и пыли, едва сохраняющие связную форму. Когда пылевой скиталец умирает, он превращается в облако пыли. + + Пылевые скитальцы сохраняют страсть своих предков к искусству, но вместо того, чтобы резать камень, они рассматривают свои тела как живые произведения искусства. Когда они летят, несясь вдоль потоков ветра или проносятся по подземным туннелям, подобно живым песчаным бурям, они создают завораживающие танцы своими постоянно меняющимися формами. + +Пыльный дьявол [Dust devil] +MM14 + + Большой? Элементаль, нейтральный + Класс Доспеха 15 + Хиты 90 (12к10 + 24) + Скорость 50 футов + Сил + 14 (+2) + Лов + 20 (+5) + Тел + 14 (+2) + Инт + 1 (-5) + Мдр + 10 (+0) + Хар + 1 (-5) + Сопротивление урону звук, электричество; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону яд + Иммунитет к состоянию бессознательность?, сбивание с ног?, паралич?, опутанность?, окаменение?, истощение?, захват?, отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Ауран + Опасность 5 (1800 опыта) + Бонус мастерства +3 + + Воздушное тело. Дьявол может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания. + Действия + + Мультиатака. Дьявол совершает два размашистых удара. + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 14 (2к8 + 5). + + Вихрь (перезарядка 4–6). Все существа в пространстве дьявола должны совершить спасбросок Силы Сл 13. При провале цель получает дробящий урон 15 (3к8 + 2) и отбрасывается на расстояние до 20 футов от дьявола в случайном направлении, после чего сбивается с ног. Если отброшенная цель ударяется о предмет, такой как стена или пол, цель получает дробящий урон 3 (1к6) за каждые 10 футов перемещения. Если цель отброшена в другое существо, это существо должно преуспеть в спасброске Ловкости Сл 13, иначе получит такой же урон и будет сбито с ног. + + Если исходный спасбросок был успешным, цель получает половину дробящего урона, не отбрасывается и не сбивается с ног. + +Саламандра [Salamander] +MM14 +MM24 + + Большой? Элементаль, нейтрально-злой + Класс Доспеха 15 (природный доспех) + Хиты 90 (12к10 + 24) + Скорость 30 футов + Сил + 18 (+4) + Лов + 14 (+2) + Тел + 15 (+2) + Инт + 11 (+0) + Мдр + 10 (+0) + Хар + 12 (+1) + Уязвимость к урону холод + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10 + Языки Игнан + Опасность 5 (1800 опыта) + Бонус мастерства +3 + Местность обитания подземье + + Раскаленное тело. Существо, касающееся саламандры или попадающее по ней рукопашной атакой, находясь в пределах 5 футов от нее, получает урон огнём 7 (2к6). + + Раскаленное оружие. Все металлическое рукопашное оружие, используемое саламандрой, причиняет дополнительный урон огнём 3 (1к6) при попадании (уже учтено в атаках). + Действия + + Мультиатака. Саламандра совершает две атаки: одну копьем, и одну хвостом. + + Копье. Рукопашная или дальнобойная атака оружием: +7 к попаданию, досягаемость 5 футов или дистанция 20 футов/60 футов, одна цель. Попадание: Колющий урон 11 (2к6 + 4), или колющий урон 13 (2к8 + 4), если используется двумя руками для совершения рукопашной атаки, плюс урон огнём 3 (1к6). + + Хвост. Рукопашная атака оружием: +7 к попаданию, досягаемость 10 футов, одна цель. Попадание: Дробящий урон 11 (2к6 + 4) плюс урон огнём 7 (2к6), и цель становится схваченной (Сл высвобождения 14). Пока цель схвачена, она опутана, саламандра может автоматически попадать по ней хвостом, и не может совершать атаки хвостом по другим целям. + Описание + + См. дополнительно статью: "Бестиарий: Саламандры" + +Туманный скиталец [Mist Hulk] +BPGG + + Большой? Элементаль, обычно хаотично-нейтральный + Класс Доспеха 15 + Хиты 94 (9к10 + 45) + Скорость 0 футов, летая 40 футов (парит) + Сил + 18 (+4) + Лов + 21 (+5) + Тел + 20 (+5) + Инт + 11 (+0) + Мдр + 13 (+1) + Хар + 16 (+3) + Спасброски Тел +8, Мдр +4, Хар +6 + Навыки Восприятие +4, Скрытность +8 + Сопротивление урону звук + Иммунитет к урону яд + Иммунитет к состоянию истощение?, опутанность?, отравление?, паралич? + Чувства пассивное Восприятие 14 + Языки Ауран, Великаний + Опасность 6 (2300 опыта) + Бонус мастерства +3 + + Воздушная форма. Туманный скиталец может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протаскивания. + + Предсмертная вспышка. Когда скиталец умирает, он взрывается водяными волнами. Все существа в пределах 10 футов от скитальца должны преуспеть в спасброске Ловкости Сл 16. В случае провала существо получает 11 (2к10) дробящего урона и падает ничком. В случае успеха существо получает только половину урона. + Действия + + Мультиатака. Туманный скиталец совершает две атаки Размашистым ударом. + + Размашистый удар. Рукопашная атака оружием: +8 к попаданию, досягаемость 10 футов, одна цель. Попадание: 16 (2к10 + 5) урона холодом. + + Жуткий вопль (перезарядка 5-6). Туманный скиталец издает вопль, наполненный магической болью. Каждое существо в пределах 30 футов от него должно совершить спасбросок Мудрости Сл 14. Существо в чём пространстве находится туманный скиталец имеет помеху на данный спасбросок. В случае провала существо получает 14 (4к6) урона психической энергией и становится недееспособным на 1 минуту. Недееспособное существо может повторять спасбросок в конце каждого своего хода, оканчивая на себе действие эффекта в случае успеха. + Описание + + Я скорблю по скитальцам, по всем им. Вид туманного скитальца, в особенности, наполняет меня меланхолией, от которой трудно избавиться. + - Дианкастра + + Происходящие от древних облачных великанов, туманные скитальцы - Элементали, воплощающие смешанную элеметальную природу своих предков, состоящую из Воздуха и Воды. После бесчисленных веков изоляции — часто на одном из Элементальных планов или каком-нибудь скрытом демиплане - они сохраняют небольшой намек на физическую форму своих предков и еще меньше на культуру великанов. + + Туманный скиталец напоминает двуногую фигуру, сделанную из тёмных дождевых облаков. Части его тела кажутся более твердыми, нежели другие, но эти части достаточно прозрачны, чтобы внутри были видны клубящиеся пары сущности скитальца. Из него постоянно исходят облака, как будто скиталец может полностью раствориться в любой момент. Когда он погибает, его туманная форма преобразуется в поток воды. + + Настроение туманного скитальца всегда мрачное, и когда ему угрожают, он часто воет от невыносимого страдания. Всем, кто слышит этот вой, волшебным образом вспоминаются прошлые сожаления, реальные или воображаемые. + +Феникс [Phoenix] +MPMM + + Громадный? Элементаль, обычно нейтральный + Класс Доспеха 18 + Хиты 175 (10к20 + 70) + Скорость 20 футов, летая 120 футов + Сил + 19 (+4) + Лов + 26 (+8) + Тел + 25 (+7) + Инт + 2 (-4) + Мдр + 21 (+5) + Хар + 18 (+4) + Спасброски Мдр +10, Хар +9 + Сопротивление урону дробящий, колющий, рубящий от немагических атак + Иммунитет к урону огонь, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, захват?, паралич?, ошеломление?, истощение? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 15 + Опасность 16 (15 000 опыта) + Бонус мастерства +5 + Местность обитания горы, пустыня + + Сгореть и возродиться. Когда феникс умирает, он взрывается. Все существа в сфере радиусом 60 футов, с центром на фениксе, должны преуспеть в спасброске Ловкости Сл 20, получая 22 (4к10) урона огнём при провале, или половину этого урона при успехе. Огонь поджигает воспламеняемые объекты в зоне поражения при условии, что они не было надеты или не неслись. + + Взрыв уничтожает тело феникса, оставляя от него горку пепла в форме яйца. Пепел раскалён, и наносит 21 (6к6) урона огнём любому, кто касается его, но не чаще раза в раунд. Пепел невосприимчив ко всем типам урона, и спустя 1к6 дней из него появляется новый феникс. + + Огненное тело. Феникс может проходить через пространства шириной хотя бы в 1 дюйм не протискиваясь. + + Любое существо, которое касается феникса или попадает по нему рукопашной атакой, находясь в пределах 5 футов от него, получает 5 (1к10) урона огнём. Более того, феникс может войти в пространство врага и остаться там. В первый раз, когда он входит в пространство существа в свой ход, существо получает 5 (1к10) урона огнём. + + Касанием феникс может поджигать воспламеняемые объекты, при условии, что они не были надеты или не неслись (не требует действий). + + Облёт. Феникс не провоцирует атак, когда вылетает из досягаемости врага. + + Свечение. Феникс распространяет яркий свет на 60 футовым радиусом и тусклый ещё на 30 футов. + + Легендарное сопротивление (3/день). Если феникс проваливает спасбросок, он может вместо этого сделать спасбросок успешным. + + Осадное чудовище. Феникс наносит двойное повреждение объектам и строениям. + Действия + + Мультиатака. Феникс совершает две атаки: одну Клювом и одну Пылающими когтями. + + Клюв. Рукопашная атака оружием: +13 к попаданию, досягаемость 15 футов, одна цель. Попадание: 15 (2к6 + 8) урона огнём. + + Пылающие когти. Рукопашная атака оружием: +13 к попаданию, досягаемость 15 футов, одна цель. Попадание: 17 (2к8 + 8) урона огнём. + Легендарные действия + + Феникс может совершить 3 легендарных действия, выбирая из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Феникс восстанавливает использованные легендарные действия в начале своего хода. + + Удар клювом. Феникс совершает одну атаку Клювом. + + Перемещение. Феникс перемещается на свою скорость. + + Налёт (стоит 2 действия). Феникс перемещается на свою скорость и совершает атаку Пылающими когтями. + Описание + + “Восстать, как феникс из пепла" – многие используют это замысловатое словосочетание. Они мало что знают об истинном ужасе такого возрождения". + — Морденкайнен + + Высвобождение феникса из Внутренних Планов создаёт взрыв огня, который расходится по небу. Огромная огненная птица формируется посреди огня и дыма... Древнейший элементаль, одержимый потребностью сжечь всё дотла, Феникс редко надолго остаётся на одном месте, поскольку стремится превратить весь мир в ад. + +Цеповая улитка [Flail snail] +MPMM + + Большой? Элементаль, без мировоззрения + Класс Доспеха 16 (природный доспех) + Хиты 52 (5к10 + 25) + Скорость 10 футов + Сил + 17 (+3) + Лов + 5 (-3) + Тел + 20 (+5) + Инт + 3 (-4) + Мдр + 10 (+0) + Хар + 5 (-3) + Иммунитет к урону огонь, яд + Иммунитет к состоянию отравление? + Чувства тёмное зрение? 60 футов, пассивное Восприятие 10, чувство вибрации? 60 футов + Опасность 3 (700 опыта) + Бонус мастерства +2 + Местность обитания болото, лес, подземье + + Антимагическая раковина. Улитка имеет преимущество на спасброски от заклинаний и любое существо, совершающее атаку заклинанием по улитке получает помеху на бросок на попадание. + + Если улитка преуспевает в спасброске от заклинания или атака заклинанием промахивается по ней, то раковина улитки преобразует часть энергии заклинания во взрыв разрушающей силы, если заклинание было 1-го уровня или выше. Каждое существо в пределах 30 футов от улитки должно совершить спасбросок Телосложения Сл 15 и получить 3 (1к6) урона силовым полем за каждый уровень заклинания при провале или половину этого урона при успехе. + Действия + + Мультиатака. Цеповая улитка совершает пять атак Цепными щупальцами. + + Цепное щупальце. Рукопашная атака оружием: +5 к попаданию, досягаемость 10 футов, одна цель. Попадание: 5 (1к4 + 3) дробящего урона. + + Сверкающая раковина (Перезаряжается после короткого или продолжительного отдыха). Раковина улитки испускает ослепительный, цветной свет до конца следующего хода улитки. В это время раковина испускает яркий свет в радиусе 30 футов, и существа, которые могут видеть улитку, получают помеху на броски на попадание по ней. Кроме того, любое существо в ярком свете и которое видит улитку, должно совершить спасбросок Мудрости Сл 15 в момент активации способности или стать ошеломлённым до окончания эффекта. + + Защита в раковине. Цеповая улитка отступает в свою раковину и получает бонус +4 к КД и считается опутанной до того, как снова появится. Она может появиться из раковины бонусным действием в свой ход. + Описание + + Цеповая улитка – существо элементальной земли, которая ценится за свою разноцветную раковину. При виде этого неторопливого, внешне безвредного существа, у многих охотников складывается ложное ощущение самоуверенности. Но если любое существо, достаточно большое, чтобы быть угрозой для цеповой улитки, приближается к ней слишком близко, улитка выдает вспышку света и атакует своими палицеподобными щупальцами. + + Если её не беспокоить, цеповая улитка медленно движется по земле, поглощая всё на её поверхности, включая камни, песок и почву, и останавливаясь, чтобы полакомиться выростами кристаллов или залежами минералов. За собой она оставляет мерцающий след, который быстро застывает и превращается в тонкий слой почти прозрачной субстанции, которая несъедобна для улитки. Этот стекловидный материал может быть собран и разрезан на панели для окон различной степени прозрачности. Также он может быть нагрет и преобразован в другие стеклянные объекты. Некоторые гуманоиды зарабатывают на жизнь, преследуя цеповых улиток и собирая это стекло. + + Использование раковины цеповой улитки + + Раковина цеповой улитки, весящая около 250 фунтов, обладает множеством применений. Неповрежденная раковина может быть продана за 5,000 зм. + + Охотники ценят раковину за её антимагические свойства. Умелый бронник может сделать три щита из одной раковины. На один месяц каждый щит даёт своему носителю принадлежащее улитке свойство Антимагическая Раковина. Когда магия щита ослабевает, остается экзотический щит, идеальный для изготовления щита от заклинаний [spellguard shield]. + + Также из раковины цеповой улитки можно сделать мантия сияющих цветов [robe of scintillating colors]. Раковину расталкивают в порошок, который добавляется в краску, которой красится одеяние. Порошок также служит материальным компонентом ритуала, которым зачаровывается мантия. + +Чвинга [Chwinga] +CM IDRF TOA + + Крошечный? Элементаль, нейтральный + Класс Доспеха 15 + Хиты 5 (2к4) + Скорость 20 футов, плавая 20 футов, лазая 20 футов + Сил + 1 (-5) + Лов + 20 (+5) + Тел + 10 (+0) + Инт + 14 (+2) + Мдр + 16 (+3) + Хар + 16 (+3) + Навыки Акробатика +7, Восприятие +7, Скрытность +7 + Чувства слепое зрение? 60 футов, пассивное Восприятие 17 + Опасность 0 (0 или 10 опыта) + Бонус мастерства +2 + + Увёртливость. Если чвинга подвергается действию эффекта, позволяющего совершить спасбросок Ловкости, чтобы получить только половину урона, чвинга вместо этого не получает урон, если преуспеет в спасброске, и получит лишь половину урона, если провалит спасбросок. + + Врождённое колдовство. Базовой характеристикой чвинги является Мудрость. Он может неограниченно накладывать следующие заклинания, не нуждаясь в материальных или вербальных компонентах: искусство друидов [druidcraft], указание [guidance], бесследное передвижение [pass without trace], сопротивление [resistance]. + Действия + + Волшебный дар (1/день). Чвинга нацеливается на Гуманоида в пределах 5 футов от себя, которого он может видеть. Цель получает сверхъестественные чары по выбору Мастера. + + Более подробную информацию о сверхъестественных чарах вы можете найти в статье «Дары всех мастей» или в главе 7 «Руководства Мастера», стр. 227. + + Естественное укрытие. Чвинга волшебным образом укрывается внутри скалы, живого растения или природного источника пресной воды, находясь с ним в одном пространстве. Чвинга не может быть атакована какой-либо атакой, заклинанием или другим эффектом, пока находится внутри этого убежища, а прикрытие не ухудшает слепое зрение чвинги. Чвинга может использовать своё действие, чтобы выйти из укрытия. Если его убежище разрушено, чвинга принудительно вываливается из укрытия и появляется в пространстве, где раньше находилось укрытие, но при этом сам чвинга остаётся невредим. + Описание + + Чвинга – это крошечный элементальный дух, который живёт в растениях, скалах и реках, далёких от цивилизации. Крайне застенчивые, чвинги предпочитают двигаться оставаясь незаметными. + + Если два или более чвинги живут в одном и том же районе, каждый из них будет скрываться в разных растениях, скале или пресной воде. Они напоминают 6-дюймовые анимированные куклы со странными масками, прямыми конечностями и дикими волосами, но при этом два чвинга не похожи друг на друга. + + Их появление иногда предвещается прохладным бризом, сладким запахом цветов и танцующими светлячками. Само их присутствие делает природную обстановку более пышной и яркой. + + Гуманоидное увлечение. Чвинги избегает большинства других существ, но они находят атрибуты цивилизации увлекательными. Для них существа, которые носят доспехи, оружие, используют инструменты и готовят пищу — большая загадка. Когда чвинга сталкивается с одним или несколькими гуманоидами, его любопытство иногда завладевает им, и оно недолго следует за этими существами, чтобы наблюдать за ними. Если оно проявляет симпатию к конкретному гуманоиду, то чвинга может использовать свои заговоры, чтобы помочь ему, или даже дать волшебный подарок перед тем как уйти. Особенности, которые привлекают чвингу к определённому гуманоиду, могут различаться. В некоторых случаях чвинге может просто нравиться то, как гуманоид гуляет, или то, как он расчёсывает волосы. В других случаях оно может быть поражено способностью гуманоида играть музыку или есть обильное количество пищи. + + Стихийная натура. Чвинге не нужен воздух, еда, питьё и сон. У них нет имён и нет возможности говорить. Когда чвинга умирает, он превращается в горсть цветочных лепестков, облако пыльцы, каменную статуэтку, напоминающую её прежнюю «я», гладкий каменный шарик или лужу пресной воды. + +Чвинга [Chwinga] +SAS + + Крошечный? Элементаль, обычно нейтральный + Класс Доспеха 15 + Хиты 7 (3к4) + Скорость 20 футов, плавая 20 футов, копая 20 футов + Сил + 1 (-5) + Лов + 20 (+5) + Тел + 10 (+0) + Инт + 14 (+2) + Мдр + 16 (+3) + Хар + 16 (+3) + Навыки Акробатика +7, Восприятие +7, Скрытность +7 + Чувства слепое зрение? 60 футов, пассивное Восприятие 17 + Опасность 0 (0 или 10 опыта) + Бонус мастерства +2 + + Увёртливость. Когда чвинга подвергается эффекту, который позволяет ему совершить спасбросок Ловкости, чтобы получить только половину урона, вместо этого он не получает урона, если он преуспевает в спасброске, и только половину урона, если он терпит неудачу, при условии, что он дееспособен. + + Необычная природа. Чвинга не нуждается в воздухе, еде или питье. Когда он умирает, он превращается в крошечную кучку лунной пыли, облако сверкающих спор, статуэтку, напоминающую самого себя, кусок льда или губку в форме додекаэдра (по выбору Мастера). + + Действия + + Волшебный дар (1/день). Чвинга нацеливается на Гуманоида, которого он может видеть в пределах 5 футов от себя. Цель получает сверхъестественные чары по выбору Мастера. + + Природный приют. Чвинга укрывается внутри скалы, куста, дерева или естественного источника пресной воды в своём пространстве. Чвинга не может стать целью какой-либо атаки, заклинания или другого эффекта, пока она магически защищена таким образом, и укрытие не ухудшает слепое зрение чвинги. Чвинга может действием выйти из укрытия. Если его убежище разрушено, чвинга вытесняется и появляется в пространстве убежища, но в остальном остается невредимым. + + Использование заклинаний. Чвинга накладывает одно из следующих заклинаний, не требуя материальных или вербальных компонентов и используя Харизму в качестве базовой характеристики: + + Неограниченно: искусство друидов [druidcraft], указание [guidance], бесследное передвижение [pass without trace], сопротивление [resistance] + + Описание + + Чвинги — крошечные духи-элементали, которые легко приспосабливаются к любой обитаемой среде. Эти нежные создания оберегают природу, считая себя её скромными хранителями. Чвинги живут внутри растений, скал и родников вдали от цивилизации. + + Чвинги напоминают анимированных кукол ростом 6 дюймов с масками, тонкими конечностями и растрепанными волосами. У них нет имён, и они не могут говорить. + + Чвинги обычно избегают других существ, но они находят атрибуты цивилизации очаровательными. Они ломают голову над существами, которые носят доспехи, носят оружие, используют инструменты и готовят еду. Когда чвинга сталкивается с одним или несколькими такими существами, его любопытство заставляет его ненадолго спрятаться и понаблюдать за ними. Если ему нравится определенное существо, чвинга использует свои заговоры, чтобы помочь этому существу или наделяет его магическим даром перед уходом. Черты, привлекающие чвинга к тому или иному существу, различаются. Чвинга может нравиться походка определённого существа или то, как оно расчёсывает волосы, или быть поражённым его способностью играть музыку или есть обильное количество пищи. + + + Астронавты Чвинги + + Чвинги, живущие в Диком космосе, обычно обитают на пригодных для жизни лунах и астероидах, хотя иногда они прячутся на кораблях, создающих заклинания, или катаются на космических гуппи [space Guppy]. Используя особенность «Магический дар», чвинга-астронавт может даровать одно из следующих заклинаний вместо описанных в «Руководстве Мастера». + + Чары воздушных пузырей + + Этот амулет позволяет вам действием наложить заклинание воздушный пузырь [air bubble]. После трёхкратного использования эти чары исчезает. + + Чары мгновенных инструментов + + Этот амулет позволяет вам волшебным образом создать набор ремесленных инструментов, инструментов навигатора или воровских инструментов. Созданные инструменты появляются либо в вашей руке, либо где-то ещё в вашем пространстве (на ваш выбор). После использования эти чары исчезают, но инструменты остаются. + +Эйзер [Azer] +MM14 +MM24 + + Средний? Элементаль, законно-нейтральный + Класс Доспеха 17 (природный доспех, щит) + Хиты 39 (6к8 + 12) + Скорость 30 футов + Сил + 17 (+3) + Лов + 12 (+1) + Тел + 15 (+2) + Инт + 12 (+1) + Мдр + 13 (+1) + Хар + 10 (+0) + Спасброски Тел +4 + Иммунитет к урону огонь, яд + Иммунитет к состоянию отравление? + Чувства пассивное Восприятие 11 + Языки Игнан + Опасность 2 (450 опыта) + Бонус мастерства +2 + + Раскаленное тело. Существо, касающееся эйзера или попадающее по нему рукопашной атакой, находясь в пределах 5 футов от него, получает урон огнём 5 (1к10). + + Раскаленное оружие. Если эйзер попадает металлическим рукопашным оружием, он причиняет дополнительный урон огнём 3 (1к6) (уже учтено в атаках). + + Свечение. Эйзер испускает яркий свет в радиусе 10 футов и тусклый свет в пределах ещё 10 футов. + Действия + + Боевой молот. Рукопашная атака оружием: +5 к попаданию, досягаемость 5 футов, одна цель. Попадание: Дробящий урон 7 (1к8 + 3), или дробящий урон 8 (1к10 + 3), если используется двумя руками для совершения рукопашной атаки, плюс урон огнём 3 (1к6). + Описание + + Эйзеры, уроженцы Стихийного Плана Огня, это мастера-ремесленники, опытные шахтеры и заклятые враги ифритов. И внешне и по манере поведения эйзеры похожи на мужчин дварфов, но только лишь внешне. Под выглядящей как металл кожей эйзеров бьется огонь, который внешне заметен лишь по их огненным волосам и бороде. + + Созданные, не рожденные. Эйзеры не размножаются. Каждый из них изготовлен из бронзы другим эйзером и наполнен внутренним огнём создателя. Каждый эйзер внешне уникален. Все это ограничивает рост популяции эйзеров и является основной причиной того, что эти существа остаются редкими. + + Вулканические жители. Эйзеры живут в королевстве на границе между Стихийным Планом Земли и Стихийным Планом Огня, в области гор и вулканов, чьи пики возвышаются как ряд крепостей. Под горными пиками, под вулканическими жерлами, среди рек магмы, эйзеры добывают металлы и драгоценные камни. Отряды эйзеров патрулируют проходы и туннели своего царства, отражая набеги саламандр, атакующих царство эйзеров по приказу своих хозяев, ифритов. + + Враги ифритов. Давным-давно эйзеры и ифриты были союзниками. Эйзеры помогли ифритам создать Латунный город, превратив его в одно из самых удивительных рукотворных мест. Когда эйзеры закончили свою работу, ифриты предали их, предприняв попытку поработить эйзеров, чтобы сохранить секреты города. Несмотря на отдельные налеты и стычки, обе стороны пока воздерживаются от полномасштабного конфликта. Эйзеры полагают, что только угроза раскрыть секреты тайных путей в Латунный город сдерживает ифритов. + + Мастера металла и драгоценных камней. Эйзеры — умелые ремесленники, создающие прекрасные работы из самоцветов и драгоценных металлов, которые они добывают на своей вулканической родине. Они ценят эти сокровища выше всех других вещей. Иногда, в поисках редких металлов и самоцветов, они отправляются на другие планы. + + Когда, при помощи магии, эйзера призывают на Материальный План, обычно это делается для создания сложного магического предмета или произведения искусства, так как считается, что их умению в подобных вещах нет равных. + + Живой огонь. Эйзер не нуждается в еде, питье и сне. + +Ян-Си-Бин [Yan-C-Bin] +POA + + Огромный? Элементаль, нейтрально-злой, именной НИП + Класс Доспеха 22 (природный доспех) + Хиты 283 (21к12 + 147) + Скорость 50 футов, летая 150 футов + Сил + 18 (+4) + Лов + 24 (+7) + Тел + 24 (+7) + Инт + 16 (+3) + Мдр + 21 (+5) + Хар + 23 (+6) + Спасброски Лов +13, Мдр +11, Хар +12 + Сопротивление урону огонь, холод; дробящий, колющий, рубящий от немагических атак + Иммунитет к урону звук, электричество, яд + Иммунитет к состоянию окаменение?, опутанность?, отравление?, сбивание с ног?, паралич?, очарование?, испуг? + Чувства слепое зрение? 120 футов, пассивное Восприятие 15 + Языки Ауран + Опасность 18 (20 000 опыта) + Бонус мастерства +6 + + Воздушное тело. Ян-Си-Бин может входить в пространство враждебных существ и останавливаться там. Он может перемещаться сквозь пространство шириной в 1 дюйм без протискивания, если сквозь такое пространство может пройти воздух. + + Усиленные удары. Размашистые удары Ян-Си-Бина считаются магическими при преодолении сопротивления или иммунитета к атакам немагическим оружием. + + Врождённое колдовство. Базовой характеристикой Ян-Си-Бина является Харизма (Сл спасброска от заклинаний 20, +12 к попаданию заклинаниями). Он врождённо может накладывать следующие заклинания, не нуждаясь в материальных компонентах: + + Неограниченно: порыв ветра [gust of wind], невидимость [invisibility], молния [lightning bolt] + + 2/день каждое: пляшущая молния [chain lightning], облако смерти [cloudkill], ускорение [haste] + + Легендарное сопротивление (3/день). Если Ян-Си-Бин проваливает спасбросок, он может вместо этого может сделать спасбросок успешным. + + Сопротивление магии. Ян-Си-Бин совершает с преимуществом спасброски от заклинаний и прочих магических эффектов. + Действия + + Мультиатака. Ян-Си-Бин совершает две атаки размашистыми ударами. + + Размашистый удар. Рукопашная атака оружием: +14 к попаданию, досягаемость 10 фт, одна цель. Попадание: урон силовым полем 20 (3к8 + 7) плюс урон электричеством 10 (3к6). + + Удар грома (перезаряжается после короткого или длительного отдыха). Ян-Си-Бин создает ужасный удар грома в сфере радиусом 100 футов с центром на себе. Все остальные существа должны совершить спасбросок Телосложения Сл 24. При провале существо получает урон звуком 31 (9к6) и становится оглохшим на 1 минуту. При успехе существо получает половину урона и становится оглохшим до начала следующего хода Ян-Си-Бина. + + Смена формы. Ян-Си-Бин превращается в гуманоида Среднего размера. Пока он находится в изменённой форме, его фигуру окружает небольшой вихрь, его глаза становятся белыми и затуманенными, и он теряет черту «воздушное тело». Он может оставаться в изменённой форме на протяжении 1 часа и может действием вернуться в свою истинную форму. + + Призыв элементалей (1/день). Ян-Си-Бин призывает до трёх воздушных элементалей, теряя по 30 хитов за каждого элементаля, вызванного таким образом. Призванные элементали имеют максимальное количество хитов и появляются в пределах 100 футов от Ян-Си-Бина. Они исчезают, если хиты Ян-Си-Бина упадут до 0. + Легендарные действия + + Ян-Си-Бин может совершить 3 легендарных действия, выбирая их из представленных ниже вариантов. За один раз можно использовать только одно легендарное действие, и только в конце хода другого существа. Ян-Си-Бин восстанавливает использованные легендарные действия в начале своего хода. + + Громовой раскат. Ян-Си-Бин создает раскат грома, который слышен на расстоянии 300 футов. Все существа, расположенные в пределах 30 футов от Ян-Си-Бина, получают урон звуком 5 (1к10). + + Телепортация (стоит 2 действия). Ян-Си-Бин магическим образом телепортируется на расстояние до 120 футов в свободное пространство, которое он видит. Всё несомое или носимое Ян-Си-Бином снаряжение пере-носится вместе с ним. + + Удушение (стоит 3 действия). Ян-Си-Бин забирает весь воздух из лёгких одного способного дышать существа, которое он может видеть и которое расположено в пределах 60 футов от него. Цель должна совершить спасбросок Телосложения Сл 21. При провале хиты цели опускаются до 0, и она начинает умирать. При успехе цель не может дышать и говорить до начала своего следующего хода. + Логово + + Ян-­Си-­Бин живёт на Стихийном Плане Воздуха во дворце, сотканном из воздушных потоков. Там, и в элементальных узлах воздуха на Материальном Плане, власть Ян-­Си­-Бина неоспорима. В своём логове он может использовать действия, описанные ниже. + Действия логова + + При значении инициативы «20» (в случае ничь­ей проигрывает всем конкурентам) Ян-­Си­-Бин использует действие логова, чтобы вызвать один из следующих эффектов (он не может создать один и тот же эффект более одного раза подряд): + • Ян-­Си-­Бин остужает воздух в логове, и все по­верхности покрываются льдом. Эффект аналоги­чен заклинанию метель [sleet storm]. + • Ян­-Си-­Бин управляет окружающим его воздухом как продолжением себя. Все выбранные Ян­-Си­-Бином существа должны совершить спасбросок Телосложения Сл 24. При провале существо отбрасывается на дистанцию 3к6 × 10 футов или поднимается в воздух на ту же высоту. Су­щество, столкнувшееся с твёрдой поверхностью при броске или упавшее с высоты, получает 1к6 дробящего урона за каждые 10 футов броска или падением. + • Ян­-Си-­Бин создаёт пылевой вихрь в пределах 120 футов от себя, который рассеивается в сле­дующем раунде при значении инициативы «20». Пока вихрь не исчезнет, все существа и объекты в его области считаются слабо заслонёнными. Все существа, расположенные в области вихря, должны преуспеть в спасброске Мудрости Сл 24, иначе станут ослеплёнными. Слепота исчезает в следующем раунде при значении инициативы «20». + Местные эффекты + + Воздушные массы в окрестностях элементального узла подчиняются Ян-­Си­-Бину, покуда Принц Злого Воздуха остаётся внутри него. Из-­за этого в воз­духе висит то обжигающая жара, то лютый мороз; повсюду гремит гром, а небо прорезают разряды молний; ураганные ветра подхватывают с земли тяжести, швыряя их назад с невероятной силой; а воронки смерчей повсеместно уничтожают всё, чего коснутся. + • В радиусе 5 миль округу терзают ураганные ветра, которые поднимают в воздух мелкие или лёгкие предметы, срывают заборы и крыши с домов, обламывают сучья с деревьев и делают невозможными полёты в своей области. Суще­ства Маленького и Среднего размера движутся сквозь такой ветер с половиной скорости; суще­ства Крошечного размера, не защищённые от воздействия ветра, должны совершить проверку Силы (Атлетика) Сл 15. При провале их подхва­тывает ветер, и они уносятся в его направлении со скоростью 40 футов в раунд. + • В пределах 5 миль от логова Ян-­Си-­Бина разра­жаются грозы, сопровождаемые оглушительны­ми раскатами грома и постоянными вспышками молний. Каждые десять минут, что бушует гроза, в находящихся под открытым небом существ мо­жет ударить молния с шансом в 5%. Поражённое молнией существо должно совершить спасбросок Телосложения Сл 21. При провале оно получает урон электричеством 21 (6к6), а при успехе — половину урона. + • В пределах 5 миль от логова Ян­-Си­-Бина появ­ляются смерчи. Каждый час, пока персонажи находятся в этой области, существует шанс в 5%, что они окажутся на пути смерча, движущегося со скоростью 250 футов в раунд. Каждый пер­сонаж должен совершить спасбросок Телосложе­ния Сл 21, получая при провале дробящий урон 33 (6к10). Смерч уничтожает все деревянные и ветхие строения на своём пути. + + • В пределах 1 мили от логова природные пещеры и продуваемые ветром каньоны создают времен­ные порталы на Стихийный План Воздуха, про­пуская в мир смертных элементальных существ, которые будут обитать неподалёку от таких мест. + + Если Ян-­Си-­Бин уничтожен или изгнан на свой родной план, местные эффекты рассеиваются в течение следующих 1к10 дней. + Описание + + Ян­-Си­-Бин — Принц Злого Воздуха — настолько же мудр, насколько злобен, а его замыслы начали претворяться в жизнь ещё при сотворении мира. Более утончённый и коварный, чем другие элемен­тальные принцы, Ян-­Си­-Бин действует незримо: он изучает своих противников с безопасного расстоя­ния, молниеносно наносит удар и исчезает прежде, чем его враги смогут ответить. + + Его истинная форма представляет собой не­видимый вихрь воющего воздуха, высотой 30 и шириной 15 футов. Однако Ян-­Си-­Бин иногда принимает форму сухопарого почтенного человека с тонкими белыми волосами и сияющими белыми глазами. Если же Ян-­Си-­Бин хочет остаться не­замеченным, то он проявляется только как лёгкое дуновение холодного ветра. + + Из своего дворца, парящего в бесконечных затя­нутых облаками небесах Плана Воздуха, Ян-­Си­-Бин на протяжении тысячелетий наблюдает за тем, как меняются миры. Злые воздушные существа почи­тают элементального принца как бога и верят, что Ян-­Си­-Бин смотрит на них через вихри и ураганы. Но Принцу Злого Воздуха не нужны ни их молит­вы, ни дары, ни жертвоприношения. Всё, чего он хочет, — уничтожить материальные миры, разо­рвать их на части неодолимой силой стихии ветра и воздуха + + + \ No newline at end of file diff --git a/generate_encounter/generate_encounter.py b/generate_encounter/generate_encounter.py index da70b54..1741f68 100644 --- a/generate_encounter/generate_encounter.py +++ b/generate_encounter/generate_encounter.py @@ -54,7 +54,7 @@ from hooks_data import ENCOUNTER_TYPE_WEIGHTS, HOOK_WEIGHTS, HOOKS from get_creature import get_creature from get_npc_races import get_npc_races -# Импортируем функцию из соседней папки. +# Импортируем функцию из соседней папки. # Поскольку в sys.path есть npc_folder, можно импортировать напрямую из файла from generate_npc import generate_npc as get_npc @@ -63,6 +63,7 @@ from generate_npc import generate_npc as get_npc # TypedDict # ────────────────────────────────────────────────────────────────────────────── + class EncounterRequest(TypedDict, total=False): """ Параметры одного запроса случайной встречи. @@ -71,8 +72,10 @@ class EncounterRequest(TypedDict, total=False): environment: Биом. Допустимы: arctic, coastal, desert, forest, grassland, hill, mountain, swamp, underdark, - underwater, urban, nine_hells, astral_sea, feywild, - plane_of_air, plane_of_earth, plane_of_fire, plane_of_water. + underwater, urban, + astral_sea, plane_of_air, plane_of_earth, plane_of_fire, plane_of_water, + feywild, shadowfell, lower_planes_le, lower_planes_ne, lower_planes_ce, + upper_planes_lg, upper_planes_ng, upper_planes_cg, planes_of_chaos, plane_of_law. По умолчанию: forest. level: Средний уровень группы (1–20). @@ -115,16 +118,16 @@ class EncounterRequest(TypedDict, total=False): monster_los: Есть ли у монстров прямая видимость в начале? По умолчанию: True. """ - environment: str - level: int - encounter_type: Optional[str] - party_surprise_mods: Dict[str, int] + environment: str + level: int + encounter_type: Optional[str] + party_surprise_mods: Dict[str, int] monster_surprise_mods: Dict[str, int] - reaction_mods: Dict[str, int] - party_foreknowledge: Optional[bool] - party_los: Optional[bool] + reaction_mods: Dict[str, int] + party_foreknowledge: Optional[bool] + party_los: Optional[bool] monster_foreknowledge: Optional[bool] - monster_los: Optional[bool] + monster_los: Optional[bool] # ────────────────────────────────────────────────────────────────────────────── @@ -153,11 +156,11 @@ def _pick_encounter_type(env: str, requested_type: Optional[str] = None) -> str: """ # Список всех доступных типов из данных valid_types = ["PvP", "PvE", "PvX", "PvSelf"] - + # Если пользователь передал конкретный тип, проверяем его наличие if requested_type and requested_type in valid_types: return requested_type - + weights = ENCOUNTER_TYPE_WEIGHTS.get( env, {"PvP": 25, "PvE": 25, "PvX": 25, "PvSelf": 25} @@ -315,7 +318,7 @@ def _determine_surprise( """Рассчитывает внезапность для одной стороны по правилам ACKS II.""" if foreknowledge: return f"**{side_name}:** Не застигнуты врасплох (Было предзнание/Foreknowledge)." - + mod_sum = sum(mods.values()) if mods else 0 roll = random.randint(1, 6) total = roll + mod_sum diff --git a/generate_encounter/get_creature.py b/generate_encounter/get_creature.py index 23173c0..36723b3 100644 --- a/generate_encounter/get_creature.py +++ b/generate_encounter/get_creature.py @@ -19,23 +19,33 @@ from monsters_data import DATA def _resolve_level_key(env: str, level: int) -> str: """ Определяет ключ диапазона уровней для данного биома. - Разные биомы имеют разные диапазоны в таблицах DMG. """ + # Feywild и Shadowfell используют "11+" вместо "11-16" и "17-20" + if env in ( + "feywild", "shadowfell", + "lower_planes_le", "lower_planes_ne", "lower_planes_ce", + "upper_planes_lg", "upper_planes_ng", "upper_planes_cg", + "planes_of_chaos", "plane_of_law", + ): + if level <= 4: return "1-4" + if level <= 10: return "5-10" + return "11+" + if env == "grassland": - if level <= 5: return "1-5" - if level <= 10: return "6-10" - if level <= 16: return "11-16" + if level <= 5: return "1-5" + if level <= 10: return "6-10" + if level <= 16: return "11-16" return "17-20" if env in ("swamp", "underwater"): - if level <= 4: return "1-4" - if level <= 10: return "5-10" + if level <= 4: return "1-4" + if level <= 10: return "5-10" return "11-20" - # Все остальные биомы - if level <= 4: return "1-4" - if level <= 10: return "5-10" - if level <= 16: return "11-16" + # Стихийные планы + все стандартные биомы + if level <= 4: return "1-4" + if level <= 10: return "5-10" + if level <= 16: return "11-16" return "17-20" diff --git a/generate_encounter/get_npc_races.py b/generate_encounter/get_npc_races.py index 96de1ef..20b52b2 100644 --- a/generate_encounter/get_npc_races.py +++ b/generate_encounter/get_npc_races.py @@ -9,274 +9,348 @@ get_npc_races.py — маппинг биома на типичные расы NP NPC_RACES_BY_ENV: dict[str, list[str]] = { "arctic": [ - "Human", # основное население севера - "Goliath", # горные и арктические кочевники - "Half-Orc", # выносливые, часто в северных племенах - "Dwarf", # горные кланы у края ледников - "Orc", # северные племена - "Genasi", # воздушные и водные генази — редко, но возможно - "Tiefling", # изгнанники и одиночки + "Human", # основное население севера + "Goliath", # горные и арктические кочевники + "Half-Orc", # выносливые, часто в северных племенах + "Dwarf", # горные кланы у края ледников + "Orc", # северные племена + "Genasi", # воздушные и водные генази — редко, но возможно + "Tiefling", # изгнанники и одиночки ], "coastal": [ - "Human", # рыбаки, моряки, торговцы - "Half-Elf", # портовые города полны полукровок - "Triton", # прибрежные общины, выходящие на сушу - "Genasi", # водные генази — у моря естественны - "Dwarf", # морские торговцы - "Halfling", # торговые суда, таверны - "Gnome", # механики, картографы - "Tabaxi", # странствующие торговцы с далёких берегов - "Tiefling", # портовые города терпимы к чужакам - "Half-Orc", # докеры, наёмники - "Kenku", # воры и информаторы в портах - "Lizardfolk", # прибрежные болота рядом - "Orc", # пираты, наёмные моряки - "Aasimar", # редко, но встречаются + "Human", # рыбаки, моряки, торговцы + "Half-Elf", # портовые города полны полукровок + "Triton", # прибрежные общины, выходящие на сушу + "Genasi", # водные генази — у моря естественны + "Dwarf", # морские торговцы + "Halfling", # торговые суда, таверны + "Gnome", # механики, картографы + "Tabaxi", # странствующие торговцы с далёких берегов + "Tiefling", # портовые города терпимы к чужакам + "Half-Orc", # докеры, наёмники + "Kenku", # воры и информаторы в портах + "Lizardfolk", # прибрежные болота рядом + "Orc", # пираты, наёмные моряки + "Aasimar", # редко, но встречаются ], "desert": [ - "Human", # основное население пустынь - "Genasi", # огненные и воздушные — у себя дома - "Tabaxi", # кочевые охотники - "Tiefling", # торговые пути, одиночки - "Half-Elf", # торговцы на маршрутах - "Dragonborn", # кланы в руинах древних империй - "Gnome", # алхимики, искатели артефактов - "Yuan-ti Pureblood", # их цивилизации исторически в пустынях - "Kobold", # в руинах и пещерах под песком - "Halfling", # торговые караваны - "Aasimar", # странники, несущие миссию - "Half-Orc", # наёмники охраны каравана - "Lizardfolk", # оазисы, реки + "Human", # основное население пустынь + "Genasi", # огненные и воздушные — у себя дома + "Tabaxi", # кочевые охотники + "Tiefling", # торговые пути, одиночки + "Half-Elf", # торговцы на маршрутах + "Dragonborn", # кланы в руинах древних империй + "Gnome", # алхимики, искатели артефактов + "Yuan-ti Pureblood", # их цивилизации исторически в пустынях + "Kobold", # в руинах и пещерах под песком + "Halfling", # торговые караваны + "Aasimar", # странники, несущие миссию + "Half-Orc", # наёмники охраны каравана + "Lizardfolk", # оазисы, реки ], "forest": [ - "Human", # охотники, дровосеки, деревни - "Elf", # лесные общины — естественная среда - "Half-Elf", # дети смешанных союзов - "Firbolg", # хранители леса - "Gnome", # лесные гномы в чаще - "Halfling", # деревни на опушках - "Wood Elf", # лесные эльфы - "Goblin", # банды в чаще - "Kobold", # норы под корнями - "Tabaxi", # охотники-одиночки - "Kenku", # падальщики и воры - "Half-Orc", # изгнанники, охотники - "Orc", # племена в глубоком лесу - "Tiefling", # отшельники, беглецы - "Aasimar", # странники - "Lizardfolk", # у болотистых рек - "Dragonborn", # редкие кланы - "Satyr", # фейские опушки - "Genasi", # природные генази + "Human", # охотники, дровосеки, деревни + "Elf", # лесные общины — естественная среда + "Half-Elf", # дети смешанных союзов + "Firbolg", # хранители леса + "Gnome", # лесные гномы в чаще + "Halfling", # деревни на опушках + "Wood Elf", # лесные эльфы + "Goblin", # банды в чаще + "Kobold", # норы под корнями + "Tabaxi", # охотники-одиночки + "Kenku", # падальщики и воры + "Half-Orc", # изгнанники, охотники + "Orc", # племена в глубоком лесу + "Tiefling", # отшельники, беглецы + "Aasimar", # странники + "Lizardfolk", # у болотистых рек + "Dragonborn", # редкие кланы + "Satyr", # фейские опушки + "Genasi", # природные генази ], "grassland": [ - "Human", # фермеры, пастухи, кочевники - "Halfling", # сельские общины - "Half-Orc", # племена степей - "Orc", # кочевые орды - "Gnome", # деревни торговцев - "Half-Elf", # странствующие торговцы - "Goliath", # кочевые воины - "Tabaxi", # охотники на просторах - "Dragonborn", # кланы воинов - "Tiefling", # одиночки среди людских общин - "Kenku", # у дорог и трактов - "Kobold", # норы в холмах - "Aasimar", # редкие странники - "Leonin", # прайды в открытых равнинах — их естественная среда - "Genasi", # воздушные генази + "Human", # фермеры, пастухи, кочевники + "Halfling", # сельские общины + "Half-Orc", # племена степей + "Orc", # кочевые орды + "Gnome", # деревни торговцев + "Half-Elf", # странствующие торговцы + "Goliath", # кочевые воины + "Tabaxi", # охотники на просторах + "Dragonborn", # кланы воинов + "Tiefling", # одиночки среди людских общин + "Kenku", # у дорог и трактов + "Kobold", # норы в холмах + "Aasimar", # редкие странники + "Leonin", # прайды в открытых равнинах — их естественная среда + "Genasi", # воздушные генази ], "hill": [ - "Human", # деревни и фермы - "Dwarf", # холмовые кланы - "Halfling", # норы в холмах — классическая среда - "Gnome", # холмовые гномы - "Half-Orc", # наёмники и изгнанники - "Orc", # племена холмов - "Goblin", # многочисленны в холмах - "Hobgoblin", # военные лагеря - "Kobold", # шахты и норы - "Tiefling", # одиночки - "Half-Elf", # торговцы между деревнями - "Dragonborn", # воинские кланы - "Goliath", # у предгорий - "Kenku", # у дорог - "Aasimar", # редко + "Human", # деревни и фермы + "Dwarf", # холмовые кланы + "Halfling", # норы в холмах — классическая среда + "Gnome", # холмовые гномы + "Half-Orc", # наёмники и изгнанники + "Orc", # племена холмов + "Goblin", # многочисленны в холмах + "Hobgoblin", # военные лагеря + "Kobold", # шахты и норы + "Tiefling", # одиночки + "Half-Elf", # торговцы между деревнями + "Dragonborn", # воинские кланы + "Goliath", # у предгорий + "Kenku", # у дорог + "Aasimar", # редко ], "mountain": [ - "Human", # горные деревни, монастыри - "Dwarf", # горные твердыни — их дом - "Goliath", # высокогорные кочевники - "Dragonborn", # горные кланы - "Gnome", # шахтёры - "Half-Orc", # горные наёмники - "Orc", # горные племена - "Tiefling", # отшельники в горных монастырях - "Aasimar", # паломники, отшельники - "Kobold", # в шахтах и пещерах - "Goblin", # в расщелинах - "Hobgoblin", # военные форпосты - "Genasi", # земляные и огненные - "Kenku", # у горных троп + "Human", # горные деревни, монастыри + "Dwarf", # горные твердыни — их дом + "Goliath", # высокогорные кочевники + "Dragonborn", # горные кланы + "Gnome", # шахтёры + "Half-Orc", # горные наёмники + "Orc", # горные племена + "Tiefling", # отшельники в горных монастырях + "Aasimar", # паломники, отшельники + "Kobold", # в шахтах и пещерах + "Goblin", # в расщелинах + "Hobgoblin", # военные форпосты + "Genasi", # земляные и огненные + "Kenku", # у горных троп ], "swamp": [ - "Human", # рыбаки, браконьеры, отшельники - "Lizardfolk", # болотные общины — их естественная среда - "Yuan-ti Pureblood", # древние культы в руинах - "Genasi", # водные генази - "Half-Orc", # изгнанники - "Goblin", # болотные банды - "Kobold", # в норах у воды - "Tiefling", # отшельники и культисты - "Kenku", # падальщики - "Orc", # племена болот - "Gnome", # алхимики, охотники за ингредиентами - "Half-Elf", # искатели приключений - "Tabaxi", # охотники - "Aasimar", # редко, миссионеры + "Human", # рыбаки, браконьеры, отшельники + "Lizardfolk", # болотные общины — их естественная среда + "Yuan-ti Pureblood", # древние культы в руинах + "Genasi", # водные генази + "Half-Orc", # изгнанники + "Goblin", # болотные банды + "Kobold", # в норах у воды + "Tiefling", # отшельники и культисты + "Kenku", # падальщики + "Orc", # племена болот + "Gnome", # алхимики, охотники за ингредиентами + "Half-Elf", # искатели приключений + "Tabaxi", # охотники + "Aasimar", # редко, миссионеры ], "underdark": [ - "Dwarf", # дуэргары и обычные дварфы в приграничных крепостях - "Gnome", # глубинные гномы (svirfneblin) - "Elf", # дроу - "Half-Elf", # потомки дроу и поверхностных рас - "Goblin", # многочисленны в пещерах - "Hobgoblin", # военные отряды - "Kobold", # повсюду в туннелях - "Orc", # глубинные кланы - "Half-Orc", # среди орочьих кланов - "Tiefling", # культисты, беглецы с поверхности - "Genasi", # земляные и огненные у жерл - "Aasimar", # редчайшие — пленники или странники - "Dragonborn", # редкие кланы, связанные с глубинными драконами - "Gith", # githyanki и githzerai проходят через Андердарк - "Human", # шахтёры, искатели, беглецы с поверхности - "Bugbear", # охотники в темноте + "Dwarf", # дуэргары и обычные дварфы в приграничных крепостях + "Gnome", # глубинные гномы (svirfneblin) + "Elf", # дроу + "Half-Elf", # потомки дроу и поверхностных рас + "Goblin", # многочисленны в пещерах + "Hobgoblin", # военные отряды + "Kobold", # повсюду в туннелях + "Orc", # глубинные кланы + "Half-Orc", # среди орочьих кланов + "Tiefling", # культисты, беглецы с поверхности + "Genasi", # земляные и огненные у жерл + "Aasimar", # редчайшие — пленники или странники + "Dragonborn", # редкие кланы, связанные с глубинными драконами + "Gith", # githyanki и githzerai проходят через Андердарк + "Human", # шахтёры, искатели, беглецы с поверхности + "Bugbear", # охотники в темноте ], "underwater": [ - "Triton", # подводные общины — их дом - "Genasi", # водные генази - "Human", # редко, с магической защитой - "Half-Elf", # с зельями или артефактами - "Aasimar", # миссионеры из морских храмов + "Triton", # подводные общины — их дом + "Genasi", # водные генази + "Human", # редко, с магической защитой + "Half-Elf", # с зельями или артефактами + "Aasimar", # миссионеры из морских храмов ], "urban": [ - "Human", # большинство населения городов - "Half-Elf", # везде как рыба в воде - "Dwarf", # торговцы, ремесленники - "Gnome", # изобретатели, алхимики, иллюзионисты - "Halfling", # воры, торговцы, слуги - "Tiefling", # городская среда терпима или враждебна — в любом случае они здесь - "Half-Orc", # охранники, докеры, наёмники - "Elf", # послы, маги, торговцы - "Dragonborn", # воины, гильдейские члены - "Aasimar", # жрецы, паладины - "Kenku", # воры, информаторы, гонцы - "Goblin", # трущобы, подземелья под городом - "Kobold", # слуги, механики в мастерских - "Tabaxi", # торговцы из дальних стран - "Orc", # охранники, строители - "Bugbear", # бандиты, вышибалы - "Hobgoblin", # наёмные солдаты, городская стража - "Genasi", # маги, ремесленники - "Lizardfolk", # редко, торговые посольства - "Yuan-ti Pureblood", # инфильтраторы в богатых кварталах - "Gith", # очень редко, искатели артефактов - "Satyr", # артисты, бродяги - ], - "nine_hells": [ - "Tiefling", # чувствуют зов крови - "Human", # авантюристы, культисты, проклятые - "Aasimar", # пленники или посланники - "Dragonborn", # кланы, заключившие инфернальные договоры - "Half-Elf", # искатели запретного знания - "Gith", # githyanki — союзники Тиамат - "Genasi", # огненные генази - "Half-Orc", # наёмники на инфернальной службе + "Human", # большинство населения городов + "Half-Elf", # везде как рыба в воде + "Dwarf", # торговцы, ремесленники + "Gnome", # изобретатели, алхимики, иллюзионисты + "Halfling", # воры, торговцы, слуги + "Tiefling", # городская среда терпима или враждебна — в любом случае они здесь + "Half-Orc", # охранники, докеры, наёмники + "Elf", # послы, маги, торговцы + "Dragonborn", # воины, гильдейские члены + "Aasimar", # жрецы, паладины + "Kenku", # воры, информаторы, гонцы + "Goblin", # трущобы, подземелья под городом + "Kobold", # слуги, механики в мастерских + "Tabaxi", # торговцы из дальних стран + "Orc", # охранники, строители + "Bugbear", # бандиты, вышибалы + "Hobgoblin", # наёмные солдаты, городская стража + "Genasi", # маги, ремесленники + "Lizardfolk", # редко, торговые посольства + "Yuan-ti Pureblood", # инфильтраторы в богатых кварталах + "Gith", # очень редко, искатели артефактов + "Satyr", # артисты, бродяги ], "astral_sea": [ - "Human", # авантюристы, искатели - "Gith", # githyanki — хозяева Астрального моря - "Aasimar", # небесные странники - "Tiefling", # торговцы между планами - "Genasi", # воздушные генази - "Half-Elf", # дипломаты между планарными фракциями - "Dragonborn", # планарные рыцари - "Gnome", # исследователи и картографы планов - ], - "feywild": [ - "Elf", # тесно связаны с Феидом - "Half-Elf", # притянуты фейской кровью - "Gnome", # лесные гномы — почти фейские существа - "Satyr", # их родной план - "Tiefling", # изгнанники, ищущие красоты - "Halfling", # любопытные путешественники - "Human", # заблудившиеся или призванные - "Firbolg", # хранители фейских рощ - "Aasimar", # посланники в фейские дворы - "Genasi", # природные генази - "Tabaxi", # очарованные странники - "Dragonborn", # редко, по древним договорам + "Human", # авантюристы, искатели + "Gith", # githyanki — хозяева Астрального моря + "Aasimar", # небесные странники + "Tiefling", # торговцы между планами + "Genasi", # воздушные генази + "Half-Elf", # дипломаты между планарными фракциями + "Dragonborn", # планарные рыцари + "Gnome", # исследователи и картографы планов ], "plane_of_air": [ - "Aarakocra", # коренные обитатели облачных городов - "Genasi", # воздушные генази, рождённые стихией - "Djinn", # правят дворцами, редко общаются с чужаками - "Elf", # искатели знаний, пилоты летучих кораблей - "Human", # купцы, наёмники, беглецы - "Tiefling", # дипломаты или изгнанники - "Aasimar", # посланники богов ветра - "Gith", # githyanki – рейдеры, githzerai – отшельники - "Gnome", # изобретатели летательных аппаратов - "Halfling", # торговцы на воздушных рынках - "Kenku", # шпионы и воры при дворах джиннов - "Tabaxi", # охотники на высоте, ценят свободу - "Dragonborn", # воины, связанные с небесными драконами + "Aarakocra", # коренные обитатели облачных городов + "Genasi", # воздушные генази, рождённые стихией + "Djinn", # правят дворцами, редко общаются с чужаками + "Elf", # искатели знаний, пилоты летучих кораблей + "Human", # купцы, наёмники, беглецы + "Tiefling", # дипломаты или изгнанники + "Aasimar", # посланники богов ветра + "Gith", # githyanki – рейдеры, githzerai – отшельники + "Gnome", # изобретатели летательных аппаратов + "Halfling", # торговцы на воздушных рынках + "Kenku", # шпионы и воры при дворах джиннов + "Tabaxi", # охотники на высоте, ценят свободу + "Dragonborn", # воины, связанные с небесными драконами ], "plane_of_earth": [ - "Dwarf", # хозяева подземных твердынь, шахтёры - "Gnome", # глубинные гномы, камнерезы и иллюзионисты - "Genasi", # земляные генази, хранители пещер - "Goliath", # кочевники горных хребтов - "Half-Orc", # наёмники, охрана караванов - "Orc", # племена в глубоких пещерах - "Dragonborn", # кланы, связанные с драконами земли - "Tiefling", # искатели древней силы - "Aasimar", # паломники к священным местам - "Goblin", # банды в туннелях - "Kobold", # мастера ловушек и шахтёры - "Hobgoblin", # военные отряды - "Dao", # джинны земли, правители дворцов - "Duergar", # тёмные дварфы, злобные обитатели глубин + "Dwarf", # хозяева подземных твердынь, шахтёры + "Gnome", # глубинные гномы, камнерезы и иллюзионисты + "Genasi", # земляные генази, хранители пещер + "Goliath", # кочевники горных хребтов + "Half-Orc", # наёмники, охрана караванов + "Orc", # племена в глубоких пещерах + "Dragonborn", # кланы, связанные с драконами земли + "Tiefling", # искатели древней силы + "Aasimar", # паломники к священным местам + "Goblin", # банды в туннелях + "Kobold", # мастера ловушек и шахтёры + "Hobgoblin", # военные отряды + "Dao", # джинны земли, правители дворцов + "Duergar", # тёмные дварфы, злобные обитатели глубин ], "plane_of_fire": [ - "Genasi", # огненные генази, коренные жители - "Tiefling", # заключают сделки с эфритами - "Dragonborn", # рыцари, связанные с драконами огня - "Azer", # огненные дварфы, кузнецы - "Efreet", # джинны огня, правители-тираны - "Half-Orc", # наёмники в армиях эфритов - "Orc", # племена у жерл вулканов - "Goblin", # слуги и рабочая сила - "Kobold", # хранители сокровищ в горячих пещерах - "Aasimar", # посланники добра, пытаются смягчить тиранию - "Human", # авантюристы, купцы, беженцы - "Dwarf", # горные дварфы, искатели редких руд - "Gith", # рейдеры или отшельники + "Genasi", # огненные генази, коренные жители + "Tiefling", # заключают сделки с эфритами + "Dragonborn", # рыцари, связанные с драконами огня + "Azer", # огненные дварфы, кузнецы + "Efreet", # джинны огня, правители-тираны + "Half-Orc", # наёмники в армиях эфритов + "Orc", # племена у жерл вулканов + "Goblin", # слуги и рабочая сила + "Kobold", # хранители сокровищ в горячих пещерах + "Aasimar", # посланники добра, пытаются смягчить тиранию + "Human", # авантюристы, купцы, беженцы + "Dwarf", # горные дварфы, искатели редких руд + "Gith", # рейдеры или отшельники ], "plane_of_water": [ - "Triton", # коренные обитатели, стражи глубин - "Genasi", # водные генази, лоцманы и целители - "Elf", # морские эльфы, кочевники рифов - "Human", # моряки, торговцы, пираты - "Aasimar", # посланники морских божеств - "Tiefling", # изгои или пираты глубин - "Dragonborn", # воины, связанные с морскими драконами - "Lizardfolk", # охотники на болотах и мелководье - "Dwarf", # подводные крепости, добытчики жемчуга - "Gnome", # изобретатели подводных аппаратов - "Marid", # джинны воды, своенравные правители - "Merfolk", # рыбаки, певцы, хранители знаний + "Triton", # коренные обитатели, стражи глубин + "Genasi", # водные генази, лоцманы и целители + "Elf", # морские эльфы, кочевники рифов + "Human", # моряки, торговцы, пираты + "Aasimar", # посланники морских божеств + "Tiefling", # изгои или пираты глубин + "Dragonborn", # воины, связанные с морскими драконами + "Lizardfolk", # охотники на болотах и мелководье + "Dwarf", # подводные крепости, добытчики жемчуга + "Gnome", # изобретатели подводных аппаратов + "Marid", # джинны воды, своенравные правители + "Merfolk", # рыбаки, певцы, хранители знаний + ], + "lower_planes_le": [ + "Tiefling", # дети крови дьяволов - как дома + "Human", # авантюристы, культисты, проклятые + "Dragonborn", # инфернальные договоры + "Aasimar", # пленники или засланные агенты + "Half-Orc", # наёмники в дьявольских армиях + "Gith", # githyanki - союзники Тиамат и Nine Hells + "Genasi", # огненные генази + ], + "lower_planes_ne": [ + "Tiefling", # торговцы между планами зла + "Human", # души, потерявшие волю + "Gnome", # алхимики с тёмными сделками + "Half-Elf", # дипломаты и предатели + "Aasimar", # падшие или засланные + "Genasi", # тёмные генази + ], + "lower_planes_ce": [ + "Tiefling", # хаотики, обуреваемые демонической кровью + "Human", # безумцы и культисты Бездны + "Half-Orc", # воины, жаждущие резни + "Orc", # дети Груумша - дома в Бездне + "Aasimar", # пленники + "Dragonborn", # хаотические кланы хроматических драконов + ], + "upper_planes_lg": [ + "Aasimar", # стражи небес + "Human", # паладины, жрецы, праведники + "Dwarf", # горные кланы верных + "Elf", # эладрины горы Небес + "Half-Elf", # дипломаты добра + "Dragonborn", # рыцари металлических драконов + "Gith", # githzerai - медитирующие монахи + ], + "upper_planes_ng": [ + "Aasimar", # блуждающие добрые духи + "Human", # души добрых героев + "Elf", # лесные духи + "Gnome", # радостные исследователи + "Halfling", # блаженные странники + "Half-Elf", # дети двух миров + "Firbolg", # хранители природы + "Tabaxi", # свободные охотники + ], + "upper_planes_cg": [ + "Elf", # эладрины Арбореи - их родной план + "Aasimar", # героические духи + "Human", # герои Исгарда + "Half-Elf", # дети страсти двух миров + "Satyr", # фейские гуляки + "Gnome", # хаотически добрые изобретатели + "Tiefling", # искупившиеся + "Dragonborn", # доблестные воины + ], + "planes_of_chaos": [ + "Gith", # githzerai строят монастыри прямо в Лимбо + "Genasi", # воздушные и огненные - привычны к хаосу + "Tiefling", # прирождённые навигаторы хаоса + "Human", # безумцы и искатели + "Gnome", # гениальные безумцы + "Half-Elf", # адаптивные странники + "Aasimar", # хаотически добрые посланники + ], + "plane_of_law": [ + "Gith", # githyanki - торговцы и рейдеры Механуса + "Dwarf", # законники по природе + "Gnome", # инженеры и часовщики + "Human", # административные работники плана + "Half-Elf", # нейтральные дипломаты + "Aasimar", # законные добрые посланники + "Tiefling", # законные злые агенты дьяволов + "Hobgoblin", # военная машина - как дома + ], + "feywild": [ + "Elf", # тесно связаны с Феидом + "Half-Elf", # притянуты фейской кровью + "Gnome", # лесные гномы — почти фейские существа + "Satyr", # их родной план + "Tiefling", # изгнанники, ищущие красоты + "Halfling", # любопытные путешественники + "Human", # заблудившиеся или призванные + "Firbolg", # хранители фейских рощ + "Aasimar", # посланники в фейские дворы + "Genasi", # природные генази + "Tabaxi", # очарованные странники + "Dragonborn", # редко, по древним договорам + ], + "shadowfell": [ + "Human", # беглецы, авантюристы, проклятые + "Tiefling", # теневые торговцы + "Half-Elf", # искатели тайных знаний + "Aasimar", # падшие или миссионеры + "Elf", # тёмные эльфы, шары-шпионы + "Half-Orc", # изгои + "Gith", # githzerai-отшельники и githyanki-рейдеры + "Gnome", # алхимики теней + "Kenku", # вороны теней ], } @@ -287,4 +361,4 @@ def get_npc_races(env: str) -> list[str]: Если биом не найден или список пустой — возвращает [], что в get_npc означает 'все расы'. """ - return NPC_RACES_BY_ENV.get(env.lower().strip(), []) \ No newline at end of file + return NPC_RACES_BY_ENV.get(env.lower().strip(), []) diff --git a/generate_encounter/hooks_data.py b/generate_encounter/hooks_data.py index 7f07b3a..df079ee 100644 --- a/generate_encounter/hooks_data.py +++ b/generate_encounter/hooks_data.py @@ -25,13 +25,25 @@ ENCOUNTER_TYPE_WEIGHTS: dict[str, dict[str, int]] = { "underwater": {"PvP": 30, "PvE": 35, "PvX": 30, "PvSelf": 5}, "urban": {"PvP": 40, "PvE": 15, "PvX": 25, "PvSelf": 20}, # 45 # Планы — новые строки: - "nine_hells": {"PvP": 55, "PvE": 25, "PvX": 15, "PvSelf": 5}, "astral_sea": {"PvP": 20, "PvE": 40, "PvX": 35, "PvSelf": 5}, - "feywild": {"PvP": 35, "PvE": 25, "PvX": 30, "PvSelf": 10}, # 25 "plane_of_air": {"PvP": 35, "PvE": 30, "PvX": 30, "PvSelf": 5}, "plane_of_earth": {"PvP": 40, "PvE": 30, "PvX": 25, "PvSelf": 5}, "plane_of_fire": {"PvP": 45, "PvE": 25, "PvX": 25, "PvSelf": 5}, "plane_of_water": {"PvP": 35, "PvE": 30, "PvX": 30, "PvSelf": 5}, + # Нижние планы + "lower_planes_le": {"PvP": 55, "PvE": 20, "PvX": 20, "PvSelf": 5}, # Nine Hells - строгая иерархия, много конфликтов + "lower_planes_ne": {"PvP": 45, "PvE": 25, "PvX": 25, "PvSelf": 5}, # Gray Waste - уныние, апатия, NE стихия + "lower_planes_ce": {"PvP": 60, "PvE": 15, "PvX": 20, "PvSelf": 5}, # Abyss - чистый хаос и резня + # Верхние планы + "upper_planes_lg": {"PvP": 25, "PvE": 25, "PvX": 30, "PvSelf": 20}, # Mount Celestia - порядок и добродетель + "upper_planes_ng": {"PvP": 20, "PvE": 30, "PvX": 30, "PvSelf": 20}, # Elysium/Beastlands - природа, дикость + "upper_planes_cg": {"PvP": 30, "PvE": 20, "PvX": 30, "PvSelf": 20}, # Arborea/Ysgard - героизм, страсть + # Планы закона и хаоса + "planes_of_chaos": {"PvP": 40, "PvE": 35, "PvX": 20, "PvSelf": 5}, # Limbo - всё нестабильно + "plane_of_law": {"PvP": 30, "PvE": 30, "PvX": 35, "PvSelf": 5}, # Mechanus - порядок, загадки механизмов + # Feywild и Shadowfell + "feywild": {"PvP": 35, "PvE": 25, "PvX": 30, "PvSelf": 10}, + "shadowfell": {"PvP": 45, "PvE": 20, "PvX": 30, "PvSelf": 5}, } # ────────────────────────────────────────────────────────────────────────────── diff --git a/generate_encounter/monsters_data.py b/generate_encounter/monsters_data.py index 0771ee0..c19c958 100644 --- a/generate_encounter/monsters_data.py +++ b/generate_encounter/monsters_data.py @@ -1,5 +1,7 @@ # Таблицы с монстрами и животными +from planar_monsters_data import PLANAR_DATA + DATA = { "arctic": { "1-4": @@ -1306,206 +1308,7 @@ DATA = { (99, 99, "1d4 vampires"), (100, 100, "1 tarrasque") ] - }, - - "plane_of_air": { - "1-4": [ - (1, 15, "1d4 air elementals (small)"), - (16, 25, "1d6 giant eagles"), - (26, 35, "1d4 griffons"), - (36, 45, "2d6 winged kobolds"), - (46, 55, "1d4 hippogriffs"), - (56, 65, "1d3 manticores"), - (66, 75, "1d8 + 2 aarakocra warriors"), - (76, 85, "1d4 djinn (young)"), - (86, 95, "1d2 young air elementals"), - (96, 100, "1 young air dragon (crystal or blue)"), - ], - "5-10": [ - (1, 15, "1d6 air elementals"), - (16, 25, "2d4 giant eagles"), - (26, 35, "1d4 djinn"), - (36, 45, "1d3 manticores"), - (46, 55, "1d6 + 2 griffons"), - (56, 65, "1d4 aarakocra elders"), - (66, 75, "1d3 air elementals (elder)"), - (76, 85, "1 young air dragon"), - (86, 95, "1d4 djinn nobles"), - (96, 100, "1 roc"), - ], - "11-16": [ - (1, 15, "2d4 air elementals"), - (16, 25, "1d4 djinn nobles"), - (26, 35, "1d3 rocs"), - (36, 45, "1d6 young air dragons"), - (46, 55, "1d4 air elementals (elder)"), - (56, 65, "1d6 djinn"), - (66, 75, "1 adult air dragon"), - (76, 85, "1d3 air elementals (greater)"), - (86, 95, "1d4 djinn sultans"), - (96, 100, "1d2 adult air dragons"), - ], - "17-20": [ - (1, 15, "1d6 air elementals (greater)"), - (16, 25, "1d4 adult air dragons"), - (26, 35, "1d3 rocs (ancient)"), - (36, 45, "1d6 djinn sultans"), - (46, 55, "1 air elemental lord"), - (56, 65, "2d4 air elementals (elder)"), - (66, 75, "1 ancient air dragon"), - (76, 85, "1d4 adult air dragons with 1d6 young"), - (86, 95, "1d3 air elemental lords"), - (96, 100, "1 ancient air dragon with 1d4 djinn nobles"), - ], - }, - "plane_of_earth": { - "1-4": [ - (1, 15, "1d4 earth elementals (small)"), - (16, 25, "2d6 goblins"), - (26, 35, "1d4 + 2 giant beetles"), - (36, 45, "1d8 + 1 dwarven warriors"), - (46, 55, "1d6 + 2 hobgoblins"), - (56, 65, "1d4 ogres"), - (66, 75, "1d3 xorns"), - (76, 85, "1d6 giant ants"), - (86, 95, "1d4 bulettes (young)"), - (96, 100, "1 young earth dragon (or purple wormling)"), - ], - "5-10": [ - (1, 15, "1d6 earth elementals"), - (16, 25, "1d4 xorns"), - (26, 35, "1d6 ogres"), - (36, 45, "1d4 bulettes"), - (46, 55, "2d4 dwarven veterans"), - (56, 65, "1d3 earth elementals (elder)"), - (66, 75, "1d6 giant scorpions"), - (76, 85, "1 young earth dragon"), - (86, 95, "1d4 galeb duhr"), - (96, 100, "1 roc (mountain)"), - ], - "11-16": [ - (1, 15, "2d4 earth elementals"), - (16, 25, "1d4 bulettes (ancient)"), - (26, 35, "1d6 xorns (noble)"), - (36, 45, "1d4 young earth dragons"), - (46, 55, "1d3 earth elementals (elder)"), - (56, 65, "1d6 stone golems"), - (66, 75, "1 adult earth dragon"), - (76, 85, "1d4 galeb duhr (elder)"), - (86, 95, "1d3 dao (earth genies)"), - (96, 100, "1d2 adult earth dragons"), - ], - "17-20": [ - (1, 15, "1d6 earth elementals (greater)"), - (16, 25, "1d4 adult earth dragons"), - (26, 35, "1d6 dao nobles"), - (36, 45, "1 earth elemental lord"), - (46, 55, "1d4 stone golems (ancient)"), - (56, 65, "1d3 ancient earth dragons"), - (66, 75, "1d6 xorns (royal)"), - (76, 85, "1d4 adult earth dragons with 1d4 bulettes"), - (86, 95, "1d3 earth elemental lords"), - (96, 100, "1 ancient earth dragon with 1d4 dao"), - ], - }, - "plane_of_fire": { - "1-4": [ - (1, 15, "1d4 fire elementals (small)"), - (16, 25, "1d6 + 2 fire snakes"), - (26, 35, "1d4 magma mephits"), - (36, 45, "1d4 + 1 azers"), - (46, 55, "1d6 firenewts"), - (56, 65, "1d3 salamanders (young)"), - (66, 75, "1d4 hell hounds"), - (76, 85, "1d2 fire elementals (young)"), - (86, 95, "1d4 magmins"), - (96, 100, "1 young fire dragon (or pyrohydra)"), - ], - "5-10": [ - (1, 15, "1d6 fire elementals"), - (16, 25, "1d4 salamanders"), - (26, 35, "1d6 azers (veterans)"), - (36, 45, "1d4 hell hounds (pack)"), - (46, 55, "1d3 fire elementals (elder)"), - (56, 65, "1d6 firenewts (warlocks)"), - (66, 75, "1d2 young fire dragons"), - (76, 85, "1d4 efreet"), - (86, 95, "1d6 magmins (greater)"), - (96, 100, "1 roc (fire variant)"), - ], - "11-16": [ - (1, 15, "2d4 fire elementals"), - (16, 25, "1d4 efreet nobles"), - (26, 35, "1d6 salamanders (elder)"), - (36, 45, "1d4 young fire dragons"), - (46, 55, "1d3 fire elementals (greater)"), - (56, 65, "1d6 azers (captains)"), - (66, 75, "1 adult fire dragon"), - (76, 85, "1d4 efreet sultans"), - (86, 95, "1d3 fire elementals (elder)"), - (96, 100, "1d2 adult fire dragons"), - ], - "17-20": [ - (1, 15, "1d6 fire elementals (greater)"), - (16, 25, "1d4 adult fire dragons"), - (26, 35, "1d6 efreet sultans"), - (36, 45, "1 fire elemental lord"), - (46, 55, "1d4 salamanders (ancient)"), - (56, 65, "1d3 ancient fire dragons"), - (66, 75, "1d6 azers (commanders)"), - (76, 85, "1d4 adult fire dragons with 1d6 efreet"), - (86, 95, "1d3 fire elemental lords"), - (96, 100, "1 ancient fire dragon with 1d4 efreet nobles"), - ], - }, - "plane_of_water": { - "1-4": [ - (1, 15, "1d4 water elementals (small)"), - (16, 25, "2d6 sahuagin"), - (26, 35, "1d4 + 2 giant octopuses"), - (36, 45, "1d6 merfolk (guards)"), - (46, 55, "1d4 + 1 giant crabs"), - (56, 65, "1d3 merrow"), - (66, 75, "1d4 water weirds"), - (76, 85, "1d6 giant sharks"), - (86, 95, "1d2 young water elementals"), - (96, 100, "1 young water dragon (or sea serpent)"), - ], - "5-10": [ - (1, 15, "1d6 water elementals"), - (16, 25, "1d4 merrow"), - (26, 35, "1d6 sahuagin (priestesses)"), - (36, 45, "1d3 water elementals (elder)"), - (46, 55, "1d4 giant octopuses (elder)"), - (56, 65, "1d2 young water dragons"), - (66, 75, "1d4 marids"), - (76, 85, "1d6 giant sharks (hunter)"), - (86, 95, "1d4 water weirds (greater)"), - (96, 100, "1 roc (sea variant)"), - ], - "11-16": [ - (1, 15, "2d4 water elementals"), - (16, 25, "1d4 marid nobles"), - (26, 35, "1d6 merrow (elders)"), - (36, 45, "1d4 young water dragons"), - (46, 55, "1d3 water elementals (greater)"), - (56, 65, "1d6 sahuagin (barons)"), - (66, 75, "1 adult water dragon"), - (76, 85, "1d4 marid sultans"), - (86, 95, "1d3 water elementals (elder)"), - (96, 100, "1d2 adult water dragons"), - ], - "17-20": [ - (1, 15, "1d6 water elementals (greater)"), - (16, 25, "1d4 adult water dragons"), - (26, 35, "1d6 marid sultans"), - (36, 45, "1 water elemental lord"), - (46, 55, "1d4 giant octopuses (ancient)"), - (56, 65, "1d3 ancient water dragons"), - (66, 75, "1d6 sahuagin (high priestesses)"), - (76, 85, "1d4 adult water dragons with 1d6 marids"), - (86, 95, "1d3 water elemental lords"), - (96, 100, "1 ancient water dragon with 1d4 marid nobles"), - ], } } + +DATA.update(PLANAR_DATA) diff --git a/generate_encounter/planar_monsters_data.py b/generate_encounter/planar_monsters_data.py new file mode 100644 index 0000000..b3efbbb --- /dev/null +++ b/generate_encounter/planar_monsters_data.py @@ -0,0 +1,2298 @@ +# Таблицы с монстрами и животными для стихийных планов +# Верифицировано по elementals.txt и elemental_planes_description.txt +# CR проставлен по SRD/статблокам, неизвестные помечены # CR ? + +PLANAR_DATA = { + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANE OF AIR + # Источники: MM, fr wiki, AIR CREATURES (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "plane_of_air": { + "1-4": [ + # --- Оригинальные строки --- + (1, 8, "1d4 air elementals (small)") # CR 5 [orig] + , + (9, 16, "1d6 + 2 aarakocra warriors") # CR 1/4 [orig] + , + (17, 24, "1d4 griffons") # CR 2 [orig] + , + (25, 32, "1d6 giant eagles") # CR 1 [orig] + , + (33, 40, "1d4 hippogriffs") # CR 1 [orig] + , + (41, 48, "1d4 dust mephits") # CR 1/2 [orig] + , + (49, 56, "1d4 ice mephits") # CR 1/2 [orig] + , + (57, 64, "1d4 arrowhawks (young)") # CR 5 [orig] + , + (65, 72, "1d4 pegasi") # CR 2 [orig] + , + (73, 78, "1d2 invisible stalkers") # CR 6 [orig] + , + # --- Из AIR CREATURES lvl 1-4 (2014) --- + (79, 83, "1d4 aarakocra with 1d2 pegasi or 1d3 perytons" + ) # CR 1/4 [2014] + , + (84, 88, "2d4 smoke mephits") # CR 1/4 [2014] + , + (89, 93, "1d4+1 dust mephits or 1d4+1 ice mephits" + ) # CR 1/2 [2014] + , + (94, 97, "1d3 griffons or 2d4 flumphs") # CR 2 [2014] + , + (98, 100, "1d4 smoke mephits and 1d4 giant vultures" + ) # CR 1/4 [2014] + , + ], + "5-10": [ + # --- Оригинальные строки --- + (1, 10, "1d6 air elementals") # CR 5 [orig] + , + (11, 18, "2d4 aarakocra elders") # CR 1/2 [orig] + , + (19, 26, "1d4 djinn") # CR 11 [orig] + , + (27, 34, "1d4 manticores") # CR 3 [orig] + , + (35, 42, "1d4 griffons") # CR 2 [orig] + , + (43, 50, "1d4 invisible stalkers") # CR 6 [orig] + , + (51, 58, "1d2 arrowhawks (adult)") # CR 8 [orig] + , + (59, 66, "1 air elemental myrmidon") # CR 7 [orig] + , + (67, 74, "1d4 belkers") # CR 7 [orig] + , + (75, 78, "1 roc") # CR 11 [orig] + , + # --- Из AIR CREATURES lvl 5-10 (2014) --- + (79, 83, "1 djinni") # CR 11 [2014] + , + (84, 87, "2d6 pegasi or 1 frost salamander") # CR 2 [2014] + , + (88, 90, + "1d6 smoke mephits with 1d4 dust mephits and 1d4 ice mephits" + ) # CR 1/4 [2014] + , + (91, 93, "1d3 invisible stalkers") # CR 6 [2014] + , + (94, 96, "1d4 air elementals or 1d2 air elemental myrmidons" + ) # CR 5 [2014] + , + (97, 98, "1d2 cloud giants") # CR 9 [2014] + , + (99, 100, "1d3 wyverns or 2d6 griffons") # CR 6 [2014] + , + ], + "11-16": [ + # --- Оригинальные строки --- + (1, 10, "2d4 air elementals") # CR 5 [orig] + , + (11, 18, "1d4 djinn nobles") # CR 11 [orig] + , + (19, 26, "1d3 rocs") # CR 11 [orig] + , + (27, 34, "1d4 air elemental myrmidons") # CR 7 [orig] + , + (35, 42, "1d4 arrowhawks (elder)") # CR 11 [orig] + , + (43, 50, "1d4 cloud giants") # CR 9 [orig] + , + (51, 58, "1d4 devas") # CR 10 [orig] + , + (59, 66, "1d2 invisible stalkers (greater)") # CR 6 [orig] + , + (67, 74, "1d4 sphinxes (gynosphinx)") # CR 11 [orig] + , + (75, 78, "1d2 aerial servants") # CR 9 [orig] + , + # --- Из AIR CREATURES lvl 11+ (2014) --- + (79, 83, "1d3 invisible stalkers and 1d3 air elementals" + ) # CR 6 [2014] + , + (84, 87, + "1 djinni and 1d3 air elementals or 1d3+1 frost salamanders" + ) # CR 11 [2014] + , + (88, 90, "1d2 storm giants") # CR 13 [2014] + , + (91, 93, "1d3 djinni or 1d4+2 air elemental myrmidons" + ) # CR 11 [2014] + , + (94, 96, "2d4 air elementals") # CR 5 [2014] + , + (97, 98, "1d6+2 invisible stalkers") # CR 6 [2014] + , + (99, 100, "1d3+1 cloud giants") # CR 9 [2014] + , + ], + "17-20": [ + # --- Оригинальные строки --- + (1, 12, "1d6 air elementals (greater)") # CR 7 [orig] + , + (13, 24, "1d4 djinn sultans") # CR 13 [orig] + , + (25, 34, "1d3 rocs (ancient)") # CR 11 [orig] + , + (35, 46, "1d6 devas") # CR 10 [orig] + , + (47, 56, "1 air elemental lord") # CR 12 [orig] + , + (57, 66, "1d4 cloud giants (noble)") # CR 11 [orig] + , + (67, 74, "1d4 androsphinxes") # CR 17 [orig] + , + (75, 82, "1d3 elder tempests") # CR 23 [orig] + , + (83, 90, "1d4 aerial servants") # CR 9 [orig] + , + (91, 95, "1d3 devas (planetar)") # CR 16 [orig] + , + # --- Из AIR CREATURES lvl 11+ (2014), самые мощные варианты --- + (96, 97, "1d3 rocs or 1 archdruid") # CR 11 [2014] + , + (98, 99, "1 noble djinni or 1 elder tempest") # CR 11 [2014] + , + (100, 100, "1d4+2 air elemental myrmidons") # CR 7 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANE OF EARTH + # Источники: оригинальный planar_monsters_data.py + EARTH CREATURES (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "plane_of_earth": { + "1-4": [ + # --- Оригинальные строки --- + (1, 8, "1d4 earth elementals (small)") # CR 5 [orig] + , + (9, 16, "1d4 galeb duhr") # CR 6 [orig] + , + (17, 24, "1d4 gargoyles") # CR 2 [orig] + , + (25, 32, "1d8 + 2 dwarven warriors") # CR 1/2 [orig] + , + (33, 40, "1d4 earth mephits") # CR 1/2 [orig] + , + (41, 48, "1d4 xorns") # CR 5 [orig] + , + (49, 56, "1d3 thoqqua") # CR 2 [orig] + , + (57, 64, "1d4 bulettes (young)") # CR 5 [orig] + , + (65, 72, "1d4 pech") # CR 2 [orig] + , + (73, 78, "1d4 khargra") # CR 2 [orig] + , + # --- Из EARTH CREATURES lvl 1-4 (2014) --- + (79, 82, "1 earth elemental or 1d3 adult kruthiks") # CR 5 [2014] + , + (83, 86, "1d2 basilisks or 1d2 trappers") # CR 3 [2014] + , + (87, 89, "1d4+1 deep gnomes or 1d2 flail snails") # CR 1/2 [2014] + , + (90, 92, "1d3 gargoyles or 2d6 young kruthiks") # CR 2 [2014] + , + (93, 95, "2d4 mud mephits") # CR 1/4 [2014] + , + (96, 97, "1d4+1 cockatrices") # CR 1/2 [2014] + , + (98, 99, "1d4+1 dust mephits or 1d4+1 magma mephits" + ) # CR 1/4 [2014] + , + (100, 100, "1d3 ankhegs or 1d4+1 rust monsters") # CR 2 [2014] + , + ], + "5-10": [ + # --- Оригинальные строки --- + (1, 10, "1d6 earth elementals") # CR 5 [orig] + , + (11, 18, "1d4 xorns") # CR 5 [orig] + , + (19, 26, "1d6 gargoyles") # CR 2 [orig] + , + (27, 34, "1d4 bulettes") # CR 5 [orig] + , + (35, 42, "2d4 dwarven veterans") # CR 1 [orig] + , + (43, 50, "1d3 earth elementals (elder)") # CR 6 [orig] + , + (51, 58, "1d6 salt mephits") # CR 1/4 [orig] + , + (59, 66, "1d4 galeb duhr") # CR 6 [orig] + , + (67, 74, "1d4 stone giants") # CR 7 [orig] + , + (75, 78, "1d4 wraiths") # CR 5 [orig] + , + # --- Из EARTH CREATURES lvl 5-10 (2014) --- + (79, 82, "1 dao or 1 kruthik hive lord with 2d4 adult kruthiks" + ) # CR 11 [2014] + , + (83, 85, "1 stone golem or 2d4 flail snails") # CR 10 [2014] + , + (86, 88, + "1d6 mud mephits with 1d4 dust mephits and 1d4 magma mephits" + ) # CR 1/4 [2014] + , + (89, 91, + "1d3 galeb duhr or 1 stone giant herding 1d4+1 flail snails" + ) # CR 6 [2014] + , + (92, 93, "1d4 earth elementals or 1d2 earth elemental myrmidons" + ) # CR 5 [2014] + , + (94, 95, "1d6+4 gargoyles or 1d2 korreds") # CR 2 [2014] + , + (96, 97, "1d4 xorns") # CR 5 [2014] + , + (98, 99, "1d3 stone giants or 1 stone giant dreamwalker" + ) # CR 7 [2014] + , + (100, 100, "1d2 basilisks and 2d4 gargoyles") # CR 3 [2014] + , + ], + "11-16": [ + # --- Оригинальные строки --- + (1, 10, "2d4 earth elementals") # CR 5 [orig] + , + (11, 18, "1d4 bulettes (ancient)") # CR 7 [orig] + , + (19, 26, "1d6 xorns (noble)") # CR 6 [orig] + , + (27, 34, "1d4 dao") # CR 11 [orig] + , + (35, 42, "1d3 earth elementals (elder)") # CR 6 [orig] + , + (43, 50, "1d6 stone golems") # CR 10 [orig] + , + (51, 58, "1d4 stone giants (noble)") # CR 9 [orig] + , + (59, 66, "1d4 galeb duhr (elder)") # CR 8 [orig] + , + (67, 74, "1d4 umber hulks") # CR 5 [orig] + , + (75, 78, "1d2 dao (nobles)") # CR 13 [orig] + , + # --- Из EARTH CREATURES lvl 11+ (2014) --- + (79, 83, "1d3 galeb duhr and 1d3 earth elementals or 1 zaratan" + ) # CR 6 [2014] + , + (84, 87, "1d4+2 stone giants") # CR 7 [2014] + , + (88, 90, "1d2 purple worms or 1d4+1 stone golems") # CR 15 [2014] + , + (91, 93, "1d3 dao or 1d4+2 earth elemental myrmidons" + ) # CR 11 [2014] + , + (94, 95, "2d4 earth elementals") # CR 5 [2014] + , + (96, 97, "1d4+2 galeb duhr or 1d3 clay golems") # CR 6 [2014] + , + (98, 99, "2d4 xorns") # CR 5 [2014] + , + (100, 100, "1d2 iron golems or 1 noble dao") # CR 16 [2014] + , + ], + "17-20": [ + # --- Оригинальные строки --- + (1, 12, "1d6 earth elementals (greater)") # CR 7 [orig] + , + (13, 22, "1d4 dao nobles") # CR 13 [orig] + , + (23, 32, "1d6 stone giants (royal)") # CR 10 [orig] + , + (33, 42, "1 earth elemental lord") # CR 12 [orig] + , + (43, 52, "1d4 stone golems (ancient)") # CR 12 [orig] + , + (53, 62, "1d3 earth elemental lords") # CR 14 [orig] + , + (63, 72, "1d6 xorns (royal)") # CR 8 [orig] + , + (73, 80, "1d4 dao nobles with 1d4 xorns") # CR 13 [orig] + , + (81, 88, "1d4 zaratan") # CR 22 [orig] + , + (89, 95, "1d2 dao sultans with 1d4 stone golems") # CR 15 [orig] + , + # --- Из EARTH CREATURES lvl 11+ (2014), самые мощные варианты --- + (96, 98, "1 dao and 1d3 earth elementals or 1 archdruid" + ) # CR 11 [2014] + , + (99, 100, "1d2 iron golems or 1 noble dao") # CR 16 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANE OF FIRE + # Источники: оригинальный planar_monsters_data.py + FIRE CREATURES (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "plane_of_fire": { + "1-4": [ + # --- Оригинальные строки --- + (1, 8, "1d4 fire elementals (small)") # CR 5 [orig] + , + (9, 16, "1d6 + 2 fire snakes") # CR 1 [orig] + , + (17, 24, "1d4 magma mephits") # CR 1/4 [orig] + , + (25, 32, "1d4 + 1 azers") # CR 2 [orig] + , + (33, 40, "1d6 firenewts") # CR 1/2 [orig] + , + (41, 48, "1d3 salamanders (young)") # CR 5 [orig] + , + (49, 56, "1d4 hell hounds") # CR 3 [orig] + , + (57, 64, "1d2 fire elementals (young)") # CR 5 [orig] + , + (65, 72, "1d4 magmins") # CR 1/2 [orig] + , + (73, 78, "1d4 fire bats") # CR ? [orig] + , + # --- Из FIRE CREATURES lvl 1-4 (2014) --- + (79, 82, "1 fire elemental") # CR 5 [2014] + , + (83, 86, + "1 flameskull or 1d3 firenewt warriors with a firenewt warlock of Imix" + ) # CR 4 [2014] + , + (87, 89, "1d4+1 magma mephits") # CR 1/4 [2014] + , + (90, 92, "1d4+1 magmins or 1d4 giant striders") # CR 1/2 [2014] + , + (93, 95, "2d4 smoke mephits or 2d4 steam mephits") # CR 1/4 [2014] + , + (96, 97, "1d4 fire snakes or 1 azer with 1d3 magmins" + ) # CR 1 [2014] + , + (98, 99, "1d3 azers or 1d3 firenewt warriors on giant striders" + ) # CR 2 [2014] + , + (100, 100, "1d2 hell hounds") # CR 3 [2014] + , + ], + "5-10": [ + # --- Оригинальные строки --- + (1, 10, "1d6 fire elementals") # CR 5 [orig] + , + (11, 18, "1d4 salamanders") # CR 5 [orig] + , + (19, 26, "1d6 azers (veterans)") # CR 3 [orig] + , + (27, 34, "1d4 hell hounds (pack)") # CR 3 [orig] + , + (35, 42, "1d3 fire elementals (elder)") # CR 6 [orig] + , + (43, 50, "1d6 firenewts (warlocks)") # CR 1 [orig] + , + (51, 58, "1d4 rasts") # CR 4 [orig] + , + (59, 66, "1d4 efreet") # CR 11 [orig] + , + (67, 74, "1d4 steam mephits") # CR 1/4 [orig] + , + (75, 78, "1d4 fire giants") # CR 9 [orig] + , + # --- Из FIRE CREATURES lvl 5-10 (2014) --- + (79, 82, "1 efreet") # CR 11 [2014] + , + (83, 85, "1 fire elemental with 2d6 magmins") # CR 5 [2014] + , + (86, 88, + "1d6 smoke mephits with 1d6 steam mephits and 1d4 magma mephits" + ) # CR 1/4 [2014] + , + (89, 91, "1d2 salamanders and 1d6+1 fire snakes") # CR 5 [2014] + , + (92, 93, "1d4 fire elementals or 1d2 fire elemental myrmidons" + ) # CR 5 [2014] + , + (94, 95, "2d4 azers") # CR 2 [2014] + , + (96, 97, + "1d4 salamanders or 2d4 firenewt warriors and 1 firenewt warlock of Imix on giant striders" + ) # CR 5 [2014] + , + (98, 99, "1d2 fire giants") # CR 9 [2014] + , + (100, 100, "1 salamander with 2d4 hell hounds") # CR 5 [2014] + , + ], + "11-16": [ + # --- Оригинальные строки --- + (1, 10, "2d4 fire elementals") # CR 5 [orig] + , + (11, 18, "1d4 efreet nobles") # CR 13 [orig] + , + (19, 26, "1d6 salamanders (elder)") # CR 7 [orig] + , + (27, 34, "1d4 young brass dragons") # CR 6 [orig] + , + (35, 42, "1d3 fire elementals (greater)") # CR 7 [orig] + , + (43, 50, "1d6 azers (captains)") # CR 5 [orig] + , + (51, 58, "1d4 efreet") # CR 11 [orig] + , + (59, 66, "1d4 fire giants (noble)") # CR 10 [orig] + , + (67, 74, "1d3 salamanders (noble)") # CR 8 [orig] + , + (75, 78, "1d2 adult brass dragons") # CR 13 [orig] + , + # --- Из FIRE CREATURES lvl 11+ (2014) --- + (79, 83, "1d4 salamanders and 1d4 fire elementals or 1 phoenix" + ) # CR 5 [2014] + , + (84, 87, "1 noble efreet or 1 fire giant dreadnought" + ) # CR 13 [2014] + , + (88, 90, "1 fire giant with 2d6 azers") # CR 9 [2014] + , + (91, 93, "1d3 efreet or 1d4+2 fire elemental myrmidons" + ) # CR 11 [2014] + , + (94, 95, "2d4 fire elementals") # CR 5 [2014] + , + (96, 97, "1d4+1 fire giants") # CR 9 [2014] + , + (98, 99, "2d4 salamanders") # CR 5 [2014] + , + (100, 100, "1 efreet and 1d3 fire elementals or 1 archdruid" + ) # CR 11 [2014] + , + ], + "17-20": [ + # --- Оригинальные строки --- + (1, 12, "1d6 fire elementals (greater)") # CR 7 [orig] + , + (13, 22, "1d4 efreet sultans") # CR 15 [orig] + , + (23, 32, "1d6 fire giants (royal)") # CR 11 [orig] + , + (33, 42, "1 fire elemental lord") # CR 12 [orig] + , + (43, 52, "1d3 adult brass dragons") # CR 13 [orig] + , + (53, 62, "1d4 ancient brass dragons") # CR 20 [orig] + , + (63, 70, "1d4 pyrohydras") # CR ? [orig] + , + (71, 80, "1d4 adult gold dragons") # CR 17 [orig] + , + (81, 88, "1d3 fire elemental lords") # CR 14 [orig] + , + (89, 95, "1 ancient gold dragon with 1d4 efreet nobles" + ) # CR 24 [orig] + , + # --- Из FIRE CREATURES lvl 11+ (2014), топовые варианты --- + (96, 97, "1 noble efreet or 1 fire giant dreadnought" + ) # CR 13 [2014] + , + (98, 99, "1 adult red dragon or 1 pit fiend") # CR 17 [2014] + , + (100, 100, "1 phoenix") # CR ? [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANE OF WATER + # Источники: оригинальный planar_monsters_data.py + WATER CREATURES (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "plane_of_water": { + "1-4": [ + # --- Оригинальные строки --- + (1, 8, "1d4 water elementals (small)") # CR 5 [orig] + , + (9, 16, "2d6 sahuagin") # CR 1/2 [orig] + , + (17, 24, "1d4 + 2 giant octopuses") # CR 1 [orig] + , + (25, 32, "1d6 merfolk (guards)") # CR 1/8 [orig] + , + (33, 40, "1d4 tritons") # CR 1/2 [orig] + , + (41, 48, "1d3 merrow") # CR 2 [orig] + , + (49, 56, "1d4 water weirds") # CR 3 [orig] + , + (57, 64, "1d4 ice mephits") # CR 1/2 [orig] + , + (65, 72, "1d2 water elementals (young)") # CR 5 [orig] + , + (73, 78, "1d4 sea hags") # CR 2 [orig] + , + # --- Из WATER CREATURES lvl 1-4 (2014) --- + (79, 82, "1 water elemental or 1 kraken priest") # CR 5 [2014] + , + (83, 86, "2d6 merfolk") # CR 1/8 [2014] + , + (87, 89, "1d4+1 ice mephits or 1d2 deep scions") # CR 1/2 [2014] + , + (90, 92, "1d2 water weirds") # CR 3 [2014] + , + (93, 95, "2d4 steam mephits or 2d4 mud mephits") # CR 1/4 [2014] + , + (96, 97, "1d3 merrow") # CR 2 [2014] + , + (98, 99, "1d3 hunter sharks") # CR 2 [2014] + , + (100, 100, "1 sea hag or 1 giant shark") # CR 2 [2014] + , + ], + "5-10": [ + # --- Оригинальные строки --- + (1, 10, "1d6 water elementals") # CR 5 [orig] + , + (11, 18, "1d4 merrow") # CR 2 [orig] + , + (19, 26, "1d6 sahuagin (priestesses)") # CR 3 [orig] + , + (27, 34, "1d3 water elementals (elder)") # CR 6 [orig] + , + (35, 42, "1d4 giant octopuses (elder)") # CR 2 [orig] + , + (43, 50, "1d4 nereids") # CR ? [orig] + , + (51, 58, "1d4 marids") # CR 11 [orig] + , + (59, 66, "1d6 giant sharks") # CR 5 [orig] + , + (67, 74, "1d4 will-o'-wisps") # CR 2 [orig] + , + (75, 78, "1d4 water weirds (greater)") # CR 4 [orig] + , + # --- Из WATER CREATURES lvl 5-10 (2014) --- + (79, 82, "1 marid or 1 morkoth") # CR 11 [2014] + , + (83, 85, "1 water elemental with 1d4 water weirds") # CR 5 [2014] + , + (86, 88, + "1d6 steam mephits with 1d6 mud mephits and 1d4 ice mephits" + ) # CR 1/4 [2014] + , + (89, 91, "1d2 hydras") # CR 8 [2014] + , + (92, 93, "1d4 water elementals or 1d2 water elemental myrmidons" + ) # CR 5 [2014] + , + (94, 95, "2d4 merrow") # CR 2 [2014] + , + (96, 97, "1d4 giant sharks or 1 frost salamander") # CR 5 [2014] + , + (98, 99, "coven of 3 sea hags or 1d4 giant crocodiles" + ) # CR 2 [2014] + , + (100, 100, "1 young bronze dragon or 1 young black dragon" + ) # CR 8 [2014] + , + ], + "11-16": [ + # --- Оригинальные строки --- + (1, 10, "2d4 water elementals") # CR 5 [orig] + , + (11, 18, "1d4 marid nobles") # CR 13 [orig] + , + (19, 26, "1d6 merrow (elders)") # CR 4 [orig] + , + (27, 34, "1d4 young bronze dragons") # CR 8 [orig] + , + (35, 42, "1d3 water elementals (greater)") # CR 7 [orig] + , + (43, 50, "1d6 sahuagin (barons)") # CR 5 [orig] + , + (51, 58, "1d4 aboleths") # CR 10 [orig] + , + (59, 66, "1d4 marid sultans") # CR 15 [orig] + , + (67, 74, "1d4 giant nautiluses") # CR ? [orig] + , + (75, 78, "1d2 adult bronze dragons") # CR 15 [orig] + , + # --- Из WATER CREATURES lvl 11+ (2014) --- + (79, 83, "1 kraken or 1 adult blue dragon") # CR 23 [2014] + , + (84, 87, + "1 marid and 1d3 water elementals or 1d3+1 frost salamanders" + ) # CR 11 [2014] + , + (88, 90, "1d4 giant crocodiles and 1d4 giant sharks" + ) # CR 5 [2014] + , + (91, 93, "1d3 marids") # CR 11 [2014] + , + (94, 95, "2d4 water elementals or 1 morkoth") # CR 5 [2014] + , + (96, 97, "1d4+1 hydras or 1d4+2 water elemental myrmidons" + ) # CR 8 [2014] + , + (98, 99, "1 dragon turtle") # CR 17 [2014] + , + (100, 100, "1 noble marid or 1 leviathan") # CR 15 [2014] + , + ], + "17-20": [ + # --- Оригинальные строки --- + (1, 12, "1d6 water elementals (greater)") # CR 7 [orig] + , + (13, 22, "1d4 marid sultans") # CR 15 [orig] + , + (23, 32, "1d6 aboleths") # CR 10 [orig] + , + (33, 42, "1 water elemental lord") # CR 12 [orig] + , + (43, 52, "1d4 adult bronze dragons") # CR 15 [orig] + , + (53, 62, "1d3 ancient bronze dragons") # CR 22 [orig] + , + (63, 70, "1 kraken") # CR 23 [orig] + , + (71, 80, "1d4 adult bronze dragons with 1d4 marids" + ) # CR 15 [orig] + , + (81, 88, "1d3 water elemental lords") # CR 14 [orig] + , + (89, 95, "1 ancient bronze dragon with 1d4 marid nobles" + ) # CR 22 [orig] + , + # --- Из WATER CREATURES lvl 11+ (2014), топовые варианты --- + (96, 97, "1 dragon turtle") # CR 17 [2014] + , + (98, 99, "1d2 storm giants or 1 archdruid") # CR 13 [2014] + , + (100, 100, "1 noble marid or 1 leviathan") # CR 15 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # FEYWILD + # Источники: FEYWILD ENCOUNTERS + FEYWILD BEASTS + FEYWILD PLANTS + # + SYLVAN CREATURES + MALEVOLENT CREATURES (2014) + # Структура внутри каждого уровня: + # 1. Encounters / Sylvan / Malevolent (существа) + # # --- FEYWILD BEASTS --- + # 2. Beasts (животные) + # # --- FEYWILD PLANTS --- + # 3. Plants (растения) + # ═══════════════════════════════════════════════════════════════════════════ + "feywild": { + "1-4": [ + # ── FEYWILD ENCOUNTERS, SYLVAN CREATURES, MALEVOLENT CREATURES ─── + (1, 3, "1 night hag or roll on planar travelers lvl 1-4") # CR 5 [2014] + , + (4, 6, "1 ettercap and 1d2 giant spiders or 1d4 harpies") # CR 2 [2014] + , + (7, 9, "1d3 nothics or roll on malevolent creatures lvl 1-4") # CR 2 [2014] + , + (10, 12, "1d2 dryads and 1d2 satyrs or 1 faerie dragon") # CR 1 [2014] + , + (13, 15, "2d4 blink dogs or 1d4+1 elven scouts") # CR 1/4 [2014] + , + (16, 18, "2d4 sprites or roll on sylvan creatures lvl 1-4") # CR 1/4 [2014] + , + (19, 21, "1d3 awakened trees or roll on feywild plants") # CR 2 [2014] + , + (22, 24, "1d4 dryads or roll on sylvan creatures lvl 1-4") # CR 1 [2014] + , + (25, 27, "1d4 goblins led by 1 goblin boss or 1d3 pegasi") # CR 1/4 [2014] + , + (28, 30, "1 pseudodragon or roll on sylvan creatures lvl 1-4") # CR 1/4 [2014] + , + (31, 33, "1d3 ogres or roll on malevolent creatures lvl 1-4") # CR 2 [2014] + , + (34, 36, "1 green hag or roll on sylvan creatures lvl 1-4") # CR 3 [2014] + , + (37, 39, "1 unicorn or 1 shambling mound") # CR 5 [2014] + , + # Sylvan Creatures (1-4) + (40, 42, "1 faerie dragon or 1 wood woad") # CR 2 [2014] + , + (43, 45, "1d2 dryads and 1d2 satyrs or 1d3 pegasi") # CR 1 [2014] + , + (46, 48, "2d4 blink dogs") # CR 1/4 [2014] + , + (49, 51, "2d4 pixies") # CR 1/4 [2014] + , + (52, 54, "2d4 satyrs or 1 pseudodragon") # CR 1/2 [2014] + , + (55, 57, "1d3 centaurs") # CR 2 [2014] + , + # Malevolent Creatures (1-4) + (58, 60, "1 night hag") # CR 5 [2014] + , + (61, 63, "1d4 harpies or 1 darkling elder and 1d2 darklings") # CR 1 [2014] + , + (64, 66, "1d3 nothics or 1d2 redcaps") # CR 2 [2014] + , + (67, 69, "2d4 goblins or 1 yeth hound") # CR 1/4 [2014] + , + (70, 72, "1d3 ogres or 1 nilbog with 1d4 goblins") # CR 2 [2014] + , + (73, 75, "1d4 bugbears or 1d3 meenlocks") # CR 1 [2014] + , + (76, 78, "1 minotaur or 2d6 boggles") # CR 3 [2014] + , + (79, 80, "1 green hag or 1 sea hag") # CR 3 [2014] + , + + # ── FEYWILD BEASTS ─────────────────────────────────────────────── + (81, 82, "1d2 basilisks") # CR 3 [2014] + , + (83, 84, "1d4+1 death dogs or 1d4+1 dire wolves") # CR 1 [2014] + , + (85, 86, "1d2 owlbears or 1d2 perytons") # CR 3 [2014] + , + (87, 88, "2d4 giant owls") # CR 1/4 [2014] + , + (89, 90, "1d2 displacer beasts or 1d4 hippogriffs") # CR 3 [2014] + , + (91, 92, "1d4 giant eagles or 1 manticore") # CR 1 [2014] + , + (93, 94, "1d4 giant vultures or 1d4+1 cockatrices") # CR 1/4 [2014] + , + (95, 96, "1d2 winter wolves or 1 catoblepas") # CR 3 [2014] + , + (97, 97, "1 giant stag and 2d6 deer or 1d3 griffons") # CR 2 [2014] + , + + # ── FEYWILD PLANTS ─────────────────────────────────────────────── + (98, 98, "1 shambling mound") # CR 5 [2014] + , + (99, 99, "1d4+1 myconid adults") # CR 1/2 [2014] + , + (100, 100, "2d6+3 twig blights or 1d2 vine blights and 2d4 twig blights") # CR 1/8 [2014] + , + ], + "5-10": [ + # ── FEYWILD ENCOUNTERS, SYLVAN CREATURES, MALEVOLENT CREATURES ─── + (1, 4, "1 guardian naga or 1 behir") # CR 10 [2014] + , + (5, 8, "coven of 2 green hags and 1 night hag") # CR 3 [2014] + , + (9, 12, "1 medusa with 1d4 vine blights or 1 froghemoth") # CR 6 [2014] + , + (13, 15, "1d4 cambions or roll on planar travelers lvl 5-10") # CR 5 [2014] + , + (16, 19, "1d2 spirit nagas or 2d4 griffons") # CR 8 [2014] + , + (20, 23, "2d4 displacer beasts or 1d2 giant apes") # CR 3 [2014] + , + (24, 27, "1d4 shambling mounds or 1d3 catoblepases") # CR 5 [2014] + , + (28, 31, "2d6 twig blights with 2d4 needle blights and 1d6+1 vine blights") # CR 1/8 [2014] + , + (32, 35, "2d6 centaurs or roll on sylvan creatures lvl 5-10") # CR 2 [2014] + , + (36, 38, "2d4 bugbears led by 1 bugbear chief") # CR 1 [2014] + , + (39, 41, "1d6+1 ettercaps with 2d4 giant spiders") # CR 2 [2014] + , + (42, 44, "1d2 fomorians or roll on malevolent creatures lvl 5-10") # CR 8 [2014] + , + (45, 47, "2d4 satyrs with 1d6 dryads and 1d6 sprites or roll on sylvan creatures lvl 5-10") # CR 1/2 [2014] + , + (48, 50, "1d3 ettins or roll on malevolent creatures lvl 5-10") # CR 4 [2014] + , + (51, 53, "2d4+2 nothics or 1 elven mage") # CR 2 [2014] + , + (54, 56, "1 cyclops with 1d4 rhinos or roll on malevolent creatures lvl 5-10") # CR 6 [2014] + , + (57, 59, "1 treant or 1d2 neogi elders with 1d3 neogi") # CR 9 [2014] + , + (60, 62, "1d2 oni or roll on malevolent creatures lvl 5-10") # CR 7 [2014] + , + (63, 65, "1 gynosphinx") # CR 11 [2014] + , + # Sylvan Creatures (5-10) + (66, 68, "1 guardian naga or 1d4+1 elven knights mounted on pegasi") # CR 10 [2014] + , + (69, 70, "2d4 elven knights or 1d2 korreds") # CR 3 [2014] + , + (71, 72, "1 treant or 1 spring eladrin") # CR 9 [2014] + , + (73, 74, "2d6 centaurs or 1 summer eladrin") # CR 2 [2014] + , + (75, 76, "1 unicorn with 1d2 druids and 2d4 blink dogs or 1 autumn eladrin") # CR 5 [2014] + , + # Malevolent Creatures (5-10) + (77, 78, "1 fire giant or 1 cloud giant smiling one") # CR 9 [2014] + , + (79, 80, "2d4 bugbears led by 1 bugbear chief or 1d3 frost giants") # CR 1 [2014] + , + (81, 82, "1d4+1 ettins or 2d4 redcaps") # CR 4 [2014] + , + (83, 84, "1d2 fomorians or 1 annis hag with 1d4+1 yeth hounds") # CR 8 [2014] + , + (85, 86, "1d2 oni or 1 bheur hag") # CR 7 [2014] + , + (87, 88, "2d6 ogres or 1 cyclops with 1d3 owlbears") # CR 2 [2014] + , + (89, 90, "coven of 3 hags (mixed green, sea and night hags) or 1d4 trolls") # CR 3 [2014] + , + + # ── FEYWILD BEASTS (5-10 — используем те же таблицы, они не разделены по уровням) ── + (91, 92, "2d4 displacer beasts or 1d2 giant apes") # CR 3 [2014] + , + (93, 94, "1d4 plesiosauruses or 1d3 manticores") # CR 3 [2014] + , + (95, 96, "1d4+1 griffons or 1d2 wyverns") # CR 2 [2014] + , + + # ── FEYWILD PLANTS (5-10) ──────────────────────────────────────── + (97, 98, "1d4 shambling mounds or 2d4+2 needle blights") # CR 5 [2014] + , + (99, 100, "1 treant or 1d4+1 awakened trees") # CR 9 [2014] + , + ], + "11+": [ + # ── FEYWILD ENCOUNTERS (11+) ────────────────────────────────────── + (1, 5, "1 adult gold dragon") # CR 17 [2014] + , + (6, 10, "1d4+1 fire giants") # CR 9 [2014] + , + (11, 15, "1d3 gynosphinx or 1d3 rocs") # CR 11 [2014] + , + (16, 20, "1d4+2 frost giants or 1 storm giant quintessent") # CR 8 [2014] + , + (21, 25, "coven of 3 night hags with 2d6 vine blights") # CR 5 [2014] + , + (26, 30, "1 archmage or roll on planar travelers lvl 11+") # CR 12 [2014] + , + (31, 35, "1d3+1 oni with 2d4 ogres") # CR 7 [2014] + , + (36, 40, "1 treant with 2d4 satyrs mounted on centaurs") # CR 9 [2014] + , + (41, 45, "1d3 marids or roll on planar travelers lvl 11+") # CR 11 [2014] + , + (46, 50, "1d3+1 treants or 1d4+1 eladrin (mix of spring, summer, autumn and winter)") # CR 9 [2014] + , + (51, 55, "1d6+2 fomorians") # CR 8 [2014] + , + (56, 59, "2d4 shambling mounds or 1 unicorn with 3d6 centaurs") # CR 5 [2014] + , + (60, 63, "1 oni with 2d6 nothics") # CR 7 [2014] + , + (64, 67, "1d2 storm giants or a coven of hags (mix of night, annis and bheur hags)") # CR 13 [2014] + , + (68, 71, "1d4+2 cloud giants or 1 archdruid with 1d4 druids") # CR 9 [2014] + , + (72, 74, "1d2 treants and 1d4 shambling mounds") # CR 9 [2014] + , + (75, 77, "1 adult green dragon") # CR 15 [2014] + , + (78, 80, "1 androsphinx") # CR 17 [2014] + , + (81, 83, "invading - 1 adult shadow dragon or roll on shadowfell encounters lvl 11+") # CR 14 [2014] + , + # Sylvan Creatures (11+) + (84, 86, "1 treant and 1d4+1 dryads") # CR 9 [2014] + , + (87, 88, "2d6 centaurs or 1 gynosphinx") # CR 2 [2014] + , + (89, 90, "1 unicorn with 1d2 druids and 2d4 blink dogs") # CR 5 [2014] + , + # Malevolent Creatures (11+) + (91, 93, "1d3 frost giants or 1d2 fire giants") # CR 8 [2014] + , + (94, 95, "1d2 fomorians or 1 annis hag with ogres") # CR 8 [2014] + , + + # ── FEYWILD BEASTS (11+) ───────────────────────────────────────── + (96, 97, "1d2 rocs or 1d3 young dragons (any chromatic or metallic)") # CR 11 [2014] + , + (98, 98, "1d3 wyverns or 1d2 young green dragons") # CR 6 [2014] + , + + # ── FEYWILD PLANTS (11+) ───────────────────────────────────────── + (99, 100, "1d3 treants or 2d4 shambling mounds") # CR 9 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # SHADOWFELL + # Источники: SHADOWFELL ENCOUNTERS + SHADOW SPIRITS + SHADOWFELL UNDEAD (2014) + # Структура внутри каждого уровня: + # 1. Encounters (существа) + # # --- SHADOW SPIRITS --- + # 2. Shadow Spirits + # # --- SHADOWFELL UNDEAD --- + # 3. Undead + # ═══════════════════════════════════════════════════════════════════════════ + "shadowfell": { + "1-4": [ + # ── SHADOWFELL ENCOUNTERS (1-4) ─────────────────────────────────── + (1, 8, "1 wraith or roll on shadow spirits lvl 1-4") # CR 5 [2014] + , + (9, 16, "1 cambion or roll on planar travelers lvl 1-4") # CR 5 [2014] + , + (17, 24, "1d2 wights or roll on undead encounters lvl 1-4") # CR 3 [2014] + , + (25, 32, "1d4+1 darkmantles or 1d4 meazels") # CR 1/2 [2014] + , + (33, 40, "2d4 shadows or roll on shadow spirits lvl 1-4") # CR 1/2 [2014] + , + (41, 48, "1d2 drow with 1d4+1 grimlocks or 1d4+1 skulks") # CR 1/4 [2014] + , + (49, 56, "2d6 skeletons or roll on undead encounters lvl 1-4") # CR 1/4 [2014] + , + (57, 64, "1 ghost or roll on shadow spirits lvl 1-4") # CR 4 [2014] + , + (65, 70, "1d2 grells or 1 banderhobb") # CR 3 [2014] + , + + # ── SHADOW SPIRITS (1-4) ───────────────────────────────────────── + (71, 73, "1 night hag") # CR 5 [2014] + , + (74, 75, "1d2 poltergeists (specter variant)") # CR 2 [2014] + , + (76, 77, "1 shadow demon or 1d2 vampiric mists") # CR 4 [2014] + , + (78, 79, "1d4 specters or 1d4+1 skulks") # CR 1 [2014] + , + (80, 81, "1d4+1 shadows") # CR 1/2 [2014] + , + (82, 83, "1 ghost or 1d3 shadow mastiffs") # CR 4 [2014] + , + (84, 85, "1d3 will-o'-wisps") # CR 2 [2014] + , + (86, 87, "1 banshee or 1d2 sword wraith warriors") # CR 4 [2014] + , + (88, 89, "1 wraith or 1 allip") # CR 5 [2014] + , + + # ── SHADOWFELL UNDEAD (1-4) ─────────────────────────────────────── + (90, 91, "1 vampire spawn or 1d2 deathlock wights") # CR 5 [2014] + , + (92, 92, "1 flameskull or 2d6 of the wretched") # CR 4 [2014] + , + (93, 93, "1d2 mummies or 1d3 ogre zombies") # CR 3 [2014] + , + (94, 95, "3d4 zombies or 1d3+1 ghouls led by 1 ghast") # CR 1/4 [2014] + , + (96, 96, "1d4+1 ghouls") # CR 1 [2014] + , + (97, 97, "1d2 wights or 1d3 minotaur skeletons") # CR 3 [2014] + , + (98, 98, "2d6 skeletons or 1 deathlock") # CR 1/4 [2014] + , + (99, 99, "1 bone naga or 1d4+1 warhorse skeletons") # CR 4 [2014] + , + (100, 100, "1 revenant or 1 beholder zombie") # CR 5 [2014] + , + ], + "5-10": [ + # ── SHADOWFELL ENCOUNTERS (5-10) ────────────────────────────────── + (1, 8, "1 young red shadow dragon or 1 drow shadowblade") # CR 13 [2014] + , + (9, 16, "2d6 ghouls led by 1d4 ghasts or 1 gloomweaver") # CR 1 [2014] + , + (17, 24, "1d4 wraiths or roll on shadow spirits lvl 1-4") # CR 5 [2014] + , + (25, 32, "1d3 driders or 1d2 choldriths and 2d6 chitines") # CR 6 [2014] + , + (33, 40, "1d4 vampire spawn or roll on undead encounters lvl 5-10") # CR 5 [2014] + , + (41, 48, "1d2 cloakers or 1 neogi master with 1d4+1 neogi") # CR 8 [2014] + , + (49, 56, "1d4 shadow demons and 1d4+1 shadows or roll on shadow spirits lvl 5-10") # CR 4 [2014] + , + (57, 63, "1d3 drow elite warriors with 1 drider or 1d2 shadow dancers") # CR 5 [2014] + , + (64, 68, "a coven of 3 night hags or 1 balhannoth") # CR 5 [2014] + , + + # ── SHADOW SPIRITS (5-10) ───────────────────────────────────────── + (69, 71, "a coven of 3 night hags") # CR 5 [2014] + , + (72, 73, "1d4 wraiths") # CR 5 [2014] + , + (74, 75, "1d4+1 shadow demons") # CR 4 [2014] + , + (76, 77, "2d6 specters or 2d6 shadow mastiffs led by 1 shadow mastiff alpha") # CR 1 [2014] + , + (78, 79, "1 wraith with 1d6 specters") # CR 5 [2014] + , + (80, 81, "2d4 shadows or 1 sword wraith commander") # CR 1/2 [2014] + , + (82, 83, "1d2 will-o'-wisps and 1d3 wraiths or 1d4 allips") # CR 2 [2014] + , + (84, 85, "1d2 banshees with 2d4 specters or 2d4 sword wraith warriors") # CR 4 [2014] + , + (86, 87, "1d4 revenants") # CR 5 [2014] + , + + # ── SHADOWFELL UNDEAD (5-10) ────────────────────────────────────── + (88, 89, "1 beholder zombie with 2d4 minotaur skeletons or 1d2 of the lonely") # CR 9 [2014] + , + (90, 90, "2d4 wights or 1 corpse flower with 1d8+1 zombies") # CR 3 [2014] + , + (91, 91, "1d4 vampire spawn or 1d4 spawn of Kyuss") # CR 5 [2014] + , + (92, 92, "1d2 flameskulls with 1d3 wights and 1d6+6 zombies or 1 necromancer with 1d4 wights") # CR 4 [2014] + , + (93, 93, "2d6 ghouls led by 1d4 ghasts or 1d3 bodaks") # CR 1 [2014] + , + (94, 94, "1d3+1 wights with 3d6 zombies or 1 deathlock mastermind") # CR 3 [2014] + , + (95, 95, "1d4+2 mummies or 1 maurezhi with 1d10 ghouls") # CR 3 [2014] + , + (96, 96, "4d6 skeletons with 1d4+1 shadows or 1d3 of the lost") # CR 1/4 [2014] + , + (97, 98, "1d2 bone nagas with 2d4 ogre zombies or 1 of the hungry") # CR 4 [2014] + , + (99, 100, "1 mummy lord or 1d4 vampire spawn") # CR 11 [2014] + , + ], + "11+": [ + # ── SHADOWFELL ENCOUNTERS (11+) ─────────────────────────────────── + (1, 8, "1 lich or roll on undead encounters lvl 11+") # CR 21 [2014] + , + (9, 16, "1 adult shadow dragon (any metallic or chromatic) or 1 drow arachnomancer") # CR 14 [2014] + , + (17, 24, "1 death tyrant or 1 soul monger with 1d3 shadow dancers") # CR 14 [2014] + , + (25, 32, "1d4+2 cloakers or 1 balhannoth") # CR 8 [2014] + , + (33, 40, "1 vampire or roll on undead encounters lvl 11+") # CR 13 [2014] + , + (41, 48, "1 beholder or 1d4+1 drow elite warriors led by 1 drow house captain") # CR 13 [2014] + , + (49, 55, "1 vampire spellcaster or roll on undead encounters lvl 11+") # CR 13 [2014] + , + (56, 62, "2 young adult red shadow dragons or 1 nagpa") # CR 13 [2014] + , + (63, 68, "1 mummy lord or roll on undead encounters lvl 11+") # CR 11 [2014] + , + + # ── SHADOW SPIRITS (11+ — используем 5-10 таблицу, отдельной нет) ─ + (69, 71, "1d4 revenants") # CR 5 [2014] + , + (72, 73, "1d2 banshees with 2d4 specters") # CR 4 [2014] + , + (74, 75, "a coven of 3 night hags") # CR 5 [2014] + , + + # ── SHADOWFELL UNDEAD (11+) ─────────────────────────────────────── + (76, 78, "1 lich or 1 mind flayer lich") # CR 21 [2014] + , + (79, 81, "1 vampire with 1d4 vampire spawn or 1d2 sword wraith commanders with 2d4 sword wraith warriors") # CR 13 [2014] + , + (82, 84, "1 death tyrant or 1 boneclaw") # CR 14 [2014] + , + (85, 86, "2d4 vampire spawn or 1d2 of the angry") # CR 5 [2014] + , + (87, 88, "2d4 wraiths or 1 nightwalker") # CR 5 [2014] + , + (89, 90, "1 vampire or 1 skull lord with 1d6 wights") # CR 13 [2014] + , + (91, 92, "1 mummy lord or 1d3 of the hungry") # CR 11 [2014] + , + (93, 95, "1 vampire spellcaster or 1 vampire warrior") # CR 13 [2014] + , + (96, 98, "1d4+2 cloakers or 1 balhannoth") # CR 8 [2014] + , + (99, 100, "1 lich or 1 mind flayer lich") # CR 21 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # LOWER PLANES — LAWFUL EVIL (Nine Hells / Baator / Acheron) + # Девять Преисподних и Ахерон. Девилы, иерархия, юголоты. + # Источники: LOWER PLANES ENCOUNTERS + DEVILS + FIENDS (2014) + # Структура: 1. Lower Planes Encounters 2. Devils 3. Fiends + # ═══════════════════════════════════════════════════════════════════════════ + "lower_planes_le": { + "1-4": [ + # ── LOWER PLANES ENCOUNTERS (1-4) ───────────────────────────────── + (1, 6, "1 night hag or 1 salamander") # CR 5 [2014] + , + (7, 12, "1d2 bearded devils or roll on devils lvl 1-4") # CR 3 [2014] + , + (13, 18, "1 invading couatl or roll on celestial encounters lvl 1-4") # CR 4 [2014] + , + (19, 24, "1d3 spined devils or roll on devils lvl 1-4") # CR 2 [2014] + , + (25, 30, "1 weretiger with an amulet of the planes or roll on planar travelers lvl 1-4") # CR 4 [2014] + , + (31, 36, "1d2 imps or roll on devils lvl 1-4") # CR 1 [2014] + , + (37, 42, "1d4 visiting quadrone modrons or roll on lawful encounters lvl 1-4") # CR 1 [2014] + , + (43, 47, "1 nightmare or roll on fiends lvl 1-4") # CR 3 [2014] + , + (48, 52, "1 imp or 1 quasit") # CR 1 [2014] + , + (53, 57, "1d2 hell hounds or roll on fiends lvl 1-4") # CR 3 [2014] + , + (58, 62, "1d2 githyanki warriors or 2d4 stench kows") # CR 3 [2014] + , + (63, 67, "1 succubus/incubus or roll on fiends lvl 1-4") # CR 4 [2014] + , + (68, 72, "1d3 visiting githzerai monks or roll on chaos encounters lvl 1-4") # CR 2 [2014] + , + (73, 77, "1d3 quasits or roll on demons lvl 1-4") # CR 1 [2014] + , + (78, 82, "1 nightmare ridden by 1 githyanki warrior or 1d4 vargouilles") # CR 3 [2014] + , + (83, 87, "1 shadow demon or roll on demons lvl 1-4") # CR 4 [2014] + , + (88, 91, "1 gnoll fang of Yeenoghu or 1 barghest") # CR 4 [2014] + , + (92, 95, "2d4 dretches or roll on demons lvl 1-4") # CR 1/4 [2014] + , + (96, 98, "1 cambion or 1 mezzoloth") # CR 5 [2014] + , + + # ── DEVILS (1-4) ────────────────────────────────────────────────── + (99, 99, "1d2 bearded devils") # CR 3 [2014] + , + (100, 100, "1 barbed devil or 1d2 imps and 1d2 spined devils") # CR 5 [2014] + , + ], + "5-10": [ + # ── LOWER PLANES ENCOUNTERS (5-10) ──────────────────────────────── + (1, 6, "coven of 3 night hags or 1d2 blackguards mounted on nightmares") # CR 5 [2014] + , + (7, 12, "1d2 bone devils or roll on devils lvl 5-10") # CR 9 [2014] + , + (13, 18, "1 invading deva or roll on celestial encounters lvl 5-10") # CR 10 [2014] + , + (19, 24, "1d2 chain devils or roll on devils lvl 5-10") # CR 8 [2014] + , + (25, 30, "1 githyanki knight or 1d2 howlers") # CR 8 [2014] + , + (31, 36, "1d4 barbed devils or roll on devils lvl 5-10") # CR 5 [2014] + , + (37, 42, "1 visiting mind flayer or roll on lawful encounters lvl 5-10") # CR 7 [2014] + , + (43, 47, "1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (48, 52, "1d4 salamanders or 2d4 nightmares") # CR 5 [2014] + , + (53, 57, "1d4 mezzoloths or roll on fiends lvl 5-10") # CR 5 [2014] + , + (58, 62, "2d4 githyanki warriors or 1 githyanki gish") # CR 3 [2014] + , + (63, 67, "2d4 hell hounds or roll on fiends lvl 5-10") # CR 3 [2014] + , + (68, 72, "1d2 visiting green slaads or roll on chaos encounters lvl 5-10") # CR 8 [2014] + , + (73, 77, "1d3 vrocks or roll on demons lvl 5-10") # CR 9 [2014] + , + (78, 81, "1d3 githzerai zerths or roll on planar travelers lvl 5-10") # CR 8 [2014] + , + (82, 85, "1d3 chasmes or roll on demons lvl 5-10") # CR 6 [2014] + , + (86, 89, "1 death slaad or 1 warlock of the fiend and 1d2 cambions") # CR 10 [2014] + , + (90, 93, "1 glabrezu or roll on demons lvl 5-10") # CR 9 [2014] + , + (94, 96, "1d3 cambions and 1d2 succubi/incubi or 1 yagnoloth") # CR 5 [2014] + , + + # ── DEVILS (5-10) ───────────────────────────────────────────────── + (97, 98, "1 chain devil and 1d2 barbed devils or 1 bone devil and 1d4 imps") # CR 8 [2014] + , + (99, 100, "1d2 bone devils or 1 horned devil") # CR 9 [2014] + , + ], + "11+": [ + # ── LOWER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 6, "1 balor or 1 pit fiend") # CR 19 [2014] + , + (7, 12, "1d2 ice devils or 1 steel predator") # CR 14 [2014] + , + (13, 17, "1 invading solar or roll on celestial encounters lvl 11+") # CR 21 [2014] + , + (18, 22, "1d3 erinyes or roll on devils lvl 11+") # CR 12 [2014] + , + (23, 27, "1d3 nycaloths or 1 devourer") # CR 9 [2014] + , + (28, 32, "1d4 horned devils or roll on devils lvl 11+") # CR 11 [2014] + , + (33, 37, "1 visiting beholder or roll on lawful encounters lvl 11+") # CR 13 [2014] + , + (38, 42, "2d4 mezzoloths or roll on fiends lvl 11+") # CR 5 [2014] + , + (43, 47, "1d3 efreets or roll on planar travelers lvl 11+") # CR 11 [2014] + , + (48, 52, "1 ultroloth or roll on fiends lvl 11+") # CR 13 [2014] + , + (53, 57, "1d3 githyanki knights and 1d4+2 githyanki warriors or 1 githyanki kith'rak with 2d6 githyanki warriors") # CR 8 [2014] + , + (58, 62, "1d2 arcanaloths or roll on fiends lvl 11+") # CR 14 [2014] + , + (63, 67, "1d3 visiting death slaads or roll on chaos encounters lvl 11+") # CR 10 [2014] + , + (68, 72, "1d2 nalfeshnee or roll on demons lvl 11+") # CR 13 [2014] + , + (73, 77, "2d4 salamanders or 1 cadaver collector") # CR 5 [2014] + , + (78, 82, "1 marilith or roll on demons lvl 11+") # CR 16 [2014] + , + (83, 87, "1 lich or roll on planar travelers lvl 11+") # CR 21 [2014] + , + (88, 92, "1 goristro or 1 retriever") # CR 17 [2014] + , + (93, 96, "1 empyrean") # CR 23 [2014] + , + + # ── DEVILS (11+) ────────────────────────────────────────────────── + (97, 98, "1 pit fiend or 1 amnizu") # CR 20 [2014] + , + (99, 99, "1 erinyes and 1d2 horned devils or 1d3+1 bone devils") # CR 12 [2014] + , + (100, 100, "1 ice devil and 2d4 bearded devils or 1 red abishai") # CR 14 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # LOWER PLANES — NEUTRAL EVIL (Gehenna / Gray Waste / Carceri) + # Геенна, Серые Пустоши, Тартерус. Юголоты, демоны-наёмники. + # Источники: LOWER PLANES ENCOUNTERS + FIENDS (2014) + # Структура: 1. Lower Planes Encounters 2. Fiends + # ═══════════════════════════════════════════════════════════════════════════ + "lower_planes_ne": { + "1-4": [ + # ── LOWER PLANES ENCOUNTERS (1-4) — те же базовые строки ────────── + (1, 8, "1 night hag or 1 salamander") # CR 5 [2014] + , + (9, 16, "1d2 bearded devils or roll on devils lvl 1-4") # CR 3 [2014] + , + (17, 24, "1d3 spined devils or roll on devils lvl 1-4") # CR 2 [2014] + , + (25, 32, "1d2 imps or roll on devils lvl 1-4") # CR 1 [2014] + , + (33, 40, "1 nightmare or roll on fiends lvl 1-4") # CR 3 [2014] + , + (41, 48, "1 imp or 1 quasit") # CR 1 [2014] + , + (49, 55, "1d2 hell hounds or roll on fiends lvl 1-4") # CR 3 [2014] + , + (56, 62, "1 succubus/incubus or roll on fiends lvl 1-4") # CR 4 [2014] + , + (63, 69, "1d3 quasits or roll on demons lvl 1-4") # CR 1 [2014] + , + (70, 75, "1 shadow demon or roll on demons lvl 1-4") # CR 4 [2014] + , + (76, 80, "2d4 dretches or roll on demons lvl 1-4") # CR 1/4 [2014] + , + (81, 85, "1 cambion or 1 mezzoloth") # CR 5 [2014] + , + (86, 88, "1 gnoll fang of Yeenoghu or 1 barghest") # CR 4 [2014] + , + + # ── FIENDS (1-4) ────────────────────────────────────────────────── + (89, 91, "1 night hag or 1 barghest") # CR 5 [2014] + , + (92, 93, "1d3 spined devils or roll on devils lvl 1-4") # CR 2 [2014] + , + (94, 95, "1d2 hell hounds or 1d4+1 vargouilles") # CR 3 [2014] + , + (96, 97, "1d3 imps or roll on devils lvl 1-4") # CR 1 [2014] + , + (98, 98, "1 nightmare or 1 merrenoloth") # CR 3 [2014] + , + (99, 99, "2d4 dretches or roll on demons lvl 1-4") # CR 1/4 [2014] + , + (100, 100, "1 mezzoloth or 1 cambion") # CR 5 [2014] + , + ], + "5-10": [ + # ── LOWER PLANES ENCOUNTERS (5-10) ──────────────────────────────── + (1, 8, "coven of 3 night hags or 1d2 blackguards mounted on nightmares") # CR 5 [2014] + , + (9, 16, "1d2 bone devils or roll on devils lvl 5-10") # CR 9 [2014] + , + (17, 24, "1d2 chain devils or roll on devils lvl 5-10") # CR 8 [2014] + , + (25, 32, "1d4 barbed devils or roll on devils lvl 5-10") # CR 5 [2014] + , + (33, 40, "1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (41, 47, "1d4 salamanders or 2d4 nightmares") # CR 5 [2014] + , + (48, 54, "1d4 mezzoloths or roll on fiends lvl 5-10") # CR 5 [2014] + , + (55, 61, "2d4 hell hounds or roll on fiends lvl 5-10") # CR 3 [2014] + , + (62, 68, "1d3 vrocks or roll on demons lvl 5-10") # CR 9 [2014] + , + (69, 74, "1d3 chasmes or roll on demons lvl 5-10") # CR 6 [2014] + , + (75, 80, "1 glabrezu or roll on demons lvl 5-10") # CR 9 [2014] + , + (81, 85, "1d3 cambions and 1d2 succubi/incubi or 1 yagnoloth") # CR 5 [2014] + , + + # ── FIENDS (5-10) ───────────────────────────────────────────────── + (86, 88, "2d4 hell hounds or coven of 3 night hags") # CR 3 [2014] + , + (89, 91, "1 bone devil or roll on devils lvl 5-10") # CR 9 [2014] + , + (92, 93, "1 night hag mounted on a nightmare or 1d2 canoloths") # CR 5 [2014] + , + (94, 95, "1d4 mezzoloths or 1d2 howlers") # CR 5 [2014] + , + (96, 97, "1 nycaloth or 1d2 dhergoloths") # CR 9 [2014] + , + (98, 99, "1 glabrezu or roll on demons lvl 5-10") # CR 9 [2014] + , + (100, 100, "2d4 nightmares or 1 hydroloth") # CR 3 [2014] + , + ], + "11+": [ + # ── LOWER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 8, "1 balor or 1 pit fiend") # CR 19 [2014] + , + (9, 16, "1d2 ice devils or 1 steel predator") # CR 14 [2014] + , + (17, 24, "1d3 erinyes or roll on devils lvl 11+") # CR 12 [2014] + , + (25, 32, "1d3 nycaloths or 1 devourer") # CR 9 [2014] + , + (33, 40, "1d4 horned devils or roll on devils lvl 11+") # CR 11 [2014] + , + (41, 47, "2d4 mezzoloths or roll on fiends lvl 11+") # CR 5 [2014] + , + (48, 54, "1 ultroloth or roll on fiends lvl 11+") # CR 13 [2014] + , + (55, 61, "1d2 arcanaloths or roll on fiends lvl 11+") # CR 14 [2014] + , + (62, 68, "1d2 nalfeshnee or roll on demons lvl 11+") # CR 13 [2014] + , + (69, 74, "1 marilith or roll on demons lvl 11+") # CR 16 [2014] + , + (75, 80, "1 goristro or 1 retriever") # CR 17 [2014] + , + (81, 85, "1 empyrean") # CR 23 [2014] + , + + # ── FIENDS (11+) ────────────────────────────────────────────────── + (86, 88, "1 rakshasa or 1 yagnoloth with 1d4+1 mezzoloths") # CR 13 [2014] + , + (89, 91, "1d2 ice devils or roll on devils lvl 11+") # CR 14 [2014] + , + (92, 93, "1 ultroloth or 1d2 oinoloths") # CR 13 [2014] + , + (94, 95, "1d2 erinyes or roll on devils lvl 11+") # CR 12 [2014] + , + (96, 97, "1d2 arcanaloths or 1d4+1 howlers") # CR 14 [2014] + , + (98, 99, "1d2 nalfeshnees or roll on demons lvl 11+") # CR 13 [2014] + , + (100, 100, "1d3+1 nycaloths") # CR 9 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # LOWER PLANES — CHAOTIC EVIL (The Abyss / Pandemonium) + # Бездна и Пандемониум. Демоны, хаос, резня. + # Источники: LOWER PLANES ENCOUNTERS + DEMONS + FIENDS (2014) + # Структура: 1. Lower Planes Encounters 2. Demons 3. Fiends (chaos) + # ═══════════════════════════════════════════════════════════════════════════ + "lower_planes_ce": { + "1-4": [ + # ── LOWER PLANES ENCOUNTERS (1-4) ───────────────────────────────── + (1, 8, "1 night hag or 1 salamander") # CR 5 [2014] + , + (9, 16, "2d4 dretches or roll on demons lvl 1-4") # CR 1/4 [2014] + , + (17, 24, "1d3 quasits or roll on demons lvl 1-4") # CR 1 [2014] + , + (25, 32, "1 shadow demon or roll on demons lvl 1-4") # CR 4 [2014] + , + (33, 40, "1 succubus/incubus or roll on fiends lvl 1-4") # CR 4 [2014] + , + (41, 47, "1 nightmare or roll on fiends lvl 1-4") # CR 3 [2014] + , + (48, 54, "1d2 hell hounds or roll on fiends lvl 1-4") # CR 3 [2014] + , + (55, 61, "1 gnoll fang of Yeenoghu or 1 barghest") # CR 4 [2014] + , + (62, 67, "1 cambion or 1 mezzoloth") # CR 5 [2014] + , + + # ── DEMONS (1-4) ────────────────────────────────────────────────── + (68, 72, "1 barlgura") # CR 5 [2014] + , + (73, 76, "1d4 dretches and 1d4+2 manes or 1 night hag") # CR 1/4 [2014] + , + (77, 79, "1 shadow demon or 1d4 maw demons") # CR 4 [2014] + , + (80, 82, "2d4 dretches or 1 dybbuk") # CR 1/4 [2014] + , + (83, 85, "2d6 manes or 1d3 rutterkin") # CR 1/8 [2014] + , + (86, 88, "1d3 quasits or 1d2 bulezau") # CR 1 [2014] + , + (89, 91, "1d4+1 dretches and 1 quasit or 1 babau") # CR 1/4 [2014] + , + (92, 94, "1 succubus/incubus or 1 rutterkin with 1d4 abyssal wretches") # CR 4 [2014] + , + (95, 97, "1 shadow demon and 1d4 dretches or 1 cambion") # CR 4 [2014] + , + + # ── FIENDS (1-4) chaos ──────────────────────────────────────────── + (98, 99, "2d4 dretches or roll on demons lvl 1-4") # CR 1/4 [2014] + , + (100, 100, "1 succubus/incubus or 1 gnoll fang of Yeenoghu") # CR 4 [2014] + , + ], + "5-10": [ + # ── LOWER PLANES ENCOUNTERS (5-10) ──────────────────────────────── + (1, 8, "1d3 vrocks or roll on demons lvl 5-10") # CR 9 [2014] + , + (9, 16, "1d3 chasmes or roll on demons lvl 5-10") # CR 6 [2014] + , + (17, 24, "1 glabrezu or roll on demons lvl 5-10") # CR 9 [2014] + , + (25, 32, "1d3 cambions and 1d2 succubi/incubi or 1 yagnoloth") # CR 5 [2014] + , + (33, 40, "coven of 3 night hags or 1d2 blackguards mounted on nightmares") # CR 5 [2014] + , + (41, 47, "1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (48, 54, "1d4 mezzoloths or roll on fiends lvl 5-10") # CR 5 [2014] + , + (55, 61, "2d4 hell hounds or roll on fiends lvl 5-10") # CR 3 [2014] + , + (62, 68, "1 death slaad or 1 warlock of the fiend and 1d2 cambions") # CR 10 [2014] + , + (69, 73, "1d2 visiting green slaads or roll on chaos encounters lvl 5-10") # CR 8 [2014] + , + + # ── DEMONS (5-10) ───────────────────────────────────────────────── + (74, 77, "1 glabrezu and 1 chasme or 1 alkilith") # CR 9 [2014] + , + (78, 80, "1d2 hezrou or 2d4 rutterkin with 3d6 abyssal wretches") # CR 8 [2014] + , + (81, 83, "1 vrock and 1d3 barlguras or 1d4+2 bulezaus") # CR 9 [2014] + , + (84, 85, "1d3 chasmes") # CR 6 [2014] + , + (86, 87, "1d4 barlguras or 1d3 armanites") # CR 5 [2014] + , + (88, 89, "1d3 vrocks") # CR 9 [2014] + , + (90, 91, "1 glabrezu or 1 maurezhi with 2d4 ghouls") # CR 9 [2014] + , + (92, 93, "1d4+1 shadow demons or 1 shoosuva") # CR 4 [2014] + , + (94, 96, "1 yochlol") # CR 10 [2014] + , + + # ── FIENDS (5-10) chaos ─────────────────────────────────────────── + (97, 98, "1d3 chasme or roll on demons lvl 5-10") # CR 6 [2014] + , + (99, 100, "1 glabrezu or roll on demons lvl 5-10") # CR 9 [2014] + , + ], + "11+": [ + # ── LOWER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 8, "1 balor or 1 pit fiend") # CR 19 [2014] + , + (9, 16, "1d2 nalfeshnee or roll on demons lvl 11+") # CR 13 [2014] + , + (17, 24, "2d4 salamanders or 1 cadaver collector") # CR 5 [2014] + , + (25, 32, "1 marilith or roll on demons lvl 11+") # CR 16 [2014] + , + (33, 40, "1 goristro or 1 retriever") # CR 17 [2014] + , + (41, 47, "1 empyrean") # CR 23 [2014] + , + (48, 54, "1d3 nycaloths or 1 devourer") # CR 9 [2014] + , + (55, 61, "1d3 visiting death slaads or roll on chaos encounters lvl 11+") # CR 10 [2014] + , + (62, 66, "1 lich or roll on planar travelers lvl 11+") # CR 21 [2014] + , + + # ── DEMONS (11+) ────────────────────────────────────────────────── + (67, 70, "1 balor") # CR 19 [2014] + , + (71, 73, "1d3 yochlols or 1d3 vrocks and 1d3 chasmes") # CR 10 [2014] + , + (74, 76, "1 marilith or 1 sibrix") # CR 16 [2014] + , + (77, 79, "1d3+1 glabrezu or 1d4+2 armanites") # CR 9 [2014] + , + (80, 81, "1 nalfeshnee and 1d2 barlguras") # CR 13 [2014] + , + (82, 83, "1d4+2 hezrous or 1d2 wastriliths") # CR 8 [2014] + , + (84, 85, "2d4 barlguras or 1d4+2 maurezhi with 3d6 ghouls") # CR 5 [2014] + , + (86, 87, "1 goristro or 1d2 nabassu") # CR 17 [2014] + , + (88, 90, "1 marilith and 1d2 hezrou or 1 molydeus") # CR 16 [2014] + , + + # ── FIENDS (11+) chaos ──────────────────────────────────────────── + (91, 93, "1d2 nalfeshnees or roll on demons lvl 11+") # CR 13 [2014] + , + (94, 96, "1 marilith or roll on demons lvl 11+") # CR 16 [2014] + , + (97, 98, "2d4 mezzoloths or 1d3 yagnoloths") # CR 5 [2014] + , + (99, 100, "1d3+1 nycaloths") # CR 9 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # UPPER PLANES — LAWFUL GOOD (Mount Celestia / Arcadia / Bytopia) + # Гора Небес, Аркадия, Битопия. Ангелы, модроны, упорядоченная добродетель. + # Источники: UPPER PLANES ENCOUNTERS + CELESTIALS + UPPER PLANES BEASTS + # + UPPER PLANES SPIRITS (2014) + # Структура: 1. Encounters / Celestials 2. Beasts 3. Spirits + # ═══════════════════════════════════════════════════════════════════════════ + "upper_planes_lg": { + "1-4": [ + # ── UPPER PLANES ENCOUNTERS + CELESTIALS (1-4) ─────────────────── + (1, 6, "visiting - 1d3 githzerai monks or roll on planar travelers lvl 1-4") # CR 2 [2014] + , + (7, 12, "1d4 brass/copper dragon wyrmlings or 1d2 archers (good-aligned)") # CR 1 [2014] + , + (13, 18, "1 couatl or roll on celestials lvl 1-4") # CR 4 [2014] + , + (19, 24, "2d4 giant owls or roll on upper planes beasts") # CR 1/4 [2014] + , + (25, 30, "1d2 gold dragon wyrmlings") # CR 2 [2014] + , + (31, 36, "1d3 pegasi or roll on celestials lvl 1-4") # CR 2 [2014] + , + (37, 42, "2d4 blink dogs") # CR 1/4 [2014] + , + (43, 48, "2d6 flumphs or roll on upper planes spirits") # CR 1/8 [2014] + , + (49, 53, "1 knight mounted on a pegasus") # CR 3 [2014] + , + (54, 58, "1d4 animated armors or roll on upper planes spirits") # CR 1 [2014] + , + (59, 63, "1 unicorn or roll on celestials lvl 1-4") # CR 5 [2014] + , + (64, 68, "1d2 griffons or roll on upper planes spirits") # CR 2 [2014] + , + (69, 73, "invading - 1 imp or roll on fiends lvl 1-4") # CR 1 [2014] + , + (74, 78, "1d3 bronze/silver dragon wyrmlings or 1 bard (good-aligned)") # CR 1 [2014] + , + (79, 82, "invading - 1 succubus/incubus or roll on fiends lvl 1-4") # CR 4 [2014] + , + # Celestials (1-4) + (83, 84, "2d4 aarakocra or roll on upper planes spirits") # CR 1/4 [2014] + , + (85, 86, "1 unicorn") # CR 5 [2014] + , + (87, 88, "1 helmed horror or roll on upper planes spirits") # CR 5 [2014] + , + (89, 90, "1 couatl") # CR 4 [2014] + , + + # ── UPPER PLANES BEASTS (1-4) ───────────────────────────────────── + (91, 91, "1d3 polar bears") # CR 2 [2014] + , + (92, 92, "1d4+1 warhorses") # CR 1/2 [2014] + , + (93, 93, "2d4 wolves") # CR 1/4 [2014] + , + (94, 94, "2d4 giant owls or 1d4 axebeaks") # CR 1/4 [2014] + , + (95, 95, "1d4 lions") # CR 1 [2014] + , + (96, 96, "1 giant elk") # CR 2 [2014] + , + (97, 97, "1 elephant or 1d4+1 giant goats") # CR 4 [2014] + , + + # ── UPPER PLANES SPIRITS (1-4) ──────────────────────────────────── + (98, 98, "1d3 pseudodragons") # CR 1/4 [2014] + , + (99, 99, "2d4 flying swords or 1d2 knights") # CR 1 [2014] + , + (100, 100, "2d6 flumphs") # CR 1/8 [2014] + , + ], + "5-10": [ + # ── UPPER PLANES ENCOUNTERS + CELESTIALS (5-10) ────────────────── + (1, 8, "2d4+2 helmed horrors or 1 gynosphinx") # CR 5 [2014] + , + (9, 16, "1 unicorn and 2d6 blink dogs or roll on fey lvl 5-10") # CR 5 [2014] + , + (17, 24, "1 couatl and 2d6 giant eagles or 1 war priest (good-aligned)") # CR 4 [2014] + , + (25, 32, "1 deva") # CR 10 [2014] + , + (33, 40, "2d6 pegasi") # CR 2 [2014] + , + (41, 47, "1 young dragon (any metallic) or 2d4 knights mounted on pegasi") # CR 6 [2014] + , + (48, 54, "1 guardian naga or 1 diviner (good-aligned)") # CR 10 [2014] + , + (55, 61, "invading - 1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (62, 67, "visiting - 1 djinni or roll on planar travelers lvl 5-10") # CR 11 [2014] + , + + # ── UPPER PLANES BEASTS (5-10) ──────────────────────────────────── + (68, 72, "1d4+1 warhorses or 1d3 polar bears") # CR 1/2 [2014] + , + (73, 76, "1d2 owlbears or 2d4 giant owls") # CR 3 [2014] + , + (77, 80, "1d4 lions or 1 giant elk") # CR 1 [2014] + , + + # ── UPPER PLANES SPIRITS (5-10) ─────────────────────────────────── + (81, 84, "1d3 centaurs or 1d2 griffons") # CR 2 [2014] + , + (85, 87, "2d6 flumphs or 1d4 animated armors") # CR 1/8 [2014] + , + (88, 90, "1 helmed horror or 1d2 knights") # CR 5 [2014] + , + (91, 94, "1d3 devas or 1 planetar") # CR 10 [2014] + , + (95, 97, "1 guardian naga or 1 gynosphinx") # CR 10 [2014] + , + (98, 100, "2d4+2 helmed horrors or 1d4 devas") # CR 5 [2014] + , + ], + "11+": [ + # ── UPPER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 10, "1 solar or 1 warlord (good-aligned) with 1d3 devas") # CR 21 [2014] + , + (11, 20, "1d4 guardian nagas or 1 androsphinx") # CR 10 [2014] + , + (21, 30, "1 planetar or 1 ki-rin with 2d4 pegasi") # CR 16 [2014] + , + (31, 40, "visiting - 1 archmage or roll on planar travelers lvl 11+") # CR 12 [2014] + , + (41, 50, "1d4+1 devas") # CR 10 [2014] + , + (51, 60, "1d2 storm giants or 1 ki-rin") # CR 13 [2014] + , + (61, 68, "1 adult dragon (any metallic)") # CR 17 [2014] + , + (69, 76, "invading - 1d2 erinyes or roll on fiends lvl 11+") # CR 12 [2014] + , + (77, 83, "1 empyrean or 1 ancient dragon (any metallic)") # CR 23 [2014] + , + + # ── UPPER PLANES SPIRITS (11+) ──────────────────────────────────── + (84, 87, "1d3 devas or 1 planetar") # CR 10 [2014] + , + (88, 90, "1 solar or 1d4+1 devas") # CR 21 [2014] + , + (91, 94, "1 androsphinx or 1 gynosphinx") # CR 17 [2014] + , + + # ── UPPER PLANES BEASTS (11+) ───────────────────────────────────── + (95, 97, "1d2 rocs or 1d3 young metallic dragons") # CR 11 [2014] + , + (98, 100, "1d2 adult metallic dragons or 1 empyrean") # CR 17 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # UPPER PLANES — NEUTRAL GOOD (Elysium / Beastlands / Bytopia) + # Элизиум, Охотничьи Угодья, Битопия. Природа, животные, духи. + # Источники: UPPER PLANES ENCOUNTERS + UPPER PLANES BEASTS + UPPER PLANES SPIRITS (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "upper_planes_ng": { + "1-4": [ + # ── UPPER PLANES ENCOUNTERS + BEASTS + SPIRITS (1-4) ───────────── + (1, 8, "visiting - 1d3 githzerai monks or roll on planar travelers lvl 1-4") # CR 2 [2014] + , + (9, 16, "1 elephant or roll on upper planes beasts") # CR 4 [2014] + , + (17, 24, "2d4 giant owls or roll on upper planes beasts") # CR 1/4 [2014] + , + (25, 32, "1d4 lions or roll on upper planes beasts") # CR 1 [2014] + , + (33, 40, "1d3 pegasi or roll on celestials lvl 1-4") # CR 2 [2014] + , + (41, 47, "1d2 griffons or roll on upper planes spirits") # CR 2 [2014] + , + (48, 54, "invading - 1 imp or roll on fiends lvl 1-4") # CR 1 [2014] + , + (55, 61, "2d6 flumphs or roll on upper planes spirits") # CR 1/8 [2014] + , + (62, 67, "1 unicorn or roll on celestials lvl 1-4") # CR 5 [2014] + , + (68, 72, "1 couatl or roll on celestials lvl 1-4") # CR 4 [2014] + , + + # ── UPPER PLANES BEASTS (1-4) ───────────────────────────────────── + (73, 74, "1d3 polar bears") # CR 2 [2014] + , + (75, 76, "2d4 wolves") # CR 1/4 [2014] + , + (77, 78, "2d4 giant owls or 1d4 axebeaks") # CR 1/4 [2014] + , + (79, 80, "1 giant elk") # CR 2 [2014] + , + (81, 82, "1 elephant or 1d4+1 giant goats") # CR 4 [2014] + , + (83, 84, "1d4+1 apes") # CR 1/2 [2014] + , + (85, 86, "1d2 owlbears") # CR 3 [2014] + , + + # ── UPPER PLANES SPIRITS (1-4) ──────────────────────────────────── + (87, 88, "1d3 pseudodragons") # CR 1/4 [2014] + , + (89, 90, "1d3 centaurs") # CR 2 [2014] + , + (91, 92, "1d2 dryads or 1d3 berserkers") # CR 1 [2014] + , + (93, 94, "2d4 aarakocra") # CR 1/4 [2014] + , + (95, 96, "2d6 flumphs") # CR 1/8 [2014] + , + (97, 98, "1d4 animated armors or 1 priest and 1d3 scouts") # CR 1 [2014] + , + (99, 100, "1 helmed horror") # CR 5 [2014] + , + ], + "5-10": [ + # ── UPPER PLANES ENCOUNTERS (5-10) ──────────────────────────────── + (1, 10, "1 couatl and 2d6 giant eagles or 1 war priest (good-aligned)") # CR 4 [2014] + , + (11, 20, "1 deva") # CR 10 [2014] + , + (21, 30, "2d6 pegasi") # CR 2 [2014] + , + (31, 40, "1 young dragon (any metallic) or 2d4 knights mounted on pegasi") # CR 6 [2014] + , + (41, 50, "1 guardian naga or 1 diviner (good-aligned)") # CR 10 [2014] + , + (51, 60, "invading - 1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (61, 67, "visiting - 1 djinni or roll on planar travelers lvl 5-10") # CR 11 [2014] + , + + # ── UPPER PLANES BEASTS (5-10) ──────────────────────────────────── + (68, 73, "1d3 polar bears or 2d4 giant owls") # CR 2 [2014] + , + (74, 78, "1 elephant or 1d4 lions") # CR 4 [2014] + , + (79, 82, "1d2 owlbears or 1d4+1 warhorses") # CR 3 [2014] + , + + # ── UPPER PLANES SPIRITS (5-10) ─────────────────────────────────── + (83, 86, "1d3 centaurs or 1d2 griffons") # CR 2 [2014] + , + (87, 89, "1d2 dryads or 2d6 flumphs") # CR 1 [2014] + , + (90, 93, "1 helmed horror or 2d4 animated armors") # CR 5 [2014] + , + (94, 97, "1 unicorn with 1d2 druids and 2d4 blink dogs") # CR 5 [2014] + , + (98, 100, "1d3 devas or 1 planetar") # CR 10 [2014] + , + ], + "11+": [ + # ── UPPER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 12, "1 solar or 1 warlord (good-aligned) with 1d3 devas") # CR 21 [2014] + , + (13, 24, "1 planetar or 1 ki-rin with 2d4 pegasi") # CR 16 [2014] + , + (25, 36, "1d4+1 devas") # CR 10 [2014] + , + (37, 47, "1d2 storm giants or 1 ki-rin") # CR 13 [2014] + , + (48, 57, "1 adult dragon (any metallic)") # CR 17 [2014] + , + (58, 67, "invading - 1d2 erinyes or roll on fiends lvl 11+") # CR 12 [2014] + , + (68, 77, "1 empyrean or 1 ancient dragon (any metallic)") # CR 23 [2014] + , + + # ── UPPER PLANES BEASTS (11+) ───────────────────────────────────── + (78, 83, "1d2 rocs or 1d4 giant owls (with upper planes traits)") # CR 11 [2014] + , + (84, 87, "1 elephant or 1d2 owlbears (with upper planes traits)") # CR 4 [2014] + , + + # ── UPPER PLANES SPIRITS (11+) ──────────────────────────────────── + (88, 91, "1 treant and 1d4+1 dryads") # CR 9 [2014] + , + (92, 95, "1d3 devas or 1 planetar") # CR 10 [2014] + , + (96, 98, "1 solar or 1d4+1 devas") # CR 21 [2014] + , + (99, 100, "1 empyrean or 1 ancient metallic dragon") # CR 23 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # UPPER PLANES — CHAOTIC GOOD (Arborea / Ysgard / Limbo border) + # Арборея, Исгард. Эладрины, берсерки-герои, фейские духи. + # Источники: UPPER PLANES ENCOUNTERS + CELESTIALS + UPPER PLANES BEASTS + # + UPPER PLANES SPIRITS (2014) + # ═══════════════════════════════════════════════════════════════════════════ + "upper_planes_cg": { + "1-4": [ + # ── UPPER PLANES ENCOUNTERS + CELESTIALS + SPIRITS (1-4) ───────── + (1, 8, "visiting - 1 faerie dragon or roll on fey lvl 1-4") # CR 2 [2014] + , + (9, 16, "1 couatl or roll on celestials lvl 1-4") # CR 4 [2014] + , + (17, 24, "1d4 lions or roll on upper planes beasts") # CR 1 [2014] + , + (25, 32, "1 unicorn or roll on celestials lvl 1-4") # CR 5 [2014] + , + (33, 40, "1d2 griffons or roll on upper planes spirits") # CR 2 [2014] + , + (41, 47, "2d4 blink dogs") # CR 1/4 [2014] + , + (48, 54, "2d6 flumphs or roll on upper planes spirits") # CR 1/8 [2014] + , + (55, 61, "invading - 1 imp or roll on fiends lvl 1-4") # CR 1 [2014] + , + (62, 67, "1d3 bronze/silver dragon wyrmlings or 1 bard (good-aligned)") # CR 1 [2014] + , + (68, 73, "invading - 1 succubus/incubus or roll on fiends lvl 1-4") # CR 4 [2014] + , + # Celestials + Spirits (1-4) + (74, 76, "2d4 aarakocra or roll on upper planes spirits") # CR 1/4 [2014] + , + (77, 79, "1 unicorn") # CR 5 [2014] + , + (80, 81, "1d3 centaurs") # CR 2 [2014] + , + (82, 83, "1d2 dryads or 1d3 berserkers") # CR 1 [2014] + , + + # ── UPPER PLANES BEASTS (1-4) ───────────────────────────────────── + (84, 85, "2d4 wolves") # CR 1/4 [2014] + , + (86, 87, "1d4 lions") # CR 1 [2014] + , + (88, 89, "1 giant elk or 1d4+1 giant goats") # CR 2 [2014] + , + (90, 91, "1d4+1 apes") # CR 1/2 [2014] + , + (92, 93, "1d2 owlbears") # CR 3 [2014] + , + + # ── UPPER PLANES SPIRITS (1-4) ──────────────────────────────────── + (94, 95, "1d3 pseudodragons") # CR 1/4 [2014] + , + (96, 97, "2d4 flying swords or 1d2 knights") # CR 1 [2014] + , + (98, 99, "2d6 flumphs") # CR 1/8 [2014] + , + (100, 100, "1 helmed horror") # CR 5 [2014] + , + ], + "5-10": [ + # ── UPPER PLANES ENCOUNTERS (5-10) ──────────────────────────────── + (1, 10, "2d4+2 helmed horrors or 1 gynosphinx") # CR 5 [2014] + , + (11, 20, "1 unicorn and 2d6 blink dogs or roll on fey lvl 5-10") # CR 5 [2014] + , + (21, 30, "1 deva") # CR 10 [2014] + , + (31, 40, "2d6 pegasi") # CR 2 [2014] + , + (41, 50, "1 young dragon (any metallic) or 2d4 knights mounted on pegasi") # CR 6 [2014] + , + (51, 60, "invading - 1 nycaloth or roll on fiends lvl 5-10") # CR 9 [2014] + , + (61, 68, "visiting - 1 djinni or roll on planar travelers lvl 5-10") # CR 11 [2014] + , + + # ── UPPER PLANES BEASTS + SPIRITS (5-10) ───────────────────────── + (69, 73, "2d6 pegasi or 1d3 polar bears") # CR 2 [2014] + , + (74, 77, "1d3 centaurs or 1d2 griffons") # CR 2 [2014] + , + (78, 81, "1d2 owlbears or 1d4 lions") # CR 3 [2014] + , + (82, 85, "1d2 dryads or 2d6 flumphs") # CR 1 [2014] + , + (86, 89, "1 helmed horror or 2d4 animated armors") # CR 5 [2014] + , + (90, 93, "1 unicorn with 1d2 druids and 2d4 blink dogs") # CR 5 [2014] + , + (94, 97, "2d4 satyrs with 1d6 pixies and 1d6 sprites") # CR 1/2 [2014] + , + (98, 100, "1d3 devas or 1 planetar") # CR 10 [2014] + , + ], + "11+": [ + # ── UPPER PLANES ENCOUNTERS (11+) ───────────────────────────────── + (1, 12, "1 solar or 1 warlord (good-aligned) with 1d3 devas") # CR 21 [2014] + , + (13, 22, "1d4 guardian nagas or 1 androsphinx") # CR 10 [2014] + , + (23, 32, "1 planetar or 1 ki-rin with 2d4 pegasi") # CR 16 [2014] + , + (33, 42, "1d4+1 devas") # CR 10 [2014] + , + (43, 52, "1d2 storm giants or 1 ki-rin") # CR 13 [2014] + , + (53, 62, "1 adult dragon (any metallic)") # CR 17 [2014] + , + (63, 71, "invading - 1d2 erinyes or roll on fiends lvl 11+") # CR 12 [2014] + , + (72, 80, "1 empyrean or 1 ancient dragon (any metallic)") # CR 23 [2014] + , + + # ── BEASTS + SPIRITS (11+) ──────────────────────────────────────── + (81, 85, "1d3+1 treants or 1d4+1 eladrin (mix spring/summer/autumn/winter)") # CR 9 [2014] + , + (86, 90, "1 treant with 2d4 satyrs mounted on centaurs") # CR 9 [2014] + , + (91, 95, "1d2 rocs or 1d3 young metallic dragons") # CR 11 [2014] + , + (96, 98, "1d3 devas or 1 planetar") # CR 10 [2014] + , + (99, 100, "1 solar or 1 empyrean") # CR 21 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANES OF CHAOS (Limbo / Pandemonium border) + # Лимбо и план чистого хаоса. Гитзераи, слаады, хаотические существа. + # Источники: LIMBO OR CHAOS ENCOUNTERS + CHAOS CREATURES + SLAAD ENCOUNTERS (2014) + # Структура: 1. Limbo/Chaos Encounters 2. Chaos Creatures 3. Slaad Encounters + # ═══════════════════════════════════════════════════════════════════════════ + "planes_of_chaos": { + "1-4": [ + # ── LIMBO OR CHAOS ENCOUNTERS (1-4) ────────────────────────────── + (1, 8, "1 barlgura or roll on chaos creatures lvl 1-4") # CR 5 [2014] + , + (9, 16, "invading - 1d4 quadrones or roll on lawful creatures lvl 1-4") # CR 1 [2014] + , + (17, 24, "1d3 pegasi or roll on chaos creatures lvl 1-4") # CR 2 [2014] + , + (25, 32, "1d3 gibbering mouthers") # CR 2 [2014] + , + (33, 40, "1d3 quasits or roll on chaos creatures lvl 1-4") # CR 1 [2014] + , + (41, 47, "1d3 githzerai monks or 1d4+1 darklings") # CR 2 [2014] + , + (48, 54, "visiting - 1d2 githyanki warriors or roll on planar travelers lvl 1-4") # CR 3 [2014] + , + (55, 61, "1d3 gargoyles or roll on elemental chaos lvl 1-4") # CR 2 [2014] + , + (62, 67, "1 red slaad or 1 darkling elder with 1d2 darklings") # CR 5 [2014] + , + + # ── CHAOS CREATURES (1-4) ───────────────────────────────────────── + (68, 72, "1 red slaad") # CR 5 [2014] + , + (73, 76, "1d3 gargoyles") # CR 2 [2014] + , + (77, 79, "1 gibbering mouther or 1d4 vargouilles") # CR 2 [2014] + , + (80, 82, "1d3 pegasi") # CR 2 [2014] + , + (83, 85, "1d3 quasits or demons lvl 1-4") # CR 1 [2014] + , + (86, 88, "1d3 githzerai monks") # CR 2 [2014] + , + (89, 91, "2d4 dretches or demons lvl 1-4") # CR 1/4 [2014] + , + (92, 94, "1d3 pseudodragons") # CR 1/4 [2014] + , + (95, 97, "1 barlgura or demons lvl 1-4") # CR 5 [2014] + , + + # ── нет таблицы слаадов для 1-4 ────────────────────────────────── + (98, 100, "1 red slaad or 1d4 gibbering mouthers") # CR 5 [2014] + , + ], + "5-10": [ + # ── LIMBO OR CHAOS ENCOUNTERS (5-10) ───────────────────────────── + (1, 8, "1d2 hezrou or roll on chaos creatures lvl 5-10") # CR 8 [2014] + , + (9, 16, "invading - 1 githyanki knight or roll on lawful creatures lvl 5-10") # CR 8 [2014] + , + (17, 24, "1d4 red slaads or roll on chaos creatures lvl 5-10") # CR 5 [2014] + , + (25, 32, "1d3 githzerai zerths or 2d6 pegasi") # CR 8 [2014] + , + (33, 40, "1d3 vrocks or roll on chaos creatures lvl 5-10") # CR 9 [2014] + , + (41, 47, "1d3 blue slaads") # CR 9 [2014] + , + (48, 54, "1d4 elementals (mix of air, earth, fire and water) or roll on elemental chaos lvl 5-10") # CR 5 [2014] + , + (55, 61, "1d2 green slaads") # CR 8 [2014] + , + (62, 67, "visiting - 1 efreet or roll on planar travelers lvl 5-10") # CR 11 [2014] + , + + # ── CHAOS CREATURES (5-10) ──────────────────────────────────────── + (68, 71, "2d6 githzerai monks or 1 morkoth") # CR 2 [2014] + , + (72, 74, "1d2 green slaads or roll on slaad encounters") # CR 8 [2014] + , + (75, 77, "1d3 githzerai zerths or 1 howler") # CR 8 [2014] + , + (78, 80, "1d3 blue slaads or roll on slaad encounters") # CR 9 [2014] + , + (81, 82, "1d3 vrocks or roll on demons lvl 5-10") # CR 9 [2014] + , + (83, 84, "1d4+1 red slaads or roll on slaad encounters") # CR 5 [2014] + , + (85, 86, "1d3 chasme or roll on demons lvl 5-10") # CR 6 [2014] + , + (87, 88, "2d6 pegasi or 1 githzerai enlightened") # CR 2 [2014] + , + (89, 90, "1d2 hezrou or roll on demons lvl 5-10") # CR 8 [2014] + , + + # ── SLAAD ENCOUNTERS (5-10) ─────────────────────────────────────── + (91, 92, "1 death slaad disguised as a githzerai") # CR 10 [2014] + , + (93, 94, "1 grey slaad with 1d2 red slaads") # CR 9 [2014] + , + (95, 96, "1 green slaad and 1 red slaad with 1 humanoid infected with a slaad egg") # CR 8 [2014] + , + (97, 98, "1 blue slaad with 1d2 red slaads") # CR 9 [2014] + , + (99, 100, "1d4+1 red slaads or 1d3 blue slaads") # CR 5 [2014] + , + ], + "11+": [ + # ── LIMBO OR CHAOS ENCOUNTERS (11+) ────────────────────────────── + (1, 10, "1 empyrean or roll on chaos creatures lvl 11+") # CR 23 [2014] + , + (11, 20, "invading - 1 githyanki knight mounted on a young red dragon or roll on lawful creatures lvl 11+") # CR 8 [2014] + , + (21, 28, "1 goristro or roll on chaos creatures lvl 11+") # CR 17 [2014] + , + (29, 36, "visiting - 1d3 djinni or roll on planar travelers lvl 11+") # CR 11 [2014] + , + (37, 44, "1d6+1 githzerai zerths and 2d4 githzerai monks or roll on chaos creatures lvl 11+") # CR 8 [2014] + , + (45, 52, "1 death slaad with 1d6+1 blue slaads or 1 githzerai anarch") # CR 10 [2014] + , + (53, 58, "1d3 marids or roll on elemental chaos lvl 11+") # CR 11 [2014] + , + (59, 64, "1 grey slaad with 1d3 green slaads and 1d4 red slaads or 1 githzerai enlightened with 1d3 githzerai zerths") # CR 9 [2014] + , + (65, 70, "1d2 purple worms") # CR 15 [2014] + , + + # ── CHAOS CREATURES (11+) ───────────────────────────────────────── + (71, 74, "1 empyrean") # CR 23 [2014] + , + (75, 77, "1d3 gray slaads or 1 githzerai anarch") # CR 9 [2014] + , + (78, 79, "1d2 storm giants or 1d3+1 howlers") # CR 13 [2014] + , + (80, 81, "1 death slaad with 2d4 red slaads or 1d3 githzerai enlightened") # CR 10 [2014] + , + (82, 83, "1d3+1 glabrezu or 1 demons lvl 11+") # CR 9 [2014] + , + (84, 85, "1d4 red slaads with 1d3 blue slaads and 1 green slaad or 1 morkoth") # CR 5 [2014] + , + (86, 87, "1 marilith or demons lvl 11+") # CR 16 [2014] + , + (88, 89, "1d6+1 githzerai zerths and 2d4 githzerai monks or 1 devourer with 1d3 wights") # CR 8 [2014] + , + (90, 91, "1 goristro or demons lvl 11+") # CR 17 [2014] + , + + # ── SLAAD ENCOUNTERS (high-level) ───────────────────────────────── + (92, 94, "1 death slaad with 1d6+1 blue slaads") # CR 10 [2014] + , + (95, 97, "1 grey slaad with 1d3 green slaads") # CR 9 [2014] + , + (98, 100, "1 death slaad disguised as a planar traveler") # CR 10 [2014] + , + ], + }, + + # ═══════════════════════════════════════════════════════════════════════════ + # PLANE OF LAW (Mechanus / Arcadia border) + # Механус и приграничные планы закона. Модроны, гитиянки, законные существа. + # Источники: MECHANUS ENCOUNTERS + MODRON ENCOUNTERS + LAWFUL CREATURES (2014) + # Структура: 1. Mechanus Encounters 2. Modron Encounters 3. Lawful Creatures + # ═══════════════════════════════════════════════════════════════════════════ + "plane_of_law": { + "1-4": [ + # ── MECHANUS ENCOUNTERS (1-4) ───────────────────────────────────── + (1, 8, "1 couatl or roll on lawful creatures lvl 1-4") # CR 4 [2014] + , + (9, 16, "2d6+3 monodrones or roll on modrons lvl 1-4") # CR 1/8 [2014] + , + (17, 24, "1d2 barbed devils or roll on lawful creatures lvl 1-4") # CR 5 [2014] + , + (25, 32, "1d4 duodrones led by 1 tridrone or roll on modrons lvl 1-4") # CR 1/4 [2014] + , + (33, 40, "1d2 githyanki warriors or roll on lawful creatures lvl 1-4") # CR 3 [2014] + , + (41, 47, "1d4+2 monodrones with 1d3 duodrones led by 1 tridrone or roll on modrons lvl 1-4") # CR 1/8 [2014] + , + (48, 54, "visiting - adventurers with a scroll of plane shift (1 knight, 1 priest, 1 druid and 2 thugs) or roll on planar travelers lvl 1-4") # CR 3 [2014] + , + (55, 61, "1d4 quadrones or roll on modrons lvl 1-4") # CR 1 [2014] + , + (62, 67, "invading - 1 red slaad or roll on chaos creatures lvl 1-4") # CR 5 [2014] + , + + # ── MODRON ENCOUNTERS (1-4) ─────────────────────────────────────── + (68, 71, "1 rogue duodrone or quadrone") # CR 1/4 [2014] + , + (72, 74, "1d3 tridrones led by 1 quadrone or 1d3 tridrones with 1d2 bronze scouts") # CR 1 [2014] + , + (75, 77, "1d4+2 monodrones with 1d3 duodrones led by 1 tridrone") # CR 1/8 [2014] + , + (78, 80, "2d4 monodrones led by 1d4 duodrones") # CR 1/8 [2014] + , + (81, 82, "2d6+3 monodrones") # CR 1/8 [2014] + , + (83, 84, "1d4 duodrones led by 1 tridrone") # CR 1/4 [2014] + , + (85, 86, "1 pentadrone or 1d3 duodrones with 1 iron cobra") # CR 2 [2014] + , + (87, 88, "1d4 quadrones or 1 rogue tridrone with 1 stone defender") # CR 1 [2014] + , + (89, 90, "1 rogue monodrone, tridrone or pentadrone") # CR 1/8 [2014] + , + + # ── LAWFUL CREATURES (1-4) ──────────────────────────────────────── + (91, 92, "1d4 quadrones or roll on modron encounters lvl 1-4") # CR 1 [2014] + , + (93, 94, "1 couatl") # CR 4 [2014] + , + (95, 96, "1d2 githyanki warriors") # CR 3 [2014] + , + (97, 97, "1d3 imps or roll on devils lvl 1-4") # CR 1 [2014] + , + (98, 98, "1d2 hell hounds or 1d2 neogi") # CR 3 [2014] + , + (99, 99, "1d2 barbed devils or roll on devils lvl 1-4") # CR 5 [2014] + , + (100, 100, "1 unicorn or 1 neogi master") # CR 5 [2014] + , + ], + "5-10": [ + # ── MECHANUS ENCOUNTERS (5-10) ──────────────────────────────────── + (1, 8, "invading - 1d3 blue slaads or roll on slaad encounters") # CR 9 [2014] + , + (9, 16, "2d6 tridrones led by 1d4+2 pentadrones or roll on modrons lvl 5-10") # CR 1 [2014] + , + (17, 24, "1 gynosphinx or roll on lawful creatures lvl 5-10") # CR 11 [2014] + , + (25, 32, "2d6+3 quadrones or roll on modrons lvl 5-10") # CR 1 [2014] + , + (33, 40, "1 githyanki knight or roll on lawful creatures lvl 5-10") # CR 8 [2014] + , + (41, 47, "1d4 monodrones and 1 tridrone with 1 stone golem or roll on modrons lvl 5-10") # CR 1/8 [2014] + , + (48, 54, "1 deva or roll on lawful creatures lvl 5-10") # CR 10 [2014] + , + (55, 61, "visiting - 1 mind flayer arcanist or roll on planar travelers lvl 5-10") # CR 8 [2014] + , + (62, 67, "invading - 1d3 vrocks or roll on chaos creatures lvl 5-10") # CR 9 [2014] + , + + # ── MODRON ENCOUNTERS (5-10) ────────────────────────────────────── + (68, 71, "2d6 monodrones, 2d4 duodrones, 1d6 tridrones, 1d4 quadrones and 1d3 pentadrones") # CR 1/8 [2014] + , + (72, 74, "2d6 tridrones led by 1d4+2 pentadrones") # CR 1 [2014] + , + (75, 76, "2d4 quadrones with 2d4 animated armors or 1 rogue pentadrone with 1d3 stone defenders") # CR 1 [2014] + , + (77, 78, "1d4 monodrones and 1 tridrone with 1 stone golem") # CR 1/8 [2014] + , + (79, 80, "2d6+3 quadrones") # CR 1 [2014] + , + (81, 82, "3d6 duodrones led by 2d4 tridrones or 1d4+1 quadrones with 1d2 oaken bolters") # CR 1/4 [2014] + , + (83, 84, "2d4 quadrones with 1d4 helmed horrors") # CR 1 [2014] + , + (85, 86, "1 tridrone riding a clay golem") # CR 1 [2014] + , + (87, 88, "1 rogue pentadrone protected by 1 shield golem") # CR 2 [2014] + , + + # ── LAWFUL CREATURES (5-10) ─────────────────────────────────────── + (89, 91, "2d4 githyanki warriors or 1d2 neogi masters with 1d4 neogi and 2d6 neogi hatchlings") # CR 3 [2014] + , + (92, 93, "2d4 quadrones with 1 helmed horror or roll on modron encounters lvl 5-10") # CR 1 [2014] + , + (94, 95, "1 githyanki knight") # CR 8 [2014] + , + (96, 97, "1d4 barbed devils or roll on devils lvl 5-10") # CR 5 [2014] + , + (98, 99, "1 deva or 1 githyanki gish") # CR 10 [2014] + , + (100, 100, "1 horned devil or roll on devils lvl 5-10") # CR 11 [2014] + , + ], + "11+": [ + # ── MECHANUS ENCOUNTERS (11+) ───────────────────────────────────── + (1, 8, "1 androsphinx or 1 marut") # CR 17 [2014] + , + (9, 16, "1 githyanki knight mounted on a young red dragon or roll on planar travelers lvl 11+") # CR 8 [2014] + , + (17, 24, "1d3 pentadrones with 1d3+1 stone golems or 2d6 quadrones with 1d3 oaken bolters and 1d2 stone defenders") # CR 2 [2014] + , + (25, 32, "1 planetar or roll on lawful creatures lvl 11+") # CR 16 [2014] + , + (33, 40, "3d6 monodrones, 3d4 duodrones, 2d6 tridrones, 2d4 quadrones and 1d6+1 pentadrones") # CR 1/8 [2014] + , + (41, 47, "1d2 ice devils or roll on lawful creatures lvl 11+") # CR 14 [2014] + , + (48, 54, "invading - 1 death slaad with 2d4 red slaads or roll on chaos creatures lvl 11+") # CR 10 [2014] + , + (55, 61, "1d2 githyanki knights with 2d6 githyanki warriors or roll on lawful creatures lvl 11+") # CR 8 [2014] + , + (62, 67, "1 efreet noble or roll on planar travelers lvl 11+") # CR 13 [2014] + , + + # ── MODRON ENCOUNTERS (11+) — используем 5-10, отдельной нет ───── + (68, 72, "3d6 monodrones, 3d4 duodrones, 2d6 tridrones, 2d4 quadrones and 1d6+1 pentadrones") # CR 1/8 [2014] + , + (73, 76, "1d3 pentadrones with 1d3+1 stone golems") # CR 2 [2014] + , + (77, 79, "2d4 quadrones with 1d4 helmed horrors") # CR 1 [2014] + , + + # ── LAWFUL CREATURES (11+) ──────────────────────────────────────── + (80, 83, "1 solar or 1 marut") # CR 21 [2014] + , + (84, 86, "1 beholder or 1 retriever") # CR 13 [2014] + , + (87, 89, "1d4+1 devas or 1 ki-rin") # CR 10 [2014] + , + (90, 91, "1d4 horned devils or roll on devils lvl 11+") # CR 11 [2014] + , + (92, 93, "1 planetar or 1 githyanki kith'rak and 1d4 githyanki knights") # CR 16 [2014] + , + (94, 95, "2d4 bearded devils or roll on devils lvl 5-10") # CR 3 [2014] + , + (96, 97, "1d2 githyanki knights with 2d6 githyanki warriors or 1d3 githyanki gish with 2d4 githyanki warriors") # CR 8 [2014] + , + (98, 99, "1d2 ice devils or 1 steel predator") # CR 14 [2014] + , + (100, 100, "1 androsphinx or 1 githyanki supreme commander mounted on a young red dragon") # CR 17 [2014] + , + ], + }, +}