int カスタム::On_移動力残量変更時《戦争画面》(int 武将番号, int 現在移動力残量, int 予定移動力残量)

int カスタム::On_移動力残量変更時《戦争画面》(int 武将番号, int 現在移動力残量, int 予定移動力残量) {
    return -1;
}

引数の補足

  • 武将番号:

    移動量が変更となる武将番号
  • 現在移動力残量:

    現在の移動力残量
  • 予定移動力残量:

    特に変更しなければ、この値へと変更が予定されている予定移動力残量
  • 返り値:

    修正した移動力残量を返す。その値が変更後の移動力残量となる。
    変更しない場合(元々の予定移動力残量に従う場合)、-1を返す。

タイミング

戦争画面の各武将ユニットの移動力残量が変更するタイミングで呼び出される。

回復と消費

移動力には、

  • ターンの切り替わり目等による「回復」と、
  • 行動などによる「消費」がある。
「現在移動力残量」と「予定移動力残量」との値を比較することで「回復」なのか、「消費」なのかを判断する。

一般的用途

  • ターン変更時などの「移動力回復値」を適切に変更したい場合に利用する。
  • 行動後の「移動力消費値」を変更したい場合に利用する。

例①

int カスタム::On_移動力残量変更時《戦争画面》(int 武将番号, int 現在移動力残量, int 予定移動力残量) {

  int iBushouID = 武将番号 - 1;

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

    // 移動力が回復しようとしている時
    if (予定移動力残量 > 現在移動力残量) {
      デバッグ出力 << Get_名前(iBushouID) << "の回復" << endl;
      デバッグ出力 << "現在" << 現在移動力残量 << "," << "予定" << 予定移動力残量 << "," << endl;

      // みな、常に20回復する。相当びゅんびゅん移動する。
      return 20;
    }

    // 移動力が消費しようとしている時
    if (予定移動力残量 < 現在移動力残量) {
      デバッグ出力 << Get_名前(iBushouID) << "の消費" << endl;
      デバッグ出力 << "現在" << 現在移動力残量 << "," << "予定" << 予定移動力残量 << "," << endl;

    }

  }

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

例②

int カスタム::On_移動力残量変更時《戦争画面》(int 武将番号, int 現在移動力残量, int 予定移動力残量) {

  int iBushouID = 武将番号 - 1;

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

    // 大砲所持者は、野戦・攻城戦で移動回復が半分しか得られない
    // 又、攻城戦では、移動値が10以上にならない(=城壁を登ったり、水に侵入するのに必要な行動値に達することがない)

    // 移動力が回復しようとしている時
    if (予定移動力残量 > 現在移動力残量) {

      // 大砲所持者
      if (p武将情報[iBushouID].大砲) {

        int 差分 = 予定移動力残量 - 現在移動力残量;

        int 新移動力残量 = 現在移動力残量 + 差分 / 2; // 半分(切り捨て)しか回復しない

        if (Is_攻城戦中()) {
          // さらに制限をかける。壁や水を渡るだけの機動力に届かない
          if (予定移動力残量 >= 10) {
            新移動力残量 = 9;
          }
        }

        return 新移動力残量;

      }
    }
  }

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