1
0
forked from akanyan/mu3-mods
Files
mu3-mods/Unlockers/UnlockGameEvents/MU3.Client/patch_PacketGetGameEvent.cs
akanyan 40484bc94a feat(UnlockGameEvents): mission event cycling
* Makes the game use the first available non-cleared mission.
  * Rather than the first available mission period.
* No longer unlocks missions marked as expired by the server.
2025-01-23 02:17:28 +00:00

41 lines
1.4 KiB
C#

using MU3.Data;
using MU3.Operation;
using MU3.Util;
using System;
using System.Linq;
namespace MU3.Client;
class patch_PacketGetGameEvent: Packet {
public Operation.GameEvent _gameEvent;
public Operation.GameEvent gameEvent => _gameEvent;
public extern State orig_proc();
public override State proc() {
State state = orig_proc();
if(state == State.Done) {
DateTime endDate = DateTime.Parse("2099-01-01 05:00:00.0");
_gameEvent ??= new Operation.GameEvent();
foreach(EventData eventData in SingletonStateMachine<DataManager, DataManager.EState>.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;
}
} else {
idPeriod = new() {
id = eventData.id,
period = new Period(DateTime.MinValue.Date, endDate)
};
_gameEvent.list.Add(idPeriod);
_gameEvent.lastUpdate = CustomDateTime.Now;
}
}
}
return state;
}
}