using UnityEngine;
namespace NecromancerTome
{
///
/// Череп (останки) из красного трупа - сырьё для цинерария (дух-работник).
///
/// С 09.10 - находка при обычном обыске (указание: «браслет больше не собирает красные трупы,
/// выпиливаем; останки дропаются с шансом 2% при обычном лутании красного трупа»). Раньше (06.10) череп
/// вырывали пространственным браслетом: зажатая атака по трупу, три секунды канала, при неудаче труп
/// уходил в чёрный разрыв. Сняли из-за подозрения на утечку памяти на этом пути (тест 09.10: после
/// разрывов в памяти копились экземпляры сущностей - 31 при 7 живых).
///
/// Бросок - один раз на труп, при первом открытии его сумки, на сервере, сразу после того, как игра
/// наполнила её добычей (Patch_EntityAlive_OnLockRequestServer_Corpse). Шанс прежний - 2%
/// («так ресурс станет ценнее»).
///
public static class NecroSkull
{
public const string ItemName = "necroSkull";
public const float Chance = 0.02f;
/// Бросок на череп в только что наполненную сумку трупа. Места нет - сумка на ячейку больше.
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);
}
}
}
}