Giter VIP home page Giter VIP logo

Comments (2)

cwtickle avatar cwtickle commented on September 22, 2024

報告ありがとうございます。
ver32.6.0以降で発生することを確認しました。

参考)全バージョンのプレビューサイト
https://danonicw.skr.jp/

#1509 で混入したと思われますが、この時点で機能追加やコードリファクタリングを行っているため、簡単に直らないかもしれません。

from danoniplus.

cwtickle avatar cwtickle commented on September 22, 2024

この辺の仕様がややこしいので一旦整理します。
ややこしくしている要因の一つは、difDataが指している初期ゲージ名が譜面によって違うことがあるためと認知しています。ゲージ名毎の設定は処理の最後に強制適用する仕組みのため、問題ありません。
内部処理としてはゲージ設定変更毎の処理をsetGaugeで行っています。

1. ゲージ優先度

  • カスタムゲージの場合
    • ゲージ個別設定(gaugeXXX) > 共通設定(g_presetObj.gaugeCustom)
  • 汎用ゲージかつゲージ初期設定(Original or Normal)で無い場合
    • ゲージ個別設定(gaugeXXX) > 共通設定(g_presetObj.gaugeCustom) > 基本設定(g_gaugeOptionObj)
  • 汎用ゲージかつゲージ初期設定(Original or Normal)の場合
    • ゲージ個別設定(gaugeXXX) > 共通設定(g_presetObj.gaugeCustom) > 譜面ヘッダー(difData) > 基本設定(g_gaugeOptionObj)

2. ゲージ設定を変更した場合の挙動

  • Difficultyを変更した場合
    • 同一のゲージ設定名があれば、そのゲージ設定に合致するゲージ設定を1.から取得 (ver32.6.0から適用)
    • ない場合は、その譜面のゲージ設定群の先頭をゲージ設定として、そのゲージ設定を1.から取得
  • Gaugeを変更した場合
    • 対象譜面のゲージ設定群のカーソルを1つ右 or 左にずらして、そのゲージ設定を1.から取得

3. ゲージ設定関連の変数(ノルマ、回復、ダメージ、初期値)

複数譜面あるため、いずれも配列で保持。

  • ゲージ個別設定(gaugeXXX)、共通設定(g_presetObj.gaugeCustom)
    ⇒ g_gaugeOptionObj.gaugeXXXs = { lifeBorders: [], lifeRecoverys: [], lifeDamages: [], lifeInits: [] }
     ※この部分の初期化処理はgetGaugeSettingで実施
  • 譜面ヘッダー(difData)
    ⇒ g_headerObj = { lifeBorders: [], lifeRecoverys: [], lifeDamages: [], lifeInits: [] }
     ※g_headerObjは譜面ヘッダー定義の集合体のため、ゲージ設定のみ抜粋
     ※この部分の初期化処理はheaderConvertで実施
  • 基本設定(g_gaugeOptionObj) ※初期化済み
    • ライフ制ゲージの場合
      ⇒ g_gaugeOptionObj = { clearSurvival: [], rcvSurvival: [], dmgSurvival: [], initSurvival: [] }
    • ノルマ制ゲージの場合
      ⇒ g_gaugeOptionObj = { clearBorder: [], rcvBorder: [], dmgBorder: [], initBorder: [] }

4. ノルマ制ゲージ決定条件

  • ゲージ個別設定(gaugeXXX)、共通設定(g_presetObj.gaugeCustom)
    ⇒ g_gaugeOptionObj.gaugeXXXs.lifeBorders[譜面番号] が「x」以外であること。
  • 譜面ヘッダー(difData)
    ⇒ g_headerObj.lifeBorders[譜面番号]が「x」以外であること。
  • 基本設定(g_gaugeOptionObj)
    ⇒ g_gaugeOptionObj.typeSurvival[譜面番号] もしくは g_gaugeOptionObj.typeBorder[譜面番号] の値が「border」であること。(「survival」の場合はライフ制)

5. 回復・ダメージ量の固定・変動条件

  • カスタムゲージの場合
    ⇒ 譜面ヘッダー: customGaugeXの2要素目が「F」なら固定、「V」なら変動。
      内部変数としては g_gaugeOptionObj.varCustom[譜面番号] で定義され、
      「OFF」なら固定、「ON」なら変動。
  • ライフ制ゲージ群の場合 ※4. とは異なる。「Original, Light, Heavy, SuddenDeath」の1セット。
    ⇒ g_gaugeOptionObj.varSurvival[譜面番号]の値が「OFF」なら固定、「ON」なら変動。
  • ノルマ制ゲージ群の場合 ※4. とは異なる。「Normal, Easy, Hard, SuddenDeath」の1セット。
    ⇒ g_gaugeOptionObj.varBorder[譜面番号]の値が「OFF」なら固定、「ON」なら変動。

from danoniplus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.