using ai.behaviours; using HarmonyLib; using UnityEngine; namespace IdleSpectator; /// Boat transport/trade interest patches from mutation discovery. [HarmonyPatch] public static class BoatEventPatches { [HarmonyPatch(typeof(BehBoatTransportUnloadUnits), nameof(BehBoatTransportUnloadUnits.execute))] [HarmonyPostfix] public static void PostfixUnload(Actor pActor, BehResult __result) { if (pActor == null || !pActor.isAlive() || __result == BehResult.Stop) { return; } EmitBoat("boat_unload", 72f, InterestOwnership.Signal, pActor, "Boat unloads: {a}"); } [HarmonyPatch(typeof(BehBoatMakeTrade), nameof(BehBoatMakeTrade.execute))] [HarmonyPostfix] public static void PostfixTrade(Actor pActor, BehResult __result) { if (pActor == null || !pActor.isAlive() || __result == BehResult.Stop) { return; } EmitBoat("boat_trade", 68f, InterestOwnership.Signal, pActor, "Boat trade: {a}"); } [HarmonyPatch(typeof(BehBoatTransportDoLoading), nameof(BehBoatTransportDoLoading.execute))] [HarmonyPostfix] public static void PostfixLoad(Actor pActor, BehResult __result) { if (pActor == null || !pActor.isAlive() || __result == BehResult.Stop) { return; } EmitBoat("boat_load", 55f, InterestOwnership.Ambient, pActor, "Boat loads: {a}"); } private static void EmitBoat( string eventId, float strength, InterestOwnership owns, Actor actor, string labelTemplate) { if (AgentHarness.Busy) { return; } string label = (labelTemplate ?? "{a}").Replace("{a}", EventFeedUtil.SafeName(actor)); string key = "boat:" + eventId + ":" + EventFeedUtil.SafeId(actor); EventFeedUtil.Register( key, "boat", "Travel", label, eventId, strength, owns, actor.current_position, actor); } }