mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
Fix challenges error
This commit is contained in:
31
Common/Data/Excel/ChallengeBossExtraExcel.cs
Normal file
31
Common/Data/Excel/ChallengeBossExtraExcel.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EggLink.DanhengServer.Data.Excel
|
||||
{
|
||||
[ResourceEntity("ChallengeBossMazeExtra.json")]
|
||||
public class ChallengeBossExtraExcel : ExcelResource
|
||||
{
|
||||
public int ID { get; set; }
|
||||
public int MonsterID1 { get; set; }
|
||||
public int MonsterID2 { get; set; }
|
||||
|
||||
|
||||
public override int GetId()
|
||||
{
|
||||
return ID;
|
||||
}
|
||||
|
||||
public override void Loaded()
|
||||
{
|
||||
if (GameData.ChallengeConfigData.ContainsKey(ID))
|
||||
{
|
||||
var challengeExcel = GameData.ChallengeConfigData[ID];
|
||||
challengeExcel.SetBossExcel(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace EggLink.DanhengServer.Data.Excel
|
||||
{
|
||||
[ResourceEntity("ChallengeMazeConfig.json,ChallengeStoryMazeConfig.json",
|
||||
[ResourceEntity("ChallengeMazeConfig.json,ChallengeStoryMazeConfig.json,ChallengeBossMazeConfig.json",
|
||||
isMultifile: true)]
|
||||
public class ChallengeConfigExcel : ExcelResource
|
||||
{
|
||||
@@ -32,6 +32,7 @@ namespace EggLink.DanhengServer.Data.Excel
|
||||
public Dictionary<int, ChallengeMonsterInfo> ChallengeMonsters2 { get; set; } = new();
|
||||
[JsonIgnore]
|
||||
public ChallengeStoryExtraExcel? StoryExcel;
|
||||
public ChallengeBossExtraExcel? BossExcel;
|
||||
|
||||
public override int GetId()
|
||||
{
|
||||
@@ -43,12 +44,22 @@ namespace EggLink.DanhengServer.Data.Excel
|
||||
return StoryExcel != null;
|
||||
}
|
||||
|
||||
public bool IsBoss()
|
||||
{
|
||||
return StoryExcel != null;
|
||||
}
|
||||
|
||||
public void SetStoryExcel(ChallengeStoryExtraExcel storyExcel)
|
||||
{
|
||||
StoryExcel = storyExcel;
|
||||
ChallengeCountDown = storyExcel.TurnLimit;
|
||||
}
|
||||
|
||||
public void SetBossExcel(ChallengeBossExtraExcel bossExcel)
|
||||
{
|
||||
BossExcel = bossExcel;
|
||||
}
|
||||
|
||||
public override void Loaded()
|
||||
{
|
||||
// Cache challenge monsters
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace EggLink.DanhengServer.Data.Excel
|
||||
{
|
||||
[ResourceEntity("ChallengeGroupConfig.json,ChallengeStoryGroupConfig.json",
|
||||
[ResourceEntity("ChallengeGroupConfig.json,ChallengeStoryGroupConfig.json,ChallengeBossGroupConfig.json",
|
||||
isMultifile: true)]
|
||||
public class ChallengeGroupExcel : ExcelResource
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ using EggLink.DanhengServer.Game.Battle;
|
||||
using EggLink.DanhengServer.Game.Player;
|
||||
using EggLink.DanhengServer.Game.Scene;
|
||||
using EggLink.DanhengServer.Game.Scene.Entity;
|
||||
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Challenge;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using EggLink.DanhengServer.Server.Packet.Send.Challenge;
|
||||
using EggLink.DanhengServer.Server.Packet.Send.Lineup;
|
||||
@@ -91,11 +92,10 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
return Excel.IsStory();
|
||||
}
|
||||
|
||||
// Early implementation for 2.3
|
||||
/* public bool IsBoss()
|
||||
public bool IsBoss()
|
||||
{
|
||||
return Excel.IsBoss();
|
||||
} */
|
||||
}
|
||||
|
||||
public void SetStatus(ChallengeStatus status)
|
||||
{
|
||||
@@ -205,7 +205,7 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
break;
|
||||
default:
|
||||
// Determine challenge result
|
||||
if ((IsStory()/* || IsBoss()*/) && req.Stt.EndReason == BattleEndReason.TurnLimit)
|
||||
if ((IsStory() || IsBoss()) && req.Stt.EndReason == BattleEndReason.TurnLimit)
|
||||
{
|
||||
AdvanceStage();
|
||||
}
|
||||
@@ -232,17 +232,14 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
// Save history
|
||||
Player.ChallengeManager!.AddHistory(ChallengeId, Stars, GetTotalScore());
|
||||
|
||||
// Send challenge result data
|
||||
Player.SendPacket(new PacketChallengeSettleNotify(this)); // Deprecated in 2.3
|
||||
// Early implementation for 2.3
|
||||
/* if (IsBoss())
|
||||
if (IsBoss())
|
||||
{
|
||||
Player.SendPacket(new PacketChallengeBossPhaseSettleNotify(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
Player.SendPacket(new PacketChallengeSettleNotify(this));
|
||||
} */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -333,11 +330,10 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
proto.PlayerInfo.CurStoryBuff.BuffList.Add(StoryBuffs.Select(x => (uint)x));
|
||||
}
|
||||
|
||||
// Early implementation for 2.3
|
||||
/* if (StoryBuffs != null && StoryBuffs.Count >= CurrentStage)
|
||||
if (StoryBuffs != null && StoryBuffs.Count >= CurrentStage)
|
||||
{
|
||||
proto.PlayerInfo.CurBossBuff.BuffList.Add((uint)BossBuffs[CurrentStage - 1]);
|
||||
} */
|
||||
}
|
||||
|
||||
return proto;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
|
||||
#region Management
|
||||
|
||||
public void StartChallenge(int challengeId, StartChallengeStoryBuffInfo? storyBuffs)
|
||||
public void StartChallenge(int challengeId, StartChallengeStoryBuffInfo? storyBuffs, StartChallengeBossBuffInfo? bossBuffs)
|
||||
{
|
||||
// Get challenge excel
|
||||
if (!GameData.ChallengeConfigData.TryGetValue(challengeId, out ChallengeConfigExcel? value))
|
||||
@@ -111,12 +111,11 @@ namespace EggLink.DanhengServer.Game.Challenge
|
||||
instance.StoryBuffs.Add((int)storyBuffs.StoryBuffTwo);
|
||||
}
|
||||
|
||||
// Early implementation for 2.3
|
||||
/* if (BossBuffs != null)
|
||||
if (bossBuffs != null)
|
||||
{
|
||||
instance.AddBossBuff((int)BossBuffs.BossBuffOne);
|
||||
instance.AddBossBuff((int)BossBuffs.BossBuffTwo);
|
||||
} */
|
||||
instance.BossBuffs.Add((int)bossBuffs.StoryBuffOne);
|
||||
instance.BossBuffs.Add((int)bossBuffs.StoryBuffTwo);
|
||||
}
|
||||
|
||||
// Send packet
|
||||
Player.SendPacket(new PacketStartChallengeScRsp(Player));
|
||||
|
||||
@@ -15,8 +15,7 @@ namespace EggLink.DanhengServer.Server.Packet.Recv.Battle
|
||||
storyBuffInfo = req.PlayerInfo.StoryBuffInfo;
|
||||
};
|
||||
|
||||
// Early implementation for 2.3
|
||||
/* StartChallengeBossBuffInfo? bossBuffInfo = null;
|
||||
StartChallengeBossBuffInfo? bossBuffInfo = null;
|
||||
if (req.PlayerInfo != null && req.PlayerInfo.BossBuffInfo != null)
|
||||
{
|
||||
bossBuffInfo = req.PlayerInfo.BossBuffInfo;
|
||||
@@ -25,9 +24,9 @@ namespace EggLink.DanhengServer.Server.Packet.Recv.Battle
|
||||
if (req.TeamOne.Count > 0)
|
||||
{
|
||||
List<int> team = new();
|
||||
for (int id in req.TeamOne)
|
||||
foreach (int id in req.TeamOne)
|
||||
{
|
||||
team.Add(id);
|
||||
team.Add((int)id);
|
||||
};
|
||||
connection.Player!.LineupManager!.ReplaceLineup(0, team, ExtraLineupType.LineupChallenge);
|
||||
}
|
||||
@@ -35,14 +34,14 @@ namespace EggLink.DanhengServer.Server.Packet.Recv.Battle
|
||||
if (req.TeamTwo.Count > 0)
|
||||
{
|
||||
List<int> team = new();
|
||||
for (int id in req.TeamTwo)
|
||||
foreach (int id in req.TeamTwo)
|
||||
{
|
||||
team.Add(id);
|
||||
team.Add((int)id);
|
||||
};
|
||||
connection.Player!.LineupManager!.ReplaceLineup(0, team, ExtraLineupType.LineupChallenge2);
|
||||
} */
|
||||
}
|
||||
|
||||
connection.Player!.ChallengeManager!.StartChallenge((int)req.ChallengeId, storyBuffInfo/*, bossBuffInfo*/);
|
||||
connection.Player!.ChallengeManager!.StartChallenge((int)req.ChallengeId, storyBuffInfo, bossBuffInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using EggLink.DanhengServer.Game.Challenge;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using EggLink.DanhengServer.Server.Packet;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EggLink.DanhengServer.GameServer.Server.Packet.Send.Challenge
|
||||
{
|
||||
public class PacketChallengeBossPhaseSettleNotify : BasePacket
|
||||
{
|
||||
public PacketChallengeBossPhaseSettleNotify(ChallengeInstance challenge) : base(CmdIds.ChallengeBossPhaseSettleNotify)
|
||||
{
|
||||
var proto = new ChallengeBossPhaseSettleNotify
|
||||
{
|
||||
ChallengeId = (uint)challenge.Excel.ID,
|
||||
IsWin = challenge.IsWin(),
|
||||
ChallengeScore = (uint)challenge.ScoreStage1,
|
||||
ScoreTwo = (uint)challenge.ScoreStage2,
|
||||
Star = (uint)challenge.Stars,
|
||||
Phase = (uint)challenge.CurrentStage,
|
||||
IsRemainingAction = true,
|
||||
HCLKAEHJCDO = true,
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user