Merge branch 'master' of github.com:EggLinks/DanhengServer

This commit is contained in:
Somebody
2024-08-02 14:08:04 +08:00
5 changed files with 24 additions and 11 deletions

View File

@@ -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)
{

View File

@@ -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;
}
}

View File

@@ -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)

View File

@@ -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);

View File

@@ -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);
}