Elin:解析/戦闘

From Ylvapedia
Revision as of 14:13, 23 November 2024 by Sakumashiki (talk | contribs) (EN版の変更を反映。格闘武器と投擲、近接、射撃、魔法のダメージ計算)
Jump to navigation Jump to search

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 それ以外は010から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 を計算します。 anum を超える場合、超過分は 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 自爆攻撃を行う