AS条件::メイン::大名後継者武将番号

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
  if ( 条件名 == "AS条件::メイン::大名後継者武将番号" ) {
  }

  // 変更しない場合-1
  return -1;
}

引数の補足

  • パラメタ.整数1:

    大名番号。大名が死亡した際の後継者決定のアルゴリズムが呼び出される際は、常に「大名番号」が最重要パラメータとして渡ってくる。
  • パラメタ.整数2:

    死亡した大名の武将番号。
  • パラメタ.整数3:

    後継者予定の武将番号。
    このカスタムメソッド内で特に変更等しなければ、該当の武将番号の武将が後継者として大名を引き継ぐということとなる。
    なお、引き継ぎ得る武将が1人も居ない場合には、そもそも「AS条件::大名後継者武将番号」自体呼び出されない。
  • 返し値

    後継者とする武将番号。-1を返した場合には、元々の天翔記のアルゴリズムに従うということ。

タイミング

  • このカスタム条件は、大名が死亡した際に後継者を決定するアルゴリズムが呼び出される度に実行される。
  • 後継者が居ない場合(大名1人だけの勢力だった場合)には、後継者の決めようが無いので、呼び出されない。

    PICTURE

一般的用途

  • 特定の大名の際の後継者を、何らかの理由で(あるいは歴史に即して)変更したい場合に利用する。
  • 天翔記における後継者決定アルゴリズムを全体的に変更したい場合。

例①

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {

  if ( 条件名 == "AS条件::メイン::大名後継者武将番号" ) {

    int 大名勢力DaimyoID = パラメタ.整数1-1;
    int 死亡BushouID = パラメタ.整数2-1;
    int 後継BushouID = パラメタ.整数3-1;
    デバッグ出力 << "死亡武将(大名):" << Get_名字(死亡BushouID) << Get_名前(死亡BushouID) << endl;
    デバッグ出力 << "後継予定武将(大名):" << Get_名字(後継BushouID) << Get_名前(後継BushouID) << endl;
  }

  // 変更しない場合-1
  return -1;
}

例②

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {

    // 毛利元就が死んだ場合の第1後継者候補を、「小早川隆景」に変更する。
    // (小早川隆景が後継条件を持たさなかった場合には、元々の天翔記アルゴリズムに従う)

  if ( 条件名 == "AS条件::メイン::大名後継者武将番号" ) {

    int 大名勢力DaimyoID = パラメタ.整数1-1;
    int 死亡BushouID = パラメタ.整数2-1;
    int 後継BushouID = パラメタ.整数3-1;

    if ( 0 <= 死亡BushouID && 死亡BushouID < 最大数::武将情報::配列数 ) {

      // 死亡した大名がプレイヤ担当以外の場合のみ、処理を行う
      if ( ! Is_プレイヤ担当武将(死亡BushouID) ) {

        string 死亡武将名 = Get_名字(死亡BushouID) + Get_名前(死亡BushouID);

        // 死亡大名が「毛利元就」である。
        if ( 死亡武将名 == "毛利元就" ) {

          int 再変更BushouID = Get_武将番号【配列用】("小早川隆景");

          // そいつは今、天翔記に居るか?(=ちゃんと名前から武将番号を逆引きできたか?)
          if ( 0 <= 再変更BushouID && 再変更BushouID < 最大数::武将情報::配列数 ) {
            // 死亡した者と、再変更武将は、同じ大名勢力家の武将か?
            if ( p武将情報[死亡BushouID].所属大名【大名番号】 == p武将情報[再変更BushouID].所属大名【大名番号】 ) {
              return 再変更BushouID + 1; // 武将番号【配列用】→武将番号 にして(要するに+1して) 値を返す。
            }
          }
        }
      }
    }
  }

  // 変更しない場合-1
  return -1;
}

例③

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {

  if ( 条件名 == "AS条件::大名後継者武将番号" ) {

    int 大名勢力DaimyoID = パラメタ.整数1;
    int 死亡BushouID = パラメタ.整数2-1;
    int 後継BushouID = パラメタ.整数3-1;

    if ( 0 <= 死亡BushouID && 死亡BushouID < 最大数::武将情報::配列数 ) {

      // 死亡した大名がプレイヤ担当以外の場合のみ、処理を行う
      if ( ! Is_プレイヤ担当武将(死亡BushouID) ) {

        string 死亡武将名 = Get_名字(死亡BushouID) + Get_名前(死亡BushouID);

        // 死亡大名が「毛利元就」である。
        if ( 死亡武将名 == "毛利元就" ) {

          int 再変更BushouID = Get_武将番号【配列用】("小早川隆景");

          // そいつは今、天翔記に居るか?(=ちゃんと名前から武将番号を逆引きできたか?)
          if ( 0 <= 再変更BushouID && 再変更BushouID < 最大数::武将情報::配列数 ) {
            // 死亡した者と、再変更武将は、同じ大名勢力家の武将か?
            if ( p武将情報[死亡BushouID].所属大名【大名番号】 == p武将情報[再変更BushouID].所属大名【大名番号】 ) {
              return 再変更BushouID + 1; // 武将番号【配列用】→武将番号 にして(要するに+1して) 値を返す。
            }
          }

          // "小早川隆景は後継者になりえなかったので、ここまで来た

          再変更BushouID = Get_武将番号【配列用】("毛利隆元"); // 隆元はどうか?

          // そいつは今、天翔記に居るか?(=ちゃんと名前から武将番号を逆引きできたか?)
          if ( 0 <= 再変更BushouID && 再変更BushouID < 最大数::武将情報::配列数 ) {
            // 死亡した者と、再変更武将は、同じ大名勢力家の武将か?
            if ( p武将情報[死亡BushouID].所属大名【大名番号】 == p武将情報[再変更BushouID].所属大名【大名番号】 ) {
              return 再変更BushouID + 1; // 武将番号【配列用】→武将番号 にして(要するに+1して) 値を返す。
            }
          }

        }

        else if ( 死亡武将名 == "織田信長" ) {
          int 再変更BushouID = Get_武将番号【配列用】(顔番号::羽柴秀吉); // 顔番号5番の武将から「武将番号【配列用】」を逆引きする。顔番号5番は、「秀吉」の顔。

          // そいつは今、天翔記に居るか?(=ちゃんと顔番号から武将番号を逆引きできたか?)
          if ( 0 <= 再変更BushouID && 再変更BushouID < 最大数::武将情報::配列数 ) {
            // 死亡した者と、再変更武将は、同じ大名勢力家の武将か?
            if ( p武将情報[死亡BushouID].所属大名【大名番号】 == p武将情報[再変更BushouID].所属大名【大名番号】 ) {
              return 再変更BushouID + 1; // 武将番号【配列用】→武将番号 にして(要するに+1して) 値を返す。
            }
          }
        }
      }

    }
  }


  // 変更しない場合-1
  return -1;
}