Sexlab Arousedがよくわかってない

イマイチよくわかっていないSexlab Arousedの値を整理する。街の住人全員が100になったり、全員が0のままピタリとはりついていたりは誰もが通る道だと信じたい。

  • Arousal = TimeRate * 絶頂からの経過日数 + Sum(SingleExposure * ExposureRate)
  • Arousal = 0~100 (-2は不正かブロック)
  • ExposureRate = 0~10、MCMからかModderがいじる
  • TimeRate = 0~100、時間で減る・いたすと増える

以上公式から。 28b現在。psc見るとTimeRateのデフォルトは10.0のようだ。

Arousalがモニタウィジットとかで見えるもの。MCM日本語訳だと+の左側は「変動値」、右側が「露出値」。露出値はとりあえず無視する。要は裸見ると興奮するんでしょ?くらいの理解。でもいたした後はガッツリ減る(ログ見てたら-200とか出てた)ので、単なる露出だけの値ではない感じ。

arousal

MCMには設定が3つあって、

  • Default Exposure Rate = 露出を見た時の初期興奮レベル
  • Decay Rate = 時間変動率が減退する日数 ; (TimeRateHalfLife)
  • Time Rate Change = 時間変動率の上昇値

1番上は露出値関係なので無視する。要は裸見ると略。

MCMの日本語訳はこう。

  • 絶頂後に時間変動率が1/3減退する日数を設定します。時間変動率が12で減退日数が2日の場合、2日は時間変動率が8になります。0に設定するとPC/NPCの時間変動値は減退しません。デフォルト 2.0
  • 絶頂後、時間変動率に追加される値を設定します。

整理をすすめててわかったんだけど、Decay Rateの訳は「2日」ではなく、「2日」が正しいようだ。後でしかるべきところ(どこ?)に報告しよう。28bの翻訳ってあるのかな。

それはともかく、Decay Rate(時間変動率が減退する日数)の値による違いは、公式にグラフが上がっている。

post-424489-0-97527700-1425728026

左の軸がArousalの右側「TimeRate * 絶頂からの経過日数」(変動値)、下が経過日数。Decay Rate(時間変動率が減退する日数)=Timerate Halflifeが「2.0」の時が緑、以下、3(黄色),4(オレンジ),5(赤)になる。

露出を考えずに変動値=Arousalとすると、

  • 2.0(デフォルト)だと40日くらいで0に。ピークは1週間後くらい。
  • 5.0だと大体100日くらいで0に。ピークは15日後くらい。

Time Rate ChangeはOrgasm時にそのままTimeRateに+される処理がされてるので、↑の時間で減る値を無視する勢いでOrgasmを発生させれば、Time Rateは上がり続けるわけで……色情魔みたいな状態になる、と。

以下、関連コード抜粋。

Float Function UpdateActorTimeRate(Actor akRef, Float val)
    If (akRef == None)
        return -2.0
    EndIf

    val = GetActorTimeRate(akRef) + val
    Return SetActorTimeRate(akRef, val)
EndFunction

Float Function GetActorTimeRate(Actor akRef)
    If (akRef == None)
        return -2.0
    EndIf

    ; return default value if set not to decay
    If (slaConfig.TimeRateHalfLife <= 0.1)
        Return 10.0
    EndIf

    Float res = StorageUtil.GetFloatValue(akRef, "SLAroused.TimeRate", 10.0)
    Float daysSinceLastSex = GetActorDaysSinceLastOrgasm(akRef)

    res = res * Math.pow(1.5, - daysSinceLastSex / slaConfig.TimeRateHalfLife)

    akRef.SetFactionRank(slaTimeRate, res as Int)
    Return res
EndFunction

Function UpdateActorOrgasmDate(Actor akRef)
    If (akRef == None)
        return
    EndIf

    UpdateActorTimeRate(akRef, slaConfig.SexOveruseEffect as Float)
    StorageUtil.SetFloatValue(akRef, "SLAroused.LastOrgasmDate", Utility.GetCurrentGameTime())
    ;Debug.Trace(Self + ": " + akRef.GetLeveledActorBase().GetName() + " had orgasm date updated")
EndFunction

ExposureRateのほうも見ないとダメっぽい。

コメント