User:びゃっこ/すたぶ/解析だめけいさん: Difference between revisions

no edit summary
(→‎PV: Rollの処理を詳述)
No edit summary
Line 444: Line 444:


[[Elin:解析/フィート#featManameat (マナの体)|こちらのページで説明されています]]。
[[Elin:解析/フィート#featManameat (マナの体)|こちらのページで説明されています]]。
===ダメージを受ける===
  else
        {
            hp -= dmg;
        }
マナの体を持たない場合はただダメージを受けます。
==被ダメージ時の処理==
===出血アニメーション===
if (isSynced && dmg != 0)
        {
            float ratio = (float)dmg / (float)MaxHP;
            Card c = ((parent is Chara) ? (parent as Chara) : this);
            ActEffect.TryDelay(delegate
            {
                c.PlayEffect("blood").SetParticleColor(EClass.Colors.matColors[material.alias].main).Emit(20 + (int)(30f * ratio));
                if (EClass.core.config.test.showNumbers || isThing)
                {
                    Popper popper = EClass.scene.popper.Pop(renderer.PositionCenter(), "DamageNum");
                    Color c2 = (c.IsPC ? EClass.Colors.textColors.damagePC : (c.IsPCFaction ? EClass.Colors.textColors.damagePCParty : EClass.Colors.textColors.damage));
                    if (e != Element.Void)
                    {
                        c2 = EClass.Colors.elementColors.TryGetValue(e.source.alias);
                        float num14 = (c2.r + c2.g + c2.b) / 3f;
                        num14 = ((num14 > 0.5f) ? 0f : (0.6f - num14));
                        c2 = new Color(c2.r + num14, c2.g + num14, c2.b + num14, 1f);
                    }
                    popper.SetText(dmg.ToString() ?? "", c2);
                }
            });
        }
被ダメージのエフェクト、例えば普通の生物なら血、機械なら金属クズなどを発生させる処理と、
ダメージを表示するオプションがONになっている際のダメージ表記を行っています。
==状態異常付与==
飛んで、4213行目から見ます
{| class="wikitable"
|910
|eleFire
|火炎
|-
|911
|eleCold
|冷気
|-
|912
|eleLightning
|電撃
|-
|913
|eleDarkness
|暗黒
|-
|914
|eleMind
|幻惑
|-
|915
|elePoison
|毒
|-
|916
|eleNether
|地獄
|-
|917
|eleSound
|轟音
|-
|918
|eleNerve
|神経
|-
|919
|eleHoly
|神聖
|-
|920
|eleChaos
|混沌
|-
|921
|eleMagic
|魔法
|-
|922
|eleEther
|エーテル
|-
|923
|eleAcid
|酸
|-
|924
|eleCut
|出血
|-
|925
|eleImpact
|衝撃
|-
|926
|eleVoid
|無
|}
     switch (e.id)
        {
        case 910:
            if (Chance(30 + eleP / 5, 100))
            {
                Chara.AddCondition<ConBurning>(eleP);
            }
            break;
 elePはDamageHPの冒頭で100として定義されているように見えますが、これでは魔法種ごとの状態異常誘発能力に違いが出なくなる矛盾が解消できていません。
           
火炎で炎上が付与されます。条件は(Chance(30 + eleP / 5, 100)
        case 911:
            if (Chara.isWet)
            {
                if (Chance(30 + eleP / 10, 100))
                {
                    Chara.AddCondition<ConFreeze>(eleP);
                }
            }
            else if (Chance(50 + eleP / 10, 100))
            {
                Chara.AddCondition<ConWet>(eleP);
            }
            break;
           
冷気で濡れ・凍結が付与されます。
濡れでないなら濡れの判定のみ、濡れているなら凍結の判定のみ行われます。
凍結の条件は(Chance(30 + eleP / 10, 100)
濡れの条件は(Chance(50 + eleP / 10, 100) 
        case 912:
            if (Chance(75 + eleP / 20, 100) && EClass.rnd(3) == 0)
            {
                Chara.AddCondition<ConParalyze>(1, force: true);
            }
            break;
電撃で麻痺が付与されます。条件は(Chance(75 + eleP / 20, 100)かつ確率1/3を当てることです。
<i>forceは麻痺無効貫通のための仕様?</i>
        case 915:
            if (Chance(30 + eleP / 5, 100))
            {
                Chara.AddCondition<ConPoison>(eleP);
            }
            break;
毒で毒状態が付与されます。
条件は、(Chance(30 + eleP / 5, 100)
           
        case 913:
            if (Chance(30 + eleP / 5, 100))
            {
                Chara.AddCondition<ConBlind>(eleP);
            }
            break;
暗黒で盲目が付与されます。
条件は、Chance(30 + eleP / 5, 100)
     
        case 918:
            flag2 = false;
            if (Chance(30 + eleP / 5, 100))
            {
                Chara.AddCondition<ConParalyze>(eleP);
            }
            break;
神経で麻痺が付与されます。
条件は、(Chance(30 + eleP / 5, 100))
         
        case 914:
            flag2 = false;
            if (EClass.rnd(3) != 0)
            {
                if (Chance(30 + eleP / 5, 100))
                {
                    Chara.AddCondition<ConConfuse>(eleP);
                }
            }
            else if (Chance(30 + eleP / 5, 100))
            {
                Chara.AddCondition<ConSleep>(eleP);
            }
            break;
幻惑で混乱と睡眠が付与されます。
確率2/3で混乱の判定のみ、1/3の確率で睡眠の判定のみが起こります。
混乱も睡眠も条件は(Chance(30 + eleP / 5, 100))。
         
           
        case 917:
            if (Chance(50 + eleP / 10, 100))
            {
                Chara.AddCondition<ConDim>(eleP);
            }
            break;
轟音で朦朧が付与されます。
条件は(Chance(50 + eleP / 10, 100))。
混濁にどう移行するかは不明。
        case 925:
            if (EClass.rnd(3) == 0)
            {
                if (Chance(30 + eleP / 5, 100))
                {
                    Chara.AddCondition<ConDim>(eleP);
                }
            }
            else if (EClass.rnd(2) == 0)
            {
                if (EClass.rnd(3) == 0)
                {
                    Chara.AddCondition<ConParalyze>(1, force: true);
                }
            }
            else if (EClass.rnd(2) == 0)
            {
                Chara.AddCondition<ConConfuse>(1 + EClass.rnd(3), force: true);
            }
            break;
衝撃で朦朧、麻痺、混乱が付与されます。
判定は、1/3で朦朧、1/9で麻痺、1/3で混乱。残る2/9は判定発生なしです。
朦朧は条件(Chance(30 + eleP / 5, 100))
麻痺、混乱は条件なしで、forceが付いています。
         
           
        case 920:
            flag2 = false;
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConBlind>(eleP / 2);
            }
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConParalyze>(eleP / 2);
            }
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConConfuse>(eleP / 2);
            }
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConPoison>(eleP / 2);
            }
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConSleep>(eleP / 2);
            }
            if (Chance(5 + eleP / 25, 40))
            {
                Chara.AddCondition<ConDim>(eleP / 2);
            }
            if (Chance(30 + eleP / 10, 100))
            {
                Chara.SAN.Mod(EClass.rnd(2));
            }
            break;
混沌で、盲目、麻痺、混乱、毒、睡眠、朦朧が付与されます。またSANが上昇する効果も持っています。
条件はブロックコードから確認してください。
朦朧以外は同じです。
 
        case 924:
            if (Chance(50 + eleP / 10, 100))
            {
                Chara.AddCondition<ConBleed>(eleP);
            }
            break;
           
出血なら出血状態が付与されます。
         
           
        case 923:
            if (Chance(50 + eleP / 10, 100) && EClass.rnd(4) == 0)
            {
                ActEffect.Proc(EffectId.Acid, Chara);
            }
            break;
           
           
酸で、劣化判定が起きます。
Chance(50 + eleP / 10, 100)と確率1/4が条件です。
         
        case 922:
            Chara.ModCorruption(EClass.rnd(eleP / 50 + 10));
            break;
エーテルでエーテル病が進行します。
<references />