Sexlab Arousedがよくわかってない・2

前回書いた関連コードは、modder向けのPOSTから解説付きで読めます。先に気づけ自分。

http://www.loverslab.com/topic/37652-sexlab-aroused-redux-december-05-2016/?p=945545

それと、たまにプレイ後でもArousalが下がらないことがあって、なんでだろうと思っていたことがあったんだけど、

Bool canHaveOrgasm = False
If (animation.HasTag("Anal") || animation.HasTag("Vaginal") || animation.HasTag("Masturbation") || animation.HasTag("Fisting"))
	canHaveOrgasm = True
EndIf

slamainscr.pscの、これが原因な気がする。よく読めば公式にも、

Females can only have orgasm (arousal goes down) only if animation is tagged as Anal/Vaginal/Masturbation/Fisting

と書いてあって、そりゃそうだ、と。

今度下がらなかったらプレイ内容を思い出そう。ああ、こうして人はどんどん没入感から遠ざかっていくのだ……。

閑話休題。

まだTimeRateの話

GetActorTimeRate()のコードが、

Float res = StorageUtil.GetFloatValue(akRef, "SLAroused.TimeRate", 10.0)
res = res * Math.pow(1.5, - daysSinceLastSex / slaConfig.TimeRateHalfLife)

になっていたので、ずっと勝手に騙されて悩んでいたけど、実際にはこれは、

Float storedTimeRate = StorageUtil.GetFloatValue(akRef, "SLAroused.TimeRate", 10.0)
currentTimeRate = storedTimeRate * Math.pow(1.5, - daysSinceLastSex / slaConfig.TimeRateHalfLife)

ということらしい。まあ自分でもよくやるんだけど、これでstoredの方も更新されると思い込んでた。

実際にはstoredTimeRateはUpdateActorOrgasmDate()、つまり「絶頂を迎えた」ときしか更新されない。このstoredTimeRateはMCMとかには表示されない。表示されるのはGetActorTimeRate()の結果の、↑でいうcurrentTimeRateになる。

currentTimeRateはコードの通り……って書くとこれ書いてる意味がなくなるので、以下のようになる。

保存されてるTimeRate(デフォルト10.0・絶頂しない限り更新されない) × 1.5 に (-絶頂からの経過日 ÷ Decay Rate(デフォルト2.0)) をべき乗したもの

例えば、TimeRateを10.0、Decay Rateをデフォルトの2.0、経過日数を1日にすると、こうなる。

10.0 × 1.5 ^ (-1/2) = 8.164….

なので、前回なんとなく見ていたこのグラフ

post-424489-0-97527700-1425728026

を、実際に表にするとDecay Rate = 2.0の時はこうなって、

decayrate2

5.0の時はこうなるわけだ。

decayrate5

Decay Rate後の日に、TimeRate(時間変動率)が大体1/3減っていることになる。よし、つじつまがあったぞ。

結論:Decay Rate = 5.0とか酷い設定だな!

次回こそはExposureRateの話。

コメント