最終更新日 2024-09-25

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

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