Elin:解析/物理戦闘: Difference between revisions

武器発動エンチャのコードを最新のものに修正。武器発動エンチャの両手持ちの発動率について記載。武器発動エンチャの牽引の特別仕様について記載。
(シールドバッシュを修正。)
(武器発動エンチャのコードを最新のものに修正。武器発動エンチャの両手持ちの発動率について記載。武器発動エンチャの牽引の特別仕様について記載。)
Line 1,044: Line 1,044:
命中成否判定では攻撃が命中するか、外れるか、クリティカルになるかするまで、上から順に判定します。
命中成否判定では攻撃が命中するか、外れるか、クリティカルになるかするまで、上から順に判定します。


<span style="color:#ff4500"> '''ただし、攻撃者が海嘯だった場合、外れた場合も命中として扱います。'''</span><ref>海嘯のみの独自仕様。タグやフィートではなく、海嘯のidで判定される。クリティカルだった場合はクリティカル扱いになる。</ref>
<span style="color:#ff4500"> '''ただし、攻撃者が海嘯だった場合、外れた場合も命中として扱います。'''</span><ref>海嘯のみの特別仕様。タグやフィートではなく、海嘯のidで判定される。クリティカルだった場合はクリティカル扱いになる。</ref>
  逆襲エンチャントの効果による攻撃の場合、確定クリティカル。
  逆襲エンチャントの効果による攻撃の場合、確定クリティカル。


Line 1,380: Line 1,380:
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、盾スキルが10以上の盾を持つキャラクターの近接攻撃が命中した場合、確率でシールドバッシュが行われます。
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、盾スキルが10以上の盾を持つキャラクターの近接攻撃が命中した場合、確率でシールドバッシュが行われます。


シールドバッシュの発生確率は以下の通りです。
シールドバッシュの発生確率は以下の式で算出されます。
  シールドバッシュ発生率(%) = CLAMP<ref>値を一定範囲内に制限する関数です。 関数内の1つめの引数の値は、「2つめの引数の値」~「3つめの引数の値」の範囲内になるよう補正されます。</ref>(√(攻撃者の盾スキル) - 2, 8, 15) + MIN(√(盾の暴君エンチャント強度), 25)
  シールドバッシュ発生率(%) = CLAMP<ref>値を一定範囲内に制限する関数です。 関数内の1つめの引数の値は、「2つめの引数の値」~「3つめの引数の値」の範囲内になるよう補正されます。</ref>(√(攻撃者の盾スキル) - 2, 8, 15) + MIN(√(盾の暴君エンチャント強度), 25)
発動率の最小は「8」%です。
発動率の最小は「8」%です。
Line 1,387: Line 1,387:


盾の暴君エンチャントは発動率に加算され、最大で'''「+25」'''%まで効果があります。
盾の暴君エンチャントは発動率に加算され、最大で'''「+25」'''%まで効果があります。


シールドバッシュの攻撃力は以下の式で算出されます。
シールドバッシュの攻撃力は以下の式で算出されます。
  シールドバッシュ攻撃力 = 物理攻撃力 × (MIN((0.5 + 攻撃者の盾スキル × 0.01), 2) + MIN(√(盾の暴君エンチャント強度) × 0.01, 1))
  シールドバッシュ攻撃力 = 物理攻撃力 × (MIN((0.5 + 攻撃者の盾スキル × 0.01), 2) + MIN(√(盾の暴君エンチャント強度) × 0.01, 1))


シールドバッシュは貫通率も持ちます。貫通力は以下の式で算出されます。<ref name=":3" />
シールドバッシュは貫通率も持ちます。貫通力は以下の式で算出されます。<ref name=":3" />
  シールドバッシュ貫通率(%) = √(盾の暴君エンチャント強度) + (0、盾の暴君エンチャントがある場合20)
  シールドバッシュ貫通率(%) = √(盾の暴君エンチャント強度) + (0、盾の暴君エンチャントがある場合20)


