chore: update resources structure

This commit is contained in:
StopWuyu
2025-01-16 13:12:29 +08:00
parent e80110d5cb
commit 1fc63e507c
15 changed files with 86 additions and 44 deletions

View File

@@ -5,7 +5,7 @@ using Newtonsoft.Json.Converters;
namespace EggLink.DanhengServer.Data.Excel;
[ResourceEntity("FinishWay.json,FinishWayRogue.json,FinishWayEventMission.json,RogueDLCFinishWay.json", true)]
[ResourceEntity("FinishWay.json,FinishWayRogue.json,RogueDLCFinishWay.json", true)]
public class FinishWayExcel : ExcelResource
{
public List<int> ParamIntList { get; set; } = [];

View File

@@ -7,9 +7,9 @@ namespace EggLink.DanhengServer.Data.Excel;
[ResourceEntity("RogueBuffGroup.json")]
public class RogueBuffGroupExcel : BaseRogueBuffGroupExcel
{
[JsonProperty("IKOLKLEFCGO")] public int GroupID { get; set; }
[JsonProperty("GroupID")] public int GroupID { get; set; }
[JsonProperty("DKLEHCPFLFJ")] public List<int> BuffTagList { get; set; } = [];
[JsonProperty("BuffTagList")] public List<int> BuffTagList { get; set; } = [];
public override int GetId()
{

View File

@@ -20,7 +20,8 @@ public class RogueMiracleExcel : ExcelResource
public override void AfterAllDone()
{
MiracleName = GameData.RogueMiracleDisplayData[MiracleDisplayID].MiracleName;
if (MiracleDisplayID != 0)
MiracleName = GameData.RogueMiracleDisplayData[MiracleDisplayID].MiracleName;
GameData.RogueMiracleData[MiracleID] = this;
}
}

View File

@@ -1,18 +0,0 @@
namespace EggLink.DanhengServer.Data.Excel;
[ResourceEntity("RogueTournDifficultyComp.json")]
public class RogueTournDifficultyCompExcel : ExcelResource
{
public int DifficultyCompID { get; set; }
public int Level { get; set; }
public override int GetId()
{
return DifficultyCompID;
}
public override void Loaded()
{
GameData.RogueTournDifficultyCompData.TryAdd(DifficultyCompID, this);
}
}

View File

@@ -283,9 +283,6 @@ public static class GameData
public static Dictionary<int, RogueTournHandbookMiracleExcel> RogueTournHandbookMiracleData { get; private set; } =
[];
public static Dictionary<int, RogueTournDifficultyCompExcel> RogueTournDifficultyCompData { get; private set; } =
[];
public static Dictionary<int, RogueTournRoomExcel> RogueTournRoomData { get; private set; } = [];
public static Dictionary<int, RogueTournDifficultyExcel> RogueTournDifficultyData { get; private set; } = [];

View File

@@ -590,5 +590,21 @@ public enum MissionFinishTypeEnum
TarotBookUnlockGivenStoryCnt = 300007,
DestructPropId = 300008,
TarotBookFinishInteraction = 300009,
TimeRewindPropStayInState = 300010
TimeRewindPropStayInState = 300010,
RogueTournReachDivisionLevel = 310000,
RogueTournFinishCntByDifficultyDivision = 310001,
ChimeraFinishRound = 310002,
ChimeraFinishPhase = 310003,
ChimeraGetChimera = 310004,
ChimeraGetChimeraCnt = 310005,
ChimeraFinishWorkValue = 310006,
ChimeraReachRank = 310007,
RogueTournTitanGetTitanBless = 310008,
RogueTournFinishWithBuffCnt = 310009,
RogueTournFinishLayerWithLineupAvatarCnt = 310010,
RogueTournFinishWithTitanBless = 310011,
RogueTournTitanGetTitanBlessCnt = 310012,
RogueTournEnableSeasonTalent = 310013,
PropListStayInState = 310014,
ChimeraEndlessHighestWorkValue = 310015
}

View File

@@ -42,6 +42,7 @@ public enum ChestTypeEnum
CHEST_PUZZLE_INSECT_SPECIMEN = 227,
CHEST_PUZZLE_MASCOT = 228,
CHEST_PUZZLE_SWITCH_HAND_COIN = 229,
CHEST_PUZZLE_GRAVITYBALL = 230,
CHEST_SPECIAL_HIDDEN = 301,
CHEST_DIGGING = 302,
CHEST_NORMAL_CHALLENGE = 401,

View File

@@ -17,6 +17,7 @@ namespace EggLink.DanhengServer.GameServer.Game.Battle;
public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
{
public StageConfigExcel? NextBattleStageConfig { get; set; } = null;
public async ValueTask StartBattle(SceneCastSkillCsReq req, MazeSkill skill, List<uint> hitTargetEntityIdList)
{
if (Player.BattleInstance != null) return;
@@ -144,6 +145,15 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
WorldLevel = Player.Data.WorldLevel
};
if (NextBattleStageConfig != null)
{
battleInstance = new BattleInstance(Player, Player.LineupManager!.GetCurLineup()!, [NextBattleStageConfig])
{
WorldLevel = Player.Data.WorldLevel,
};
NextBattleStageConfig = null;
}
avatarList.AddRange(Player.LineupManager!.GetCurLineup()!.BaseAvatars!
.Select(item =>
Player.SceneInstance!.AvatarInfo.Values.FirstOrDefault(x =>
@@ -220,6 +230,12 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
}
}
if (NextBattleStageConfig != null)
{
stageConfig = NextBattleStageConfig;
NextBattleStageConfig = null;
}
BattleInstance battleInstance = new(Player, Player.LineupManager!.GetCurLineup()!, [stageConfig])
{
WorldLevel = Player.Data.WorldLevel,
@@ -286,6 +302,15 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
MappingInfoId = config.MappingInfoID
};
if (NextBattleStageConfig != null)
{
battleInstance = new BattleInstance(Player, Player.LineupManager!.GetCurLineup()!, [NextBattleStageConfig])
{
WorldLevel = Player.Data.WorldLevel,
};
NextBattleStageConfig = null;
}
var avatarList = Player.LineupManager!.GetCurLineup()!.BaseAvatars!.Select(item =>
Player.SceneInstance!.AvatarInfo.Values.FirstOrDefault(x => x.AvatarInfo.AvatarId == item.BaseAvatarId))
.OfType<AvatarSceneInfo>().ToList();

View File

@@ -18,7 +18,7 @@ public class RogueNpc(SceneInstance scene, GroupInfo group, NpcInfo npcInfo) : E
public async ValueTask FinishDialogue()
{
IsFinish = true;
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(this));
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(Scene.Player, this));
}
public override SceneEntityInfo ToProto()

View File

@@ -112,9 +112,7 @@ public class RogueTournManager(PlayerInstance player) : BasePlayerManager(player
public List<RogueTournDifficultyInfo> ToDifficultyProtoList()
{
return (from difficultyExcel in GameData.RogueTournDifficultyCompData.Values
select new RogueTournDifficultyInfo
{ DifficultyId = (uint)difficultyExcel.DifficultyCompID, IsUnlocked = true }).ToList();
return [];
}
public RogueTournExpInfo ToExpProto()

View File

@@ -73,7 +73,7 @@ public class EntityProp(SceneInstance scene, MazePropExcel excel, GroupInfo grou
{
//if (State == PropStateEnum.Open) return; // already open DO NOT CLOSE AGAIN
State = state;
if (sendPacket) await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(this));
if (sendPacket) await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(Scene.Player, this));
// save
if (Group.SaveType == SaveTypeEnum.Reset) return;

View File

@@ -85,7 +85,7 @@ public class SceneEntityLoader(SceneInstance scene)
}
if (refreshed && (addList.Count > 0 || removeList.Count > 0))
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(addList, removeList));
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(Scene.Player, addList, removeList));
}
public virtual async ValueTask<List<IGameEntity>?> LoadGroup(GroupInfo info, bool forceLoad = false)
@@ -194,7 +194,7 @@ public class SceneEntityLoader(SceneInstance scene)
var entities = await LoadGroup(group, true);
if (sendPacket && entities is { Count: > 0 })
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(entities));
await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(Scene.Player, entities));
return entities;
}
@@ -217,7 +217,7 @@ public class SceneEntityLoader(SceneInstance scene)
Scene.Groups.Remove(group.Id);
if (refreshed) await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(removeEntity: removeList));
if (refreshed) await Scene.Player.SendPacket(new PacketSceneGroupRefreshScNotify(Scene.Player, removeEntity: removeList));
}
public virtual async ValueTask<EntityNpc?> LoadNpc(NpcInfo info, GroupInfo group, bool sendPacket = false)

