トキラキラメキ

錦あすみガチ恋勢

【1位率68.1%】反メガシンカ、充溢する鹿【ZA/メガなし構築のススメ】

こんにちは。錦ファイです。

ポケモンZAのシーズン2、Aランク帯において以下のパーティーを使用し、

総試合数:41戦

1位:28回(一位率 68.3%

平均順位:1.51位
とまあまあ高めな勝率を維持することができました。

この構築を使用することによって得られた知見をまず紹介させていただきます。

メガシンカというギミックは微妙です。

 

 

個体紹介

ガブリアス

HA252 B4 意地っ張り
持ち物:きあいのタスキ
技  :ドラゴンダイブ、じしん、どくづき、つるぎのまい
先発要員兼中堅兼フィニッシャーです。

タスキを盾にほとんどのポケモンと殴り合いすることができます。
ゼルネアスがいるにも関わらずこのポケモンの立ち位置は抜群によく、タスキを持たせることで一対一の戦いは「生命、宇宙、そして全てのポケモンの究極の回答」と言って差し支えないほどの勝率を誇ります。

ゼルネアスへの打点としてどくづきは発生が早く、アイアンテールは威力が高いためどちらもメリットはあるのですが、ドラゴンダイブ後の技の発生が早ければ早いほどガブリアスミラーや雑多な奇襲の勝率が高まるためどくづきの方が使い勝手が良いです。

NNの由来はオンパロスのでっかいあの子。

 

 

ゼルネアス

HC252 B4 ひかえめ
持ち物:いのちのたま
技  :ジオコントロール、10万、マジシャ、ムーンフォース


マジレスモンスターです。

ゲームシステムの都合上ジオコントロールを積むタイミングがありえないほど多く、ぶっちゃけ剣舞や瞑想とさほど変わらない感覚で打つことができます。
サブも一応覚えますが二種のフェアリー技+珠+ジオコンでごり押すスタイルがミラーや雑多な集団戦に強く、シャンデラマフォクシーなどの薄めの半減もこの構成なら状況次第でごり押しでの突破が可能になります。
リフレクターも強い技ではありますが、ジオコンによって技の連射速度が大きく上がるため3ウェポンでガン回しする恩恵が他キャラと比べて大きいこと、移動速度上昇により「移動して避ける」「アイテムを回収して実質的な耐久を上げる」といった動きがとりやすいため優先度は低くなると考えています。
NNの由来は鹿苑寺かおるこというキャラです。

ゼルネアス、アンチ・ドラゴン、妖精の二刀

マフォクシー


HC252 B4 ひかえめ
持ち物:シュカのみ
技  :オーバーヒート、サイコショック、ねっぷう、瞑想


新メガを貰ったポケモンですが、この構築においては使用しません。

ゼルネアスを狩るポケモン全てを狩ります。
サイコショックシャンデラとの大きな差別化点です。

発生・回転率ともに高水準かつ10万と同じくほぼ必中であるため技としてのスペックが高く、対ゼルネアス・デンリュウシャンデラにおいて前述のゼルネアスでジオコンや壁の上からゴリ押しで削った後+ショックで不意の物理判定を押し込むことでリーサルが取りやすくなります。

この環境のほぼ全ての鋼・毒タイプが地面技を持っており、マフォクシーを見た時絶対に地面技を押してくるのでシュカのみで確実な処理が可能です。

NNの由来は天才クラブ#83の偉大なる美少女、オンパロスの救世主、人類の希望の象徴たる大天才のマダム・ヘルタ様。

3.7にて敵のスパコンを破壊したので、四つ足のスパコンを焼くマフォクシーと役割が同じ

この構築はマフォクシーが心なしかマダム・ヘルタに似てる=この世界でも天下無双のミス・ヘルタに会えるという歪んだモチベから握り始めましたが今ではマフォクシーこそガブゼルネの最適パーツだと確信しているので安心してください。

マダム・ヘルタに最適パーツは一年たっても来てないのに...



メガシンカはなぜ微妙なのか?

シーズン2はシーズン1と比べてじゃんけんの要素が強くなっています。

最近流行のゼルネグロスシャンデラの並びはこれを象徴しており、「最強のゼルネアス」、「それを殺すメタグロス」、「それを殺すシャンデラ」のじゃんけんが遂行できる綺麗な並びと言えます。

ゼルネアスだけを意識すればいい、ゼルネアスにさえ勝てばいいなら話は簡単ですがこのゲームはポイント制であるためゼルネアスだけを対策してもじゃんけんについていけなければおしまいです。
そして、現状のメガシンカのほとんどはじゃんけんをひっくり返すスペックを有していません

メガマフォクシーを例にして考えてみましょう。

メガマフォクシーは火力と移動速度が大きく上がるのが強みです。
上がった火力と高い回転率により鋼や等倍に対して従来のマフォクシーより更に強く出ることができます。
これは明確な強みですが、これはあくまでチョキがより火力のあるチョキになる代償として持ち物を失っています。また、これらのメガは弱点を突くとオーバーキルになりがちです。

反面シュカなどの生存補助は役割対象からの弱点技を跳ね除け、チョキの勝ちをより強固なものにすることが可能です。

有利体面を押し付けるシチュエーションがより多いからこそもちものなしのメガポケモンを後ろに控えさせることで序盤のじゃんけんの手を減らすべきではないとも言えます。

 

また、この構築のゼルネアス、ガブリアスは技プラスを連打することで半減の体面すら持っていってしまうケースが多々あります。

これは技プラスを消費することでじゃんけんのルールを捻じ曲げていると取ることができます。これができる限りゼルネアスは最強です。
こんなことをしているとメガゲージは技プラスに湯水のように溶けていき、まったくメガシンカに回せなくなってきます。
それならいっそメガシンカを捨てて、あり、メガゲージはガブリアスとゼルネアスに捧げる供物と考えた方が勝率が上がります。

これらの点から現状のZAランクマッチのメガシンカは非常に微妙な立ち位置にいます。

もちろん全てのメガが微妙というわけではありませんし、そのポケモンを活用するための最適解がメガであるケースは無数に存在するでしょう。

ですが、私はこれを読んだ方に構築を組むときはぜひメガなしという選択肢を一考してみてほしいなと思っています。ちゃんと強いんです。

もしかしたらその選択肢が、このゼルネアス環境

ひいてはその先に待つジガルデ環境という壊滅を書き換える一撃になるかもしれません。

ChronoarkMOD制作のススメ② プログラム置き場

MOD制作に便利なプログラム置き場です。自作。

ドローやスキル生成関連の効果

スキルを〇枚引く。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    BattleSystem.instance.AllyTeam.Draw(枚数);
}
ターゲットのスキルを優先して〇枚のスキルを引く。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    for (int i = 0; i < 枚数; i++)
    {
        BattleSystem.instance.AllyTeam.CharacterDraw(Targets[0], null);
    }
}
  
スキルを生成し手札に加える。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    Skill skill = Skill.TempSkill("スキル名", this.BChar, this.BChar.MyTeam);
    BattleSystem.instance.AllyTeam.Add(skill, true);
    this.BChar.MyTeam.ShuffleDeck();
}
スキルを生成しデッキに加える。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);
    for (int i = 0; i < 枚数; i++)
    {
        Skill item = Skill.TempSkill("スキル名①", this.BChar, this.BChar.MyTeam);
        this.BChar.MyTeam.Skills_Deck.Add(item);
    }
    this.BChar.MyTeam.ShuffleDeck();
}
最後に手札から発動したスキルを自身のものとして手札に加える

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    Skill lastSkill = BattleSystem.instance.BattleLogs.getLastSkill(
        true,
        false,
        (BattleLog log) =>
            log.WhoUse.Info.Ally &&
            log.isUsedinHand,
        (Skill skill) =>
            !skill.FreeUse &&
            !skill.MySkill.Rare &&
            !skill.Master.NullCheck()
    );

    if (lastSkill != null)
    {
        // 特定スキルは除外
        if (lastSkill.MySkill.KeyID == "スキル名") 
        {
            return;
        }



        // 所有者を自身に変更
        skillCopy.Master = this.BChar;

        // 手札に追加
        this.BChar.MyTeam.Add(skillCopy, true);
    }
}
デッキから条件を満たすスキルを選択し、自身のスキルとして手札に加える

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    List selectableSkills = new List();

    foreach (Skill skill in BattleSystem.instance.AllyTeam.Skills_Deck)
    {
        if (skill.MySkill.KeyID == "スキル名①") continue;   // 自身のスキルは除外
        if (skill.Master.IsLucy) continue;                  // 特定キャラクターのスキルは除外
        if (skill.MySkill.Rare) continue;                  // レアスキルは除外

        selectableSkills.Add(skill);
    }

    BattleSystem.DelayInput(BattleSystem.I_OtherSkillSelect(
        selectableSkills,
        new SkillButton.SkillClickDel(this.OnSkillSelected),
        ScriptLocalization.System_SkillSelect.DrawSkill,
        false, true, true, false, true));
}

