Files
zzz_REBIRTH__Utils/Harmony/Harmony_XUiM_Vehicle.cs
2025-06-04 16:44:53 +09:30

71 lines
2.8 KiB
C#

using Audio;
namespace Harmony.XUiM
{
internal class XUiM_VehiclePatches
{
[HarmonyPatch(typeof(XUiM_Vehicle))]
[HarmonyPatch("RepairVehicle")]
public class RebirthUtilsXUiMFeatures
{
public static bool Prefix(XUi _xui, Vehicle vehicle = null)
{
return false;
}
public static void Postfix(XUi _xui, Vehicle vehicle = null)
{
if (vehicle == null)
{
vehicle = _xui.vehicle.GetVehicle();
}
ItemValue item;
string entityType = vehicle.GetName();
//Log.Out("Entity Type: " + entityType);
if (entityType == "vehiclebicycle")
{
//Log.Out("Is Bicycle");
item = ItemClass.GetItem("FuriousRamsayBikeRepairKit", false);
}
else
{
//Log.Out("Is not Bicycle");
item = ItemClass.GetItem("resourceRepairKit", false);
}
ItemClass itemClass = item.ItemClass;
if (itemClass != null)
{
EntityPlayerLocal entityPlayer = _xui.playerUI.entityPlayer;
LocalPlayerUI playerUI = _xui.playerUI;
int itemCount = entityPlayer.bag.GetItemCount(item, -1, -1, false);
int itemCount2 = entityPlayer.inventory.GetItemCount(item, false, -1, -1);
int repairAmountNeeded = vehicle.GetRepairAmountNeeded();
if (itemCount + itemCount2 > 0 && repairAmountNeeded > 0)
{
vehicle.RepairParts(itemClass.RepairAmount.Value, 100);
if (itemCount2 > 0)
{
entityPlayer.inventory.DecItem(item, 1, false);
}
else
{
entityPlayer.bag.DecItem(item, 1, false);
}
playerUI.xui.CollectedItemList.RemoveItemStack(new ItemStack(item, 1));
Manager.PlayInsidePlayerHead("craft_complete_item", -1);
}
else if (repairAmountNeeded > itemCount + itemCount2)
{
Manager.PlayInsidePlayerHead("misc/missingitemtorepair");
GameManager.ShowTooltip(_xui.playerUI.entityPlayer, Localization.Get("xuiRepairMissingMats"));
ItemStack @is = new ItemStack(new ItemValue(itemClass.Id, false), 0);
_xui.playerUI.entityPlayer.AddUIHarvestingItem(@is, true);
}
}
}
}
}
}