最終更新日 2024-06-21

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数)

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数) {
  return -1;
}

引数の補足

使用禁止関数

このイベントハンドラの中で「Get_武将最大兵数」の関数を直接・間接に関わらず呼び出してはならない。
なぜなら、「Get_武将最大兵数」の結果を完全に解決するためには、このイベントハンドラの計算結果が必要だからである。
呼び出した場合は、無限ループとなり、フリーズ、スタック不足などの症状を引き起こす。

タイミング

一般的用途

例①

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数) {

  // 身分など関係ない。野望の値がそのまま最大兵数だ
  int iBushouID = 武将番号 - 1;

  if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {
    return p武将情報[iBushouID].野望;
  }

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

例②

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数) {

  // 上杉謙信だけ身分にかかわらず100だ
  int iBushouID = 武将番号 - 1;

  if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {
    if (p武将戸籍情報[iBushouID].顔番号 == 顔番号::長尾景虎) {
      return 100;
    }
  }

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

例③

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数) {

    // その武将の(野望+魅力+基準値)÷3 を最大兵数と定義する
    int iBushouID = 武将番号 - 1;

    if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {
        return (p武将情報[iBushouID].野望 + p武将情報[iBushouID].魅力 + 基準最大兵数) / 3;
    }

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

例④

int カスタム::On_武将最大兵数要求時(int 武将番号, int 基準最大兵数, int 予定修正最大兵数) {

  // 軍師なら、TSMod.iniの設定に基づいて計算された結果よりも、10多くする。
  // 但しMAXは100
  int iBushouID = 武将番号 - 1;

  if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {
    int iGundanID = p武将情報[iBushouID].所属軍団【軍団番号】 - 1;

    if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
      if (iBushouID == Get_軍師武将番号【配列用】(iGundanID)) {
        int solmax = 予定修正最大兵数 + 10;

        if (solmax > 100) { solmax = 100; }
        return solmax;
      }
    }
  }

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