private void OnSkillSelected(SkillButton selectedButton)
{
    Skill selectedSkill = selectedButton.Myskill;

    // クローン作成(迅速・除外・一定ターン後削除)
    Skill clonedSkill = selectedSkill.CloneSkill(false, null, null, false);
    clonedSkill.isExcept = true;
    clonedSkill.AutoDelete = 枚数;
    clonedSkill.APChange--;

    // 持ち主を自身に変更
    Skill originalSkill = selectedSkill;
    clonedSkill.Master = this.BChar;

    // 手札に追加
    this.BChar.MyTeam.Add(clonedSkill, true);

    // 元の持ち主が自身なら追加発動を付与
    if (originalSkill.Master == this.BChar)
    {
        clonedSkill.ExtendedAdd_Battle(new MultiUseOnce());
    }
}
手札のスキルに SkillExtended を付与する。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);

    foreach (Skill skill in this.BChar.MyTeam.Skills)
    {
        skill.ExtendedAdd(new 追加効果①());
    }
}
デッキのスキルに SkillExtended を付与する。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);

    foreach (Skill skill in this.BChar.MyTeam.Skills_Deck)
    {
        skill.ExtendedAdd(new 追加効果①());
    }
}
特定のスキル群から選ばれたスキルを山札の一番上に加える。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);

    List<string> 候補スキル群 = new List<string> { "スキル①", "スキル②", "スキル③" };

    List<Skill> candidateSkills = new List<Skill>();
    foreach (string key in 候補スキル群)
    {
        Skill temp = Skill.TempSkill(key, this.BChar, this.BChar.MyTeam);
        if (temp != null) candidateSkills.Add(temp);
    }

    if (candidateSkills.Count > 0)
    {
        BattleSystem.instance.EffectDelays.Enqueue(
            BattleSystem.I_OtherSkillSelect(
                candidateSkills,
                new SkillButton.SkillClickDel(this.OnSkillSelected),
                ScriptLocalization.System_SkillSelect.DrawSkill,
                false, true, true, false, true
            )
        );
    }
}

private void OnSkillSelected(SkillButton button)
{
    Skill chosen = button.Myskill;
    if (chosen == null) return;

    this.BChar.MyTeam.Skills_Deck.Insert(0, chosen);
}

スキル発動にかかわる効果

スタックがX以上ならすべて消費してスキルを自動発動

public override void Init()
{
    base.Init();

    // スタックが一定数に達したら発動処理
    if (this.StackNum >= 枚数)
    {
        // スタック全消費
        base.SelfDestroy(false);

        // 特定のスキルを即時発動
        Skill triggerSkill = Skill.TempSkill("スキル名①", this.BChar, this.BChar.MyTeam);
        if (triggerSkill != null)
        {
            BattleSystem.DelayInputAfter(
                BattleSystem.instance.SkillRandomUseIenum(
                    this.BChar,                       // 発動者
                    triggerSkill,                     // 発動するスキル
                    false, false, false
                )
            );
        }
    }
}
自身がスキルを発動するたび

public class バフ名 : Buff, IP_SkillUseHand_Team
{
    // 手札からスキルを使用したときに発動
    public void SKillUseHand_Team(Skill skill)
    {
        // 発動者がこのバフの保持者本人でなければ無視
        if (skill.Master != this.BChar)
            return;

    }
}
 
味方がスキルを〇枚使用する度

public class バフ名: Buff, IP_SkillUseHand_Team
{
    private int skillUseCount = 0; // スキル使用回数カウント
    private int UseCount = 0;

    // スキル使用時の処理
    public void SKillUseHand_Team(Skill skill)
    {
        // 自身以外の味方がスキルを使用したかを判定
        if (skill.Master != this.BChar)
        {
            skillUseCount++;

            // スキル使用回数が条件に達した場合の処理
            if (skillUseCount >= 枚数)
            {
                if (UseCount < 枚数)
                {
                    skillUseCount = 0;

                    UseCount++;
                }
            }
        }
    }

    public override void BuffStat()
    {
        skillUseCount = 0;
        UseCount = 0;
    }
    public override string DescExtended()
    {
        return base.DescExtended()
            .Replace("&a", (枚数 - UseCount).ToString()); // 残り回数
    }
}
このスキルを使用した時、追加で〇回発動する。

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    int extraCount = 回数;

    // コルーチンで追加攻撃
    BattleSystem.DelayInput(this.PlusAttackChain(Targets[0], extraCount));
}

public IEnumerator PlusAttackChain(BattleChar initialTarget, int count)
{
    for (int i = 0; i < count; i++)
    {
        yield return new WaitForSecondsRealtime(0.3f);

        Skill skill = Skill.TempSkill("スキル名", this.BChar, this.BChar.MyTeam);

        if (this.BChar != null && !this.BChar.Dummy && !this.BChar.IsDead)
        {
            BattleChar target = initialTarget;

            if (target == null || target.IsDead)
            {
                List enemies = BattleSystem.instance.EnemyList.Cast().ToList();
                if (enemies.Count > 0)
                {
                    target = enemies.Random(this.BChar.GetRandomClass().Main);
                }
                else
                {
                    break; // 敵がいないなら終了
                }
            }

            this.BChar.ParticleOut(this.MySkill, skill, target);
        }
    }
}
ランダム(範囲指定)回特定のスキルを自動発動させる。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);
    int count = UnityEngine.Random.Range(最小, 最大);
    if (count > 0)
    {
        BattleSystem.DelayInput(this.CastRandomSkill(count));
    }
}

private IEnumerator CastRandomSkill(int count)
{
    for (int i = 0; i < count; i++)
    {
        yield return new WaitForSecondsRealtime(0.3f);

        Skill skill = Skill.TempSkill("スキル名①", this.BChar, this.BChar.MyTeam);
        skill.NotCount = true;   // 使用回数に含めない
        skill.isExcept = true;   // 除外扱い(コピー制御用)
        skill.AutoDelete = 1;    // 使い捨て

        // ターゲット(ランダムな敵)
        BattleChar enemy = null;
        if (BattleSystem.instance.EnemyList.Count > 0)
        {
            enemy = BattleSystem.instance.EnemyList.Random(this.BChar.GetRandomClass().Main);
        }

        this.BChar.ParticleOut(skill, skill, enemy);
    }
}
  
このスキルを引いた時自動で発動
public class スキル名 : Skill_Extended
{
    public override IEnumerator DrawAction()
    {
        BattleSystem.DelayInput(BattleSystem.instance.SkillRandomUseIenum(BattleSystem.instance.AllyTeam.キャラクター名, this.MySkill, false, false, true));
        return base.DrawAction();
    }
}




マナやコスト関連の効果

マナを回復。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    BattleSystem.instance.AllyTeam.AP += 増加量;
}
マナを最大値まで回復。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    this.BChar.MyTeam.AP = this.BChar.MyTeam.MAXAP;
}
特定のスキル群を使用するたびにコスト減少。

private readonly HashSet<string> 特定スキル群 = new HashSet<string>
{
    "スキル①", "スキル②", "スキル③"
};

private int costReduction = 0;

public override void Init()
{
    base.Init();
    this.costReduction = 0;
}

public override void FixedUpdate()
{
    this.APChange = -this.costReduction;
}

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);
    this.costReduction = 0;
}

public void SkillUseTeam(Skill skill)
{
    if (特定スキル群.Contains(skill.MySkill.KeyID))
    {
        this.costReduction++;
    }
}
コスト減少(skill extended側)

public override void Init()
{
    base.Init();
    this.APChange = -数値;
}
  
マナが回復するたび効果を発動。

public class Buff名 : Buff, IP_APChanged
{


    public void APChanged(int OldValue, int NewValue, bool NewTurnRecover)
    {
        if (!NewTurnRecover && NewValue > OldValue)
        {
            int diff = NewValue - OldValue;
            for (int i = 0; i < diff; i++)
            {
                BattleSystem.DelayInput(this.AddStack());
            }
        }
    }

    private IEnumerator AddStack()
    {
     ここにしたいことを入力 
     yield break;
    }
}
  
味方が瀕死になった時コストを0にする

public class スキル名 : Skill_Extended, IP_NearDeath
    {
        public override void Init()
        {
            base.Init();
            this.UseNum = 0;
        }

public override void FixedUpdate()
{
    this.APChange = -this.UseNum;
}

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    this.UseNum = 0;
}

public void NearDeath(BattleAlly Ally)
{
    if (Ally != null && Ally != this.BChar && Ally.Info.Ally == this.BChar.Info.Ally)
    {
        this.UseNum++;
    }
}

public int UseNum;
 }
}

バフ・デバフ関連の効果

対象のデバフをランダムに 1 つ解除する。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);

    Buff debuff = Targets[0]
        .GetBuffs(BattleChar.GETBUFFTYPE.ALLDEBUFF, true, false)
        .Random(this.BChar.GetRandomClass().Main);

    if (debuff != null)
    {
        debuff.SelfDestroy(false);
    }
}
特定のバフを持つなら

if (BChar.BuffReturn("バフ名①", false) != null)
{
    
}
自身に特定のバフを付与する。

this.BChar.BuffAdd("バフ名①", this.BChar, false, 0, false, -1, false);
自身以外の味方全員に特定のバフを付与する。

foreach (BattleChar ally in this.BChar.MyTeam.AliveChars)
{
    if (ally != this.BChar)
    {
        ally.BuffAdd("バフ名①", this.BChar, false, 0, false, -1, false);
    }
}
特定のバフをリセットし、HPが最も高い敵に再付与。

int totalRemoved = 0;