View File

@@ -297,7 +297,7 @@ public class SceneInstance
var info = AvatarInfo.Values.ToList()[leaderAvatarSlot ?? 0];
LeaderEntityId = info.AvatarInfo.EntityId;
if (sendPacket && !notSendPacket)
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(addAvatar, removeAvatar));
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, addAvatar, removeAvatar));
}
public void SyncGroupInfo()
@@ -320,7 +320,7 @@ public class SceneInstance
entity.EntityID = ++LastEntityId;
Entities.Add(entity.EntityID, entity);
if (sendPacket) await Player.SendPacket(new PacketSceneGroupRefreshScNotify(entity));
if (sendPacket) await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, entity));
}
public async ValueTask AddSummonUnitEntity(EntitySummonUnit entity)
@@ -340,7 +340,7 @@ public class SceneInstance
await monster.RemoveBuff(sceneBuff.BuffId);
}
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(entity, SummonUnit));
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, entity, SummonUnit));
SummonUnit = entity;
}
@@ -353,7 +353,7 @@ public class SceneInstance
{
Entities.Remove(monster.EntityID);
if (sendPacket) await Player.SendPacket(new PacketSceneGroupRefreshScNotify(null, monster));
if (sendPacket) await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, null, monster));
}
public List<T> GetEntitiesInGroup<T>(int groupID)
@@ -444,7 +444,7 @@ public class SceneInstance
public async ValueTask ClearSummonUnit()
{
if (SummonUnit == null) return;
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(null, SummonUnit));
await Player.SendPacket(new PacketSceneGroupRefreshScNotify(Player, null, SummonUnit));
SummonUnit = null;

