Elin:解析/戰鬥
This page does not contain information obtained through legitimate play, but rather through Elin's data analysis, debug mode, and internal file viewing. It may contain serious spoilers or information that may detract from the enjoyment of playing the game. please summarize the content in a way that is easy to understand for people who cannot read the code, rather than posting the code as it is. |
評價列表
價值# | 元素 | 備註 |
---|---|---|
(92) | 貫通 | |
(108) | 投擲 | |
(132) | 戰術 | |
(133) | 射擊 | |
(305) | 魔道具 | |
(411) | 魔法強化附魔 | |
(482) | 強力武器 | |
(1400) | 專長: 武器精通 | 1, 2 |
(1404) | 專長:遠程精通 | 1, 2 |
武器命中機制
Updated EA23.46
"曲線"是指遊戲為技能值的有效性添加滑動曲線的方法
CURVE( input, start, step, rate) if input <= start return input repeat x10 { num = start + repeatindex * step if input <= num return input else input = num = (input - num) * rate /100 } return input
首先系統評估攻擊者的"命中"和目標的"閃避"
根據所使用武器的類型(投擲武器、遠程武器、近戰武器、武術武器)和風格,"命中"值的計算方式有所不同
武器類型 | 計算 |
---|---|
投擲 | Curve([攻擊者的靈巧]/4 + [攻擊者的力量]/2 + [攻擊者的武器等級], 50, 25, 75) + 75 (250 if not PC Faction) |
武術 (無盾) | Curve([攻擊者的靈巧]/3 + [攻擊者的力量]/3 + [攻擊者的武器等級], 50, 25, 75) + 50 |
武術(有盾) | 75% of Curve([攻擊者的靈巧]/3 + [攻擊者的力量]/3 + [攻擊者的武器等級], 50, 25, 75) + 50 |
手杖 | Curve([攻擊者的意志]/4 + [攻擊者武器的主要屬性]/3 [攻擊者的武器等級], 50, 25, 75) + 100 |
其他 | Curve([攻擊者的靈巧]/4 + [攻擊者武器的主要屬性]/3 [攻擊者的武器等級], 50, 25, 75) + 50 |
然後將你的裝備和武器的命中修正值加到上面 (然後對遠程武器套用距離修改器)
閃避的計算依據為 Curve([目標的感知] / 3 + [目標的閃避技能], 50, 10, 75) + [目標的DV] + 25
然後按以下順序修改這些值,並產生複合效果:
狀態 | 影響 |
---|---|
攻擊者有災禍 | 命中 = 75% |
攻擊者在高處 | 命中 +20% |
攻擊者正在騎乘 | 命中 = 命中 * 100 / (100 + 500 / higher of(5 or 10 + [攻擊者的騎術])) |
攻擊者正在託管 | 命中 = 命中 * 100 / (100 + 1000 / higher of(5 or 10 + [攻擊者的共生技能])) |
攻擊者被騎乘 | 命中 = 命中 * 100 / (100 + 1000 / higher of(5 or 10 + [攻擊者的力量])) |
攻擊者是寄生者 | 命中 = 命中 * 100 / (100 + 1000 / higher of(5 or 10 + [攻擊者的靈巧])) |
攻擊是兩隻手 | 命中 = 命中 + 25 + sqrt([攻擊者的雙手技能] * 2) |
攻擊為雙持 | 命中 = 命中 * 100 / (115 * 15 * (2000 / (20 + [攻擊者的雙持技能])[限制在 0-100]) |
攻擊者是致盲 | 命中 = 33.33% (如果是遠程/投擲則為 10%) |
目標是致盲 | 閃避 = 50% |
目標是黑暗 | 閃避 = 50% |
目標在高處 | 閃避 + 20% |
現在系統有了命中和閃避值,它使用這些值來計算攻擊是否按此順序命中、未擊中或暴擊
IF 目標是黑暗 且 四分之一的機會 暴擊
IF 目標已死亡 或 正在睡覺 暴擊
IF [目標的強效閃避] * 10 > 命中 num = 閃避 * 100 / 命中 IF 'num2' > 300 & 隨機 0 到 ([目標的強效閃避]+250) > 100 未擊中 IF 'num2' > 200 & 隨機 0 到 ([目標的強效閃避]+250) > 150 未擊中 IF 'num2' > 150 & 隨機 0 到 ([目標的強效閃避]+250) > 200 未擊中
IF [目標完美閃避] > 隨機 0 - 99 未擊中
IF 1 in 20 命中
IF 1 in 20 未擊中
IF 命中 < 1 未擊中
IF 閃避 < 1 命中
IF 隨機 0 - 命中 < 隨機 0 - (閃避 * 125 (如為遠程則150) / 100) 未擊中
IF 隨機 0 - 5000 < [攻擊者的感知] 暴擊
IF [攻擊者的暴擊技能] + sqrt([攻擊者的心眼技能]) > 隨機 0 -200 暴擊
IF 攻擊者有[死亡之心] num = 100 - [攻擊者當前HP] * 100 / [攻擊者最大HP] IF num >= 50 & (num^3 / 3) > 隨機 0 - 100000000 暴擊
命中
武術
else if (this.IsMartial || this.IsMartialWeapon)
{
this.weaponSkill = this.CC.elements.GetOrCreateElement(100);
this.attackType = (this.CC.race.meleeStyle.IsEmpty() ? ((EClass.rnd(2) == 0) ? AttackType.Kick : AttackType.Punch) : this.CC.race.meleeStyle.ToEnum(true));
this.dBonus = this.CC.DMG + this.CC.encLV + (int)Mathf.Sqrt((float)(this.CC.STR / 5 + this.weaponSkill.Value / 4));
this.dNum = 2 + Mathf.Min(this.weaponSkill.Value / 10, 4);
this.dDim = 5 + (int)Mathf.Sqrt((float)(this.weaponSkill.Value / 3));
this.dMulti = 0.6f + (float)(this.CC.STR / 2 + this.weaponSkill.Value / 2 + this.CC.Evalue(132) / 2) / 50f;
this.dMulti += 0.05f * (float)this.CC.Evalue(1400);
this.toHitBase = EClass.curve(this.CC.DEX / 3 + this.CC.STR / 3 + this.weaponSkill.Value, 50, 25, 75) + 50;
this.toHitFix = this.CC.HIT;
if (this.attackStyle == AttackStyle.Shield)
{
this.toHitBase = this.toHitBase * 75 / 100;
}
this.penetration = Mathf.Clamp(this.weaponSkill.Value / 10 + 5, 5, 20) + this.CC.Evalue(92);
if (this.IsMartialWeapon)
{
this.dBonus += this.weapon.DMG;
this.dNum += this.weapon.source.offense[0];
this.dDim = Mathf.Max(this.dDim / 2 + this.weapon.c_diceDim, 1);
this.toHitFix += this.weapon.HIT;
this.penetration += this.weapon.Penetration;
if (!this.weapon.source.attackType.IsEmpty())
{
this.attackType = this.weapon.source.attackType.ToEnum(true);
}
}
}
玩家使用武術技能踢或拳。玩家將根據近戰風格或角色規格踢或拳。
傷害由 武術、力量、靈巧、魅力值 決定
傷害骰子為 2+(武術/10,最大為 d6。
骰子的傷害值為 5+√(武術/3)。
傷害倍數為 0.6 + ((力量 / 2 + 武術 / 2 + 戰術 / 2) / 50.0)。
如果玩家擁有武器精通專長,則會以 0.05x(武器精通等級)的倍率提供額外傷害。(實際上是 +0.05 或 +0.10)
準確度為((力量/3+靈巧/3+武術)+50)),最小值為25+50,最大值為75+50 . 如果玩家揮舞著盾牌,則會有-25%向下調整。
貫通以(武術/10)+5計算,最小為5%,最大為20%+貫通。
如果使用武術武器:
傷害加值是你的空手傷害加值 + 武器的 傷害加值
骰子數是你的空手骰子數+武器的 骰子數
骰子面數是你的空手骰子面數/2+武器的 骰子面數
骰子數是你的空手骰子數+武器的 骰子數
命中獎勵是你的空手命中獎勵 + 武器的 命中獎勵
穿透就是你空手貫穿+武器的 貫穿
投擲
if (this.isThrow)
{
bool flag = this.weapon.HasTag(CTAG.throwWeapon) || this.weapon.HasTag(CTAG.throwWeaponEnemy);
int num2 = (int)Mathf.Clamp(Mathf.Sqrt((float)(this.weapon.SelfWeight + this.weapon.ChildrenWeight)) * 3f + 25f + (float)(flag ? 75 : 0), 10f, 400f + Mathf.Sqrt((float)this.CC.STR) * 50f);
int num3 = Mathf.Clamp(this.weapon.material.hardness, flag ? 40 : 20, 200);
this.weaponSkill = this.CC.elements.GetOrCreateElement(108);
this.attackType = AttackType.Blunt;
this.dBonus = (this.CC.IsPCParty ? 3 : 7);
this.dNum = 2;
this.dDim = ((this.CC.IsPCParty ? 0 : this.CC.LV) + this.CC.STR + this.CC.Evalue(108)) * num2 * num3 / 10000 / 2;
this.dMulti = 1f;
this.toHitBase = EClass.curve(this.CC.DEX / 4 + this.CC.STR / 2 + this.weaponSkill.Value, 50, 25, 75) + (this.CC.IsPC ? 75 : 250);
this.toHitFix = this.CC.HIT + this.weapon.HIT;
this.penetration = 25;
}
玩家從手中投擲物品,返回或不使用投擲技能。
攻擊類型始終是 鈍器
重量值為 √投擲物品重量 x 3 + 如果' 是投擲武器:75,否則為 0,下限 10 到上限' 400 + √(力量x 50)
材料值為材料硬度,下限為如果為投擲武器:40,否則為0,上限為200
骰子數始終為 2
骰子面數為 (如果不是玩家角色:角色等級 + 力量 + 投擲 ) x 重量值 x 材料值/ 10000 / 2
準確度為 (靈巧 / 4 + 力量 / 2 + 投擲),最小值為 25+50,最大值為 75+50 + (如果是玩家角色: 75 否則 250 )
命中獎勵是角色命中獎勵+武器的 命中獎勵
傷害加成為如果是玩家角色:3,否則為 7
傷害倍數總是1
貫通始終為25
近戰與遠程
else
{
if (this.IsRanged)
{
this.weaponSkill = this.CC.elements.GetOrCreateElement(this.toolRange.WeaponSkill);
}
else
{
this.weaponSkill = this.CC.elements.GetOrCreateElement(this.weapon.category.skill);
}
if (!this.weapon.source.attackType.IsEmpty())
{
this.attackType = this.weapon.source.attackType.ToEnum(true);
}
bool flag2 = this.IsCane || this.weapon.Evalue(482) > 0;
if (flag2)
{
this.weaponSkill = this.CC.elements.GetOrCreateElement(305);
}
this.dBonus = this.CC.DMG + this.CC.encLV + this.weapon.DMG;
this.dNum = this.weapon.source.offense[0];
this.dDim = this.weapon.c_diceDim;
this.dMulti = 0.6f + (float)(this.weaponSkill.GetParent(this.CC).Value + this.weaponSkill.Value / 2 + this.CC.Evalue(flag2 ? 304 : (this.IsRanged ? 133 : 132))) / 50f;
this.dMulti += 0.05f * (float)this.CC.Evalue(this.IsRanged ? 1404 : 1400);
this.toHitBase = EClass.curve((this.IsCane ? this.CC.WIL : this.CC.DEX) / 4 + this.weaponSkill.GetParent(this.CC).Value / 3 + this.weaponSkill.Value, 50, 25, 75) + 50;
this.toHitFix = this.CC.HIT + this.weapon.HIT;
this.penetration = this.weapon.Penetration + this.CC.Evalue(92);
if (this.IsCane)
{
this.toHitBase += 50;
}
}
if (this.ammo != null)
{
this.dNumAmmo = ((this.ammo.source.offense.Length != 0) ? this.ammo.source.offense[0] : 0);
this.dDimAmmo = this.ammo.c_diceDim;
this.dBonusAmmo = this.ammo.DMG;
if (this.dNumAmmo < 1)
{
this.dNumAmmo = 1;
}
if (this.dDimAmmo < 1)
{
this.dDimAmmo = 1;
}
this.dBonus += this.ammo.DMG;
this.toHitFix += this.ammo.HIT;
}
else
{
this.dNumAmmo = 0;
this.dDimAmmo = 0;
}
玩家使用戰術技能揮舞近戰武器或使用射擊技能射擊遠程武器
如果武器是「手杖」或具有「原力武器」結界,則它使用「魔道具」技能而不是戰術或射擊技能
傷害加成為“玩家角色傷害加成”+“武器模組工具傷害加成”+“武器傷害加成”
傷害倍數為0.6 + (武器 主要屬性 + 武器 技能/ 2 + (如果是近戰武器戰術, 如果是遠程武器 神射手 如果是手杖或強力武器 魔道具)) / 50
如果玩家擁有武器/遠程精通專長,則會以 0.05 x(武器/遠程精通等級)的倍率提供額外傷害。 (實際上是 +0.05 或 +0.10)
準確度為(靈巧或手杖或力量武器意志)/ 4 + 武器技能 / 3 +(如果是近戰武器戰術,如果是遠程武器射擊,如果是手杖或力量武器魔法裝置),最小值為25+50 最多為 75+50
如果是手杖準確度額外+ 50
命中獎勵是角色命中獎勵+武器命中獎勵+彈藥命中獎勵(如果裝有彈藥)
傷害加成為角色傷害加成+武器傷害加成+彈藥傷害加成(如果裝填彈藥)
貫通為角色貫通+武器貫通
施法/法術能量
public override int GetPower(Card c)
{
int num = base.Value * 8 + 50;
if (!c.IsPC)
{
num = Mathf.Max(num, c.LV * 6 + 30);
}
num = EClass.curve(num, 400, 100, 75);
if (this is Spell)
{
num = num * (100 + c.Evalue(411)) / 100;
}
return num;
}
public static int curve(int a, int start, int step, int rate = 75)
{
if (a <= start)
{
return a;
}
for (int i = 0; i < 10; i++)
{
int num = start + i * step;
if (a <= num)
{
return a;
}
a = num + (a - num) * rate / 100;
}
return a;
}
如果是玩家角色,法術強度為 curve( (法術等級 x 8 + 50), 400, 100, 75 ) x (100 + 法術增強附魔) / 100
法術強度是「法術等級」x 8 + 50 或「人物等級」x 6 + 30 之間較大的一個,它不是玩家角色
關於曲線函數: curve(a,start,step,rate)
設定i = 0
。計算num = start + i * step
。當a
超過num
時,超出的部分需要乘以rate / 100
。然後將i
增加1。
簡單來說,這個函數是用來壓縮數值的。函數曲線的斜率逐漸減少到(rate / 100)^10
施法/傷害法術
類型 | 骰子數量 | 骰子面數 | 傷害加成 | 備註 |
觸摸 | 1+法術力量/100+屬性/10 | 3+法術力量/50 | 近戰範圍 | |
箭矢 | 1+法術力量/160+屬性/30 | 8+法術力量/12 | 法術力量/25 | 單一目標 |
箭束 | 1+法術力量/120+屬性/20 | 4+法術力量/20 | 對直線10格內的所有目標造成傷害 | |
球狀法術 | 1+法術力量/70+屬性/20 | 2+法術力量/35 | 對施法者為中心,半徑5格內的所有目標造成傷害
傷害 = 傷害 x 100 / (90 + 距離 x 10) | |
瘴氣 | 2+法術力量/150 | 5+法術力量/80 | 每回合造成一次傷害 | |
吐息 | 1+法術力量/80+屬性/20 | 6+法術力量/100 | 屬性/4 | 對施法者為中心,長7格,角度35°的扇形內所有目標造成傷害 |
隕石 | 1+法術力量/150 | 4+屬性*3 | 永遠屬於火焰元素
對施法者為中心,半徑10格內的所有目標造成傷害 可被牆壁阻擋 也會對施法者造成傷害 | |
地震 | 5+法術力量/30 | 10+屬性/3 | 永遠屬於衝擊元素
對施法者為中心,半徑12格內的所有目標造成傷害 對具有重力減益狀態的敵人造成雙倍最大骰子傷害 對具有漂浮效果的敵人造成一半傷害 | |
破碎詛咒 | 1+法術力量/160+屬性/30 | 8+法術力量/12 | 法術力量/25 | 移除目標身上的所有詛咒,並對周圍的敵人造成傷害。
需要目標身上至少有一個詛咒才能生效。 |
施法/治療法術
類型 | 骰子數量 | 骰子面數 | 治療加成 | 備註 |
輕傷治癒 | 1+法術力量/50+意志/30 | 5+法術力量/40 | 法術力量/30 | |
重傷治癒 | 2+法術力量/40+意志/25 | 6+法術力量/30 | 法術力量/25 | |
致命傷治癒 | 3+法術力量/35+意志/20 | 7+法術力量/25 | 法術力量/20 | |
治療術 | 4+法術力量/30+意志/15 | 8+法術力量/20 | 法術力量/15 | |
《艾莉絲》的治癒 | 5+法術力量/25+意志/10 | 9+法術力量/15 | 法術力量/10 | |
《歐蒂娜》的治癒 | 6+法術力量/20+意志/5 | 10+法術力量/10 | 法術力量/5 | |
《朱亞》的治癒 | 8+法術力量/10+意志 | 15+法術力量/5 | 法術力量 | |
自然擁抱 | 1+法術力量/125 | 4+法術力量/75 |
施法/召喚法術
case EffectId.Funnel:
{
if (EClass._zone.CountMinions(CC) > CC.MaxSummon || CC.c_uidMaster != 0)
{
CC.Say("summon_ally_fail", CC, null, null);
return;
}
CC.Say("spell_funnel", CC, element.Name.ToLower(), null);
CC.PlaySound("spell_funnel", 1f, true);
Chara chara = CharaGen.Create("bit", -1);
chara.SetMainElement(element.source.alias, element.Value, true);
chara.SetSummon(20 + power / 20 + EClass.rnd(10));
chara.SetLv(power / 15);
EClass._zone.AddCard(chara, tp.GetNearestPoint(false, false, true, false));
chara.PlayEffect("teleport", true, 0f, default(Vector3));
chara.MakeMinion(CC, MinionType.Default);
return;
}
類型 | 持續時間 | 等級 | 備註 |
---|---|---|---|
召喚碎片 | 20 + 隨機(20) + 法術力量 / 20 | 法術力量 / 15 | |
召喚動物 | 直到死亡 | 法術等級 * (100 + 法術力量 / 10) / 100 + 法術力量 / 30 | |
召喚不死妹妹 | 直到死亡 | 法術等級 * (100 + 法術力量 / 10) / 100 + 法術力量 / 30 | |
召喚陰影 | 直到死亡 | 法術力量 / 10 + 1 | 使用自爆攻擊 |
請注意,除了「碎片」以外的召喚物,其持續時間均為無限。