diff --git a/Mu3Mods.csproj b/Mu3Mods.csproj index f94e3f6..a65a21c 100644 --- a/Mu3Mods.csproj +++ b/Mu3Mods.csproj @@ -2,7 +2,7 @@ net35 7EVENDAYS⇔HOLIDAYS - 3.2.0.0 + 3.3.0.0 true latest x64 diff --git a/Unlockers/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs b/Unlockers/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs index 6f84cc0..bfc40eb 100644 --- a/Unlockers/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs +++ b/Unlockers/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs @@ -19,6 +19,9 @@ class patch_PacketGetGameEvent: Packet { foreach(EventData eventData in SingletonStateMachine.instance.allEventData) { IdPeriod idPeriod = Enumerable.FirstOrDefault(_gameEvent.list, (IdPeriod e) => e.id == eventData.id); if(idPeriod != null) { + if(eventData.itemType == DataStudio.EventType.MissionEvent) { + continue; + } if(idPeriod.period.endDate < CustomDateTime.Now) { idPeriod.period.endDate = endDate; } diff --git a/Unlockers/UnlockGameEvents/MU3.OperationManager/patch_OperationManager.cs b/Unlockers/UnlockGameEvents/MU3.OperationManager/patch_OperationManager.cs new file mode 100644 index 0000000..e20b021 --- /dev/null +++ b/Unlockers/UnlockGameEvents/MU3.OperationManager/patch_OperationManager.cs @@ -0,0 +1,40 @@ +using MU3.Data; +using MU3.User; +using MU3.Util; +using System.Collections.Generic; + +namespace MU3.Operation; + +class patch_OperationManager: OperationManager { + private Dictionary _missionEventDataMap; + + public extern MissionEventData orig_getTargetMissionFromChapterID(int chapterId); + public new MissionEventData getTargetMissionFromChapterID(int chapterId) { + return overrideMission(orig_getTargetMissionFromChapterID(chapterId)); + } + + public extern MissionEventData orig_getTargetMissionFromStoryID(int storyId); + public new MissionEventData getTargetMissionFromStoryID(int storyId) { + return overrideMission(orig_getTargetMissionFromStoryID(storyId)); + } + + private MissionEventData overrideMission(MissionEventData orig) { + if(orig != null) { + foreach(KeyValuePair item in _missionEventDataMap) { + MissionEventData value = item.Value; + if(!value.isMissionEventActive || value.eventData == null) { + continue; + } + var userMissions = Singleton.instance.userMission; + if(userMissions != null && userMissions.TryGetValue(value.missionEventId, out UserMission um)) { + var rv = value.eventData.getNextEventPointBonus(out EventRewardInfo rewardInfo, um.Point); + if(!rv || rewardInfo.bonus_.RewardNameAndCounts[0].isLoop) { + continue; + } + } + return value; + } + } + return orig; + } +} \ No newline at end of file