// call this method from your Entry class public static void Initialize(IMonitor monitor, IModHelper helper, ModConfig config) { Monitor = monitor; Helper = helper; Config = config; }
// call this method from your Entry class public static void Initialize(IMonitor monitor) { Monitor = monitor; config = ModEntry.config; Helper = ModEntry.PHelper; }
/// <summary>The mod entry point, called after the mod is first loaded.</summary> /// <param name="helper">Provides simplified APIs for writing mods.</param> public override void Entry(IModHelper helper) { config = Helper.ReadConfig <ModConfig>(); if (!config.EnableMod) { return; } PMonitor = Monitor; PHelper = helper; mp = helper.Reflection.GetField <Multiplayer>(typeof(Game1), "multiplayer").GetValue(); myRand = new Random(); helper.Events.GameLoop.GameLaunched += HelperEvents.GameLoop_GameLaunched; helper.Events.GameLoop.SaveLoaded += HelperEvents.GameLoop_SaveLoaded; helper.Events.Input.ButtonPressed += HelperEvents.Input_ButtonPressed; helper.Events.GameLoop.DayStarted += HelperEvents.GameLoop_DayStarted; helper.Events.GameLoop.DayEnding += HelperEvents.GameLoop_DayEnding; helper.Events.GameLoop.ReturnedToTitle += HelperEvents.GameLoop_ReturnedToTitle; NPCPatches.Initialize(Monitor); LocationPatches.Initialize(Monitor); FarmerPatches.Initialize(Monitor, Helper); Maps.Initialize(Monitor); Kissing.Initialize(Monitor); UIPatches.Initialize(Monitor, Helper); EventPatches.Initialize(Monitor, Helper); HelperEvents.Initialize(Monitor, Helper); FileIO.Initialize(Monitor, Helper); Misc.Initialize(Monitor, Helper); Divorce.Initialize(Monitor, Helper); var harmony = HarmonyInstance.Create(this.ModManifest.UniqueID); // npc patches harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.marriageDuties)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_marriageDuties_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.getSpouse)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_getSpouse_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.isRoommate)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_isRoommate_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.isMarried)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_isMarried_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.isMarriedOrEngaged)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_isMarriedOrEngaged_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.tryToReceiveActiveObject)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_tryToReceiveActiveObject_Prefix)), transpiler: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_tryToReceiveActiveObject_Transpiler)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_tryToReceiveActiveObject_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.checkAction)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_checkAction_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.spouseObstacleCheck)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_spouseObstacleCheck_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), "engagementResponse"), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_engagementResponse_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.playSleepingAnimation)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_playSleepingAnimation_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.GetDispositionModifiedString)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_GetDispositionModifiedString_Prefix)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_GetDispositionModifiedString_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), "loadCurrentDialogue"), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_loadCurrentDialogue_Prefix)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_loadCurrentDialogue_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.tryToRetrieveDialogue)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_tryToRetrieveDialogue_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.setSpouseRoomMarriageDialogue)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_setSpouseRoomMarriageDialogue_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(NPC), nameof(NPC.setRandomAfternoonMarriageDialogue)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.NPC_setRandomAfternoonMarriageDialogue_Prefix)) ); // Child patches harmony.Patch( original: AccessTools.Method(typeof(Child), nameof(Child.reloadSprite)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.Child_reloadSprite_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(Child), nameof(Child.resetForPlayerEntry)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.Child_resetForPlayerEntry_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(Child), nameof(Child.dayUpdate)), prefix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.Child_dayUpdate_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Child), nameof(Child.tenMinuteUpdate)), postfix: new HarmonyMethod(typeof(NPCPatches), nameof(NPCPatches.Child_tenMinuteUpdate_Postfix)) ); // location patches harmony.Patch( original: AccessTools.Method(typeof(Beach), nameof(Beach.checkAction)), prefix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.Beach_checkAction_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(ManorHouse), nameof(ManorHouse.performAction)), prefix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.ManorHouse_performAction_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(FarmHouse), nameof(FarmHouse.getWalls)), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.FarmHouse_getWalls_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(FarmHouse), nameof(FarmHouse.getFloors)), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.FarmHouse_getFloors_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(GameLocation), nameof(GameLocation.performAction)), prefix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.GameLocation_performAction_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(GameLocation), nameof(GameLocation.answerDialogue)), prefix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.GameLocation_answerDialogue_prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Beach), "resetLocalState"), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.Beach_resetLocalState_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(FarmHouse), "resetLocalState"), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.FarmHouse_resetLocalState_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(GameLocation), "checkEventPrecondition"), prefix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.GameLocation_checkEventPrecondition_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(FarmHouse), nameof(FarmHouse.performTenMinuteUpdate)), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.FarmHouse_performTenMinuteUpdate_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(Desert), nameof(Desert.getDesertMerchantTradeStock)), postfix: new HarmonyMethod(typeof(LocationPatches), nameof(LocationPatches.Desert_getDesertMerchantTradeStock_Postfix)) ); // pregnancy patches harmony.Patch( original: AccessTools.Method(typeof(Utility), nameof(Utility.pickPersonalFarmEvent)), prefix: new HarmonyMethod(typeof(Pregnancy), nameof(Pregnancy.Utility_pickPersonalFarmEvent_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(QuestionEvent), nameof(QuestionEvent.setUp)), prefix: new HarmonyMethod(typeof(Pregnancy), nameof(Pregnancy.QuestionEvent_setUp_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(BirthingEvent), nameof(BirthingEvent.setUp)), prefix: new HarmonyMethod(typeof(Pregnancy), nameof(Pregnancy.BirthingEvent_setUp_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(BirthingEvent), nameof(BirthingEvent.tickUpdate)), prefix: new HarmonyMethod(typeof(Pregnancy), nameof(Pregnancy.BirthingEvent_tickUpdate_Prefix)) ); // Farmer patches harmony.Patch( original: AccessTools.Method(typeof(Farmer), nameof(Farmer.doDivorce)), prefix: new HarmonyMethod(typeof(FarmerPatches), nameof(FarmerPatches.Farmer_doDivorce_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Farmer), nameof(Farmer.isMarried)), prefix: new HarmonyMethod(typeof(FarmerPatches), nameof(FarmerPatches.Farmer_isMarried_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Farmer), nameof(Farmer.getSpouse)), prefix: new HarmonyMethod(typeof(FarmerPatches), nameof(FarmerPatches.Farmer_getSpouse_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Farmer), nameof(Farmer.checkAction)), prefix: new HarmonyMethod(typeof(FarmerPatches), nameof(FarmerPatches.Farmer_checkAction_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Farmer), nameof(Farmer.GetSpouseFriendship)), prefix: new HarmonyMethod(typeof(FarmerPatches), nameof(FarmerPatches.Farmer_GetSpouseFriendship_Prefix)) ); // UI patches harmony.Patch( original: AccessTools.Method(typeof(SocialPage), "drawNPCSlot"), prefix: new HarmonyMethod(typeof(UIPatches), nameof(UIPatches.SocialPage_drawNPCSlot_prefix)), transpiler: new HarmonyMethod(typeof(UIPatches), nameof(UIPatches.SocialPage_drawSlot_transpiler)) ); harmony.Patch( original: AccessTools.Method(typeof(SocialPage), "drawFarmerSlot"), transpiler: new HarmonyMethod(typeof(UIPatches), nameof(UIPatches.SocialPage_drawSlot_transpiler)) ); harmony.Patch( original: typeof(DialogueBox).GetConstructor(new Type[] { typeof(List <string>) }), prefix: new HarmonyMethod(typeof(UIPatches), nameof(UIPatches.DialogueBox_Prefix)) ); // Event patches harmony.Patch( original: AccessTools.Method(typeof(Event), nameof(Event.answerDialogueQuestion)), prefix: new HarmonyMethod(typeof(EventPatches), nameof(EventPatches.Event_answerDialogueQuestion_Prefix)) ); harmony.Patch( original: AccessTools.Method(typeof(Event), "setUpCharacters"), postfix: new HarmonyMethod(typeof(EventPatches), nameof(EventPatches.Event_setUpCharacters_Postfix)) ); harmony.Patch( original: AccessTools.Method(typeof(Event), nameof(Event.command_playSound)), prefix: new HarmonyMethod(typeof(EventPatches), nameof(EventPatches.Event_command_playSound_Prefix)) ); }