static bool Prefix(MonsterAI __instance, float dt, ref ZNetView ___m_nview, ref Character ___m_character, ref float ___m_timeSinceHurt, ref float ___m_jumpInterval, ref float ___m_jumpTimer, ref float ___m_randomMoveUpdateTimer, ref bool ___m_alerted) { if (!___m_nview.IsValid()) { return(true); } var uniqueId = ___m_nview.GetZDO().GetString(Constants.Z_CharacterId); if (string.IsNullOrEmpty(uniqueId)) { return(true); } if (!MobManager.IsRegisteredMob(uniqueId)) { return(true); } var mobAI = GetOrCreateMob(uniqueId, __instance, ___m_nview); if (null == mobAI) { return(true); } if (!___m_nview.IsOwner()) { return(false); } if (__instance.IsSleeping()) { Invoke(__instance, "UpdateSleep", new object[] { dt }); Common.Dbgl($"{___m_character.GetHoverName()}: Sleep updated"); return(false); } BaseAI_UpdateAI_ReversePatch.UpdateAI(__instance, dt, ___m_nview, ref ___m_jumpInterval, ref ___m_jumpTimer, ref ___m_randomMoveUpdateTimer, ref ___m_timeSinceHurt, ref ___m_alerted); mobAI.UpdateAI(dt); return(false); }