PR

生を喰らうで特定条件時にフリーズ。スキル演出不具合の修正 #3742

kouho opened this at 2024-10-25T17:11:00; closed

Description

opened by kouho at 2024-10-25T17:11:00; updated 2024-10-25T18:18:11

概要

ユーザーからの問い合わせの対応
海域イベント49階でフェンリル攻撃後フリーズするとの報告があり
実際にユーザーのデッキをコピーしたら再現

演出周りなのでRazestさんに対応を相談以下は森田さんからご返信いただいた内容の転載

こちら確認いたしました。
スキルの組み合わせにおいて、同時演出のウェイトタイムの整合性が取れなくなり次の行動に進める「battle_status」が「38」に更新されていないのかと存じます。
・カウンターによる敵のダメージ演出と死亡演出のウェイト
・攻撃側のダメージ演出のウェイト
・範囲同時攻撃なので攻撃対象全員へのそれぞれのダメージ演出のウェイト
・範囲攻撃後の回復演出のウェイト
この場合プログラム上でのエラーは発生しません。

battle.jsにおいて「生を喰らう」の攻撃演出のbattle_statusと、各演出のウェイトを計るためのnext_flg、skill_plurallyなどのカウント状況を出力して、最終的にbattle_statusの更新に齟齬が生まれている箇所を確認していただくのが良いかと存じます。
またバトルの再生スピードによっても発生する/しないの違いが発生する場合がございますので、再現しない場合は演出速度の変更もお試しください。

範囲攻撃と防御演出による演出停止不具合は過去にも何度か修正していますので、下記のプルリクなども参考にされてください。
主に同時攻撃の演出終了監視用に使用しているskill_plurallyのカウントアップ・ダウンの扱いが原因になることが多かったかと存じます。
https://github.com/rzstaffgit/jrce2_github/pull/5410
https://github.com/rzstaffgit/jrce2_github/pull/5417

また攻略に際してご不便をおかけしますが、こちら演出のみの問題ですので、演出停止後のバトルの流れやバトル結果などには影響はございませんのでその点はご安心いただけるようお伝えすると良いかと存じます。

修正後のご指摘

こちらの修正方法ですとskill_plurallyの使用方法が他と異なります。
各スキルの演出処理の中にあるtimer3、timer4などのsetIntervalは、S_page_battle_player_battle_attack_effectなどで行っている各カードのダメージや死亡演出処理の中でskill_plurallyが0以下に減算されるまでのウェイトを取っています。
「skill_plurally--;(--の前はスペース無し)」などで検索していただくと分かる通り、スキルごとの処理ではなく各カードの「死亡演出」「カウンターによるダメージ演出」「回復演出」などの関数内での処理終了を検知するための変数となっております。
ウェイトを取っている場所で直接減算するとS_page_battle_player_battle_attack_effect以降で行っている処理状況を見ずに次の演出に進もうとしてしまうため、「ダメージを受けた後の体力を表示する」などの処理がスキップされる可能性があります。
参考までに先ほどのtimer3、timer4とskill_plurallyについての解説コメントをつけたものです。
var timer3 = setInterval(function () {
    //攻撃に伴う各演出の処理でのskill_plurally減算待ち
    if(skill_plurally <= 0){
        skill_plurally = 0;
        clearInterval(timer3);
        skill_plurally++; //1体分の回復演出を行うので1加算
        S_page_battle_player_battle_attack_effect(atk_team,atk_card_pos,atk_team,atk_card_pos%10,8,recovery_point,27,order,recovery_count);
        //上記関数内で1体分の「回復演出の表示」「回復量の表示とHPの修正(S_page_battle_player_battle_recovery_dmg)」などを行っている。それらが終了次第skill_plurallyを減算して演出終了を通知

        var timer4 = setInterval(function () {
            //S_page_battle_player_battle_attack_effect→S_page_battle_player_battle_recovery_dmgでのskill_plurally減算待ち
            if(skill_plurally <= 0){
                clearInterval(timer4);
                if(disp_move == 1){
                    S_page_battle_player_diffence_move2(disp_team,0,38);
                    disp_move = 0;
                }else{
                    battle_status = 38;
                }
            }
        },battle_spd);
    }
},battle_spd);
kouho merge at 2024-10-25T17:11:18: 生を喰らうで特定条件時にフリーズ。スキル演出不具合の修正
kouho close at 2024-10-25T17:11:18: Close

Commit range

base1b5d8755c662dff09f63f7c813630ea071ab7f6b
headf20025e9584463ccfedbc73ad9fd7c18de3ec409
base branchjolly/jr-web:master
head branchjolly/jr-web:fix_battle_disp

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed3 filesView patch
statusfile
modifiedpublic_html/js/JOLLYROGER_battle.js
modifiedpublic_html/js/jr_battle.min.js
modifiedpublic_html/template/header_sp.tpl
Patch body is stored as a separate file to keep this page lightweight.