// 敵のバフを減らして合計数を記録
foreach (BattleChar enemy in BattleSystem.instance.EnemyTeam.AliveChars)
{
    Buff decode = enemy.BuffReturn("バフ名①", false);
    if (decode != null && decode.StackNum > 1)
    {
        int removed = decode.StackNum - 1;
        totalRemoved += removed;

        while (decode.StackNum > 1)
            decode.SelfStackDestroy();
    }
}

// HPが最も高い敵を取得
BattleChar maxEnemy = BattleSystem.instance.EnemyTeam.AliveChars
    .OrderByDescending(e => e.HP)
    .FirstOrDefault();

// 減らしたバフの合計数を再付与
if (maxEnemy != null && totalRemoved > 0)
{
    for (int i = 0; i < totalRemoved; i++)
    {
        maxEnemy.BuffAdd("バフ名①", this.BChar, false, 0, false, -1, false);
    }
}
ターン終了時に自身のバフの数に応じて、特定のスキルを自動で使用する。

public class バフ名① : Buff, IP_TurnEnd
{
    public void TurnEnd()
    {
        int count = this.BChar.GetBuffs(BattleChar.GETBUFFTYPE.BUFF, false, false).Count;

        for (int i = 0; i < count; i++)
        {
            BattleSystem.DelayInputAfter(AutoUseSkill());
        }
    }

    public IEnumerator AutoUseSkill()
    {
        Skill skill = Skill.TempSkill("スキル名①", BChar, BChar.MyTeam);
        skill.isExcept = true;
        skill.FreeUse = true;
        skill.PlusHit = true;

        // 実在する可能性の高いプロパティで高速化
        skill.NoAttackTimeWait = true;

        yield return BattleSystem.instance.SkillRandomUseIenum(
            BChar,
            skill,
            true,   // ランダムターゲット
            true,   // FreeUse
            false   // isCoolDownOff
        );
    }
}
ターン終了時、ランダムに選ばれた敵に順番にバフを付与する。
 public class B_kasuteru_6 : Buff, IP_TurnEnd { public void TurnEnd() { // 敵キャラクターのリストを取得 List enemies = new List(BattleSystem.instance.EnemyList);
    if (enemies.Count >= 1)
    {
        // ランダムに1体目を選び、バフを付与
        BattleChar first = enemies.Random(this.BChar.GetRandomClass().Main);
        first.BuffAdd("バフ名", this.BChar, false, 150, false, -1, false);
        enemies.Remove(first); // 1体目を除外

        if (enemies.Count >= 1)
        {
            // ランダムに2体目を選び、バフを付与
            BattleChar second = enemies.Random(this.BChar.GetRandomClass().Main);
            second.BuffAdd("バフ名", this.BChar, false, 150, false, -1, false);
        }
    }
}

相手が行動したとき、バフを付与し、このバフの継続ターンを1減らす。

    public class バフ名 : Buff, IP_TargetedAlly
    {
        public override void Init()
        {
            base.Init();
          
    }
    public IEnumerator Targeted(BattleChar Attacker, List SaveTargets, Skill skill)
    {

        Attacker.BuffAdd(バフ名, Attacker, false, 0, false, -1, false);

        // バフのターンを1減らす
        this.TurnUpdate();

        yield return new WaitForSeconds(0.2f);
    }
}
自分のバフの残りターンを延長する。

public override void SkillUseSingle(Skill skill, List targets)
{
    base.SkillUseSingle(skill, targets);
    ExtendMyBuffs();
}

private void ExtendMyBuffs()
{
    foreach (Buff buff in this.BChar.Buffs)
    {
        // 非表示バフ、デバフ、無限持続バフは対象外
        if (buff.BuffData.Hide || buff.BuffData.Debuff || buff.BuffData.LifeTime == 0f)
            continue;

        foreach (StackBuff stack in buff.StackInfo)
        {
            if (stack.RemainTime > 0)
            {
                stack.RemainTime++;
            }
        }
    }
}
死亡時に味方のうち最もHPが高いキャラクターに、バフをスタック数分付与する。

public class バフ名 : Buff, IP_Dead
     {
         // 味方リストから自分を除外したリストを作成
         List list = new List(this.BChar.MyTeam.AliveChars);
         list.Remove(this.BChar); // 自分を除外

         if (list == null || list.Count == 0)
         {
             ;
             return;
         }

         // HPが最も高い味方を選択
         BattleChar maxHpAlly = list.OrderByDescending(x => x.HP).First();

         for (int i = 0; i < this.StackNum; i++)
         {
             int remainTime = (i < this.StackInfo.Count) ? this.StackInfo[i].RemainTime : -1;

             Buff result = maxHpAlly.BuffAdd(
                 "B_herta_p",
                 this.Usestate_L,
                 false,
                 500,
                 false,
                 remainTime,
                 false
             );

             if (result != null);
             else
                 ;
         }
     }
 }
自分のバフのスタックを消費して別のバフを付与

public override void SkillUseSingle(Skill SkillD, List Targets)
        {
            //numのリセット
            int num = 0;
            foreach (Buff buff in this.BChar.GetBuffs(BattleChar.GETBUFFTYPE.BUFF, false, false))
            {
                // バフ名① バフを持っているか確認
                if (buff.GetType() == typeof(バフ名①))
                {
                    // スタック数をnumに合計
                    num += buff.StackNum;
                }
            }
            if (num > 0)
            {
                this.BChar.BuffRemove(バフ名①, false);
                Targets[0].BuffAdd("バフ名②", this.BChar, false, 0, false, -1, false);
                for (int i = 0; i < num - 1; i++)
                {
                    this.BChar.BuffAdd("バフ名①", this.BChar, false, 0, false, -1, false);
                }
            }
        }

アイテム・敵関連の効果

戦闘開始時に空きスロット分のアイテムを補充する。

public class P_キャラクター名 : Passive_Char, IP_BattleStart_UIOnBefore
{
    public override void Init()
    {
        base.Init();
        this.OnePassive = true;
    }

    // 戦闘開始時に空きスロット分のアイテムを補充
    public void BattleStartUIOnBefore(BattleSystem Ins)
    {
        List inventory = PlayData.TSavedata.Inventory;
        int emptySlots = inventory.Count(item => item == null);

        for (int i = 0; i < emptySlots; i++)
        {
            ItemBase item = ItemBase.GetItem("アイテム");
            ItemBase tempItem = item.Clone();
            tempItem.IsBattleTempItem = true;

            PartyInventory.InvenM.AddNewItem(tempItem);
        }
    }
}
敵が〇体なら

if (BattleSystem.instance.EnemyList.Count == 敵の数)
{
 
}
特定の敵をフィールドに召喚する。

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    // 召喚対象の敵リスト
    List summonList = new List
    {
        "敵ID①"
    };

    foreach (string enemyKey in summonList)
    {
        // 敵をフィールドに召喚
        BattleSystem.DelayInput(
            BattleSystem.instance.NewEnemyAutoPos(enemyKey, null)
        );
    }
}
特定の敵が即座に戦闘不能になる。

public override void SkillUseSingle(Skill SkillD, List Targets)
    {
        base.SkillUseSingle(SkillD, Targets);

        // 特定の敵を戦闘不能にする
        List enemyList = BattleSystem.instance.EnemyTeam.AliveChars;

        foreach (BattleChar enemy in enemyList)
        {
            if (enemy.Info.KeyData == "敵ID①" || 
                enemy.Info.KeyData == "敵ID②" || 
                enemy.Info.KeyData == "敵ID③")
            {
                try
                {
                    enemy.Dead(false, false);
                }
                catch
                {
                    ;
                }
            }
        }
   

ダメージ・回復関連の効果

スキル使用者に苦痛ダメージを与える。

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);
    this.BChar.Damage(this.BChar, ダメージ量, false, true, false, 0, false, false, false);
}
体力が1になるようにダメージを与える。

     public override void SkillUseSingle(Skill SkillD, List Targets)
     {
     base.SkillUseSingle(SkillD, Targets);
     
    if (Targets == null || Targets.Count == 0)
        return;

    BattleChar target = Targets[0];

    if (target.HP > 1)
    {
        // 現在のHPから1残してダメージを与える
        int damage = target.HP - 1;
        target.Damage(this.BChar, damage, false, true, false, 0, false, false, false);
    }
    else
    {
        // HPが1以下の場合は何もしない
    }
}
このスキルで与えたダメージと同量自身を回復する
public class スキル名:Skill_Extended, IP_DealDamage
    {
        public void DealDamage(BattleChar Take, int Damage, bool IsCri, bool IsDot)
        {
            if (Damage >= 1)
            {
                this.BChar.Heal(this.BChar, (float)((int)((float)Damage * 倍率)), false, false, null);
            }
        }
    }
}
ダメージを受けたとき固定ダメージを与え効果を解除する。

public class バフ名① : Buff, IP_DamageTake
{
    public override string DescExtended()
    {
        return base.DescExtended().Replace("&a", 枚数.ToString());
    }

    // ダメージを受けたとき
    public void DamageTake(BattleChar User, int Dmg, bool Cri, ref bool resist, bool NODEF = false, bool NOEFFECT = false, BattleChar Target = null)
    {
        if (Dmg >= 枚数 && User.Info.Ally != this.BChar.Info.Ally && !NODEF)
        {
            User.Damage(this.BChar, 枚数, false, true, false, 0, false, false, false); // 相手に固定ダメージ
            base.SelfDestroy(false); // 自身の効果を解除
        }
    }
}
ダメージを受けたとき追加で固定ダメージを与える

