mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
Fix some bugs
This commit is contained in:
@@ -64,7 +64,7 @@ public class FloorInfo
|
||||
}
|
||||
else if (json.Contains("Common_Console"))
|
||||
{
|
||||
//prop.CommonConsole = true;
|
||||
prop.CommonConsole = true;
|
||||
}
|
||||
|
||||
// Clear for garbage collection
|
||||
|
||||
@@ -28,6 +28,8 @@ public class PropInfo : PositionInfo
|
||||
|
||||
[JsonIgnore] public int MazePieceCount { get; set; }
|
||||
|
||||
[JsonIgnore] public bool CommonConsole = false;
|
||||
|
||||
public void Load(GroupInfo info)
|
||||
{
|
||||
if (ValueSource != null)
|
||||
|
||||
@@ -433,18 +433,38 @@ public class MissionManager : BasePlayerManager
|
||||
if (mission.TakeType == SubMissionTakeTypeEnum.CustomValue)
|
||||
{
|
||||
var index = 0;
|
||||
var accept = true;
|
||||
foreach (var customValue in mission.TakeParamIntList ?? [])
|
||||
var accept = false;
|
||||
List<List<int>> list = [mission.TakeParamIntList ?? []];
|
||||
if (mission.TakeParamIntList?.Count > 5)
|
||||
{
|
||||
if (customValue == 0 && index == 0) continue; // skip 0
|
||||
var valueInst = values.Find(x => x.Index == index);
|
||||
if (valueInst == null) continue;
|
||||
if (valueInst.CustomValue != customValue)
|
||||
// every 3 as group
|
||||
var group = mission.TakeParamIntList.Count / 3;
|
||||
list = [];
|
||||
for (var i = 0; i < group; i++)
|
||||
{
|
||||
accept = false;
|
||||
break;
|
||||
var customValue = mission.TakeParamIntList.GetRange(i * 3, 3);
|
||||
list.Add(customValue);
|
||||
}
|
||||
}
|
||||
foreach (var customValues in list)
|
||||
{
|
||||
var thisAccept = true;
|
||||
foreach (var customValue in customValues)
|
||||
{
|
||||
if (customValue == 0 && index == 0) continue; // skip 0
|
||||
var valueInst = values.Find(x => x.Index == index);
|
||||
if (valueInst == null) continue;
|
||||
if (valueInst.CustomValue != customValue)
|
||||
{
|
||||
thisAccept = false;
|
||||
break;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
if (thisAccept) accept = true; // accept if any group is true
|
||||
}
|
||||
|
||||
if (accept) await AcceptSubMission(mission.ID);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public class StoryLineManager : BasePlayerManager
|
||||
GameData.StoryLineData.TryGetValue(storyLineId, out var storyExcel);
|
||||
GameData.StroyLineTrialAvatarDataData.TryGetValue(storyLineId, out var storyAvatarExcel);
|
||||
if (storyExcel == null || storyAvatarExcel == null) return;
|
||||
StoryLineData.RunningStoryLines.TryGetValue(storyLineId, out var lineInfo);
|
||||
StoryLineData.OldEntryId = Player.Data.EntryId;
|
||||
StoryLineData.OldFloorId = Player.Data.FloorId;
|
||||
StoryLineData.OldPlaneId = Player.Data.PlaneId;
|
||||
@@ -58,8 +59,19 @@ public class StoryLineManager : BasePlayerManager
|
||||
if (entryId > 0)
|
||||
await Player.EnterMissionScene(entryId, anchorGroupId, anchorId, true, ChangeStoryLineAction.FinishAction);
|
||||
else
|
||||
await Player.EnterMissionScene(storyExcel.InitEntranceID, storyExcel.InitGroupID, storyExcel.InitAnchorID,
|
||||
true, ChangeStoryLineAction.FinishAction);
|
||||
{
|
||||
if (lineInfo == null)
|
||||
{
|
||||
await Player.EnterMissionScene(storyExcel.InitEntranceID, storyExcel.InitGroupID, storyExcel.InitAnchorID,
|
||||
true, ChangeStoryLineAction.FinishAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
await Player.LoadScene(lineInfo.SavedPlaneId, lineInfo.SavedFloorId, lineInfo.SavedEntryId,
|
||||
lineInfo.SavedPos, lineInfo.SavedRot, true, ChangeStoryLineAction.FinishAction);
|
||||
}
|
||||
|
||||
}
|
||||
await Player.SendPacket(
|
||||
new PacketChangeStoryLineFinishScNotify(storyExcel.StoryLineID, ChangeStoryLineAction.FinishAction));
|
||||
|
||||
@@ -175,10 +187,24 @@ public class StoryLineManager : BasePlayerManager
|
||||
{
|
||||
if (StoryLineData.CurStoryLineId == 0) return;
|
||||
|
||||
GameData.StoryLineData.TryGetValue(StoryLineData.CurStoryLineId, out var storyExcel);
|
||||
if (storyExcel == null) return;
|
||||
Player.LineupManager!.SetExtraLineup(ExtraLineupType.LineupNone, []);
|
||||
|
||||
// delete old & reset
|
||||
StoryLineData.RunningStoryLines.Remove(StoryLineData.CurStoryLineId);
|
||||
if (Player.MissionManager!.GetSubMissionStatus(storyExcel.EndCondition.Param) == MissionPhaseEnum.Finish)
|
||||
StoryLineData.RunningStoryLines.Remove(StoryLineData.CurStoryLineId);
|
||||
else
|
||||
StoryLineData.RunningStoryLines[StoryLineData.CurStoryLineId] = new StoryLineInfo
|
||||
{
|
||||
Lineup = Player.LineupManager!.GetCurLineup()!.BaseAvatars!,
|
||||
SavedEntryId = Player.Data.EntryId,
|
||||
SavedFloorId = Player.Data.FloorId,
|
||||
SavedPlaneId = Player.Data.PlaneId,
|
||||
SavedPos = Player.Data.Pos!,
|
||||
SavedRot = Player.Data.Rot!,
|
||||
StoryLineId = StoryLineData.CurStoryLineId
|
||||
};
|
||||
StoryLineData.CurStoryLineId = 0;
|
||||
|
||||
StoryLineData.OldPlaneId = 0;
|
||||
|
||||
@@ -398,6 +398,18 @@ public class PlayerInstance(PlayerData data)
|
||||
}
|
||||
|
||||
break;
|
||||
case PropTypeEnum.PROP_ORDINARY:
|
||||
if (prop.PropInfo.CommonConsole)
|
||||
{
|
||||
// set group
|
||||
foreach (var p in SceneInstance.GetEntitiesInGroup<EntityProp>(prop.GroupID))
|
||||
{
|
||||
await p.SetState(newState);
|
||||
|
||||
await MissionManager!.OnPlayerInteractWithProp();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// for door unlock
|
||||
|
||||
Reference in New Issue
Block a user