是正案:回復優先ボーナス関係の挙動をCWに合わせる

Issue #9 resolved
暗黒 騎士 repo owner created an issue

問題点はwikiを参照

バグがでそうなので後回しにしてたけど、実際に必要としている人も確認したので、そろそろ着手します。3.0までに完全実装を目指す。

Comments (4)

  1. 暗黒 騎士 reporter

    ###再検証の結果

    ####1.50 * 1.味方Aと敵Aが適性値-4の双方回復アイテムを持ち、敵B(最大ライフ5)が意識不明の時、 味方A敵Aともにほとんど回復アイテムを選択しない。 * 2.味方Aと敵Aと敵Bが双方回復召喚獣を持ち、敵Cが意識不明の時、味方Aと敵Aの双方回復召喚獣が動作し、敵Bのものは動作しなかった。 * 3.味方Aが双方回復アイテムと召喚獣を両方持ち、敵Aが意識不明時、召喚獣は必ず敵Aを選択、更に味方Aが敵Aに回復アイテムを重複選択する場合もあった。 * 4.味方Aと味方Bが双方一体回復アイテムと双方全体回復召喚獣を両方持ち、敵Aが戦闘不能時、味方Aの召喚獣が必ず敵Aを選択、味方Bが味方Aより先に動いても味方Bの召喚獣は動かない。また味方Aと味方Bのどちらかが回復アイテムを使う場合はあるが、両方同時に使ったラウンドは1度もなかった。 * 5.1に最大ライフ41の味方Bを加え、開始イベントで意識不明にすると、味方Aと敵Aは高確率で味方Bを選択し、敵B(最大ライフ5)は選択しない。敵Bの最大ライフを500に変更すると結果が逆転して敵Bだけが選択される状態になった。 * 6.5に回復アイテムと回復召喚獣を持った同行キャストAを加えた場合、それぞれが味方Bを回復しにいった。 * 7.最大体力200,100,80,1という極端に体力に差があるパーティを作り、80を重傷、それ以外を意識不明にした。最大体力80がウンディーネを三体召喚した結果、ウンディーネの回数5回中5回、200,100,80の順で回復され、1は意識不明のまま放置された。

    選択順の追加検証

    • 8.味方Aに全体回復召喚獣、味方Bに自身対象の回復召喚獣を持たせ、どちらも重傷で召喚獣の挙動を見た。結果Aの召喚獣しか動かなかった。
    • 9.8の召喚獣を交換するとAもBも動いた。

    「双方対象」は除外リストには入るが、回復優先ボーナスは付かないことが判明。敵側にしか付かないというのは勘違いだった?

    どちらも間違いだった。双方対象でも敵味方両方に回復優先ボーナスが付いているが、意識不明になっている者に対して残りライフの割合とは別に最大ライフが優先選択ボーナスとして加算されている可能性が高い。よって体力が一桁のキャストは優先選択ボーナスが低いため、100%回復対象に選ばれるとは限らない。

    回復選択済みリストが敵・味方で区別されているのは前回の検証通り。それだけではなく3.6.により敵/味方/同行キャストとその召喚獣がそれぞれ別の回復選択済みリストを持っているように見える。

    ###現在の仮説

    • 戦闘行動は左から順番に決まる。召喚獣は前にあるもの優先。
    • 回復選択済みリストは味方、同行キャスト、敵とそれぞれの召喚獣の6つ用意されている。
    • 回復選択済みリストの実体は1つか2つで、味方(召喚獣)選択完了→リセット→同行キャスト(召喚獣)選択→リセット→敵(召喚獣)選択完了→リセット。と推移していっている。(有力)
    • 意識不明者には最大ライフ分の回復優先ボーナスが付く。(200~というのはマチガエ)
  2. 暗黒 騎士 reporter
    • 意識不明時の優先選択ボーナスを最大ライフに変更
    • 回復選択済みリストを味方/敵/同行キャストに分離(最優先課題)

    とりあえず半分。まずリストをわけたのは、現状では双方or敵全体回復で敵の優先行動をはぎ取ってしまうため。

    Rebootでは動ける味方、敵、同行キャストをself.membersに加える→行動順決定→戦闘行動自動決定という流れのようだが、CWでは味方並び準→敵並び順で行動を自動決定し、使い終わった時点でリストをリセットしなければならないので、self.membersとは別にself.pmembersself.emembersを作る→戦闘行動自動決定→行動順決定に変えた。多分バグってそうなので一段落つくまでテスト版は出さない。12月中には出せるようにしたい。

    残り

    • 回復除外リストに入っている対象を絶対選択しなくする(最低限「再生」や「ウンディーネ」が全部動く問題には対処する)
    • 召喚獣を別リストに分離する
  3. 暗黒 騎士 reporter
    • 回復選択済みリストを新規に作り直した
    • 回復選択済みリストに入っている対象を絶対に選ばれないようにした
    • 回復選択済みリストを増設し、召喚獣の回復選択を別リスト化した

    なんとか出来た。召喚獣は使用者と一緒に判定されるのでわけるしかないように見える。

    cw.cwpy.battle.heal_selectedlist # 回復選択済みリスト
    cw.cwpy.battle.heal_selectedlist_beast # 召喚獣の回復選択済みリスト
    
    #味方→同行キャスト→敵の順に行動を決定し、使い終わったら毎回初期化する。
    

    Rebootの回復選択済みリストcw.cwpy.battle.priorityactsは効果種別、対象、使用者を格納している(他にも使い回すため汎用リストになっている?)が、現状では回復にしか使っていないので高速化のために対象だけのリストを二つ作る、ということにした。

    数日様子を見て、問題ないようであればテスト版を作りクローズする。

    これでようやく大目標を達成して次を考えることができる。一年かければ成長できるものだな…。

  4. Log in to comment