public class バフ名① : Buff, IP_DamageTake
{
    public override string DescExtended()
    {
        return base.DescExtended().Replace("&a", 枚数.ToString());
    }

    // ダメージを受けたとき
    public void DamageTake(BattleChar User, int Dmg, bool Cri, ref bool resist, bool NODEF = false, bool NOEFFECT = false, BattleChar Target = null)
    {
        if (Dmg >= 枚数 && User.Info.Ally != this.BChar.Info.Ally && !NODEF)
        {
            this.BChar.Damage(this.BChar, 枚数, false, true, false, 0, false, false, false); // 自身に固定ダメージ
        }
    }
}
ダメージを受けたとき

public class バフ名① : Buff, IP_DamageTake
{
    // ダメージを受けたとき
    public void DamageTake(BattleChar User, int Dmg, bool Cri, ref bool resist, bool NODEF = false, bool NOEFFECT = false, BattleChar Target = null)
    {
        if (Dmg > 0) // ダメージを受けた場合のみ
        {
            // ここに処理を記述
        }
    }
}
攻撃を受けるとカウントを減らし、別のバフを付与

public class バフ名① : Buff, IP_Hit
{
    public override string DescExtended()
    {
        return base.DescExtended().Replace("&a", this.Num.ToString());
    }

    public void Hit(SkillParticle SP, int Dmg, bool Cri)
    {
        if (Dmg != 0 && this.Num > 0)
        {
            this.Num--;
            this.BChar.BuffAdd("バフ名②", base.Usestate_L, false, 0, false, -1, false);
        }
        throw new NotImplementedException();
    }

    private int Num = 枚数;
}
攻撃が命中した対象にバフを付与する。

public class バフ名 : Buff, IP_SkillUse_Target 
{
    public void AttackEffect(BattleChar hit, SkillParticle SP, int DMG, bool Cri)
    {
        if (hit != null && hit.HP >= 1 && SP.SkillData.IsDamage)
        {
            // 対象にバフを2層付与
            for (int i = 0; i < 枚数; i++)
            {
                var result = hit.BuffAdd("バフ名②", this.Usestate_F, false, 0, false, -1, false);
            }
 
}
対象の敵を倒した場合や味方を瀕死にした場合

    public override void SkillUseSingle(Skill SkillD, List Targets)
    {
        base.SkillUseSingle(SkillD, Targets);
    }

public override void SkillUseSingleAfter(Skill SkillD, List Targets)
{
    base.SkillUseSingleAfter(SkillD, Targets);
    BattleSystem.DelayInputAfter(this.After(Targets));
}

public IEnumerator After(List Targets)
{
    yield return new WaitForSecondsRealtime(0.1f); // 状態更新待機

    BattleTeam myTeam = this.BChar.MyTeam;

    foreach (BattleChar target in Targets)
    {
        bool isEnemy = target.MyTeam != myTeam;
        bool isAlly = target.MyTeam == myTeam;

        // 敵が死んだ場合 → スキルを手札に2枚追加
        if (isEnemy && target.IsDead)
        {
          
        }

        // 味方を瀕死にした場合 → 英雄カウント+1、スキルを手札に2枚追加
        if (isAlly && target.HP <= 0)
        {
         
        }
    }

    yield return null;
}
HPが0以下になった時にバフを追加して死亡を防ぎ、HPを最大回復する。
public void HPChange(BattleChar Char, bool Healed)
    {
        if (Char.HP <= 0)
        {
            // バフ名 を追加
            Char.BuffAdd(バフ名, Char, false, 0, false, -1, false);
            // 死亡状態を解除
            Char.IsDead = false;
            // HPを最大まで回復
            Char.Heal(Char, (float)Char.Info.get_stat.maxhp, true, false, null);
        }
    }

// Token: 0x06003387 RID: 13191 RVA: 0x00166EEF File Offset: 0x001650EF
public override void Init()
{
    base.Init();
    // 最大HPの増加を削除 
 }
}



その他スキル

戦闘開始時デッキの一番上に置く。

public override void BattleStartDeck(List Skills_Deck)
{
    Skills_Deck.Remove(this.MySkill);
    Skills_Deck.Insert(0, this.MySkill);
}
複数の効果から選択

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);

    List<Skill> candidateSkills = new List<Skill>();

    Skill option1 = Skill.TempSkill("スキル①", this.BChar, this.BChar.MyTeam);
    if (option1 != null) candidateSkills.Add(option1);

    Skill option2 = Skill.TempSkill("スキル②", this.BChar, this.BChar.MyTeam);
    if (option2 != null) candidateSkills.Add(option2);

    if (candidateSkills.Count > 0)
    {
        BattleSystem.instance.EffectDelays.Enqueue(
            BattleSystem.I_OtherSkillSelect(
                candidateSkills,
                new SkillButton.SkillClickDel(this.OnMainChoiceSelected),
                ScriptLocalization.System_SkillSelect.DrawSkill,
                false, true, true, false, true
            )
        );
    }
}

private void OnMainChoiceSelected(SkillButton button)
{
    Skill chosen = button.Myskill;
    if (chosen == null) return;

    if (chosen.MySkill.KeyID == "スキル①")
    {
        // 効果①
    }
    else if (chosen.MySkill.KeyID == "スキル②")
    {
        // 効果②
    }
}
特定の条件でのみ発動可能。

public override bool Terms()
{
    // ここに条件を指定
}
デッキの特定のスキル群のダメージを+〇。

private readonly HashSet<string> tokenList = new HashSet<string>
{
    "スキル名①",
    "スキル名②",
    "スキル名③",
    // ...(多数のスキルIDを定義)
};

public override void SkillUseSingle(Skill SkillD, List<BattleChar> Targets)
{
    base.SkillUseSingle(SkillD, Targets);
 

    // デッキ内の対象スキルを強化
    foreach (Skill skill in this.BChar.MyTeam.Skills_Deck)
    {
        if (tokenList.Contains(skill.MySkill.KeyID))
        {
            var ext = skill.ExtendedFind<強化用拡張>();
            if (ext != null)
            {
                ext.BonusDamage += 数値; // 累積強化
                ext.SkillBasePlus.Target_BaseDMG = ext.BonusDamage;
            }
            else
            {
                var newExt = new 強化用拡張();
                skill.ExtendedAdd_Battle(newExt);
            }
        }
    }
}
  

        public class強化用拡張 : Skill_Extended
    {
        // 強化値を保持するフィールド
        public int BonusDamage = 数値;

        public override void Init()
        {
            base.Init();
            this.SkillBasePlus.Target_BaseDMG = BonusDamage;
        }

        // スキル説明文に &a を置換して追加ダメージを表示
        public override string DescExtended(string desc)
        {
            // desc は元々のスキル説明文
            return base.DescExtended(desc).Replace("&a", BonusDamage.ToString());
        }
    }
}
味方の使用済みスキルをデッキに戻し、オーバーチャージをリセット

public override void SkillUseSingle(Skill SkillD, List Targets)
{
    base.SkillUseSingle(SkillD, Targets);
    BattleSystem.DelayInput(Effect(Targets));
}

private IEnumerator Effect(List Targets)
{
    // 特定キャラクターの使用済みスキルをデッキに戻す
    List targetSkills = BattleSystem.instance.AllyTeam.Skills_UsedDeck
        .Where(s => s.Master != null && s.Master.Info.KeyData == "キャラクター名①")
        .ToList();

    foreach (Skill skill in targetSkills)
    {
        yield return BattleSystem.instance.StartCoroutine(
            BattleSystem.instance.AllyTeam._UsedDeckToDeck(skill)
        );
    }

    // 対象キャラクターの使用済みスキルをデッキに戻し、オーバーチャージ解除
    foreach (BattleChar target in Targets)
    {
        if (target == null) continue;

        List targetCharSkills = BattleSystem.instance.AllyTeam.Skills_UsedDeck
            .Where(s => s.Master == target)
            .ToList();

        foreach (Skill skill in targetCharSkills)
        {
            yield return BattleSystem.instance.StartCoroutine(
                BattleSystem.instance.AllyTeam._UsedDeckToDeck(skill)
            );
        }

        target.Overload = 0;
    }

    // 自身のオーバーチャージ解除
    if (this.BChar != null)
    {
        this.BChar.Overload = 0;
    }
    yield break;
}
自身の持つスキルをデッキからすべて除外する。
 base.SkillUseSingle(SkillD, Targets);

// デッキから対象キャラクターのスキルをすべて除外
for (int i = 0; i < this.BChar.MyTeam.Skills_Deck.Count; i++)
{
if (this.BChar.MyTeam.Skills_Deck[i].Master == this.BChar)
{
this.BChar.MyTeam.Skills_Deck.RemoveAt(i);
i--; // インデックス調整
}
}

