AS条件::軍師武将番号

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
  if ( 条件名 == "AS条件::軍師武将番号" ) {
  }

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

引数の補足

  • パラメタ.整数1:

    軍団番号。軍師は軍団に最大1人いることになるので、軍師決定のアルゴリズムが呼び出される際は、常に「軍団番号」が最重要パラメータとして渡ってくる。
  • パラメタ.整数2:

    現軍師武将番号。このカスタムメソッド内で特に変更等しなければ、該当の武将番号の武将が軍師ということとなる。0xFFFFの場合は、該当の軍団には軍師が居ないということ。
  • 返し値

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

タイミング

  • このカスタム条件は、軍師が決定されるアルゴリズムが呼び出される度に実行される。

    PICTURE

一般的用途

  • お気に入りの武将が大名の際、対となる副官的な武将が存在する場合は、そのような武将を常に軍師として定義する。
  • 天翔記における軍師は、「能力」だけで決まるが、ここに血縁・仕官年数・身分・官位などを加えて、軍師決定アルゴリズムを全体的に変更したい場合。

例①

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

  if ( 条件名 == "AS条件::軍師武将番号" ) {
    return 100; // 武将番号100番 (武将番号【配列用】が99番の人が、いつも軍師。どこの国所属でも無関係
  }

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

例②

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

    // 武田信玄が軍団長のところでは、その軍団に武田信繁が居るならば、その軍団の軍師は武田信繁となる。

  if ( 条件名 == "AS条件::軍師武将番号" ) {
    if ( パラメタ.整数2 == 0xFFFF ) {  // 現軍師武将番号 0xFFFFだと該当の軍団には軍師がいない。
    }

    int iGundanID = パラメタ.整数1 -1; // 指定の軍団番号【配】(指定の軍団場号)
    int iBushouID = パラメタ.整数2 -1; // 現軍師武将番号【配】(変化させなければ、その値となるということ)

    if ( 0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数 ) {
      // 軍団のリーダーを求める
      int iLeaderBushouID = p軍団情報[iGundanID].軍団長【武将番号】-1;

      // ちゃんとリーダーがいる。
      if ( 0 <= iLeaderBushouID && iLeaderBushouID < 最大数::武将情報::配列数 ) {
        // 現在要求されている軍団のリーダーは武田信玄
        if ( p武将戸籍情報[iLeaderBushouID].顔番号 == 顔番号::武田晴信 ) { // 顔番号19=武田信玄

          int iTargetID = Get_武将番号【配列用】(顔番号::武田信繁); // 武田信繁は居るか。
          if ( 0 <= iTargetID && iTargetID < 最大数::武将情報::配列数 ) {

            // この時、武田信玄と武田信繁が同じ軍団に所属してるか。
            if ( p武将情報[iLeaderBushouID].所属軍団【軍団番号】 == p武将情報[iTargetID].所属軍団【軍団番号】) {
              // 武田信繁が軍師として助言する
              return iTargetID+1; // 武将番号【配】列用番号→武将番号にした上で返す。
            }
          }
        }

      }
    }
  }

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