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

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

  // 変更しない場合-1
  return -1;
}
  • 引数の補足

    • パラメタ.整数1:

      これから鉄砲を撃とうとしている武将の武将番号
  • タイミング

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

  • 一般的用途

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