View File

@@ -1,4 +1,6 @@
using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
using EggLink.DanhengServer.GameServer.Game.Mission;
using EggLink.DanhengServer.GameServer.Game.Player;
using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
@@ -6,10 +8,14 @@ namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene;
public class PacketSceneGroupRefreshScNotify : BasePacket
{
public PacketSceneGroupRefreshScNotify(List<IGameEntity>? addEntity = null, List<IGameEntity>? removeEntity = null)
public PacketSceneGroupRefreshScNotify(PlayerInstance player, List<IGameEntity>? addEntity = null, List<IGameEntity>? removeEntity = null)
: base(CmdIds.SceneGroupRefreshScNotify)
{
var proto = new SceneGroupRefreshScNotify();
var proto = new SceneGroupRefreshScNotify
{
FloorId = (uint)player.Data.FloorId,
DimensionId = (uint)((player.SceneInstance!.EntityLoader as StoryLineEntityLoader)?.DimensionId ?? 0)
};
Dictionary<int, GroupRefreshInfo> refreshInfo = [];
foreach (var e in removeEntity ?? [])
@@ -53,8 +59,8 @@ public class PacketSceneGroupRefreshScNotify : BasePacket
SetData(proto);
}
public PacketSceneGroupRefreshScNotify(IGameEntity? addEntity = null, IGameEntity? removeEntity = null) :
this(addEntity == null ? [] : [addEntity], removeEntity == null ? [] : [removeEntity])
public PacketSceneGroupRefreshScNotify(PlayerInstance player, IGameEntity? addEntity = null, IGameEntity? removeEntity = null) :
this(player, addEntity == null ? [] : [addEntity], removeEntity == null ? [] : [removeEntity])
{
}
}

View File

@@ -78,6 +78,11 @@ public static class HandbookGenerator
builder.AppendLine();
GenerateItem(builder, textMap, fallbackTextMap, lang == config.ServerOption.Language);
builder.AppendLine();
builder.AppendLine("#StageId");
builder.AppendLine();
GenerateStageId(builder, textMap, fallbackTextMap);
builder.AppendLine();
builder.AppendLine("#MainMission");
builder.AppendLine();
@@ -167,6 +172,17 @@ public static class HandbookGenerator
}
}
public static void GenerateStageId(StringBuilder builder, Dictionary<long, string> map,
Dictionary<long, string> fallback)
{
foreach (var stage in GameData.StageConfigData.Values)
{
var name = map.TryGetValue(stage.StageName.Hash, out var value) ? value :
fallback.TryGetValue(stage.StageName.Hash, out value) ? value : $"[{stage.StageName.Hash}]";
builder.AppendLine(stage.StageID + ": " + name);
}
}
public static void GenerateRogueBuff(StringBuilder builder, Dictionary<long, string> map,
Dictionary<long, string> fallback, bool setName)
{