1.7.0: костяной скакун, книга Духа крысы, турели, расход сфер в оссуарии
- Костяной скакун (necroBoneSteed): мотоцикл из костей, сухожилий и сосудов с черепом-циклопом вместо фары; своя модель (бандл necrobonesteed), ванильная система предмета-транспорта (necroBoneSteedPlaceable, предпросмотр при установке); топливо - кровавая сфера, одна сфера = полный бак; теги коллайдеров и шейдер копируются с ванильного мотоцикла; рецепт на верстаке, Подмастерье - Книга Духа крысы: своя модель (бандл necrobooks) - чёрная кожа, светящийся узор со скелетом крысы и семиконечной звездой, ржавые уголки, ремешок - Турели не стреляют по существам мода (питомцы, рой, змея) - Гео-оссуарий тратит 1/10 прочности сферы на стак вместо целой сферы В игре не проверено. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f2dfeed126
commit
11db1116b0
@@ -190,6 +190,50 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Расход сферы - по прочности, как в пространственном хранилище (указание 01.10: «одна
|
||||
/// сфера на стак - это жирно; 1/10 прочности на стак»). Ваниль в removeFuel вычитает ШТУКИ
|
||||
/// топлива, то есть съедала бы сферу целиком за каждый стак. Здесь вместо этого у первой
|
||||
/// сферы в отсеке списывается ChargePerStack прочности (DegradationMax сферы 500 -> 10 стаков
|
||||
/// со сферы); выработанная до нуля сфера исчезает из ячейки, как из браслета. Наличие топлива
|
||||
/// ваниль по-прежнему считает штуками (getFuelCount) - любая сфера с остатком годится.
|
||||
/// </summary>
|
||||
[HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.removeFuel))]
|
||||
public static class Patch_TileEntityCollector_removeFuel_GeoOssuary
|
||||
{
|
||||
public const int ChargePerStack = 50;
|
||||
|
||||
public static bool Prefix(TileEntityCollector __instance)
|
||||
{
|
||||
if (!GeoOssuary.Is(__instance))
|
||||
return true;
|
||||
ItemStack[] fuel = __instance.FuelSlots;
|
||||
for (int i = 0; i < fuel.Length; i++)
|
||||
{
|
||||
ItemStack stack = fuel[i];
|
||||
if (stack == null || stack.IsEmpty() || stack.itemValue.ItemClass == null ||
|
||||
stack.itemValue.ItemClass.Name != SpatialVaultPickup.ChargeItemName)
|
||||
continue;
|
||||
int max = stack.itemValue.MaxUseTimes;
|
||||
if (max <= 0)
|
||||
{
|
||||
// Прочность не задалась (DegradationMax) - ведём себя как ваниль: сфера за стак.
|
||||
fuel[i] = ItemStack.Empty;
|
||||
Debug.LogWarning("[NecromancerTome] GeoOssuary: у сферы MaxUseTimes 0 - списана целиком");
|
||||
return false;
|
||||
}
|
||||
stack.itemValue.UseTimes += ChargePerStack;
|
||||
if (stack.itemValue.UseTimes >= max)
|
||||
{
|
||||
fuel[i] = ItemStack.Empty;
|
||||
Debug.Log("[NecromancerTome] GeoOssuary: сфера в ячейке " + i + " выработана и исчезла");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(TileEntityCollector), nameof(TileEntityCollector.HandleSkyCheck))]
|
||||
public static class Patch_TileEntityCollector_HandleSkyCheck_GeoOssuary
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user