ИИ питомцев переписан, добавлен Дух крысы, пороги разнесены по шкале

Работа по указаниям 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>
This commit is contained in:
AlexCube
2026-09-18 20:51:42 +03:00
co-authored by Claude Opus 5
parent 15c59dd37a
commit d97f83e972
21 changed files with 2501 additions and 179 deletions
+51 -9
View File
@@ -179,7 +179,7 @@
ур. 15 (300 убийств) - чутьё
Тег necroNecromancyLvl30 вместе с этим удалён - им больше никто не
пользуется, вода сидит на necroNecromancyLvl20. -->
<unlock_entry item="necroModKnifeScavengersFeast" unlock_tier="3"/>
<unlock_entry item="necroModKnifeScavengersFeast,bookSummonRatSpirit" unlock_tier="3"/>
<unlock_entry item="necroModKnifeGravesRepose" unlock_tier="4"/>
<unlock_entry item="necroModKnifeDarkSense" unlock_tier="5"/>
</display_entry>
@@ -210,12 +210,43 @@
привязки unlock_icon_atlasN / unlock_icon_lockedN). Именно поэтому у мода теперь
есть вторая папка UIAtlases/ItemIconAtlasGreyscale - без неё под замком у иконки
не было бы картинки вообще. -->
<display_entry icon="ScrollOfDeviation" name_key="craftingNecroNecromancyTier2Name" has_quality="false" unlock_level="25,70,85">
<unlock_entry item="thrownBookGrimoireDeviation" unlock_tier="1"/>
<unlock_entry item="necroModKnifeDeadMansGrip" unlock_tier="2"/>
<unlock_entry item="necroModKnifeDeadStorm" unlock_tier="3"/>
<!-- ПИТОМЦЫ РАЗНЕСЕНЫ ПО ШКАЛЕ 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>
<display_entry icon="SummonZombieDog" name_key="craftingNecroNecromancyTier3Name" has_quality="false" unlock_level="100">
<!-- Иконка сменена с 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
@@ -228,10 +259,14 @@
себе, по unlock_tier. Поэтому 100 здесь и 100 там ОБЯЗАНЫ совпадать -
иначе замок на панели разойдётся с реальной доступностью рецепта. Совпадают:
один порог, одно значение. -->
<unlock_entry item="bookSummonZombieDog,bookSummonInsectSwarm,bookSummonZombieGriffin,resourceBloodStone" unlock_tier="1"/>
<unlock_entry item="bookSummonZombieBear,bookSummonInsectSwarm,resourceBloodStone" unlock_tier="1"/>
</display_entry>
<display_entry icon="SummonZombieBear" name_key="craftingNecroNecromancyTier4Name" has_quality="false" unlock_level="150">
<unlock_entry item="bookSummonZombieBear,bookSummonZombieWolf,bookBanshee" unlock_tier="1"/>
<!-- Две ступени вместо одной: у группы появился второй уровень (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"/>
@@ -257,10 +292,17 @@
<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>