mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
chore: update resources structure
This commit is contained in:
@@ -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; } = [];
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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; } = [];
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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])
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user