- Могильная крыса: своя модель без волчьей шерсти; стоит на земле (центр капсулы); E - осмотр контейнеров без права взять (окно игры, рюкзак скрыт, отказ «инвентарь заполнен», контейнер не разрушается); ПКМ - проход сквозь постройки, полупрозрачная. - Стервятник: курица в когтях - слепок с обвисшими крыльями и шеей, без хитбокса. - Зомбособака: нюх - все существа рядом на компасе и карте. - Медведь: толстая шкура (вдвое меньше урона), рёв-провокация, удар лапой по блокам. - Лютоволк: бросок на цель с опрокидыванием, след крови раненых, сумка на 3 ячейки (лут, выгрузка у тела, выпадает мешком при гибели и отзыве; отдельный файл сейва). - Череп (останки): 2% при обычном обыске красного трупа вместо браслета. - Прицел книги не рисуется в одержимости; подсказки вселения на 13 языках. - Замер EntityLeakProbe: удалённые, но живые в памяти сущности - в лог. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
2.3 KiB
C#
48 lines
2.3 KiB
C#
using UnityEngine;
|
|
|
|
namespace NecromancerTome
|
|
{
|
|
/// <summary>
|
|
/// Череп (останки) из красного трупа - сырьё для цинерария (дух-работник).
|
|
///
|
|
/// С 09.10 - находка при обычном обыске (указание: «браслет больше не собирает красные трупы,
|
|
/// выпиливаем; останки дропаются с шансом 2% при обычном лутании красного трупа»). Раньше (06.10) череп
|
|
/// вырывали пространственным браслетом: зажатая атака по трупу, три секунды канала, при неудаче труп
|
|
/// уходил в чёрный разрыв. Сняли из-за подозрения на утечку памяти на этом пути (тест 09.10: после
|
|
/// разрывов в памяти копились экземпляры сущностей - 31 при 7 живых).
|
|
///
|
|
/// Бросок - один раз на труп, при первом открытии его сумки, на сервере, сразу после того, как игра
|
|
/// наполнила её добычей (Patch_EntityAlive_OnLockRequestServer_Corpse). Шанс прежний - 2%
|
|
/// («так ресурс станет ценнее»).
|
|
/// </summary>
|
|
public static class NecroSkull
|
|
{
|
|
public const string ItemName = "necroSkull";
|
|
public const float Chance = 0.02f;
|
|
|
|
/// <summary>Бросок на череп в только что наполненную сумку трупа. Места нет - сумка на ячейку больше.</summary>
|
|
public static void Roll(EntityAlive _corpse, Bag _bag)
|
|
{
|
|
ItemValue skull = ItemClass.GetItem(ItemName);
|
|
if (_bag == null || skull == null || skull.IsEmpty())
|
|
{
|
|
return;
|
|
}
|
|
float roll = Random.value;
|
|
bool success = roll < Chance;
|
|
Debug.Log("[NecromancerTome] NecroSkull: труп " + _corpse.entityId + " - бросок " + roll.ToString("0.000") +
|
|
" против " + Chance.ToString("0.00") + (success ? " -> ЧЕРЕП" : ""));
|
|
if (!success)
|
|
{
|
|
return;
|
|
}
|
|
ItemStack stack = new ItemStack(skull, 1);
|
|
if (!_bag.AddItem(stack.Clone()))
|
|
{
|
|
_bag.Resize(new Vector2i(_bag.SlotCount + 1, 1));
|
|
_bag.AddItem(stack);
|
|
}
|
|
}
|
|
}
|
|
}
|