1.7.0: скакун на сферах в ячейках, ремонт костями; правки моделей скакуна и книги крысы
- Топливо скакуна - кровавые сферы в 4 ячейках модификаций, тратятся по очереди (одна сфера = 120 ед., бак 480); уровень бака считается по прочности сфер, выработанная сфера исчезает. Заправка канистрой убрана. В ячейки - только сферы. - Причина «не едет» и «-2147483648%»: Extends не наследует effect_group, у предмета скакуна не было ни ячеек, ни прочности. Своя группа: ModSlots 4, DegradationMax 4000; здоровье закреплено кодом (DegradationMax сфер в ячейках его перебивал бы). - Ремонт - 50 костей за ход вместо ремкомплекта; подсказка при нехватке, 13 языков. - Модель скакуна: сиденье и рама прогнуты по ванили, рога по оси руля, череп меньше и короче, свет фары в глазнице, крыло над передним колесом, зубы под черепом убраны. - Книга крысы: повёрнута как ванильная (палец на корешке), без металлических уголков. В игре не проверено. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
11db1116b0
commit
24d6e9f675
@@ -9,10 +9,8 @@ namespace NecromancerTome
|
||||
/// кровавых сферах. Сущность necroBoneSteed в entityclasses.xml - наследник vehicleMotorcycle
|
||||
/// со своей моделью (бандл necrobonesteed, собран из копии ванильного VMotorcycleP.prefab).
|
||||
///
|
||||
/// Топливо у транспорта игры в XML не задаётся: Vehicle.GetFuelItem() возвращает "ammoGasCan"
|
||||
/// строкой в коде. Отсюда два патча: предмет топлива - сфера, и заправка - одна сфера на полный
|
||||
/// бак (ваниль берёт по канистре на 1/25 единицы бака - 120 сфер на бак было бы абсурдом).
|
||||
/// Без сфер скакун глохнет как обычный транспорт (решение 01.10) - это ваниль, кода не нужно.
|
||||
/// Топливо - кровавые сферы в четырёх ячейках модификаций, ремонт - костями: всё это в
|
||||
/// BoneSteedFuelPatch. Здесь только запрет заправки канистрой (GetFuelItem).
|
||||
///
|
||||
/// Модель выросла из рипнутого префаба, и у неё те же две беды, что у оссуария: игровые теги
|
||||
/// коллайдеров потеряны (без них на скакуна не сесть и по нему не попасть) и шейдер-заглушка.
|
||||
@@ -22,6 +20,7 @@ namespace NecromancerTome
|
||||
{
|
||||
public const string EntityClassName = "necroBoneSteed";
|
||||
public const string FuelItem = "resourceBloodSphere";
|
||||
public const string ItemName = "necroBoneSteedPlaceable";
|
||||
const string VanillaPrefab = "@:Entities/Vehicles/VMotorcycle/VMotorcycleP.prefab";
|
||||
|
||||
public static bool Is(Entity e)
|
||||
@@ -110,39 +109,15 @@ namespace NecromancerTome
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Канистрой и вообще из рюкзака скакуна не заправить (указание 01.10): кровь
|
||||
/// вставляется только в ячейки. Пустой предмет топлива прячет пункт «Заправить» в меню.</summary>
|
||||
[HarmonyPatch(typeof(Vehicle), nameof(Vehicle.GetFuelItem))]
|
||||
public static class Patch_Vehicle_GetFuelItem_BoneSteed
|
||||
{
|
||||
public static void Postfix(Vehicle __instance, ref string __result)
|
||||
{
|
||||
if (__result != "" && BoneSteed.Is(__instance.entity))
|
||||
__result = BoneSteed.FuelItem;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Одна сфера - полный бак.</summary>
|
||||
[HarmonyPatch(typeof(EntityVehicle), nameof(EntityVehicle.AddFuelFromInventory))]
|
||||
public static class Patch_EntityVehicle_AddFuelFromInventory_BoneSteed
|
||||
{
|
||||
public static bool Prefix(EntityVehicle __instance, EntityAlive entity, ref bool __result)
|
||||
{
|
||||
if (!BoneSteed.Is(__instance))
|
||||
return true;
|
||||
__result = false;
|
||||
Vehicle v = __instance.GetVehicle();
|
||||
if (v.GetFuelPercent() >= 1f || !(entity is EntityPlayer player))
|
||||
return false;
|
||||
ItemValue sphere = ItemClass.GetItem(BoneSteed.FuelItem);
|
||||
int taken = player.inventory.DecItem(sphere, 1);
|
||||
if (taken == 0)
|
||||
taken = player.bag.DecItem(sphere, 1);
|
||||
if (taken == 0)
|
||||
return false;
|
||||
v.AddFuel(v.GetMaxFuelLevel() - v.GetFuelLevel());
|
||||
__instance.PlayOneShot("useactions/gas_refill");
|
||||
Debug.Log("[NecromancerTome] BoneSteed: сфера залита - полный бак");
|
||||
__result = true;
|
||||
return false;
|
||||
if (BoneSteed.Is(__instance.entity))
|
||||
__result = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user