Эндгейм-версия расходника Пространственного браслета: то же место в слоте, что у
Кровавой сферы, но не тратится вовсе. Кода менять не пришлось - только конфиги.
ЗАОДНО ЭТО ПОЧИНКА УЖЕ ОТГРУЖЕННОГО ТЕКСТА. Сообщение о пустом слоте
(braceletSpatialVaultNoMod) и описание браслета обещают игроку "кровавую сферу
ИЛИ кровавый камень" на всех 13 языках с 15.09. Пока камня не было, оба текста
отправляли за предметом, которого в игре не существует.
СОВМЕСТИМОСТЬ СЕЙВОВ - ПЕРВОЕ, ЧТО ПРОВЕРЕНО. resourceBloodStone - НОВОЕ имя, в
существующих сейвах его нет, значит нет и ни одного стака, который читался бы по
другой байтовой раскладке. Это ровно то условие, нарушение которого в e362c62
убило персонажа: ItemValue.Read/Write гейтят блок модификаций одним условием
!(itemClass is ItemClassModifier), и класс предмета определяет раскладку каждого
стака в сейве. Камень заведён новым предметом, а не переводом существующего -
тем же решением, что и Кровавая сфера. Добавление нового <item_modifier>
раскладку уже записанных стаков не меняет: айди новых предметов дописываются в
name->id мэппинг сейва, байты старых стаков остаются как были.
БЕСКОНЕЧНАЯ ПРОЧНОСТЬ СДЕЛАНА ОТСУТСТВИЕМ СТРОК, А НЕ БОЛЬШИМ ЧИСЛОМ. У камня
сознательно нет ни ShowQuality, ни DegradationBreaksAfter, ни effect_group с
DegradationMax - сравнить со сферой, у которой все три есть. SpendCharge
(SpatialVaultPickupPatch.cs) списывает прочность только у модификации, чьё имя
равно ChargeItemName ("resourceBloodSphere"); камень под условие не попадает,
цикл делает continue, его UseTimes не трогает никто. Большой DegradationMax был
бы хуже: неподвижная полоска прочности бесполезна, а при MaxUseTimes == 0 она
рисуется ПОЛНОЙ, то есть забытая пассивка выглядела бы как "всё работает".
Три места в коде сверены на то, что камень пройдёт весь путь:
1. Гейт пустого слота в Begin - это !_bracelet.HasMods(), то есть "в слоте
что-нибудь есть", а НЕ "есть сфера по имени". Камень гейт проходит. Это был
главный риск правки: искал бы гейт сферу по имени, камень не работал бы.
2. SpendCharge вызывается ПОСЛЕ SetBlockRPC(..., Air) и bag.AddItem, а его
результат только логируется - ветки "не заплатил -> откажи" нет. Блок с
камнем уходит в хранилище, в логе "took ... into the vault for 0 of charge".
3. Ветка max <= 0 в SpendCharge камня не касается: до неё доходят только
предметы, прошедшие проверку имени.
ФАЙЛЫ
Config/item_modifiers.xml - новый item_modifier resourceBloodStone,
installable_tags="necroBracelet", свой modifier_tags="necroBraceletStone".
Extends="modGeneralMaster" param1="CustomIcon" - НЕ resourceRockSmall: с ним
приехали бы Action0 ThrowAway и ThrowableDecoy, и камень можно было бы метать
как отвлекающий (на сфере эта ошибка уже была и была исправлена). Вид в руке -
HoldType 40 плюс все три меша rock_smallPrefab плюс TintColor "220, 30, 45", как
у сферы и трёх камней мода. CustomIcon="BloodStone", без CustomIconTint:
иконка своя, рисованная, лежит в обеих папках атласа с 15.09.
Config/recipes.xml - рецепт на химстанции, craft_area="chemistryStation",
tags="learnable,chemStationCrafting,necroNecromancyApprentice": 50 праха зомби,
20 костей, 4 обычной крови, 1 кровь некроманта. Все четыре имени проверены по
файлам. Цена выше, чем читается по списку: крафт самой крови некроманта снимает
90% текущего ХП.
Config/progression.xml - камень добавлен в unlock_entry третьего display_entry
(unlock_level="2000", unlock_tier="1"). Это только строка в панели скилла;
открытие рецепта делает тег. 2000 здесь и 2000 у RecipeTagUnlocked обязаны
совпадать, иначе замок на панели разойдётся с доступностью рецепта.
Config/Localization.csv - два ключа, resourceBloodStone и
resourceBloodStoneDesc, 13 языков; ключей стало 135. Названия камня взяты из уже
переведённого braceletSpatialVaultNoMod, так что сообщение об отказе и имя в
инвентаре совпадают слово в слово. braceletSpatialVaultDesc дополнено на всех 13
языках: камень не тратится. Файл переписан через csv-модуль, round-trip без
правок даёт побайтово тот же файл - кавычки и CRLF остальных строк не поехали.
ОПИСАНИЯ. README.md, SITE_DESCRIPTION.html и NEXUS_DESCRIPTION.bbcode доведены
до текущего состояния мода: сфера и камень добавлены в таблицы тиров и в список
арсенала, у браслета сказано, что забор блоков питается зарядом в слоте,
счётчик ключей 130 -> 135. Заодно снято утверждение "весь контент проходит тесты
в игре" - оно перестало быть верным: расход сферы в игре подтверждён, камень в
игру ещё не грузился.
НЕ ПРОВЕРЕНО В ИГРЕ: камень целиком. Всё выше - сверка по файлам и по
декомпиляции. Сценарий проверки в BACKLOG.md; главное, на что смотреть, -
отсутствие полоски прочности у камня в слоте и "for 0 of charge" в логе.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
452 lines
33 KiB
XML
452 lines
33 KiB
XML
<config>
|
||
<!-- Tin can water boiling - user request 2026-08-30 ("Вода в консервных банках должна
|
||
кипятиться на костре даже если там нету кастрюли... так было сделано в другом моём моде
|
||
'Энерголук'" = AC-EnergyBow, the same __NoMods reference the tin can items themselves were
|
||
ported from - see items.xml's own comment on tinCanEmpty/tinCanRiverWater/
|
||
tinCanBoiledWater).
|
||
|
||
Root cause this was missing at all: `Extends` copies an item's PROPERTIES, never its
|
||
RECIPES - recipes are separate top-level <recipe> nodes matched by name, with no
|
||
inheritance mechanism of their own (confirmed by grepping this mod's own recipes.xml -
|
||
zero "tinCan" hits before this entry). tinCanRiverWater/tinCanBoiledWater extending
|
||
drinkJarRiverWater/drinkJarBoiledWater therefore got NONE of the vanilla mason-jar-boiling
|
||
recipe (`<recipe name="drinkJarBoiledWater" craft_area="campfire"
|
||
craft_tool="toolCookingPot">`, Data/Config/recipes.xml) - boiling a tin can was never
|
||
possible at all until this recipe existed, not merely pot-gated.
|
||
|
||
No `craft_tool="toolCookingPot"` here BY DESIGN, per the direct request - a metal can can
|
||
sit right in a campfire's coals on its own, unlike a mason jar. Confirmed real vanilla
|
||
precedent for a pot-less campfire recipe existing at all: `foodBakedPotato`/
|
||
`foodCharredMeat` both use craft_area="campfire" with no craft_tool attribute at all - a
|
||
campfire recipe is not implicitly pot-gated, craft_tool is an opt-in extra requirement,
|
||
not something `craft_area="campfire"` implies on its own. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="tinCanBoiledWater" count="1" craft_area="campfire">
|
||
<ingredient name="tinCanRiverWater" count="1"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Камень духов" (Spirit Stone): craftable from the start, no perk/skill gate -
|
||
packMuleCrafting is a weight-while-crafting tag, not a gate (see vanilla
|
||
campfire/candle recipes for the same pattern). Per BACKLOG.md item 1: 1 rock +
|
||
20 grass fiber (resourceRockSmall doubles as both the crafted item's own mesh/icon
|
||
source and its craft ingredient here, same as vanilla's own resourceRockSmallBundle). -->
|
||
<append xpath="/recipes">
|
||
<!-- resourceZombieAsh added 2026-08-29 (BACKLOG.md item 8) - count is a guess, not
|
||
specified by the user, kept modest like the rest of this recipe's ingredients. -->
|
||
<!-- resourceZombieAsh REMOVED 2026-08-31, direct user correction: this is the starter
|
||
weapon, craftable before the player has the Knife at all - same circular-dependency
|
||
problem items.xml's own resourceZombieAsh comment already flags and deliberately avoids
|
||
for the Knife's own recipe ("the knife has to stay craftable from scratch, and ash only
|
||
exists because the knife already tagged a zombie as a Victim"). Ash got added here
|
||
anyway during the 2026-08-29 item-8 blanket rollout ("becomes a crafting ingredient
|
||
across the other necromancy recipes") without checking this one against that same rule
|
||
- missed it then, fixed now. Back to the original 2026-08-28 recipe (1 rock + 20
|
||
fibers, BACKLOG.md item 1), nothing else changed. -->
|
||
<recipe name="thrownStoneSpirit" count="1" tags="packMuleCrafting">
|
||
<ingredient name="resourceRockSmall" count="1"/>
|
||
<ingredient name="resourceYuccaFibers" count="20"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- Two portal stones, BACKLOG.md item 6. Blue: no gate, simple early recipe by analogy with
|
||
the Spirit Stone (per that backlog note) - not specified exactly by the user. Black:
|
||
necroNecromancyMaster (level 5000, the existing "Мастер" tier, group 5) per direct
|
||
instruction. Both carry resourceZombieAsh like the other necromancy recipes
|
||
(BACKLOG.md item 8). -->
|
||
<append xpath="/recipes">
|
||
<!-- resourceZombieAsh bumped 5 -> 150, direct user correction 2026-08-31: unlike the Spirit
|
||
Stone (removed entirely, see that fix above), the Blue Portal Stone is NOT a starter
|
||
weapon - "он не является начальным оружием... больше про комфорт" - so the same
|
||
circular-dependency concern doesn't apply, and the user wants it to actually cost a
|
||
real chunk of ash rather than a token amount. -->
|
||
<recipe name="thrownStonePortalBlue" count="1" tags="packMuleCrafting">
|
||
<ingredient name="resourceRockSmall" count="1"/>
|
||
<ingredient name="drinkJarPureMineralWater" count="3"/>
|
||
<ingredient name="resourceYuccaFibers" count="15"/>
|
||
<ingredient name="resourceZombieAsh" count="150"/>
|
||
</recipe>
|
||
</append>
|
||
<!-- resourceNecromancerBlood x10 added 2026-08-30, direct instruction ("10 крови некроманта
|
||
нужно будет для рецепта чёрного портала"). ADDITIVE to the existing medicalBloodBag
|
||
ingredient, not a replacement - the user said "также" (also/additionally), not "instead
|
||
of"; the plain blood bag stays as the mundane-blood component, Necromancer's Blood as the
|
||
new, harder-to-get one. Say if this should replace medicalBloodBag instead. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="thrownStonePortalBlack" count="1" tags="learnable,packMuleCrafting,necroNecromancyMaster">
|
||
<ingredient name="resourceRockSmall" count="1"/>
|
||
<ingredient name="medicalBloodBag" count="5"/>
|
||
<ingredient name="resourceNecromancerBlood" count="10"/>
|
||
<ingredient name="casinoCoin" count="20"/>
|
||
<ingredient name="resourceYuccaFibers" count="15"/>
|
||
<ingredient name="resourceZombieAsh" count="20"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Кровь некроманта" (Necromancer's Blood): dictated 2026-08-30, see items.xml for the item
|
||
itself and HarmonySrc/NecromancerBloodPatch.cs for the knife-requirement/HP-cost mechanic
|
||
this recipe alone can't express. No level gate given by the user and none applied - same
|
||
"base" tier as the jar it's made from being a mundane always-available item; the real
|
||
gate on this ritual is the HP cost + knife requirement, not a skill level. drinkJarEmpty
|
||
confirmed as the real vanilla empty-jar item (Data/Config/items.xml) - not invented. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="resourceNecromancerBlood" count="1" tags="packMuleCrafting">
|
||
<ingredient name="drinkJarEmpty" count="1"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Пирамида Ереси" (Pyramid of Heresy): user request 2026-08-31, see blocks.xml/
|
||
HarmonySrc/PyramidWardPatch.cs for the block itself. "Рецепт доступен сразу" - no
|
||
"learnable" tag and no gate beyond necroNecromancyAdept (Group 1 "Адепт", unlocked from
|
||
level 1 - see progression.xml's own comment: a recipe with no unlock tag at all is already
|
||
always-available, the tag here is added anyway purely so the intent ("this is a Tier-1,
|
||
immediately-available necromancy recipe") is visible directly in this file, matching how
|
||
braceletSpatialVault documents itself with necroNecromancyLvl20 below rather than staying
|
||
unmarked). craft_area="workbench" (unlike the hand-craftable Knife/Spirit Stone) - this is
|
||
a heavy placeable structure, not a pocket item, matching braceletSpatialVault's own
|
||
workbench gate.
|
||
|
||
INGREDIENTS: resourceZombieAsh(1200)/resourceRockSmall/resourceYuccaFibers dictated
|
||
directly by the user ("прах зомби, камень, трава"). The rest chosen to fit a "necromantic
|
||
iron pylon" ("остальные ингредиенты добавь сам исходя из контекста"):
|
||
- resourceScrapIron: the block's own structural frame (real vanilla resource, matches
|
||
its own Destroy-drop in blocks.xml).
|
||
- resourceNecromancerBlood: the mod's existing magic-binding reagent (see above) - ties
|
||
the ward's charm magic to the same "blood" reagent already used elsewhere in this
|
||
mod's necromancy recipes, kept to a small count (3) since it costs the player 90% of
|
||
their current HP per unit to make (NecromancerBloodPatch.cs) - this recipe shouldn't
|
||
demand many. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="necroHeresyPyramid" count="1" craft_area="workbench" tags="workbenchCrafting,necroNecromancyAdept">
|
||
<ingredient name="resourceZombieAsh" count="1200"/>
|
||
<ingredient name="resourceRockSmall" count="300"/>
|
||
<ingredient name="resourceYuccaFibers" count="200"/>
|
||
<ingredient name="resourceScrapIron" count="300"/>
|
||
<ingredient name="resourceNecromancerBlood" count="3"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Гримуар девиации" (Grimoire of Deviation): BACKLOG.md item 2. Gated at
|
||
necroNecromancyJourneyman - group 2 "Подмастерье" (level 500), one of the 5 real skill
|
||
tiers (see progression.xml; REDISTRIBUTED 2026-08-30, was a one-off level-50 tag before -
|
||
direct user correction, "уровень скилла ты распределил идиотски"). -->
|
||
<append xpath="/recipes">
|
||
<recipe name="thrownBookGrimoireDeviation" count="1" tags="learnable,packMuleCrafting,necroNecromancyJourneyman">
|
||
<ingredient name="resourcePaper" count="20"/>
|
||
<ingredient name="resourceGlue" count="2"/>
|
||
<ingredient name="resourceCoal" count="5"/>
|
||
<ingredient name="resourceWood" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
<ingredient name="resourceZombieAsh" count="5"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Призыв зомбособаки" (Summon Zombie Dog): BACKLOG.md item 3. Gated at
|
||
necroNecromancyApprentice - group 3 "Ученик" (level 2000), one of the 5 real skill tiers
|
||
(see progression.xml; REDISTRIBUTED 2026-08-30, was a one-off level-200 tag before -
|
||
direct user correction, "уровень скилла ты распределил идиотски"). Per user request,
|
||
crafted at a workbench specifically (craft_area="workbench"), same as advanced-tier weapons
|
||
(e.g. vanilla gunHandgunT3SMG5) - NOT available from the player's own personal crafting
|
||
menu like the Spirit Stone/Grimoire above (those have no craft_area, so default to
|
||
personal crafting). workbenchCrafting is just the same UI-categorization tag vanilla's
|
||
own workbench recipes carry alongside craft_area, not a separate gate. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="bookSummonZombieDog" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyApprentice">
|
||
<ingredient name="foodRottingFlesh" count="50"/>
|
||
<ingredient name="medicalBloodBag" count="3"/>
|
||
<ingredient name="drinkJarBoiledWater" count="4"/>
|
||
<ingredient name="resourceYuccaFibers" count="50"/>
|
||
<ingredient name="resourceCloth" count="3"/>
|
||
<ingredient name="resourceLeather" count="10"/>
|
||
<ingredient name="resourceBone" count="40"/>
|
||
<ingredient name="casinoCoin" count="5"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Жуки Властелина": user request 2026-08-28. Personal crafting (no craft_area) - unlike the
|
||
Dog, unconfirmed whether this should be workbench-gated too; see items.xml. Same
|
||
necroNecromancyApprentice gate as the Dog - group 3 "Ученик" (level 2000, see
|
||
progression.xml; REDISTRIBUTED 2026-08-30 like the others above). Ingredients per
|
||
explicit user instruction: 1 resourceQueenBee ("одна пчеломатка") is required; the rest
|
||
("сам додумай, но без фанатизма") is a modest hive/bait theme (honey to draw and bind the
|
||
swarm, wood for a hive, fiber to hold it together) - kept deliberately small, no rare
|
||
currency/high counts like the Dog's recipe. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="bookSummonInsectSwarm" count="1" tags="learnable,necroNecromancyApprentice">
|
||
<ingredient name="resourceQueenBee" count="1"/>
|
||
<ingredient name="foodHoney" count="20"/>
|
||
<ingredient name="resourceWood" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="15"/>
|
||
<ingredient name="resourceZombieAsh" count="5"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Книга банши" (Banshee's Book): BACKLOG.md item 7. Gated at necroNecromancyNecromancer -
|
||
group 4 "Некромант" (level 3000), alongside Bear/Wolf (see progression.xml;
|
||
REDISTRIBUTED 2026-08-30, was necroNecromancyLvl200 before) - not specified by the user,
|
||
guessed consistent with the other "advanced ritual" summon items. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="bookBanshee" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyNecromancer">
|
||
<ingredient name="resourcePaper" count="15"/>
|
||
<ingredient name="resourceGlue" count="3"/>
|
||
<ingredient name="foodRottingFlesh" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="15"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Нож некроманта" (Necromancer's Knife): BACKLOG.md item 5, user request 2026-08-28.
|
||
No recipe/gate specified beyond the item's own mechanics - guessed modest and available
|
||
from the start (personal crafting, no craft_area, no level tag), same tier as the Spirit
|
||
Stone, since its real power comes from playing the necromancer build over time (damage
|
||
scales with kill count), not an expensive unlock. Say if this should change.
|
||
|
||
resourceZombieAsh (BACKLOG.md item 8) deliberately NOT added here, unlike the other
|
||
necromancy recipes - per explicit user instruction 2026-08-29: ash only drops from
|
||
zombies the knife itself has already marked as "Жертва", so requiring ash to craft the
|
||
knife would make the knife uncraftable from a fresh start (circular dependency).
|
||
|
||
medicalBloodBag SWAPPED for resourceNecromancerBlood 2026-08-30, direct instruction
|
||
("для ножа некроманта пусть используется кровь некроманта"). NOT a circular dependency
|
||
like the ash case above, even though this item needs a knife to craft (see
|
||
NecromancerBloodPatch.cs) - resourceNecromancerBlood's own requirement is "ANY knife"
|
||
(ItemClass.DisplayType == "meleeKnife"), which vanilla's own starting/craftable knives
|
||
(e.g. the plain bone knife) already satisfy - it does NOT require this specific
|
||
necroWpnBladeNecroKnife to already exist. Count kept at 1, same as the medicalBloodBag it
|
||
replaces - not inflated further, since the blood itself is now a genuinely costly
|
||
ingredient (90% current HP + a knife + a jar per unit). -->
|
||
<append xpath="/recipes">
|
||
<recipe name="necroWpnBladeNecroKnife" count="1" tags="packMuleCrafting">
|
||
<ingredient name="resourceBone" count="5"/>
|
||
<ingredient name="resourceNecromancerBlood" count="1"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- Three more summon-book recipes, BACKLOG.md item 4a. REPLACED 2026-08-29 - Griffin/Bear/
|
||
Wolf instead of Stripper/Cop/Soldier (see entityclasses.xml). Same workbench shape as the
|
||
Dog's own recipe; Griffin shares the Dog's gate (necroNecromancyApprentice, group 3
|
||
"Ученик", level 2000), Bear/Wolf are one tier higher (necroNecromancyNecromancer, group 4
|
||
"Некромант", level 3000, alongside the Banshee) - split REDISTRIBUTED 2026-08-30 across
|
||
the real 5 skill tiers instead of one shared one-off level-200 tag (see progression.xml).
|
||
Ingredient lists are a themed guess per creature (not specified by the user) -
|
||
resourceFeather/foodRawMeat both verified to exist in vanilla items.xml before use, same
|
||
lesson as the earlier wrong guesses. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="bookSummonZombieGriffin" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyApprentice">
|
||
<ingredient name="resourceFeather" count="30"/>
|
||
<ingredient name="resourceBone" count="20"/>
|
||
<ingredient name="casinoCoin" count="5"/>
|
||
<ingredient name="resourceYuccaFibers" count="20"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
<append xpath="/recipes">
|
||
<recipe name="bookSummonZombieBear" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyNecromancer">
|
||
<ingredient name="resourceLeather" count="20"/>
|
||
<ingredient name="foodRawMeat" count="10"/>
|
||
<ingredient name="resourceBone" count="20"/>
|
||
<ingredient name="resourceYuccaFibers" count="20"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
<append xpath="/recipes">
|
||
<recipe name="bookSummonZombieWolf" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyNecromancer">
|
||
<ingredient name="resourceLeather" count="15"/>
|
||
<ingredient name="foodRawMeat" count="10"/>
|
||
<ingredient name="resourceBone" count="15"/>
|
||
<ingredient name="resourceYuccaFibers" count="20"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- "Петля вора" (Thief's Loop) recipe REMOVED 2026-08-30 along with the item itself - see
|
||
items.xml for why. -->
|
||
|
||
<!-- "Пространственный браслет" (Spatial Bracelet) - gate moved 2026-08-30 from
|
||
necroNecromancyLvl200 to necroNecromancyLvl20 per direct instruction ("нож, камень духов
|
||
и хранилище - это база... хранилище, когда убито минимум 20 зомби"). craft_area/workbench
|
||
left as-is (not specified either way) - still an "advanced" build, just unlocked much
|
||
earlier than before. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="braceletSpatialVault" count="1" craft_area="workbench" tags="learnable,workbenchCrafting,necroNecromancyLvl20">
|
||
<ingredient name="resourceLeather" count="10"/>
|
||
<ingredient name="resourceMechanicalParts" count="5"/>
|
||
<ingredient name="resourceScrapIron" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="15"/>
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- СТУПЕНЧАТАЯ РАЗБЛОКИРОВКА МОДОВ НОЖА. Изначально (2026-09-07) продиктовано: "механика
|
||
скиллов даёт возможность сделать их доступными не сразу, а по мере набора количества
|
||
убитых зомби. Т.е. грейд открылся, а рецепт ещё нет, на нём замочек. Еда/вода должны
|
||
открываться на грейде сразу. Чутьё чуть позже, хватка ещё позже. Но всё в рамках грейда."
|
||
|
||
ПЕРЕСТАВЛЕНО 2026-09-09 - прямая правка баланса от пользователя: "Питьё важно в тот же
|
||
день. Оно должно быть доступно после 30 убитых зомби. Еда - 60. Это самые важные для
|
||
начала выживания модификации. Модификация на покой - 100 зомби. Модификацию на тёмное
|
||
чутьё я бы сделал доступной после 300 убитых зомби. Дальше уже не так принципиально."
|
||
|
||
ЧТО БЫЛО НЕ ТАК. Первая раскладка держала все шесть модов внутри группы 2, то есть в
|
||
диапазоне 500-1700 убийств. Ошибка не в коде (тег рецепта, RecipeTagUnlocked и
|
||
unlock_tier сходились по всем шести), а в балансе: вода и еда нужны в ПЕРВЫЕ ДНИ, а к
|
||
500 убийствам у игрока уже есть ферма, костёр, банки и фильтр - мод, дающий +2 воды с
|
||
трупа, к этому моменту бесполезен. Теперь порог у мода стоит там, где мод реально нужен,
|
||
а не там, где он "по силе" смотрится ровно.
|
||
|
||
Итоговая раскладка:
|
||
30 - Слёзы мертвеца (вода) группа 1 "Адепт"
|
||
60 - Пир падальщика (еда) группа 1
|
||
100 - Могильный покой (тепло/холод) группа 1
|
||
300 - Тёмное чутьё (радар) группа 1
|
||
1400 - Хватка мертвеца (замедление) группа 2 "Подмастерье"
|
||
1700 - Мёртвая буря (силовая) группа 2
|
||
Первые четыре - выживание и информация, они переехали в группу 1 к самому ножу (он там и
|
||
доступен с уровня 1). Последние два - чистый бой, остались в группе 2 на прежних порогах:
|
||
пользователь про них сказал "дальше уже не так принципиально".
|
||
|
||
Двигать - тройка "тег в рецепте + RecipeTagUnlocked в progression.xml + unlock_tier в
|
||
display_entry", все три должны совпадать, иначе замок на панели соврёт. -->
|
||
<!-- Модификации Ножа некроманта (см. Config/item_modifiers.xml), 2026-09-07. Пользователь
|
||
выбрал получение через "Крафт по скиллу Некромантии", поэтому все три идут обычными
|
||
рецептами с тегом группы, а не через лут.
|
||
|
||
Пороги у каждого свои, см. комментарий выше - изначально все шесть сидели в группе 2
|
||
("Подмастерье", 500 убийств), но 2026-09-09 четыре из них уехали в группу 1 к самому
|
||
ножу. Распределение остальных тиров скилла эта правка не трогает - его пользователь уже
|
||
правил вручную (см. progression.xml).
|
||
|
||
Ингредиенты - только из уже существующих ресурсов мода плюс ванильная база, как и просил
|
||
("Ингредиенты из уже существующих ресурсов мода"). Прах зомби и Кожа жертвы обе падают
|
||
из мешка "Жертва", то есть добываются этим же ножом - моды для ножа делаются из того, что
|
||
нож добыл. Крафт личный (без craft_area), как у Камня духов и самого ножа: моды дешевле
|
||
призывов и не должны требовать верстак. Тег learnable, как у остальных гейтованных
|
||
рецептов мода, чтобы рецепт не светился в меню до открытия группы. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="necroModKnifeTearsOfTheDead" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl30">
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
<ingredient name="resourceVictimSkin" count="1"/>
|
||
<ingredient name="drinkJarEmpty" count="2"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
<recipe name="necroModKnifeScavengersFeast" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl60">
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
<ingredient name="resourceVictimSkin" count="1"/>
|
||
<ingredient name="foodRawMeat" count="5"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
<recipe name="necroModKnifeDeadMansGrip" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl1400">
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
<ingredient name="resourceBone" count="15"/>
|
||
<ingredient name="resourceNecromancerBlood" count="1"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
<!-- "Могильный покой" (термозащита), добавлен 2026-09-07, порог 100 с 2026-09-09. Тот же
|
||
личный крафт, что у остальных модов ножа. Кожа жертвы тут не косметика: мод по смыслу - обмотка
|
||
рукояти, поэтому её взято 2 (больше всех), плюс перо как утеплитель - ванильный
|
||
resourceFeather, существование проверено. -->
|
||
<recipe name="necroModKnifeGravesRepose" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl100">
|
||
<ingredient name="resourceZombieAsh" count="10"/>
|
||
<ingredient name="resourceVictimSkin" count="2"/>
|
||
<ingredient name="resourceFeather" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
<!-- "Мёртвая буря" (переделка силовой атаки), 2026-09-07. Единственный мод ножа с
|
||
электрическими деталями в рецепте - искрение берётся из ванильного buffShocked, того
|
||
же, что у электродубинки, так что ингредиент тематически честный. Существование
|
||
resourceElectricParts проверено. -->
|
||
<!-- "Тёмное чутьё" (радар зомби), 2026-09-07. Глаз мертвеца как линза - отсюда кожа
|
||
жертвы и прах. Стекло взято resourceBrokenGlass (обычный лут), а НЕ resourceScopeLens:
|
||
та линза крафтится только в кузне и под перком perkAdvancedEngineering, то есть
|
||
утащила бы рецепт ножа в зависимость от чужой ветки прокачки. resourceGlass, которое
|
||
напрашивалось по названию, в игре не существует вовсе - проверено. -->
|
||
<recipe name="necroModKnifeDarkSense" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl300">
|
||
<ingredient name="resourceZombieAsh" count="15"/>
|
||
<ingredient name="resourceVictimSkin" count="1"/>
|
||
<ingredient name="resourceBrokenGlass" count="10"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
|
||
<recipe name="necroModKnifeDeadStorm" count="1" tags="learnable,packMuleCrafting,necroNecromancyLvl1700">
|
||
<ingredient name="resourceZombieAsh" count="15"/>
|
||
<ingredient name="resourceElectricParts" count="5"/>
|
||
<ingredient name="resourceNecromancerBlood" count="1"/>
|
||
<ingredient name="resourceYuccaFibers" count="10"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- Кровавая сфера, продиктовано 2026-09-15: «Станки не нужны. Ингридиенты: Кровь некроманта,
|
||
5 праха зомби. По одному рецепту изготавливается две сферы.»
|
||
|
||
Ни craft_area, ни тега разблокировки: «первый грейд» - это группа 1 «Адепт», а она открыта
|
||
с уровня 1, и рецепт БЕЗ тега просто доступен всегда. Ровно так же сделан Камень духов
|
||
выше в этом файле - см. комментарий в progression.xml, там это правило записано словами.
|
||
В скиллах сфера показана отдельной строкой группы 1 с unlock_tier="1".
|
||
|
||
ЗАМЕЧЕНО, НЕ ИСПРАВЛЕНО: сам Пространственный браслет открывается на 20 убийствах
|
||
(unlock_tier="2" в группе 1), то есть сферу можно скрафтить на 19 уровней раньше, чем
|
||
появится предмет, в который её вставляют. По записанному правилу «пороги - по нужде, а не
|
||
по силе» ей место рядом с браслетом. Оставлено как продиктовано; переезд - это unlock_tier
|
||
с 1 на 2 в progression.xml плюс тег necroNecromancyLvl20 сюда.
|
||
|
||
Цена реальная, а не по списку: одна кровь некроманта стоит ещё и 90% текущего ХП на её
|
||
собственный крафт (NecromancerBloodPatch.cs). Две сферы за один заход это и учитывают. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="resourceBloodSphere" count="2" tags="packMuleCrafting">
|
||
<ingredient name="resourceNecromancerBlood" count="1"/>
|
||
<ingredient name="resourceZombieAsh" count="5"/>
|
||
</recipe>
|
||
</append>
|
||
|
||
<!-- Кровавый камень, продиктовано 2026-09-15: «Рецепт: 50 праха зомби, 20 костей, 4 флакона
|
||
обычной крови, 1 кровь некроманта. Рецепт будет доступен на третьем грейде некромантии
|
||
(в самом его начале)... Рабочее место - химическая станция.»
|
||
|
||
Все четыре имени проверены по файлам, а не по памяти:
|
||
resourceZombieAsh - свой предмет мода (Config/items.xml)
|
||
resourceBone - ванильный (Data/Config/items.xml:23781)
|
||
medicalBloodBag - ванильный (Data/Config/items.xml:19196)
|
||
resourceNecromancerBlood - свой предмет мода (Config/items.xml:1321). После отката
|
||
15.09 он снова обычный <item> в items.xml, а не модификация.
|
||
|
||
ЦЕНА ВЫШЕ, ЧЕМ ЧИТАЕТСЯ ПО СПИСКУ: одна кровь некроманта стоит ещё и 90% текущего ХП на
|
||
её собственный крафт (NecromancerBloodPatch.cs).
|
||
|
||
«ТРЕТИЙ ГРЕЙД, В САМОМ ЕГО НАЧАЛЕ» = ровно порог группы 3 «Ученик», без собственного
|
||
смещения, то есть тег necroNecromancyApprentice и уровень 2000 (progression.xml,
|
||
RecipeTagUnlocked level="2000,5000"). Тег уже заведён и уже работает - свой
|
||
necroNecromancyLvl*-тег здесь не нужен, такие одноразовые уровни в моде заведены ровно
|
||
один раз (necroNecromancyLvl20 для браслета) и считаются исключением, а не приёмом.
|
||
В progression.xml камень добавлен в display_entry третьего тира (unlock_level="2000")
|
||
строкой скилл-панели - это чисто отображение, механику открытия делает тег.
|
||
|
||
ДВА ИМЕНИ, КОТОРЫЕ ЛЕГКО ПЕРЕПУТАТЬ, выписаны проверенными по ванили (образцы ammoGasCan,
|
||
carBattery в Data/Config/recipes.xml): craft_area="chemistryStation" - ПОЛНОЕ слово, а
|
||
тег - chemStationCrafting, СОКРАЩЁННОЕ "chem", не "chemistry".
|
||
|
||
Тег learnable - как у остальных гейтованных рецептов мода, чтобы рецепт не светился в
|
||
меню до открытия группы.
|
||
|
||
ПОБОЧНОЕ СЛЕДСТВИЕ, замеченное заранее: химстанция добавляет камню ВТОРОЙ порог поверх
|
||
уровня 2000 - она открывается своим путём (перк/схема), с Некромантией не связанным.
|
||
Практически к 2000 уровню она у игрока почти наверняка есть, но формально «третий грейд»
|
||
перестаёт быть единственным условием. Ручка одна: убрать craft_area и вернуть личный
|
||
крафт.
|
||
|
||
БАЛАНСОВАЯ ЗАМЕТКА: слот у браслета один, значит камень с бесконечной прочностью не
|
||
дополняет Кровавую сферу, а ВЫТЕСНЯЕТ её в тот момент, когда игрок его получает. Судя по
|
||
формулировке («тот же флакон, но с бесконечной прочностью») это и задумано - камень это
|
||
эндгейм-версия расходника, уровень 2000 как раз про это. Записано, чтобы потом не
|
||
удивляться, что сфера перестала расходоваться. -->
|
||
<append xpath="/recipes">
|
||
<recipe name="resourceBloodStone" count="1" craft_area="chemistryStation" tags="learnable,chemStationCrafting,necroNecromancyApprentice">
|
||
<ingredient name="resourceZombieAsh" count="50"/>
|
||
<ingredient name="resourceBone" count="20"/>
|
||
<ingredient name="medicalBloodBag" count="4"/>
|
||
<ingredient name="resourceNecromancerBlood" count="1"/>
|
||
</recipe>
|
||
</append>
|
||
</config>
|