Работа по указаниям 2026-09-18. В релиз пока не выходит. НОВЫЙ ПИТОМЕЦ "Дух крысы" (necroRatSpirit), Некромантия 3 (60 убийств): модель зомбоволка в масштабе 0.28, урон 5, кроличьи звуки. Сам не нападает никогда, держится справа-сзади в двух блоках, упёршись в препятствие проходит СКВОЗЬ него и блоков не ломает. Укус замедляет, оставляет метку духа (видна на компасе, +25% получаемого урона) и рвёт жилу. Обгрызая труп, лечится. СВОЯ ЗАДАЧА ИИ. Задачи "иди за сущностью" в игре нет вовсе - проверены все 32 типа EAI*. Написана NecroFollowOwnerTask по образцу EAIApproachSpot: сектор "3-6 часов" от хозяина, FindPath с canBreak:false, проход сквозь препятствие через Entity.IsStuck. Вешается в рантайме, минуя Type.GetType. ПРИКАЗ АТАКОВАТЬ. Повторное применение свитка при живом питомце натравливает его на цель под прицелом: EntityPlayerLocal.HitInfo + ItemActionAttack. GetEntityFromHit. Торговцы и игроки отсеяны. Нет цели - "Нет цели для атаки". ЗОМБОЖИВОТНЫЕ ПРИВЕДЕНЫ К ТОМУ ЖЕ ОБРАЗЦУ. Сняты BreakBlock, Territorial, ApproachSpot, Wander, BlockingTargetTask и поедание трупов; цель они больше не выбирают сами. Лестница урона 20/35/45/60 плюс расчленение у Пса, Медведя и Волка. Кровотечение всем, метка и ослабление - только у крысы. УБИЙСТВА ПИТОМЦЕМ ЗАСЧИТЫВАЮТСЯ ВЛАДЕЛЬЦУ, включая добивание кровотечением. Префикс на AwardKillXPServer подменяет убийцу владельцем; для смерти от баффа заведена память укусов, потому что в DamageSource от баффа нет того, кто его наложил. Зомби под Камнем духов это не задело - решение от 17.09 в силе. ГРИФ откачен на летающую ветку EntityVulture и переименован в Могильного стервятника: модель наконец соответствует имени. Держится у игрока сам, через собственный механизм "дома" (setHomeArea), на время погони дом отвязывается. Попытка натянуть птичий префаб на наземный класс провалилась и записана - так делать нельзя. ПРОЧЕЕ: призрачный вид распространён с торговцев на питомцев (у Пса, Медведя и Волка выключен по указанию), у Пса светятся фиолетовые глаза, белая иконка книги снята со всех свитков призыва, "Жуки Властелина" переименованы в "Рой фараона" на всех 13 языках. ПОРОГИ: крыса 60, стервятник 500, пёс 1300, медведь 2000, волк 4000. ИСПРАВЛЕНО ПО ХОДУ ИГРОВЫХ ПРОВЕРОК: питомцы не призывались обычным кликом (AnimWait требовал удержания), отзыв срабатывал не с первого раза (автомат состояний ItemActionSpawnEntity), крыса проваливалась сквозь мир (IsStuck отключает и пол), питомец подбрасывал хозяина (коллайдеры разводились до появления модели). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
311 lines
29 KiB
XML
311 lines
29 KiB
XML
<config>
|
||
<!-- "Некромантия" (Necromancy) skill.
|
||
Reuses the vanilla crafting_skill mechanism (same class that powers e.g.
|
||
craftingHarvestingTools) parented to the vanilla "attCrafting" virtual
|
||
attribute — this makes it auto-level from a game action (not spent perk
|
||
points) and show up for free in the game's existing crafting-skills panel.
|
||
|
||
Originally this leveled from reading books (see git history / earlier
|
||
comments), but items.xml effect_group does NOT inherit through Extends in
|
||
this game version (confirmed by decompiling ItemClassesFromXml.parseItem -
|
||
it always parses effect_group from the item's own XML node, passing null as
|
||
the "parent node" argument to MinEffectController.ParseXml regardless of
|
||
Extends; entity_class does the equivalent WITH the parent node passed in,
|
||
which is why the zombie kill counter below always worked and reading books
|
||
never did). Patching every single one of the ~150 skill magazine/schematic
|
||
items individually to work around that was judged not worth it - so this
|
||
levels from zombie kills instead, via the same entityclasses.xml patch on
|
||
zombieTemplateMale that already drives necroZombieKillsCVar (see
|
||
entityclasses.xml) - one kill, one level, capped at max_level.
|
||
|
||
ШКАЛА ПЕРЕДЕЛАНА 2026-09-17: 20 УБИЙСТВ = 1 УРОВЕНЬ, max_level=250.
|
||
Было "одно убийство - один уровень" при max_level=5000, и это молча ломалось на КАЖДОМ
|
||
СОХРАНЕНИИ, потому что ванильный ProgressionValue хранит уровень ОДНИМ БАЙТОМ:
|
||
_writer.Write((byte)level); // ProgressionValue.Write
|
||
level = _reader.ReadByte(); // ProgressionValue.Read
|
||
Проверено не только декомпиляцией, но и на живом сейве (New Xisema Mountains/sezon8,
|
||
17.09.2026): necroZombieKillsCVar = 384, а уровень в файле игрока = 129, то есть 384-256.
|
||
Всё выше 255 откатывалось по модулю 256: панель скилла заново закрывала уже открытые
|
||
рецепты (именно это было видно на стриме - Слёзы мертвеца открыты, Пир падальщика под
|
||
замком), а группы 500/2000/3000/5000 были недостижимы в принципе. В ванили этот предел
|
||
не всплывает: атрибуты идут до 10, перки до 5, крафтовые скиллы до 100.
|
||
|
||
5000 убийств / 20 = 250 уровней - влезает в байт с запасом, поэтому баг чинится самой
|
||
шкалой, а не костылём поверх сериализации. Счёт убийств по-прежнему живёт в
|
||
necroZombieKillsCVar (float, сохраняется честно) и остаётся ЕДИНСТВЕННЫМ источником
|
||
правды: уровень пересчитывается из него в HarmonySrc/NecromancyKillCreditPatch.cs и на
|
||
каждом убийстве, и при загрузке игрока - последнее заодно чинит сейвы, испорченные старой
|
||
шкалой (тот же sezon8: 384 убийства -> уровень 19 вместо сломанных 129).
|
||
|
||
ВСЕ ПОРОГИ НИЖЕ - В УРОВНЯХ. Умножь на 20, чтобы получить убийства:
|
||
Group 1 "Адепт" - с нулевого уровня, но не вся: рецепты внутри группы
|
||
открываются каждый на своей ступени: 0 / 1 / 3 / 5 / 15,
|
||
то есть 0 / 20 / 60 / 100 / 300 убийств.
|
||
Group 2 "Подмастерье" - уровень 25 (500 убийств)
|
||
Group 3 "Ученик" - уровень 100 (2000)
|
||
Group 4 "Некромант" - уровень 150 (3000)
|
||
Group 5 "Мастер" - уровень 250 (5000)
|
||
|
||
Recipe unlocks: give a recipe Tags="necroNecromancyAdept" / "necroNecromancyJourneyman"
|
||
/ "necroNecromancyApprentice" / "necroNecromancyNecromancer" / "necroNecromancyMaster"
|
||
(whichever group it belongs to) and it will unlock automatically once the
|
||
player crosses that group's threshold - no further change needed here.
|
||
thrownStoneSpirit (Камень духов) carries none of these tags at all, since Group 1
|
||
"Адепт" is unlocked from level 1 anyway - a recipe with no unlock tag is just always
|
||
available, same effect, no need to spend a tag on it.
|
||
|
||
One genuine one-off exception: necroNecromancyLvl20 - the Пространственный браслет, per
|
||
direct instruction 2026-08-30 ("нож, камень духов и хранилище - это база... хранилище,
|
||
когда убито минимум 20 зомби") - it belongs in the Group 1 "Адепт" display bucket (see
|
||
below) but needs its own slightly-later unlock level within that same group, which is
|
||
what unlock_tier is for (see display_entry below), not a reason to invent a whole
|
||
separate group. Имя тега - в УБИЙСТВАХ (20), а RecipeTagUnlocked у него теперь стоит на
|
||
УРОВНЕ 1: это те же самые 20 убийств в новой шкале. С 2026-09-17 на этом же теге сидят
|
||
Кровавая сфера и мод ножа на воду (Слёзы мертвеца) - три рецепта одной ступени.
|
||
|
||
UPDATED 2026-08-29: display_entry blocks added below now that real necromancer items/
|
||
recipes exist to point them at - per the user's own direct report ("до сих пор нету ни
|
||
одного рецепта" in the skill panel).
|
||
|
||
UPDATED 2026-08-30 (user report: "превью пустые" - the group icons in the skill panel
|
||
were blank). Root cause: `icon=` on display_entry needs a real ICON ATLAS SPRITE NAME
|
||
(the same string you'd give CustomIcon), not the item's own internal id - fixed by
|
||
pointing icon= at each group's actual CustomIcon sprite value.
|
||
|
||
REVERTED-AND-REDISTRIBUTED AGAIN 2026-08-30, two direct corrections in a row:
|
||
1. "Что ещё за 'уровень'? Была же система! А рецепту можно без группы задать уровень
|
||
скилла на котором он откроется." - an earlier edit had invented ad-hoc "Level
|
||
20/50/200" display groups, abandoning the real 5-tier flavor-name system this
|
||
comment already documents above (Адепт/Подмастерье/Ученик/Некромант/Мастер -
|
||
craftingNecroNecromancyTier1-5Name, all already localized, unused since). A recipe's
|
||
actual unlock level is controlled entirely by its own `tags=` + the
|
||
RecipeTagUnlocked effect_group below - display_entry is PURELY the skill-panel
|
||
preview widget, the two don't need to be 1:1. Confirmed against real vanilla
|
||
precedent (Data/Config/progression.xml's own explosives group): one display_entry
|
||
can list several items that reveal at different levels via a comma-list
|
||
unlock_level plus multiple unlock_entry elements at increasing unlock_tier.
|
||
2. "У тебя получается 5 групп, как и должно было быть. А вот уровень скилла ты
|
||
распределил идиотски." - the fix for #1 above had (wrongly) folded EVERYTHING except
|
||
the black stone into Group 1 alone (levels 1/20/50/200), leaving the three real
|
||
mid-game tiers (Подмастерье@500/Ученик@2000/Некромант@3000) completely empty and
|
||
unused - defeating the entire point of having 5 groups spread across the level
|
||
range. Fixed by actually spreading the non-base items across all 5 real tiers
|
||
instead of clustering them all near the bottom - see the effect_group tags below and
|
||
recipes.xml for the final per-item distribution:
|
||
Group 1 "Адепт" (ур. 0 = 0 убийств) - Spirit Stone, Knife, Blue Portal
|
||
Stone, Pyramid of Spirits; на ур. 1 (20 убийств) -
|
||
Spatial Vault, Blood Sphere и мод на воду; дальше три
|
||
выживальческих мода ножа на ур. 3 / 5 / 15
|
||
(60 / 100 / 300 убийств)
|
||
Group 2 "Подмастерье" (ур. 25 = 500) - Grimoire of Deviation, plus the two
|
||
combat knife mods на ур. 70 / 85 (1400 / 1700 убийств)
|
||
Group 3 "Ученик" (ур. 100 = 2000) - Zombie Dog, Insect Swarm, Zombie Griffin
|
||
Group 4 "Некромант" (ур. 150 = 3000) - Zombie Bear, Zombie Wolf, Banshee Scroll
|
||
Group 5 "Мастер" (ур. 250 = 5000) - Black Portal Stone
|
||
necroNecromancyLvl50/Lvl200 tags removed (no longer used by anything - Grimoire and
|
||
the summon books now use the real necroNecromancyJourneyman/Apprentice/Necromancer
|
||
tags instead). necroNecromancyLvl30 убран 2026-09-17 вместе с переходом на шкалу
|
||
20-за-уровень: 30 убийств на сетке с шагом 20 не выражается, и мод на воду переехал
|
||
на necroNecromancyLvl20 - тот самый тег браслета, по прямому указанию ("20
|
||
убийств"). necroNecromancyLvl20 stays - still the one legitimate one-off (see
|
||
above). -->
|
||
<append xpath="/progression/crafting_skills">
|
||
<crafting_skill name="craftingNecroNecromancy" max_level="250" parent="attCrafting" name_key="craftingNecroNecromancyName" desc_key="craftingNecroNecromancyDesc" long_desc_key="craftingNecroNecromancyLongDesc" icon="ui_game_symbol_skull">
|
||
|
||
<!-- display_entry block kept in the SAME append as the crafting_skill itself (unlike
|
||
an earlier draft of this edit, which tried appending display_entry via a second,
|
||
separate xpath targeting crafting_skill[@name='craftingNecroNecromancy'] BEFORE
|
||
this element even exists in load order - same class of bug that already broke
|
||
loot.xml once, see that file's own load-order comment. Nesting it here avoids the
|
||
ordering question entirely, and matches how vanilla itself writes display_entry -
|
||
directly inside the crafting_skill tag, not as a separate append). -->
|
||
<display_entry icon="SpiritStone" name_key="craftingNecroNecromancyTier1Name" has_quality="false" unlock_level="0,1,3,5,15">
|
||
<!-- necroHeresyPyramid added here 2026-08-31 (user request: "добавь рецепт блока в
|
||
скиллы") - unlock_tier="1" alongside the other always-available Tier-1 items,
|
||
matching its recipe's own necroNecromancyAdept tag in recipes.xml (see that
|
||
file's comment - both express the same "available immediately" intent). -->
|
||
<unlock_entry item="thrownStoneSpirit,necroWpnBladeNecroKnife,thrownStonePortalBlue,necroHeresyPyramid" unlock_tier="1"/>
|
||
<!-- resourceBloodSphere ПЕРЕЕХАЛА СЮДА ИЗ tier 1, 2026-09-16.
|
||
Сначала (15.09) она стояла на tier 1 по указанию «доступна на первом грейде»,
|
||
то есть с уровня 1. Но вставляется она в Пространственный браслет, а тот
|
||
открывается на tier 2 (уровень 20) - ровно этой же строкой. Девятнадцать
|
||
уровней игрок мог крафтить расходник к предмету, которого у него нет.
|
||
По записанному правилу мода «пороги - по нужде, а не по силе» порог ставится
|
||
туда, где предмет впервые нужен, - здесь это момент появления браслета.
|
||
Парная правка в recipes.xml: рецепту добавлены теги learnable и
|
||
necroNecromancyLvl20. Оба уровня ОБЯЗАНЫ совпадать: RecipeTagUnlocked для
|
||
necroNecromancyLvl20 стоит на level="1,250" ниже, а tier 2 в
|
||
unlock_level="0,1,3,5,15" - это тот же уровень 1. Разойдись они, замок на
|
||
панели скилла разошёлся бы с реальной доступностью рецепта.
|
||
|
||
2026-09-17, СМЕНА ШКАЛЫ (20 убийств = 1 уровень, см. шапку файла): «уровень
|
||
20» превратился в «уровень 1», убийств за ним по-прежнему 20. Сюда же, на
|
||
эту ступень, переехал мод ножа на воду - см. следующий комментарий. -->
|
||
<unlock_entry item="braceletSpatialVault,resourceBloodSphere,necroModKnifeTearsOfTheDead" unlock_tier="2"/>
|
||
<!-- ЧЕТЫРЕ МОДА НОЖА ПЕРЕЕХАЛИ СЮДА ИЗ ГРУППЫ 2, 2026-09-09. Продиктовано:
|
||
"Питьё важно в тот же день. Оно должно быть доступно после 30 убитых зомби.
|
||
Еда - 60. Это самые важные для начала выживания модификации. Модификация на
|
||
покой - 100 зомби. Модификацию на тёмное чутьё я бы сделал доступной после
|
||
300 убитых зомби."
|
||
|
||
ЧТО БЫЛО СЛОМАНО. Правка 2026-09-07 разложила все шесть модов ножа внутри
|
||
группы 2, то есть в диапазоне 500-1700 убийств. Это ошибка баланса, а не
|
||
кода (сама тройка "тег рецепта + RecipeTagUnlocked + unlock_tier" сходилась
|
||
по всем шести): голод и жажда - проблема ПЕРВЫХ ДНЕЙ, а к 500 убийствам у
|
||
игрока давно есть ферма, костёр, банки и фильтр, и +2 воды с трупа ему уже
|
||
не нужны. Два самых "выживальческих" мода открывались ровно тогда, когда
|
||
переставали быть нужны - мёртвый контент. Сам нож лежит в группе 1 и
|
||
доступен с уровня 1, поэтому моды на воду, еду и тепло теперь идут сразу за
|
||
ним, в той же группе.
|
||
|
||
Ступени группы 1 после правки: 1 - база, 20 - браслет, 30 - вода, 60 - еда,
|
||
100 - покой, 300 - чутьё. Все шесть порогов ниже 500, то есть на группу 2
|
||
они не заезжают. Хватка мертвеца (1400) и Мёртвая буря (1700) остались в
|
||
группе 2 - это чисто боевые моды, ранний доступ им не нужен ("дальше уже не
|
||
так принципиально").
|
||
|
||
Порядок вода -> еда не случаен и задан пользователем прямо: пить хочется в
|
||
тот же день, есть - позже.
|
||
|
||
ПЕРЕСЧИТАНО 2026-09-17 ПОД ШКАЛУ 20-ЗА-УРОВЕНЬ (см. шапку файла). Сами
|
||
пороги в убийствах не тронуты, кроме воды: 30 убийств на сетке с шагом 20 не
|
||
выражается, и по прямому указанию вода уехала ВНИЗ, на 20 - то есть на одну
|
||
ступень с браслетом и Кровавой сферой, а не вверх на 40. Ступеней в группе
|
||
теперь пять, а не шесть, и мод на воду стоит в строке tier 2 выше:
|
||
ур. 0 (0 убийств) - Камень духов, Нож, Синий портал, Пирамида
|
||
ур. 1 (20 убийств) - Браслет, Кровавая сфера, ВОДА
|
||
ур. 3 (60 убийств) - еда
|
||
ур. 5 (100 убийств) - покой
|
||
ур. 15 (300 убийств) - чутьё
|
||
Тег necroNecromancyLvl30 вместе с этим удалён - им больше никто не
|
||
пользуется, вода сидит на necroNecromancyLvl20. -->
|
||
<unlock_entry item="necroModKnifeScavengersFeast,bookSummonRatSpirit" unlock_tier="3"/>
|
||
<unlock_entry item="necroModKnifeGravesRepose" unlock_tier="4"/>
|
||
<unlock_entry item="necroModKnifeDarkSense" unlock_tier="5"/>
|
||
</display_entry>
|
||
<!-- Ступенчатая разблокировка внутри группы. ПЕРЕРАСПРЕДЕЛЕНО 2026-09-09: четыре из
|
||
шести модов ножа (вода/еда/покой/чутьё) уехали отсюда в группу 1 - см. большой
|
||
комментарий там. Здесь остались Гримуар и два боевых мода ножа.
|
||
|
||
КАК ЭТО ЧИТАЕТСЯ (разобрано по декомпиляции, потому что семантика неочевидная):
|
||
unlock_level - это список порогов (ProgressionClass.QualityStarts), а unlock_tier
|
||
в XML 1-based, при разборе из него вычитается единица
|
||
(ProgressionFromXml.cs:396 - "ParseSInt32(...) - 1"). Дальше
|
||
GetUnlockItemLocked = GetQualityLevel(level) <= UnlockTier
|
||
где GetQualityLevel возвращает индекс первого порога, который БОЛЬШЕ текущего
|
||
уровня. В сумме это даёт простое правило: запись с unlock_tier="N" выходит
|
||
из-под замка ровно на N-м значении unlock_level, считая с единицы. Поэтому здесь
|
||
tier 1 -> ур. 25, tier 2 -> ур. 70, tier 3 -> ур. 85 (500 / 1400 / 1700
|
||
убийств), а в группе 1 выше - tier 1 -> ур. 0, tier 2 -> ур. 1, tier 3 -> ур. 3,
|
||
tier 4 -> ур. 5, tier 5 -> ур. 15 (0 / 20 / 60 / 100 / 300 убийств).
|
||
|
||
Нижняя граница ноль - законна и проверена по коду: у группы 1 unlock_level
|
||
начинается с 0, и GetQualityLevel(0) возвращает 1 (первый порог БОЛЬШЕ нуля -
|
||
это единица), поэтому tier 1 (после -1 это 0) из-под замка выходит сразу. Точно
|
||
так же законен level="0,250" у RecipeTagUnlocked ниже: PassiveEffect.InLevelRange
|
||
это ровно "_level >= _min && _level <= _max".
|
||
|
||
Заблокированная запись рисуется греем из АТЛАСА ItemIconAtlasGreyscale плюс
|
||
спрайт-замок ui_game_symbol_unlock поверх (XUi_InGame/windows.xml ~2523-2524,
|
||
привязки unlock_icon_atlasN / unlock_icon_lockedN). Именно поэтому у мода теперь
|
||
есть вторая папка UIAtlases/ItemIconAtlasGreyscale - без неё под замком у иконки
|
||
не было бы картинки вообще. -->
|
||
<!-- ПИТОМЦЫ РАЗНЕСЕНЫ ПО ШКАЛЕ 2026-09-18, прямое указание: "давай разнесём получение
|
||
питомцев по шкале скилла. Крыса ок, она доступна почти сразу. Собака пусть
|
||
открывается на Подмастерье. Медведь на Ученик. Лютоволк - на 4000 зомби
|
||
(200 уровень некромантии)."
|
||
|
||
До этого трое из четверых лежали в одной куче: Пёс, Жуки и Гриф на Ученике (100),
|
||
Медведь, Волк и Банши на Некроманте (150). Стало так:
|
||
|
||
Дух крысы ур. 3 (60 убийств) - тег necroNecromancyLvl60, Адепт
|
||
Зомбопёс ур. 25 (500) - necroNecromancyJourneyman, Подмастерье
|
||
Зомбомедведь ур. 100 (2000) - necroNecromancyApprentice, Ученик
|
||
Зомбоволк ур. 200 (4000) - necroNecromancyLvl4000, Некромант
|
||
|
||
ГРИФ И ПЁС ПОМЕНЯНЫ МЕСТАМИ 2026-09-18, после игровой проверки: "пожалуй, стоит
|
||
его поменять местами с собакой по скиллу. Он проще собаки, и при этом сейчас
|
||
стал полезнее". Гриф встал на 500 убийств (ур. 25), Пёс на 1300 (ур. 65).
|
||
Странность, из-за которой это и поменяли: у Грифа урон 20, у Пса 35, но Гриф
|
||
летает, сам возвращается к хозяину и разведывает - на практике он оказался
|
||
полезнее. Жуки на Ученике и Свиток банши на Некроманте не трогались.
|
||
|
||
ПРАВИЛО, КОТОРОЕ ЛЕГКО НАРУШИТЬ (уже наступали, см. комментарий про браслет выше):
|
||
уровень в теге рецепта и unlock_level того display_entry, где предмет нарисован,
|
||
ОБЯЗАНЫ совпадать. display_entry рисует замок сам по себе, по unlock_tier, и про
|
||
теги не знает - разойдутся, и на панели будет замок на доступном рецепте. -->
|
||
<display_entry icon="ScrollOfDeviation" name_key="craftingNecroNecromancyTier2Name" has_quality="false" unlock_level="25,65,70,85">
|
||
<unlock_entry item="thrownBookGrimoireDeviation,bookSummonZombieGriffin" unlock_tier="1"/>
|
||
<!-- Зомбогриф, 18.09: "гриф пусть тоже будет на подмастерье, но 1300 (65 уровень
|
||
некромантии)". 65 вставлен в unlock_level МЕЖДУ 25 и 70, поэтому unlock_tier
|
||
у двух модов ножа ниже сдвинулись на единицу (были 2 и 3, стали 3 и 4).
|
||
Список обязан идти по возрастанию: unlock_tier - это номер позиции в нём. -->
|
||
<unlock_entry item="bookSummonZombieDog" unlock_tier="2"/>
|
||
<unlock_entry item="necroModKnifeDeadMansGrip" unlock_tier="3"/>
|
||
<unlock_entry item="necroModKnifeDeadStorm" unlock_tier="4"/>
|
||
</display_entry>
|
||
<!-- Иконка сменена с SummonZombieDog на SummonZombieBear 18.09: Пёс уехал на
|
||
Подмастерье, и группу теперь возглавляет Медведь. -->
|
||
<display_entry icon="SummonZombieBear" name_key="craftingNecroNecromancyTier3Name" has_quality="false" unlock_level="100">
|
||
<!-- resourceBloodStone добавлен 2026-09-16 (указание «доступен на третьем грейде
|
||
некромантии, в самом его начале»). Тир 3 - это и есть третий грейд, группа
|
||
«Ученик», а его единственный unlock_level равен 100 уровням (это те же 2000
|
||
убийств в шкале 20-за-уровень), то есть unlock_tier="1" здесь и означает «в
|
||
самом начале грейда, без своего смещения».
|
||
|
||
ЭТА СТРОКА - ТОЛЬКО ОТОБРАЖЕНИЕ. Открытие рецепта делает тег
|
||
necroNecromancyApprentice в recipes.xml вместе с RecipeTagUnlocked
|
||
level="100,250" ниже; display_entry о тегах не знает и рисует замок сам по
|
||
себе, по unlock_tier. Поэтому 100 здесь и 100 там ОБЯЗАНЫ совпадать -
|
||
иначе замок на панели разойдётся с реальной доступностью рецепта. Совпадают:
|
||
один порог, одно значение. -->
|
||
<unlock_entry item="bookSummonZombieBear,bookSummonInsectSwarm,resourceBloodStone" unlock_tier="1"/>
|
||
</display_entry>
|
||
<!-- Две ступени вместо одной: у группы появился второй уровень (200), потому что
|
||
Лютоволк теперь открывается позже Свитка банши. Иконка сменена на волчью -
|
||
Медведь уехал на Ученика. -->
|
||
<display_entry icon="SummonZombieWolf" name_key="craftingNecroNecromancyTier4Name" has_quality="false" unlock_level="150,200">
|
||
<unlock_entry item="bookBanshee" unlock_tier="1"/>
|
||
<unlock_entry item="bookSummonZombieWolf" unlock_tier="2"/>
|
||
</display_entry>
|
||
<display_entry icon="BlackPortalStone" name_key="craftingNecroNecromancyTier5Name" has_quality="false" unlock_level="250">
|
||
<unlock_entry item="thrownStonePortalBlack" unlock_tier="1"/>
|
||
</display_entry>
|
||
|
||
<effect_group>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="0,250" value="1" tags="necroNecromancyAdept"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="1,250" value="1" tags="necroNecromancyLvl20"/>
|
||
<!-- Пороги модов ножа, 2026-09-09 (см. комментарий в recipes.xml и в группе 1
|
||
выше). Каждый уровень тут ОБЯЗАН совпадать с соответствующим значением в
|
||
unlock_level того display_entry, где лежит мод, иначе замок на панели скилла
|
||
разойдётся с реальной доступностью рецепта: display_entry рисует замок сам по
|
||
себе, по unlock_tier, и о тегах не знает.
|
||
Lvl800 и Lvl1100 удалены вместе с этой правкой - ими больше никто не
|
||
пользуется (Тёмное чутьё уехало на 300, Могильный покой на 100).
|
||
|
||
ЗНАЧЕНИЯ level= ПЕРЕСЧИТАНЫ 2026-09-17 В УРОВНИ (шкала 20 убийств = 1
|
||
уровень, см. шапку файла). ИМЕНА ТЕГОВ ОСТАЛИСЬ В УБИЙСТВАХ и менять их не
|
||
надо: necroNecromancyLvl60 - это «60 убийств», а стоит он на level="3,250".
|
||
Верхняя граница у всех теперь 250, а не 5000 - это max_level скилла, выше
|
||
него уровень не поднимется, и диапазон обязан его накрывать. -->
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="3,250" value="1" tags="necroNecromancyLvl60"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="5,250" value="1" tags="necroNecromancyLvl100"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="15,250" value="1" tags="necroNecromancyLvl300"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="25,250" value="1" tags="necroNecromancyJourneyman"/>
|
||
<!-- Зомбогриф, 2026-09-18. 1300 убийств = 65-й уровень. -->
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="65,250" value="1" tags="necroNecromancyLvl1300"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="70,250" value="1" tags="necroNecromancyLvl1400"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="85,250" value="1" tags="necroNecromancyLvl1700"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="100,250" value="1" tags="necroNecromancyApprentice"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="150,250" value="1" tags="necroNecromancyNecromancer"/>
|
||
<!-- Лютоволк, 2026-09-18. Имя тега В УБИЙСТВАХ (4000), уровень - в уровнях (200):
|
||
шкала 20 убийств = 1 уровень, см. шапку файла. Это одноразовый порог внутри
|
||
группы "Некромант", а не новая группа - ровно та же схема, что у
|
||
necroNecromancyLvl20 и Lvl60 выше. -->
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="200,250" value="1" tags="necroNecromancyLvl4000"/>
|
||
<passive_effect name="RecipeTagUnlocked" operation="base_set" level="250,250" value="1" tags="necroNecromancyMaster"/>
|
||
</effect_group>
|
||
</crafting_skill>
|
||
</append>
|
||
</config>
|