Files
necromants-tome-7d2d-3-2/Config/challenges.xml
T
AlexCubeandClaude Opus 5.5 934bc3c7f5 Испытания некромантии: 7 новых (скакун, оссуарий, сферы, камень, свиток крысы, браслет, пирамида)
- Всадник на костях: создать Костяного скакуна (2500)
- Недра платят кровью: поставить Гео-оссуарий (2000)
- Запас крови: создать 10 кровавых сфер (1000)
- Кровь, ставшая камнем: создать Кровавый камень (2500)
- Крысиный король: создать Свиток духа крысы (1000)
- Карман в пустоте: создать Пространственный браслет (2000)
- Ересь: поставить Пирамиду духов (2000)
Тексты на 13 языках.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:10:30 +03:00

188 lines
18 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<config>
<!-- ВКЛАДКА ИСПЫТАНИЙ "Некромантия" (указание 2026-09-16: "Сделать вкладку квестов для
некромантии. Типа тех вкладок, где дают опыт за установку первой двери, за установку
клеймблока, за повешение факела и сбор ресурсов").
ОБА ЗАКАЗАННЫХ ИСПЫТАНИЯ НА МЕСТЕ с 2026-09-16. Сначала тут было одно ("Первым делом -
нож"): challenges.xml мод не трогал ни разу, и сперва надо было увидеть в игре, что вкладка
вообще появляется. Нож выбран для этой проверки потому, что крафтится сразу и без верстака,
то есть проверка занимала минуту, а не сессию. Вкладка отобразилась, испытание закрылось,
лог чистый - после чего добавлен "Безумный донор".
РАЗРОЗНЕННО, НЕ ЦЕПОЧКОЙ (указание: "цепочку ивентов там делать не нужно. Пусть будет
разрозненно. Что сделано то и отмечаем"). Поэтому у группы НЕТ ни link_challenges="true",
ни hidden_by - оба атрибута стоят у ванильных Basics/Homesteading именно затем, чтобы
открывать записи по очереди. Без них испытания видны сразу и закрываются в любом порядке.
Побочная польза: снимается противоречие порядка - Кровь некроманта нельзя скрафтить без
ножа в инвентаре, так что "донор" первым в цепочке был бы невыполним.
ОТКУДА ИКОНКИ - разобрано 2026-09-16, и вывод ограничивающий: ТОЛЬКО из символьного
атласа игры, свой спрайт туда положить нельзя.
- В Data/Config/XUi_InGame/templates.xml оба места, где эти иконки рисуются, объявлены
БЕЗ атрибута atlas: строка испытания (challenge_entry, sprite="{iconname}") и кнопка
вкладки (category_icon, sprite="{categoryicon}"). Нет atlas - значит атлас по
умолчанию, тот, где живут все ui_game_symbol_*.
- Подтверждение с другой стороны: в ванильном challenges.xml ВСЕ 215 иконок имеют вид
ui_game_symbol_* без единого исключения (проверено вычитанием).
- Свой атлас мода (UIAtlases/NecroFinal) тут не поможет: механизм UIAtlases/<Имя>
создаёт НОВЫЙ атлас, и обратиться к нему можно только явным atlas="NecroFinal" на
спрайте, которого в этих шаблонах нет.
- Дописать atlas= в сам шаблон НЕЛЬЗЯ: шаблон один на все испытания, и тогда ванильные
215 иконок начнут искаться в нашем атласе и пропадут.
Выбирали из 359 доступных ui_game_symbol_*, собранных по ванильным конфигам. -->
<append xpath="/challenges">
<!-- ВКЛАДКА. Череп, и это ОДНО РЕШЕНИЕ С ИКОНКОЙ САМОГО СКИЛЛА "Некромантия" в
progression.xml: вкладка и скилл обязаны читаться как одно целое, поэтому меняются
только парой. Разойдутся - и панель скилла с вкладкой испытаний перестанут выглядеть
как одна система.
Сначала (16.09) здесь стоял ui_game_symbol_zombie - по тому же принципу совпадения со
скиллом, у которого он тогда и стоял. В игре вкладка отобразилась и испытание
сработало, после чего пользователь заменил символ на череп: "Для некроманта это более
атмосферно". Заменено разом во всех четырёх живых местах мода (здесь, скилл в
progression.xml и два баффа в buffs.xml), разбор - в BACKLOG.md.
Годные альтернативы, если череп когда-нибудь разонравится:
ui_game_symbol_specters_grace, ui_game_symbol_7th_curse,
ui_game_symbol_near_death_trauma. -->
<challenge_category name="NecroNecromancy" title_key="challengeCatNecroNecromancy" icon="ui_game_symbol_skull"/>
<!-- ГРУППА. Сознательно БЕЗ reward_text_key и reward_event.
Это осознанный риск скелета, а не забывчивость: у всех 20 ванильных групп они есть, но
корень <challenges> объявлен с default_reward="challenge_reward_default" и
default_reward_text_key="challenge_reward_100xp", и мы добавляемся именно в этот
корень. Если умолчания на группы не распространяются, игра скажет об этом в логе - и
это ровно то, ради чего скелет и запускается. Заводить своё событие награды вслепую
дороже, чем один раз посмотреть в лог. -->
<challenge_group category="NecroNecromancy" name="NecroPath" title_key="challengeGroupNecroPath"/>
<!-- ИСПЫТАНИЕ. objective type="Craft" без count - ножа нужен один.
hint не задан: он необязателен - в ванили одно испытание из 188 обходится без него, а
тут подсказка и не нужна, название говорит само за себя.
500 XP, А НЕ УМОЛЧАНИЕ. Сначала тут не стояло награды вовсе, то есть работал
challenge_reward_default (100 XP), по аналогии с ванильным craftStoneAxe: один крафт в
самом начале. Аналогия оказалась неверной, и это выяснилось только при чтении рецепта:
в ножа входит 1 Кровь некроманта, а её собственный крафт снимает 90% ТЕКУЩЕГО здоровья.
То есть нож стоит одного захода на порог смерти, чего у каменного топора нет и близко.
500 - ванильный тир простых, но небесплатных дел (craftCharredMeat, huntAnimals). -->
<challenge name="necroCraftKnife" title_key="challengeNecroCraftKnifeTitle" icon="ui_game_symbol_knife" group="NecroPath"
short_description_key="challengeNecroCraftKnifeShort" description_key="challengeNecroCraftKnifeDesc"
reward_text_key="challenge_reward_500xp" reward_event="challenge_reward_500">
<objective type="Craft" item="necroWpnBladeNecroKnife"/>
</challenge>
<!-- ИСПЫТАНИЕ 2: "Безумный донор" (указание: "добыть 15 флаконов крови некроманта").
Кровь не добывается из мира, она крафтится, поэтому тип Craft, а не Gather.
count="15" - у Craft счётчик поддерживается, и это стоило отдельной проверки: в самых
наглядных ванильных примерах (craftStoneAxe, craftClothes) он не указан, и легко
решить, что его нет. Есть - 18 ванильных Craft-целей его несут, вплоть до
resourceForgedIron count="100" и thrownAmmoPipeBomb count="20".
ИМЯ ОПРАВДАНО МЕХАНИКОЙ, А НЕ ПРОСТО КРАСИВОЕ: каждый крафт Крови некроманта снимает
90% ТЕКУЩЕГО здоровья (NecromancerBloodPatch.cs) и требует нож в инвентаре. Пятнадцать
раз подряд - это пятнадцать раз довести себя до полусмерти, и "Безумный донор" описывает
это точно.
Зависимости от первого испытания нет и быть не должно (указание: "разрозненно"), хотя
фактически кровь без ножа не скрафтить. Порядка у группы нет, так что игрок сам
упрётся в нож, когда попробует начать с крови, - и это честнее замка.
icon="ui_game_symbol_siphoning_strikes" - "высасывающие удары", символ выкачивания
жизни. Найден при разборе всех 359 доступных ui_game_symbol_*; под механику "плати
собственной кровью" попадает точнее любого медицинского символа. -->
<challenge name="necroMadDonor" title_key="challengeNecroMadDonorTitle" icon="ui_game_symbol_siphoning_strikes" group="NecroPath"
short_description_key="challengeNecroMadDonorShort" description_key="challengeNecroMadDonorDesc"
reward_text_key="challenge_reward_2500xp" reward_event="challenge_reward_2500">
<objective type="Craft" item="resourceNecromancerBlood" count="15"/>
</challenge>
<!-- ИСПЫТАНИЕ 3: "Первый подданный" - Камень духов (указание 2026-09-17: "И первый камень
духов. Сам посчитай и придумай").
Имя про механику: Камень духов подчиняет зомби, и подчинённый бьётся за игрока. Это
первое существо, которое слушается некроманта, - отсюда "подданный".
100 XP, то есть challenge_reward_default, награда НЕ ЗАДАНА СОЗНАТЕЛЬНО. Рецепт -
1 камень + 20 волокон травы, ни праха, ни крови. Это самая дешёвая вещь мода и
буквальный аналог ванильного craftStoneAxe, за который ваниль платит ровно умолчание.
Здесь 100 - не занижение, а единственное честное число: поднять его выше значило бы
платить за десять минут игры больше, чем ваниль платит за то же самое.
icon="ui_game_symbol_specters_grace" ("милость призрака") - предмет называется Камнем
ДУХОВ и подчиняет мёртвого, так что символ совпадает и по названию, и по смыслу. -->
<challenge name="necroSpiritStone" title_key="challengeNecroSpiritStoneTitle" icon="ui_game_symbol_specters_grace" group="NecroPath"
short_description_key="challengeNecroSpiritStoneShort" description_key="challengeNecroSpiritStoneDesc">
<objective type="Craft" item="thrownStoneSpirit"/>
</challenge>
<!-- ИСПЫТАНИЕ 4: "Короткая дорога домой" - Синий портальный камень (указание 2026-09-17).
Имя про механику: камень телепортирует к спальному мешку за десятисекундный канал и не
расходуется. Это в буквальном смысле короткий путь домой, и никакой другой предмет мода
этого не делает.
2000 XP - и это САМОЕ ДОРОГОЕ ИСПЫТАНИЕ ВКЛАДКИ ПО ГРАЙНДУ, что видно только из
рецепта: 1 камень + 3 минералки + 15 волокон + 150 ПРАХА ЗОМБИ. Прах падает с Жертвы,
помеченной Ножом некроманта, по 1-4 с вероятностью 0.4 (loot.xml), то есть в среднем
около одной единицы за убийство - значит 150 праха это порядка ста пятидесяти
ритуальных убийств ножом. Для сравнения, ванильный craftForgedIron (сто крафтов
кованого железа) платит 2000, и это чистый грайнд без риска - ровно тот же случай.
Выше не ставим: 2500 у "Безумного донора" оплачивает смертельный риск, которого здесь
нет, а 5000 ваниль держит за химстанцией и тирами квестов.
icon="ui_game_symbol_map_house" - дом, к которому камень и возвращает. -->
<challenge name="necroPortalStoneBlue" title_key="challengeNecroPortalBlueTitle" icon="ui_game_symbol_map_house" group="NecroPath"
short_description_key="challengeNecroPortalBlueShort" description_key="challengeNecroPortalBlueDesc"
reward_text_key="challenge_reward_2000xp" reward_event="challenge_reward_2000">
<objective type="Craft" item="thrownStonePortalBlue"/>
</challenge>
<!-- ИСПЫТАНИЯ 1.7.0 (01.10.2026, указание: «добавь испытания по линии некромантии, сам
придумай; часть - первое создание новых предметов»). Пять - первое создание нового
(скакун, оссуарий, запас сфер, камень, свиток крысы), два - вещи, на которые испытаний
ещё не было (браслет, пирамида). Награды по тому же счёту, что выше: 1000 - быстрые
вещи (10 сфер, свиток), 2000 - станция/браслет/пирамида, 2500 - скакун и камень
(дорогие рецепты на верстаке и химстанции). Иконки - только ui_game_symbol_*. -->
<challenge name="necroBoneSteed" title_key="challengeNecroBoneSteedTitle" icon="ui_game_symbol_motorcycle" group="NecroPath"
short_description_key="challengeNecroBoneSteedShort" description_key="challengeNecroBoneSteedDesc"
reward_text_key="challenge_reward_2500xp" reward_event="challenge_reward_2500">
<objective type="Craft" item="necroBoneSteedPlaceable"/>
</challenge>
<challenge name="necroGeoOssuary" title_key="challengeNecroGeoOssuaryTitle" icon="ui_game_symbol_challenge_harvesting_cobblestone" group="NecroPath"
short_description_key="challengeNecroGeoOssuaryShort" description_key="challengeNecroGeoOssuaryDesc"
reward_text_key="challenge_reward_2000xp" reward_event="challenge_reward_2000">
<objective type="BlockPlace" block="necroGeoOssuary" count="1"/>
</challenge>
<challenge name="necroBloodReserve" title_key="challengeNecroBloodReserveTitle" icon="ui_game_symbol_laceration" group="NecroPath"
short_description_key="challengeNecroBloodReserveShort" description_key="challengeNecroBloodReserveDesc"
reward_text_key="challenge_reward_1000xp" reward_event="challenge_reward_1000">
<objective type="Craft" item="resourceBloodSphere" count="10"/>
</challenge>
<challenge name="necroBloodStone" title_key="challengeNecroBloodStoneTitle" icon="ui_game_symbol_resource" group="NecroPath"
short_description_key="challengeNecroBloodStoneShort" description_key="challengeNecroBloodStoneDesc"
reward_text_key="challenge_reward_2500xp" reward_event="challenge_reward_2500">
<objective type="Craft" item="resourceBloodStone"/>
</challenge>
<challenge name="necroRatKing" title_key="challengeNecroRatKingTitle" icon="ui_game_symbol_book" group="NecroPath"
short_description_key="challengeNecroRatKingShort" description_key="challengeNecroRatKingDesc"
reward_text_key="challenge_reward_1000xp" reward_event="challenge_reward_1000">
<objective type="Craft" item="bookSummonRatSpirit"/>
</challenge>
<challenge name="necroPocketVault" title_key="challengeNecroPocketVaultTitle" icon="ui_game_symbol_backpack" group="NecroPath"
short_description_key="challengeNecroPocketVaultShort" description_key="challengeNecroPocketVaultDesc"
reward_text_key="challenge_reward_2000xp" reward_event="challenge_reward_2000">
<objective type="Craft" item="braceletSpatialVault"/>
</challenge>
<challenge name="necroHeresy" title_key="challengeNecroHeresyTitle" icon="ui_game_symbol_7th_curse" group="NecroPath"
short_description_key="challengeNecroHeresyShort" description_key="challengeNecroHeresyDesc"
reward_text_key="challenge_reward_2000xp" reward_event="challenge_reward_2000">
<objective type="BlockPlace" block="necroHeresyPyramid" count="1"/>
</challenge>
</append>
</config>