上で求めたシールドバッシュ攻撃力・貫通力に攻撃対象の物理防御力を適用して、シールドバッシュダメージを計算します。
上で求めたシールドバッシュ攻撃力・貫通力に攻撃対象の物理防御力を適用して、シールドバッシュダメージを計算します。
Line 1,410: Line 1,407:
==武器の発動エンチャント==
==武器の発動エンチャント==
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
void Proc(List<Element> list)
ProcAbility(list, CC, TC, weaponSkill.Value + GetTwoHandEncBonus(CC), subAttack);
...
public static void ProcAbility(Element e, Chara CC, Card TC, int bonus, bool subAttack = false, int mtpChance = 100)
{
{
if (list == null)
if (!(e is Ability))
{
return;
}
int num = (10 + e.Value / 5) * mtpChance / 100;
int power = EClass.curve((100 + e.Value * 10) * (100 + bonus) / 100, 400, 100);
if (e.id == 6602)
{
num = 100;
}
if (num <= EClass.rnd(100))
{
{
return;
return;
}
}
foreach (Element item2 in list)
...
if (card.IsAliveInCurrentZone)
{
{
if (item2 is Ability)
Card tC = Act.TC;
ActEffect.ProcAt(e.source.proc[0].ToEnum<EffectId>(), power, BlessedState.Normal, CC, card, card.pos, isNeg: false, new ActRef
{
{
int num12 = 10 + item2.Value / 5;
n1 = text,
int power = EClass.curve((100 + item2.Value * 10) * (100 + weaponSkill.Value) / 100, 400, 100);
aliasEle = e.source.aliasRef,
if (num12 > EClass.rnd(100))
noFriendlyFire = true
{
});
...
Act.TC = tC;
if (card.IsAliveInCurrentZone)
{
Card tC = TC;
ActEffect.ProcAt(item2.source.proc[0].ToEnum<EffectId>(), power, BlessedState.Normal, CC, card, card.pos, isNeg: false, new ActRef
{
n1 = text,
aliasEle = item2.source.aliasRef,
noFriendlyFire = true
});
TC = tC;
}
}
}
}
}
}
}
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、アビリティ発動のエンチャント(「それは○○を発動する」)が付与されている場合、攻撃の命中の成否に関わらずあらゆる物理攻撃において確率でアビリティが発動します。
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、アビリティ発動のエンチャント(「それは○○を発動する」)が付与されている場合、攻撃の命中の成否に関わらずあらゆる物理攻撃において確率でアビリティが発動します。


発動エンチャントの発動確率は「10 + 発動エンチャント強度 / 5」%で、最大100%です。
発動エンチャントの発動確率は以下の式で算出されます。
発動エンチャ発動率(%) = 10 + <span style="color:#ff4500">'''<big>武器の元々の発動エンチャント強度</big>'''</span> / 5
<span style="color:#ff4500">'''武器の元々の発動エンチャント強度を参照するため、両手持ちによるエンチャント強度上昇は発動率に影響しません。'''</span><ref>編者註: EA23.200時点でバグとして報告済みですが、発動エンチャに関わるバグが修正されたPatch1でも修正されていません。
 
おそらく、大地の槌などが強くなりすぎないようにという意図の下このような処理になっていると思われます。</ref>
 
また、'''「牽引」を発動する場合のみ、発動率は「100」%'''になります。
 
 
発動エンチャントで発動するアビリティや魔法のパワーは以下の式で算出されます。<ref>アビリティのパワーは変動しますが、アビリティのダメージ算出の際に使用される関連能力は発動者の能力を参照せず、「パワー / 10」として計算されます。</ref>
発動したアビリティのパワー = [[Elin:解析/共通処理|CURVE]]((100 + 10 × 発動エンチャント強度) × (1 + 0.01 × 対応武器スキル), 400, 100, 75)


発動エンチャントで発動するアビリティや魔法のパワーは「[[Elin:解析/共通処理|CURVE]]((100 + 10 × 発動エンチャント強度 ) × (1 + 0.01 × 対応武器スキル), 400, 100, 75)」です。<ref>アビリティのパワーは変動しますが、アビリティのダメージ算出の際に使用される関連能力は発動者の能力を参照せず、「パワー / 10」として計算されます。</ref>


<references />
<references />
250

edits