あなたには、アプリ「ラッキー傭兵団」のユニットDPSシミュレーターについて相談したい。
いきなりPythonコードを作るのではなく、まずは以下の仕様を正確に理解してほしい。
いきなりPythonコードを作るのではなく、まずは以下の仕様を正確に理解してほしい。
# ラッキー傭兵団 DPSシミュレーター仕様まとめ
## 0. 目的
タワーディフェンス型ゲーム「ラッキー傭兵団」に登場するユニットについて、行動順・スキル発動・究極発動・各種倍率・一時効果をシミュレーションし、DPSや行動内訳を算出する。
標準的な計測条件は以下。
- 1秒 = 40フレーム
- 1試行 = 約5000秒
- 試行回数 = 約100回
- 戦闘時間終了時点を跨いだ行動は切り捨てる
- DPS = 総ダメージ ÷ 経過秒数
- 経過秒数 = 経過フレーム ÷ 40
- 確率型スキルがあるため、平均値・中央値・発動回数平均なども見たい
# 1. 基本ステータス
ユニットは以下のようなステータスを持つ。
- 基礎攻撃力
- 基礎速度
- 究極ゲージ最大値
- 究極タイプ
・ マナ型 ・ クールタイム型
- 基本攻撃
- スキルA/B/C
- 究極
スキルや究極を持たないユニットも存在する。
# 2. 小数処理
フレーム数、マナ、クールタイム、カウント、ダメージ、DPSなど、すべての数値について小数が発生しうる。
小数点第7位を四捨五入し、小数点以下6桁まで保持する。
例:
18.3654729 → 18.365473
1.2345674 → 1.234567
1.2345675 → 1.234568
18.3654729 → 18.365473
1.2345674 → 1.234567
1.2345675 → 1.234568
状態値を更新して保存するたびに、この丸めを行う。
# 3. 攻撃速度と基本攻撃フレーム
ユニットには「基礎速度」がある。
さらに、ユーザー固有の「妖精の弓」という速度補正と、必要に応じて「共有速度」という係数が存在する。
最終攻撃速度は以下。
最終攻撃速度 = 基礎速度 × 妖精の弓係数 × 共有速度係数
例:
基礎速度 = 2.00
妖精の弓 = +36% → 1.36
共有速度 = +20% → 1.20
妖精の弓 = +36% → 1.36
共有速度 = +20% → 1.20
最終攻撃速度 = 2.00 × 1.36 × 1.20 = 3.264
基本攻撃のフレーム数は以下。
基本攻撃フレーム = 40 ÷ 最終攻撃速度
例:
最終攻撃速度 = 8.0
基本攻撃フレーム = 40 ÷ 8.0 = 5F
基本攻撃フレーム = 40 ÷ 8.0 = 5F
スキルと究極は攻撃速度に依存せず、それぞれ固有フレーム数を持つ。
# 4. 一時的な速度上昇
一時的な速度上昇効果は「妖精の弓係数」と同じグループに加算される。
妖精の弓係数 = 1 + 妖精の弓補正 + 有効な一時速度補正の合計
例:
妖精の弓 = +36%
一時速度効果 = +100%
一時速度効果 = +100%
妖精の弓係数 = 1 + 0.36 + 1.00 = 2.36
同一名称の一時速度効果は上書きされる。
異なる名称の一時速度効果は、妖精の弓係数グループ内で加算される。
異なる名称の一時速度効果は、妖精の弓係数グループ内で加算される。
共有速度は環境設定のようなものであり、一時的な共有速度補正は存在しない。
攻撃速度は行動開始時に確定する。
すでに開始した行動のフレーム数には、途中の速度変化は影響しない。
すでに開始した行動のフレーム数には、途中の速度変化は影響しない。
# 5. 行動の種類
通常行動には以下がある。
- 基本攻撃
- 確率型スキル
- 規定回数型スキル
- 究極
スキルは最大3種類、A/B/Cまで存在する。
確率型スキルと規定回数型スキルが同一ユニットに共存する場合もある。
確率型スキルと規定回数型スキルが同一ユニットに共存する場合もある。
通常行動はフレームを消費し、ユニットの次の行動開始を遅らせる。
# 6. 行動決定の優先順位
各行動開始時に、以下の順で行動を決定する。
1. 究極ゲージが満タンか確認する
2. 満タンなら究極を発動する
3. 満タンでない場合、規定回数型スキルをA→B→Cの順で確認する
4. 条件を満たす規定回数型スキルがあれば、それを発動する
5. 条件を満たす規定回数型スキルがなければ、確率型スキルの抽選を行う
6. 確率型スキルに当選すれば、そのスキルを発動する
7. どのスキルも発動しなければ基本攻撃を行う
2. 満タンなら究極を発動する
3. 満タンでない場合、規定回数型スキルをA→B→Cの順で確認する
4. 条件を満たす規定回数型スキルがあれば、それを発動する
5. 条件を満たす規定回数型スキルがなければ、確率型スキルの抽選を行う
6. 確率型スキルに当選すれば、そのスキルを発動する
7. どのスキルも発動しなければ基本攻撃を行う
基本攻撃は最も優先順位が低い。
# 7. 確率型スキル
確率型スキルが複数あっても、抽選は1回だけ行う。
複数の確率型スキルが同時に当選することはない。
複数の確率型スキルが同時に当選することはない。
例:
スキルA = 8%
スキルB = 10%
スキルB = 10%
この場合、
- スキルA発動 = 8%
- スキルB発動 = 10%
- 基本攻撃 = 82%
Aを外した後にBを抽選する逐次抽選ではなく、1回の排他的抽選として扱う。
究極または規定回数型スキルが発動した場合、その行動では確率型スキルの抽選機会は失われる。
# 8. 規定回数型スキル
規定回数型スキルは、それぞれ独立したカウント値を持つ。
カウント対象は、原則として以下の通常行動。
- 基本攻撃
- 他の通常スキル
- 究極
ただし、当該スキル自身の発動は、自身のカウント対象にならない。
当該スキルが発動した場合、そのスキル自身のカウントはリセットされる。
当該スキルが発動した場合、そのスキル自身のカウントはリセットされる。
例:
規定回数型スキルAについて、
- 基本攻撃 → Aカウント+1
- スキルB → Aカウント+1
- 究極 → Aカウント+1
- スキルA自身の発動 → Aカウントを0にリセット
複数の規定回数型スキルが同時に条件達成した場合、A→B→Cの順で優先する。
例:
AもBも条件達成している場合、Aが発動する。
このときBのカウントはリセットされない。
さらに、Aの発動はBにとって「他の通常スキル」なので、Bカウントは+1される。
このときBのカウントはリセットされない。
さらに、Aの発動はBにとって「他の通常スキル」なので、Bカウントは+1される。
各カウントは、そのスキル自身が発動した場合にのみリセットされる。
# 9. 究極
究極には2種類ある。
- マナ型
- クールタイム型
どちらも究極ゲージを持ち、ゲージ最大値に達すると発動可能になる。
究極ゲージは必ず0から開始する。
初期マナや初期クールタイムは存在しない。
初期マナや初期クールタイムは存在しない。
究極ゲージが満タンかどうかは、通常行動の開始時に確認する。
ゲージが満タンなら、他のスキル判定を行わず究極を発動する。
究極の発動が決定した瞬間に、究極ゲージは0へ戻る。
究極の発動が決定した瞬間に、究極ゲージは0へ戻る。
# 10. 時間経過による究極ゲージ増加
マナ型・クールタイム型のどちらも、時間経過によってゲージが増加する。
時間経過ゲージ増加量 = 経過フレーム ÷ 40
これは連続型で扱う。
例:
20F経過 → 0.5増加
60F経過 → 1.5増加
60F経過 → 1.5増加
時間経過によるゲージ増加は、すべての通常行動中に発生する。
- 基本攻撃中
- スキル中
- 究極中
究極は発動決定時にゲージを0へ戻す。
そのため、究極行動中にも次回究極に向けたゲージ増加が始まる。
そのため、究極行動中にも次回究極に向けたゲージ増加が始まる。
例:
究極フレーム = 60F
究極発動時にゲージ0
究極終了時、60 ÷ 40 = 1.5
ゲージ = 1.5
究極発動時にゲージ0
究極終了時、60 ÷ 40 = 1.5
ゲージ = 1.5
ゲージが最大値を超える場合、最大値で止まる。
余剰分は持ち越さない。
余剰分は持ち越さない。
# 11. マナ型究極の基本攻撃マナ増加
マナ型究極の場合、基本攻撃を行うたびに、基本攻撃終了時にマナゲージが+1される。
基本攻撃中の時間経過ゲージ増加も別途発生する。
例:
基本攻撃フレーム = 20F
時間経過による増加 = 20 ÷ 40 = 0.5
基本攻撃終了時の増加 = +1
基本攻撃終了時の増加 = +1
合計 = 1.5
基本攻撃中にゲージが満タンになっても、その途中で究極は発動しない。
次の通常行動開始時に究極判定を行う。
次の通常行動開始時に究極判定を行う。
クールタイム型究極では、基本攻撃による追加ゲージ増加は存在しない。
# 12. ダメージ発生時点
すべてのダメージは、行動フレームを消費し終えた時点で発生する。
例:
100F時点で50Fのスキル開始
150F時点でダメージ発生
150F時点でダメージ発生
ただし、その行動に適用される速度・属性・倍率・バフ効果は、行動開始時に確定する。
行動中にバフが切れても、その行動に適用されるダメージ倍率は変化しない。
# 13. 行動開始時効果
バフ、デバフ、属性付与、ゲージ操作などの効果は、行動開始時に発動する。
その効果を発動した行動自身にも、効果は適用される。
例:
スキルA:
10秒間、スキル属性ダメージ+100%
10秒間、スキル属性ダメージ+100%
スキルA自身がスキル属性を持つ場合、スキルA自身にも+100%が適用される。
# 14. 時間制効果
時間制効果は以下の範囲で有効。
開始時刻 <= 現在時刻 < 終了時刻
効果終了時刻と行動開始時刻が一致した場合、その行動には適用されない。
例:
効果開始 = 100F
効果終了 = 500F
効果終了 = 500F
100Fで開始する行動 → 適用
499.999999Fで開始する行動 → 適用
500Fで開始する行動 → 適用されない
499.999999Fで開始する行動 → 適用
500Fで開始する行動 → 適用されない
同一名称の時間制効果は上書きされる。
異なる名称の効果は独立して作用する。
異なる名称の効果は独立して作用する。
# 15. 回数制効果
「次の5回の基本攻撃」などの回数制効果は、対象行動の開始時に消費する。
行動開始時に残り回数が1以上なら、その行動に効果を適用し、その後で残り回数を1減らす。
例:
残り回数1
対象行動開始
効果適用
残り回数0
対象行動開始
効果適用
残り回数0
効果を発動した行動自身が対象条件を満たす場合、その行動自身にも適用される。
# 16. パッシブ型スキル
ごく一部の特例として、フレーム数を持たないスキルが存在する。
これは通常行動ではなく、パッシブ型スキルとして扱う。
例:
「ユニットが2回攻撃行動をするたび、50%の確率で発動し、発動した際はフレーム数を消費せず、敵に5000%のダメージを与える」
このようなスキルは、通常行動とは別に発生する。
パッシブ型スキルの基本処理:
1. 対象となる通常行動が終了する
2. パッシブ用カウントを増加する
3. 規定回数に到達したか確認する
4. 到達していれば発動抽選を行う
5. 当選した場合、同一時刻にパッシブ効果を発生させる
6. パッシブ発動によるフレーム消費は発生しない
7. 当選・落選にかかわらず、抽選後はパッシブ用カウントを0に戻す
8. 次の通常行動へ進む
2. パッシブ用カウントを増加する
3. 規定回数に到達したか確認する
4. 到達していれば発動抽選を行う
5. 当選した場合、同一時刻にパッシブ効果を発生させる
6. パッシブ発動によるフレーム消費は発生しない
7. 当選・落選にかかわらず、抽選後はパッシブ用カウントを0に戻す
8. 次の通常行動へ進む
パッシブ型スキルがダメージを与える場合、発動した時点で即座にダメージが発生する。
現在時刻は進まない。
現在時刻は進まない。
絶対原則:
パッシブ型スキルの発動は、他スキルにおける規定回数カウントのカウント対象にはならない。
パッシブ型スキルの発動は、他スキルにおける規定回数カウントのカウント対象にはならない。
つまり、
- 基本攻撃 → 規定回数型スキルのカウント対象
- 通常スキル → 規定回数型スキルのカウント対象
- 究極 → 規定回数型スキルのカウント対象
- パッシブ型スキル → 規定回数型スキルのカウント対象外
これは絶対原則である。
# 17. 攻撃行動の分類
すべての攻撃行動には以下の分類がある。
## 攻撃対象型
必ず以下のどちらか。
- 単体
- 範囲
単体・範囲自体はDPSに直接影響しないが、それぞれ専用倍率が存在する場合がある。
また、内訳として単体ダメージ・範囲ダメージを集計したい。
また、内訳として単体ダメージ・範囲ダメージを集計したい。
単体/範囲は排他的分類なので、合計は総ダメージと一致する。
## 属性型
必ず以下のどちらか。
- 物理
- 魔法
物理/魔法自体はDPSに直接影響しないが、それぞれ専用倍率が存在する場合がある。
防御力減少倍率は物理属性にのみ適用される。
防御力減少倍率は物理属性にのみ適用される。
物理/魔法は排他的分類なので、合計は総ダメージと一致する。
## 行動属性
以下の行動属性が存在する。
- 基本攻撃属性
- スキル属性
- 究極属性
行動属性は排他的ではない。
1つの行動が複数の行動属性を持つ場合がある。
1つの行動が複数の行動属性を持つ場合がある。
例:
- 基本攻撃だがスキル属性を持つ
- スキルだが基本攻撃属性を持つ
- 究極効果中、基本攻撃やスキルに究極属性が付与される
行動属性別ダメージは重複計上を許容する。
そのため、基本攻撃属性ダメージ・スキル属性ダメージ・究極属性ダメージの合計は、総ダメージと一致しない場合がある。
そのため、基本攻撃属性ダメージ・スキル属性ダメージ・究極属性ダメージの合計は、総ダメージと一致しない場合がある。
# 18. ダメージ計算式
敵に与えるダメージは以下で算出する。
# 敵に与えるダメージ
基礎攻撃力
× 行動種類によるダメージ倍率
× 対象型倍率
× (属性型倍率 + 秘伝書効果)
× 基本攻撃属性倍率
× スキル属性倍率
× 究極属性倍率
× 防御力減少倍率
× 最終ダメージ倍率
× 行動種類によるダメージ倍率
× 対象型倍率
× (属性型倍率 + 秘伝書効果)
× 基本攻撃属性倍率
× スキル属性倍率
× 究極属性倍率
× 防御力減少倍率
× 最終ダメージ倍率
該当しない倍率はすべて1.0倍として扱う。
# 19. 行動種類によるダメージ倍率
行動ごとに設定されている固有倍率。
例:
- 基本攻撃:100% → 1.00
- スキルA:5000% → 50.00
- 究極:30000% → 300.00
# 20. 対象型倍率
攻撃対象型に応じて適用される倍率。
- 単体攻撃 → 単体倍率
- 範囲攻撃 → 範囲倍率
例:
- 単体倍率+20% → 1.20
- 範囲倍率+30% → 1.30
該当する倍率がなければ1.0倍。
# 21. 属性型倍率
属性型に応じて適用される倍率。
- 物理攻撃 → 物理倍率
- 魔法攻撃 → 魔法倍率
例:
- 物理倍率+40% → 1.40
- 魔法倍率+20% → 1.20
該当する倍率がなければ1.0倍。
# 22. 秘伝書効果
ユーザー固有の「秘伝書」という効果が存在する。
秘伝書効果は、スキル属性を持つ行動にのみ適用される。
重要:
行動種類がスキルかどうかではなく、スキル属性を持つかどうかで判定する。
行動種類がスキルかどうかではなく、スキル属性を持つかどうかで判定する。
秘伝書効果は、属性型倍率に加算される。
例:
魔法属性倍率 = +20% → 1.20
秘伝書効果 = +30% → 0.30
秘伝書効果 = +30% → 0.30
属性型倍率 + 秘伝書効果 = 1.20 + 0.30 = 1.50
スキル属性を持たない行動では、秘伝書効果は0として扱う。
# 23. 基本攻撃属性倍率・スキル属性倍率・究極属性倍率
各行動が該当する行動属性を持つ場合のみ、対応する倍率を適用する。
- 基本攻撃属性を持つ → 基本攻撃属性倍率を適用
- スキル属性を持つ → スキル属性倍率を適用
- 究極属性を持つ → 究極属性倍率を適用
該当属性を持たない場合は1.0倍。
1つの行動が複数の行動属性を持つ場合、それらの倍率はすべて適用する。
例:
基本攻撃属性とスキル属性を両方持つ行動なら、
基本攻撃属性倍率 × スキル属性倍率
を適用する。
究極効果によって究極属性が付与される場合は、さらに究極属性倍率も適用する。
# 24. 防御力減少倍率
防御力減少倍率は、物理属性の攻撃にのみ適用される。
- 物理攻撃 → 防御力減少倍率を適用
- 魔法攻撃 → 防御力減少倍率 = 1.0
防御力減少倍率は正にも負にもなりうる。
例:
- 防御力減少倍率+75% → 1.75倍
- 防御力減少倍率-80% → 0.20倍
# 25. 最終ダメージ倍率
最終ダメージ倍率は、最終的に全体へ乗算される倍率である。
対象指定のないダメージ上昇効果は、原則として最終ダメージ倍率に属する。
例:
10秒間、与えるダメージ+100%
この場合、最終ダメージ倍率に2.00を乗算する。
# 26. 一時効果のダメージ倍率処理
時間制効果か回数制効果かによって、加算・乗算が決まるわけではない。
原則として、対象指定のある効果は、その対象に対応する倍率枠へ乗算する。
加算にはしない。
加算にはしない。
対象指定のない効果は、最終ダメージ倍率に属する。
例1:
10秒間、与えるダメージ+100%
対象指定がないため、最終ダメージ倍率に2.00を乗算する。
例2:
10秒間、基本攻撃ダメージ+50%
対象指定があるため、基本攻撃に対応する倍率枠へ1.50を乗算する。
例3:
次の5回の基本攻撃ダメージ+100%
対象指定があるため、基本攻撃に対応する倍率枠へ2.00を乗算する。
時間制効果と回数制効果が同じ行動に同時に作用する場合、それぞれ独立した乗算枠として扱う。
例:
時間制効果:
10秒間、基本攻撃ダメージ+50% → 1.50
10秒間、基本攻撃ダメージ+50% → 1.50
回数制効果:
次の5回の基本攻撃ダメージ+100% → 2.00
次の5回の基本攻撃ダメージ+100% → 2.00
同じ基本攻撃に両方作用する場合、
1.50 × 2.00 = 3.00
加算して2.50倍にはしない。
# 27. 攻撃力変化効果
一定時間または一定回数、攻撃力が変化する効果が存在する。
例:
- 10秒間、基礎攻撃力+100%
- 次の5回の基本攻撃の攻撃力+100%
- 特定スキルのみ攻撃力+100%
対象指定がない場合は全行動に作用する。
対象指定がある場合は、その対象行動にのみ作用する。
対象指定がある場合は、その対象行動にのみ作用する。
バフを発動した行動自身にも適用される。
# 28. スキル発動率変化効果
スキル発動率を変化させる効果が存在する。
特定スキルのみの発動率を上げる場合もある。
特定スキルのみの発動率を上げる場合もある。
確率型スキル抽選時には、現在有効な発動率補正を反映した実効確率を使う。
例:
スキルA基本確率 = 10%
スキルA確率補正 = +5%
スキルA確率補正 = +5%
スキルA実効確率 = 15%
# 29. 究極ゲージ直接増加・短縮効果
究極ゲージを直接増加させる効果が存在する。
主な種類は以下。
## 固定値増加
現在ゲージ += 固定値
例:
マナを10増加
## 不足分に対する割合増加
現在ゲージ += (最大値 - 現在ゲージ) × 割合
例:
残り必要ゲージの50%を短縮
最大値100、現在値40なら、
不足分 = 100 - 40 = 60
増加量 = 60 × 0.5 = 30
新ゲージ = 70
増加量 = 60 × 0.5 = 30
新ゲージ = 70
## 最大値に対する割合増加
現在ゲージ += 最大値 × 割合
例:
最大ゲージの20%を増加
最大値100なら、現在値に関係なく20増加。
いずれも最大値を超える場合は最大値で止まり、余剰分は持ち越さない。
# 30. ダメージを与えない補助スキル・補助究極
ダメージを与えないスキルや究極も存在する。
これらは通常行動として扱うため、以下は通常通り発生する。
- 固有フレーム数の消費
- 時間経過による究極ゲージ増加
- 他の規定回数型スキルのカウント増加
- 確率型スキル抽選機会の消費
- 補助効果の発動
補助効果は重複せず、同一名称の効果は都度上書きされる。
補助効果については、DPSだけでなく、以下の情報も見たい。
- 発動回数
- 平均発動間隔
- 最短発動間隔
- 最長発動間隔
- 有効時間
- 無効時間
- 継続率
- 平均無効時間
- 上書き回数
- 上書きによって失われた残り時間
継続率 = 効果が有効だった合計時間 ÷ 総計測時間
同一効果が上書きされるため、「発動回数 × 効果時間」で単純計算してはいけない。
有効区間の重複を統合して、有効だった時間を計算する。
有効区間の重複を統合して、有効だった時間を計算する。
# 31. 1回の通常行動における処理順
1. 現在時刻で期限切れの時間制効果を無効化する
2. 究極ゲージが満タンか確認する
3. 満タンなら究極を選択し、ゲージを0に戻す
4. 究極でない場合、規定回数型スキルをA→B→Cの順で確認する
5. 条件達成スキルがなければ、確率型スキルを抽選する
6. 何も発動しなければ基本攻撃を選択する
7. 選択された行動の開始時効果を発動する
8. 今回の行動に適用される属性・倍率・攻撃速度・フレーム数を確定する
9. 回数制効果を消費する
10. 行動フレーム数だけ時間を進める
11. 時間経過による究極ゲージ増加を処理する
12. 行動終了時にダメージを発生させる
13. 基本攻撃であれば、マナ型究極のマナ+1を処理する
14. 規定回数型スキルのカウントを更新する
15. パッシブ型スキルのカウント条件を確認する
16. 条件達成していれば、パッシブ型スキルの抽選・効果発生を同一時刻で処理する
17. 各数値を小数点以下6桁に丸める
18. 次の通常行動開始へ進む
2. 究極ゲージが満タンか確認する
3. 満タンなら究極を選択し、ゲージを0に戻す
4. 究極でない場合、規定回数型スキルをA→B→Cの順で確認する
5. 条件達成スキルがなければ、確率型スキルを抽選する
6. 何も発動しなければ基本攻撃を選択する
7. 選択された行動の開始時効果を発動する
8. 今回の行動に適用される属性・倍率・攻撃速度・フレーム数を確定する
9. 回数制効果を消費する
10. 行動フレーム数だけ時間を進める
11. 時間経過による究極ゲージ増加を処理する
12. 行動終了時にダメージを発生させる
13. 基本攻撃であれば、マナ型究極のマナ+1を処理する
14. 規定回数型スキルのカウントを更新する
15. パッシブ型スキルのカウント条件を確認する
16. 条件達成していれば、パッシブ型スキルの抽選・効果発生を同一時刻で処理する
17. 各数値を小数点以下6桁に丸める
18. 次の通常行動開始へ進む
# 32. 記録したい出力
最終的に以下のような値を見たい。
## 基本結果
- 総ダメージ
- 総DPS
- 平均DPS
- 中央値DPS
- 最小DPS
- 最大DPS
- 標準偏差
- 試行回数
## 行動回数
- 基本攻撃回数
- スキルA発動回数
- スキルB発動回数
- スキルC発動回数
- 究極発動回数
- パッシブ型スキル発動回数
- 確率型スキル抽選回数
- 確率型スキル当選回数
- 規定回数型スキル発動回数
## 行動間隔
- 平均究極発動間隔
- 平均スキル発動間隔
- 補助効果の平均発動間隔
- 補助効果の継続率
## ダメージ内訳
- 基本攻撃ダメージ
- スキルAダメージ
- スキルBダメージ
- スキルCダメージ
- 究極ダメージ
- パッシブ型スキルダメージ
- 単体ダメージ
- 範囲ダメージ
- 物理ダメージ
- 魔法ダメージ
- 基本攻撃属性ダメージ
- スキル属性ダメージ
- 究極属性ダメージ
単体/範囲、物理/魔法は排他的分類なので、合計が総ダメージと一致する。
基本攻撃属性/スキル属性/究極属性は重複計上があるため、合計が総ダメージと一致しない場合がある。
# 33. 重要な設計原則
- 通常行動とパッシブ発動は明確に分ける
- 通常行動はフレームを消費する
- パッシブ型スキルはフレームを消費しない
- パッシブ型スキル発動は、他スキルの規定回数カウント対象には絶対にならない
- 行動速度は行動開始時に確定する
- 行動ダメージも倍率適用状態は行動開始時に確定する
- 実際のダメージ発生は行動終了時
- 行動中にバフが切れても、その行動のダメージ倍率は変わらない
- 時間制効果は「開始時刻 <= 現在時刻 < 終了時刻」で有効
- 効果終了時刻と行動開始時刻が一致した場合、その行動には適用しない
- 回数制効果は対象行動の開始時に消費する
- バフを発動した行動自身にも、その効果は適用される
- 確率型スキルは1回の排他的抽選であり、複数同時当選は存在しない
- 規定回数型スキルはそれぞれ独立したカウントを持つ
- 規定回数型スキルのカウントは、そのスキル自身が発動した場合にのみリセットされる
- 究極ゲージは最大値を超えず、余剰分は持ち越さない
- マナ型究極では、基本攻撃終了時にマナ+1
- クールタイム型究極では、時間経過のみでゲージ増加
- 秘伝書効果は、スキル属性を持つ行動にのみ適用される
- 防御力減少倍率は、物理属性の攻撃にのみ適用される
- 該当しない倍率はすべて1.0倍
- 対象指定のないダメージ上昇効果は、最終ダメージ倍率に属する
- 対象指定のある効果は、該当する倍率枠へ乗算する
- 時間制効果と回数制効果が同時に作用しても、加算ではなく独立乗算する
以上の仕様を前提として、DPSシミュレーターの設計相談をしたい。
コード生成を行う場合でも、まずはこの仕様の解釈に矛盾がないか確認し、不明点があれば質問してほしい。
コード生成を行う場合でも、まずはこの仕様の解釈に矛盾がないか確認し、不明点があれば質問してほしい。