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

76 lines
3.5 KiB
C#

using System.Collections.Generic;
namespace Harmony.TileEntityWorkstationPatches
{
[HarmonyPatch(typeof(TileEntityWorkstation))]
[HarmonyPatch(MethodType.Constructor)]
[HarmonyPatch(new Type[] { typeof(Chunk) })]
public static class TileEntityWorkstationConstructor
{
public static void Postfix(ref ItemStack[] ___output)
{
___output = ItemStack.CreateArray(16);
}
}
[HarmonyPatch(typeof(TileEntityWorkstation))]
[HarmonyPatch("UpdateTick")]
public class UpdateTickPatch
{
public static void Postfix(TileEntityWorkstation __instance, World world
)
{
if (__instance.IsBurning)
{
if (__instance.blockValue.Block.GetBlockName().Contains("FuriousRamsayScreamerSignalTier"))
{
if ((Time.time - RebirthVariables.screamerCheck) > 10f)
{
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update BlockName: " + __instance.blockValue.Block.GetBlockName());
RebirthVariables.screamerCheck = Time.time;
RebirthUtilities.SpawnScreamer(__instance.ToWorldPos());
Vector3i position = __instance.ToWorldPos();
int searchDistance = 150;
List<Entity> entitiesInBounds = world.GetEntitiesInBounds(typeof(EntityPlayer), BoundsUtils.BoundsForMinMax(position.x - searchDistance, position.y - 50, position.z - searchDistance, position.x + searchDistance, position.y + 50, position.z + searchDistance), new List<Entity>());
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update entitiesInBounds: " + entitiesInBounds.Count);
for (int i = 0; i < entitiesInBounds.Count; i++)
{
EntityPlayer entityPlayer = (EntityPlayer)entitiesInBounds[i];
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update entityPlayer: " + entityPlayer.EntityName);
if (entityPlayer != null)
{
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update ADDE BUFF");
entityPlayer.Buffs.AddBuff("FuriousRamsayScreamerSignalActive");
}
}
entitiesInBounds = world.GetEntitiesInBounds(typeof(EntityNPCRebirth), BoundsUtils.BoundsForMinMax(position.x - searchDistance, position.y - 50, position.z - searchDistance, position.x + searchDistance, position.y + 50, position.z + searchDistance), new List<Entity>());
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update entitiesInBounds: " + entitiesInBounds.Count);
for (int i = 0; i < entitiesInBounds.Count; i++)
{
EntityNPCRebirth npc = (EntityNPCRebirth)entitiesInBounds[i];
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update entityPlayer: " + entityPlayer.EntityName);
if (npc != null)
{
//Log.Out("XUiC_ScreamerSignalWindowGroup-Update ADDE BUFF");
npc.Buffs.AddBuff("FuriousRamsayScreamerSignalActive");
}
}
}
}
}
}
}
}