IMO I give it a clean variable instead of constantly change the npc stat with pulling it up and down that value through the attached script (because this is a permanent stat of that npc not a variable what isn't too good to be manipulate line by line)
The Actor:incest += x commands do not write back the stat only just at the end of the scene (sceneend cmd) or a character save (saveanddelete cmd). Meanwhile you try compare with changed value against variables. So this part ('Actor:incest > Random(75, 89)') always compare the original value of the incest stat if I'm right.
first sol:
At beginning of script (read out):
'Actorincestlevel = Actor:incest' <-in this case you should manipulate this 'Actorincestlevel' through the script instead of the stat
At end of script (write back):
'Actor:incest => Actorincestlevel'
second sol:
Random(75, 89) <- this is soo thin scope so reconsider to use it, but if you want anyway then like this:
'randomnum = Random(75, 89)' <-in this case is advised to manipulate this variable against the stat value
with use combined:
'If Actorincestlevel > randomnum' <- with this you compare two variable instead of a stat vs variable
or you can scale if you want:
Code:
If Actor.isValid()
Actorincestlevel = Actor:incest
If Actorincestlevel > 89
"dosomething"
ElseIf Actorincestlevel > 75
"dosomething less"
Else
"donothing"
EndIf
Actor:incest => Actorincestlevel
Else
"actor isn't valid"
EndIf
P.S: And it's recomended to running the Randoms before the operators ('If Random(75, 89) < Actorincestlevel').