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

慈悲の重み、事故防止を追加。
m (護符節約は遠隔攻撃にもちゃんとつきます)
(慈悲の重み、事故防止を追加。)
Line 499: Line 499:
|○
|○
|○
|○
|×
|
|霊符と唄の使用回数を増やす
|霊符と唄の使用回数を増やす
|-
|nonLethal
|慈悲の重み
|○
|○
|○
|このエンチャントが付与された武器によって対象が死亡するとき、死を回避
|-
|safetyMeasure
|事故防止
|○
|○
|○
|追加攻撃を抑止
|}
|}
===突貫===
===突貫===
Line 764: Line 778:


エンチャント強度は発動確率に影響し、どちらの効果の確率も「10 + 5 × √(エンチャント強度)」%で、最大「'''90'''」%です。
エンチャント強度は発動確率に影響し、どちらの効果の確率も「10 + 5 × √(エンチャント強度)」%で、最大「'''90'''」%です。
=== 慈悲の重み ===
<syntaxhighlight lang="c#">
else if (Chara.host != null || (weapon != null && weapon.HasElement(485)))
{
EvadeDeath();
flag = true;
}
</syntaxhighlight>
エンチャントが付与された武器での攻撃によって攻撃対象が死亡する時、死を回避して強度200の気絶を付与します。(寄生状態のキャラが死亡する処理と同じです。)
効果は常に発動し、エンチャント強度による発動率や気絶強度への影響はありません。
=== 事故防止 ===
<syntaxhighlight lang="c#">
bool safety = Act.CC.HasElement(486) && Act.CC.IsPCFactionOrMinion;
...
if (w != null)
{
if (safety)
{
if (!w.HasElement(486))
{
return;
}
</syntaxhighlight>
<syntaxhighlight lang="c#">
if (list2.Count > 0 && !flag2)
{
...
if (item.IsActive(weapon) && item.source.categorySub == "eleAttack")
{
        ...
if (num10 > EClass.rnd(100))
{
TC.DamageHP(dmg, item.id, isThrow ? (100 + item.Value * 5) : (30 + item.Value), AttackSource.WeaponEnchant, CC);
}
}
}
Proc(list2);
}
...
if (!IsRanged && !flag2 && attackStyle == AttackStyle.Shield)
{
</syntaxhighlight>
<syntaxhighlight lang="c#">
if ((weapon == null || !weapon.HasElement(486)) && origin.Evalue(428) > 0 && !IsPCFactionOrMinion && EClass.rnd(dmg) >= EClass.rnd(MaxHP / 10) + MaxHP / 100 + 1)
{
origin.Chara.TryNeckHunt(Chara, origin.Evalue(428) * 20, harvest: true);
}
...
void ProcAbsorb()
{
if (origin != null && origin.isChara && isChara && (weapon == null || !weapon.HasElement(486)))
{
int valueOrDefault = (origin.Evalue(662) + weapon?.Evalue(662, ignoreGlobalElement: true)).GetValueOrDefault();
int valueOrDefault2 = (origin.Evalue(661) + weapon?.Evalue(661, ignoreGlobalElement: true)).GetValueOrDefault();
</syntaxhighlight>
事故防止エンチャントが付与された武器を1つ以上装備している場合、事故防止エンチャントの付与されていない武器での攻撃ができなくなります。(事故防止エンチャントの付与された武器を複数もつ場合、その分だけ攻撃します。)
事故防止エンチャントが付与された武器の霊符が発動しなくなります。
武器攻撃命中時の属性追加ダメージエンチャントと発動エンチャントは発動しなくなります。(回避時の発動エンチャントは発動します。)
シールドバッシュができなくなります。
(信仰中の神による効果の)首狩り、マナ吸収、スタミナ吸収ができなくなります。
効果は常に発動し、エンチャント強度による発動率などへの影響はありません。


==命中判定==
==命中判定==
Line 1,061: Line 1,144:
}
}
Proc(list2);
Proc(list2);
</syntaxhighlight>属性追加ダメージエンチャントの付与された'''ワンド以外の'''武器か弾の攻撃が命中した場合、付与された属性追加ダメージエンチャントそれぞれについて追加の属性攻撃を行います。
</syntaxhighlight>事故防止エンチャントが付与されておらず、属性追加ダメージエンチャントの付与された'''ワンド以外の'''武器か弾の攻撃が命中した場合、付与された属性追加ダメージエンチャントそれぞれについて追加の属性攻撃を行います。


それぞれの属性追加ダメージの最大値は以下の式で算出されます。
それぞれの属性追加ダメージの最大値は以下の式で算出されます。
Line 1,075: Line 1,158:
==シールドバッシュ==
==シールドバッシュ==
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
if (!IsRanged && attackStyle == AttackStyle.Shield)
if (!IsRanged && !flag2 && attackStyle == AttackStyle.Shield)
{
{
int num11 = CC.Evalue(123);
int num11 = CC.Evalue(123);
Line 1,096: Line 1,179:
}
}
}
}
</syntaxhighlight>盾スキルが10以上の盾を持つキャラクターの近接攻撃が命中した場合、シールドバッシュの判定が行われます。
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、盾スキルが10以上の盾を持つキャラクターの近接攻撃が命中した場合、シールドバッシュの判定が行われます。


シールドバッシュの発生確率は'''「√(攻撃者の盾スキル) - 2」%で、最小で8%、最大で12%になるよう補正されます。'''
シールドバッシュの発生確率は'''「√(攻撃者の盾スキル) - 2」%で、最小で8%、最大で12%になるよう補正されます。'''
Line 1,109: Line 1,192:


==発動エンチャント==
==発動エンチャント==
武器にアビリティ発動のエンチャント(「それは○○を発動する」)が付与されている場合、攻撃の命中の成否に関わらずあらゆる物理攻撃において確率でアビリティが発動します。<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
void Proc(List<Element> list)
void Proc(List<Element> list)
{
{
Line 1,140: Line 1,223:
}
}
}
}
</syntaxhighlight>発動エンチャントの発動確率は「10 + 発動エンチャント強度 / 5」%で、最大100%です。
</syntaxhighlight>武器に事故防止エンチャントが付与されておらず、アビリティ発動のエンチャント(「それは○○を発動する」)が付与されている場合、攻撃の命中の成否に関わらずあらゆる物理攻撃において確率でアビリティが発動します。
 
発動エンチャントの発動確率は「10 + 発動エンチャント強度 / 5」%で、最大100%です。


発動エンチャントで発動するアビリティや魔法のパワーは「[[Elin:解析/共通処理|CURVE]]((100 + 10 × 発動エンチャント強度 ) × (1 + 0.1 × 対応武器スキル), 400, 100, 75)」です。
発動エンチャントで発動するアビリティや魔法のパワーは「[[Elin:解析/共通処理|CURVE]]((100 + 10 × 発動エンチャント強度 ) × (1 + 0.1 × 対応武器スキル), 400, 100, 75)」です。
250

edits