【技能条件】为了吾王 各种技能的"严苛"判定 大概说明
最近在解构dll时发现 各种技能的判定隐藏了很多前置条件 比较坑爹玩的时候老是触发不了以为是运气属性低 实际上不是啊
这个贴子就给大家列举一些 我看得懂的技能判定条件(其中可能有些错误)
static/image/hrline/5.gif
CriticalStrike 暴击 (百分比)
首先 X = 计算玩家身上的装备和各种技能暴击率加成 + 玩家基础暴击率
再者 X = X + 使用专注数量 * 0.05
最终 游戏内会生成一个随机数 Y
若 Y < X 那么就会触发暴击
static/image/hrline/5.gif
Blackhole 黑洞 (百分比)
1.如果使用武器的特殊技能将不会触发黑洞(有待考察)
2.不会对boss生效(有待考察)
3.未知触发失败条件代码:
if (_attemptedProf != FTK_proficiencyTable.ID.None)
{
FTK_proficiencyTable ftk_proficiencyTable = FTK_proficiencyTableDB.Get(_attemptedProf);
if (ftk_proficiencyTable.m_TargetFriendly || ftk_proficiencyTable.m_Target != CharacterDummy.TargetType.None)
{
return false;
}
}
4.未知触发直接成功条件 代码:
bool flag = FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility;
5.几率触发 若不满足上面的flag条件 (百分比)
首先 X = 0.06 + 使用专注数量 * 0.02
设 Y = 团队物品总数量 i = 0
若 i < Y ,X = X * 0.5 ,i = i + 1
----------------------------------------------------------
可能有些没学过代码的朋友对这个算式比较茫然
那这个算式里的 i = 0i = i + 1 来举例 i = 0 + 1 = 1 结果就是 i = 1
又比如 i = 2i = i + 4 计算过程 i = 2 + 4 = 6结果是 i = 6
上面的 X = X + 使用专注数量 * 0.05 也是这么计算的
----------------------------------------------------------
然后继续循环直到 i > Y即团队物品总数量 时停止循环
可以看到这个成功几率非常低
static/image/hrline/5.gif
CalledShot 猎人的精准一击 (百分比)
1.如果使用专注数量 > 0 将不会触发技能
2.如果使用武器的特殊技能将不会触发精准一击(有待考察)
3.只针对特定武器生效 猜测可能是弓
4.未知触发失败条件代码:
if (_attemptedProf != FTK_proficiencyTable.ID.None)
{
FTK_proficiencyTable ftk_proficiencyTable = FTK_proficiencyTableDB.Get(_attemptedProf);
if (ftk_proficiencyTable.m_TargetFriendly || ftk_proficiencyTable.m_Target != CharacterDummy.TargetType.None)
{
return false;
}
}
5.如果玩家不能使用技能 将不会触发精准一击
6.未知触发失败条件代码:
if (FTK_weaponStats2DB.GetDB().GetEntry(_player.m_WeaponID).m_NoFocus)
{
return false;
}
7.若满足:
(1)生成一个随机数 X ,如果 X < 0.1 (百分比)
或者
(2)一个未知触发条件 FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility
则触发精准一击
static/image/hrline/5.gif
Discipline 纪律 给队友加专注
1.如果使用武器的特殊技能将不会触发纪律(有待考察)
2.如果目标被保护将不会触发纪律 (废话 都不破防)
3.若满足:
(1)一招致命/射杀(待考察)
或者
(2)暴击
或者
(3)一个未知触发条件 FTKUI.Instance.m_PlayerSlots.m_CheatAttack == SlotControl.AttackCheatType.TriggerAbility
则进行进一步判断
队友的专注数量是否为0
若满足则触发纪律回复专注
static/image/hrline/5.gif
Glory 荣耀 加物理伤害
设 X = 0.05 (百分比)
1.若满足 其它战斗玩家数=0 则 X = X * 2
2.若满足 玩家当前生命值低于50% 则 X = X * 2
3.若满足
(1)敌人为BOSS
或者
(2)敌人为灾厄
或者
(3)玩家当前等级 < 敌人战斗等级
则
X = X * 2
(注 若同时满足以上俩个条件 则都会执行一遍 意味 X = X * 2 * 2 * 2)
4.设 Y = X到0.5中间的 任意一个值
生成一个随机数 若小于Y则触发荣耀 (有待考察)
原代码:
num = Mathf.Min(0.5f, num);
return UnityEngine.Random.value < num;
其中Mathf的具体代表啥 我看不大出来 有点杂乱 如果知道可以指正
static/image/hrline/5.gif
NiceDay 好日子 加2格移动点数
若满足
(1)玩家被诅咒
或者
(2)玩家中毒(有待考察)
或者
(3)玩家在有移动点数情况下提前结束回合的数量 > 0 (有待考察)
或者
(4)时间为夜晚
或者
(5)天气为坏天气(例如雨天)
或者
(6)玩家处在地下城内
则不触发 若都不满足则
设 X = 0.15 (百分比)
生成一个随机数若 < X 则触发技能好日子
static/image/hrline/5.gif
Refocus 凝神专注 加1点专注
1.若玩家正在等待重生 或者 中毒 则不触发
2.若玩家当前专注点数 >= 玩家最大专注点数 则不触发
3.若满足
(1)玩家处在地下城内
(2)天气不为雨天
则设 X 为玩家智力 * 0.65
若玩家处在地下城内则 X = X / 玩家存活数量(有待考察)
---------------------------------------
这里的玩家存活数量是根据英文字面翻译过来的 原代码:
float num = _player.m_CharacterStats.Fortitude * 0.65f;
if (_player.IsInDungeon())
{
MiniHexDungeon miniHexDungeon = (MiniHexDungeon)_player.GetPOI();
num /= (float)miniHexDungeon.GetAlivePlayersInside().Count;
}
---------------------------------------
生成一个随机数若 < X 则回复1点专注点数
static/image/hrline/5.gif
StrongBreeze 强风 加3格移动点数
1.若满足
(1)玩家不在船上 也 不乘坐空艇
或者
(2)玩家不在天上
则不触发技能强风
---------------------------------------
怎么感觉有点拗口 把原代码贴出来自己看把 我也被绕晕了
if (!_player.IsInBoat() && (!_player.IsInAirShip() || !_player.IsInAir()))
{
return false;
}
---------------------------------------
2.设 X = 0.2 (百分比)
生成一个随机数若 < X 则触发技能强风
static/image/hrline/5.gif
占楼以后有时间更新 占楼以后有时间更新 未知条件是目标为友军或者目标模型为空,还有黑洞概率要乘0.5^星物质总数.黑洞的触发条件是你启用了作弊模式
荣耀的isboss是一个foreach,理论上三个boss可以直接把概率拉到0.5,min是返回两者之间的小值
页:
[1]