OR条件::戦争::雨鉄砲可否

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
  if ( 条件名 == "OR条件::戦争::雨鉄砲可否" ) {
  }

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

引数の補足

  • パラメタ.整数1:

    これから鉄砲を撃とうとしている武将の武将番号

タイミング

  • このカスタム条件は、「雨鉄砲」を撃てるかどうかの判定時に呼び出される。

    PICTURE

一般的用途

  • TSModの雨鉄砲の条件とは別に、雨鉄砲を撃つことが出来るオリジナルな条件を追加する。
    この条件は「OR条件」であるため、TSModの条件でも雨鉄砲は撃てるし、ここに記載するプログラム条件でも雨鉄砲は撃てる。

例①

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

  if ( 条件名=="OR条件::戦争::雨鉄砲可否" ) {

    // "OR条件::戦争::雨鉄砲可否" の際は、「パラメタ.整数1」に、
    // 今鉄砲を撃とうとする、武将番号が入る。
    int iBushouID = パラメタ.整数1 - 1;

    // 通常の武将以外鉄砲撃てないはずであるが、一応配列にアクセスするので、安全を保っておく
    if ( 0 <= iBushouID && iBushouID < 最大数::武将情報::配列数 ) {
      if ( Get_鉄砲適性(iBushouID) == 鉄砲適性::S ) {
        // この条件を満たす者もまた、雨鉄砲を打てるとみなす。
        return true;
      }
    }
  }


  // それ以外は条件を変えない。
  return -1;
}

例②

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

  /*
  * 鉄砲を打とうとしている武将ユニットが、
  * 野戦に限定で、戦闘マップのヘックスチップ「道」の上にいて、
  * しかも、その武将が、鉄砲適性A以上ならば、その瞬間は、雨鉄砲が撃てる。
  */

  if ( 条件名=="OR条件::戦争::雨鉄砲可否" ) {
    int iBushouID = パラメタ.整数1 - 1; // 鉄砲を打とうとする武将ID

    // 通常の武将以外鉄砲撃てないはずであるが、一応配列にアクセスするので、安全を保っておく
    if ( 0 <= iBushouID && iBushouID < 最大数::武将情報::配列数 ) {

      // 野戦の時、
      if ( Is_野戦中() ) {

        // 今鉄砲を撃とうとしている武将はHEXマップのどこにいるの?
        ヘックス位置型 pos = Get_武将の野戦ヘックス位置(iBushouID);

        // その位置の地形の役割は何?
        int chikei = Get_野戦ヘックス役割(pos);

        // その地形は「道」だ!!
        if ( chikei == 野戦ヘックス役割::道 ) {

          // 武将の適性がA以上
          if ( Get_鉄砲適性(iBushouID) >= 鉄砲適性::A ) {
            return true;
          }
        }
      }
    }
  }

  // それ以外は条件を変えない。
  return -1;
}