mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-03 04:36:03 +08:00
Merge branch 'master' of github.com:EggLinks/DanhengServer
This commit is contained in:
@@ -34,6 +34,12 @@ public class TrialActivityInstance : BaseActivityInstance
|
||||
public async ValueTask EndActivity(TrialActivityStatus status = TrialActivityStatus.None)
|
||||
{
|
||||
var player = ActivityManager.Player!;
|
||||
|
||||
// Remove trial lineup
|
||||
await player.LineupManager!.DestroyExtraLineup(ExtraLineupType.LineupStageTrial);
|
||||
player.LineupManager!.LineupData.CurExtraLineup = -1;
|
||||
|
||||
// Go back to default scene
|
||||
await player.EnterScene(2000101, 0, true);
|
||||
if (status == TrialActivityStatus.Finish)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ using EggLink.DanhengServer.Enums.Scene;
|
||||
using EggLink.DanhengServer.GameServer.Game.Player;
|
||||
using EggLink.DanhengServer.GameServer.Game.Scene;
|
||||
using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
|
||||
using EggLink.DanhengServer.Util;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Game.Activity.Loaders;
|
||||
|
||||
@@ -19,13 +20,13 @@ public class TrialActivityEntityLoader(SceneInstance scene, PlayerInstance playe
|
||||
// Get activity instance
|
||||
if (Player.ActivityManager!.TrialActivityInstance == null) return;
|
||||
var instance = Player.ActivityManager!.TrialActivityInstance;
|
||||
LoadGroups.SafeAddRange(Scene.FloorInfo!.Groups.Keys.ToList());
|
||||
|
||||
// Setup stage
|
||||
GameData.AvatarDemoConfigData.TryGetValue(instance.Data.CurTrialStageId, out var excel);
|
||||
if (excel == null) return;
|
||||
Scene.FloorInfo!.Groups.TryGetValue(excel.MazeGroupID1, out var groupData);
|
||||
if (groupData != null) await LoadGroup(groupData);
|
||||
;
|
||||
|
||||
foreach (var group in Scene.FloorInfo.Groups.Values)
|
||||
{
|
||||
@@ -73,4 +74,10 @@ public class TrialActivityEntityLoader(SceneInstance scene, PlayerInstance playe
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public override async ValueTask<EntityNpc?> LoadNpc(NpcInfo info, GroupInfo group, bool sendPacket = false)
|
||||
{
|
||||
await System.Threading.Tasks.Task.CompletedTask;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -20,15 +20,15 @@ public class ChallengeEntityLoader(SceneInstance scene, PlayerInstance player) :
|
||||
// Get challenge instance
|
||||
if (Player.ChallengeManager!.ChallengeInstance == null) return;
|
||||
var instance = Player.ChallengeManager.ChallengeInstance;
|
||||
LoadGroups.SafeAddRange(Scene.FloorInfo!.Groups.Keys.ToList());
|
||||
|
||||
// Setup first stage
|
||||
var excel = instance.Excel;
|
||||
Scene.FloorInfo!.Groups.TryGetValue(excel.MazeGroupID1, out var groupData);
|
||||
Scene.FloorInfo.Groups.TryGetValue(excel.MazeGroupID1, out var groupData);
|
||||
if (groupData != null) await LoadGroup(groupData);
|
||||
;
|
||||
|
||||
// Set leave entry
|
||||
Scene.LeaveEntityId =
|
||||
Scene.LeaveEntryId =
|
||||
instance.IsStory() ? GameConstants.CHALLENGE_STORY_ENTRANCE : GameConstants.CHALLENGE_ENTRANCE;
|
||||
|
||||
foreach (var group in Scene.FloorInfo.Groups.Values)
|
||||
|
||||
@@ -3,6 +3,7 @@ using EggLink.DanhengServer.Data.Config;
|
||||
using EggLink.DanhengServer.Data.Excel;
|
||||
using EggLink.DanhengServer.Database.Avatar;
|
||||
using EggLink.DanhengServer.Enums.Scene;
|
||||
using EggLink.DanhengServer.GameServer.Game.Activity.Loaders;
|
||||
using EggLink.DanhengServer.GameServer.Game.Battle;
|
||||
using EggLink.DanhengServer.GameServer.Game.Challenge;
|
||||
using EggLink.DanhengServer.GameServer.Game.ChessRogue.Cell;
|
||||
@@ -158,7 +159,7 @@ public class SceneInstance
|
||||
public int PlaneId;
|
||||
public int EntryId;
|
||||
|
||||
public int LeaveEntityId;
|
||||
public int LeaveEntryId;
|
||||
public int LastEntityId;
|
||||
public bool IsLoaded = false;
|
||||
|
||||
@@ -179,7 +180,7 @@ public class SceneInstance
|
||||
PlaneId = excel.PlaneID;
|
||||
FloorId = floorId;
|
||||
EntryId = entryId;
|
||||
LeaveEntityId = 0;
|
||||
LeaveEntryId = 0;
|
||||
|
||||
System.Threading.Tasks.Task.Run(async () => { await SyncLineup(true, true); }).Wait();
|
||||
|
||||
@@ -203,10 +204,9 @@ public class SceneInstance
|
||||
case PlaneTypeEnum.Challenge:
|
||||
EntityLoader = new ChallengeEntityLoader(this, Player);
|
||||
break;
|
||||
// Temproary disabled
|
||||
/* case Enums.Scene.PlaneTypeEnum.TrialActivity:
|
||||
EntityLoader = new ChallengeEntityLoader(this, Player);
|
||||
break; */
|
||||
case PlaneTypeEnum.TrialActivity:
|
||||
EntityLoader = new TrialActivityEntityLoader(this, Player);
|
||||
break;
|
||||
default:
|
||||
if (Player.StoryLineManager?.StoryLineData.CurStoryLineId != 0)
|
||||
EntityLoader = new StoryLineEntityLoader(this);
|
||||
|
||||
@@ -29,7 +29,7 @@ public class HandlerLeaveChallengeCsReq : Handler
|
||||
foreach (var avatar in player.LineupManager.GetCurLineup()!.AvatarData!.Avatars) avatar.CurrentHp = 10000;
|
||||
|
||||
var leaveEntryId = GameConstants.CHALLENGE_ENTRANCE;
|
||||
if (player.SceneInstance.LeaveEntityId != 0) leaveEntryId = player.SceneInstance.LeaveEntityId;
|
||||
if (player.SceneInstance.LeaveEntryId != 0) leaveEntryId = player.SceneInstance.LeaveEntryId;
|
||||
await player.EnterScene(leaveEntryId, 0, true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user