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

118 lines
4.5 KiB
C#

namespace Harmony.EntityPatches
{
internal class EntityPatches
{
[HarmonyPatch(typeof(Entity))]
[HarmonyPatch("OnEntityActivated")]
public class OnEntityActivatedPatch
{
private static bool Prefix(Entity __instance, ref bool __result, int _indexInBlockActivationCommands, Vector3i _tePos, global::EntityAlive _entityFocusing)
{
//Log.Out("EntityPatches-OnEntityActivated _indexInBlockActivationCommands: " + _indexInBlockActivationCommands);
if (_indexInBlockActivationCommands == 0)
{
//Log.Out("EntityPatches-OnEntityActivated 1");
if (__instance is EntitySupplyCrate)
{
//Log.Out("EntityPatches-OnEntityActivated 1");
EntitySupplyCrate entitySupplyCrate = (EntitySupplyCrate)__instance;
if (entitySupplyCrate != null)
{
//Log.Out("EntityPatches-OnEntityActivated 1");
if (!entitySupplyCrate.onGround)
{
//Log.Out("EntityPatches-OnEntityActivated 1");
__result = false;
return false;
}
}
}
}
return true;
}
}
[HarmonyPatch(typeof(global::Entity))]
[HarmonyPatch("HasAnyTags")]
public class HasAnyTagsPatch
{
private static bool Prefix(global::Entity __instance, ref bool __result, FastTags<TagGroup.Global> tags)
{
__result = __instance.EntityTags.Test_AnySet(tags);
return false;
}
}
[HarmonyPatch(typeof(global::Entity))]
[HarmonyPatch("HasAllTags")]
public class HasAllTagsPatch
{
private static bool Prefix(global::Entity __instance, ref bool __result, FastTags<TagGroup.Global> tags)
{
__result = __instance.EntityTags.Test_AllSet(tags);
return false;
}
}
[HarmonyPatch(typeof(Entity))]
[HarmonyPatch("EntityTags")]
[HarmonyPatch(MethodType.Getter)]
public static class EntityTagsPatch
{
public static void Postfix(Entity __instance, ref FastTags<TagGroup.Global> __result, ref FastTags<TagGroup.Global> ___cachedTags)
{
if (__instance is EntityZombieSDX)
{
EntityZombieSDX entity = (EntityZombieSDX)__instance;
__result = FastTags<TagGroup.Global>.Parse(___cachedTags.ToString() + entity.otherTags);
//Log.Out("====================================== TAGS ======================================");
//Log.Out(__result.ToString());
}
else if (__instance is EntityNPCRebirth)
{
EntityNPCRebirth entity = (EntityNPCRebirth)__instance;
__result = FastTags<TagGroup.Global>.Parse(___cachedTags.ToString() + entity.otherTags);
}
/*else if (__instance is EntityMeleeCyborgRebirth)
{
EntityMeleeCyborgRebirth entity = (EntityMeleeCyborgRebirth)__instance;
__result = FastTags<TagGroup.Global>.Parse(___cachedTags.ToString() + entity.otherTags);
}
else if (__instance is EntityMeleeRangedBanditSDX)
{
EntityMeleeRangedBanditSDX entity = (EntityMeleeRangedBanditSDX)__instance;
__result = FastTags<TagGroup.Global>.Parse(___cachedTags.ToString() + entity.otherTags);
}
else if (__instance is EntityMeleeWerewolfSDX)
{
EntityMeleeWerewolfSDX entity = (EntityMeleeWerewolfSDX)__instance;
__result = FastTags<TagGroup.Global>.Parse(___cachedTags.ToString() + entity.otherTags);
}*/
else
{
__result = ___cachedTags;
}
}
}
[HarmonyPatch(typeof(global::Entity))]
[HarmonyPatch("OnPushEntity")]
public class OnPushEntityPatch
{
private static bool Prefix(global::Entity __instance, Entity _entity)
{
if (__instance is EntityAnimalChickenRebirth)
{
//Log.Out("EntityPatches-OnPushEntity START");
return false;
}
return true;
}
}
}
}