Elin:解析/ダメージ計算式: Difference between revisions
m (DEFAULTSORTを追加) |
Sakumashiki (talk | contribs) (EN版の変更を反映。格闘武器と投擲、近接、射撃、魔法のダメージ計算) |
||
Line 1: | Line 1: | ||
==Evalueリスト== | ==Evalueリスト== | ||
{| class="wikitable" | {| class="wikitable" | ||
!Value# | !Value# | ||
!Element | !Element | ||
Line 11: | Line 10: | ||
|- | |- | ||
|(92) | |(92) | ||
| | |貫通率 | ||
| | |||
|- | |||
|(108) | |||
|投擲 | |||
| | | | ||
|- | |- | ||
|(132) | |(132) | ||
| | |戦術 | ||
| | |||
|- | |||
|(133) | |||
|射撃 | |||
| | | | ||
|- | |- | ||
|(1400) | |(305) | ||
| | |魔道具 | ||
| | |||
|- | |||
|(411) | |||
|魔法強化エンチャント | |||
| | |||
|- | |||
| (482) | |||
|理力武器 | |||
| | |||
|- | |||
|(1400) | |||
| 武器の知識フィート | |||
|1, 2 | |1, 2 | ||
|- | |||
|(1404) | |||
|射撃の名手フィート | |||
|1, 2 | |||
|} | |} | ||
==格闘== | == 格闘== | ||
<syntaxhighlight lang="c#" line="1"> | <syntaxhighlight lang="c#" line="1"> | ||
else if (this.IsMartial) | 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. | this.attackType = this.weapon.source.attackType.ToEnum(true); | ||
} | } | ||
</syntaxhighlight> | } | ||
} | |||
</syntaxhighlight> | |||
プレイヤーは格闘スキルを使用してキックまたはパンチを繰り出します。近接戦闘スタイルやキャラクターの特性に基づいて攻撃エフェクトは変わります。 | |||
ダメージは「格闘、筋力、器用、エンチャント値」によって決定されます。 | |||
ダメージのダイスは「2+(格闘/10)」、最大で「d6」です。 | |||
ダイスのダメージ値は「5+√(格闘/3)」です。 | |||
ダメージ倍率は『'''0.6 + ((筋力 / 2 + 格闘 / 2 + 戦術 / 2) / 50.0)』です。''' | |||
プレイヤーが武器の知識フィートを持っている場合、追加ダメージが『0.05×(''武器の知識フィートのランク)』の割合で与えられます。''(事実上、+0.05または+0.10) | |||
命中率は「(筋力/3 + 器用/3 + 格闘)+50)」で、最低値は「25+50」、最高値は「75+50」です。プレイヤーが「盾」を装備している場合、-25%の下方修正があります。 | |||
貫通率は「(格闘/10)+5」で計算され、最低5%、最高「20% + 貫通率」です。 | |||
格闘技武器を装備している場合: | |||
ダメージボーナスは素手のダメージボーナス + '''武器のダメージボーナス''' | |||
ダイス数は、素手のダイス数 + '''武器のダイス数''' | |||
ダイス面は、素手のダイス面 / 2 + '''武器のダイス面''' | |||
命中ボーナスは素手の命中命中ボーナス + '''武器の命中ボーナス''' | |||
貫通率は素手の貫通率 + '''武器の貫通率''' | |||
==投擲== | ==投擲== | ||
<syntaxhighlight lang="c#" line="1"> | |||
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; | |||
} | |||
</syntaxhighlight>プレイヤーの投げたアイテムは、投擲スキルの使用するかしないかにかかわらず、手元に戻ってきます。 | |||
攻撃エフェクトは常に'''鈍器'''です。 | |||
重量値は'''√アイテムの重量×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'''です。 | |||
==近接&遠隔武器== | |||
<syntaxhighlight lang="c#" line="1"> | |||
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; | |||
} | |||
</syntaxhighlight>プレイヤーは、戦術スキルを使用して近接武器を振るうか、または射撃スキルを使用して遠距離武器を撃ちます。 | |||
武器が'''ワンド'''であるか、または'''理力武器'''のエンチャントが付いている場合、戦術スキルまたは射撃スキルの代わりに'''魔道具'''スキルを使用します | |||
ダメージボーナスは、'''プレイヤーのダメージボーナス''' + '''武器の改造道具によるダメージボーナス''' + '''武器のダメージボーナス'''です | |||
ダメージ倍率は0.6 + ('''武器に対応する主能力''' + '''武器スキル / 2''' + (近接武器は'''戦術'''、遠距離武器は'''射撃'''、ワンドまたは理力武器の場合'''魔道具''')) / 50 | |||
プレイヤーが武器の知識/射撃の名手のフィートを持っている場合、追加ダメージが'''0.05 x (フィートランク)'''の割合で与えられます。''<sub>(事実上、+0.05または+0.10)</sub>'' | |||
命中率は('''器用'''、ワンドや理力武器なら'''意志''') / 4 + '''武器スキル''' / 3 + (近接武器は'''戦術'''、遠距離武器は'''射撃'''、ワンドまたは理力武器の場合'''魔道具''') で、最小値は'''25+50'''、最大値は'''75+50'''です。 | |||
'''ワンド'''の命中率には、さらに+50が加わります | |||
命中ボーナスは、'''キャラクターの命中ボーナス''' + '''武器の命中ボーナス''' + '''弾薬の命中ボーナス'''(弾薬を装填している場合) | |||
ダメージボーナスは、'''キャラクターのダメージボーナス''' + '''武器のダメージボーナス''' + '''弾薬のダメージボーナス'''(弾薬を装填している場合) | |||
貫通力は、'''キャラクターの貫通率''' + '''武器の貫通率''' | |||
==魔法:魔法のパワー== | |||
<syntaxhighlight lang="c#"> | |||
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; | |||
} | |||
</syntaxhighlight><syntaxhighlight lang="c#"> | |||
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; | |||
} | |||
</syntaxhighlight>プレイヤーキャラクターの場合、魔法のパワーはcurve( ('''魔法レベル''' x 8 + 50), 400, 100, 75 ) x (100 + '''魔法強化エンチャント''') / 100 です | |||
プレイヤーキャラクター以外の場合、魔法のパワーは'''魔法レベル''' x 8 + 50 または '''キャラレベル''' x 6 + 30 のうち大きい方です | |||
'''曲線関数<code>curve(a, start, step, rate)</code>について:''' | |||
<code>i = 0</code> とします。 <code>num = start + i * step</code> を計算します。 <code>a</code> が <code>num</code> を超える場合、超過分は <code>rate / 100</code> を掛ける必要があります。 その後、<code>i</code> を1 増やします。 上記の手順を10回繰り返します | |||
簡単に言えば、この関数は数値を圧縮するために使用されます。関数の曲線の傾きは、<code>(rate / 100)^10</code>まで徐々に減少します。 | |||
==魔法:攻撃魔法== | |||
{| class="wikitable" | |||
!魔法 | |||
!ダイス数 | |||
!ダイス面 | |||
!ダメージボーナス | |||
!備考 | |||
|- | |||
|手 | |||
|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回ダメージを与える | |||
|- | |||
|ブレス | |||
|1+魔法のパワー/80+対応主能力/20 | |||
|6+魔法のパワー/100 | |||
|対応主能力/4 | |||
|発動者から7マスにわたる35°の円錐内のすべてのターゲットにダメージを与える | |||
|- | |||
|メテオ | |||
|1+魔法のパワー/150 | |||
|4+対応主能力*3 | |||
| | |||
|火炎属性固定 | |||
ダメージ 発動者から10タイルの半径のボール内のすべてのターゲットにダメージを与えます。 壁でブロックされることがあります。 また、発動者にもダメージを与えます。 | |||
|- | |||
|地震 | |||
|5+魔法のパワー/30 | |||
|10+対応主能力/3 | |||
| | |||
|衝撃属性固定 | |||
発動者から12タイルの半径のボール内のすべてのターゲットにダメージを与えます。 重力デバフを持つ敵には、最大ダイスダメージの2倍のダメージを与えます。 浮遊効果を持つ敵には、ダメージの半分を与えます。 | |||
|- | |||
|破呪 | |||
|1+魔法のパワー/160+対応主能力/30 | |||
|8+魔法のパワー/12 | |||
|魔法のパワー/25 | |||
|対象のすべてのデバフを除去し、周囲の敵にダメージを与えます。 | |||
対象に少なくとも1つのデバフがなければ効果はありません。 | |||
|} | |||
==魔法:回復魔法== | |||
{| class="wikitable" | |||
!魔法 | |||
!ダイス数 | |||
!ダイス面 | |||
!回復ボーナス | |||
!備考 | |||
|- | |||
|軽傷治癒 | |||
|1+魔法のパワー/50+Will/30 | |||
|5+魔法のパワー/40 | |||
|魔法のパワー/30 | |||
| | |||
|- | |||
|重傷治癒 | |||
|2+魔法のパワー/40+Will/25 | |||
|6+魔法のパワー/30 | |||
|魔法のパワー/25 | |||
| | |||
|- | |||
|致命傷治癒 | |||
|3+魔法のパワー/35+Will/20 | |||
|7+魔法のパワー/25 | |||
|魔法のパワー/20 | |||
| | |||
|- | |||
|Healing | |||
|4+魔法のパワー/30+Will/15 | |||
|8+魔法のパワー/20 | |||
|魔法のパワー/15 | |||
| | |||
|- | |||
|《エリス》の癒し | |||
|5+魔法のパワー/25+Will/10 | |||
|9+魔法のパワー/15 | |||
|魔法のパワー/10 | |||
| | |||
|- | |||
|《オディナ》の癒し | |||
|6+魔法のパワー/20+Will/5 | |||
|10+魔法のパワー/10 | |||
|魔法のパワー/5 | |||
| | |||
|- | |||
|《ジュア》の癒し | |||
|8+魔法のパワー/10+Will | |||
|15+魔法のパワー/5 | |||
|魔法のパワー | |||
| | |||
|- | |||
|自然の抱擁 | |||
|1+魔法のパワー/125 | |||
|4+魔法のパワー/75 | |||
| | |||
| | |||
|} | |||
==魔法:召喚魔法== | |||
<syntaxhighlight lang="c#" line="1"> | |||
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; | |||
} | |||
</syntaxhighlight> | |||
{| class="wikitable" | |||
!魔法 | |||
!持続時間 | |||
!レベル | |||
!備考 | |||
|- | |||
|具象 | |||
|20 + rnd (20) + 魔法のパワー / 20 | |||
|魔法のパワー / 15 | |||
| | |||
|- | |||
|動物召喚 | |||
|死ぬまで | |||
|魔法レベル * (100 + 魔法のパワー / 10) / 100 + 魔法のパワー / 30 | |||
| | |||
|- | |||
|アンデッド妹召喚 | |||
|死ぬまで | |||
|魔法レベル* (100 + 魔法のパワー / 10) / 100 + 魔法のパワー / 30 | |||
| | |||
|- | |||
|影召喚 | |||
|死ぬまで | |||
|魔法のパワー / 10 + 1 | |||
|自爆攻撃を行う | |||
|} | |||
{{DEFAULTSORT:カイセキ,ダメージケイサンシキ}} | {{DEFAULTSORT:カイセキ,ダメージケイサンシキ}} | ||
[[Category:JA]] | [[Category:JA]] | ||
[[Category:Elin Spoiler]] | [[Category:Elin Spoiler]] |
Latest revision as of 14:13, 23 November 2024
Evalueリスト
Value# | Element | 備考 |
---|---|---|
(92) | 貫通率 | |
(108) | 投擲 | |
(132) | 戦術 | |
(133) | 射撃 | |
(305) | 魔道具 | |
(411) | 魔法強化エンチャント | |
(482) | 理力武器 | |
(1400) | 武器の知識フィート | 1, 2 |
(1404) | 射撃の名手フィート | 1, 2 |
格闘
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.05×(武器の知識フィートのランク)』の割合で与えられます。(事実上、+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;
}
プレイヤーの投げたアイテムは、投擲スキルの使用するかしないかにかかわらず、手元に戻ってきます。
攻撃エフェクトは常に鈍器です。
重量値は√アイテムの重量×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 増やします。 上記の手順を10回繰り返します
簡単に言えば、この関数は数値を圧縮するために使用されます。関数の曲線の傾きは、(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回ダメージを与える | |
ブレス | 1+魔法のパワー/80+対応主能力/20 | 6+魔法のパワー/100 | 対応主能力/4 | 発動者から7マスにわたる35°の円錐内のすべてのターゲットにダメージを与える |
メテオ | 1+魔法のパワー/150 | 4+対応主能力*3 | 火炎属性固定
ダメージ 発動者から10タイルの半径のボール内のすべてのターゲットにダメージを与えます。 壁でブロックされることがあります。 また、発動者にもダメージを与えます。 | |
地震 | 5+魔法のパワー/30 | 10+対応主能力/3 | 衝撃属性固定
発動者から12タイルの半径のボール内のすべてのターゲットにダメージを与えます。 重力デバフを持つ敵には、最大ダイスダメージの2倍のダメージを与えます。 浮遊効果を持つ敵には、ダメージの半分を与えます。 | |
破呪 | 1+魔法のパワー/160+対応主能力/30 | 8+魔法のパワー/12 | 魔法のパワー/25 | 対象のすべてのデバフを除去し、周囲の敵にダメージを与えます。
対象に少なくとも1つのデバフがなければ効果はありません。 |
魔法:回復魔法
魔法 | ダイス数 | ダイス面 | 回復ボーナス | 備考 |
---|---|---|---|---|
軽傷治癒 | 1+魔法のパワー/50+Will/30 | 5+魔法のパワー/40 | 魔法のパワー/30 | |
重傷治癒 | 2+魔法のパワー/40+Will/25 | 6+魔法のパワー/30 | 魔法のパワー/25 | |
致命傷治癒 | 3+魔法のパワー/35+Will/20 | 7+魔法のパワー/25 | 魔法のパワー/20 | |
Healing | 4+魔法のパワー/30+Will/15 | 8+魔法のパワー/20 | 魔法のパワー/15 | |
《エリス》の癒し | 5+魔法のパワー/25+Will/10 | 9+魔法のパワー/15 | 魔法のパワー/10 | |
《オディナ》の癒し | 6+魔法のパワー/20+Will/5 | 10+魔法のパワー/10 | 魔法のパワー/5 | |
《ジュア》の癒し | 8+魔法のパワー/10+Will | 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 + rnd (20) + 魔法のパワー / 20 | 魔法のパワー / 15 | |
動物召喚 | 死ぬまで | 魔法レベル * (100 + 魔法のパワー / 10) / 100 + 魔法のパワー / 30 | |
アンデッド妹召喚 | 死ぬまで | 魔法レベル* (100 + 魔法のパワー / 10) / 100 + 魔法のパワー / 30 | |
影召喚 | 死ぬまで | 魔法のパワー / 10 + 1 | 自爆攻撃を行う |