返信先: ACE3について
ホーム › フォーラム › TRI Gaming フォーラム › ACE3について › 返信先: ACE3について
2020年5月5日 2:41 AM
#266361
参加者
Unconscious からの復帰に Epinephrine が与える影響ついて
ここに書いた情報は 2020/05/04 時点の情報です.
ace のアップデートや,TRI鯖の設定変更等が原因で変わる恐れがあります.
変更されたそうなので,以下の内容は参照しないで下さい.
ACE3 の実装を読む参考になるかもしれないので一応残しておきます.
advancedMedication=false の場合の挙動
NSTomoSのミスで誤っている可能性があります…
まとめ
- Epinephrine 打った時に,バイタルが安定していればすぐに復帰する.
- Epinephrine には即時的な効果しかないので,一度 Epinephrine を打った後で,バイタルを安定させた場合は,再度 Epinephrine を打つ必要がある.
以下はメモ(裏付け)なので興味ない人は読み飛ばしてください
経験的には
- Epinephrine を打つと復帰が早くなる
- 「(バイタルが安定していれば?)Epinephrine を打つと(15 秒以内?)の復帰率 100 % な気がする」との報告も
ドキュメントの説明では
- > Epinephrine can boost the chances of waking up by increasing the amount of checks the wake up chance
- Epinephrine を打つと復帰するかのチェック回数が増える
- チェック回数が増えることで復帰率が上がる
- 経験的な知見と矛盾するように見える
コード上では
- fnc_handleStateUnconscious.sqf
private _wakeUpCheckInterval = SPONTANEOUS_WAKE_UP_INTERVAL; if (EGVAR(medical,spontaneousWakeUpEpinephrineBoost) > 1) then { private _epiEffectiveness = [_unit, "Epinephrine", false] call EFUNC(medical_status,getMedicationCount); _wakeUpCheckInterval = _wakeUpCheckInterval * linearConversion [0, 1, _epiEffectiveness, 1, 1 / EGVAR(medical,spontaneousWakeUpEpinephrineBoost), true]; TRACE_2("epiBoost",_epiEffectiveness,_wakeUpCheckInterval); };- 設定的には
spontaneousWakeUpEpinephrineBoostが1より大きい場合にwakeUpCheckIntervalの値を(小さく)変更する.(=チェック回数が増える)- ドキュメント通りの実装
- 過去に打った回数を参照して効果率を変化させて線形変換しているっぽい
- 現状のTRI鯖では,
force ace_medical_spontaneousWakeUpEpinephrineBoost = 1;に設定されているつまり,現状のTRI鯖では,Epinephrine は Unconscious からの復帰に影響しないはず…経験的な知見と矛盾する?
- 現状のTRI鯖では,Epinephrine は Unconscious からの spontaneousWake(自発的な復帰) に影響しない
- もしかしたら
advancedMedication=trueの場合にのみ通る path かもしれない???
- ドキュメント通りの実装
- 設定的には
- fnc_medicationLocal.sqf
// Exit with basic medication handling if advanced medication not enabled if (!GVAR(advancedMedication)) exitWith { switch (_classname) do { case "Morphine": { private _painSuppress = GET_PAIN_SUPPRESS(_patient); _patient setVariable [VAR_PAIN_SUPP, (_painSuppress + MORPHINE_PAIN_SUPPRESSION) min 1, true]; }; case "Epinephrine": { [QEGVAR(medical,WakeUp), _patient] call CBA_fnc_localEvent; }; }; };advancedMedication=falseの場合は Epinephrine を打つと["ace_medical_WakeUp", _patient] call CBA_fnc_localEvent"が call される"ace_medical_WakeUp"の内容はここっぽいclass WakeUp { targetState = "Injured"; condition = QEFUNC(medical_status,hasStableVitals); events[] = {QEGVAR(medical,WakeUp)}; onTransition = QUOTE([ARR_2(_this,false)] call EFUNC(medical_status,setUnconsciousState)); };Vitalsが安定していればUnconsciousStateにfalseが set される?(=バイタルが安定していれば Unconscious から復帰する)- 呼び出し関係を理解していないので正確ではない可能性があるが,経験的な動作と一致
コードまとめ
- Unconscious からの復帰に Epinephrine が与える影響は二種類ある
- Epinephrine 打った時に,バイタルが安定していれば(即)復帰する
- (現状のTRI鯖で有効な)普段目にする効果
advancedMedication=falseの場合のみ
- Epinephrine が効いている間, バイタルが安定していれば確率的に復帰する回数が増える(
spontaneousWakeUpEpinephrineBoost)- ドキュメントにはこっちしか書いてなかった
- Epinephrine 打った時に,バイタルが安定していれば(即)復帰する
- 後者の影響が
advancedMedication=falseで有効かは不明(調べるの面倒で力尽きました)- 例えば,バイタルが安定していない状態で Epinephrine 打った直後にバイタルが安定した場合に追加で Epinephrine を打つ必要があるかどうか
- 現状のTRI鯖の設定では
ace_medical_spontaneousWakeUpEpinephrineBoost = 1;なのでadvancedMedicationの設定に関わらずspontaneousWakeUpEpinephrineBoostは無効