{
  "itemGroup.psi": "Psi",
  "psi.desc": "Это шутка с ломанием четвертой стены, наслаждайтесь.",
  "psimisc.shift_for_info": "§7Удерживайте §bSHIFT§7 для подробной информации",
  "psimisc.ctrl_for_stats": "§7Удерживайте §bCTRL§7 для просмотра характеристик элемента",
  "psimisc.spellmaynotfunctionasintended": "Бип-буп! Похоже, вы импортируете заклинание, созданное в более старой версии Psi. Если в нём используются трюки с движением или последовательностью, их работа (и стоимость) может отличаться от оригинала.",
  "psimisc.component_type": "§aТип компонента§7: %s",
  "psimisc.none": "(нет)",
  "psimisc.stats": "Характеристики",
  "psimisc.socketing": "Сокетирование",
  "psimisc.keybind": "Горячая клавиша Psi-мастера",
  "psimisc.selected": "Выбрано",
  "psimisc.spell_selected": "§dВыбрано заклинание§7: %s",
  "psimisc": "Имя:",
  "psimisc.compiled": "Компиляция успешна",
  "psimisc.errored": "Ошибка компиляции",
  "psimisc.weak_cad": "Характеристики вашего КАД слишком слабы для этого заклинания.",
  "psimisc.canceled_spell": "Что-то помешало вам применить это заклинание.",
  "psimisc.cancelled_cad_take": "Что-то помешало вам создать КАД.",
  "psimisc.constant": "Константа",
  "psimisc.next_page": "Следующая страница",
  "psimisc.prev_page": "Предыдущая страница",
  "psimisc.config": "Настройки",
  "psimisc.not_your_programmer": "Похоже, кто-то другой использует это. Лучше не вмешиваться.",
  "psimisc.cant_use_programmer": "Вы не знаете, как этим пользоваться.",
  "psimisc.level_display": "Уровень %d",
  "psimisc.level_info": "Уровень %d - Очки уровня: %d",
  "psimisc.level_info_creative": "Уровень %d (Креатив) - Очки уровня: %d",
  "psimisc.locked": "Заблокировано",
  "psimisc.requirements": "Требования",
  "psimisc.learn": "Изучить",
  "psimisc.levelup": "Повысить уровень",
  "psimisc.wip": "Psi Beta | Не финальная версия!",
  "psimisc.bullet_type": "§bТип§7: %s",
  "psimisc.bullet_cost": "§bМножитель стоимости§7: %s%%",
  "psimisc.level_up_info1": "Вы завершили этот групповой туториал!",
  "psimisc.level_up_info2": "Снимите КАД и нажмите [%s], чтобы перейти к следующему!",
  "psimisc.import_from_clipboard": "Импорт из буфера обмена",
  "psimisc.export_to_clipboard": "Экспорт в буфер обмена",
  "psimisc.must_hold_shift": "(Требуется удерживать SHIFT)",
  "psimisc.malformed_json": "Ошибка импорта: некорректная строка: %s",
  "psimisc.missing_pieces": "Ошибка импорта: отсутствуют части заклинания для импорта.",
  "psimisc.load_prompt": "Загрузить?",
  "psimisc.spectator": "[Режим наблюдателя]",
  "psimisc.multiple_cads": "Другой КАД в вашем инвентаре мешает произнести заклинание. Можно иметь только один КАД одновременно.",
  "psimisc.provider_mod": "§7Аддон: §9%s",
  "psimisc.trick_pattern": "^Трюк: (.+)$",
  "psimisc.programmer_help": "§aСправка по программатору",
  "psimisc.ctrl_windows": "Ctrl",
  "psimisc.ctrl_mac": "Cmd",
  "psimisc.enter_commit": "Нажмите Enter для подтверждения",
  "psimisc.semicolon_line": "Используйте ; для перехода на новую строку",
  "psimisc.programmer_coords": "Выбрано: [%d, %d] | Курсор: [%d, %d]",
  "psimisc.programmer_coords_no_cursor": "Выбрано: [%d, %d]",
  "psimisc.name": "Имя",
  "psimisc.requiredaddons": "Требуемые аддоны: ",
  "psimisc.modnotfound": "Заклинание, которое вы пытались импортировать, не будет импортировано полностью, так как использует части из неустановленного мода %d",
  "psimisc.spellonnewerversion": "Это заклинание создано в более новой версии Psi; оно может работать некорректно.",
  "psi.container.socketable": "Сокеты",
  "psi.subtitle.bullet_create": "Заклинание сохранено",
  "psi.subtitle.cad_create": "КАД собран",
  "psi.subtitle.spell_cast": "КАД произносит заклинание",
  "psi.subtitle.loopcast": "КАД повторяет заклинание",
  "block.psi.cad_assembler": "Сборщик КАД",
  "block.psi.programmer": "Программатор заклинаний",
  "block.psi.psidust_block": "Блок псипыли",
  "block.psi.psimetal_block": "Псиметаллический блок",
  "block.psi.psigem_block": "Пси-камень",
  "block.psi.black_psimetal_plate": "Тёмная псиметаллическая пластина",
  "block.psi.lit_black_psimetal_plate": "Тёмная псиметаллическая светящаяся пластина",
  "block.psi.white_psimetal_plate": "Светлая псиметаллическая пластина",
  "block.psi.lit_white_psimetal_plate": "Светлая псиметаллическая светящаяся пластина",
  "block.psi.ebony_psimetal_block": "Блок эбенового псиметалла",
  "block.psi.ivory_psimetal_block": "Блок слонового псиметалла",
  "block.psi.conjured": "Созданный блок",
  "block.psi.psimetal_plate_white": "Светлая псиметаллическая пластина",
  "block.psi.psimetal_plate_white_light": "Светлая псиметаллическая светящаяся пластина",
  "item.psi.psidust": "Псипыль",
  "item.psi.psimetal": "Псиметаллический слиток",
  "item.psi.psigem": "Пси-камень",
  "item.psi.ebony_psimetal": "Эбеновый псиметаллический слиток",
  "item.psi.ivory_psimetal": "Слоновый псиметаллический слиток",
  "item.psi.ebony_substance": "Эбеновое вещество",
  "item.psi.ivory_substance": "Слоновое вещество",
  "item.psi.cad": "Устройство помощи в колдовстве (КАД)",
  "item.psi.cad_assembly_iron": "Железная сборка КАД",
  "item.psi.cad_assembly_gold": "Золотая сборка КАД",
  "item.psi.cad_assembly_psimetal": "Псиметаллическая сборка КАД",
  "item.psi.cad_assembly_ebony_psimetal": "Эбеновая псиметаллическая сборка КАД",
  "item.psi.cad_assembly_ivory_psimetal": "Слоновая псиметаллическая сборка КАД",
  "item.psi.cad_assembly_creative": "Креативная сборка КАД",
  "item.psi.cad_core_basic": "Базовое ядро КАД",
  "item.psi.cad_core_overclocked": "Разогнанное ядро КАД",
  "item.psi.cad_core_conductive": "Проводящее ядро КАД",
  "item.psi.cad_core_hyperclocked": "Гиперразогнанное ядро КАД",
  "item.psi.cad_core_radiative": "Радиационное ядро КАД",
  "item.psi.cad_socket_basic": "Базовый сокет КАД",
  "item.psi.cad_socket_signaling": "Сигнальный сокет КАД",
  "item.psi.cad_socket_large": "Большой сокет КАД",
  "item.psi.cad_socket_transmissive": "Передающий сокет КАД",
  "item.psi.cad_socket_huge": "Огромный сокет КАД",
  "item.psi.cad_battery_basic": "Базовая батарея КАД",
  "item.psi.cad_battery_extended": "Улучшенная батарея КАД",
  "item.psi.cad_battery_ultradense": "Сверхплотная батарея КАД",
  "item.psi.cad_colorizer_white": "Белый колоризатор КАД",
  "item.psi.cad_colorizer_orange": "Оранжевый колоризатор КАД",
  "item.psi.cad_colorizer_magenta": "Пурпурный колоризатор КАД",
  "item.psi.cad_colorizer_light_blue": "Голубой колоризатор КАД",
  "item.psi.cad_colorizer_yellow": "Жёлтый колоризатор КАД",
  "item.psi.cad_colorizer_lime": "Лаймовый колоризатор КАД",
  "item.psi.cad_colorizer_pink": "Розовый колоризатор КАД",
  "item.psi.cad_colorizer_gray": "Серый колоризатор КАД",
  "item.psi.cad_colorizer_light_gray": "Светло-серый колоризатор КАД",
  "item.psi.cad_colorizer_cyan": "Бирюзовый колоризатор КАД",
  "item.psi.cad_colorizer_purple": "Фиолетовый колоризатор КАД",
  "item.psi.cad_colorizer_blue": "Синий колоризатор КАД",
  "item.psi.cad_colorizer_brown": "Коричневый колоризатор КАД",
  "item.psi.cad_colorizer_green": "Зелёный колоризатор КАД",
  "item.psi.cad_colorizer_red": "Красный колоризатор КАД",
  "item.psi.cad_colorizer_black": "Чёрный колоризатор КАД",
  "item.psi.cad_colorizer_rainbow": "Колоризатор КАД полного спектра",
  "item.psi.cad_colorizer_psi": "Пси-колоризатор КАД",
  "item.psi.cad_colorizer_empty": "Разряженный колоризатор КАД",
  "item.psi.spell_bullet": "Пуля заклинания",
  "item.psi.spell_bullet_active": "Запрограммированная пуля заклинания",
  "item.psi.spell_bullet_projectile": "Пуля-заклинание: снаряд",
  "item.psi.spell_bullet_projectile_active": "Запрограммированная пуля-заклинание: снаряд",
  "item.psi.spell_bullet_loop": "Пуля-заклинание: повтор",
  "item.psi.spell_bullet_loop_active": "Запрограммированная пуля-заклинание: повтор",
  "item.psi.spell_bullet_circle": "Пуля-заклинание: круг",
  "item.psi.spell_bullet_circle_active": "Запрограммированная пуля-заклинание: круг",
  "item.psi.spell_bullet_grenade": "Пуля-заклинание: граната",
  "item.psi.spell_bullet_grenade_active": "Запрограммированная пуля-заклинание: граната",
  "item.psi.spell_bullet_charge": "Пуля-заклинание: заряд",
  "item.psi.spell_bullet_charge_active": "Запрограммированная пуля-заклинание: заряд",
  "item.psi.spell_bullet_mine": "Пуля-заклинание: мина",
  "item.psi.spell_bullet_mine_active": "Запрограммированная пуля-заклинание: мина",
  "item.psi.spell_drive": "Носитель заклинаний",
  "item.psi.psimetal_shovel": "Псиметаллическая лопата",
  "item.psi.psimetal_pickaxe": "Псиметаллическая кирка",
  "item.psi.psimetal_axe": "Псиметаллический топор",
  "item.psi.psimetal_sword": "Псиметаллический меч",
  "item.psi.psimetal_shovel.broken": "Сломанная псиметаллическая лопата",
  "item.psi.psimetal_pickaxe.broken": "Сломанная псиметаллическая кирка",
  "item.psi.psimetal_axe.broken": "Сломанный псиметаллический топор",
  "item.psi.psimetal_sword.broken": "Сломанный псиметаллический меч",
  "item.psi.detonator": "Детонатор заклинаний",
  "item.psi.psimetal_exosuit_helmet": "Псиметаллический экзошлем",
  "item.psi.psimetal_exosuit_chestplate": "Псиметаллический экзонагрудник",
  "item.psi.psimetal_exosuit_leggings": "Псиметаллические экзоштаны",
  "item.psi.psimetal_exosuit_boots": "Псиметаллические экзоботинки",
  "item.psi.psimetal_exosuit_helmet.broken": "Сломанный псиметаллический экзошлем",
  "item.psi.psimetal_exosuit_chestplate.broken": "Сломанный псиметаллический экзонагрудник",
  "item.psi.psimetal_exosuit_leggings.broken": "Сломанные псиметаллические экзоштаны",
  "item.psi.psimetal_exosuit_boots.broken": "Сломанные псиметаллические экзоботинки",
  "item.psi.exosuit_controller": "Контроллер экзокостюма",
  "item.psi.exosuit_sensor_light": "Датчик света экзокостюма",
  "item.psi.exosuit_sensor_water": "Датчик воды экзокостюма",
  "item.psi.exosuit_sensor_heat": "Датчик температуры экзокостюма",
  "item.psi.exosuit_sensor_stress": "Датчик перегрузки экзокостюма",
  "item.psi.exosuit_sensor_trigger": "Датчик детонации экзокостюма",
  "item.psi.vector_ruler": "Векторная линейка",
  "death.attack.psi-overload": "%s перегрузил(а) свою псионную энергию",
  "psi.component.assembly": "Сборка",
  "psi.component.core": "Ядро",
  "psi.component.socket": "Сокет",
  "psi.component.battery": "Батарея",
  "psi.component.dye": "Колоризатор",
  "psi.cadstat.efficiency": "Эффективность",
  "psi.cadstat.potency": "Мощность",
  "psi.cadstat.complexity": "Сложность",
  "psi.cadstat.projection": "Проекция",
  "psi.cadstat.bandwidth": "Пропускная способность",
  "psi.cadstat.sockets": "Сокеты",
  "psi.cadstat.saved_vectors": "Сохранённые векторы",
  "psi.cadstat.overflow": "Перегрузка",
  "psi.spellstat.complexity": "Сложность",
  "psi.spellstat.complexity.desc": "Количество действий",
  "psi.spellstat.potency": "Мощность",
  "psi.spellstat.potency.desc": "Сила заклинания",
  "psi.spellstat.cost": "Стоимость",
  "psi.spellstat.cost.desc": "Затраты пси при применении",
  "psi.spellstat.projection": "Проекция",
  "psi.spellstat.projection.desc": "Количество трюков",
  "psi.spellstat.bandwidth": "Пропускная способность",
  "psi.spellstat.bandwidth.desc": "Ширина или высота заклинания (наибольшая)",
  "psi.bullet_type_basic": "Обычная",
  "psi.bullet_type_projectile": "Снаряд",
  "psi.bullet_type_loopcast": "Повтор",
  "psi.bullet_type_circle": "Круг заклинания",
  "psi.bullet_type_grenade": "Граната",
  "psi.bullet_type_charge": "Заряд",
  "psi.bullet_type_mine": "Мина",
  "psi.event.none": "(Нет обработчика событий)",
  "psi.event.damage": "§bСобытие§7: Урон",
  "psi.event.tick": "§bСобытие§7: Тик",
  "psi.event.jump": "§bСобытие§7: Прыжок",
  "psi.event.low_light": "§bСобытие§7: Мало света",
  "psi.event.underwater": "§bСобытие§7: Под водой",
  "psi.event.on_fire": "§bСобытие§7: В огне",
  "psi.event.low_hp": "§bСобытие§7: Мало здоровья",
  "psi.event.spell_detonate": "§bСобытие§7: Детонация",
  "psi.programmer_reference0": "§bГорячие клавиши",
  "psi.programmer_reference1": "Удалить элемент: §bDelete",
  "psi.programmer_reference2": "Очистить сетку: §b%1$s-Shift-Delete",
  "psi.programmer_reference3": "Сдвинуть сетку: §b%1$s + стрелки",
  "psi.programmer_reference4": "Повернуть сетку: §b%1$s-Shift-Влево/Вправо",
  "psi.programmer_reference5": "Отразить сетку по вертикали: §b%1$s-Shift-Вниз",
  "psi.programmer_reference6": "Копировать/Вырезать/Вставить: §b%1$s-C/%1$s-X/%1$s-V",
  "psi.programmer_reference7": "Отменить/Повторить: §b%1$s-Z/%1$s-Y",
  "psi.programmer_reference8": "Открыть панель/Выбрать элемент: §bEnter",
  "psi.programmer_reference9": "Задать параметр: §bЦифровые клавиши + стрелки",
  "psi.programmer_reference10": "Задать комментарий: §b%1$s-D",
  "psi.programmer_reference11": "Сменить фокус: §bTab",
  "psi.programmer_reference12": "Показать подсказку: §bAlt",
  "psi.programmer_reference13": "Переместить курсор: §bСтрелки",
  "psi.programmer_reference14": "Загрузить на Imgur: §b%1$s-Shift-Alt-G",
  "psi.programmer_reference15": "Поделиться на Reddit: §b%1$s-Shift-Alt-R",
  "psi.programmer_reference16": "",
  "psi.programmer_reference17": "§bПоисковые запросы",
  "psi.programmer_reference18": "Принимает тип: §bin:(тип)",
  "psi.programmer_reference19": "Выдаёт тип: §bout:(тип)",
  "psi.programmer_reference20": "Имя начинается с: §b(имя)_",
  "psi.programmer_reference21": "Имя заканчивается на: §b_(имя)",
  "psi.programmer_reference22": "Из мода: §b@(имя)",
  "psi.spellpiece.selector_caster": "Селектор: Кастер",
  "psi.spellpiece.selector_caster.desc": "Выбирает игрока, произносящего заклинание",
  "psi.spellpiece.selector_focal_point": "Селектор: Фокус",
  "psi.spellpiece.selector_focal_point.desc": "Выбирает сущность-фокус этого заклинания",
  "psi.spellpiece.selector_nearby_items": "Селектор: Ближайшие предметы",
  "psi.spellpiece.selector_nearby_items.desc": "Выбирает предметы рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_living": "Селектор: Ближайшие существа",
  "psi.spellpiece.selector_nearby_living.desc": "Выбирает живых существ рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_enemies": "Селектор: Ближайшие враги",
  "psi.spellpiece.selector_nearby_enemies.desc": "Выбирает враждебных существ рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_animals": "Селектор: Ближайшие животные",
  "psi.spellpiece.selector_nearby_animals.desc": "Выбирает животных рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_projectiles": "Селектор: Ближайшие снаряды",
  "psi.spellpiece.selector_nearby_projectiles.desc": "Выбирает снаряды рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_smeltables": "Селектор: Ближайшие плавимые предметы",
  "psi.spellpiece.selector_nearby_smeltables.desc": "Выбирает плавимые предметы рядом с указанной позицией",
  "psi.spellpiece.selector_loopcast_index": "Селектор: Индекс повтора",
  "psi.spellpiece.selector_loopcast_index.desc": "Выбирает количество выполненных повторов заклинания",
  "psi.spellpiece.selector_block_broken": "Селектор: Сломанный блок",
  "psi.spellpiece.selector_block_broken.desc": "Выбирает сломанный блок (для инструментов)",
  "psi.spellpiece.selector_block_side_broken": "Селектор: Сторона сломанного блока",
  "psi.spellpiece.selector_block_side_broken.desc": "Выбирает сторону, с которой был сломан блок (для инструментов)",
  "psi.spellpiece.selector_attack_target": "Селектор: Цель атаки",
  "psi.spellpiece.selector_attack_target.desc": "Выбирает сущность, атакованную кастером",
  "psi.spellpiece.selector_sneak_status": "Селектор: Состояние приседа",
  "psi.spellpiece.selector_sneak_status.desc": "Показывает, приседает ли кастер (1 — нет, 0 — да)",
  "psi.spellpiece.selector_time": "Селектор: Время",
  "psi.spellpiece.selector_time.desc": "Выбирает внутреннее время КАД (в тиках)",
  "psi.spellpiece.selector_attacker": "Селектор: Нападающий",
  "psi.spellpiece.selector_attacker.desc": "Выбирает сущность, атаковавшую кастера",
  "psi.spellpiece.selector_damage_taken": "Селектор: Полученный урон",
  "psi.spellpiece.selector_damage_taken.desc": "Выбирает количество урона, полученного кастером",
  "psi.spellpiece.selector_ruler_vector": "Селектор: Вектор линейки",
  "psi.spellpiece.selector_ruler_vector.desc": "Выбирает вектор, заданный векторной линейкой",
  "psi.spellpiece.selector_item_presence": "Селектор: Наличие предмета",
  "psi.spellpiece.selector_item_presence.desc": "Выбирает размер стака предмета в инвентаре",
  "psi.spellpiece.selector_block_presence": "Селектор: Наличие блока",
  "psi.spellpiece.selector_block_presence.desc": "Проверяет наличие и твёрдость блока",
  "psi.spellpiece.selector_saved_vector": "Селектор: Сохранённый вектор",
  "psi.spellpiece.selector_saved_vector.desc": "Выбирает сохранённый вектор из памяти КАД",
  "psi.spellpiece.selector_eidos_changelog": "Селектор: Хронология Эйдоса",
  "psi.spellpiece.selector_eidos_changelog.desc": "Выбирает позицию из хронологии Эйдоса",
  "psi.spellpiece.selector_nearby_charges": "Селектор: Количество зарядов",
  "psi.spellpiece.selector_nearby_charges.desc": "Выбирает количество зарядов рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_players": "Селектор: Ближайшие игроки",
  "psi.spellpiece.selector_nearby_players.desc": "Выбирает игроков рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_vehicles": "Селектор: Ближайшие ездовые сущности",
  "psi.spellpiece.selector_nearby_vehicles.desc": "Выбирает ездовых существ рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_falling_blocks": "Селектор: Ближайшие падающие блоки",
  "psi.spellpiece.selector_nearby_falling_blocks.desc": "Выбирает падающие блоки рядом с указанной позицией",
  "psi.spellpiece.selector_nearby_glowing": "Селектор: Светящиеся сущности",
  "psi.spellpiece.selector_nearby_glowing.desc": "Выбирает светящихся или излучающих свет существ рядом с указанной позицией",
  "psi.spellpiece.selector_caster_energy": "Селектор: Энергия кастера",
  "psi.spellpiece.selector_caster_energy.desc": "Показывает уровень пси-энергии кастера",
  "psi.spellpiece.selector_caster_battery": "Селектор: Батарея кастера",
  "psi.spellpiece.selector_caster_battery.desc": "Показывает уровень заряда батареи КАД кастера",
  "psi.spellpiece.selector_sucession_counter": "Селектор: Счётчик успеха",
  "psi.spellpiece.selector_sucession_counter.desc": "Показывает, сколько раз заклинание было выполнено этим предметом брони",
  "psi.spellpiece.selector_is_elytra_flying": "Селектор: Элитры раскрыты",
  "psi.spellpiece.selector_is_elytra_flying.desc": "Возвращает 1, если у кастера раскрыты элитры",
  "psi.spellpiece.selector_transmission": "Селектор: Последняя передача",
  "psi.spellpiece.selector_transmission.desc": "Получает последнее сообщение, полученное этим КАД по указанному каналу",
  "psi.spellpiece.selector_item_count": "Селектор: Количество предметов",
  "psi.spellpiece.selector_item_count.desc": "Считает количество предметов в инвентаре, идентичных выбранному слоту",
  "psi.spellpiece.selector_tick_time": "Селектор: Время тика",
  "psi.spellpiece.selector_tick_time.desc": "Возвращает среднее время тика для измерения фокальной точки",
  "psi.spellpiece.selector_tps": "Селектор: TPS",
  "psi.spellpiece.selector_tps.desc": "Возвращает среднее количество тиков в секунду для измерения фокальной точки",
  "psi.spellpiece.operator_sum": "Оператор: Сумма",
  "psi.spellpiece.operator_sum.desc": "A + B (+ C)",
  "psi.spellpiece.operator_subtract": "Оператор: Вычитание",
  "psi.spellpiece.operator_subtract.desc": "A - B (- C)",
  "psi.spellpiece.operator_multiply": "Оператор: Умножение",
  "psi.spellpiece.operator_multiply.desc": "A * B (* C)",
  "psi.spellpiece.operator_divide": "Оператор: Деление",
  "psi.spellpiece.operator_divide.desc": "A / B",
  "psi.spellpiece.operator_absolute": "Оператор: Модуль",
  "psi.spellpiece.operator_absolute.desc": "Вычисляет абсолютное значение числа",
  "psi.spellpiece.operator_inverse": "Оператор: Обратное",
  "psi.spellpiece.operator_inverse.desc": "Вычисляет обратное число",
  "psi.spellpiece.operator_modulus": "Оператор: Остаток",
  "psi.spellpiece.operator_modulus.desc": "A % B (целое)",
  "psi.spellpiece.operator_integer_divide": "Оператор: Целочисленное деление",
  "psi.spellpiece.operator_integer_divide.desc": "A / B (целое)",
  "psi.spellpiece.operator_random": "Оператор: Случайное",
  "psi.spellpiece.operator_random.desc": "Случайное число между нижней границей (по умолчанию 0) и заданным числом (не включая его)",
  "psi.spellpiece.operator_sin": "Оператор: Синус",
  "psi.spellpiece.operator_sin.desc": "sin(A)",
  "psi.spellpiece.operator_cos": "Оператор: Косинус",
  "psi.spellpiece.operator_cos.desc": "cos(A)",
  "psi.spellpiece.operator_asin": "Оператор: Арксинус",
  "psi.spellpiece.operator_asin.desc": "asin(A)",
  "psi.spellpiece.operator_acos": "Оператор: Арккосинус",
  "psi.spellpiece.operator_acos.desc": "acos(A)",
  "psi.spellpiece.operator_max": "Оператор: Максимум",
  "psi.spellpiece.operator_max.desc": "Выбирает наибольшее из переданных значений",
  "psi.spellpiece.operator_min": "Оператор: Минимум",
  "psi.spellpiece.operator_min.desc": "Выбирает наименьшее из переданных значений",
  "psi.spellpiece.operator_square": "Оператор: Квадрат",
  "psi.spellpiece.operator_square.desc": "A^2",
  "psi.spellpiece.operator_cube": "Оператор: Куб",
  "psi.spellpiece.operator_cube.desc": "A^3",
  "psi.spellpiece.operator_power": "Оператор: Степень",
  "psi.spellpiece.operator_power.desc": "A^B",
  "psi.spellpiece.operator_square_root": "Оператор: Квадратный корень",
  "psi.spellpiece.operator_square_root.desc": "sqrt(A)",
  "psi.spellpiece.operator_log": "Оператор: Логарифм",
  "psi.spellpiece.operator_log.desc": "log(A) или logB(A)",
  "psi.spellpiece.operator_ceiling": "Оператор: Округление вверх",
  "psi.spellpiece.operator_ceiling.desc": "Округляет число вверх до целого",
  "psi.spellpiece.operator_floor": "Оператор: Округление вниз",
  "psi.spellpiece.operator_floor.desc": "Округляет число вниз до целого",
  "psi.spellpiece.operator_round": "Оператор: Округление",
  "psi.spellpiece.operator_round.desc": "Округляет число до целого",
  "psi.spellpiece.operator_entity_position": "Оператор: Позиция сущности",
  "psi.spellpiece.operator_entity_position.desc": "Получает позицию сущности",
  "psi.spellpiece.operator_entity_look": "Оператор: Вектор взгляда сущности",
  "psi.spellpiece.operator_entity_look.desc": "Получает вектор взгляда сущности",
  "psi.spellpiece.operator_entity_motion": "Оператор: Вектор движения сущности",
  "psi.spellpiece.operator_entity_motion.desc": "Получает вектор движения сущности",
  "psi.spellpiece.operator_entity_axial_look": "Оператор: Осевая ориентация взгляда",
  "psi.spellpiece.operator_entity_axial_look.desc": "Получает вектор взгляда сущности, выровненный по оси",
  "psi.spellpiece.operator_focused_entity": "Оператор: Сфокусированная сущность",
  "psi.spellpiece.operator_focused_entity.desc": "Получает сущность, на которую смотрит целевая сущность",
  "psi.spellpiece.operator_vector_raycast": "Оператор: Векторный рейкаст",
  "psi.spellpiece.operator_vector_raycast.desc": "Получает результат локального рейкаста (макс. 32)",
  "psi.spellpiece.operator_vector_raycast_axis": "Оператор: Осевая трассировка вектора",
  "psi.spellpiece.operator_vector_raycast_axis.desc": "Получает боковую ось локального рейкаста (макс. 32)",
  "psi.spellpiece.operator_vector_sum": "Оператор: Сумма векторов",
  "psi.spellpiece.operator_vector_sum.desc": "A + B (+ C)",
  "psi.spellpiece.operator_vector_subtract": "Оператор: Вычитание векторов",
  "psi.spellpiece.operator_vector_subtract.desc": "A - B (- C)",
  "psi.spellpiece.operator_vector_multiply": "Оператор: Умножение векторов",
  "psi.spellpiece.operator_vector_multiply.desc": "A * B",
  "psi.spellpiece.operator_vector_divide": "Оператор: Деление векторов",
  "psi.spellpiece.operator_vector_divide.desc": "A / B",
  "psi.spellpiece.operator_vector_cross_product": "Оператор: Векторное произведение",
  "psi.spellpiece.operator_vector_cross_product.desc": "A x B",
  "psi.spellpiece.operator_vector_normalize": "Оператор: Нормализация вектора",
  "psi.spellpiece.operator_vector_normalize.desc": "Нормализует вектор до длины 1",
  "psi.spellpiece.operator_vector_negate": "Оператор: Инверсия вектора",
  "psi.spellpiece.operator_vector_negate.desc": "Инвертирует вектор",
  "psi.spellpiece.operator_vector_magnitude": "Оператор: Модуль вектора",
  "psi.spellpiece.operator_vector_magnitude.desc": "Получает длину вектора",
  "psi.spellpiece.operator_vector_construct": "Оператор: Создание вектора",
  "psi.spellpiece.operator_vector_construct.desc": "Создаёт вектор из параметров XYZ",
  "psi.spellpiece.operator_vector_extract_x": "Оператор: Извлечь X",
  "psi.spellpiece.operator_vector_extract_x.desc": "Извлекает координату X из вектора",
  "psi.spellpiece.operator_vector_extract_y": "Оператор: Извлечь Y",
  "psi.spellpiece.operator_vector_extract_y.desc": "Извлекает координату Y из вектора",
  "psi.spellpiece.operator_vector_extract_z": "Оператор: Извлечь Z",
  "psi.spellpiece.operator_vector_extract_z.desc": "Извлекает координату Z из вектора",
  "psi.spellpiece.operator_vector_project": "Оператор: Проекция вектора",
  "psi.spellpiece.operator_vector_project.desc": "Проецирует вектор A на вектор B",
  "psi.spellpiece.operator_vector_dot_product": "Оператор: Скалярное произведение",
  "psi.spellpiece.operator_vector_dot_product.desc": "A . B",
  "psi.spellpiece.operator_closest_to_point": "Оператор: Ближайший к точке",
  "psi.spellpiece.operator_closest_to_point.desc": "Выбирает ближайшую сущность в списке к точке",
  "psi.spellpiece.operator_random_entity": "Оператор: Случайная сущность",
  "psi.spellpiece.operator_random_entity.desc": "Выбирает случайную сущность из списка",
  "psi.spellpiece.operator_list_add": "Оператор: Добавить в список",
  "psi.spellpiece.operator_list_add.desc": "Добавляет целевую сущность в список",
  "psi.spellpiece.operator_list_remove": "Оператор: Удалить из списка",
  "psi.spellpiece.operator_list_remove.desc": "Удаляет целевую сущность из списка",
  "psi.spellpiece.operator_planar_normal_vector": "Оператор: Планарный нормальный вектор",
  "psi.spellpiece.operator_planar_normal_vector.desc": "Создаёт перпендикулярный вектор к заданному осевому вектору. Эквивалентно повороту на 2π/3 вокруг <1,1,1>",
  "psi.spellpiece.operator_vector_rotate": "Оператор: Поворот вектора",
  "psi.spellpiece.operator_vector_rotate.desc": "Поворачивает вектор вокруг оси",
  "psi.spellpiece.operator_gamma_function": "Оператор: Гамма-функция",
  "psi.spellpiece.operator_gamma_function.desc": "Γ(x), эквивалентно (x-1)!",
  "psi.spellpiece.operator_list_size": "Оператор: Размер списка",
  "psi.spellpiece.operator_list_size.desc": "Получает количество сущностей в списке",
  "psi.spellpiece.operator_list_union": "Оператор: Объединение списков",
  "psi.spellpiece.operator_list_union.desc": "Создаёт список со всеми элементами из обоих списков",
  "psi.spellpiece.operator_list_intersection": "Оператор: Пересечение списков",
  "psi.spellpiece.operator_list_intersection.desc": "Создаёт список с элементами, которые есть в обоих списках",
  "psi.spellpiece.operator_list_exclusion": "Оператор: Исключение списков",
  "psi.spellpiece.operator_list_exclusion.desc": "Создаёт список с элементами, которые есть только в первом списке",
  "psi.spellpiece.operator_list_index": "Селектор: Элемент по индексу",
  "psi.spellpiece.operator_list_index.desc": "Выбирает сущность из списка по индексу",
  "psi.spellpiece.operator_root": "Оператор: Корень",
  "psi.spellpiece.operator_root.desc": "Извлекает n-й корень из числа",
  "psi.spellpiece.operator_extract_sign": "Оператор: Знак числа",
  "psi.spellpiece.operator_extract_sign.desc": "Извлекает знак из входного значения",
  "psi.spellpiece.operator_vector_extract_sign": "Оператор: Векторный знак",
  "psi.spellpiece.operator_vector_extract_sign.desc": "Возвращает новый вектор, где каждый компонент — знак соответствующего компонента исходного вектора",
  "psi.spellpiece.operator_closest_to_line": "Оператор: Ближайший к отрезку",
  "psi.spellpiece.operator_closest_to_line.desc": "Выбирает ближайшую сущность к заданному отрезку",
  "psi.spellpiece.operator_entity_health": "Оператор: Здоровье сущности",
  "psi.spellpiece.operator_entity_health.desc": "Получает текущий процент здоровья сущности",
  "psi.spellpiece.operator_vector_absolute": "Оператор: Абсолютное значение вектора",
  "psi.spellpiece.operator_vector_absolute.desc": "Берёт абсолютное значение каждого компонента вектора и возвращает новый вектор",
  "psi.spellpiece.operator_entity_raycast": "Оператор: Рейкаст по сущности",
  "psi.spellpiece.operator_entity_raycast.desc": "Выполняет рейкаст из заданной позиции и возвращает первую найденную сущность",
  "psi.spellpiece.operator_block_light": "Оператор: Освещённость блока",
  "psi.spellpiece.operator_block_light.desc": "Получает уровень освещённости блока",
  "psi.spellpiece.operator_block_hardness.desc": "Получает прочность блока",
  "psi.spellpiece.operator_block_hardness": "Оператор: Прочность блока",
  "psi.spellpiece.operator_block_comparator_strength": "Оператор: Сила компаратора блока",
  "psi.spellpiece.operator_block_comparator_strength.desc": "Получает силу сигнала компаратора блока",
  "psi.spellpiece.operator_block_side_solidity": "Оператор: Твёрдость стороны блока",
  "psi.spellpiece.operator_block_side_solidity.desc": "Проверяет, является ли сторона блока твёрдой",
  "psi.spellpiece.operator_block_mining_level": "Оператор: Уровень добычи блока",
  "psi.spellpiece.operator_block_mining_level.desc": "Получает уровень добычи блока по указанной позиции",
  "psi.spellpiece.operator_vector_piecewise_maximum": "Оператор: Покомпонентный максимум векторов",
  "psi.spellpiece.operator_vector_piecewise_maximum.desc": "Создаёт вектор из максимальных значений каждого компонента входных векторов",
  "psi.spellpiece.operator_vector_piecewise_minimum": "Оператор: Покомпонентный минимум векторов",
  "psi.spellpiece.operator_vector_piecewise_minimum.desc": "Создаёт вектор из минимальных значений каждого компонента входных векторов",
  "psi.spellpiece.operator_entity_height": "Оператор: Рост сущности",
  "psi.spellpiece.operator_entity_height.desc": "Получает высоту сущности",
  "psi.spellpiece.constant_number": "Константа: Число",
  "psi.spellpiece.constant_number.desc": "Выберите и введите значение",
  "psi.spellpiece.constant_pi": "Константа: Пи",
  "psi.spellpiece.constant_pi.desc": "Возвращает значение числа Пи",
  "psi.spellpiece.constant_e": "Константа: e",
  "psi.spellpiece.constant_e.desc": "Возвращает значение числа e",
  "psi.spellpiece.constant_tau": "Константа: Тау",
  "psi.spellpiece.constant_tau.desc": "Возвращает значение числа Тау",
  "psi.spellpiece.constant_wrapper": "Константа: Обёртка",
  "psi.spellpiece.constant_wrapper.desc": "Обёртка для константы для расчёта характеристик",
  "psi.spellpiece.connector": "Соединитель",
  "psi.spellpiece.connector.desc": "Соединяет различные элементы",
  "psi.spellpiece.cross_connector": "Крестовой соединитель",
  "psi.spellpiece.cross_connector.desc": "Может соединять два пути",
  "psi.spellpiece.error_suppressor": "Подавитель ошибок",
  "psi.spellpiece.error_suppressor.desc": "Подавляет ошибки, возникающие при выполнении заклинания",
  "psi.spellpiece.error_catch": "Ловец ошибок",
  "psi.spellpiece.error_catch.desc": "Заменяет ошибку другим значением",
  "psi.spellpiece.trick_debug": "Трюк: Отладка",
  "psi.spellpiece.trick_debug.desc": "Для тестирования. Выводит цель",
  "psi.spellpiece.trick_delay": "Трюк: Задержка",
  "psi.spellpiece.trick_delay.desc": "Задерживает выполнение заклинания на указанное количество тиков",
  "psi.spellpiece.trick_die": "Трюк: Остановить",
  "psi.spellpiece.trick_die.desc": "Останавливает выполнение заклинания, если цель находится в диапазоне (-1, 1) не включая границы",
  "psi.spellpiece.trick_evaluate": "Трюк: Вычислить",
  "psi.spellpiece.trick_evaluate.desc": "Вычисляет значение. Не делает с ним ничего",
  "psi.spellpiece.trick_add_motion": "Трюк: Добавить движение",
  "psi.spellpiece.trick_add_motion.desc": "Добавляет движение целевой сущности",
  "psi.spellpiece.trick_explode": "Трюк: Взорвать",
  "psi.spellpiece.trick_explode.desc": "Взрывает",
  "psi.spellpiece.trick_break_block": "Трюк: Сломать блок",
  "psi.spellpiece.trick_break_block.desc": "Ломает блок",
  "psi.spellpiece.trick_break_in_sequence": "Трюк: Сломать последовательность блоков",
  "psi.spellpiece.trick_break_in_sequence.desc": "Ломает последовательность блоков по направлению заданного вектора",
  "psi.spellpiece.trick_place_block": "Трюк: Поставить блок",
  "psi.spellpiece.trick_place_block.desc": "Ставит блок",
  "psi.spellpiece.trick_place_in_sequence": "Трюк: Поставить последовательность блоков",
  "psi.spellpiece.trick_place_in_sequence.desc": "Ставит последовательность блоков по направлению заданного вектора",
  "psi.spellpiece.trick_infusion": "Трюк: Инфузия",
  "psi.spellpiece.trick_infusion.desc": "Инфузирует золото в псиметалл, а также редстоун в псипыль",
  "psi.spellpiece.trick_blink": "Трюк: Рывок",
  "psi.spellpiece.trick_blink.desc": "Телепортирует вперёд",
  "psi.spellpiece.trick_mass_blink": "Трюк: Массовый рывок",
  "psi.spellpiece.trick_mass_blink.desc": "Телепортирует всех вперёд",
  "psi.spellpiece.trick_mass_add_motion": "Трюк: Массовое добавление движения",
  "psi.spellpiece.trick_mass_add_motion.desc": "Добавляет движение всем сущностям в целевом списке",
  "psi.spellpiece.trick_mass_exodus": "Трюк: Массовый перенос",
  "psi.spellpiece.trick_mass_exodus.desc": "Перемещает всех сущностей из целевого списка в указанную позицию",
  "psi.spellpiece.trick_move_block": "Трюк: Переместить блок",
  "psi.spellpiece.trick_move_block.desc": "Перемещает блок вдоль заданного осевого вектора единичной длины",
  "psi.spellpiece.trick_move_block_sequence": "Трюк: Переместить последовательность блоков",
  "psi.spellpiece.trick_move_block_sequence.desc": "Перемещает последовательность блоков вдоль заданного осевого вектора единичной длины",
  "psi.spellpiece.trick_collapse_block": "Трюк: Обрушить блок",
  "psi.spellpiece.trick_collapse_block.desc": "Обрушает блок, как если бы это был песок",
  "psi.spellpiece.trick_smite": "Трюк: Гром",
  "psi.spellpiece.trick_smite.desc": "Вызывает молнию в указанной точке",
  "psi.spellpiece.trick_blaze": "Трюк: Огонь",
  "psi.spellpiece.trick_blaze.desc": "Создаёт огонь в указанной точке",
  "psi.spellpiece.trick_torrent": "Трюк: Поток",
  "psi.spellpiece.trick_torrent.desc": "Создаёт воду в указанной точке",
  "psi.spellpiece.trick_overgrow": "Трюк: Удобрить",
  "psi.spellpiece.trick_overgrow.desc": "Удобряет блок в указанной точке",
  "psi.spellpiece.trick_greater_infusion": "Трюк: Великая инфузия",
  "psi.spellpiece.trick_greater_infusion.desc": "Инфузирует алмазы в псигемы, а также инфузирует редстоун и золото",
  "psi.spellpiece.trick_ebony_ivory": "Трюк: Эбен и Слоновая кость",
  "psi.spellpiece.trick_ebony_ivory.desc": "Инфузирует уголь и кварц в Краю, а также инфузирует редстоун, золото и алмазы",
  "psi.spellpiece.trick_speed": "Трюк: Скорость",
  "psi.spellpiece.trick_speed.desc": "Накладывает эффект Скорости",
  "psi.spellpiece.trick_haste": "Трюк: Ускорение",
  "psi.spellpiece.trick_haste.desc": "Накладывает эффект Ускорения",
  "psi.spellpiece.trick_strength": "Трюк: Сила",
  "psi.spellpiece.trick_strength.desc": "Накладывает эффект Силы",
  "psi.spellpiece.trick_jump_boost": "Трюк: Прыгучесть",
  "psi.spellpiece.trick_jump_boost.desc": "Накладывает эффект Прыгучести",
  "psi.spellpiece.trick_water_breathing": "Трюк: Подводное дыхание",
  "psi.spellpiece.trick_water_breathing.desc": "Накладывает эффект Подводного дыхания",
  "psi.spellpiece.trick_fire_resistance": "Трюк: Огнестойкость",
  "psi.spellpiece.trick_fire_resistance.desc": "Накладывает эффект Огнестойкости",
  "psi.spellpiece.trick_invisibility": "Трюк: Невидимость",
  "psi.spellpiece.trick_invisibility.desc": "Накладывает эффект Невидимости",
  "psi.spellpiece.trick_regeneration": "Трюк: Регенерация",
  "psi.spellpiece.trick_regeneration.desc": "Накладывает эффект Регенерации",
  "psi.spellpiece.trick_resistance": "Трюк: Сопротивление",
  "psi.spellpiece.trick_resistance.desc": "Накладывает эффект Сопротивления",
  "psi.spellpiece.trick_slowness": "Трюк: Медлительность",
  "psi.spellpiece.trick_slowness.desc": "Накладывает эффект Медлительности",
  "psi.spellpiece.trick_weakness": "Трюк: Слабость",
  "psi.spellpiece.trick_weakness.desc": "Накладывает эффект Слабости",
  "psi.spellpiece.trick_wither": "Трюк: Иссушение",
  "psi.spellpiece.trick_wither.desc": "Накладывает эффект Иссушения",
  "psi.spellpiece.trick_ignite": "Трюк: Поджечь",
  "psi.spellpiece.trick_ignite.desc": "Поджигает сущность",
  "psi.spellpiece.trick_eidos_anchor": "Трюк: Якорь Эйдоса",
  "psi.spellpiece.trick_eidos_anchor.desc": "Возвращает заклинателя в текущую позицию после указанного времени",
  "psi.spellpiece.trick_eidos_reversal": "Трюк: Откат Эйдоса",
  "psi.spellpiece.trick_eidos_reversal.desc": "Возвращает заклинателя назад во времени",
  "psi.spellpiece.trick_smelt_item": "Трюк: Переплавить предмет",
  "psi.spellpiece.trick_smelt_item.desc": "Переплавляет предмет-сущность в его переплавленную версию",
  "psi.spellpiece.trick_smelt_block": "Трюк: Переплавить блок",
  "psi.spellpiece.trick_smelt_block.desc": "Переплавляет блок в его переплавленную версию",
  "psi.spellpiece.trick_conjure_block": "Трюк: Создать блок",
  "psi.spellpiece.trick_conjure_block.desc": "Создаёт хрупкий блок",
  "psi.spellpiece.trick_conjure_light": "Трюк: Создать свет",
  "psi.spellpiece.trick_conjure_light.desc": "Создаёт хрупкий источник света",
  "psi.spellpiece.trick_conjure_block_sequence": "Трюк: Создать последовательность блоков",
  "psi.spellpiece.trick_conjure_block_sequence.desc": "Создаёт последовательность хрупких блоков по заданному вектору",
  "psi.spellpiece.trick_switch_target_slot": "Трюк: Сменить слот фокуса (горячая панель)",
  "psi.spellpiece.trick_switch_target_slot.desc": "Меняет выбранный слот этого заклинания на любой в горячей панели",
  "psi.spellpiece.trick_save_vector": "Трюк: Сохранить вектор",
  "psi.spellpiece.trick_save_vector.desc": "Сохраняет вектор в памяти CAD",
  "psi.spellpiece.trick_play_sound": "Трюк: Проиграть ноту",
  "psi.spellpiece.trick_play_sound.desc": "Воспроизводит звук нотного блока",
  "psi.spellpiece.trick_break_loop": "Трюк: Прервать цикл",
  "psi.spellpiece.trick_break_loop.desc": "Останавливает цикл, если цель находится в диапазоне (-1, 1) не включая границы",
  "psi.spellpiece.trick_detonate": "Трюк: Детонация",
  "psi.spellpiece.trick_detonate.desc": "Взрывает все заряды заклинаний в радиусе 32 блоков от фокальной точки",
  "psi.spellpiece.trick_till": "Трюк: Вспахать",
  "psi.spellpiece.trick_till.desc": "Вспахивает блок",
  "psi.spellpiece.trick_till_sequence": "Трюк: Вспахать последовательность",
  "psi.spellpiece.trick_till_sequence.desc": "Вспахивает последовательность блоков по заданному вектору",
  "psi.spellpiece.trick_broadcast": "Трюк: Передать сигнал",
  "psi.spellpiece.trick_broadcast.desc": "Передаёт число в заданном канале ближайшим CAD",
  "psi.spellpiece.trick_change_slot": "Трюк: Сменить слот (инвентарь)",
  "psi.spellpiece.trick_change_slot.desc": "Меняет рабочий слот на один из 36 слотов инвентаря",
  "psi.spellpiece.trick_smelt_block_sequence": "Трюк: Переплавить последовательность блоков",
  "psi.spellpiece.trick_smelt_block_sequence.desc": "Переплавляет блоки в заданном направлении, начиная с указанной позиции",
  "psi.spellpiece.trick_collapse_block_sequence": "Трюк: Обрушить последовательность блоков",
  "psi.spellpiece.trick_collapse_block_sequence.desc": "Обрушает последовательность блоков, как если бы это был песок",
  "psi.spellpiece.trick_debug_spamless": "Трюк: Канальная отладка",
  "psi.spellpiece.trick_debug_spamless.desc": "Выводит цель, заменяя предыдущий вывод с тем же номером",
  "psi.spellpiece.trick_night_vision": "Трюк: Ночное зрение",
  "psi.spellpiece.trick_night_vision.desc": "Накладывает эффект Ночного зрения",
  "psi.spellpiece.trick_particle_trail": "Трюк: След из частиц",
  "psi.spellpiece.trick_particle_trail.desc": "Создаёт след из частиц от позиции вдоль луча",
  "psi.spellpiece.trick_spin_chamber": "Трюк: Вращение патрона",
  "psi.spellpiece.trick_spin_chamber.desc": "Выбирает следующий или предыдущий патрон в зависимости от знака входного значения",
  "psi.spellpiece.trick_russian_roulette": "Трюк: Русская рулетка",
  "psi.spellpiece.trick_russian_roulette.desc": "Выбирает случайный патрон",
  "psi.spellparam.target": "Цель",
  "psi.spellparam.number": "Число",
  "psi.spellparam.root": "Корень",
  "psi.spellparam.list1": "Список A",
  "psi.spellparam.list2": "Список B",
  "psi.spellparam.list": "Список",
  "psi.spellparam.from1": "От",
  "psi.spellparam.from2": "От",
  "psi.spellparam.to1": "До",
  "psi.spellparam.to2": "До",
  "psi.spellparam.toggle": "Переключатель",
  "psi.spellparam.number1": "Число A",
  "psi.spellparam.number2": "Число B",
  "psi.spellparam.number3": "Число C",
  "psi.spellparam.number4": "Число D",
  "psi.spellparam.vector1": "Вектор A",
  "psi.spellparam.vector2": "Вектор B",
  "psi.spellparam.vector3": "Вектор C",
  "psi.spellparam.vector4": "Вектор D",
  "psi.spellparam.position": "Позиция",
  "psi.spellparam.ray": "Луч",
  "psi.spellparam.max": "Максимум",
  "psi.spellparam.min": "Минимум",
  "psi.spellparam.power": "Мощность",
  "psi.spellparam.direction": "Направление",
  "psi.spellparam.speed": "Скорость",
  "psi.spellparam.x": "X",
  "psi.spellparam.y": "Y",
  "psi.spellparam.z": "Z",
  "psi.spellparam.radius": "Радиус",
  "psi.spellparam.distance": "Дистанция",
  "psi.spellparam.time": "Время",
  "psi.spellparam.constant": "Константа",
  "psi.spellparam.shift": "Смещение",
  "psi.spellparam.slot": "Слот",
  "psi.spellparam.base": "Основание",
  "psi.spellparam.vector": "Вектор",
  "psi.spellparam.axis": "Ось",
  "psi.spellparam.angle": "Угол",
  "psi.spellparam.channel": "Канал",
  "psi.spellparam.instrument": "Инструмент",
  "psi.spellparam.volume": "Громкость",
  "psi.spellparam.pitch": "Высота тона",
  "psi.spellparam.mask": "Шаблон",
  "psi.spellparam.ray_end": "Конец луча",
  "psi.spellparam.ray_start": "Начало луча",
  "psi.spellparam.fallback": "Запасной вариант",
  "psi.datatype.void": "Нет",
  "psi.datatype.any": "Любой",
  "psi.datatype.double": "Число",
  "psi.datatype.integer": "Число",
  "psi.datatype.number": "Число",
  "psi.datatype.vector3": "Вектор",
  "psi.datatype.entity": "Сущность",
  "psi.datatype.living_entity": "Сущность (Живая)",
  "psi.datatype.living_entity_base": "Сущность (Живая)",
  "psi.datatype.player_entity": "Сущность (Игрок, Живая)",
  "psi.datatype.entity_list_wrapper": "Список сущностей",
  "psi.spellerror.nan": "ОШИБКА: Не число",
  "psi.spellerror.nospell": "Нет заклинания для компиляции",
  "psi.spellerror.invalid_base": "ОШИБКА: Основание системы счисления не может быть меньше 2",
  "psi.spellerror.nthroot": "ОШИБКА: Корни с чётным показателем не принимают отрицательные числа",
  "psi.spellerror.noname": "Заклинание без имени",
  "psi.spellerror.notricks": "В заклинании нет трюков",
  "psi.spellerror.unsetparam": "Не задан обязательный параметр",
  "psi.spellerror.nullparam": "Параметр указывает на пустую ячейку",
  "psi.spellerror.invalidparam": "Параметр указывает на некорректный элемент",
  "psi.spellerror.samesideparams": "Два или более параметра используют одну сторону",
  "psi.spellerror.loop": "Невозможно разрешить из-за бесконечного цикла",
  "psi.spellerror.nonpositivevalue": "Параметр-число должен быть положительным",
  "psi.spellerror.noninteger": "Параметр-число должен быть целым",
  "psi.spellerror.nonpositiveinteger": "Параметр-число должен быть положительным целым",
  "psi.spellerror.statoverflow": "Характеристики заклинания превышают максимально возможное значение",
  "psi.spellerror.exclusiveparams": "Установлены два взаимоисключающих параметра",
  "psi.spellerror.position": "Ошибка в позиции: [%d, %d].",
  "psi.spellerror.dividebyzero": "ОШИБКА: Деление на ноль.",
  "psi.spellerror.nulltarget": "ОШИБКА: Целевая сущность заклинания не существует.",
  "psi.spellerror.nullvector": "ОШИБКА: Операционный вектор заклинания не существует или равен null.",
  "psi.spellerror.outsideradius": "ОШИБКА: Цель заклинания вне максимального радиуса 32 блока.",
  "psi.spellerror.outsidetrigdomain": "ОШИБКА: Значение вне области определения обратной тригонометрической функции.",
  "psi.spellerror.bossimmune": "ОШИБКА: Попытка применить заклинание к неуязвимой сущности или боссу.",
  "psi.spellerror.nocad": "ОШИБКА: У заклинателя нет CAD.",
  "psi.spellerror.memoryoutofbounds": "ОШИБКА: Доступ к памяти вне границ.",
  "psi.spellerror.lockedmemory": "ОШИБКА: Ячейка памяти заблокирована.",
  "psi.spellerror.immunetarget": "ОШИБКА: Целевая сущность неуязвима или является боссом.",
  "psi.spellerror.negativenumber": "ОШИБКА: Отрицательное число в элементе, где это недопустимо.",
  "psi.spellerror.nonaxial": "ОШИБКА: Вектор не может быть неосевым",
  "psi.spellerror.volume": "ОШИБКА: Громкость должна быть в диапазоне [0,1]",
  "psi.spellerror.instruments": "ОШИБКА: Значение инструмента должно быть в диапазоне [0,15]",
  "psi.spellerror.pitch": "ОШИБКА: Высота тона должна быть в диапазоне [0,24]",
  "psi.spellerror.out_of_bounds": "ОШИБКА: Указанный индекс вне диапазона списка",
  "psi.levelskip": "Psi обнаружил сохранённые данные из предыдущего мира.<br>Хотите их загрузить?<br><br>Если вы выберете загрузку, вы сразу перейдёте на уровень %d. В противном случае это сообщение больше не появится в этой сессии.",
  "psi.spellerror.armor": "ОШИБКА: Селектор работает только при касте с брони",
  "psi.spellerror.no_message": "ОШИБКА: CAD не получил переданное сообщение",
  "psi.spellerror.comparator": "ОШИБКА: Компараторы могут измерять только по 4 основным направлениям",
  "psi.spellerror.cad_casting_only": "ОШИБКА: Этот трюк должен быть применён с помощью CAD",
  "command.psi.learn.usage": "/psi-learn <группа> [игрок]",
  "command.psi.learn.success": "Успешно обучено %s %s",
  "command.psi.learn.success.all": "Успешно обучено %s всему Psi",
  "command.psi.learn.should_not": "%s уже знает %s",
  "command.psi.learn.players": "%s не является игроком, только игроки могут изучать Psi",
  "command.psi.learn.console": "Консоль не может изучать Psi. Укажите игрока! /psi-learn <группа> [игрок]",
  "command.psi.learn.not_a_group": "'%s' не является корректной группой Psi",
  "command.psi.learn.unknown": "У этого игрока нет данных Psi. Сообщите об этом автору мода.",
  "command.psi.unlearn.usage": "/psi-unlearn <группа> [игрок]",
  "command.psi.unlearn.success": "Успешно заставили %s забыть %s",
  "command.psi.unlearn.success.all": "Успешно заставили %s забыть всё из Psi",
  "command.psi.unlearn.should_not": "%s не знает %s",
  "command.psi.unlearn.players": "%s не является игроком, только игроки могут забывать Psi",
  "command.psi.unlearn.console": "Консоль не может изучать Psi. Укажите игрока! /psi-unlearn <группа> [игрок]",
  "command.psi.unlearn.not_a_group": "'%s' не является корректной группой Psi",
  "command.psi.unlearn.unknown": "У этого игрока нет данных Psi. Сообщите об этом автору мода.",
  "psi.tutorial1": "Урок 1",
  "psi.tutorial2": "Урок 2",
  "psi.tutorial3": "Урок 3",
  "psi.tutorial4": "Урок 4",
  "psi.numbers_intro": "Числа 101",
  "psi.vectors_intro": "Векторы 101",
  "psi.entities_intro": "Сущности 101",
  "psi.projectiles": "Альтернативный каст",
  "psi.block_works": "Блоковые механизмы",
  "psi.infusion": "Инфузия псиметалла",
  "psi.movement": "Продвинутое перемещение",
  "psi.loopcasting": "Циклический каст",
  "psi.block_movement": "Перемещение блоков",
  "psi.elemental_arts": "Стихийные искусства",
  "psi.greater_infusion": "Великая инфузия",
  "psi.tool_casting": "Каст с инструментов",
  "psi.positive_effects": "Положительные эффекты",
  "psi.negative_effects": "Отрицательные эффекты",
  "psi.exosuit_casting": "Каст с экзокостюма",
  "psi.trignometry": "Тригонометрия",
  "psi.smeltery": "Плавильня",
  "psi.flow_control": "Управление потоком",
  "psi.block_conjuration": "Создание блоков",
  "psi.eidos_ceversal": "Манипуляция Эйдосом",
  "psi.detection_dynamics": "Детекция и фокус",
  "psi.memory_management": "Управление памятью",
  "psi.secondary_operators": "Вторичные операторы",
  "psi.misc_tricks": "Разные трюки",
  "psi.list_operations": "Операции со списками",
  "psi.fake_level_psidust": "Инфузия псипыли",
  "jei.psi.category.trick": "Инфузия заклинания",
  "jei.psi.spell_copy": "Копировать заклинание",
  "psi.subtitle.book": "Вдалеке играет Sweet Alexum",
  "_comment": "Книжные достижения",
  "advancement.psi:iron_cad_pickup": "Железный КАД — моё тело",
  "advancement.psi:iron_cad_pickup.desc": "Создайте железную сборку КАД",
  "advancement.psi:gold_assembly_pickup": "Дороже золота",
  "advancement.psi:gold_assembly_pickup.desc": "Создайте золотую сборку КАД",
  "advancement.psi:psimetal_assembly_pickup": "Псиметаллическое превосходство",
  "advancement.psi:psimetal_assembly_pickup.desc": "Создайте псиметаллическую сборку КАД",
  "advancement.psi:ebony_assembly_pickup": "Мощь и надёжность",
  "advancement.psi:ebony_assembly_pickup.desc": "Создайте эбеновую псиметаллическую сборку КАД",
  "advancement.psi:ivory_assembly_pickup": "Гладкость и изящество",
  "advancement.psi:ivory_assembly_pickup.desc": "Создайте слоновую псиметаллическую сборку КАД",
  "advancement.psi:psidust": "...Невозможно скрафтить?",
  "advancement.psi:psidust.desc": "Создайте свою первую псипыль",
  "advancement.psi:psimetal_pickup": "Сплав восхищения",
  "advancement.psi:psimetal_pickup.desc": "Инфузируйте свой первый псиметаллический слиток",
  "advancement.psi:psigem_pickup": "Кристалл разума",
  "advancement.psi:psigem_pickup.desc": "Инфузируйте свой первый псикристалл из алмаза",
  "advancement.psi:ebony_pickup": "Высокая ценность",
  "advancement.psi:ebony_pickup.desc": "Инфузируйте своё первое эбеновое вещество из угля",
  "advancement.psi:ivory_pickup": "Иная ценность",
  "advancement.psi:ivory_pickup.desc": "Инфузируйте своё первое слоновое вещество из кварца",
  "advancement.psi:encyclopaedia_psionica": "Записать на планшет",
  "advancement.psi:encyclopaedia_psionica.desc": "Создайте Энциклопедию Псионики — ваш путеводитель по Psi",
  "psi.book.subtitle": "Основы заклинаний",
  "psi.book.name": "Энциклопедия Псионики",
  "psi.book.landing_text": "$(thing)Psi$(0) — это мод о создании $(thing)заклинаний$(0), возможности которых ограничены только твоей изобретательностью. В этой книге собраны все знания, необходимые для того, чтобы стать настоящим магом-кастером.$(p)(Эта книга находится в разработке. Старые обучающие записи можно найти в разделе \"Устаревшие записи\".)",
  "psi.book.category.basics": "Основы",
  "psi.book.category.basics.desc": "Если ты только начал знакомство с $(thing)Psi$(0), советую внимательно прочитать каждую запись в этом разделе. В них содержится важная информация.",
  "psi.book.entry.introduction": "Введение",
  "psi.book.page.introduction.0": "Добро пожаловать в $(thing)Psi$(0) — лучший маготехнический мод с программируемыми заклинаниями во вселенной!$(p)$(thing)Psi$(0) — это мод (вдохновлённый сериалом Mahouka) о создании и применении $(thing)заклинаний$(0) для управления окружающим миром.$(p)Чтобы начать путь мага-кастера, тебе понадобится немного $(l:components/psidust)$(item)псипыли$(0)$(/l) — однако просто так скрафтить её не получится.",
  "psi.book.page.introduction.1": "Вместо этого начни с крафта $(l:basics/cad_assembler)$(item)Сборщика КАД$(0)$(/l) и $(l:components/assembly#iron)$(item)железной сборки КАД$(0)$(/l).$(p)Поставь $(l:basics/cad_assembler)$(item)Сборщик КАД$(0)$(/l), открой его и вставь $(l:components/assembly#iron)$(item)железную сборку КАД$(0)$(/l), чтобы собрать самый простой $(thing)Устройство помощника каста$(0) ($(thing)КАД$(0) — сокращённо).$(p)Далее брось немного $(item)Редстоуновой пыли$(0) на землю, наведи свой новый $(thing)КАД$(0) на пыль и используй ($(k:use)), чтобы получить $(l:components/psidust)$(item)псипыль$(0)$(/l).",
  "psi.book.entry.cadAssembler": "Сборщик КАД",
  "psi.book.page.cadAssembler.0": "$(item)Сборщик КАД$(0) — это сердце $(thing)Psi$(0), выполняющее две важные функции.$(p)Во-первых, он собирает $(thing)КАД$(0) из его компонентов. Во-вторых, он загружает $(o)непустые$() $(l:items/spell_bullet)$(thing)заклинательные пули$(0)$(/l) в $(thing)КАДы$(0) (а также в другие предметы, которые могут содержать $(l:items/spell_bullet)$(thing)пули$(0)$(/l), например, $(l:items/tools)$(thing)псиметаллические инструменты$(0)$(/l)).",
  "psi.book.page.cadAssembler.1": "Мастерская по сборке КАД",
  "psi.book.page.cadAssembler.2": "Самый простой КАД, способный к касту",
  "psi.book.page.cadAssembler.3": "$(thing)КАД$(0) собирается максимум из пяти компонентов; самый простой $(thing)КАД$(0) использует только один компонент — $(l:components/assembly)$(thing)сборку$(0)$(/l), но он подходит только для создания $(l:components/psidust)$(item)псипыли$(0)$(/l).$(p)Чтобы $(thing)КАД$(0) мог кастовать $(thing)заклинания$(0), ему также нужны $(l:components/core)$(thing)ядро$(0)$(/l) и $(l:components/socket)$(thing)разъём$(0)$(/l).$(p)Добавление $(l:components/battery)$(thing)батареи$(0)$(/l) немного увеличивает максимальный запас $(thing)пси-энергии$(0), а $(l:components/colorizer)$(thing)колорайзер$(0) меняет цвет кастуемых $(thing)заклинаний$(0) (это только визуальный эффект).",
  "psi.book.page.cadAssembler.4": "Когда $(thing)КАД$(0) собран, его можно поместить в левый слот $(item)Сборщика КАД$(0).$(p)После этого откроются нижние ячейки; в них можно положить $(l:items/spell_bullet)$(thing)заклинательные пули$(0)$(/l), чтобы загрузить их в $(thing)КАД$(0).$(p)Когда $(l:items/spell_bullet)$(thing)пули$(0)$(/l) загружены, $(thing)КАД$(0) можно забрать и держать в руке. Если зажать $(thing)основную клавишу Psi$(0) ($(k:psimisc.keybind)), на HUD появятся $(thing)заклинания$(0) из $(l:items/spell_bullet)$(thing)пуль$(0)$(/l), готовые к выбору и касту.",
  "psi.book.page.cadAssembler.5": "КАД с одной загруженной пулей",
  "psi.book.entry.spellProgrammer": "Программатор заклинаний",
  "psi.book.page.spellProgrammer.0": "Если $(l:basics/cad_assembler)$(item)Сборщик КАД$(0)$(/l) — это сердце $(thing)Psi$(0), то $(item)Программатор заклинаний$(0) — его мозг. Здесь пишутся и компилируются $(thing)заклинания$(0), которые затем копируются в $(l:items/spell_bullet)$(thing)заклинательные пули$(0)$(/l) для каста.$(p)При установке и открытии ($(k:use)) появляется большая сетка 9x9; смотри $(l:basics/tutorial_1)обучающие записи$(/l) для подробной информации о работе с этой сеткой.",
  "psi.book.page.spellProgrammer.1": "Час кода",
  "psi.book.entry.vectorPrimer": "Введение в векторы",
  "psi.book.page.vectorPrimer.0": "$(thing)Psi$(0) активно использует понятие вектора. Поэтому, если ты не имеешь ни малейшего представления, что такое вектор, настоятельно рекомендую посмотреть видео ниже.$(p)Объяснение на следующих страницах $(l)упрощено$() для новичков. Не воспринимай его как абсолютную истину.",
  "psi.book.page.vectorPrimer.1": "В мире $(thing)Psi$(0) (и, конечно, в мире $(thing)Minecraft$(0)) все векторы трёхмерные. По сути, это просто списки из трёх координат: $(o)x$(), $(o)y$(), $(o)z$().$(p)Координата $(o)x$() означает восток при положительном значении и запад при отрицательном, $(o)y$() — вверх и вниз, а $(o)z$() — юг и север.$(p)Если это пока не понятно, открой отладочный экран (F3) и побегай, обращая внимание на строку \"XYZ:\".$(br)Поймёшь.",
  "psi.book.page.vectorPrimer.2": "Этот список из трёх чисел на отладочном экране — на самом деле первый тип вектора, с которым ты столкнёшься: $(l)вектор позиции$().$(p)Вектор позиции просто указывает местоположение блока, сущности или даже пустого пространства в мире. Это одна фиксированная точка, представленная списком [$(o)x$(), $(o)y$(), $(o)z$()].$(p)Однако не все векторы обозначают позиции — и важно помнить, что $(l)любые три числа в списке образуют вектор$().",
  "psi.book.page.vectorPrimer.3": "Интересный факт о векторах: их очень легко складывать.$(p)Например, у нас есть блок травы в какой-то точке, которую мы обозначим как [$(o)x$(), $(o)y$(), $(o)z$()].$(p)Если мы хотим прибавить к этому вектору другой (например, [0, 1, 0]), нужно просто сложить соответствующие числа:$(br)сумма векторов будет [$(o)x$()+0, $(o)y$()+1, $(o)z$()+0], или просто [$(o)x$(), $(o)y$()+1, $(o)z$()].",
  "psi.book.page.vectorPrimer.4": "Поскольку компонент $(o)y$() нашего нового вектора увеличился на один, а положительное $(o)y$() — это вверх, этот новый вектор просто указывает на блок над нашим блоком травы.$(p)Вектор [0, 1, 0] обозначает $(o)разницу$() в позиции между исходным и новым вектором, и это второй тип вектора: $(l)вектор смещения$().",
  "psi.book.page.vectorPrimer.5": "Векторами смещения маги чаще всего и оперируют, поэтому их понимание — ключ к успеху.$(p)Обычно маг начинает с одного вектора позиции, а затем добавляет, вычитает или иным образом комбинирует векторы смещения с этим вектором позиции, чтобы нацелиться на нужную точку в мире.",
  "psi.book.page.vectorPrimer.6": "Важно понимать, что понятия \"вектор смещения\" и \"вектор позиции\" — концептуальны; эти термины уникальны для этой энциклопедии.$(p)Ещё раз: все векторы в $(thing)Psi$(0) — это просто списки из трёх чисел, и ничто не мешает тебе игнорировать это различие.$(p)На самом деле, в некоторых случаях за пределами этой книги различие даже не имеет $(o)смысла$().",
  "psi.book.page.vectorPrimer.7": "Однако $(o)внутри$() $(thing)Psi$(0), если перепутать векторы смещения и позиции, можно получить весьма непредсказуемые результаты.$(p)Два правила на заметку:$(p)$(li)Большинство $(thing)Операторов$(0), принимающих векторы, должны использовать не более одного вектора позиции;$(p)$(li)Большинство $(thing)Трюков$(0), воздействующих на блоки, должны принимать $(o)только$() вектор позиции.$(p)Это общие правила; некоторые $(thing)Части заклинаний$(0) работают иначе.",
  "psi.book.page.vectorPrimer.8": "Векторы смещения имеют $(l)модули$().$(p)Можно думать о модуле вектора смещения как о его \"длине\" — расстоянии между позицией в мире и этой же позицией после прибавления вектора смещения.$(p)Например, наш предыдущий вектор смещения [0, 1, 0] просто сдвигает позицию на один блок вверх, значит его длина, а значит и модуль, равен 1.",
  "psi.book.page.vectorPrimer.9": "Поскольку расстояние всегда положительно, модули векторов тоже всегда положительны.$(p)Рассмотрим вектор [0, -3, 0]: он указывает вниз на три блока — но общее пройденное расстояние всё равно три блока, и направление \"вниз\" не важно.$(p)Значит, модуль этого вектора — $(l)положительный$() 3.",
  "psi.book.page.vectorPrimer.10": "Модули сложнее вычислять для векторов, в которых $(o)не$() почти все компоненты равны нулю.$(p)Однако, поскольку направления $(o)x$(), $(o)y$() и $(o)z$() перпендикулярны, можно использовать известную теорему Пифагора для вычисления модуля любого вектора.$(p)В частности, модуль вектора [$(o)p$(), $(o)q$(), $(o)r$()] равен числу \u221a($(o)p$()\u00b2+$(o)q$()\u00b2+$(o)r$()\u00b2).",
  "psi.book.page.vectorPrimer.11": "Например, модуль вектора [3, -4, 0] — это \u221a(3\u00b2+(-4)\u00b2+0\u00b2), что даёт ровно 5.$(p)(Чаще всего модуль вектора не будет целым числом.)$(p)Обрати внимание: хотя $(o)можно$() найти модуль вектора позиции, это число почти ничего не значит — кому $(o)важно$(), насколько ты далеко от [0, 0, 0] (какой-то точки у бедрока и спавна мира)?",
  "psi.book.page.vectorPrimer.12": "Почти все векторы также имеют $(l)направления$().$(p)Направление вектора смещения — это, собственно, направление, в котором что-то будет двигаться, если следовать по этому вектору.$(p)Например, направление [0, 1, 0] — строго вверх.$(p)Вектор [1, 0, -1] означает один блок на восток и один на север, то есть направление — строго на северо-восток.",
  "psi.book.page.vectorPrimer.13": "(Большинство направлений не такие простые, обычно это что-то вроде \"36,86 градусов севернее запада, 22,62 градуса ниже горизонта.\")$(p)Обрати внимание: единственный вектор без направления — [0, 0, 0] ($(l)нулевой вектор$()), ведь чтобы было направление, нужно двигаться $(o)куда-то$().$(p)Также направление вектора позиции почти так же бессмысленно, как и его модуль — большинству $(thing)Заклинаний$(0) не нужно знать \"куда идти, чтобы уйти от бедрока на спавне\".",
  "psi.book.page.vectorPrimer.14": "На самом деле, любой вектор можно восстановить, зная только его модуль и направление — это и будет список из трёх чисел (которые называются $(l)компонентами$() вектора).$(p)Например, направление \"вверх\" и модуль 1 соответствуют вектору [0, 1, 0].$(p)Это не так удивительно: если тебе говорят, в каком направлении идти и на какое расстояние, ты поймёшь, куда тебя хотят отправить.",
  "psi.book.page.vectorPrimer.15": "Есть несколько простых способов оперировать векторами позиции и смещения.$(p)Во-первых, можно сложить вектор позиции и вектор смещения, чтобы получить новый вектор позиции, как мы делали с примером блока травы.$(p)Во-вторых, можно $(o)вычесть$() два вектора позиции, чтобы получить вектор смещения, показывающий смещение от одной точки к другой:$(br)[$(o)x$(), $(o)y$()+1, $(o)z$()] \u2212 [$(o)x$(), $(o)y$(), $(o)z$()] = [0, 1, 0].",
  "psi.book.page.vectorPrimer.16": "Более интересно: можно сложить два вектора смещения, чтобы получить один вектор смещения, объединяющий их.$(p)Прибавив этот вектор к вектору позиции, ты получишь тот же результат, что если бы сначала прибавил один из них, а потом другой.",
  "psi.book.page.vectorPrimer.17": "И, наконец, не менее важная операция: $(l)масштабирование$() вектора, то есть умножение его на число.$(p)Обрати внимание: мы умножаем на число, $(o)а не$() на другой вектор.$(p)Если мы хотим умножить вектор [$(o)p$(), $(o)q$(), $(o)r$()] на коэффициент $(o)n$(), просто умножаем каждую компоненту на $(o)n$():$(br)$(o)n$()\u00b7[$(o)p$(), $(o)q$(), $(o)r$()] = [$(o)n$()\u00b7$(o)p$(), $(o)n$()\u00b7$(o)q$(), $(o)n$()\u00b7$(o)r$()].",
  "psi.book.page.vectorPrimer.18": "Эта последняя операция тесно связана с понятиями модуля и направления.$(p)Когда ты масштабируешь вектор на число $(o)n$(), ты:$(p)$(li)умножаешь его модуль на абсолютное значение $(o)n$(), и$(p)$(li)не меняешь направление, если $(o)n$() положительно, но разворачиваешь его, если $(o)n$() отрицательно.$(p)Если $(o)n$()=0, то результат — нулевой вектор.",
  "psi.book.page.vectorPrimer.19": "Если же мы возьмём $(o)n$()=-1, то получим вектор с тем же модулем (ведь |−1|=1), но направленный в противоположную сторону (так как −1 отрицательно).$(p)Этот вектор называется $(l)отрицанием$() исходного, и если их сложить, получится нулевой вектор.$(p)Это логично: если пройти в одну сторону, а потом столько же в обратную, итоговое перемещение будет нулевым.",
  "psi.book.page.vectorPrimer.20": "Если вместо умножения мы $(o)разделим$() (ненулевой) вектор на его модуль, получим вектор с модулем 1 (ведь любое число, делённое само на себя, даёт 1), но с тем же направлением (так как модули всегда положительны).$(p)Это важная и известная операция — $(l)нормализация$() вектора; получившийся вектор (и вообще любой вектор с модулем 1) называется $(l)единичным вектором$().",
  "psi.book.page.vectorPrimer.21": "Единичные векторы имеют фиксированный модуль, поэтому они обозначают только направление.$(p)Многие $(thing)Части заклинаний$(0), связанные с направлением, возвращают единичные векторы, например $(piece)Operator: Vector Axis Raycast$(0) и $(piece)Operator: Entity Look$(0).$(p)На самом деле, есть $(thing)Операторы$(0) для $(o)большинства$() операций с векторами, описанных в этой статье, обычно с понятными названиями.",
  "psi.book.page.vectorPrimer.22": "Операции и соответствующие им $(thing)Операторы$(0):$(p)$(li)Отрицание — $(piece)Operator: Vector Negate$(0);$(p)$(li)Нормализация — $(piece)Operator: Vector Normalize$(0);$(p)$(li)Масштабирование — $(piece)Operator: Vector Multiply$(0) и $(piece)Operator: Vector Divide$(0);$(p)$(li)Вычисление модуля — $(piece)Operator: Vector Magnitude$(0);$(p)$(li)Сложение — $(piece)Operator: Vector Sum$(0);$(p)$(li)Вычитание — $(piece)Operator: Vector Subtract$(0).",
  "psi.book.page.vectorPrimer.23": "И напоследок: векторы — это всё ещё списки из трёх чисел. Не забывай об этом.$(p)В $(l:basics/spell_programmer)$(item)Программаторе заклинаний$(0)$(/l) их можно собрать из трёх чисел с помощью $(piece)Operator: Vector Construct$(0).$(p)А обратно разложить вектор на числа можно с помощью $(piece)Operator: Extract X$(0), $(piece)Operator: Extract Y$(0) и $(piece)Operator: Extract Z$(0).",
  "psi.book.page.vectorPrimer.24": "Поздравляю с прохождением этого туториала!$(p)Это только введение во векторы — я не рассказал, например, о скалярном и векторном произведениях или проекции векторов.$(p)Но этого более чем достаточно, чтобы уже собирать интересные $(thing)Заклинания$(0).$(p)Вот и всё — теперь вперёд, колдуй!",
  "psi.book.entry.tutorial1": "Туториал (1): Создание заклинания",
  "psi.book.page.tutorial1.0": "Поздравляю с приобретением своего нового $(thing)CAD$(0)!$(p)Эта энциклопедия будет твоим справочником по этому моду, но некоторые записи (например, эта) — обучающие, они познакомят тебя с основами и терминами настоящего заклинателя.$(p)Не переживай, это самый длинный туториал, ведь он охватывает все основы.",
  "psi.book.page.tutorial1.1": "$(o)Обрати внимание: многие ключевые слова в $(item)цветном$(0) $(piece)тексте$(0) — это ссылки, по ним можно кликнуть, чтобы узнать больше о соответствующих предметах или понятиях.$()$(p)Чтобы начать программировать $(thing)Заклинания$(0), тебе понадобится (очевидно) $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l).$(p)А чтобы применять свои $(thing)Заклинания$(0), нужен более продвинутый $(thing)CAD$(0), чем тот, что у тебя сейчас — его можно собрать в $(l:basics/cad_assembler)$(item)Сборщике CAD$(0)$(/l).",
  "psi.book.page.tutorial1.2": "Для этого, скорее всего, тебе нужно сделать $(l:components/core#basic)$(item)Базовое ядро CAD$(0)$(/l) и $(l:components/socket#basic)$(item)Базовый разъём CAD$(0)$(/l).$(p)Не обязательно делать ещё одну $(l:components/assembly)$(thing)Сборку$(0)$(/l); можно положить свой текущий $(thing)CAD$(0) в верстак, чтобы разобрать его обратно (ведь это по сути просто $(l:components/assembly)$(thing)Сборка$(0)$(/l)).$(p)Также $(thing)Заклинания$(0) нельзя кастовать напрямую из $(thing)CAD$(0); они хранятся в $(l:items/spell_bullet)$(thing)Пулях заклинаний$(0)$(/l), так что для начала тебе понадобится несколько таких пуль.",
  "psi.book.page.tutorial1.3": "Когда все материалы собраны, стандартный процесс создания $(thing)Заклинания$(0) такой:$(p)$(li)Собери $(thing)Заклинание$(0) в $(l:basics/spell_programmer)$(item)Программаторе$(0)$(/l);$(br)$(li)Скопируй $(thing)Заклинание$(0) в $(l:items/spell_bullet)$(thing)Пулю заклинания$(0)$(/l);$(br)$(li)Загрузи $(l:items/spell_bullet)$(thing)Пулю заклинания$(0)$(/l) в свой $(thing)CAD$(0) через $(l:basics/cad_assembler)$(item)Сборщик CAD$(0)$(/l);$(br)$(li)Возьми $(thing)CAD$(0) в руку, наведи и кастуй.$(p)В этом и следующем туториале мы подробно рассмотрим этот процесс.",
  "psi.book.page.tutorial1.4": "Когда ты откроешь $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l), увидишь большую сетку — здесь и создаются $(thing)Заклинания$(0), здесь происходит вся магия.$(p)Система программирования в $(thing)Psi$(0) — это $(o)не совсем$() традиционная, сложная система; вместо этого $(thing)Заклинания$(0) состоят из простых действий, называемых $(thing)Трюками$(0), которые выполняются по порядку.$(p)Весь мод построен на том, чтобы заставить $(thing)Трюки$(0) делать то, что тебе нужно.",
  "psi.book.page.tutorial1.5": "$(thing)Заклинания$(0) в $(thing)Psi$(0) создаются на сетке $(l:basics/spell_programmer)$(item)Программатора$(0)$(/l) из $(thing)Частей заклинаний$(0); можно добавлять сколько угодно частей разных типов, но не все комбинации $(thing)Частей заклинаний$(0) дадут рабочее $(thing)Заклинание$(0).$(p)Чтобы добавить часть на сетку, кликни правой кнопкой мыши по нужной ячейке и выбери часть из появившегося меню.",
  "psi.book.page.tutorial1.6": "При выборе части из меню $(thing)Частей заклинаний$(0) можно навести курсор, чтобы увидеть её название, и кликнуть, чтобы разместить на сетке.$(p)Не переживай из-за множества появившихся частей — можно просто начать печатать название, чтобы найти нужную, и нажать Enter для выбора первого результата.$(p)Зажми Shift и наведи на кнопку \"?\" в правом нижнем углу, чтобы увидеть полный список горячих клавиш.",
  "psi.book.page.tutorial1.7": "Начни с размещения части под названием $(piece)Trick: Debug$(0) в любом месте сетки.$(p)Как уже говорилось, $(thing)Трюки$(0) — это $(thing)Части заклинаний$(0), отвечающие за взаимодействие с миром.$(p)Это самый простой $(thing)Трюк$(0); он просто выводит сообщение в чат. Но $(thing)Трюки$(0) могут использовать твою $(thing)Пси-энергию$(0) для самых разных вещей.",
  "psi.book.page.tutorial1.8": "Выбери ячейку $(l)рядом$() с твоим $(piece)Trick: Debug$(0) и размести там часть под названием $(piece)Selector: Caster$(0).$(p)$(thing)Селекторы$(0) — это $(thing)Части заклинаний$(0), которые предоставляют информацию о мире для $(thing)Заклинаний$(0).$(p)Эта часть представляет тебя, будущего кастера $(thing)Заклинания$(0). Ты будешь использовать её довольно часто, ведь это естественная отправная точка для твоих $(thing)Заклинаний$(0).",
  "psi.book.page.tutorial1.9": "Почти все $(thing)Части заклинаний$(0) требуют $(l)параметры$(), которые указывают, над чем выполнять действие.$(p)Например, мы знаем, что $(piece)Trick: Debug$(0) отправляет сообщение в чат; его первый параметр указывает, $(o)что$() сказать.$(p)$(o)Параметры также имеют $(l)типы данных$()$(o), или просто $(l)типы$()$(o), но об этом поговорим в следующем туториале.$()",
  "psi.book.page.tutorial1.10": "Левым кликом выбери свою часть $(piece)Trick: Debug$(0); слева появится панель с двумя строками. В каждой строке будет подпись и несколько маленьких стрелок.$(p)Эти две строки — это два параметра, которые принимает $(piece)Trick: Debug$(0).$(p)Игнорируй строку \"Число\" — просто знай, что точка в центре означает, что параметр необязательный. Для работы $(thing)Заклинания$(0) все $(o)не$()-обязательные параметры должны быть заполнены.",
  "psi.book.page.tutorial1.11": "Посмотри на стрелки с подписью \"Цель\" и выбери ту, что соответствует расположению твоего $(piece)Selector: Caster$(0) (например, если он справа от $(piece)Trick: Debug$(0), выбери самую правую стрелку, указывающую влево), чтобы казалось, что $(thing)Селектор$(0) указывает на $(thing)Трюк$(0).",
  "psi.book.page.tutorial1.12": "Теперь $(thing)Трюк$(0) будет использовать $(thing)Селектор$(0) как параметр \"Цель\".$(p)Говорят, что $(piece)Trick: Debug$(0) $(l)принимает$() или $(l)использует$() $(piece)Selector: Caster$(0) как параметр \"Цель\".$(p)Параметры также называют $(l)аргументами$() или просто $(l)входами$().$(p)$(o)Техническая заметка: в программировании есть тонкое различие между этими терминами, но оно выходит за рамки этой энциклопедии.$()",
  "psi.book.page.tutorial1.13": "Твоё итоговое $(thing)Заклинание$(0) должно выглядеть примерно так",
  "psi.book.page.tutorial1.14": "Теперь X в левом верхнем углу $(l:basics/spell_programmer)$(item)Программатора$(0)$(/l) должен смениться на галочку.$(p)Галочка означает, что $(thing)Заклинание$(0) $(l)успешно скомпилировано$() (то есть $(l:basics/spell_programmer)$(item)Программатор$(0)$(/l) проверил, что все $(thing)Части заклинаний$(0) правильно соединены между собой). ",
  "psi.book.page.tutorial1.15": "Если в любой момент отображается X (то есть компиляция $(l)не удалась$() или $(l)произошла ошибка$()), наведи на него курсор, чтобы узнать, в чём проблема, и исправь её.$(p)Когда $(thing)Заклинание$(0) успешно скомпилировано, его можно скопировать в $(l:items/spell_bullet)$(thing)Пулю заклинания$(0)$(/l) и кастовать. Именно этим мы и займёмся в $(l:basics/tutorial_2)следующем туториале$(/l)!",
  "psi.book.entry.tutorial2": "Туториал (2): Каст заклинания",
  "psi.book.page.tutorial2.0": "Итак, ты написал своё первое $(thing)Заклинание$(0)! Но чтобы его кастовать, нужно сделать ещё пару шагов.$(p)Сначала закрой $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l), возьми $(l:items/spell_bullet)$(thing)Пулю заклинания$(0)$(/l) (которую ты подготовил в прошлом туториале) и используй ($(k:use)) пулю на Программаторе. Ты услышишь звон, и пуля переименуется в \"Debug\".",
  "psi.book.page.tutorial2.1": "Теперь пуля содержит копию твоего $(thing)Заклинания$(0) и готова к загрузке в твой $(thing)CAD$(0).$(p)Чтобы загрузить $(l:items/spell_bullet)$(thing)Пулю заклинания$(0)$(/l) в $(thing)CAD$(0), открой $(l:basics/cad_assembler)$(item)Сборщик CAD$(0)$(/l) и вставь $(thing)CAD$(0) в самый левый слот. Некоторые слоты под ним откроются; положи пулю с $(thing)Заклинанием$(0) в один из этих слотов. Забери свой $(thing)CAD$(0) обратно.",
  "psi.book.page.tutorial2.2": "$(thing)CAD$(0) может содержать несколько $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l), а значит — несколько $(thing)Заклинаний$(0); активное $(thing)Заклинание$(0) можно переключать на лету.$(p)Чтобы выбрать $(thing)Заклинание$(0) для каста, держи $(thing)CAD$(0) в любой руке и зажми $(thing)основную клавишу Psi$(0) ($(k:psimisc.keybind)).$(p)Появится HUD; наведи на $(thing)Заклинание$(0) с названием \"Debug\" (то, что ты только что написал) и отпусти клавишу для выбора.",
  "psi.book.page.tutorial2.3": "Когда ты кастуешь $(thing)Заклинание$(0) ($(k:use)), в чате появится длинный текст с твоим ником и координатами. Если так — поздравляю! Ты написал и кастовал своё первое $(thing)Заклинание$(0)!$(p)Если нужно скрафтить ещё $(l:components/psidust)$(item)Псипыль$(0)$(/l), снова открой HUD и выбери слот без $(thing)Заклинания$(0), затем кастуй на $(item)Редстоуновую пыль$(0) как обычно.",
  "psi.book.page.tutorial2.4": "$(l)Кстати: носи с собой только один $(thing)CAD$(0) одновременно.$()$(p)Если у тебя больше одного, их потоки $(thing)Пси$(0) будут мешать друг другу, и любые $(thing)Заклинания$(0) будут сбиваться. Это явление называется \"запирание каста\" и его лучше избегать, просто используя один $(thing)CAD$(0) на мага.$(p)Когда ты успешно кастуешь своё заклинание Debug, переходи к $(l:basics/tutorial_3)следующему туториалу$(/l).",
  "psi.book.entry.tutorial3": "Туториал (3): Типы и числа",
  "psi.book.page.tutorial3.0": "Открой свой $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l) и снова взгляни на своё заклинание \"Отладка\" ($(thing)Заклинание$(0)).$(p)Помнишь параметр \"Число\" у $(piece)Трюк: Отладка$(0), который мы видели в $(l:basics/tutorial_1)первом туториале$(/l)? Ранее мы упоминали, что у этого параметра есть дополнительная точка по центру — это значит, что его можно отключить. Но на этот раз мы $(o)не будем$() его отключать.",
  "psi.book.page.tutorial3.1": "Параметр \"Число\" у $(piece)Трюк: Отладка$(0), если он используется, выводится как своеобразная метка, чтобы можно было различать несколько $(piece)Трюк: Отладка$(0) в сложном $(thing)Заклинании$(0).$(p)$(l)Тип$() этого параметра — \"Число\", то есть он принимает только те аргументы, которые возвращают (или $(l)выдают$()) числа.$(p)Первый параметр, \"Цель\", принимает особый тип \"Любой\", то есть может принимать что угодно.",
  "psi.book.page.tutorial3.2": "Если зажать Shift и навести курсор на элемент заклинания, появится подсказка с типами всех его параметров и типом результата. Например, видно, что $(piece)Селектор: Заклинатель$(0) возвращает сущность, а не число. Значит, нам понадобится другой элемент, чтобы получить число.",
  "psi.book.page.tutorial3.3": "Подсказка для $(piece)Селектор: Заклинатель$(0): возвращает сущность",
  "psi.book.page.tutorial3.4": "Выбери пустую ячейку сетки рядом с $(piece)Трюк: Отладка$(0) и размести элемент $(piece)Константа: Число$(0).$(p)Если навести на этот элемент с зажатым Shift, видно, что он $(o)действительно$() возвращает число (а точнее, числовую константу, которая является числом, но более конкретным).$(p)Поэтому, если снова кликнуть по $(piece)Трюк: Отладка$(0) и направить его параметр \"Число\" на $(piece)Константа: Число$(0), твое $(thing)Заклинание$(0) должно скомпилироваться.",
  "psi.book.page.tutorial3.5": "Чтобы запустить своё обновлённое заклинание отладки ($(thing)Заклинание$(0)), может показаться, что нужно выгрузить пулю, заново скопировать $(thing)Заклинание$(0), загрузить пулю и снова выбрать $(thing)Заклинание$(0).$(p)К счастью, твой $(thing)CAD$(0) поддерживает быстрый способ: просто выбери своё заклинание отладки на $(thing)CAD$(0), присядь и используй ($(k:use)) $(thing)CAD$(0) по своему $(l:basics/spell_programmer)$(item)Программатору$(0)$(/l), и заклинание в соответствующей пуле обновится до версии из $(l:basics/spell_programmer)$(item)Программатора$(0)$(/l).",
  "psi.book.page.tutorial3.6": "Если сейчас применить своё заклинание отладки ($(thing)Заклинание$(0)), ты увидишь тот же длинный блок текста, что и раньше, но с нулём в скобках в начале: это тот самый ноль, который был в $(piece)Константа: Число$(0), когда ты его разместил.$(p)Логичный следующий вопрос: как вывести число $(o)отличное$() от нуля?",
  "psi.book.page.tutorial3.7": "Дело в том, что элемент $(piece)Константа: Число$(0) особенный: чтобы задать его значение, достаточно выбрать элемент и просто ввести новое число.$(p)Все остальные $(thing)Элементы заклинания$(0) настраиваются только через панель параметров слева.$(p)$(o)Техническая заметка: все числовые константы считаются числами, но обычные числа не считаются числовыми константами. Только $(thing)Константа$(0) $(thing)Элементы заклинания$(0) возвращают числовые константы.$()",
  "psi.book.page.tutorial3.8": "Попробуй изменить число в $(piece)Константа: Число$(0), обновить $(thing)Заклинание$(0) в своём $(thing)CAD$(0) и снова применить. Ты увидишь, что число в начале действительно изменилось! Круто!",
  "psi.book.page.tutorial3.9": "Теперь к сути: мы подключили $(piece)Трюк: Отладка$(0) сразу к двум разным входам.$(p)На самом деле, $(o)большинство$() $(thing)Элементов заклинания$(0) принимают два (или даже три) входа. И бывает, что входы твоего $(thing)Заклинания$(0) оказываются рядом друг с другом.$(p)Вот тут и нужны $(piece)Соединители$(0).",
  "psi.book.page.tutorial3.10": "Соединители — простые, но мощные элементы: они принимают один вход любого типа и возвращают этот же вход. Поэтому, если какому-то $(thing)Элементу заклинания$(0) нужен вход, который находится на два блока сетки дальше, их можно соединить с помощью $(piece)Соединитель$(0).",
  "psi.book.page.tutorial3.11": "Мост в Терабитию",
  "psi.book.page.tutorial3.12": "Главная сила $(piece)Соединителя$(0) в том, что их можно соединять друг с $(o)другом$(): то есть можно выстраивать цепочки, чтобы соединять $(thing)Элементы заклинания$(0) на любом расстоянии.$(p)Поиграй с $(piece)Соединителями$(0), и как только освоишься — переходи к $(l:basics/tutorial_5)следующему туториалу$(/l)!",
  "psi.book.page.tutorial3.13": "Длинный путь вокруг",
  "psi.book.entry.tutorial4": "Туториал (4): Движение",
  "psi.book.page.tutorial4.0": "Ладно, ладно. Я знаю, о чём ты думаешь: \"Скучно. Когда уже начнём делать что-то крутое?\" Ну... прямо сейчас!$(p)Познакомимся с $(thing)Трюком$(0), который действительно взаимодействует с миром — встречай: $(piece)Трюк: Добавить движение$(0).$(p)Этот $(thing)Трюк$(0) берёт сущность и придаёт ей движение (то есть толкает) в определённом направлении.",
  "psi.book.page.tutorial4.1": "Примеры сущностей: ты (заклинатель), курица, зомби, вагонетка, падающий песок, стрела, Иссушитель.$(p)Этот $(thing)Трюк$(0) принимает параметры: сущность (кого двигать), вектор (направление толчка) и числовую константу (с какой силой $(thing)Трюк$(0) толкнёт сущность).$(p)$(o)Примечание: если не знаешь, что такое \"вектор\", $(l:basics/vector_primer)эта статья$(/l) даст хорошее введение.$()",
  "psi.book.page.tutorial4.2": "Давай напишем $(thing)Заклинание$(0), которое при применении просто ускоряет заклинателя вперёд с помощью $(piece)Трюк: Добавить движение$(0).$(p)Как уже говорилось, $(piece)Селектор: Заклинатель$(0) возвращает сущность (то есть тебя), так что это будет первым параметром для $(piece)Трюк: Добавить движение$(0).$(p)Мы хотим, чтобы $(thing)Трюк$(0) ускорял тебя $(o)вперёд$() — то есть $(o)в том направлении, куда ты смотришь$(). Для этого познакомимся с новым элементом: $(piece)Оператор: Взгляд сущности$(0).",
  "psi.book.page.tutorial4.3": "Ни один $(thing)Оператор$(0) не изменяет мир вокруг себя и не получает из него информацию (за редким исключением). Они лишь $(o)преобразуют$() информацию в более удобную форму.$(p)В частности, $(piece)Оператор: Взгляд сущности$(0) принимает сущность и возвращает единичный вектор — направление, куда смотрит сущность.$(p)То есть, если соединить его с $(piece)Селектор: Заклинатель$(0), получится вектор, указывающий туда, куда ты смотришь.",
  "psi.book.page.tutorial4.4": "Наконец, для последнего параметра $(piece)Трюк: Добавить движение$(0) подойдёт обычная $(piece)Константа: Число$(0).$(p)Соберём всё вместе: сначала открой свой $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l) и очисти его от текущего $(thing)Заклинания$(0). Затем размести $(piece)Трюк: Добавить движение$(0) ближе к центру сетки.",
  "psi.book.page.tutorial4.5": "Поставь $(piece)Селектор: Заклинатель$(0) прямо над $(thing)Трюком$(0), $(piece)Оператор: Взгляд сущности$(0) справа от него, а $(piece)Константа: Число$(0) — слева.$(p)Введи значение для $(thing)Константы$(0) (рекомендую число 3).$(p)Поставь $(piece)Соединитель$(0) между $(thing)Оператором$(0) и $(thing)Селектором$(0), затем настрой все параметры для $(thing)Оператора$(0) и $(thing)Трюка$(0), чтобы $(thing)Заклинание$(0) скомпилировалось — должно получиться примерно как на картинке на следующей странице.",
  "psi.book.page.tutorial4.6": "Когда толчок — это всё",
  "psi.book.page.tutorial4.7": "Скопируй $(thing)Заклинание$(0) в свой $(thing)CAD$(0), посмотри прямо вперёд и примени заклинание. Если тебя отбросило вперёд — поздравляю! Ты только что написал своё первое настоящее $(thing)Заклинание$(0)!$(p)$(o)Примечание: слишком частое применение нового $(thing)Заклинания$(0) может быть вредно для здоровья. Подробнее об этом — в $(l:basics/tutorial_5)следующем туториале$(/l).$()",
  "psi.book.entry.tutorial5": "Туториал (5): Ограничения",
  "psi.book.page.tutorial5.0": "Открой снова свой $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l) и посмотри на $(thing)Заклинание$(0), которое ты создал в $(l:basics/tutorial_4)прошлом туториале$(/l).$(p)Если оно скомпилировалось успешно, справа от сетки должны были появиться пять иконок, каждая с двумя числами. Эти числовые параметры определяют реальные ограничения того, какие $(thing)Заклинания$(0) ты можешь кастовать.",
  "psi.book.page.tutorial5.1": "Показатели твоего заклинания \"Добавить движение\" $(thing)Spell$(0) (если твоя константа была равна 3)",
  "psi.book.subsec.tutorial5.2": "Сложность",
  "psi.book.page.tutorial5.2": "Первый параметр — это $(thing)Сложность$(0): общее количество $(thing)Операторов$(0), $(thing)Селекторов$(0) и не-отладочных $(thing)Трюков$(0) в $(thing)Заклинании$(0).$(p)Максимальное значение определяется установленным у тебя $(l:components/core)$(thing)Ядром CAD$(0)$(/l); если $(thing)Сложность$(0) заклинания превышает возможности твоего $(thing)CAD$(0), оно не сможет быть применено.",
  "psi.book.subsec.tutorial5.3": "Мощность",
  "psi.book.page.tutorial5.3": "Второй параметр — $(thing)Мощность$(0), ограниченная твоей $(l:components/assembly)$(thing)Сборкой$(0)$(/l); это примерная суммарная потребляемая энергия всех $(thing)Трюков$(0) в $(thing)Заклинании$(0).$(p)Некоторые $(thing)Трюки$(0) имеют фиксированную стоимость $(thing)Мощности$(0) за использование. Однако большинство $(thing)Трюков$(0) с параметром типа \"Числовая константа\" используют его для определения своей $(thing)Мощности$(0): чем выше константа, тем больше $(thing)Мощность$(0).",
  "psi.book.subsec.tutorial5.4": "Стоимость",
  "psi.book.page.tutorial5.4": "Третий параметр — $(thing)Стоимость$(0), и он уникален тем, что твой $(thing)CAD$(0) не накладывает на него ограничений. Вместо этого, каждый раз при касте $(thing)Заклинания$(0) его $(thing)Стоимость$(0) списывается с твоей собственной $(thing)Пси-энергии$(0).$(p)Первое число — это $(o)идеальная$() $(thing)Стоимость$(0) заклинания — все $(l:components/assembly)$(thing)Сборки CAD$(0)$(/l) имеют недостатки, которые увеличивают её.",
  "psi.book.page.tutorial5.5": "Реальная $(thing)Стоимость$(0) каста через твой $(thing)CAD$(0) — это число в скобках на экране $(l:basics/spell_programmer)$(item)Программатора$(0)$(/l). Чем выше $(thing)Эффективность$(0) твоей $(l:components/assembly)$(thing)Сборки$(0)$(/l), тем ближе фактическая $(thing)Стоимость$(0) к идеальной.",
  "psi.book.page.tutorial5.6": "Твоя $(thing)Пси-энергия$(0) восстанавливается примерно по 500 единиц в секунду, что ограничивает скорость каста $(thing)Заклинаний$(0).$(p)Текущий уровень $(thing)Пси-энергии$(0) можно узнать прямо в $(thing)Заклинании$(0) с помощью $(piece)Селектор: Энергия заклинателя$(0).",
  "psi.book.page.tutorial5.7": "Обрати внимание: если ты кастуешь $(thing)Заклинание$(0) без достаточного количества $(thing)Пси-энергии$(0) (это называется $(l)овердроу$()), твой $(thing)CAD$(0) спишет недостающую стоимость с твоего здоровья и сразу же отключится, пока твоя $(thing)Пси-энергия$(0) полностью не восстановится — для твоей же безопасности.$(p)$(l:components/battery)$(thing)Батарея$(0)$(/l), добавленная в $(thing)CAD$(0), может защитить от этого.$(p)Будь осторожен — овердроу может быть болезненным, а иногда и смертельным!",
  "psi.book.subsec.tutorial5.8": "Проекция",
  "psi.book.page.tutorial5.8": "Четвёртый параметр, отображаемый на $(l:basics/spell_programmer)$(item)Программаторе$(0)$(/l), — это $(thing)Проекция$(0): общее количество не-отладочных $(thing)Трюков$(0) в $(thing)Заклинании$(0).$(p)Максимальное значение $(thing)Проекции$(0) на одно $(thing)Заклинание$(0) определяется $(l:components/core)$(thing)Ядром$(0)$(/l) твоего $(thing)CAD$(0); если $(thing)Трюков$(0) слишком много, заклинание нельзя скастовать.",
  "psi.book.subsec.tutorial5.9": "Пропускная способность",
  "psi.book.page.tutorial5.9": "Пятый и последний параметр — $(thing)Пропускная способность$(0), ограниченная твоим $(l:components/socket)$(thing)Сокетом CAD$(0)$(/l): это ширина или высота $(thing)Заклинания$(0) в клетках сетки — берётся большее значение.$(p)Это один из самых интересных параметров: если твое $(thing)Заклинание$(0) слишком велико, приём перемещения и удаления некоторых частей для уменьшения размера называется $(l)компрессией$().",
  "psi.book.page.tutorial5.10": "Есть ещё одно ограничение для $(thing)Заклинаний$(0): ни один $(thing)Трюк$(0) не может воздействовать на что-либо дальше, чем в 32 блоках от своей $(l:items/spell_bullet#focal_point)$(thing)Точки фокуса$(0)$(/l) (для обычной $(l:items/basic_bullet)$(item)Пули заклинания$(0)$(/l) — это ты, заклинатель), за исключением самого заклинателя.$(p)$(thing)Заклинание$(0), пытающееся сделать это, выдаст ошибку в чате и затем $(l)рассеется$().$(p)Когда $(thing)Заклинание$(0) рассеивается, вся накопленная $(thing)Пси-энергия$(0) безвредно исчезает, и оставшиеся $(thing)Трюки$(0) не выполняются.",
  "psi.book.page.tutorial5.11": "Чтобы прояснить исключение:$(br)Некоторые типы $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l) имеют $(l:items/spell_bullet#focal_point)$(thing)Точки фокуса$(0)$(/l), которые $(o)не$() являются их заклинателями — но даже в этих случаях их $(thing)Заклинания$(0) всё равно могут воздействовать на заклинателя через $(piece)Селектор: Заклинатель$(0), независимо от расстояния до $(l:items/spell_bullet#focal_point)$(thing)Точки фокуса$(0)$(/l).$(p)Впереди $(l:basics/tutorial_6)последний туториал$(/l), где мы соберём всё вместе, а потом ты сможешь отправиться в большой мир $(thing)Psi$(0). Удачи!",
  "psi.book.entry.tutorial6": "Туториал (6): ВЗРЫВ",
  "psi.book.page.tutorial6.0": "Любишь взрывы?$(p)Конечно любишь. Все любят взрывы!$(p)Давай создадим $(thing)Заклинание$(0), которое взрывает всё, на что ты смотришь при касте.$(p)Что может пойти не так?",
  "psi.book.page.tutorial6.1": "Чтобы написать это $(thing)Заклинание$(0), начнём с $(thing)Трюка$(0), который вызовет взрыв, и пойдём в обратном порядке.$(p)Удобно, что он называется $(piece)Трюк: Взорвать$(0) — открой $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l), очисти сетку и размести $(piece)Трюк: Взорвать$(0) ближе к центру.$(p)Если навести на него с зажатым Shift, видно, что он принимает вектор и числовую константу в качестве параметров.",
  "psi.book.page.tutorial6.2": "Параметр \"Числовая константа\" отвечает за силу взрыва — его легко заполнить с помощью $(piece)Константа: Число$(0).$(p)А вот вектор — это позиция, где должен произойти взрыв. Её нужно будет вычислить.",
  "psi.book.page.tutorial6.3": "В $(l:basics/tutorial_5)прошлом туториале$(/l) мы использовали $(piece)Оператор: Взгляд сущности$(0).$(p)Однако этот $(thing)Оператор$(0) возвращает единичный вектор, а $(piece)Трюк: Взорвать$(0) требует позицию, так что если подать его напрямую, результат будет не тот, что нужен.$(p)Поэтому познакомимся с ещё одним $(thing)Оператором$(0): $(piece)Оператор: Позиция сущности$(0).",
  "psi.book.page.tutorial6.4": "$(piece)Оператор: Позиция сущности$(0) принимает сущность (например, заклинателя) и возвращает её позицию (точнее: для игрока — координаты на уровне глаз).$(p)Однако, если подать это напрямую в $(piece)Трюк: Взорвать$(0), ты буквально взорвёшься у себя под носом.",
  "psi.book.page.tutorial6.5": "Что $(o)можно$() сделать: просто умножить вектор из $(piece)Оператор: Взгляд сущности$(0) на 10, а затем сложить с результатом $(piece)Оператор: Позиция сущности$(0).$(p)Если подать это в $(piece)Трюк: Взорвать$(0), получится $(thing)Заклинание$(0), которое создаёт взрыв $(o)ровно в 10 блоках перед тобой по направлению взгляда$().",
  "psi.book.page.tutorial6.6": "Но у такого $(thing)Заклинания$(0) есть очевидные минусы: если хочешь взорвать что-то ближе или дальше 10 блоков, придётся двигаться самому и угадывать расстояние.$(p)Не очень удобно.$(p)Вместо этого используем более умный оператор: $(piece)Оператор: Векторный луч$(0).",
  "psi.book.page.tutorial6.7": "Этот $(thing)Оператор$(0) работает интуитивно понятно: он принимает вектор позиции и \"луч\" (вектор направления).$(p)Результат — \"если бы я стоял здесь и смотрел в том направлении, в какую точку я бы смотрел?\" — идеально подходит для нашей задачи.$(p)Подробнее о параметре \"Макс\" читай на странице про $(piece)Оператор: Векторный луч$(0).",
  "psi.book.page.tutorial6.8": "Итак! Чтобы собрать это $(thing)Заклинание$(0), идём с конца.$(p)Если ещё не сделал, поставь $(piece)Константа: Число$(0) рядом с $(piece)Трюк: Взорвать$(0) (если ты всё ещё используешь $(thing)CAD$(0) из $(l:basics/tutorial_1)первого туториала$(/l), поставь значение 1.4).$(p)Затем размести $(piece)Оператор: Векторный луч$(0) рядом с $(thing)Трюком$(0) и соедини $(thing)Трюк$(0) с двумя другими $(thing)Частями заклинания$(0).",
  "psi.book.page.tutorial6.9": "Теперь поставь $(piece)Оператор: Позиция сущности$(0) и $(piece)Оператор: Взгляд сущности$(0), затем подключи их к $(piece)Оператору: Векторный луч$(0).$(p)Убедись, что \"Позиция\" подключена к Позиции сущности, а \"Луч\" — к Взгляду сущности, а не наоборот, иначе при касте будут странные результаты или ошибки.$(p)В конце поставь $(piece)Селектор: Заклинатель$(0) и подключи его к двум операторам сущности.",
  "psi.book.page.tutorial6.10": "Что-то вроде этого",
  "psi.book.page.tutorial6.11": "Когда твоё $(thing)Заклинание$(0) успешно скомпилируется, загрузи его в свой $(thing)CAD$(0), прицелься во что-нибудь (желательно не слишком ценное) и кастуй.$(p)Если то, на что ты смотришь, взорвалось — поздравляю, ты только что получил новую силу!$(p)Только, эм, не кастуй себе под ноги.",
  "psi.book.page.tutorial6.12": "Последнее замечание: попробуй скастовать своё новое заклинание \"Взорвать\" на что-то дальше 32 блоков (или в небо).$(p)Взрыва не будет, а в чате появится ошибка: \"$(c)Цель заклинания вне максимального радиуса 32 блока.$(0)\" (это ограничение обсуждалось в прошлом туториале).$(p)Такие ошибки в чате могут раздражать.",
  "psi.book.page.tutorial6.13": "Чтобы исправить это, просто размести $(piece)Подавитель ошибок$(0) в любом месте сетки, и итоговое $(thing)Заклинание$(0) будет просто тихо проваливаться при ошибке.$(p)Но при отладке лучше убрать этот элемент — ошибки $(o)иногда$() бывают полезны.",
  "psi.book.page.tutorial6.14": "На этом этот цикл туториалов завершён!$(p)Почитай остальные главы книги, чтобы узнать, на что способен этот мод. Опытные маги могут творить по-настоящему страшные вещи.$(p)Всё в твоих руках: экспериментируй с $(thing)CAD$(0) и $(l:basics/spell_programmer)$(item)Программатором заклинаний$(0)$(/l), создавай свои уникальные $(thing)Заклинания$(0).$(p)Удачи и добро пожаловать в огромный мир $(thing)Psi$(0)!",
  "psi.book.entry.evalOrder": "Порядок вычисления",
  "psi.book.page.evalOrder.0": "Почти все $(thing)Трюки$(0) выполняются одновременно с $(thing)Заклинанием$(0), в котором они находятся. Тем не менее, чтобы использовать $(piece)трюки управления потоком$(0), нужно знать основы порядка вычисления — то есть, в каком порядке вычисляются $(thing)Части заклинания$(0).",
  "psi.book.page.evalOrder.1": "Есть три основных правила порядка вычисления; они подробно описаны на следующих страницах, а здесь — кратко:$(p)$(li)Когда $(thing)Заклинание$(0) выполняется, его $(thing)Трюки$(0) вычисляются (и затем исполняются) слева направо, затем сверху вниз;$(p)$(li)Любая $(thing)Часть заклинания$(0) сначала вычисляет все свои входы;$(p)$(li)Каждая $(thing)Часть заклинания$(0) вычисляется не более одного раза за выполнение заклинания — когда её значение впервые требуется.",
  "psi.book.page.evalOrder.2": "Первое правило довольно очевидно: $(thing)Трюк$(0), стоящий выше на сетке, выполняется раньше, чем тот, что ниже, а если несколько $(thing)Трюков$(0) в одном ряду — первым сработает самый левый.$(p)Поэтому $(thing)Заклинание$(0) на следующей странице выведет в чат \"1.0\", \"2.0\", \"3.0\" и \"4.0\" — именно в таком порядке.",
  "psi.book.page.evalOrder.3": "Пусть будет по максимуму",
  "psi.book.page.evalOrder.4": "Второе правило так же просто: $(thing)Часть заклинания$(0) вычисляется только тогда, когда её значение требуется.$(p)Однако обратное $(o)тоже$() верно: если $(thing)Часть заклинания$(0) $(o)не$() нужна ни одному $(thing)Трюку$(0) (напрямую или косвенно), она вообще не вычисляется при выполнении заклинания.$(p)Любая $(thing)Часть заклинания$(0), не подключённая к $(thing)Трюку$(0), приводит к $(l)неопределённому поведению$() — никаких гарантий на результат нет.",
  "psi.book.page.evalOrder.5": "Не рекомендуется",
  "psi.book.page.evalOrder.6": "Третье и последнее правило чуть тоньше и лучше всего иллюстрируется $(thing)Заклинанием$(0) на следующей странице:$(p)$(thing)Часть заклинания$(0) вычисляется только один раз и возвращает $(o)точно то же значение$() при повторных обращениях. Поэтому все четыре $(piece)Трюк: Отладка$(0) на картинке выведут $(o)одно и то же$() число, ведь $(piece)Оператор: Случайное$(0) вычисляется только один раз.$(p)$(piece)Трюк: Вычислить$(0) можно использовать, чтобы вычислить $(thing)Часть заклинания$(0) \"заранее\".",
  "psi.book.page.evalOrder.7": "Кто первый — того и тапки",
  "psi.book.category.components": "Материалы и компоненты",
  "psi.book.category.components.desc": "В этом разделе книги описаны все новые ресурсы, которые добавляет $(thing)Psi$(0), а также все компоненты, необходимые для создания полноценного $(thing)CAD$(0).",
  "psi.book.entry.psidust": "Псипыль",
  "psi.book.page.psidust.0": "$(item)Псипыль$(0) — это материал, получаемый из $(item)Редстоуновой пыли$(0) с помощью не сфокусированного выброса $(thing)Пси-энергии$(0), и потому хорошо проводит эту энергию.$(p)Это важнейший компонент для низкоуровневых $(thing)CAD$(0): он используется в простых $(l:components/core#basic)$(thing)Ядрах CAD$(0)$(/l), $(l:components/socket#basic)$(thing)Сокетах$(0)$(/l), $(l:components/battery#basic)$(thing)Батареях$(0)$(/l), а также во всех $(l:components/colorizer)$(thing)Колорайзерах CAD$(0)$(/l).$(p)Также используется для создания $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l).",
  "psi.book.page.psidust.1": "Чтобы получить $(item)Псипыль$(0), сначала выбрось немного $(item)Редстоуновой пыли$(0) на землю.$(p)Затем встань рядом и используй ($(k:use)) $(thing)CAD$(0) $(l)без выбранного заклинания$(), чтобы превратить редстоун в $(item)Псипыль$(0).$(p)$(item)Псипыль$(0) также можно получить с помощью любого $(piece)трюка инфузии$(0).",
  "psi.book.entry.psimetal": "Псиметалл",
  "psi.book.page.psimetal.0": "$(item)Псиметалл$(0) — это материал, получаемый из $(item)Золотых слитков$(0), который проводит, накапливает и передаёт $(thing)Пси-энергию$(0) $(o)гораздо$() лучше, чем $(l:components/psidust)$(item)Псипыль$(0)$(/l).$(p)Помимо использования в более мощных $(l:components/core)$(thing)Ядрах CAD$(0)$(/l), $(l:components/socket)$(thing)Сокетах$(0)$(/l) и $(l:components/battery#extended)$(thing)Батареях$(0)$(/l), из него можно создать продвинутую $(l:components/assembly#psimetal)$(thing)Сборку CAD$(0)$(/l). Также используется для крафта $(l:items/tools)$(thing)Псиметаллических инструментов$(0)$(/l), $(l:items/exosuit)$(thing)Брони$(0)$(/l) и $(l:components/ebony_ivory)$(item)Слитков эбена и слоновой кости$(0)$(/l).",
  "psi.book.page.psimetal.1": "Чтобы получить $(item)Псиметалл$(0), сначала выбрось $(item)Золотые слитки$(0) на землю.$(p)Затем встань рядом и скастуй $(thing)Заклинание$(0) с $(piece)Трюком: Инфузия$(0) (или любым другим $(piece)трюком инфузии$(0)) среди $(thing)Трюков$(0), чтобы превратить золото в $(item)Псиметалл$(0).",
  "psi.book.entry.psigem": "Псигем",
  "psi.book.page.psigem.0": "$(item)Псигемы$(0) — это кристаллы, получаемые из $(item)Алмазов$(0), чьи преломляющие свойства делают их исключительно хорошими для передачи, хранения и накопления $(thing)Пси-энергии$(0).$(p)Они используются для создания топовых $(l:components/core)$(thing)Ядер CAD$(0)$(/l), $(l:components/socket)$(thing)Сокетов$(0)$(/l), $(l:components/battery#ultradense)$(thing)Батарей$(0)$(/l), а также как важные компоненты для $(l:items/tools)$(thing)Псиметаллических инструментов$(0)$(/l) и $(l:items/exosuit)$(thing)Брони$(0)$(/l).",
  "psi.book.page.psigem.1": "Чтобы получить $(item)Псигем$(0), сначала выбрось $(item)Алмаз$(0) на землю.$(p)Затем встань рядом и скастуй $(thing)Заклинание$(0) с $(piece)Трюком: Великая инфузия$(0) (или $(piece)Трюком: Эбен и слоновая кость$(0)) среди трюков, чтобы превратить $(item)Алмаз$(0) в $(item)Псигем$(0).",
  "psi.book.entry.ebonyIvory": "Эбен и слоновая кость",
  "psi.book.page.ebonyIvory.0": "$(thing)Энд$(0) гораздо ближе к измерению разума, чем $(thing)Обычный мир$(0). Поэтому его эссенции гораздо лучше проводят $(thing)Пси-энергию$(0), которая тоже происходит от разума.$(p)$(piece)Трюк: Эбен и слоновая кость$(0) позволяет захватить эти эссенции в $(item)Угле$(0) и $(item)Незер-кварце$(0), превращая их соответственно в $(item)Субстанцию эбена$(0) и $(item)Субстанцию слоновой кости$(0).",
  "psi.book.page.ebonyIvory.1": "К сожалению, ни $(item)Эбен$(0), ни $(item)Субстанция слоновой кости$(0) не дружат с материалами из $(thing)Обычного мира$(0).$(p)Это значит, что сделать из них $(l:components/core)$(thing)Ядра CAD$(0)$(/l), $(l:components/socket)$(thing)Сокеты$(0)$(/l) или $(l:components/battery)$(thing)Батареи$(0)$(/l) довольно сложно.$(p)Однако мы $(o)можем$() покрыть $(l:components/psimetal)$(item)Псиметаллические слитки$(0)$(/l) этими субстанциями, получив $(item)Эбеновые$(0) и $(item)Слоновые псиметаллические слитки$(0), которые достаточно стабильны для создания $(l:components/assembly)$(thing)Сборок CAD$(0)$(/l).",
  "psi.book.page.ebonyIvory.2": "Чтобы получить $(item)Субстанцию эбена$(0), сначала отправься в $(thing)Энд$(0) и выбрось $(item)Уголь$(0) на землю.$(p)Затем встань рядом и скастуй $(thing)Заклинание$(0) с $(piece)Трюком: Эбен и слоновая кость$(0) среди $(thing)Трюков$(0), чтобы превратить $(item)Уголь$(0) в $(item)Субстанцию эбена$(0).",
  "psi.book.page.ebonyIvory.3": "Чтобы получить $(item)Субстанцию слоновой кости$(0), сначала отправься в $(thing)Энд$(0) и выбрось $(item)Незер-кварц$(0) на землю.$(p)Затем встань рядом и скастуй $(thing)Заклинание$(0) с $(piece)Трюком: Эбен и слоновая кость$(0) среди $(thing)Трюков$(0), чтобы превратить $(item)Незер-кварц$(0) в $(item)Субстанцию слоновой кости$(0).",
  "psi.book.page.ebonyIvory.4": "Dark'ness Dementia Raven Way",
  "psi.book.page.ebonyIvory.5": "Ни один слон не пострадал при создании",
  "psi.book.entry.assembly": "Сборки",
  "psi.book.page.assembly.0": "$(thing)Сборка CAD$(0) проста по конструкции, но это самый важный компонент $(thing)CAD$(0).$(p)$(thing)Сборка$(0) отвечает за канализацию $(thing)Пси-энергии$(0) пользователя — по сути, это просто удобно сформированный проводник.$(p)Все $(thing)CAD$(0) из $(thing)Psi$(0) крафтятся из четырёх слитков нужного материала в верстаке, в форме перевёрнутой буквы L.$(p)",
  "psi.book.page.assembly.1": "$(thing)Сборка$(0) — единственный компонент $(thing)CAD$(0), который обязателен для сборки в $(l:basics/cad_assembler)$(item)Сборщике CAD$(0)$(/l) — на самом деле, любой $(thing)CAD$(0), состоящий только из $(thing)Сборки$(0), можно разобрать обратно в верстаке.$(p)У каждой $(thing)Сборки$(0) есть $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l): это примерно максимальная скорость передачи $(thing)Пси-энергии$(0).$(p)Также есть $(l:basics/tutorial_5#cost)$(thing)Эффективность$(0)$(/l) — процент $(thing)Пси-энергии$(0) пользователя, который реально используется в $(thing)Заклинании$(0); чем выше $(l:basics/tutorial_5#cost)$(thing)Эффективность$(0)$(/l), тем лучше.",
  "psi.book.page.assembly.2": "Обычная $(item)Железная сборка CAD$(0) имеет самую низкую $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l) и $(l:basics/tutorial_5#cost)$(thing)Эффективность$(0)$(/l) среди всех $(thing)Сборок$(0) в этой книге.$(p)Зато она дёшева и крафтит $(l:components/psidust)$(item)Псипыль$(0)$(/l) так же, как и любой другой $(thing)CAD$(0), поэтому это лучший выбор для новичков.",
  "psi.book.page.assembly.3": "Стильно и просто",
  "psi.book.page.assembly.4": "$(item)Золотая сборка CAD$(0) обладает большей $(l:basics/tutorial_5#potency)$(thing)Мощностью$(0)$(/l) и $(l:basics/tutorial_5#cost)$(thing)Эффективностью$(0)$(/l), чем её железный аналог — на самом деле, это лучшая $(thing)Сборка$(0) из обычных материалов.",
  "psi.book.page.assembly.5": "Немного тяжеловата для переноски",
  "psi.book.page.assembly.6": "$(item)Псиметаллическая сборка CAD$(0) имеет более высокую $(l:basics/tutorial_5#cost)$(thing)Эффективность$(0)$(/l), чем $(l:components/assembly#iron)$(item)Железная сборка$(0)$(/l), и большую $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l), чем $(l:components/assembly#gold)$(item)Золотая сборка$(0)$(/l), что делает её очень универсальной.$(p)$(piece)Трюк: Великая инфузия$(0) и $(piece)Трюк: Эбен и слоновая кость$(0) требуют $(thing)CAD$(0) с $(thing)Сборкой$(0) такого уровня или выше.",
  "psi.book.page.assembly.7": "Лучшее из двух миров",
  "psi.book.page.assembly.8": "$(item)Эбеновая псиметаллическая сборка CAD$(0) — это топовый тип $(item)Сборки.$(0)$(p)Она чуть менее эффективна, но выдерживает большую $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l), чем её $(l:components/assembly#ivory)$(item)Слоновая$(0)$(/l) версия.",
  "psi.book.page.assembly.9": "Тяжёлая артиллерия (в переносном смысле)",
  "psi.book.page.assembly.10": "$(item)Слоновая псиметаллическая сборка CAD$(0) — это топовый тип $(item)Сборки.$(0)$(p)Она чуть менее мощная, но имеет большую $(l:basics/tutorial_5#cost)$(thing)Эффективность$(0)$(/l), чем её $(l:components/assembly#ebony)$(item)Эбеновая$(0)$(/l) версия.",
  "psi.book.page.assembly.11": "Плыви по течению",
  "psi.book.entry.core": "Ядра",
  "psi.book.page.core.0": "$(thing)Ядро$(0) $(thing)CAD$(0) — это по сути его процессор: оно отвечает за чтение $(thing)Заклинания$(0) из $(l:components/socket)$(thing)Сокета$(0)$(/l), выполнение вычислений и использование $(thing)Пси-энергии$(0) для создания эффектов $(thing)Трюков$(0) в мире.$(p)$(thing)Ядра CAD$(0) крафтятся из четырёх проводящих $(thing)Пси$(0) материалов, размещённых вокруг центральной пыли (в роли процессора).",
  "psi.book.page.core.1": "У каждого $(thing)Ядра CAD$(0) есть $(l:basics/tutorial_5#complexity)$(thing)Сложность$(0)$(/l) — это максимальное количество вычислений ($(thing)Селекторы$(0), $(thing)Операторы$(0), не-отладочные $(thing)Трюки$(0)), которые $(thing)Ядро$(0) может выполнить за одно $(thing)Заклинание$(0).$(p)Также у $(thing)Ядра$(0) есть $(l:basics/tutorial_5#projection)$(thing)Проекция$(0)$(/l) — это просто общее количество не-отладочных $(thing)Трюков$(0), которые оно может выполнить одновременно.",
  "psi.book.page.core.2": "$(item)Базовое ядро CAD$(0) создаётся из оболочки из $(item)Железа$(0) вокруг $(l:components/psidust)$(item)Псипыли$(0)$(/l) и часто становится первым $(thing)Ядром CAD$(0), которое создаёт маг.$(p)Оно не выдающееся (в частности, может кастовать только один $(thing)Трюк$(0) за раз), но вполне достаточно для новичка.",
  "psi.book.page.core.3": "Заклинание на вынос",
  "psi.book.page.core.4": "Если вместо $(item)Железа$(0) использовать $(l:components/psimetal)$(item)Псиметалл$(0)$(/l) вокруг $(thing)Ядра CAD$(0), можно выбрать другой тип пыли в центре.$(p)Если использовать $(item)Редстоуновую пыль$(0), получится $(item)Разогнанное ядро CAD$(0), которое обладает вдвое большей $(l:basics/tutorial_5#complexity)$(thing)Сложностью$(0)$(/l), чем его $(l:components/core#basic)$(item)Базовый$(0)$(/l) предшественник, и втрое большей $(l:basics/tutorial_5#projection)$(thing)Проекцией$(0)$(/l).",
  "psi.book.page.core.5": "Трюк в шляпе",
  "psi.book.page.core.6": "Если вместо этого в оболочку из $(l:components/psimetal)$(item)Псиметалла$(0)$(/l) поместить $(item)Светокаменную пыль$(0), получится $(item)Проводящее ядро CAD$(0).$(p)Это $(thing)Ядро$(0) поддерживает меньшую $(l:basics/tutorial_5#complexity)$(thing)Сложность$(0) по сравнению с вариантом на $(item)Редстоуновой пыли$(0), но может выполнять четыре $(thing)Трюка$(0) одновременно (против трёх у $(l:components/core#overclocked)$(item)Разогнанного$(0)$(/l)).",
  "psi.book.page.core.7": "Настоящая магия трюков",
  "psi.book.page.core.8": "Встраивание двух $(l:components/psigem)$(item)Псигемов$(0)$(/l) в рецепт $(thing)Ядра CAD$(0) даёт $(o)серьёзный$() прирост производительности.$(p)$(item)Гиперразогнанное ядро CAD$(0) с $(item)Редстоуновой пылью$(0) в центре имеет вдвое большую $(l:basics/tutorial_5#complexity)$(thing)Сложность$(0)$(/l), чем $(l:components/core#conductive)$(item)Проводящее$(0)$(/l) ядро, $(o)и$() вдвое большую $(l:basics/tutorial_5#projection)$(thing)Проекцию$(0)$(/l), чем $(l:components/core#overclocked)$(item)Разогнанное$(0)$(/l).",
  "psi.book.page.core.9": "Время не покажет",
  "psi.book.page.core.10": "Если использовать $(l:components/psigem)$(item)Псигемы$(0)$(/l) в $(thing)Ядре CAD$(0) с $(item)Светокаменной пылью$(0) в центре, получится $(item)Радиационное ядро CAD$(0).$(p)Это $(thing)Ядро$(0) имеет меньшую $(l:basics/tutorial_5#projection)$(thing)Проекцию$(0)$(/l), чем $(l:components/core#hyperclocked)$(item)Гиперразогнанное$(0)$(/l), но способно выполнять целых $(o)семь$() $(thing)Трюков$(0) за каст.",
  "psi.book.page.core.11": "Без технеция",
  "psi.book.entry.socket": "Сокеты",
  "psi.book.page.socket.0": "$(thing)Сокет$(0) $(thing)CAD$(0) — это по сути его обойма.$(p)В него заряжаются $(l:items/spell_bullet)$(thing)Пули заклинаний$(0)$(/l), и он отвечает за передачу скомпилированных $(thing)Заклинаний$(0), содержащихся в $(l:items/spell_bullet)$(thing)Пулях$(0)$(/l), в $(l:components/core)$(thing)Ядро$(0)$(/l) для обработки.$(p)$(thing)Сокеты$(0) крафтятся с использованием пыли, которая соединяет $(l:items/spell_bullet)$(thing)Пули$(0)$(/l) с металлической основой.",
  "psi.book.page.socket.1": "У $(thing)Сокета$(0) есть $(l:basics/tutorial_5#bandwidth)$(thing)Пропускная способность$(0)$(/l) — это максимальный размер (в ячейках сетки) $(thing)Заклинания$(0), которое он может передать в $(l:components/core)$(thing)Ядро$(0)$(/l) за раз. Например, сокет с пропускной способностью 5 может передать заклинание размером до 5x5.$(p)Также у него есть количество $(thing)Сокетов$(0) — отсеков, в каждом из которых может храниться по одной $(l:items/spell_bullet)$(thing)Пуле заклинаний$(0)$(/l).",
  "psi.book.page.socket.2": "$(item)Базовый сокет CAD$(0) — самый простой из $(thing)Сокетов$(0), крафтится из $(l:components/psidust)$(item)Псипыли$(0)$(/l) на основе из $(item)Железа$(0).$(p)Вмещает до четырёх $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l) одновременно и может передавать заклинания размером до 5x5.",
  "psi.book.page.socket.3": "Вставь и кастуй",
  "psi.book.page.socket.4": "Если заменить основу из $(item)Железа$(0) на более проводящий металл (например, $(l:components/psimetal)$(item)Псиметалл$(0)$(/l)), можно выбрать другую пыль для соединения с $(l:items/spell_bullet)$(thing)Пулями заклинаний$(0)$(/l).$(p)Использование $(item)Редстоуновой пыли$(0) даёт $(item)Сигнальный сокет CAD$(0), который вмещает до шести $(l:items/spell_bullet)$(thing)Пуль$(0)$(/l), каждую с заклинанием до 7x7.",
  "psi.book.page.socket.5": "Русская рулетка",
  "psi.book.page.socket.6": "Если положить $(item)Светокаменную пыль$(0) на основу из $(l:components/psimetal)$(item)Псиметалла$(0)$(/l), получится $(item)Большой сокет CAD$(0).$(p)Этот $(thing)Сокет$(0) не поддерживает такие большие заклинания, как его $(l:components/socket#signaling)$(item)Сигнальный$(0)$(/l) аналог (только до 6x6), но может хранить до восьми $(l:items/spell_bullet)$(thing)Пуль$(0)$(/l) одновременно.",
  "psi.book.page.socket.7": "Почти бесконечно",
  "psi.book.page.socket.8": "Улучшение $(thing)Сокета$(0) в рецепте с помощью $(l:components/psigem)$(item)Псигема$(0)$(/l) позволяет передавать гораздо больше данных и быстрее.$(p)$(l:components/socket#signaling)$(item)Сигнальный сокет CAD$(0)$(/l) с таким улучшением становится $(item)Передающим сокетом CAD$(0), который может хранить до десяти $(l:items/spell_bullet)$(thing)Пуль$(0)$(/l) и способен обработать $(o)любое$() заклинание, помещающееся в $(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l).",
  "psi.book.page.socket.9": "Проклятие Авариции",
  "psi.book.page.socket.10": "$(l:components/socket#large)$(item)Большой сокет CAD$(0)$(/l), улучшенный $(l:components/psigem)$(item)Псигемом$(0)$(/l), становится $(item)Огромным сокетом CAD$(0).$(p)У него нет $(l:basics/tutorial_5#bandwidth)$(thing)Пропускной способности$(0)$(/l) $(l:components/socket#transmissive)$(item)Передающего$(0)$(/l) аналога (только заклинания до 8x8), но он может хранить до двенадцати $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l).",
  "psi.book.page.socket.11": "Надеюсь, Офиух не против",
  "psi.book.entry.battery": "Батареи",
  "psi.book.page.battery.0": "$(thing)Батарея CAD$(0) — это необязательное дополнение к $(thing)CAD$(0), позволяющее ему хранить небольшой запас $(thing)Пси-энергии$(0) владельца — $(thing)Переполнение$(0) показывает, сколько именно.$(p)$(thing)Батарея$(0) разряжается после того, как основной запас $(thing)Пси-энергии$(0) пользователя иссякнет, но до того, как $(thing)CAD$(0) начнёт забирать здоровье.",
  "psi.book.page.battery.1": "По сути, $(thing)Батарея$(0) — это небольшой запас $(thing)Пси-энергии$(0) на всякий случай.$(p)Она нужна, чтобы можно было немного перерасходовать энергию без урона или ожидания восстановления.$(p)Все $(thing)Батареи$(0) крафтятся из проводящего $(thing)Пси-энергию$(0) материала между $(item)Железным$(0) и $(item)Золотым слитком$(0).$(p)Текущий заряд $(thing)Батареи$(0) можно получить в заклинании с помощью $(piece)Selector: Caster Battery$(0).",
  "psi.book.page.battery.2": "Не литий-ионная",
  "psi.book.page.battery.3": "Металлическая тема",
  "psi.book.page.battery.4": "Звоните 1-(800)-BATTERY",
  "psi.book.entry.colorizer": "Колорайзеры",
  "psi.book.page.colorizer.0": "$(thing)Колорайзер CAD$(0) — это необязательное дополнение к $(thing)CAD$(0), изменяющее цвет $(thing)Пси-энергии$(0) пользователя при проявлении в мире.$(p)Все $(thing)Колорайзеры$(0) крафтятся на основе $(item)Железного слитка$(0), сверху кладётся $(l:components/psidust)$(item)Псипыль$(0)$(/l), по бокам — по одному $(item)Стеклу$(0), а в центр — краситель или другой цветовой предмет.",
  "psi.book.page.colorizer.1": "$(thing)Колорайзер$(0) можно скрафтить с любым из шестнадцати стандартных $(item)Красителей$(0) для получения соответствующего цвета.$(p)Если вместо красителя использовать $(item)Призмариновые кристаллы$(0), итоговый $(thing)Колорайзер$(0) будет переливаться всеми цветами радуги.$(p)Если же не использовать цветовой предмет вовсе, $(thing)Колорайзер$(0) будет $(o)вытягивать$() цвет $(o)из$() $(thing)Пси-энергии$(0) пользователя, и частицы станут почти невидимыми.",
  "psi.book.page.colorizer.2": "Использование $(l:components/psidust)$(item)Псипыли$(0)$(/l) в качестве цветового предмета в $(thing)Колорайзере$(0) для большинства людей не даёт эффекта, хотя некоторые утверждают обратное.$(p)$(thing)Колорайзер$(0) в $(thing)CAD$(0) влияет на:$(p)$(li)частицы, испускаемые $(thing)CAD$(0);$(p)$(li)снаряды и $(l:items/circle_bullet)$(thing)Круги заклинаний$(0)$(/l);$(p)$(li)блоки и свет, созданные $(piece)трюками конъюрации$(0).",
  "psi.book.page.colorizer.3": "Вкус радуги",
  "psi.book.category.items": "Предметы",
  "psi.book.category.items.desc": "В этом разделе собраны всевозможные предметы, инструменты и утилиты, которые помогут тебе в создании и касте $(thing)Заклинаний$(0).",
  "psi.book.entry.spellBullet": "Типы пуль заклинаний",
  "psi.book.page.spellBullet.0": "$(thing)Пуля заклинания$(0) — это простой предмет: при вставке в $(thing)CAD$(0) в $(l:components/socket)$(thing)Сокет$(0)$(/l) она просто передаёт данные (и метаданные) своего $(thing)Заклинания$(0) в $(thing)CAD$(0).$(p)Но $(thing)Пули$(0) бывают разных типов, у каждого свои особенности.$(p)На следующей странице есть подробная информация по каждому типу $(thing)Пули$(0).",
  "psi.book.page.spellBullet.1": "Если нужен конкретный тип $(thing)Пули заклинаний$(0), вот они.",
  "psi.book.page.spellBullet.2": "Каждый тип $(thing)Пули заклинаний$(0) крафтится из $(item)Железного слитка$(0) и $(l:components/psidust)$(item)Псипыли$(0)$(/l), размещённых горизонтально в верстаке.$(p)Если больше ничего не добавлять, получится самый базовый тип $(thing)Пули заклинаний$(0), который так и называется — $(l:items/basic_bullet)$(item)Пуля заклинаний$(0)$(/l).$(p)Для других типов $(thing)Пуль$(0) нужен ещё один ингредиент, размещённый рядом с $(item)Железным слитком$(0).",
  "psi.book.page.spellBullet.3": "Ингредиенты для других типов $(thing)Пуль заклинаний$(0):$(p)$(li)$(l:items/projectile_bullet)$(item)Пуля-снаряд$(0)$(/l) — любой $(item)Стрелу$(0),$(p)$(li)$(l:items/loopcast_bullet)$(item)Пуля-петля$(0)$(/l) — $(item)Нить$(0),$(p)$(li)$(l:items/circle_bullet)$(item)Круглая пуля$(0)$(/l) — что-то круглое ($(item)Снежок$(0) или $(item)Слизь$(0)),$(p)$(li)$(l:items/grenade_bullet)$(item)Пуля-граната$(0)$(/l) — $(item)Порох$(0),$(p)$(li)$(l:items/charge_bullet)$(item)Пуля-заряд$(0)$(/l) — $(item)Редстоуновая пыль$(0),$(p)$(li)$(l:items/mine_bullet)$(item)Пуля-мину$(0)$(/l) — любой $(item)Кнопку$(0).",
  "psi.book.page.spellBullet.4": "Перед тем как загрузить $(thing)Пулю заклинаний$(0) в $(thing)CAD$(0), на неё нужно записать $(thing)Заклинание$(0).$(p)Чтобы записать $(thing)Заклинание$(0) на $(l:basics/spell_programmer)$(item)Программаторе заклинаний$(0)$(/l) в $(thing)Пулю$(0), просто проведи $(thing)Пулей заклинаний$(0) по $(l:basics/spell_programmer)$(item)Программатору$(0)$(/l) ($(k:use)).$(p)$(thing)Заклинание$(0), записанное на $(thing)Пуле заклинаний$(0), можно скопировать в пустой $(l:items/spell_drive)$(item)Носитель заклинаний$(0)$(/l) для хранения.",
  "psi.book.page.spellBullet.5": "$(l:basics/spell_programmer)$(item)Программатор заклинаний$(0)$(/l) показывает $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) любого успешно скомпилированного $(thing)Заклинания$(0), но для разных типов $(thing)Пуль$(0) эта $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) может отличаться.$(p)Значение $(l:basics/spell_programmer)$(item)Программатора$(0)$(/l) рассчитано для базовой $(l:items/basic_bullet)$(item)Пули заклинаний$(0)$(/l).",
  "psi.book.page.spellBullet.6": "У всех остальных типов $(thing)Пуль заклинаний$(0) есть $(thing)Множитель стоимости$(0) в процентах, который нужно умножить на стоимость, показанную в $(l:basics/spell_programmer)$(item)Программаторе$(0)$(/l), чтобы узнать реальную $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) для этого типа $(thing)Пули$(0).$(p)Например, если $(thing)Заклинание$(0) показывает итоговую стоимость 300 в $(l:basics/spell_programmer)$(item)Программаторе$(0)$(/l), а вы копируете его в $(l:items/projectile_bullet)$(item)Пулю-снаряд$(0)$(/l) (с $(thing)Множителем стоимости$(0) 102%%), то реальная $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) будет$(br)300 × 102%% = 306 $(thing)Пси-энергии$(0) за каст.",
  "psi.book.page.spellBullet.7": "Многие типы $(thing)Пуль заклинаний$(0) добавляют задержку между кастом $(thing)Заклинания$(0) и его фактическим исполнением.$(p)Важно помнить, что $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) заклинания списывается сразу и полностью, и не возвращается — даже если $(thing)Трюки$(0) в $(thing)Заклинании$(0) не сработают.",
  "psi.book.page.spellBullet.8": "У каждого $(thing)Заклинания$(0) при касте есть $(thing)Фокусная точка$(0).$(p)$(thing)Фокусная точка$(0) — это место, куда проецируется $(thing)Пси-энергия$(0) заклинателя (в виде одного или нескольких $(thing)Трюков$(0)).$(p)$(thing)Фокусная точка$(0) не может выполнять $(thing)Трюки$(0) или $(thing)Селекторы$(0) дальше 32 блоков (кроме тех, что влияют на самого заклинателя).$(p)$(thing)Заклинание$(0) может получить свою $(thing)Фокусную точку$(0) через $(piece)Selector: Focal Point$(0).",
  "psi.book.page.spellBullet.9": "Положение $(thing)Фокусной точки$(0) зависит от типа $(thing)Пули заклинаний$(0), из которой кастуется заклинание.$(p)У базовой $(l:items/basic_bullet)$(item)Пули заклинаний$(0)$(/l) $(thing)Фокусная точка$(0) — это сам заклинатель, но другие типы $(l:items/basic_bullet)$(item)Пуль заклинаний$(0)$(/l) могут создавать разные $(thing)Фокусные точки$(0).$(p)Например, у $(l:items/projectile_bullet)$(item)Пули-снаряда$(0)$(/l) $(thing)Фокусная точка$(0) — сам снаряд.$(p)Подробнее о $(thing)Фокусных точках$(0) и особенностях каждого типа $(thing)Пули$(0) смотри в отдельных разделах.",
  "psi.book.entry.basicBullet": "Пуля заклинаний",
  "psi.book.page.basicBullet.0": "Самый простой тип $(l:items/spell_bullet)$(thing)Пули заклинаний$(0)$(/l) (и одноимённый предмет) — обычная $(item)Пуля заклинаний$(0), хранящая $(thing)Заклинание$(0).$(p)Когда $(thing)Заклинание$(0) из неё кастуется, оно срабатывает сразу. $(l:items/spell_bullet#focal_point)$(thing)Фокусная точка$(0)$(/l) для этого типа $(l:items/spell_bullet)$(thing)Пули$(0)$(/l) — сам заклинатель. Стоимость каста ровно такая, как указано в $(l:basics/spell_programmer)$(item)Программаторе заклинаний$(0)$(/l).$(p)Без подвоха.",
  "psi.book.page.basicBullet.1": "Порох не нужен",
  "psi.book.entry.projectileBullet": "Пуля-снаряд",
  "psi.book.page.projectileBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Пули-снаряда$(0), не срабатывает сразу.$(p)Вместо этого быстрый $(thing)Снаряд заклинания$(0) выстреливается из $(thing)CAD$(0), откуда был каст.$(p)Этот снаряд становится $(l:items/spell_bullet#focal_point)$(thing)Фокусной точкой$(0)$(/l) для $(thing)Заклинания$(0), срабатывая при столкновении.",
  "psi.book.page.projectileBullet.1": "Не совсем полдень",
  "psi.book.page.projectileBullet.2": "$(thing)Снаряд заклинания$(0) не физический: это оболочка из $(thing)Пси-энергии$(0) вокруг $(thing)Заклинания$(0) (отсюда и дополнительная стоимость в $(l:items/spell_bullet)$(thing)Пуле$(0)$(/l)).$(p)Он может существовать до тридцати секунд, прежде чем рассеется.$(p)$(thing)Снаряд заклинания$(0) очень быстр и может пролететь более 200 блоков за свою жизнь.",
  "psi.book.page.projectileBullet.3": "Сохранённое $(thing)Заклинание$(0) активируется при столкновении с блоком или существом.$(p)В последнем случае $(piece)Selector: Attack Target$(0) позволяет определить, кого вы задели.$(p)Если же снаряд ни с чем не столкнётся, $(thing)Заклинание$(0) сгорит впустую, а $(thing)Пси-энергия$(0) пропадёт — целься аккуратно!",
  "psi.book.entry.loopcastBullet": "Пуля-петля",
  "psi.book.page.loopcastBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Пули-петли$(0), исполняется как из обычной $(l:items/basic_bullet)$(item)Пули заклинаний$(0)$(/l).$(p)Но многократно.$(p)$(thing)Заклинание$(0) из такой $(l:items/spell_bullet)$(thing)Пули$(0)$(/l) исполняется снова и снова, четыре раза в секунду, пока $(thing)CAD$(0) не уберут из руки или не выберут другое заклинание.",
  "psi.book.page.loopcastBullet.1": "Определение безумия",
  "psi.book.page.loopcastBullet.2": "$(l:items/spell_bullet#focal_point)$(thing)Фокусная точка$(0)$(/l) для $(thing)Заклинания$(0) из $(item)Пули-петли$(0) — сам заклинатель, и полная $(thing)Стоимость$(0) списывается при каждом исполнении.$(p)Главное преимущество — $(o)регенерация$() $(thing)Пси-энергии$(0) между кастами.",
  "psi.book.page.loopcastBullet.3": "Когда кастуешь $(thing)Заклинание$(0) (или получаешь урон), твоя $(thing)Пси-энергия$(0) временно выходит из равновесия и не может регенерировать, пока не восстановится.$(br)Это занимает немного времени.$(p)Но при касте из $(item)Пули-петли$(0) задержка возникает только $(o)один раз$() — дальше $(l:items/spell_bullet)$(thing)Пуля$(0)$(/l) не мешает регенерации.",
  "psi.book.page.loopcastBullet.4": "$(thing)Заклинание$(0) из такой $(l:items/spell_bullet)$(thing)Пули$(0)$(/l) может делать разное на каждом вызове.$(p)$(piece)Selector: Loopcast Index$(0) возвращает номер текущего исполнения с момента первого каста.$(p)То есть, первый раз — 1, второй — 2 и так далее.",
  "psi.book.page.loopcastBullet.5": "В связке с $(piece)Operator: Integer Divide$(0) и $(piece)Operator: Modulus$(0) эти $(l:items/spell_bullet)$(thing)Пули$(0) позволяют массово обрабатывать большие области.",
  "psi.book.entry.circleBullet": "Круглая пуля",
  "psi.book.page.circleBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Круглой пули$(0), исполняется подряд ровно двадцать раз.$(p)При первом касте создаётся $(thing)Круг заклинания$(0) в точке, куда смотрит заклинатель — он становится $(l:items/spell_bullet#focal_point)$(thing)Фокусной точкой$(0)$(/l) для $(thing)Заклинания$(0). Круг исполняет заклинание четыре раза в секунду, пока не закончится $(thing)Пси-энергия$(0) — через пять секунд.",
  "psi.book.page.circleBullet.1": "Оптима для заклинателей",
  "psi.book.page.circleBullet.2": "$(thing)Круг заклинания$(0) появляется на расстоянии до 32 блоков от заклинателя или на ближайшем блоке по взгляду.$(p)Как и у $(l:items/loopcast_bullet)$(item)Пули-петли$(0)$(/l), $(thing)Заклинание$(0) из круга может узнать номер текущей итерации через $(piece)Selector: Loopcast Index$(0) (от 1 до 20 включительно).",
  "psi.book.page.circleBullet.3": "$(thing)Круг заклинания$(0) тратит всю $(thing)Пси-энергию$(0) при первом касте, отсюда огромный $(thing)Множитель стоимости$(0) — 1500%%.$(p)Но высокая $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l) компенсируется эффективностью: за цену 15 кастов исполняется 20.$(p)То есть, скидка 25%% на каждый каст.",
  "psi.book.page.circleBullet.4": "$(item)Круглые пули$(0) популярны у новичков и опытных магов за универсальность и экономию $(thing)Пси-энергии$(0).$(p)Есть несколько трюков, которые особенно часто используют именно с круглыми пулями.",
  "psi.book.page.circleBullet.5": "Идиома $(thing)Circlesync$(0) позволяет всем двадцати исполнениям $(thing)Заклинания$(0) произойти одновременно, создавая мощный эффект.$(p)Идиома $(thing)20-Bit Tower$(0) требует $(l:items/vector_ruler)$(item)Векторной линейки$(0)$(/l), но позволяет выполнять действие только на части из 20 исполнений.",
  "psi.book.subsec.circleBullet.6": "Circlesync",
  "psi.book.page.circleBullet.6": "Идиома $(thing)Circlesync$(0) (на рисунке справа) использует $(piece)Trick: Sleep$(0) в основе.$(p)В $(thing)Заклинании$(0) она задерживает каждое исполнение ровно на столько, сколько осталось до последнего $(thing)Трюка$(0).$(p)Все $(thing)Трюки$(0) после $(piece)Trick: Sleep$(0) срабатывают одновременно.",
  "psi.book.page.circleBullet.7": "Когда звёзды сходятся...",
  "psi.book.subsec.circleBullet.8": "20-Bit Tower",
  "psi.book.page.circleBullet.8": "Идиома $(thing)20-Bit Tower$(0) — продвинутая техника.$(p)Для неё выбери блок $(l:items/vector_ruler)$(item)Векторной линейкой$(0)$(/l), затем построй столб из 20 блоков прямо над выбранной точкой, после чего скопируй код со следующей страницы в начало $(thing)Заклинания$(0).",
  "psi.book.page.circleBullet.9": "Каждая позиция в этом столбе — отдельное исполнение $(thing)Заклинания$(0): нижняя — первое, выше — второе и так далее.$(p)Пустое место — \"$(o)ВЫПОЛНИТЬ$() на этой итерации\", блок — \"$(o)НЕ ВЫПОЛНЯТЬ$()\".$(p)Скопируй код со следующей страницы в начало $(thing)Заклинания$(0).",
  "psi.book.page.circleBullet.10": "Условно",
  "psi.book.entry.grenadeBullet": "Пуля-граната",
  "psi.book.page.grenadeBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Пули-гранаты$(0), не срабатывает сразу, а выстреливается из $(thing)CAD$(0) в виде $(thing)Гранаты заклинания$(0).$(p)В отличие от $(l:items/projectile_bullet)$(thing)Снаряда заклинания$(0)$(/l), граната $(o)подвержена$() гравитации.$(p)Она срабатывает ровно через три секунды — не раньше и не позже.",
  "psi.book.page.grenadeBullet.1": "Дёргай спуск, не чеку",
  "psi.book.page.grenadeBullet.2": "$(thing)Граната заклинания$(0) — нематериальная оболочка $(thing)Пси-энергии$(0), созданная из излишка $(item)Пули-гранаты$(0).$(p)Граната также становится $(l:items/spell_bullet#focal_point)$(thing)Фокусной точкой$(0)$(/l) для $(thing)Заклинания$(0) при срабатывании.$(p)Хотя кажется ограниченной, $(thing)Граната заклинания$(0) может достать туда, куда снаряд не долетит (например, за стену или в яму).",
  "psi.book.page.grenadeBullet.3": "$(thing)Граната заклинания$(0) запоминает последнее существо, с которым соприкоснулась.$(p)При срабатывании $(thing)Заклинания$(0) это существо можно получить через $(piece)Selector: Attack Target$(0), если применимо.",
  "psi.book.entry.chargeBullet": "Пуля-заряд",
  "psi.book.page.chargeBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Пули-заряда$(0), не срабатывает сразу, а выстреливается из $(thing)CAD$(0) в виде $(thing)Заряда заклинания$(0), который подчиняется гравитации, как и $(l:items/grenade_bullet)$(thing)Граната заклинания$(0)$(/l).$(p)Однако, в отличие от $(l:items/grenade_bullet)$(thing)Гранаты заклинания$(0)$(/l), $(thing)Заряд заклинания$(0) может существовать до пяти минут и срабатывает только по команде через $(l:items/detonator)$(item)Детонатор заклинаний$(0)$(/l).",
  "psi.book.page.chargeBullet.1": "Накопление силы",
  "psi.book.page.chargeBullet.2": "$(thing)Заряд заклинания$(0) — это стабильная оболочка $(thing)Пси-энергии$(0) вокруг $(thing)Заклинания$(0), служащая $(l:items/spell_bullet#focal_point)$(thing)Фокусной точкой$(0)$(/l) при срабатывании.$(p)Если $(thing)Заряд заклинания$(0) не активировать вовремя, он просто рассеется, а $(thing)Пси-энергия$(0) пропадёт.",
  "psi.book.page.chargeBullet.3": "Несколько $(thing)Зарядов заклинаний$(0) рядом можно активировать одновременно одним $(l:items/detonator)$(item)Детонатором заклинаний$(0)$(/l) (или $(piece)Trick: Detonate$(0)), что удобно для массовых эффектов.$(p)$(thing)Заряд заклинания$(0) запоминает последнее существо, с которым соприкоснулся (или которое на него наступило).$(p)При срабатывании $(thing)Заклинания$(0) это существо доступно через $(piece)Selector: Attack Target$(0), если применимо.",
  "psi.book.entry.mineBullet": "Пуля-мину",
  "psi.book.page.mineBullet.0": "$(thing)Заклинание$(0), кастованное из $(item)Пули-мины$(0), выстреливается из $(thing)CAD$(0) в виде $(thing)Мины заклинания$(0).$(p)$(thing)Мина заклинания$(0) подчиняется гравитации, живёт пять минут и срабатывает только когда на неё наступит кто-то (или что-то).",
  "psi.book.page.mineBullet.1": "Дороги домой...",
  "psi.book.page.mineBullet.2": "Условия срабатывания $(thing)Мины заклинания$(0) довольно хитрые: она лежит на земле и ждёт, пока на неё наступят.$(p)Когда на ней кто-то стоит, она не срабатывает сразу, а только \"взводится\".$(p)Когда взведена и на ней больше никто не стоит, только тогда она срабатывает.",
  "psi.book.page.mineBullet.3": "Существо, которое активировало $(thing)Заклинание$(0) (то есть последнее, кто сошёл с $(thing)Мины заклинания$(0)), доступно через $(piece)Selector: Attack Target$(0).$(p)Если условия активации не выполнены за время жизни, мина просто исчезает, а энергия пропадает.$(p)Так что если наступил на $(thing)Мину заклинания$(0), иногда лучше просто подождать.",
  "psi.book.entry.detonator": "Детонатор заклинаний",
  "psi.book.page.detonator.0": "$(item)Детонатор заклинаний$(0) крафтится из двух $(item)Железных слитков$(0), $(l:components/psidust)$(item)Псипыли$(0)$(/l) и $(item)Кнопки$(0).$(p)Он выполняет одну функцию: при активации ($(k:use)) взрывает все $(l:items/charge_bullet)$(thing)Заряды заклинаний$(0)$(/l) (и $(l:items/exosuit_sensor#trigger)$(item)Детонаторы экзокостюма$(0)$(/l)), созданные тобой в радиусе 32 блоков, заставляя их одновременно исполнить свои $(thing)Заклинания$(0).",
  "psi.book.page.detonator.1": "Первая бомба",
  "psi.book.entry.exosuit": "Псиметаллический экзокостюм",
  "psi.book.page.exosuit.0": "$(thing)Псиметаллический экзокостюм$(0) — это броня, позволяющая интегрировать каст $(thing)Заклинаний$(0) в обычные приключения!$(p)Каждая часть $(thing)Экзокостюма$(0) крафтится из двух $(l:components/psigem)$(item)Псигемов$(0)$(/l) и $(l:components/psimetal)$(item)Псиметалла$(0)$(/l), и может кастовать $(thing)Заклинание$(0) при срабатывании соответствующего триггера.",
  "psi.book.page.exosuit.1": "$(thing)Заклинания$(0) экзокостюма кастуются с фокусом на твой $(thing)CAD$(0), так что действуют обычные ограничения.$(p)В каждую часть $(thing)Псиметаллического экзокостюма$(0) можно загрузить до трёх $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l) в $(l:basics/cad_assembler)$(item)Сборщике CAD$(0)$(/l), но некоторые типы $(l:items/spell_bullet)$(thing)Пуль$(0)$(/l) не работают с костюмом.$(p)Часть костюма запоминает количество успешных кастов — это число можно получить через $(piece)Selector: Success Counter$(0).",
  "psi.book.page.exosuit.2": "Чтобы выбрать $(thing)Заклинание$(0) для части костюма, скрафти $(item)Контроллер экзокостюма$(0) из $(item)Редстоуновой пыли$(0), $(item)Стекла$(0) и $(l:components/psimetal)$(item)Псиметалла$(0)$(/l). Для использования $(item)Контроллера$(0) зажми $(thing)Psi-клавишу$(0) ($(k:psimisc.keybind)).$(p)Используй правую и левую кнопку мыши для переключения частей костюма.",
  "psi.book.page.exosuit.3": "Не JARVIS, но работает",
  "psi.book.page.exosuit.4": "После выбора части костюма выбери одну из $(l:items/spell_bullet)$(thing)Пуль заклинаний$(0)$(/l) так же, как для $(thing)CAD$(0).$(p)Выбор пустого четвёртого слота полностью отключает эту часть — $(thing)Заклинания$(0) не будут кастоваться даже при выполнении условий.",
  "psi.book.page.exosuit.5": "$(thing)Псиметаллический экзокостюм$(0) немного прочнее и долговечнее $(thing)Железной брони$(0).$(p)Все части костюма используют избыточную $(thing)Пси-энергию$(0) владельца для самовосстановления — это возможно благодаря $(l:components/psigem)$(item)Псигемам$(0)$(/l) в их составе.",
  "psi.book.page.exosuit.6": "$(item)Псиметаллический шлем экзокостюма$(0) — самый настраиваемый: он кастует выбранное $(thing)Заклинание$(0) при срабатывании $(l:items/exosuit_sensor)$(thing)Сенсора экзокостюма$(0)$(/l).$(p)$(l:items/exosuit_sensor)$(thing)Сенсор$(0)$(/l) крепится и снимается с $(item)Шлема$(0) в верстаке; на шлеме может быть только один $(l:items/exosuit_sensor)$(thing)Сенсор экзокостюма$(0)$(/l).",
  "psi.book.page.exosuit.7": "Слышишь звук — обернись",
  "psi.book.page.exosuit.8": "$(item)Псиметаллический нагрудник экзокостюма$(0) кастует выбранное $(thing)Заклинание$(0) при получении любого урона.$(p)$(piece)Selector: Attacker$(0) и $(piece)Selector: Damage Taken$(0) позволяют узнать источник и величину урона.",
  "psi.book.page.exosuit.9": "Взрывные шипы",
  "psi.book.page.exosuit.10": "$(item)Псиметаллические поножи экзокостюма$(0) $(o)никогда не перестают$() кастовать выбранное $(thing)Заклинание$(0).$(p)Они делают это раз в тик $(thing)CAD$(0) (0,05 секунды).$(p)Их часто используют как \"улучшённые $(l:items/loopcast_bullet)$(item)Пули-петли$(0)$(/l)\".",
  "psi.book.page.exosuit.11": "while(true) {}",
  "psi.book.page.exosuit.12": "$(item)Псиметаллические ботинки экзокостюма$(0) просто кастуют выбранное $(thing)Заклинание$(0) при прыжке владельца.$(p)Не больше, не меньше.",
  "psi.book.page.exosuit.13": "Прыжковые... эээ... ботинки",
  "psi.book.entry.exosuitSensor": "Сенсоры экзокостюма",
  "psi.book.page.exosuitSensor.0": "$(thing)Сенсоры экзокостюма$(0) — это небольшие устройства для встраивания в броню (например, в $(l:items/exosuit#helmet)$(item)Псиметаллический шлем экзокостюма$(0)$(/l)), которые подают сигнал при срабатывании.$(p)У каждого $(thing)Сенсора$(0) своё условие срабатывания.",
  "psi.book.page.exosuitSensor.1": "Все $(thing)Сенсоры$(0) крафтятся из двух $(item)Железных слитков$(0) и двух $(l:components/psimetal)$(item)Псиметаллов$(0)$(/l) вокруг реагента; реагент определяет эффект $(thing)Сенсора$(0):$(p)$(li)$(item)Световой сенсор$(0) — $(item)Светокаменная пыль$(0);$(p)$(li)$(item)Тепловой сенсор$(0) — $(item)Огненный заряд$(0);$(p)$(li)$(item)Сенсор стресса$(0) — $(item)Сверкающий арбуз$(0);$(p)$(li)$(item)Водяной сенсор$(0) — $(item)Призмариновые кристаллы$(0);$(p)$(li)$(item)Сенсор детонации$(0) — $(item)Порох$(0).",
  "psi.book.page.exosuitSensor.2": "$(item)Световой сенсор экзокостюма$(0) срабатывает, когда владелец заходит в тёмную область (где могут появляться мобы) из светлой.$(p)Можно вручную сработать в темноте с помощью $(piece)Trick: Conjure Light$(0) по таймеру.",
  "psi.book.page.exosuitSensor.3": "Кто выключил свет?",
  "psi.book.page.exosuitSensor.4": "$(item)Тепловой сенсор экзокостюма$(0) срабатывает, когда владелец загорается.$(p)$(piece)Trick: Fire Resistance$(0) или $(piece)Trick: Torrent$(0) — хорошие ответы, если только ты $(o)не$() знаешь, что делаешь.",
  "psi.book.page.exosuitSensor.5": "Держимся!",
  "psi.book.page.exosuitSensor.6": "$(item)Сенсор стресса экзокостюма$(0) срабатывает, когда у владельца мало здоровья (три сердца или меньше).$(p)$(piece)Trick: Regeneration$(0) может помочь.",
  "psi.book.page.exosuitSensor.7": "Не паникуй",
  "psi.book.page.exosuitSensor.8": "$(item)Водяной сенсор экзокостюма$(0) срабатывает при контакте с водой.$(p)С помощью $(piece)Trick: Torrent$(0) можно сработать вручную.",
  "psi.book.page.exosuitSensor.9": "Плюхнись!",
  "psi.book.page.exosuitSensor.10": "$(item)Сенсор детонации экзокостюма$(0) срабатывает, когда $(l:items/detonator)$(item)Детонатор заклинаний$(0)$(/l) активируется в радиусе 32 блоков или когда в этой области кастуется $(piece)Trick: Detonate$(0).",
  "psi.book.page.exosuitSensor.11": "По нажатию кнопки",
  "psi.book.entry.tools": "Псиметаллические инструменты",
  "psi.book.page.tools.0": "$(thing)Псиметаллические инструменты$(0) — это набор инструментов, сопоставимых по качеству с $(item)Алмазными$(0), каждый из которых может кастовать $(thing)Заклинание$(0) при выполнении своего действия.$(p)Все $(thing)Псиметаллические инструменты$(0) крафтятся с $(item)Железными слитками$(0) вместо $(item)Палок$(0), одним $(l:components/psigem)$(item)Псигемом$(0)$(/l) и $(l:components/psimetal)$(item)Псиметаллом$(0)$(/l).",
  "psi.book.page.tools.1": "Бонусное действие",
  "psi.book.page.tools.2": "$(thing)Псиметаллический инструмент$(0) можно зарядить до трёх $(l:items/spell_bullet)$(thing)Пулями заклинаний$(0)$(/l) в $(l:basics/cad_assembler)$(item)Сборщике CAD$(0)$(/l) (но некоторые $(l:items/spell_bullet)$(thing)Пули$(0) не работают с инструментами).$(p)Чтобы выбрать $(l:items/spell_bullet)$(thing)Пулю$(0) для инструмента, зажми $(thing)Psi-клавишу$(0) ($(k:psimisc.keybind)) и выбери из меню. Пустой слот отключает каст полностью.",
  "psi.book.page.tools.3": "Все $(thing)Псиметаллические инструменты$(0), кроме $(item)Псиметаллического меча$(0), кастуют выбранное $(thing)Заклинание$(0) при разрушении блока.$(p)$(item)Меч$(0) кастует при ударе по живому существу (но помни: после урона существо неуязвимо полсекунды).$(p)$(thing)Псиметаллические инструменты$(0) используют избыточную $(thing)Пси-энергию$(0) владельца для починки.",
  "psi.book.page.tools.4": "$(thing)Псиметаллические инструменты$(0) интегрируются с $(thing)Частями заклинаний$(0).$(p)Когда $(item)Псиметаллический меч$(0) кастует $(thing)Заклинание$(0), $(piece)Selector: Attack Target$(0) возвращает моба, по которому ты ударил.$(p)Когда другие инструменты ломают блок, $(piece)Selector: Block Broken$(0) возвращает позицию блока, а $(piece)Selector: Block Broken Side$(0) — осевой вектор стороны, с которой был сломан блок.",
  "psi.book.entry.vectorRuler": "Векторная линейка",
  "psi.book.page.vectorRuler.0": "$(item)Векторная линейка$(0) может хранить произвольный вектор, который можно использовать в $(thing)Заклинаниях$(0) по желанию.$(p)Крафтится из $(item)Железных слитков$(0) и наконечника из $(l:components/psidust)$(item)Псипыли$(0)$(/l).",
  "psi.book.page.vectorRuler.1": "Векторы рулят",
  "psi.book.page.vectorRuler.2": "Клик по блоку $(item)Линейкой$(0) ($(k:use)) в приседе сохраняет позицию блока как вектор.$(p)Если после этого кликнуть без приседа по другому блоку, сохранится смещение между ними.$(p)Сохранённый вектор можно получить через $(piece)Selector: Vector Ruler$(0).",
  "psi.book.page.vectorRuler.3": "Если у тебя несколько $(item)Линеек$(0), $(piece)Selector: Vector Ruler$(0) вернёт значение самой левой в хотбаре или самой верхней в инвентаре, если в хотбаре нет.",
  "psi.book.entry.spellDrive": "Носитель заклинаний",
  "psi.book.page.spellDrive.0": "$(item)Носитель заклинаний$(0), крафтится из двух $(l:components/psimetal)$(item)Псиметаллов$(0)$(/l) и $(item)Редстоуновой пыли$(0), может хранить одно $(thing)Заклинание$(0) для последующего использования.$(p)Чтобы записать $(thing)Заклинание$(0) с $(l:basics/spell_programmer)$(item)Программатора заклинаний$(0)$(/l) на $(item)Носитель$(0), присядь и проведи ($(k:use)) пустым $(item)Носителем$(0) по нему.$(p)Чтобы скопировать заклинание обратно, присядь и проведи $(item)Носителем$(0) с заклинанием по $(l:basics/spell_programmer)$(item)Программатору$(0)$(/l).",
  "psi.book.page.spellDrive.1": "Построй свою библиотеку",
  "psi.book.page.spellDrive.2": "Чтобы очистить $(item)Носитель$(0), присядь и проведи им по любому другому блоку.$(p)$(item)Носитель$(0) с заклинанием можно положить в верстак с пустым $(item)Носителем$(0) или $(l:items/spell_bullet)$(thing)Пулей заклинаний$(0)$(/l), чтобы скопировать заклинание.",
  "psi.book.category.legacy": "Устаревшие записи",
  "psi.book.category.legacy.desc": "Эти записи остались с времён $(thing)Psi$(0) для 1.12 и ниже. По мере переписывания документации этот раздел будет уменьшаться, пока не исчезнет совсем.",
  "psi.book.entry.vectors101": "Векторы 101",
  "psi.book.page.vectors101.0": "Работа с векторами — важная часть программирования $(thing)Заклинаний$(0). Большинство операций описано $(l:basics/vector_primer#ops)здесь$(/l); единственное исключение — $(piece)Operator: Vector Cross Product$(0).",
  "psi.book.page.vectors101.1": "$(l)Векторное произведение$() двух векторов — это вектор, перпендикулярный обоим. Можно использовать это, чтобы получить вектор вбок, взяв вектор взгляда игрока и [0, 1, 0] (создаётся через $(piece)Operator: Vector Construct$(0)). ",
  "psi.book.entry.entities101": "Существа 101",
  "psi.book.page.entities101.0": "Работа с существами — важная часть программирования $(thing)Заклинаний$(0). Самое очевидное существо — ты сам, через $(piece)Selector: Caster$(0). Но есть и другие части, позволяющие нацеливаться на других существ в мире.$(p)С их помощью можно создавать $(thing)Заклинания$(0), влияющие на других. Попробуй использовать их с $(piece)Trick: Add Motion$(0), чтобы подбрасывать других.",
  "psi.book.entry.blockworks": "Работа с блоками",
  "psi.book.page.blockworks.0": "Работа с блоками — важный навык для мага. Позиция блока задаётся вектором, так что знание векторов необходимо.$(p)Два самых базовых трюка — $(piece)Trick: Place Block$(0) и $(piece)Trick: Break Block$(0).",
  "psi.book.page.blockworks.1": "Оба требуют вектор позиции: один ставит, другой ломает блок в этой точке. $(piece)Trick: Place Block$(0) использует блок справа от твоего $(thing)CAD$(0) в хотбаре. Позицию для ломки найти просто: $(piece)Operator: Vector Raycast$(0) подойдёт.",
  "psi.book.page.blockworks.2": "Но поставить блок сложнее: $(piece)Operator: Vector Raycast$(0) даёт блок, на который ты смотришь. Поставить туда нельзя — там уже $(o)есть$() блок! Для этого комбинируем $(piece)Operator: Vector Raycast$(0) с $(piece)Operator: Vector Axis Raycast$(0), который даёт вектор стороны блока, на которую ты смотришь.",
  "psi.book.page.blockworks.3": "Например, если смотришь на верх блока, получишь осевой вектор [0, 1, 0]. С помощью $(piece)Operator: Vector Sum$(0) складываем его с обычным Raycast — и получаем, куда ставить блок!$(p)$(piece)Operator: Entity Axial Look$(0) похож на $(piece)Operator: Entity Look$(0), но возвращает значение, округлённое до одного из шести осевых векторов (например, если смотришь на восток — [1, 0, 0]). Вспомни \"Facing\" в F3.",
  "psi.book.page.blockworks.4": "Ещё два $(thing)Трюка$(0) — $(piece)Trick: Place Block Sequence$(0) и $(piece)Trick: Break Block Sequence$(0). Они ставят или ломают линию блоков. Как и стандартные трюки, требуют начальную позицию, но ещё и второй вектор \"Цель\", задающий направление. Например, если \"Цель\" — [0, 1, 0], трюк будет работать вверх от \"Позиции\".",
  "psi.book.page.blockworks.5": "Последний параметр этих $(thing)Трюков$(0) — \"Макс\": это числовая константа, определяющая максимальное количество блоков, которые можно сломать или поставить. Так как векторные параметры не константны, это позволяет рассчитать Мощность и Стоимость трюка. Чем выше значение, тем дороже $(thing)Заклинание$(0).$(p)Последний трюк в группе — $(piece)Operator: Vector Project$(0).",
  "psi.book.page.blockworks.6": "Векторное проектирование — сложная тема, поэтому рассмотрим только пример.$(p)Допустим, ты хочешь сделать $(thing)Заклинание$(0), которое ставит блоки от твоей позиции до точки, куда ты смотришь, но строго по оси стороны блока (через $(piece)Operator: Vector Axis Raycast$(0)).",
  "psi.book.page.blockworks.7": "Сначала находишь вектор, вдоль которого ставить блоки, чтобы подать его в $(piece)Trick: Place Block Sequence$(0). Если ты стоишь по диагонали, получится что-то вроде [3, 2, 4] — это не прямая! Используй $(piece)Operator: Vector Project$(0), чтобы спроецировать его на ось стороны, например, [0, 0, 1].",
  "psi.book.page.blockworks.8": "Итак, \"Вектор A\" — [3, 2, 4], \"Вектор B\" — [0, 0, 1]. После проекции получаем [0, 0, 4]. Если бы \"Вектор B\" был [1, 0, 0], получили бы [3, 0, 0]. В целом, если \"Вектор B\" — осевой, $(piece)Operator: Vector Project$(0) убирает все компоненты A, равные 0 в B, оставляя прямую.$(p)Попробуй сделать заклинание, которое сносит столб из 8 блоков — \"treecapitate\"!",
  "psi.book.entry.movementAdvances": "Продвинутое перемещение",
  "psi.book.page.movementAdvances.0": "Основы перемещения $(thing)Трюков$(0) были рассмотрены на $(piece)Trick: Add Motion$(0). Эта группа содержит улучшенные варианты.$(p)$(piece)Trick: Blink$(0) просто телепортирует цель вперёд по взгляду. Отрицательное значение телепортирует назад.",
  "psi.book.page.movementAdvances.1": "$(piece)Trick: Mass Blink$(0) работает как $(piece)Trick: Blink$(0), но принимает список сущностей; каждую телепортирует отдельно.$(p)$(piece)Trick: Mass Add Motion$(0) похож: это массовый вариант $(piece)Trick: Add Motion$(0).$(p)Наконец, $(piece)Trick: Mass Exodus$(0) притягивает все сущности из списка к заданной позиции с заданной скоростью. Отрицательная скорость — отталкивает.",
  "psi.book.entry.blockMovement": "Перемещение блоков",
  "psi.book.page.blockMovement.0": "Перемещать блоки не так важно, как ставить и ломать, но бывает очень полезно.$(p)$(piece)Trick: Move Block$(0) берёт позицию блока и двигает его по целевому вектору, как поршень. Вектор должен быть осевым; иначе трюк не сработает.",
  "psi.book.page.blockMovement.1": "А $(piece)Trick: Collapse Block$(0) заставляет блок падать, как песок или гравий.$(p)Оба трюка не работают на сложных блоках (тайл-камерах) и блоках, которые нельзя добыть Шёлковым касанием.",
  "psi.book.entry.elementalArts": "Стихийные искусства",
  "psi.book.page.elementalArts.0": "Какой магический мод без стихийных $(thing)Заклинаний$(0)?$(p)В этой группе — $(thing)Трюки$(0) для четырёх стихий; например, $(piece)Trick: Smite$(0) вызывает молнию в указанной точке.",
  "psi.book.page.elementalArts.1": "Также тут есть $(piece)Operator: Random$(0), который генерирует случайное число от 0 (включительно) до переданного значения (не включительно). Это можно использовать с Loopcast или Кругом заклинаний для разных целей. Например, можно сделать $(thing)Заклинание$(0), массово удобряющее плантацию через $(piece)Trick: Overgrow$(0).",
  "psi.book.entry.positiveEffects": "Положительные эффекты",
  "psi.book.page.positiveEffects.0": "Возможность накладывать магические эффекты — обязательная фишка любого достойного магического справочника. Мы не пишем $(thing)Заклинания$(0) из книги, но эффекты можно накладывать на сущности.$(p)Все части этой группы накладывают свой эффект зелья на цель на заданное время (в секундах).",
  "psi.book.page.positiveEffects.1": "Если у части есть параметр Мощность, он определяет уровень эффекта.$(p)Например, $(piece)Trick: Speed$(0) с Временем 20 и Мощностью 2 даст Скорость II на 20 секунд цели.",
  "psi.book.entry.negativeEffects": "Отрицательные эффекты",
  "psi.book.page.negativeEffects.0": "Как и ожидалось, вместе с $(l:legacy/positive_effects)Положительными эффектами$(/l) идут Отрицательные.$(p)Тут особо нечего сказать. Все трюки делают ровно то, что написано.$(p)Удачи!",
  "psi.book.entry.trigonometry": "Тригонометрия",
  "psi.book.page.trigonometry.0": "В этой группе — $(thing)Операторы$(0), связанные с тригонометрией. $(piece)Constant: Pi$(0) — это просто константа, дающая значение \u03c0=3.1415….$(p)Также тут есть базовые тригонометрические функции: синус, косинус и их обратные (арксинус и арккосинус).",
  "psi.book.page.trigonometry.1": "Кроме того, $(piece)Operator: Vector Dot Product$(0) возвращает скалярное произведение двух векторов: произведение их длин на косинус угла между ними. Применив $(piece)Operator: Arc Cosine$(0) к результату, можно получить угол между векторами.",
  "psi.book.entry.smeltery": "Плавильня",
  "psi.book.page.smeltery.0": "Части этой группы работают просто: все они переплавляют предметы, как в печи.$(p)$(piece)Trick: Smelt Item$(0) переплавляет выпавший предмет в мире в его переплавленную версию.",
  "psi.book.page.smeltery.1": "$(piece)Trick: Smelt Block$(0) переплавляет блок в мире в его переплавленную версию, если она тоже является блоком.$(p)Например, булыжник можно переплавить в камень, а потом в гладкий камень, но брёвна не переплавляются в уголь.",
  "psi.book.entry.flowControl": "Управление потоком",
  "psi.book.page.flowControl.0": "Управление потоком — довольно сложная тема. Все части этой группы позволяют $(thing)Заклинанию$(0) работать совершенно по-разному. Но чтобы правильно их использовать, нужно знать внутренности системы каста — прочитай $(l:basics/eval_order)эту статью$(/l) для подробностей.",
  "psi.book.page.flowControl.1": "Теперь перейдём к $(piece)Trick: Sleep$(0). Эта часть задерживает исполнение $(thing)Заклинания$(0) на заданное количество тиков (1 тик = 0,05 секунды). Например, чтобы задержать на полсекунды, укажи 10 в параметре \"Время\". $(piece)Trick: Sleep$(0) не добавляет $(l:basics/tutorial_5#projection)$(thing)Проекцию$(0)$(/l), но увеличивает $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l).",
  "psi.book.page.flowControl.2": "$(piece)Trick: Evaluate$(0) — это $(thing)Трюк$(0), который не делает ничего.$(p)Да, ты не ослышался. Он ничего не делает и не влияет на характеристики $(thing)Заклинания$(0).$(p)Его практическая польза — вычислить значение до $(piece)Trick: Sleep$(0), чтобы, например, узнать, где была сущность до задержки, и использовать это позже.",
  "psi.book.page.flowControl.3": "$(piece)Trick: Die$(0) — это уже настоящее управление потоком.$(p)Он принимает число, и если его абсолютное значение строго меньше 1, заклинание тут же прерывается. Любые другие значения позволяют заклинанию продолжиться.$(p)Этот трюк не увеличивает $(l:basics/tutorial_5#projection)$(thing)Проекцию$(0)$(/l).",
  "psi.book.page.flowControl.4": "Простой способ использовать $(piece)Trick: Die$(0) — связать его с $(piece)Selector: Sneak Status$(0), который возвращает 0, если заклинатель крадётся, и 1 — если нет.$(p)Похоже, они созданы друг для друга!",
  "psi.book.page.flowControl.5": "$(piece)Constant: Wrapper$(0) позволяет использовать части, возвращающие числа, там, где обычно нужны числовые константы.$(p)Как ты уже знаешь, числовые константы для $(thing)Трюков$(0) используются для расчёта характеристик $(thing)Заклинания$(0) (включая $(l:basics/tutorial_5#cost)$(thing)Стоимость$(0)$(/l)) до каста.$(p)Так как эти константы нужны на этапе компиляции, простые числа, вычисляемые во время исполнения, тут не подходят.",
  "psi.book.page.flowControl.6": "$(piece)Constant: Wrapper$(0) решает это, принимая два числа: константу и не-константу.$(p)Константа используется для расчётов при компиляции, а не-константа — при исполнении заклинания.$(p)Значение не-константы ограничивается значением константы во время исполнения, чтобы избежать читерства.",
  "psi.book.page.flowControl.7": "Знак числа во время исполнения приводится к знаку константы, чтобы они совпадали. Если константа равна 0, $(piece)Constant: Wrapper$(0) всегда возвращает 0, независимо от входных данных.",
  "psi.book.entry.blockConjuration": "Создание блоков",
  "psi.book.page.blockConjuration.0": "В этой группе — части, которые делают ровно то, что написано: создают блоки.$(p)$(piece)Trick: Conjure Block$(0) создаёт Призрачный блок (полупрозрачный твёрдый блок) в указанной позиции. Если при создании указан параметр \"Время\", блок сам разрушится по истечении времени.",
  "psi.book.page.blockConjuration.1": "Если используется параметр \"Время\", он задаётся в тиках (0,05 секунды каждый). Например, чтобы блок исчез через полсекунды, укажи 10 тиков.$(p)$(piece)Trick: Conjure Light$(0) создаёт источник света, через который нельзя пройти.",
  "psi.book.page.blockConjuration.2": "$(piece)Trick: Conjure Block Sequence$(0) работает как $(piece)Trick: Place Block Sequence$(0), но создаёт Призрачные блоки. Оба трюка имеют параметр \"Время\".$(p)Призрачные блоки хрупкие и ломаются мгновенно любым инструментом.",
  "psi.book.entry.eidosManipulation": "Манипуляции Эйдоса",
  "psi.book.page.eidosManipulation.0": "Эйдос-трюки позволяют магу управлять пространственно-временным континуумом в свою пользу.$(p)$(piece)Trick: Eidos Reversal$(0) заставляет заклинателя пройти свой путь назад в ускоренном темпе за указанное время (в секундах).",
  "psi.book.page.eidosManipulation.1": "Одновременно может быть только один Эйдос-реверс. После каста нового реверса можно вернуться только к месту окончания предыдущего. Крадущийся игрок остановит реверс.$(p)Вторая часть группы — $(piece)Trick: Eidos Anchor$(0), создаёт \"якорь\" для заклинателя.",
  "psi.book.page.eidosManipulation.2": "Через указанное время (в секундах) заклинатель возвращается к месту якоря. Можно создать несколько якорей подряд, но сработает только последний.",
  "psi.book.page.eidosManipulation.3": "Наконец, $(piece)Selector: Eidos Changelog$(0) принимает число n и возвращает позицию из истории Эйдоса n тиков назад.$(p)$(piece)Trick: Eidos Reversal$(0) переносит тебя назад по истории, стирая все точки \"после\". $(piece)Trick: Eidos Anchor$(0) не меняет историю.",
  "psi.book.entry.detectionDynamics": "Детекция и фокус",
  "psi.book.page.detectionDynamics.0": "В этой группе две категории частей: детекция и фокус. Для понимания нужно знать, что такое Фокус слота.",
  "psi.book.page.detectionDynamics.1": "Пример фокуса слота — трюки типа Place Block. Они используют блок справа от твоего $(thing)CAD$(0) в хотбаре. Фокус слота — это слот, который используют такие трюки. Он может быть относительным (относительно CAD) или абсолютным, только в хотбаре, от 1 до 9.",
  "psi.book.page.detectionDynamics.2": "По умолчанию при касте $(thing)Заклинания$(0) его значение — \"Относительно 1\", то есть 1 слот справа от CAD. \"Относительно -1\" — 1 слот слева. \"Абсолютно 3\" — третий слот хотбара. Слоты зациклены: если CAD в последнем слоте и значение \"Относительно 1\", то это первый слот.",
  "psi.book.page.detectionDynamics.3": "Чтобы задать фокус, используй $(piece)Trick: Switch Focus Slot$(0). Он принимает два параметра, оба необязательны и взаимоисключающи. Если не указать ни один, фокус будет \"Относительно 1\". Параметр \"Позиция\" задаёт абсолютное значение, \"Сдвиг\" — относительное.",
  "psi.book.page.detectionDynamics.4": "Это позволяет, например, строить из разных блоков в зависимости от ситуации. Этот $(thing)Трюк$(0) работает только для текущего каста, фокус сбрасывается при следующем касте (даже если это то же заклинание).$(p)Остальные две части группы — из области \"детекции\".",
  "psi.book.page.detectionDynamics.5": "Во-первых, $(piece)Selector: Item Presence$(0) принимает необязательный номер слота (по умолчанию — твой фокус), и возвращает количество предметов в этом слоте (0, если пусто).",
  "psi.book.page.detectionDynamics.6": "$(piece)Selector: Block Presence$(0) принимает вектор — координаты в мире, и определяет блок в этой точке: 0 — нет блока или заменяемый (трава), 1 — несолидный блок, 2 — солидный.",
  "psi.book.entry.memoryManagement": "Управление памятью",
  "psi.book.page.memoryManagement.0": "Эта группа даёт возможность $(thing)Заклинанию$(0) хранить данные в $(thing)CAD$(0) между кастами. $(thing)CAD$(0) может сохранять векторы для последующего использования. На каждые три $(l:components/socket)$(thing)Сокета$(0)$(/l) в $(thing)CAD$(0) можно хранить один вектор.",
  "psi.book.page.memoryManagement.1": "Количество векторов, которые может хранить $(thing)CAD$(0), называется количеством $(thing)Ячеек памяти$(0).$(p)В группе две части: $(piece)Trick: Save Vector$(0) сохраняет вектор в указанную $(thing)Ячейку памяти$(0), а $(piece)Selector: Saved Vector$(0) извлекает вектор из неё.",
  "psi.book.page.memoryManagement.2": "Ячейки памяти $(thing)CAD$(0) нумеруются с 1, так что CAD с 3 ячейками может сохранять в 1, 2 и 3.$(p)Оба трюка увеличивают $(l:basics/tutorial_5#potency)$(thing)Мощность$(0)$(/l) заклинания на номер используемой ячейки.$(p)Например, сохранение или загрузка из ячейки 2 стоит две $(l:basics/tutorial_5#potency)$(thing)Мощности$(0)$(/l).",
  "psi.book.page.memoryManagement.3": "$(piece)Trick: Save Vector$(0) имеет недостаток: он \"блокирует\" ячейку памяти, в которую сохраняет.$(p)Это не даёт использовать обе части с одной ячейкой в одном заклинании позже.$(p)Если нужно сначала загрузить значение, а потом сохранить новое — помни правила управления потоком, чтобы загрузка была раньше сохранения.",
  "psi.book.entry.secondaryOperators": "Второстепенные операторы",
  "psi.book.page.secondaryOperators.0": "Как видно из названия, эта группа — математические $(thing)Операторы$(0), не такие важные, как \"основные\" (сложение, вычитание). Тут собраны разные математические и логические части, которые могут пригодиться при создании $(thing)Заклинаний$(0). Для удобства разделим их на две группы.",
  "psi.book.page.secondaryOperators.1": "Первая группа — возведение в степень: $(piece)Operator: Square$(0), $(piece)Operator: Power$(0), $(piece)Operator: Square Root$(0), $(piece)Operator: Logarithm$(0). Работают, как ожидается.$(p)$(piece)Operator: Logarithm$(0) принимает необязательную Основание; если не указано — по умолчанию 10.$(p)$(piece)Constant: e$(0) даёт натуральный логарифм.",
  "psi.book.page.secondaryOperators.2": "Вторая группа — логика и округление (до целого).$(p)$(piece)Operator: Ceiling$(0), $(piece)Operator: Floor$(0), $(piece)Operator: Round$(0) округляют вверх, вниз и до ближайшего целого соответственно.$(p)Также тут есть $(piece)Operator: Min$(0) и $(piece)Operator: Max$(0) — возвращают наименьшее и наибольшее из параметров.",
  "psi.statlabel.is_last": "isLast"
}
