From fb4b1ed3c3366f993136e1f9a442bb2dc6d758ab Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期三, 26 九月 2018 22:35:18 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/FindPrecious/FindPreciousModel.cs | 83 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 72 insertions(+), 11 deletions(-)
diff --git a/System/FindPrecious/FindPreciousModel.cs b/System/FindPrecious/FindPreciousModel.cs
index a75e2d6..af799b0 100644
--- a/System/FindPrecious/FindPreciousModel.cs
+++ b/System/FindPrecious/FindPreciousModel.cs
@@ -223,8 +223,13 @@
BossInfo bossInfo;
if (TryGetBossInfo(bossId, out bossInfo))
{
- bossInfo.deadLines.Clear();
- bossInfo.deadLines.AddRange(bossLineInfo.DeadLineList);
+ bossInfo.lineToAlives.Clear();
+ for (var j = 0; j < bossLineInfo.LineIDList.Length; j++)
+ {
+ var line = bossLineInfo.LineIDList[j];
+ var state = bossLineInfo.StateList[j];
+ bossInfo.lineToAlives[line] = state == 1;
+ }
}
}
}
@@ -499,7 +504,8 @@
bool isCommunalAlive { get; set; }
public List<BossKillRecord> killRecords = new List<BossKillRecord>();
public DateTime refreshTime { get; private set; }
- public List<byte> deadLines = new List<byte>();
+ public Dictionary<int, bool> lineToAlives = new Dictionary<int, bool>();
+ public int rebornTotalCd { get; private set; }
public BossInfo(int _id)
{
@@ -509,6 +515,7 @@
public void UpdateBossInfo(HA902_tagGCGameWorldBossInfo.tagBossInfoObj _bossInfo)
{
isCommunalAlive = _bossInfo.IsAlive == 1;
+ rebornTotalCd = (int)_bossInfo.RefreshCD;
killRecords.Clear();
if (!string.IsNullOrEmpty(_bossInfo.KillRecord))
{
@@ -534,14 +541,42 @@
{
return false;
}
- else if ((BossFakeLineUtility.Instance.lastBossNpcID == bossId && Time.realtimeSinceStartup < BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime)
- && !IsLineBossDead(PlayerDatas.Instance.baseData.FBID))
- {
- return true;
- }
else
{
- return isCommunalAlive;
+ var isMistakeBoss = BossFakeLineUtility.Instance.lastBossNpcID == bossId
+ && Time.realtimeSinceStartup < BossFakeLineUtility.Instance.inMistakeForBossAliveOverTime;
+ var isLineBossAlive = IsLineBossAlive(PlayerDatas.Instance.baseData.FBID);
+
+ if (isMistakeBoss && isLineBossAlive)
+ {
+ return true;
+ }
+ else
+ {
+ var currentNeutralMap = false;
+ if (Config.Instance.ContainKey<WorldBossConfig>(bossId))
+ {
+ var worldBossConfig = Config.Instance.Get<WorldBossConfig>(bossId);
+ currentNeutralMap = worldBossConfig.MapID == PlayerDatas.Instance.baseData.MapID;
+ currentNeutralMap = currentNeutralMap && GeneralConfig.Instance.neutralMaps.Contains(worldBossConfig.MapID);
+ }
+
+ if (currentNeutralMap)
+ {
+ return isLineBossAlive;
+ }
+ else
+ {
+ if (BossFakeLineUtility.Instance.IsBossKilledRecently(bossId))
+ {
+ return !IsAnyLineBossDead();
+ }
+ else
+ {
+ return IsAnyLineBossAlive();
+ }
+ }
+ }
}
}
else
@@ -550,9 +585,35 @@
}
}
- bool IsLineBossDead(int _lineId)
+ bool IsLineBossAlive(int _lineId)
{
- return deadLines.Contains((byte)_lineId);
+ return lineToAlives.ContainsKey(_lineId) && lineToAlives[_lineId];
+ }
+
+ bool IsAnyLineBossAlive()
+ {
+ foreach (var item in lineToAlives)
+ {
+ if (item.Value)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool IsAnyLineBossDead()
+ {
+ foreach (var item in lineToAlives)
+ {
+ if (!item.Value)
+ {
+ return true;
+ }
+ }
+
+ return false;
}
}
--
Gitblit v1.8.0