mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
fix: partly entry mission of Zagreus
This commit is contained in:
@@ -18,4 +18,36 @@ public class CommandRaid : ICommand
|
||||
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Raid.Leaved"));
|
||||
}
|
||||
|
||||
[CommandMethod("0 reset")]
|
||||
public async ValueTask Reset(CommandArg arg)
|
||||
{
|
||||
if (arg.Target == null)
|
||||
{
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Notice.PlayerNotFound"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (arg.BasicArgs.Count < 2)
|
||||
{
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Notice.InvalidArguments"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!int.TryParse(arg.BasicArgs[0], out var raidId))
|
||||
{
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Mission.InvalidMissionId"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!int.TryParse(arg.BasicArgs[1], out var level))
|
||||
{
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Mission.InvalidMissionId"));
|
||||
return;
|
||||
}
|
||||
|
||||
await arg.Target.Player!.RaidManager!.ClearRaid(raidId, level);
|
||||
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Raid.Leaved"));
|
||||
}
|
||||
}
|
||||
@@ -271,15 +271,33 @@ public class RaidManager : BasePlayerManager
|
||||
GameData.RaidConfigData.TryGetValue(raidId * 100 + worldLevel, out var config);
|
||||
if (config == null) return;
|
||||
|
||||
config.MainMissionIDList.ForEach(async missionId =>
|
||||
HashSet<int> floorIds = [];
|
||||
foreach (var missionId in config.MainMissionIDList)
|
||||
{
|
||||
await Player.MissionManager!.RemoveMainMission(missionId);
|
||||
});
|
||||
|
||||
GameData.MainMissionData.TryGetValue(missionId, out var mission);
|
||||
if (mission?.MissionInfo.SubMissionList == null) continue;
|
||||
foreach (var i in mission.MissionInfo.SubMissionList.Select(x => x.LevelFloorID).ToHashSet())
|
||||
{
|
||||
floorIds.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
dict.Remove(worldLevel);
|
||||
|
||||
if (dict.Count == 0) RaidData.RaidRecordDatas.Remove(raidId);
|
||||
|
||||
// reset scene data
|
||||
foreach (var floorId in floorIds)
|
||||
{
|
||||
Player.SceneData!.PropTimelineData.Remove(floorId);
|
||||
Player.SceneData!.GroupPropertyData.Remove(floorId);
|
||||
Player.SceneData!.FloorTargetPuzzleGroupData.Remove(floorId);
|
||||
Player.SceneData!.FloorSavedData.Remove(floorId);
|
||||
Player.SceneData!.ScenePropData.Remove(floorId);
|
||||
}
|
||||
|
||||
await Player.SendPacket(new PacketDelSaveRaidScNotify(raidId, worldLevel));
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using EggLink.DanhengServer.Util;
|
||||
using System.Management;
|
||||
using EggLink.DanhengServer.Enums.Mission;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Game.Scene;
|
||||
|
||||
@@ -340,6 +342,12 @@ public class SceneInstance
|
||||
floorSavedData[name] = value;
|
||||
|
||||
await Player.SendPacket(new PacketUpdateFloorSavedValueNotify(name, value, Player));
|
||||
await Player.MissionManager!.HandleFinishType(MissionFinishTypeEnum.FloorSavedValue);
|
||||
}
|
||||
|
||||
public int GetFloorSavedValue(string name)
|
||||
{
|
||||
return Player.SceneData!.GetFloorSavedValue(FloorId, name);
|
||||
}
|
||||
|
||||
public int GetGroupProperty(int groupId, string name)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using EggLink.DanhengServer.Enums.Mission;
|
||||
using EggLink.DanhengServer.GameServer.Game.Scene.Component;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.EraFlipper;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene;
|
||||
using EggLink.DanhengServer.Kcp;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
|
||||
@@ -21,27 +20,18 @@ public class HandlerChangeEraFlipperDataCsReq : Handler
|
||||
return;
|
||||
}
|
||||
|
||||
if (req.Data.EraFlipperDataList_.Any(x => x.EraFlipperRegionId == 2) && connection.Player!.SceneInstance!.FloorInfo?.FloorSavedValue.Find(x => x.Name == "FSV_FlashBackCount") !=
|
||||
null)
|
||||
if (req.Data.EraFlipperDataList_.Any(x => x.EraFlipperRegionId == 2))
|
||||
{
|
||||
// should save
|
||||
var plane = connection.Player.SceneInstance.PlaneId;
|
||||
var floor = connection.Player.SceneInstance.FloorId;
|
||||
connection.Player.SceneData!.FloorSavedData.TryGetValue(floor, out var value);
|
||||
if (value == null)
|
||||
{
|
||||
value = [];
|
||||
connection.Player.SceneData.FloorSavedData[floor] = value;
|
||||
}
|
||||
var curValue = connection.Player.SceneInstance!.GetFloorSavedValue("FSV_FlashBackCount") + 1;
|
||||
await connection.Player!.SceneInstance!.UpdateFloorSavedValue("FSV_FlashBackCount", curValue);
|
||||
|
||||
value["FSV_FlashBackCount"] = 0;
|
||||
value["FSV_FlashBackCount"] =
|
||||
value.GetValueOrDefault("FSV_FlashBackCount", 0) + 1; // ParamString[2] is the key
|
||||
await connection.SendPacket(new PacketUpdateFloorSavedValueNotify("FSV_FlashBackCount",
|
||||
value["FSV_FlashBackCount"], connection.Player));
|
||||
|
||||
connection.Player.TaskManager?.SceneTaskTrigger.TriggerFloor(plane, floor);
|
||||
connection.Player.MissionManager?.HandleFinishType(MissionFinishTypeEnum.FloorSavedValue);
|
||||
Dictionary<int, int> gpValueDict = [];
|
||||
gpValueDict.Add(1, 2);
|
||||
gpValueDict.Add(2, 3);
|
||||
gpValueDict.Add(3, 5);
|
||||
gpValueDict.Add(4, 6);
|
||||
var gpValue = gpValueDict.GetValueOrDefault(curValue, 0);
|
||||
await connection.Player.SceneInstance!.UpdateGroupProperty(74, "MimiGoStep", gpValue);
|
||||
}
|
||||
|
||||
component.ChangeEraFlipperStates(req.Data.EraFlipperDataList_.ToList());
|
||||
|
||||
@@ -14,11 +14,11 @@ public class PacketGetEraFlipperDataScRsp : BasePacket
|
||||
{
|
||||
EraFlipperDataList_ =
|
||||
{
|
||||
player.SceneData!.EraFlipperData.RegionState.Select(x => new EraFlipperData
|
||||
{
|
||||
EraFlipperRegionId = (uint)x.Key,
|
||||
State = (uint)x.Value
|
||||
})
|
||||
//player.SceneData!.EraFlipperData.RegionState.Select(x => new EraFlipperData
|
||||
//{
|
||||
// EraFlipperRegionId = (uint)x.Key,
|
||||
// State = (uint)x.Value
|
||||
//})
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user