// 使用済みデッキからも対象キャラクターのスキルを除外
for (int i = 0; i < this.BChar.MyTeam.Skills_UsedDeck.Count; i++)
{
if (this.BChar.MyTeam.Skills_UsedDeck[i].Master == this.BChar)
{
this.BChar.MyTeam.Skills_UsedDeck.RemoveAt(i);
i--;
}
}
アクセラレート

   public class kari : Skill_Extended
    {
        private int initialApCost = -1;       // 最初に見たときのAP(元コスト)
        private int currentBaseCost = -1;     // 外部軽減後のコスト
        private int lastKnownAp = -1;
        private bool costAdjusted = false;
        private int reducedCost = 5;
        private int lastKnownBaseCost = -1; // 追加

        public override void Init()
        {
            base.Init();
            this.BattleExtended = true;
            this.OnePassive = true;
            this.NotCount = false;
        }

        public override void HandInit()
        {
            base.HandInit();

            // 外部軽減の影響が出る前に取得されることを期待して初期APを保存
            if (initialApCost < 0)
            {
                initialApCost = MySkill.AP;
                currentBaseCost = MySkill.AP;
                Debug.Log($"[kari] initialApCost saved: {initialApCost}");
            }

            BattleSystem.instance.StartCoroutine(ApMonitorLoop());
        }

        private IEnumerator ApMonitorLoop()
        {
            while (true)
            {
                if (BattleSystem.instance?.AllyTeam != null)
                {
                    int currentAp = BattleSystem.instance.AllyTeam.AP;
                    int externalBaseCost = MySkill.AP - APChange;

                    bool apChanged = currentAp != lastKnownAp;
                    bool baseCostChanged = externalBaseCost != lastKnownBaseCost;

                    if (apChanged || baseCostChanged)
                    {
                        lastKnownAp = currentAp;
                        lastKnownBaseCost = externalBaseCost;

                        if (baseCostChanged)
                        {
                            Debug.Log($"[kari] Detected external cost change: {currentBaseCost} → {externalBaseCost}");
                            currentBaseCost = externalBaseCost;

                            if (costAdjusted)
                            {
                                APChange = reducedCost - currentBaseCost;
                                Debug.Log($"[kari] Recalculated APChange due to external cost change: APChange={APChange}");
                            }
                        }

                        // ここで一元的に処理
                        AdjustApCost();
                    }
                }
                yield return new WaitForSeconds(0.1f);
            }
        }

        private void AdjustApCost()
        {
            if (MySkill == null || BattleSystem.instance?.AllyTeam == null)
                return;

            int currentAp = BattleSystem.instance.AllyTeam.AP;
            int effectiveCost = currentBaseCost + APChange;

            Debug.Log($"[kari] AdjustApCost called: currentAp={currentAp}, effectiveCost={effectiveCost}, initialApCost={initialApCost}, APChange={APChange}, costAdjusted={costAdjusted}, currentBaseCost={currentBaseCost}");

            if (costAdjusted)
            {
                if (currentAp >= currentBaseCost)
                {
                    APChange = 0;
                    costAdjusted = false;
                    NotCount = false;
                    Debug.Log("[kari] AP sufficient. Cost reverted to original. NotCount disabled.");
                }
                else
                {
                    NotCount = true;
                    Debug.Log("[kari] Still insufficient AP. Keeping reduced cost.");
                }
            }
            else
            {
                if (currentAp < currentBaseCost)
                {
                    APChange = reducedCost - currentBaseCost;
                    costAdjusted = true;
                    NotCount = true;
                    Debug.Log("[kari] AP insufficient. Cost reduced. NotCount enabled.");
                }
                else
                {
                    APChange = 0;
                    NotCount = false;
                }
            }
        }

        public override void SkillUseSingle(Skill SkillD, List Targets)
        {
            if (costAdjusted)
            {
                // 軽減されたコストで使用された場合の効果
            }
            else
            {
                // 通常コストで使用された場合の効果
            }
        }

        public override void DiscardSingle(bool Click)
        {
            base.DiscardSingle(Click);
            APChange = 0;
            costAdjusted = false;
            NotCount = false;
        }
    }
}




その他バフ

ターン開始時

public class B_ バフid: Buff, IP_PlayerTurn
    public void Turn()
 {
 }
}
回数制限つきのバフ

// 回数制限を持つバフの基本形
public class Buff名 : Buff
{
    private int remainCount = 数値; // 残り回数

    public override string DescExtended()
    {
        // 説明文に残り回数を反映
        return base.DescExtended().Replace("&a", this.remainCount.ToString());
    }

    // 条件を満たした時に呼ばれる処理
    public void TriggerEffect()
    {
        if (this.remainCount > 0)
        {
            // 効果処理を書く

            // 残り回数を減らす
            this.remainCount--;
            if (this.remainCount <= 0)
                this.SelfDestroy();
        }
    }
}
  
クリックして発動

public override void BuffOneAwake()
{
    base.BuffOneAwake();

    if (this.BuffIcon == null)
    {
        return;
    }

    Button button = this.BuffIcon.AddComponent
ターン1効果を持つバフ

    
   public class B_:Buff, IP_SkillUseHand_Team, IP_TurnEnd
 {
     private bool usedThisTurn = false;
        public void SKillUseHand_Team(Skill skill)
        {

            if (this.usedThisTurn)
                return;




            this.usedThisTurn = true;

        }

        public void TurnEnd()
        {
            // ターン終了時にリセット
            this.usedThisTurn = false;
        }
    }
}  
 

 

ステータスバフ・デバフ


バフの書き方

    public override void BuffStat()
    {
        this.PlusStat.(変数)= 数値f;
        this.StackNum;
    }
}
PlusStat.atk // 攻撃力増加
PlusStat.hit // 命中率増加
PlusPerStat.Heal // 治癒力増加
PlusStat.cri // クリティカル率増減
PlusStat.dod // 回避率増減
PlusStat.def // 防御力増加
PlusPerStat.MaxHP // 最大体力増加
PlusStat.HEALTaken // 被回復量増加
PlusStat.PlusCriDmg // クリティカルダメージ増加
PlusStat.PlusCriHeal // クリティカル回復増加
PlusStat.HIT_CC // 妨害成功率増加
PlusStat.RES_DOT // 苦痛レジスト増減
PlusSkillStat.Penetration // 防御無視
PlusStat.crihit // 被クリティカル率増減
PlusPerStat.Damage // 攻撃力(永続)
PlusPerStat.Heal // 治癒力(永続)
PlusPerStat.MaxHP // HP(永続)

【遅刻を超えた大遅刻】美少女争奪戦に仕込んだ"計画"

こんにちは、こんばんは、ずっとサヨウナラ。錦ファイです。

