AS条件::軍師武将番号

int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
  if ( 条件名 == "AS条件::軍師武将番号" ) {
  }

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

    • パラメタ.整数1:

      軍団番号。軍師は軍団に最大1人いることになるので、軍師決定のアルゴリズムが呼び出される際は、常に「軍団番号」が最重要パラメータとして渡ってくる。
    • パラメタ.整数2:

      現軍師武将番号。このカスタムメソッド内で特に変更等しなければ、該当の武将番号の武将が軍師ということとなる。0xFFFFの場合は、該当の軍団には軍師が居ないということ。
    • 返し値

      軍師とする武将番号。-1を返した場合には、元々の天翔記のアルゴリズムに従うということ。
  • タイミング

    • このカスタム条件は、軍師が決定されるアルゴリズムが呼び出される度に実行される。


  • 一般的用途

    • お気に入りの武将が大名の際、対となる副官的な武将が存在する場合は、そのような武将を常に軍師として定義する。
    • 天翔記における軍師は、「能力」だけで決まるが、ここに血縁・仕官年数・身分・官位などを加えて、軍師決定アルゴリズムを全体的に変更したい場合。
  • 例①

    int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
    
      if ( 条件名 == "AS条件::軍師武将番号" ) {
        return 100; // 武将番号100番 (武将番号【配列用】が99番の人が、いつも軍師。どこの国所属でも無関係
      }
    
      // 変更しない場合-1
      return -1;
    }
    
  • 例②

    int カスタム::On_カスタム条件(string 条件名, カスタム条件パラメタ型 パラメタ) {
    
        // 武田信玄が軍団長のところでは、その軍団に武田信繁が居るならば、その軍団の軍師は武田信繁となる。
    
      if ( 条件名 == "AS条件::軍師武将番号" ) {
        if ( パラメタ.整数2 == 0xFFFF ) {  // 現軍師武将番号 0xFFFFだと該当の軍団には軍師がいない。
        }
    
        int iGundanID = パラメタ.整数1 -1; // 指定の軍団番号【配】(指定の軍団場号)
        int iBushouID = パラメタ.整数2 -1; // 現軍師武将番号【配】(変化させなければ、その値となるということ)
    
        if ( 0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数 ) {
          // 軍団のリーダーを求める
          int iLeaderBushouID = p軍団情報[iGundanID].軍団長【武将番号】-1;
    
          // ちゃんとリーダーがいる。
          if ( 0 <= iLeaderBushouID && iLeaderBushouID < 最大数::武将情報::配列数 ) {
            // 現在要求されている軍団のリーダーは武田信玄
            if ( p武将戸籍情報[iLeaderBushouID].顔番号 == 顔番号::武田晴信 ) { // 顔番号19=武田信玄
    
              int iTargetID = Get_武将番号【配列用】(顔番号::武田信繁); // 武田信繁は居るか。
              if ( 0 <= iTargetID && iTargetID < 最大数::武将情報::配列数 ) {
    
                // この時、武田信玄と武田信繁が同じ軍団に所属してるか。
                if ( p武将情報[iLeaderBushouID].所属軍団【軍団番号】 == p武将情報[iTargetID].所属軍団【軍団番号】) {
                  // 武田信繁が軍師として助言する
                  return iTargetID+1; // 武将番号【配】列用番号→武将番号にした上で返す。
                }
              }
            }
    
          }
        }
      }
    
      // 変更しない場合-1
      return -1;
    }