最終更新日 2024-09-25

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

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

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

引数の補足

タイミング

一般的用途

例①

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;
}