今回なんかいろいろな経緯があって美少女争奪戦という大会に参加させていただくことになりました。しかも運営として。ロロロ(歓喜
しかし普通の方々はいったいなんでこんな若造が急に運営になって、あまつさえ司会という仕切る立場にいるんだとお思いでしょう。

なぜ私がここにいるのか、運営参加してみてどうだったかについて


3年後の君へ

初参加は第三回美少女争奪戦になります。当時はひろっち水無月の二人を連れて参戦するも普通に敗北。

当時の私はそれがあんまりにも悔しかったので怪文書選手権というパクリ大会を主催することにしました。
100人弱が所属する身内鯖をなんか持っていたのでそこで数回このイベントを開催。
練習の成果もあり第四回ではポエマー部門で優勝しました。ロロロ(歓喜

優勝は達成したものの、なんとなく身内からも人気だったのでイベント事態は続けていたらこれがなんとびっくりねがやまさんの目にも届いていたようで...

普通に著作権侵害で訴えられたらどうしよう。ファイットペアに改名してモンスターが銃を撃つゲームをアーリーアクセスとして出す余生を過ごすしかないのか?と落胆しながら落単していたところ、美少女争奪戦の運営に勧誘されてメンバーとなることになりました。

つまるところ「二次創作作ってたら、なんか公式になっちゃった~」のアレです。公式逆輸入ってやつ。


3月

ひろっちと一緒に初の顔合わせに参戦しました。

なんやかんや全員サマータイムオフでお会いしていたので全く緊張はしなかったです。明らかに緊張してるひろっちがおもろかった。

ちなみに優勝者のレビューをねがやまさんにサプライズで読んでもらう計画はこの初回会議で私が発案したものです。

多分ウケるだろうなと思って発案したものが実際披露した時ウケがいいとめちゃくちゃ気持ちいいです。

 

4月

確か備考欄の話と、ブログに乗せるレギュレーションの選定がメインでした。
バニーガーデンはセーフ、学マスはダメとかそういう話です。

私は崩壊:スターレイルのオタクなのでなんとかスターレイルを「主人公と明確な恋愛描写のあるゲーム」として認めてもらえないかと必死に策を巡らせていましたがダメでした。

#83マダム・ヘルタと#81ルアン・メェイの間には明確な恋愛描写があり、3.0から始まったオンパロス編の主人公が誰がどう見ても確実にマダム・ヘルタであったこと。

3.4のシナリオにおいてヒアンシーが主人公と結婚できる器を持つ少女であったこと。

これらを考慮すると今なら確実に「主人公と明確な恋愛描写のあるゲーム」として認めてもらうことができるのですが、当時はまだシナリオがそこまで進んでいませんでした。残念。

 

5月

ここら辺になると通話にこなれ感が出てきて会議前のおしゃべりタイムが楽しくなってきます。

個人的に好きだった話題
・ちいかわの草むしり検定落選を必死に願うバラさん

・女性声優の彼氏バレの話題のときすごく悲しそうに「この話やめませんか?」と呟くバラさん

・ちいかわのことを「ちいちゃん」と呼んでいる女性に対して「ちいかわをわかっていない」と主張するバラさん

・会議終了後なんかすごい長いタイトルのアニメを通話つけっぱで見始めるバラさん

仕事としてはサーバーを作ったりしていました、
実は少しだけサーバー運営の能力があるので本人確認を自動化するシステムを作ろうとしていましたがDiscordの利用規約にこれでもかというほど触れないと無理なうえに普通に本人確認するよりめんどくさいものになってしまったのでそっと墓地に送りました。効果無効でお願いします。


6月

告知画像をねがやまさんに何回かリテイクをもらいながら作りました。
普段鯖主として活動しているとリテイクを食らう機会がない(GOサインを出すのも自分であるため)ので結構新鮮で楽しかったです。

次にサンプルレビューを書いて、画像を作りました。

サンプルの選定先はあえてひろっちと揃えて、「同一キャラでもどの部門での勝ちを狙うのかによってこんなに違う文章にできるんだよ」ということをアピールしてみました。

文章も個人的にはかなり良くできたと思っています。
アリアンナが大好きである前に実は私はそこそこの宝石オタクなのでアリアンナについては前からもうずっともう書きたくて書きたくて!!!!!!!!!
ダイヤモンドが人々の希望の象徴でありながら、歴代で最も人を殺している鉱石であること。

ダイヤモンドもアリアンナも脆く不安定で、大切にしまっておかなければ壊れてしまうこと。

でも少女を閉じ込めることは果たして恋なのか?これもダイヤモンドの呪いなのか?自分の意志なのか?石の魔力なのか?

閉じ込めるほどの愛情は、恋は呪いなのか?
という命題を文章化して、恋だろうが呪いだろうが「ダイヤモンドが好きである」ことはどちらでも変わらないという着地点にもっていく展開をまとまりがよく作れたので気に入っています。

ただファイ鯖の身内からの評判は中の下くらいでした。なんなら小賢しいって言われた。残念。



そしてここまで自分を宝石オタクだとか崩壊スターレイルのオタクだとか言いましたが、実はこれらを遥かに超える熱量を注いでいたコンテンツがあります。

それがShadowverse: Worlds Beyondです。6/17日リリース。

本当にシャドバが大好きなのでこのころは本当にシャドバのことしか考えておらず、仕事のパフォーマンスが地獄になるばかりかしょじょせんラジオでも通話会議でもシャドバの話を繰り返す化け物と化していました。ごめんて

ただ幸いこのころのメインタスクがクイズ大会のクイズ作成であったため私の仕事が少なかったこと(月に寄り添う乙女の作法を所持していないのとひろっちにある程度お任せしていた)、そしてなんとびっくり本当にうれしいことに争奪戦メンバーのバラさん以外の方がシャドバをプレイしてくださっていたので私が完全に怪異に落ちることは避けられました。よかった。

通話会議中に水のサレファのモノマネしてたほたてがいさんと、通話の他全員がシャドバで遊び始める中一人でアニメを見始めたバラさんが未だに忘れられません。



7月

イカれた月です。

私の仕事は画像作成ちと司会、サーバー管理なのでメイン業務は七月に、そして7月15日のレビュー締め切り後に集中しています。
もちろんそこから早急に画像を仕上げなければひろっちやビアンカさんの練習に支障が出ますが、練習自体は画像なしでもできるので締め切り自体はかなり余裕をもってスケジューリングされています。お優しい。

ですが。ですが!!!

この!よりにもよって!一番忙しいタイミングで!


新カードパック「インフィニティ・エボルヴ」2025年7月17日リリース
あああああああああああああああああああああああ
(大好きなゲームの新カードパックへの歓喜の声)
ああああああああああああああああああああああああああああああああああ(予定丸被り)(絶望)
私は本当にシャドバが大好きなので前日からYouTube旋回してデッキ予想見まくるし、デッキポータルで全部のデッキ一回組んでみるし、当日は普通に徹夜でデッキ組んでひたすらランクマッチ回すし、とにかく新カードパックが出た瞬間寝不足と心ここにあらずのダブルパンチでフォーマンスがとんでもなく落ちます。
そうです。私には事実上締め切りがなんと二日しかありません。
そしてここで作らねばならぬ画像枚数はかなり多く、レビュー全25個に加えてグラフ作成やサムネイル、要項などを加えると35枚を超えます。
私はお世辞にも作業が早い方ではないので、そんなこと

できらぁ!!!!!!!!!!!!!!!
なんか自分でも意味わかんないんですけど、頑張ったらできました。キツかったです。


追記 私が司会なので誰か錦あすみで送ってくれるかなーとか思っていたのですが誰も持ち込まなかったです!!

錦あすみのスライド作りたかったなあ~~~~~~~~~~~~~~でも変に凝って無駄に時間かかってた気もします。

追記2 このとき画像ファイル名を「ビヨンド 新弾.png」で送ってきたみののん。絶対に怒らないんですけど、怒らないので明日警察に出頭してください。詐欺罪と器物損壊罪と第二のキラ容疑がかけられています。


そしてこの日に第二回錦ファイオフの計画が始動します。

主催は私なので、当然このタイミングで企画を発案したのも私です。

前からオフをやることが決まっていたとかではなく本当に偶然たまたま最近遊んだ本格ロシアンルーレットゲームをオフでやりたい!という悪魔的発想に襲われ完全に無から勢いとノリ、そして雰囲気で始まったオフ企画です。

開場探したり終わったと思った画像作成が再び襲来したり、明らかに争奪戦が迫るこのタイミングでやるべきではない作業が僕を襲います。

でもさあ...

やりたかったんだ...どうしても...この思い付きを...思い付きの勢いのまま...。

振り返ると普通にバカです。もっと前から企画出せよ

 

当日

・第一の試練

クレカ、紛失ーーー
マジで特に理由とかなくクレカを無くしました。本来気持ちを落ち着けたり練習をするべきタイミングでJCBに泣きつきシコシコとメールを送る羽目に。
ツイートでは落ち着いてきたとか言うてますが全く心中穏やかじゃなかったです。クレカなくしたの人生で初めてなので。

で?そのくらいどうにかして。

肝心の本番の話をすると、まずほぼ緊張しなかったです。

自分が鯖主であったこと、イベントに出演し人前で話す経験が学生時代数回あったこと。自身のラジオを定期的に垂れ流していたこと。今や黒歴史ですがYouTuberごっこをした経験があったこと。
なにより数か月に渡っての通話会議でバラさんのちいかわ検定失敗祈りをイジったり、ほたてがいさんとシャドバの話しまくったり、仲良くなっていたことが大きかったです。

鯖主という生き物は身内で何かをする時には最強なので。


それに加えて

ひろっちと水無月が裏でアドバイスをくれました。
これが本当にありがたかったです。私は司会であるがゆえに司会の視点しか持てませんが、裏でひろっちが解説の視点を、水無月が参加者の視点をそれぞれ供給してくれたので盤面の管理がしやすくなり、自分を俯瞰することも簡単になりました。

持つべきものはやはり親友です。本当にありがとう...。

 

あとめろさんが神でした。

めろさんの話がシンプルに面白すぎて普通に素で楽しい。そしてその面白いと思った部分をそのまま言語化して出力すればいいだけなのでマジで楽でした。

普通に自分がめろさんとのトークを楽しんでおり、今の自分の話の振り方司会としてはどうなんだ?と思う場面が数回ありましたが、途中で「自分の考える完璧な司会に徹するより、錦ファイの自我を残してでもこの面白さを視聴者に叩きつける方が合理的」と思考を変更しました。

結果的にバラさんの「負け」をアドリブでイジったりほたてさんの桜の詩オタク語りの場面であえて(司会としては絶対ダメなのに)黙って構えるなど立ち回りの自由度とアドリブ力が上がりより良いものにできたと思います。
余談ですが、めろさんに配信終了後にいっぱい褒めていただけました。ガチで嬉しかったです。

 

 

最終盤のサプライズねがやまさんのシーンは自分で断言します。最高です。

この展開は上記の通り最初の会議に私が持ち込んだものです。

まず、自分が司会としてねがやまさんに勝っている部分はありません。

私は美少女ゲームに明るい方ではなく、プレイ本数は10本もありません。

身内以外を対象に司会をやったこともありません。
そんな私が司会をやることに明確な意味を持たせるにはどうするか?を考え、その結果出たのがこの演出です。

ねがやまさんにはねがやまさんをオチに構えることはできませんからね。

この演出はかつねがやまさんが司会をやらない回の初回にしかできません。
ミスろうがミスるまいがタネは割れてしまうので、この一回だけのサプライズです。

私が司会をやった最大の利点は、これであり、きちんとウケました。

勝った。



 

最後に

この最高に楽しい企画に呼んでいただき、本当に感謝しています。
来年はないとのことですが、再来年開催されるとき、もしも私の席があったなら再びお会いしましょう。

対戦ありがとうございました!





おまけ

今の今まで秘密にしていたことがあります。
争奪戦のスライドを思い返してみてください。
とある「仕込み」がされています。

・背景

ジュエリー・ハーツ・アカデミアのアリアンナのとあるスチルの背景(諸事情により画像は割愛します。)


・投稿者名やキャラクター名に使われているピンク色

ヒアンシーの髪(180連で大爆死したためやけくそで起用)



・各スライドのタイトルに使われている青色

錦あすみの髪のやや暗い部分


・レビュー審査方法の「エッッ性賞の候補者四名」の四角の色


錦あすみの虹彩(の二番目に明るいところ



(画像編集画面)

・全てのスライドの背景のさらに裏

マダム・ヘルタ(崩壊スターレイル)

わかりましたか?
全く違和感がないデザインにできたと思います。

四月、崩壊スターレイルがルール上美少女争奪戦に入れなくても。

今回テーマエロゲやレビューに錦あすみもアリアンナもいなくても。

私が運営になったことで、こうして勝手に彼女たちの要素を刻むことができました。

こういった形で自我を残せるのも運営参加の楽しみだと思います。

美少女争奪戦のみならず全てのイベント運営は楽しいものです。ぜひ、興味を持った方がいれば一歩足を踏み出してみてください。

私もやったんだからさ?

 

ちなみに、この仕込みは今この瞬間まで運営の方含め誰にも指摘されていません。

故に、この記事をこの一言で締めさせていただきます。

 

 

 

 

 

 

 

 

 

計画通り

 

ー完ー

錦ファイオフ決算報告

お疲れ様です。 

コロナでひっくり返ってたので決算報告が遅くなりました。

 

収入

項目 単価 人数 金額
参加費 500円 16名 8,000円

収入合計:8,000円


支出

項目 内容 金額
会場費 川口市立映像・情報メディアセンター メディアセブン
土日祝日(9:30~18:30)
8,370円
備品 ベル玩菓 コルクガン(約65cm) 1,100円

支出合計:9,470円


差引

収入 8,000円 – 支出 9,470円 = -1,470円

 

来年もお会いしましょう。
感想記事は来週くらいに出ます。

第2回 錦ファイオフ要項

序文

去年、第一回錦ファイオフを開催した。

前回を失敗とは言わないが、収容人数30人と言われた部屋は20人入るのすら厳しいレベルの狭さだったし、異様な挙動をするクソみたいな台風はいたし、メインの一角にするつもりだったShadowverseは延期で死に体に。
楽しかったが、納得のいく出来ではなかった。
なら、今年こそ。
リベンジしよう!この企画に!
錦ファイオフBEYOND
(非公式名称)ここに開幕!

イラスト せなさん(@seroppu_222)



目次

 

主催

錦ファイ


・X(旧Twitter)アカウント
@Phi_asumi

・担当
全体進行
怪文書選手権 司会
デスゲーム 司会兼敵
その他すべて

運営

ひろっち

・X(旧Twitter)アカウント
 @ecologic82

・担当
全体進行
怪文書選手権 読み上げ

水無月

・X(旧Twitter)アカウント
@minaduki6sug

・担当
怪文書選手権 解説

白藜

・X(旧Twitter)アカウント
@s1roza

・担当
怪文書選手権 解説

AS252


・X(旧Twitter)アカウント

@AS252minononn

・担当
遊戯王の部全般

nel

・X(旧Twitter)アカウント

@nel10008

・担当

ポケットモンスタースカーレット・バイオレット闇鍋レンタル大会の部全般



大会概要

大会内容

①第二回遊戯王OCGファイ鯖最強決定戦

ポケットモンスタースカーレット・バイオレット闇鍋レンタル大会
③錦ファイを撃ち抜け!リアルBuckshot Roulette
④第二回怪文書選手権公開収録

サブイベント
プロジェクター解放!対戦ゲーム自由プレイOK!
プロジェクターに接続できるなら大乱闘スマッシュブラザーズマリオカートshadowverse worlds beyond等なんでも超大画面でプレイ可能!

会場の誰かを誘って戦おう!
ここだけの話、DSマリオもOKです。

利用方法
プロジェクターが開いている時に限り、運営に申請することでプロジェクターを使用することができます。
(申請が複数あった場合、交代制になります)

日程

2025/8/10(日) 10:00~18:00

定員

114

場所

川口市立映像・情報メディアセンターメディアセブン
プレゼンテーションスタジオ
住所 埼玉県川口市川口1-1-1キュポ・ラ7階
電話 048-227-7622
JR京浜東北線川口駅」東口より徒歩1分

東京駅から:JR京浜東北線にて約25分

新宿駅から:JR埼京線にて赤羽駅下車、赤羽駅よりJR京浜東北線にて約20分

大宮駅から:JR京浜東北線にて約20分


前回の「会場が狭い」「通路がなくて苦しい」「会場だけがクソ」というコメントにお応えして施設が面積:183.4m2定員:114名に大幅アップグレード!
前回会場のなんと4.58倍!!!



参加費用

(参加時間・項目にかかわらず)一人500円 

 

参加申請期限

本記事要項公開時点 ~ 令和7年8月3日(日)23:59

また、キャンセル申請期間も令和7年8月3日(日)23:59までとさせていただきます。

※キャンセルの際は錦ファイ(@Phi_asumi)のDM、もしくはDiscord大会サーバー内キャンセル申請チャンネルまでご連絡ください。

スケジュール

9:45~             開場
10:00~13:00  第二回ポケモンSVファイ鯖最強決定戦
10:00~13:00  第二回遊戯王OCGファイ鯖最強決定戦
13:00~14:00  昼休み
14:00~15:30  錦ファイを撃ち抜け!リアルBuckshot Roulette
15:30~17:30  第二回怪文書選手権公開収録
17:30~18:00  撤収準備、開会挨拶

 

大会内容詳細

①第二回遊戯王OCGファイ鯖最強決定戦

遊戯王OCG マスタールール(2025年4月1日改訂版)に1部準拠して開催します。 変更点は下記画像参照。
スイスドローを用いての進行を行います。
1デュエルあたりの試合時間は25分となります。
サイドデッキの使用、及び大会進行中のデッキ内容の変更はできません。
また、プロキシ(カラープリントのみ)と海外版のイラストの使用が可能です。
【ルールについて】  
 ・本オフは遊戯王の非公認大会であり、KONAMI主催の公認大会ではありません。
 ・本オフに関する裁定に関しては、運営が下した判断に参加者は従って下さい。
 ・ルール質問などの回答は 公式Q&A、事務局回答に則りお答えします。もしそれらに記載がない、調整中などの場合運営スタッフの判断で解答させて頂きます。
 ・ルール質問により発生した時間のロスタイムは原則認められません。一部例外も御座います。  
・原則として、KONAMIが規定している大会規定に従い、本オフを運営します。本ページに記載していない事項について、KONAMIの規定に従い判断します。
 ・本オフでは、本オフ開催の当日までに日本国内で発売、配布された「遊戯王OCG」のカードが対象となります。  
・ 日本国内で同イベントの前日までに発売・配布されている遊戯王OCGカードの他言語版とプロキシ(カラーコピーに限る)を使用することも可能です。ただし、他言語版、プロキシのカードを用いる場合は、相手に正確なテキストを伝える必要があります。 説明用に日本語版カード等を用意する必要はございませんが、不正確なテキスト説明を行った場合、警告ないしは罰則を適用いたします。
 ・他言語版のカードテキストを携帯電話等電子媒体で「遊戯王OCGカードデータベース」もしくは「遊戯王ニューロン」にて日本語版テキストを調べることも認めます。この場合、相手プレイヤーにも電子媒体の画面が確認できる形で使用してください。 ただし、不必要に時間(目安として1デュエルにつき1分程度)をかけること等の遅延行為に関しては罰則を適用する可能性があります。

錦ファイオフにて無制限となるカード


ポケットモンスタースカーレット・バイオレット闇鍋レンタル大会

10:00より実施するポケモン大会。
定員:
20名

《大会形式》
Tonamelを用いた最大5回戦のスイスドロー

 

 

《大会ルール》

  • SVシングル(レギュレーションFのプールを使用)
  • 運営の用意したレンタルパーティを使用する
  • 使用するレンタルのコードは入場時にくじ引きで提供
  • 実数値などのパーティの詳細はくじに記載されたQRコードから確認
  • 勝敗はゲーム判定準拠
  • 予選、及び本戦トーナメントは全て1本先取
  • チェックイン(8/10(土)09:00~10:00)に応じなかった場合失格とする。
  • 終戦のみ配信

《回線切れの対応》

状況に応じて運営が対応致します。証拠画像をご用意、提示をお願いします。

case1.勝敗がゲーム画面に表示された後に回線切れ

→ゲーム判定勝者を勝者とします。

 

case2.勝敗が明らかでない場合

→原則として回線が切られた側を勝者、切れた側を敗者とします(片方のみ証拠画像が用意できなかった場合、用意できなかった側に不利な判定を降す場合がございますのでご注意ください)。

 

case3.両者証拠画像が確認できない場合

→できる限り状況を再現して頂き再戦となります。回線が切れるまでの再現(同じ選出、同じ技の選択等)を行い、その続きから試合を続行してください。再現が不可能な不確定要素(急所、追加効果など)が発生した場合はそのまま対戦を進めてください。

《携帯端末・その他電子機器・筆記用具の取り扱い及び相手パーティ情報の取り扱いについての諸注意》

  • 対戦中にインターネット上で情報を収集することを禁止いたします。スマートフォン等でパーティのレンタルコードを表示して入力する際は必ず相手に伝えてください。
  • ダメージ計算機、アプリの使用は可能としますがスマートフォンのダメージ計算機やアプリ、電卓等を使用する場合、その旨を対戦相手に伝えたうえで使用してください。
  • 対戦中メモ、ノート等を使用する場合、その旨を対戦相手に伝えた上で使用してください。
  • 対戦中に他の参加者からアドバイスを得る、また他の方の対戦中に助言をすることを禁止いたします。



③錦ファイを撃ち生き残れ!リアルBuckshot Roulette

ロシアンルーレットが楽しめるPCゲーム「Buckshot Roulette」を用いた四人対戦を行います。(対戦メンバーに必ず錦ファイを含みます)
法的に問題のないモデルガンが用意されているため、リアル錦ファイやリアル鯖民に銃口を向けるエキサイティング体験が可能です!(弾は出ません)
鯖主を撃ち〇し、ついでに自分以外の参加者も血祭りにして狂気のデスゲームから生き残りましょう!
事前に参加申請を行い、予め決められたテーブルに沿ってお呼び出しして集まっていただく形での開催になります。
時間が余ったら挙手制での追加ステージを行います。

④第二回怪文書選手権公開収録

事前にgoogleフォームでの自分の好きなキャラクターへのレビューを提出し、当日会場内運営陣がレビューを読みあげるイベントとなります。

全ての投稿を読み上げたのち、discordにて参加者全員による投票を行い、最優秀賞を決定します。

レギュレーション

・投稿できるキャラクターは一人一キャラクターまでとなります。

・架空のキャラクターのみを選考対象とします。
現実世界に存在する生命体、無機物、機構、概念への文章は認められません。(過去にあったNG例:競走馬、車、政治家)

・例外的に配信者(vtuberを含む)はそれらが持つキャラクター性を重視し、「キャラクター」の定義を満たすものとして扱います。

・キャラクター及びそのキャラクターが類するコンテンツの年齢制限等への制限はありません。

・文章は200文字以内かつ、文章の7割以上が日本語で構成されているもののみが選定対象となります。

(過去にあったNG例:漢詩

・画像を一枚付随してお送りください。
画像はそのキャラクターの権利を持つ団体が配布している画像、またはゲーム内で撮影可能なスクリーンショットや一枚絵のみが対象となります。
二次創作イラストはたとえ自分の作品だとしても選定の公平性を害するとし、禁止させていただきます。

締め切り:8/3

サンプルレビュー

前回優勝者のレビューはこちら!

二次会について

居酒屋等のコースを予約しての打ち上げを計画しています。
参加申請につきましては公式Discordサーバーにてご連絡させていただきます。
(店舗も人数に応じて運営にて検討し、事前に公式Discordサーバーにてご連絡させていただきます。

三次会について

今年も徹夜カラオケを企画したいと思っています。(人数次第)
参加申請につきましては公式Discordサーバーにてご連絡させていただきます。

参加申請書

こちらのフォームから申請してください

docs.google.com


また、ファイ鯖に参加されていない方はファイ鯖への参加をよろしくお願いいたします。

discord.gg

申請状況はこちらから確認できます

docs.google.com


以下は
任天堂ガイドラインに則り記載致します。
・この大会は、任天堂の協賛・提携を受けたものではありません。
・コミュニティ大会への出場および観戦に関する規約→https://www.nintendo.co.jp/tournament_guideline/rules.html

当イベントにつきまして、発生した金銭・個人トラブル等におきまして運営は一切の責任を負いません。

デルタルーン 考察

巨人

巨人はニンゲンであると考える。

以下理由
・シルエットが人間の頭蓋骨に見える
ニンゲンの頭蓋骨が見える→輪郭がぼやける→羽が生えてタイタンになる
これはラルセイが序盤に言っていた「闇が濃くなると物の正体がよくわからなくなる」「突き抜けるとひとはまたそこにいろいろなものを見るようになる」の経緯そのものである

つまり最初に見えた人間の頭が正体


・タイタンスポナーが胎児のようなビジュアルをしている

・回復を行う

undertale、deltarune共に回復するボスは(記憶の中では)セーブをロードするという特殊な方法を使ったオメガフラウィーしか存在しない。
戦闘中の回復はコマンドを持つニンゲンの特権であるように見える。フラウィーは特殊。

→タイタンはケツイの力で回復している人間?顔面がセーブの星だし。



咆哮の騎士

騎士の正体というものはそれほど重要ではないと考えている。

騎士の本質は騎士の持っているナイフ(ブラックシャード)であり、ナイフが騎士を生み出すと予想しているからだ。

書き方的にナイフが騎士を産んでない?

が、この考察普通に穴が多い。
この文章の前部分が開示されてないだけ(あるいは私が忘れているだけ)で存在し、普通に「タイタンを」とかつけるだけで崩壊してしまう。
ただ、騎士はライトナーである可能性が高いので、いずれにせよ中身は存在する。

アズゴア

rootsを見るに問題の本質はドリーマー家とホリデー家にある。
アズゴアが特に怪しい。

DeltaruneとUndertaleではキャラの性格が大きく違うという話がある。
Undertaleではおそらく地下という共通の問題と人間という共通の敵を抱える以上、モンスターは結束せねばならず仲間意識も強い。
また、Deltaruneにおいてクリスはライトワールドのキャラクターのことをたぶん好きではない。仲よくなれば歓迎ムードの地下と違い、本質的に仲間でもなく共通敵もいない、多分全員からうっすら嫌われてるクリスから見る世界は醜いのだろう。

トリエルとサンズの性格の変化ばかり取り上げられがちだが、サンズはセーブとロードを知らなそうなのですべてに覇気がないあのころと性格が違うのは当たり前に感じる。僕らが本当のサンズを知らないだけ。

トリエルに関しては元からああいうムーブをするだろ。
Undertaleのころから「かわいそう」という感情に甘え、人間一掃という命令の重圧を一心に背負う心優しい王を投げ捨て地上脱出の希望たりうる敵種族を保護()する様はモンスターからすれば忌まわしいとしか言いようがない。
希望を掴んでもアズゴアに文句言ってるし。これはアズゴアが心を痛めて6人殺してたから得られた希望なんだぞ。思想がヴィーガンみたいにぺらっぺら。そんなんだから女帝になってもすぐ没落するんだ。

アズゴアだけが性格変わりすぎだ。性格があまりも道化になりすぎている。
4でアズゴアがブラックシャードを覗いているシーンがあるから当然何かあると思うが、乗っ取られたりはしないと思う

ガーソンが乗っ取られないならアズゴアも乗っ取られないでしょ。ふざけて見えるけどアンダーテールの頃から精神力はあったし、本気を出して戦えるシーンがなかっただけで、全てを知って全力を出せば多分サンズやガーソンより強い。

みんなわかってくれると言ってたし、アズゴアは自分の意志で何かを企んでそ。


予言

気になるのはこれ。
娘は愛の真の意味を知る。このシーンのスージィには以下の変な点がある。
・剣を持っている
・体内にタマシイが描かれている
タイタン討伐後の発言を見るに、スージィはタマシイの存在を知らない。他に言及するライトナーもいないので、ライトナーはタマシイを持たないorそれを感知していないと考えられる。


これらから、予言の顛末を
「スージィがクリスを殺害し、クリスの中のタマシイ(と、剣)を回収して戦う」という胸のものだと予想する。

まず、予言を見るに、予言の人間というのはクリスではなくクリスの中にいるタマシイである。現に、予言の絵にはタマシイしか描かれておらず、闇の泉の封印もタイタンの討伐もタマシイが行っている。クリスは何もしていない。

次に、アンダーテール逆走説を参考に考えると、城、コア、ホットランド、ウォーターフェル、スノーディン、ホームとなる。一個足らない。

だが、アンダーテールはcharaが穴に落ちたところから始まる。charaの物語でもあるからだ。
そう考えると、charaにとってhomeをさらに逆走すると「地上」に出るはずだ。
アズリエルは地上に、charaの魂を取り込んで進出した。
スージィがクリスの中のタマシイを回収して最終戦に乗り込むのは、逆走説とも一致している。

また、UndertaleやDeltaruneにおいてタマシイの注入や、その実験は常に大きな意味を持つ。フラウィー誕生、アマルガム生誕。Deltarune序盤のゴーナーメーカーもタマシイの注入実験である。
また、Undertaleの報告書17番、ガスターが書いたやつ
「くらく くらく さらにくらく、やみは のうどを ましてゆく。かげは しだいに ふかくしみいる」は闇の泉のことを指しているように見える。
闇の泉の作り方である「決意を呪いとして、刃に込めて注ぐ」というのはケツイの注入実験の副産物なのでは?

最後に、これなら「娘は愛の真の意味を知る」も意味が通る文章になる。
Deltaruneでは現状だれも完全に殺害することができないが、Lvは今回現実を再現したかのようなゲームという形で登場した。
つまり、DeltaruneにもLv(Level Of ViolencE)の概念はあると考えている。

娘はLOVEの真の意味を知る、それはスージィがクリスを殺し、そこで上がったレベルとLOVEの真相を知るということではないだろうか。