Jump to content

Recommended Posts

Posted (edited)
1 hour ago, Fraying9981 said:

hey @hextun

 

was wondering why this script creates bloat when set to timer = every 4 minutes.

 

= after playing for ~20 minutes i get ~ 400 suspended stacks per resaver and papyrus engine stops working.

Also, i noticed that this script tends to fire up several times in parallel according to the logs

 

  Reveal hidden contents
; =============================================================================
; _dom_persona_read.sltscript
; =============================================================================
; PURPOSE: Timer-driven in SL Triggers MCM (you set the interval, e.g. 2 minutes). Same
;          scan/cast flow as _dom_persona_read_hourly_v1 copy.sltscript: bare
;          util_scan_cell_npcs (whole cell), actor_infaction == false,
;          spell_cast, cap $MAX_TARGETS. After cast: female or futa (gender 1/2), if
;          DOMVirginOral/Anal/Vaginal rank == 4, roll and set DOMTrain* (csv buckets).
;          Bump $SCRIPT_VERSION (v2l, v2m, …) on edits.
;
; NOTE: Disable any other SL Triggers rule that runs _dom_persona_read_hourly_v1.sltscript
;       (not the "copy" reference file) — duplicate runs still cast/train; use one timer rule.
;
; TRIGGER: SL Triggers timer (interval not read by this script — set in MCM only).
; =============================================================================
 
; -----------------------------------------------------------------------------
; USER-EDITABLE CONFIG
; -----------------------------------------------------------------------------
set $SCRIPT_VERSION "v2m"
; $MAX_TARGETS : maximum casts per trigger run
set $MAX_TARGETS 5
 
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=INIT script enter Persona Read timer fired"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " CONFIG MAX_TARGETS=" $MAX_TARGETS " (cast cap per run)"
msg_notify "[DOM-PR] " $SCRIPT_VERSION " Persona Read triggered"
 
; -----------------------------------------------------------------------------
; RESOLVE FORMS (editor-ID lookup)
; -----------------------------------------------------------------------------
set $facetSmartness resultfrom form_getbyid "DOMFacetSmartness"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)"
set $personaSpell resultfrom form_getbyid "DOMPersonaReadSpell"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)"
set $domVirginAnal resultfrom form_getbyid "DOMVirginAnal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)"
set $domVirginVaginal resultfrom form_getbyid "DOMVirginVaginal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction"
set $domVirginOral resultfrom form_getbyid "DOMVirginOral"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction"
set $domTrainAnal resultfrom form_getbyid "DOMTrainAnal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction"
set $domTrainVaginal resultfrom form_getbyid "DOMTrainVaginal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction"
set $domTrainOral resultfrom form_getbyid "DOMTrainOral"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction"
 
if $facetSmartness == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " ABORT STEP=FORM editor=DOMFacetSmartness result=none (install DOM / facet mod)"
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Faction DOMFacetSmartness not found"
    return
endif
 
if $personaSpell == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " ABORT STEP=FORM editor=DOMPersonaReadSpell result=none"
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Spell DOMPersonaReadSpell not found"
    return
endif
 
if $domVirginAnal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginAnal missing -> SKIP train anal branch (actor_getfactionrank DOMVirginAnal)"
endif
if $domVirginVaginal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginVaginal missing -> SKIP train vaginal branch"
endif
if $domVirginOral == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginOral missing -> SKIP train oral branch"
endif
if $domTrainAnal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainAnal missing -> SKIP set rank anal"
endif
if $domTrainVaginal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainVaginal missing -> SKIP set rank vaginal"
endif
if $domTrainOral == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainOral missing -> SKIP set rank oral"
endif
 
; -----------------------------------------------------------------------------
; SCAN NEARBY NPCS (official pattern: no args = player center, whole cell, no keyword)
; -----------------------------------------------------------------------------
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored"
set $nearby resultfrom util_scan_cell_npcs
set $count resultfrom listcount $nearby
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)"
 
if $count == 0
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " EXIT STEP=SCAN listCount=0 no NPC refs -> return"
    return
endif
 
; -----------------------------------------------------------------------------
; ITERATE AND CAST (same gate as v1 copy: resultfrom + == true / == false)
; -----------------------------------------------------------------------------
set $i 0
set $cast 0
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS"
 
while $i < $count
    if $cast >= $MAX_TARGETS
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP halt castSoFar=" $cast " >= MAX_TARGETS=" $MAX_TARGETS " -> goto done (no more casts this run)"
        goto [done]
    endif
 
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP body iter index i=" $i " listCount=" $count " castSoFar=" $cast " (next=nearby ref)"
 
    set $npc $nearby[$i]
 
    set $isValid resultfrom actor_isvalid $npc
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_isvalid nearby[i=" $i "] -> isValid=" $isValid " (true=Actor ref)"
    if $isValid == true
        set $isPlayer resultfrom actor_isplayer $npc
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_isplayer nearby[i=" $i "] -> isPlayer=" $isPlayer " (true=skip player not NPC)"
        if $isPlayer == false
            set $npcName resultfrom actor_name $npc
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP actor identity i=" $i " name=" $npcName " (next=actor_infaction DOMFacetSmartness)"
 
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=" $npcName
            set $inFaction resultfrom actor_infaction $npc $facetSmartness
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_infaction DOMFacetSmartness name=" $npcName " inFaction=" $inFaction " (false=not yet smartness -> CAST spell)"
            if $inFaction == false
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION spell_cast spell=DOMPersonaReadSpell target=" $npcName " (persona read)"
                spell_cast $personaSpell $npc
                inc $cast 1
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT cast count castSoFar=" $cast " after spell_cast"
                ; female (1) or futa (2): train ranks if virgin faction rank == 4
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=train actor_getgender name=" $npcName
                actor_getgender $npc
                set $gender $$
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getgender name=" $npcName " gender=" $gender " (1=female 2=futa 0=male)"
                set $doVirginTrain false
                if $gender == 1
                    set $doVirginTrain true
                endif
                if $gender == 2
                    set $doVirginTrain true
                endif
                if $doVirginTrain == true
                    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=train enter virgin rank reads for name=" $npcName " (rank 4 = train gate per lane; form none = lane skipped entirely)"
                    if $domVirginOral != none
                        set $vrOral resultfrom actor_getfactionrank $npc $domVirginOral
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginOral name=" $npcName " rank=" $vrOral
                    endif
                    if $domVirginAnal != none
                        set $vrAnal resultfrom actor_getfactionrank $npc $domVirginAnal
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginAnal name=" $npcName " rank=" $vrAnal
                    endif
                    if $domVirginVaginal != none
                        set $vrVag resultfrom actor_getfactionrank $npc $domVirginVaginal
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginVaginal name=" $npcName " rank=" $vrVag
                    endif
                    if $domVirginOral != none
                        if $domTrainOral != none
                            if $vrOral == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll oral DOMVirginOral rank==4 name=" $npcName
                                gosub sub_roll_train_oral
                                actor_setfactionrank $npc $domTrainOral $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainOral name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMVirginOral rank=" $vrOral " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMTrainOral form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMVirginOral form missing name=" $npcName
                    endif
                    if $domVirginAnal != none
                        if $domTrainAnal != none
                            if $vrAnal == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll anal DOMVirginAnal rank==4 name=" $npcName
                                gosub sub_roll_train_anal
                                actor_setfactionrank $npc $domTrainAnal $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainAnal name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMVirginAnal rank=" $vrAnal " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMTrainAnal form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMVirginAnal form missing name=" $npcName
                    endif
                    if $domVirginVaginal != none
                        if $domTrainVaginal != none
                            if $vrVag == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll vaginal DOMVirginVaginal rank==4 name=" $npcName
                                gosub sub_roll_train_vaginal
                                actor_setfactionrank $npc $domTrainVaginal $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainVaginal name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMVirginVaginal rank=" $vrVag " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMTrainVaginal form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMVirginVaginal form missing name=" $npcName
                    endif
                else
                    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train branch gender=" $gender " name=" $npcName " (only female=1 or futa=2 get virgin train rolls)"
                endif
            else
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=" $npcName
            endif
        else
            set $plName resultfrom actor_name $npc
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP player ref actor_isplayer=true index i=" $i " name=" $plName " (not an NPC target)"
        endif
    else
        typeid $npc
        set $badTypeid $$
        form_dogetter $npc GetFormID
        set $badFormid $$
        actor_name $npc
        set $badName $$
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP invalid ref index i=" $i " actor_isvalid=false typeid=" $badTypeid " GetFormID=" $badFormid " name=" $badName
    endif
 
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP end iteration i=" $i " advancing i++"
    inc $i 1
endwhile
 
[done]
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=done label castSoFar=" $cast " (persona casts this run)"
if $cast > 0
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Read " $cast " mind(s)"
else
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT castSoFar=0 (no DOMPersonaReadSpell cast this run; NPCs skipped facet/player/invalid or list empty returned earlier)"
endif
return
 
; -----------------------------------------------------------------------------
; SUBROUTINES: rnd 0-99 -> train rank (sskillsdistribution.csv oral/anal/vaginal)
; -----------------------------------------------------------------------------
beginsub sub_roll_train_anal
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_anal rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainAnal rank bucket)"
    if $r < 70
        set $trainRank 0
    elseif $r < 86
        set $trainRank 10
    elseif $r < 94
        set $trainRank 30
    elseif $r < 97
        set $trainRank 50
    elseif $r < 99
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_anal trainRank=" $trainRank " (actor_setfactionrank DOMTrainAnal by caller)"
endsub
 
beginsub sub_roll_train_vaginal
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_vaginal rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainVaginal rank bucket)"
    if $r < 22
        set $trainRank 0
    elseif $r < 57
        set $trainRank 10
    elseif $r < 77
        set $trainRank 30
    elseif $r < 87
        set $trainRank 50
    elseif $r < 95
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_vaginal trainRank=" $trainRank " (actor_setfactionrank DOMTrainVaginal by caller)"
endsub
 
beginsub sub_roll_train_oral
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_oral rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainOral rank bucket)"
    if $r < 30
        set $trainRank 0
    elseif $r < 65
        set $trainRank 10
    elseif $r < 85
        set $trainRank 30
    elseif $r < 95
        set $trainRank 50
    elseif $r < 99
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_oral trainRank=" $trainRank " (actor_setfactionrank DOMTrainOral by caller)"
endsub

 

 

log for a previous but similar version with a blacklist

 

  Reveal hidden contents

can you analyze whats going on???

@SKSE/Plugins/sl_triggers/commands/_dom_persona_read.sltscript

here is the log:

---

 

[2026-05-14 16:14:41.233] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=INIT script enter Persona Read timer fired

[2026-05-14 16:14:41.382] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=INIT RACE_BLACKLIST built listCount=$RACE_BL_COUNT (next=msg_notify user)

[2026-05-14 16:14:41.582] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CONFIG MAX_TARGETS=5 (cast cap per run)

[2026-05-14 16:14:41.881] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[45]: [DOM-PR] v2l Persona Read triggered

[2026-05-14 16:14:42.331] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)

[2026-05-14 16:14:42.731] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)

[2026-05-14 16:14:43.262] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)

[2026-05-14 16:14:43.710] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction

[2026-05-14 16:14:44.084] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction

[2026-05-14 16:14:44.485] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction

[2026-05-14 16:14:44.909] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction

[2026-05-14 16:14:45.335] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction

[2026-05-14 16:14:47.033] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored

[2026-05-14 16:14:47.857] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)

[2026-05-14 16:14:48.506] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS

[2026-05-14 16:14:49.130] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=0 listCount=11 castSoFar=0 (next=nearby ref)

[2026-05-14 16:14:50.044] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)

[2026-05-14 16:14:50.669] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)

[2026-05-14 16:14:51.618] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP actor identity i=0 name=Achmack actor_race=Redguard (next=RACE_BLACKLIST compare)

[2026-05-14 16:14:51.818] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist begin while j<RACE_BL_COUNT compare actor_race to list entry

[2026-05-14 16:15:27.481] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist end isBlacklisted=False name=Achmack (true=skip creature race)

[2026-05-14 16:15:27.830] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Achmack

[2026-05-14 16:15:28.505] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT actor_infaction DOMFacetSmartness name=Achmack inFaction=False (false=not yet smartness -> CAST spell)

[2026-05-14 16:15:28.779] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l ACTION spell_cast spell=DOMPersonaReadSpell target=Achmack (persona read)

[2026-05-14 16:15:29.379] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT cast count castSoFar=1 after spell_cast

[2026-05-14 16:15:29.579] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=train actor_getgender name=Achmack

[2026-05-14 16:15:32.026] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT actor_getgender name=Achmack gender=0 (1=female 2=futa 0=male)

[2026-05-14 16:15:34.549] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP train branch gender=0 name=Achmack (only female=1 or futa=2 get virgin train rolls)

[2026-05-14 16:15:35.274] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=0 advancing i++

[2026-05-14 16:15:36.048] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=1 listCount=11 castSoFar=1 (next=nearby ref)

[2026-05-14 16:15:36.897] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=1] -> isValid=1 (true=Actor ref)

[2026-05-14 16:15:37.496] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby[i=1] -> isPlayer=False (true=skip player not NPC)

[2026-05-14 16:15:38.545] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP actor identity i=1 name=Owyn the Officer actor_race=Redguard (next=RACE_BLACKLIST compare)

[2026-05-14 16:15:38.720] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist begin while j<RACE_BL_COUNT compare actor_race to list entry

[2026-05-14 16:15:43.315] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate

[2026-05-14 16:15:43.415] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(838.778015)

[2026-05-14 16:16:14.499] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist end isBlacklisted=False name=Owyn the Officer (true=skip creature race)

[2026-05-14 16:16:14.849] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Owyn the Officer

[2026-05-14 16:16:15.474] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT actor_infaction DOMFacetSmartness name=Owyn the Officer inFaction=False (false=not yet smartness -> CAST spell)

[2026-05-14 16:16:15.773] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l ACTION spell_cast spell=DOMPersonaReadSpell target=Owyn the Officer (persona read)

[2026-05-14 16:16:16.373] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT cast count castSoFar=2 after spell_cast

[2026-05-14 16:16:16.548] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=train actor_getgender name=Owyn the Officer

[2026-05-14 16:16:17.097] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT actor_getgender name=Owyn the Officer gender=0 (1=female 2=futa 0=male)

[2026-05-14 16:16:24.196] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP train branch gender=0 name=Owyn the Officer (only female=1 or futa=2 get virgin train rolls)

[2026-05-14 16:16:24.970] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=1 advancing i++

[2026-05-14 16:16:25.745] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=2 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:16:26.792] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=2] -> isValid=0 (true=Actor ref)

[2026-05-14 16:16:30.788] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=2 actor_isvalid=false typeid=5 GetFormID=185746470 name=Dog

[2026-05-14 16:16:31.016] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=2 advancing i++

[2026-05-14 16:16:31.762] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=3 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:16:32.611] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=3] -> isValid=0 (true=Actor ref)

[2026-05-14 16:16:39.669] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=3 actor_isvalid=false typeid=5 GetFormID=185070340 name=Hallin

[2026-05-14 16:16:39.870] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=3 advancing i++

[2026-05-14 16:16:40.646] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=4 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:16:41.568] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)

[2026-05-14 16:16:42.242] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby[i=4] -> isPlayer=TRUE (true=skip player not NPC)

[2026-05-14 16:16:45.766] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP player ref actor_isplayer=true index i=4 name=Dominus (not an NPC target)

[2026-05-14 16:16:46.338] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=4 advancing i++

[2026-05-14 16:16:47.087] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=5 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:16:48.036] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=5] -> isValid=0 (true=Actor ref)

[2026-05-14 16:16:52.132] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=5 actor_isvalid=false typeid=5 GetFormID=185732270 name=Fasahr

[2026-05-14 16:16:52.382] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=5 advancing i++

[2026-05-14 16:16:53.057] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=6 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:16:53.381] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate

[2026-05-14 16:16:53.456] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(901.475037)

[2026-05-14 16:16:54.055] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=6] -> isValid=1 (true=Actor ref)

[2026-05-14 16:16:54.655] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby[i=6] -> isPlayer=False (true=skip player not NPC)

[2026-05-14 16:16:55.729] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP actor identity i=6 name=Thadgeir actor_race=nord (next=RACE_BLACKLIST compare)

[2026-05-14 16:16:55.928] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist begin while j<RACE_BL_COUNT compare actor_race to list entry

[2026-05-14 16:17:31.818] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist end isBlacklisted=False name=Thadgeir (true=skip creature race)

[2026-05-14 16:17:32.167] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Thadgeir

[2026-05-14 16:17:32.867] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l RESULT actor_infaction DOMFacetSmartness name=Thadgeir inFaction=TRUE (false=not yet smartness -> CAST spell)

[2026-05-14 16:17:35.189] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Thadgeir

[2026-05-14 16:17:35.839] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=6 advancing i++

[2026-05-14 16:17:36.588] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=7 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:17:37.437] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=7] -> isValid=0 (true=Actor ref)

[2026-05-14 16:17:41.533] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=7 actor_isvalid=false typeid=5 GetFormID=185746468 name=Dog

[2026-05-14 16:17:41.733] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=7 advancing i++

[2026-05-14 16:17:42.557] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=8 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:17:43.481] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=8] -> isValid=0 (true=Actor ref)

[2026-05-14 16:17:47.652] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=8 actor_isvalid=false typeid=5 GetFormID=185030552 name=Alusannah the wise

[2026-05-14 16:17:47.927] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=8 advancing i++

[2026-05-14 16:17:48.676] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=9 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:17:49.600] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=9] -> isValid=0 (true=Actor ref)

[2026-05-14 16:17:53.646] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=9 actor_isvalid=false typeid=5 GetFormID=185746553 name=Joramah

[2026-05-14 16:17:53.871] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=9 advancing i++

[2026-05-14 16:17:54.620] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=10 listCount=11 castSoFar=2 (next=nearby ref)

[2026-05-14 16:17:55.565] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=10] -> isValid=0 (true=Actor ref)

[2026-05-14 16:17:58.138] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate

[2026-05-14 16:17:58.212] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(963.686035)

[2026-05-14 16:17:59.761] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=10 actor_isvalid=false typeid=5 GetFormID=185746469 name=Dog

[2026-05-14 16:18:00.060] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=10 advancing i++

[2026-05-14 16:18:04.166] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=done label castSoFar=2 (persona casts this run)

[2026-05-14 16:18:04.490] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[266]: [DOM-PR] v2l Read 2 mind(s)

[2026-05-14 16:54:37.515] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate

[2026-05-14 16:54:37.590] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(3159.522217)

[2026-05-14 16:54:39.283] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=INIT script enter Persona Read timer fired

[2026-05-14 16:54:39.434] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=INIT RACE_BLACKLIST built listCount=$RACE_BL_COUNT (next=msg_notify user)

[2026-05-14 16:54:39.683] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CONFIG MAX_TARGETS=5 (cast cap per run)

[2026-05-14 16:54:39.858] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[45]: [DOM-PR] v2l Persona Read triggered

[2026-05-14 16:54:40.333] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)

[2026-05-14 16:54:40.707] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)

[2026-05-14 16:54:41.157] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)

[2026-05-14 16:54:41.582] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction

[2026-05-14 16:54:42.031] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction

[2026-05-14 16:54:42.493] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction

[2026-05-14 16:54:42.868] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction

[2026-05-14 16:54:43.342] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction

[2026-05-14 16:54:45.039] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored

[2026-05-14 16:54:46.040] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)

[2026-05-14 16:54:46.639] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS

[2026-05-14 16:54:47.263] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=0 listCount=3 castSoFar=0 (next=nearby ref)

[2026-05-14 16:54:48.212] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)

[2026-05-14 16:54:48.787] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby -> isPlayer=TRUE (true=skip player not NPC)

[2026-05-14 16:54:52.209] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP player ref actor_isplayer=true index i=0 name=Dominus (not an NPC target)

[2026-05-14 16:54:52.683] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=0 advancing i++

[2026-05-14 16:54:53.381] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=1 listCount=3 castSoFar=0 (next=nearby ref)

[2026-05-14 16:54:55.201] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=1] -> isValid=0 (true=Actor ref)

[2026-05-14 16:54:59.421] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l SKIP invalid ref index i=1 actor_isvalid=false typeid=5 GetFormID=185762386 name=Cyrus

[2026-05-14 16:54:59.620] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP end iteration i=1 advancing i++

[2026-05-14 16:55:00.394] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP body iter index i=2 listCount=3 castSoFar=0 (next=nearby ref)

[2026-05-14 16:55:01.465] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isvalid nearby[i=2] -> isValid=1 (true=Actor ref)

[2026-05-14 16:55:02.189] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l CHECK actor_isplayer nearby[i=2] -> isPlayer=False (true=skip player not NPC)

[2026-05-14 16:55:03.163] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=LOOP actor identity i=2 name=Thadgeir actor_race=nord (next=RACE_BLACKLIST compare)

[2026-05-14 16:55:03.362] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2l STEP=blacklist begin while j<RACE_BL_COUNT compare actor_race to list entry

 

 

Ew. This sounds like a nasty bug. What version are you using? And do you have an sl-triggers.log output with some debug flags enabled?

 

Also, do you happen to have other timer-based scripts and if so, can you summarize their setup (i.e. how long each is set to wait)?

Edited by hextun
Posted
9 minutes ago, hextun said:

 

Ew. This sounds like a nasty bug. What version are you using? And do you have an sl-triggers.log output with some debug flags enabled?

 

Also, do you happen to have other timer-based scripts and if so, can you summarize their setup (i.e. how long each is set to wait)?

 

thanks.

  • 978
  • i'll try to regenerate a log. which options should i tick for debug? Core?
  • this is my only timer based script
Posted
29 minutes ago, Fraying9981 said:

 

thanks.

  • 978
  • i'll try to regenerate a log. which options should i tick for debug? Core?
  • this is my only timer based script

 

req'd:

Core Timer

 

optional:

Core

 

Another odd question: how many times have you *loaded* this game? So... you started the save, new character. You play for a few hours and create 10 saves (don't laugh). You shut down. You come back to it a day later and start again. That's *one* load. You play another few hours; 10 more saves. You quit and start the next day. That's *two* loads. Approximate if you don't mind since specificity is unlikely: 1-5, 6-10, 11-15, etc.

 

Also, I'm reviewing my code surrounding this event. It may be overcomplicated and thus, problematic. Erroneous. Buggy.

Posted (edited)
12 hours ago, Fraying9981 said:

 

thanks.

  • 978
  • i'll try to regenerate a log. which options should i tick for debug? Core?
  • this is my only timer based script

 

Removed the custom .pex for download (saw 0 downloads anyway, so it shouldn't have impacted anyone).

 

 

Edited by hextun
Posted (edited)

Scratch that. Here is a preview of 0.981. I've further updated the Timer event logic; no longer using the JSON for persistence (since that means separate characters could impact each other). I did, however, go back to juggling arrays, but 2 instead of 3 and using simpler logic to manage things.

 

@Fraying9981, please try it out and let me know how it goes.

 

Anyone else: sure, have a go. Eventually I'll post it properly. 

 

EDIT: Removed the download link as an official v0.981 version download is now available from the main page as normal

Edited by hextun
Removed download link
  • 2 weeks later...
Posted (edited)

 

 

On 5/16/2026 at 8:23 AM, hextun said:

Scratch that. Here is a preview of 0.981. I've further updated the Timer event logic; no longer using the JSON for persistence (since that means separate characters could impact each other). I did, however, go back to juggling arrays, but 2 instead of 3 and using simpler logic to manage things.

 

@Fraying9981, please try it out and let me know how it goes.

 

Anyone else: sure, have a go. Eventually I'll post it properly. 

 

SLTriggersRedux-0.981.zip 1.15 MB · 4 downloads

 

ok so I've done some testing.

 

Here is the report

 

Spoiler

Resaver logs: good news: no stack frame error at all on multiple saves and locations!

 

Testing methodology:

4 locations 3 indoor 1 outdoor

1 indoor had 10+ profiles to generate (script is too slow to do all of them but at least no bloat according to resaver)

i saved in each location after a few minutes

core and core timer debug activated, see logs below

 

Script I used with timer 2 minutes:

 

Spoiler
; =============================================================================
; _dom_persona_read.sltscript
; =============================================================================
; PURPOSE: Timer-driven in SL Triggers MCM (you set the interval, e.g. 2 minutes). Same
;          scan/cast flow as _dom_persona_read_hourly_v1 copy.sltscript: bare
;          util_scan_cell_npcs (whole cell), actor_infaction == false,
;          spell_cast, cap $MAX_TARGETS. After cast: female or futa (gender 1/2), if
;          DOMVirginOral/Anal/Vaginal rank == 4, roll and set DOMTrain* (csv buckets).
;          Bump $SCRIPT_VERSION (v2l, v2m, …) on edits.
;
; NOTE: Disable any other SL Triggers rule that runs _dom_persona_read_hourly_v1.sltscript
;       (not the "copy" reference file) — duplicate runs still cast/train; use one timer rule.
;
; TRIGGER: SL Triggers timer (interval not read by this script — set in MCM only).
; =============================================================================
 
; -----------------------------------------------------------------------------
; USER-EDITABLE CONFIG
; -----------------------------------------------------------------------------
set $SCRIPT_VERSION "v2m"
; $MAX_TARGETS : maximum casts per trigger run
set $MAX_TARGETS 5
 
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=INIT script enter Persona Read timer fired"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " CONFIG MAX_TARGETS=" $MAX_TARGETS " (cast cap per run)"
msg_notify "[DOM-PR] " $SCRIPT_VERSION " Persona Read triggered"
 
; -----------------------------------------------------------------------------
; RESOLVE FORMS (editor-ID lookup)
; -----------------------------------------------------------------------------
set $facetSmartness resultfrom form_getbyid "DOMFacetSmartness"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)"
set $personaSpell resultfrom form_getbyid "DOMPersonaReadSpell"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)"
set $domVirginAnal resultfrom form_getbyid "DOMVirginAnal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)"
set $domVirginVaginal resultfrom form_getbyid "DOMVirginVaginal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction"
set $domVirginOral resultfrom form_getbyid "DOMVirginOral"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction"
set $domTrainAnal resultfrom form_getbyid "DOMTrainAnal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction"
set $domTrainVaginal resultfrom form_getbyid "DOMTrainVaginal"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction"
set $domTrainOral resultfrom form_getbyid "DOMTrainOral"
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction"
 
if $facetSmartness == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " ABORT STEP=FORM editor=DOMFacetSmartness result=none (install DOM / facet mod)"
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Faction DOMFacetSmartness not found"
    return
endif
 
if $personaSpell == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " ABORT STEP=FORM editor=DOMPersonaReadSpell result=none"
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Spell DOMPersonaReadSpell not found"
    return
endif
 
if $domVirginAnal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginAnal missing -> SKIP train anal branch (actor_getfactionrank DOMVirginAnal)"
endif
if $domVirginVaginal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginVaginal missing -> SKIP train vaginal branch"
endif
if $domVirginOral == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMVirginOral missing -> SKIP train oral branch"
endif
if $domTrainAnal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainAnal missing -> SKIP set rank anal"
endif
if $domTrainVaginal == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainVaginal missing -> SKIP set rank vaginal"
endif
if $domTrainOral == none
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " WARN STEP=FORM editor=DOMTrainOral missing -> SKIP set rank oral"
endif
 
; -----------------------------------------------------------------------------
; SCAN NEARBY NPCS (official pattern: no args = player center, whole cell, no keyword)
; -----------------------------------------------------------------------------
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored"
set $nearby resultfrom util_scan_cell_npcs
set $count resultfrom listcount $nearby
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)"
 
if $count == 0
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " EXIT STEP=SCAN listCount=0 no NPC refs -> return"
    return
endif
 
; -----------------------------------------------------------------------------
; ITERATE AND CAST (same gate as v1 copy: resultfrom + == true / == false)
; -----------------------------------------------------------------------------
set $i 0
set $cast 0
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS"
 
while $i < $count
    if $cast >= $MAX_TARGETS
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP halt castSoFar=" $cast " >= MAX_TARGETS=" $MAX_TARGETS " -> goto done (no more casts this run)"
        goto [done]
    endif
 
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP body iter index i=" $i " listCount=" $count " castSoFar=" $cast " (next=nearby ref)"
 
    set $npc $nearby[$i]
 
    set $isValid resultfrom actor_isvalid $npc
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_isvalid nearby[i=" $i "] -> isValid=" $isValid " (true=Actor ref)"
    if $isValid == true
        set $isPlayer resultfrom actor_isplayer $npc
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_isplayer nearby[i=" $i "] -> isPlayer=" $isPlayer " (true=skip player not NPC)"
        if $isPlayer == false
            set $npcName resultfrom actor_name $npc
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP actor identity i=" $i " name=" $npcName " (next=actor_infaction DOMFacetSmartness)"
 
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=" $npcName
            set $inFaction resultfrom actor_infaction $npc $facetSmartness
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_infaction DOMFacetSmartness name=" $npcName " inFaction=" $inFaction " (false=not yet smartness -> CAST spell)"
            if $inFaction == false
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION spell_cast spell=DOMPersonaReadSpell target=" $npcName " (persona read)"
                spell_cast $personaSpell $npc
                inc $cast 1
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT cast count castSoFar=" $cast " after spell_cast"
                ; female (1) or futa (2): train ranks if virgin faction rank == 4
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=train actor_getgender name=" $npcName
                actor_getgender $npc
                set $gender $$
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getgender name=" $npcName " gender=" $gender " (1=female 2=futa 0=male)"
                set $doVirginTrain false
                if $gender == 1
                    set $doVirginTrain true
                endif
                if $gender == 2
                    set $doVirginTrain true
                endif
                if $doVirginTrain == true
                    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=train enter virgin rank reads for name=" $npcName " (rank 4 = train gate per lane; form none = lane skipped entirely)"
                    if $domVirginOral != none
                        set $vrOral resultfrom actor_getfactionrank $npc $domVirginOral
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginOral name=" $npcName " rank=" $vrOral
                    endif
                    if $domVirginAnal != none
                        set $vrAnal resultfrom actor_getfactionrank $npc $domVirginAnal
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginAnal name=" $npcName " rank=" $vrAnal
                    endif
                    if $domVirginVaginal != none
                        set $vrVag resultfrom actor_getfactionrank $npc $domVirginVaginal
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_getfactionrank faction=DOMVirginVaginal name=" $npcName " rank=" $vrVag
                    endif
                    if $domVirginOral != none
                        if $domTrainOral != none
                            if $vrOral == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll oral DOMVirginOral rank==4 name=" $npcName
                                gosub sub_roll_train_oral
                                actor_setfactionrank $npc $domTrainOral $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainOral name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMVirginOral rank=" $vrOral " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMTrainOral form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train oral DOMVirginOral form missing name=" $npcName
                    endif
                    if $domVirginAnal != none
                        if $domTrainAnal != none
                            if $vrAnal == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll anal DOMVirginAnal rank==4 name=" $npcName
                                gosub sub_roll_train_anal
                                actor_setfactionrank $npc $domTrainAnal $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainAnal name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMVirginAnal rank=" $vrAnal " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMTrainAnal form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train anal DOMVirginAnal form missing name=" $npcName
                    endif
                    if $domVirginVaginal != none
                        if $domTrainVaginal != none
                            if $vrVag == 4
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " ACTION gosub roll vaginal DOMVirginVaginal rank==4 name=" $npcName
                                gosub sub_roll_train_vaginal
                                actor_setfactionrank $npc $domTrainVaginal $trainRank
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT actor_setfactionrank faction=DOMTrainVaginal name=" $npcName " trainRank=" $trainRank
                            else
                                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMVirginVaginal rank=" $vrVag " (need 4) name=" $npcName
                            endif
                        else
                            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMTrainVaginal form missing name=" $npcName
                        endif
                    else
                        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train vaginal DOMVirginVaginal form missing name=" $npcName
                    endif
                else
                    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP train branch gender=" $gender " name=" $npcName " (only female=1 or futa=2 get virgin train rolls)"
                endif
            else
                deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=" $npcName
            endif
        else
            set $plName resultfrom actor_name $npc
            deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP player ref actor_isplayer=true index i=" $i " name=" $plName " (not an NPC target)"
        endif
    else
        typeid $npc
        set $badTypeid $$
        form_dogetter $npc GetFormID
        set $badFormid $$
        actor_name $npc
        set $badName $$
        deb_msg "[DOM-PR] " $SCRIPT_VERSION " SKIP invalid ref index i=" $i " actor_isvalid=false typeid=" $badTypeid " GetFormID=" $badFormid " name=" $badName
    endif
 
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=LOOP end iteration i=" $i " advancing i++"
    inc $i 1
endwhile
 
[done]
deb_msg "[DOM-PR] " $SCRIPT_VERSION " STEP=done label castSoFar=" $cast " (persona casts this run)"
if $cast > 0
    msg_notify "[DOM-PR] " $SCRIPT_VERSION " Read " $cast " mind(s)"
else
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT castSoFar=0 (no DOMPersonaReadSpell cast this run; NPCs skipped facet/player/invalid or list empty returned earlier)"
endif
return
 
; -----------------------------------------------------------------------------
; SUBROUTINES: rnd 0-99 -> train rank (sskillsdistribution.csv oral/anal/vaginal)
; -----------------------------------------------------------------------------
beginsub sub_roll_train_anal
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_anal rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainAnal rank bucket)"
    if $r < 70
        set $trainRank 0
    elseif $r < 86
        set $trainRank 10
    elseif $r < 94
        set $trainRank 30
    elseif $r < 97
        set $trainRank 50
    elseif $r < 99
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_anal trainRank=" $trainRank " (actor_setfactionrank DOMTrainAnal by caller)"
endsub
 
beginsub sub_roll_train_vaginal
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_vaginal rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainVaginal rank bucket)"
    if $r < 22
        set $trainRank 0
    elseif $r < 57
        set $trainRank 10
    elseif $r < 77
        set $trainRank 30
    elseif $r < 87
        set $trainRank 50
    elseif $r < 95
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_vaginal trainRank=" $trainRank " (actor_setfactionrank DOMTrainVaginal by caller)"
endsub
 
beginsub sub_roll_train_oral
    set $r resultfrom rnd_int 0 99
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " SUB=sub_roll_train_oral rnd_int 0-99 -> r=" $r " (next=map r to DOMTrainOral rank bucket)"
    if $r < 30
        set $trainRank 0
    elseif $r < 65
        set $trainRank 10
    elseif $r < 85
        set $trainRank 30
    elseif $r < 95
        set $trainRank 50
    elseif $r < 99
        set $trainRank 70
    else
        set $trainRank 90
    endif
    deb_msg "[DOM-PR] " $SCRIPT_VERSION " RESULT sub_roll_train_oral trainRank=" $trainRank " (actor_setfactionrank DOMTrainOral by caller)"
endsub

 

Log

sl-triggers.log

 

Spoiler

[2026-05-29 08:58:59.768] [log] [info] [skse_events.cpp:314] CombatEvent sink initialized, enabled(false)
[2026-05-29 08:58:59.768] [log] [info] [skse_events.cpp:315] EquipEvent sink initialized, enabled(false)
[2026-05-29 08:58:59.768] [log] [info] [skse_events.cpp:316] HitEvent sink initialized, enabled(false)
[2026-05-29 08:58:59.768] [log] [info] [skse_events.cpp:318] HarvestedEvent sink initialized, enabled(false)
[2026-05-29 08:58:59.768] [log] [info] [skse_events.cpp:319] SoulsTrapped sink initialized, enabled(false)
[2026-05-29 08:58:59.768] [log] [debug] [Trampoline.cpp:225] Default Trampoline => 0B / 64B (00.00%)
[2026-05-29 08:58:59.768] [log] [debug] [Trampoline.cpp:225] Default Trampoline => 14B / 64B (21.88%)
[2026-05-29 09:03:30.227] [log] [info] [engine.cpp:241] PrecacheLibraries starting
[2026-05-29 09:03:30.234] [log] [info] [engine.cpp:143] adding (raydonn-skyrimnet-libraries.json/raydonn_skyrimnet/raydonn-skyrimnet/10000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibAdultGeneral-libraries.json/sl_triggersCmdLibOSLAroused/sl_triggersCmdLibAdultGeneral/-1000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibAdultGeneral-libraries.json/sl_triggersCmdLibPW/sl_triggersCmdLibAdultGeneral/-1000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibAdultGeneral-libraries.json/sl_triggersCmdLibSLIF/sl_triggersCmdLibAdultGeneral/-1000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibAdultGeneral-libraries.json/sl_triggersCmdLibTNG/sl_triggersCmdLibAdultGeneral/-1000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibBase-libraries.json/sl_triggersCmdLibBase/sl_triggersCmdLibBase/11000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibBase-libraries.json/sl_triggersCmdLibNFF/sl_triggersCmdLibBase/10000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibBase-libraries.json/sl_triggersCmdLibOBody/sl_triggersCmdLibBase/10000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibBase-libraries.json/sl_triggersCmdLibRacemenuNIO/sl_triggersCmdLibBase/10000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersCmdLibSexLabDependent-libraries.json/sl_triggersCmdLibSexLabDependent/sl_triggersCmdLibSexLabDependent/-1000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersExtensionCore-libraries.json/sl_triggersCmdLibCore/sl_triggersExtensionCore/10000)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:143] adding (sl_triggersExtensionSexLab-libraries.json/sl_triggersCmdLibSexLab/sl_triggersExtensionSexLab/-500)
[2026-05-29 09:03:30.235] [log] [info] [engine.cpp:167] 13 libraries available, processing
[2026-05-29 09:03:30.264] [log] [info] [engine.cpp:246] PrecacheLibraries completed
[2026-05-29 09:03:30.265] [log] [info] [core.h:274] Script pool initialized: 30 spells, 30 magic effects
[2026-05-29 09:04:22.683] [log] [info] [skse_events.cpp:413] sl-triggers starting session 1657377887
[2026-05-29 09:04:23.780] [log] [info] [sl_triggers.cpp:1095] SetExtensionEnabled: FunctionLibrary[ExtKey(sl_triggersExtensionSexLab) CmdLib(sl_triggersCmdLibSexLab) Pri(-500) Enabled(true)]
[2026-05-29 09:04:23.780] [log] [info] [engine.cpp:167] 13 libraries available, processing
[2026-05-29 09:04:26.629] [log] [info] [sl_triggers.cpp:1095] SetExtensionEnabled: FunctionLibrary[ExtKey(sl_triggersExtensionCore) CmdLib(sl_triggersCmdLibCore) Pri(10000) Enabled(true)]
[2026-05-29 09:04:26.629] [log] [info] [engine.cpp:167] 13 libraries available, processing
[2026-05-29 09:04:28.316] [log] [info] [sl_triggers.cpp:1109] SwimHooks processing enabled(false)
[2026-05-29 09:04:28.391] [log] [info] [sl_triggers.cpp:1141] SoulsTrapped sink enabled(false)
[2026-05-29 09:04:28.441] [log] [info] [sl_triggers.cpp:1119] EquipEvent sink enabled(false)
[2026-05-29 09:04:28.515] [log] [info] [sl_triggers.cpp:1114] CombatEvent sink enabled(false)
[2026-05-29 09:04:28.565] [log] [info] [sl_triggers.cpp:1124] HitEvent sink enabled(false)
[2026-05-29 09:04:28.640] [log] [info] [sl_triggers.cpp:1136] HarvestedEvent sink enabled(false)
[2026-05-29 09:04:28.716] [log] [info] [sl_triggers.cpp:751] ConsoleUtil Extended found, using that
[2026-05-29 09:07:12.238] [log] [debug] [sl_triggers.cpp:743] Core.SLTReady
[2026-05-29 09:07:12.263] [log] [debug] [sl_triggers.cpp:743] Core.PopulatePerk
[2026-05-29 09:07:12.313] [log] [debug] [sl_triggers.cpp:743] Core.ClearKeystates
[2026-05-29 09:07:12.363] [log] [debug] [sl_triggers.cpp:743] Core.RefreshData
[2026-05-29 09:07:12.703] [log] [debug] [sl_triggers.cpp:743] Core.RegisterEvents
[2026-05-29 09:07:12.883] [log] [info] [sl_triggers.cpp:1109] SwimHooks processing enabled(false)
[2026-05-29 09:07:12.933] [log] [info] [sl_triggers.cpp:1141] SoulsTrapped sink enabled(false)
[2026-05-29 09:07:12.983] [log] [info] [sl_triggers.cpp:1119] EquipEvent sink enabled(false)
[2026-05-29 09:07:13.058] [log] [info] [sl_triggers.cpp:1114] CombatEvent sink enabled(false)
[2026-05-29 09:07:13.108] [log] [info] [sl_triggers.cpp:1124] HitEvent sink enabled(false)
[2026-05-29 09:07:13.158] [log] [info] [sl_triggers.cpp:1136] HarvestedEvent sink enabled(false)
[2026-05-29 09:09:01.614] [log] [info] [sl_triggers.cpp:59] Successfully deleted: Data\SKSE\Plugins\sl_triggers\extensions\sl_triggersExtensionAdultGeneral\trigger001.json
[2026-05-29 09:10:09.559] [log] [debug] [sl_triggers.cpp:743] Core.SLTReady
[2026-05-29 09:10:09.584] [log] [debug] [sl_triggers.cpp:743] Core.PopulatePerk
[2026-05-29 09:10:09.634] [log] [debug] [sl_triggers.cpp:743] Core.ClearKeystates
[2026-05-29 09:10:09.684] [log] [debug] [sl_triggers.cpp:743] Core.RefreshData
[2026-05-29 09:10:09.734] [log] [debug] [sl_triggers.cpp:743] Core.RegisterEvents
[2026-05-29 09:10:09.983] [log] [info] [sl_triggers.cpp:1109] SwimHooks processing enabled(false)
[2026-05-29 09:10:10.058] [log] [info] [sl_triggers.cpp:1141] SoulsTrapped sink enabled(false)
[2026-05-29 09:10:10.484] [log] [info] [sl_triggers.cpp:1119] EquipEvent sink enabled(false)
[2026-05-29 09:10:10.583] [log] [info] [sl_triggers.cpp:1114] CombatEvent sink enabled(false)
[2026-05-29 09:10:10.634] [log] [info] [sl_triggers.cpp:1124] HitEvent sink enabled(false)
[2026-05-29 09:10:10.684] [log] [info] [sl_triggers.cpp:1136] HarvestedEvent sink enabled(false)
[2026-05-29 09:10:22.871] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:10:22.971] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(637.965027)
[2026-05-29 09:10:23.096] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:10:23.122] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:10:23.146] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:10:23.196] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:10:23.221] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:10:23.246] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:10:23.270] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:10:23.296] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:10:23.346] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:10:23.922] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:10:24.197] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:10:24.445] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:10:24.895] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:10:25.269] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:10:28.152] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:10:28.552] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:10:28.926] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:10:29.577] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:10:30.077] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:10:30.578] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:10:32.401] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:10:33.300] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:10:33.950] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:10:34.575] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:10:35.497] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:10:36.147] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:10:36.796] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name=Siddgeir (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:10:36.996] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Siddgeir
[2026-05-29 09:10:37.724] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Siddgeir inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:10:40.142] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Siddgeir
[2026-05-29 09:10:40.739] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:11:43.539] [log] [debug] [sl_triggers.cpp:743] Core.HandleLocationChanged: akOldLoc([Location <FalkreathJarlsLonghouseLocation (000200C9)>]) akNewLoc([Location <FalkreathLocation (00018A49)>])
[2026-05-29 09:11:46.360] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:11:48.278] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=0 (true=Actor ref)
[2026-05-29 09:11:55.348] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=1 actor_isvalid=false typeid=5 GetFormID=-16761421 name=Bard
[2026-05-29 09:11:55.597] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:11:56.967] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:11:57.899] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=0 (true=Actor ref)
[2026-05-29 09:12:01.835] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=2 actor_isvalid=false typeid=5 GetFormID=490855 name=Legate Skulnar
[2026-05-29 09:12:02.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:12:02.813] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:12:03.921] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=0 (true=Actor ref)
[2026-05-29 09:12:08.030] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=3 actor_isvalid=false typeid=5 GetFormID=-32503402 name=Jonzo
[2026-05-29 09:12:08.315] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:12:09.143] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:12:10.385] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)
[2026-05-29 09:12:11.137] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=4] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:12:11.885] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=4 name=Lenore (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:12:12.089] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Lenore
[2026-05-29 09:12:12.773] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Lenore inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:12:15.247] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Lenore
[2026-05-29 09:12:15.819] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:12:16.543] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=5 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:12:17.294] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=5] -> isValid=0 (true=Actor ref)
[2026-05-29 09:12:22.271] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=5 actor_isvalid=false typeid=5 GetFormID=50352662 name=Rayya
[2026-05-29 09:12:22.597] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=5 advancing i++
[2026-05-29 09:12:23.296] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=6 listCount=7 castSoFar=0 (next=nearby ref)
[2026-05-29 09:12:24.319] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=6] -> isValid=1 (true=Actor ref)
[2026-05-29 09:12:25.070] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=6] -> isPlayer=TRUE (true=skip player not NPC)
[2026-05-29 09:12:28.498] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP player ref actor_isplayer=true index i=6 name=Dominus (not an NPC target)
[2026-05-29 09:12:29.022] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=6 advancing i++
[2026-05-29 09:12:32.104] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:12:32.193] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(701.117004)
[2026-05-29 09:12:32.334] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:12:33.156] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=0 (persona casts this run)
[2026-05-29 09:12:33.473] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT castSoFar=0 (no DOMPersonaReadSpell cast this run; NPCs skipped facet/player/invalid or list empty returned earlier)
[2026-05-29 09:13:34.021] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:13:34.096] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(761.170044)
[2026-05-29 09:13:34.194] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:13:34.220] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:13:34.247] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:13:34.270] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:13:34.295] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:13:34.320] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:13:34.370] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:13:34.395] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:13:34.444] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:13:35.019] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:13:35.218] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:13:35.468] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:13:35.872] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:13:36.277] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:13:36.674] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:13:37.098] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:13:37.473] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:13:37.974] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:13:38.482] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:13:38.906] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:13:40.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:13:41.961] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:13:42.582] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:13:43.181] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=27 castSoFar=0 (next=nearby ref)
[2026-05-29 09:13:43.906] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=0 (true=Actor ref)
[2026-05-29 09:13:47.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=0 actor_isvalid=false typeid=5 GetFormID=349780 name=Stormcloak Soldier
[2026-05-29 09:13:47.887] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:13:48.638] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=27 castSoFar=0 (next=nearby ref)
[2026-05-29 09:13:49.587] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=0 (true=Actor ref)
[2026-05-29 09:13:53.637] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=1 actor_isvalid=false typeid=5 GetFormID=-16762819 name=Dark Elf
[2026-05-29 09:13:53.912] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:13:54.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=27 castSoFar=0 (next=nearby ref)
[2026-05-29 09:13:55.509] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=1 (true=Actor ref)
[2026-05-29 09:13:56.133] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=2] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:13:56.883] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=2 name=Asgoke Free-eye (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:13:57.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Asgoke Free-eye
[2026-05-29 09:13:57.707] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Asgoke Free-eye inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:00.104] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Asgoke Free-eye
[2026-05-29 09:14:00.847] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:14:01.550] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=27 castSoFar=0 (next=nearby ref)
[2026-05-29 09:14:02.496] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=1 (true=Actor ref)
[2026-05-29 09:14:03.196] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=3] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:14:03.846] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=3 name=Falkreath Guard (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:14:04.021] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Falkreath Guard
[2026-05-29 09:14:04.704] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Falkreath Guard inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:05.078] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Falkreath Guard (persona read)
[2026-05-29 09:14:05.586] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=1 after spell_cast
[2026-05-29 09:14:05.882] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Falkreath Guard
[2026-05-29 09:14:06.335] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Falkreath Guard gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:14:08.970] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name=Falkreath Guard (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:14:09.695] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:14:10.520] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=27 castSoFar=1 (next=nearby ref)
[2026-05-29 09:14:11.271] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=0 (true=Actor ref)
[2026-05-29 09:14:15.048] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=4 actor_isvalid=false typeid=5 GetFormID=202646700 name=Florentus
[2026-05-29 09:14:15.374] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:14:16.102] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=5 listCount=27 castSoFar=1 (next=nearby ref)
[2026-05-29 09:14:17.091] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=5] -> isValid=1 (true=Actor ref)
[2026-05-29 09:14:17.824] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=5] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:14:18.597] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=5 name=Cyrodilic Minotaur (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:14:18.792] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Cyrodilic Minotaur
[2026-05-29 09:14:19.581] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Cyrodilic Minotaur inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:22.525] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Cyrodilic Minotaur
[2026-05-29 09:14:23.232] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=5 advancing i++
[2026-05-29 09:14:23.956] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=6 listCount=27 castSoFar=1 (next=nearby ref)
[2026-05-29 09:14:25.405] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=6] -> isValid=1 (true=Actor ref)
[2026-05-29 09:14:26.087] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=6] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:14:26.818] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=6 name=Lod (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:14:27.092] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Lod
[2026-05-29 09:14:27.742] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Lod inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:28.069] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Lod (persona read)
[2026-05-29 09:14:28.721] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=2 after spell_cast
[2026-05-29 09:14:29.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Lod
[2026-05-29 09:14:29.577] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Lod gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:14:32.438] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name=Lod (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:14:33.436] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=6 advancing i++
[2026-05-29 09:14:34.291] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=7 listCount=27 castSoFar=2 (next=nearby ref)
[2026-05-29 09:14:35.167] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=7] -> isValid=0 (true=Actor ref)
[2026-05-29 09:14:36.330] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:14:36.431] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(821.234009)
[2026-05-29 09:14:36.556] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:14:38.931] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=7 actor_isvalid=false typeid=5 GetFormID=104481 name=Kust
[2026-05-29 09:14:39.130] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=7 advancing i++
[2026-05-29 09:14:39.930] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=8 listCount=27 castSoFar=2 (next=nearby ref)
[2026-05-29 09:14:40.830] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=8] -> isValid=1 (true=Actor ref)
[2026-05-29 09:14:41.479] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=8] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:14:42.153] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=8 name=Falkreath Guard (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:14:42.378] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Falkreath Guard
[2026-05-29 09:14:43.028] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Falkreath Guard inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:43.334] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Falkreath Guard (persona read)
[2026-05-29 09:14:44.003] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=3 after spell_cast
[2026-05-29 09:14:44.293] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Falkreath Guard
[2026-05-29 09:14:44.771] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Falkreath Guard gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:14:47.529] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name=Falkreath Guard (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:14:48.370] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=8 advancing i++
[2026-05-29 09:14:49.195] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=9 listCount=27 castSoFar=3 (next=nearby ref)
[2026-05-29 09:14:50.084] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=9] -> isValid=1 (true=Actor ref)
[2026-05-29 09:14:50.707] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=9] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:14:51.373] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=9 name=Adventurer (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:14:51.544] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Adventurer
[2026-05-29 09:14:52.140] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Adventurer inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:14:57.695] [log] [debug] [sl_triggers.cpp:743] Core.HandleLocationChanged: akOldLoc([Location <FalkreathLocation (00018A49)>]) akNewLoc([Location <FalkreathDeadMansDrinkLocation (0005CA26)>])
[2026-05-29 09:14:58.232] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Adventurer (persona read)
[2026-05-29 09:14:59.807] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=4 after spell_cast
[2026-05-29 09:15:00.172] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Adventurer
[2026-05-29 09:15:01.403] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Adventurer gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:15:06.017] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name=Adventurer (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:15:07.095] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=9 advancing i++
[2026-05-29 09:15:07.845] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=10 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:08.669] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=10] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:12.668] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=10 actor_isvalid=false typeid=5 GetFormID=490856 name=Thorygg Sun-Killer
[2026-05-29 09:15:12.869] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=10 advancing i++
[2026-05-29 09:15:13.645] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=11 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:14.567] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=11] -> isValid=1 (true=Actor ref)
[2026-05-29 09:15:15.302] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=11] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:15:16.102] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=11 name=Lenore (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:15:16.329] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Lenore
[2026-05-29 09:15:17.003] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Lenore inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:15:19.599] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Lenore
[2026-05-29 09:15:20.274] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=11 advancing i++
[2026-05-29 09:15:20.998] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=12 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:21.958] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=12] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:25.892] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=12 actor_isvalid=false typeid=5 GetFormID=202124665 name=Brakh
[2026-05-29 09:15:26.192] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=12 advancing i++
[2026-05-29 09:15:27.015] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=13 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:27.738] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=13] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:31.410] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=13 actor_isvalid=false typeid=5 GetFormID=202646727 name=Sellsword
[2026-05-29 09:15:31.711] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=13 advancing i++
[2026-05-29 09:15:32.859] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=14 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:33.658] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=14] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:37.382] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=14 actor_isvalid=false typeid=5 GetFormID=202646725 name=Sellsword
[2026-05-29 09:15:37.614] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=14 advancing i++
[2026-05-29 09:15:38.362] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=15 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:39.311] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=15] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:43.098] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=15 actor_isvalid=false typeid=5 GetFormID=-16762809 name=Orc
[2026-05-29 09:15:43.446] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=15 advancing i++
[2026-05-29 09:15:43.946] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:15:44.022] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(881.700012)
[2026-05-29 09:15:44.197] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:15:44.221] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:15:44.247] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:15:44.270] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:15:44.322] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:15:44.322] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=16 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:44.370] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:15:44.395] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:15:44.420] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:15:44.470] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:15:45.071] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:15:45.345] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=16] -> isValid=0 (true=Actor ref)
[2026-05-29 09:15:45.371] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:15:45.645] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:15:46.294] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:15:46.943] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:15:47.618] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:15:48.468] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:15:49.093] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:15:49.917] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:15:50.515] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:15:50.942] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:15:51.165] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=16 actor_isvalid=false typeid=5 GetFormID=349774 name=Falkreath Guard
[2026-05-29 09:15:51.489] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=16 advancing i++
[2026-05-29 09:15:52.867] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=17 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:15:54.016] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:15:54.217] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=17] -> isValid=1 (true=Actor ref)
[2026-05-29 09:15:54.963] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=17] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:15:55.490] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:15:55.938] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=17 name=Runil (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:15:56.289] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Runil
[2026-05-29 09:15:56.490] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:15:57.211] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Runil inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:15:57.336] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=19 castSoFar=0 (next=nearby ref)
[2026-05-29 09:15:58.692] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:15:59.843] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:16:00.987] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name=Kust (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:16:01.188] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Runil
[2026-05-29 09:16:01.439] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Kust
[2026-05-29 09:16:02.062] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=17 advancing i++
[2026-05-29 09:16:02.712] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Kust inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:16:03.086] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=18 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:04.588] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=18] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:07.260] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Kust
[2026-05-29 09:16:08.433] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:16:09.707] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=19 castSoFar=0 (next=nearby ref)
[2026-05-29 09:16:10.956] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:11.555] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=18 actor_isvalid=false typeid=5 GetFormID=202646729 name=Sellsword
[2026-05-29 09:16:12.030] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=18 advancing i++
[2026-05-29 09:16:13.277] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=19 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:14.501] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=19] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:18.023] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=1 actor_isvalid=false typeid=5 GetFormID=154205065 name=Anerchel
[2026-05-29 09:16:18.398] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:16:19.671] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=19 castSoFar=0 (next=nearby ref)
[2026-05-29 09:16:20.495] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=19 actor_isvalid=false typeid=5 GetFormID=-16760040 name=Thief
[2026-05-29 09:16:20.745] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=19 advancing i++
[2026-05-29 09:16:20.770] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:21.798] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=20 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:22.918] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=20] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:27.214] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=2 actor_isvalid=false typeid=5 GetFormID=-16762289 name=Adventurer
[2026-05-29 09:16:27.688] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:16:28.937] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=19 castSoFar=0 (next=nearby ref)
[2026-05-29 09:16:29.886] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=20 actor_isvalid=false typeid=5 GetFormID=-16760044 name=IMPERIAL
[2026-05-29 09:16:30.089] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=20 advancing i++
[2026-05-29 09:16:30.461] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=1 (true=Actor ref)
[2026-05-29 09:16:31.310] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=21 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:31.460] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=3] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:16:32.462] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=21] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:32.610] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=3 name=Moraya the Cocksucker (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:16:32.854] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Moraya the Cocksucker
[2026-05-29 09:16:34.007] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Moraya the Cocksucker inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:16:34.430] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Moraya the Cocksucker (persona read)
[2026-05-29 09:16:35.453] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=1 after spell_cast
[2026-05-29 09:16:35.704] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Moraya the Cocksucker
[2026-05-29 09:16:36.402] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Moraya the Cocksucker gender=1 (1=female 2=futa 0=male)
[2026-05-29 09:16:38.125] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train enter virgin rank reads for name=Moraya the Cocksucker (rank 4 = train gate per lane; form none = lane skipped entirely)
[2026-05-29 09:16:39.149] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginOral name=Moraya the Cocksucker rank=-2
[2026-05-29 09:16:39.374] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=21 actor_isvalid=false typeid=5 GetFormID=202646721 name=Sellsword
[2026-05-29 09:16:39.823] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=21 advancing i++
[2026-05-29 09:16:40.272] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginAnal name=Moraya the Cocksucker rank=-2
[2026-05-29 09:16:41.074] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=22 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:41.597] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginVaginal name=Moraya the Cocksucker rank=-2
[2026-05-29 09:16:42.495] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=22] -> isValid=1 (true=Actor ref)
[2026-05-29 09:16:42.646] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train oral DOMVirginOral rank=-2 (need 4) name=Moraya the Cocksucker
[2026-05-29 09:16:43.519] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=22] -> isPlayer=TRUE (true=skip player not NPC)
[2026-05-29 09:16:44.669] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train anal DOMVirginAnal rank=-2 (need 4) name=Moraya the Cocksucker
[2026-05-29 09:16:46.466] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:16:46.542] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(941.761047)
[2026-05-29 09:16:46.566] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train vaginal DOMVirginVaginal rank=-2 (need 4) name=Moraya the Cocksucker
[2026-05-29 09:16:46.667] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:16:48.640] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:16:48.889] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP player ref actor_isplayer=true index i=22 name=Dominus (not an NPC target)
[2026-05-29 09:16:49.913] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=22 advancing i++
[2026-05-29 09:16:50.013] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=19 castSoFar=1 (next=nearby ref)
[2026-05-29 09:16:51.187] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)
[2026-05-29 09:16:51.387] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=23 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:16:52.186] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=4] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:16:52.537] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=23] -> isValid=0 (true=Actor ref)
[2026-05-29 09:16:53.334] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=4 name=Haesmar Pine-Heart (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:16:53.735] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Haesmar Pine-Heart
[2026-05-29 09:16:55.059] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Haesmar Pine-Heart inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:16:58.806] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=23 actor_isvalid=false typeid=5 GetFormID=349779 name=Stormcloak Soldier
[2026-05-29 09:16:59.130] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=23 advancing i++
[2026-05-29 09:17:00.129] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=24 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:17:00.154] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Haesmar Pine-Heart
[2026-05-29 09:17:01.153] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:17:01.601] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=24] -> isValid=0 (true=Actor ref)
[2026-05-29 09:17:02.426] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=5 listCount=19 castSoFar=1 (next=nearby ref)
[2026-05-29 09:17:04.024] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=5] -> isValid=1 (true=Actor ref)
[2026-05-29 09:17:05.348] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=5] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:17:06.896] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=5 name=Shura the Whore (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:17:07.172] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Shura the Whore
[2026-05-29 09:17:07.945] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=24 actor_isvalid=false typeid=5 GetFormID=1074864 name=chicken
[2026-05-29 09:17:08.045] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Shura the Whore inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:17:08.445] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Shura the Whore (persona read)
[2026-05-29 09:17:08.495] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=24 advancing i++
[2026-05-29 09:17:09.419] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=25 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:17:09.519] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=2 after spell_cast
[2026-05-29 09:17:09.769] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Shura the Whore
[2026-05-29 09:17:10.393] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Shura the Whore gender=1 (1=female 2=futa 0=male)
[2026-05-29 09:17:10.743] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=25] -> isValid=0 (true=Actor ref)
[2026-05-29 09:17:11.867] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train enter virgin rank reads for name=Shura the Whore (rank 4 = train gate per lane; form none = lane skipped entirely)
[2026-05-29 09:17:13.241] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginOral name=Shura the Whore rank=-2
[2026-05-29 09:17:14.788] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginAnal name=Shura the Whore rank=-2
[2026-05-29 09:17:16.088] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginVaginal name=Shura the Whore rank=-2
[2026-05-29 09:17:16.463] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=25 actor_isvalid=false typeid=5 GetFormID=267514 name=Goat
[2026-05-29 09:17:16.787] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=25 advancing i++
[2026-05-29 09:17:17.687] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train oral DOMVirginOral rank=-2 (need 4) name=Shura the Whore
[2026-05-29 09:17:18.036] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=26 listCount=27 castSoFar=4 (next=nearby ref)
[2026-05-29 09:17:19.235] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train anal DOMVirginAnal rank=-2 (need 4) name=Shura the Whore
[2026-05-29 09:17:19.411] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=26] -> isValid=0 (true=Actor ref)
[2026-05-29 09:17:21.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train vaginal DOMVirginVaginal rank=-2 (need 4) name=Shura the Whore
[2026-05-29 09:17:22.981] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=5 advancing i++
[2026-05-29 09:17:24.330] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=6 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:17:25.415] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=6] -> isValid=0 (true=Actor ref)
[2026-05-29 09:17:26.003] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=26 actor_isvalid=false typeid=5 GetFormID=349771 name=Falkreath Guard
[2026-05-29 09:17:26.377] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=26 advancing i++
[2026-05-29 09:17:32.579] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=6 actor_isvalid=false typeid=5 GetFormID=-33359551 name=Bjar Ice-Vein
[2026-05-29 09:17:32.604] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=4 (persona casts this run)
[2026-05-29 09:17:32.804] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=6 advancing i++
[2026-05-29 09:17:33.145] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[227]: [DOM-PR] v2m Read 4 mind(s)
[2026-05-29 09:17:33.895] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=7 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:17:34.882] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=7] -> isValid=1 (true=Actor ref)
[2026-05-29 09:17:35.630] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=7] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:17:36.312] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=7 name=Mathies (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:17:36.535] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Mathies
[2026-05-29 09:17:37.234] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Mathies inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:17:40.130] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Mathies
[2026-05-29 09:17:40.781] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=7 advancing i++
[2026-05-29 09:17:41.529] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=8 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:17:42.453] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=8] -> isValid=1 (true=Actor ref)
[2026-05-29 09:17:43.052] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=8] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:17:43.776] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=8 name=Runil (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:17:44.027] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Runil
[2026-05-29 09:17:44.651] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Runil inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:17:47.177] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Runil
[2026-05-29 09:17:47.851] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=8 advancing i++
[2026-05-29 09:17:48.598] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=9 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:17:49.085] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:17:49.159] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1001.822021)
[2026-05-29 09:17:49.284] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:17:49.310] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:17:49.335] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:17:49.360] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:17:49.386] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:17:49.410] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:17:49.460] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:17:49.485] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:17:49.535] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:17:49.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=9] -> isValid=1 (true=Actor ref)
[2026-05-29 09:17:50.358] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:17:50.608] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=9] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:17:50.658] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:17:50.883] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:17:51.482] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:17:51.858] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=9 name=Asgoke Free-eye (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:17:54.635] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Asgoke Free-eye
[2026-05-29 09:17:54.734] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:17:55.234] [log] [debug] [sl_triggers.cpp:743] Core.HandleOnKeyDown: starting
[2026-05-29 09:17:55.459] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:17:55.574] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Asgoke Free-eye inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:18:22.705] [log] [debug] [sl_triggers.cpp:743] Core.HandleLocationChanged: akOldLoc([Location <FalkreathDeadMansDrinkLocation (0005CA26)>]) akNewLoc([Location <aaaCJWInteriorLocation (EF048CB6)>])
[2026-05-29 09:18:24.002] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:18:24.808] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:18:25.658] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:18:26.532] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:18:27.312] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:18:28.064] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Asgoke Free-eye
[2026-05-29 09:18:29.015] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=9 advancing i++
[2026-05-29 09:18:30.112] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:18:30.391] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=10 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:18:31.164] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:18:31.593] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=10] -> isValid=1 (true=Actor ref)
[2026-05-29 09:18:32.140] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:18:33.026] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=10] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:18:33.100] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=14 castSoFar=0 (next=nearby ref)
[2026-05-29 09:18:34.061] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=10 name=Lenore (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:18:34.332] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Lenore
[2026-05-29 09:18:34.433] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:18:35.534] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:18:35.739] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Lenore inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:18:36.660] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:18:36.923] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:18:37.996] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:18:38.777] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:18:39.563] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=1 after spell_cast
[2026-05-29 09:18:40.048] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:18:40.164] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Lenore
[2026-05-29 09:18:40.894] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:18:41.123] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=10 advancing i++
[2026-05-29 09:18:42.320] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=11 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:18:43.775] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=11] -> isValid=0 (true=Actor ref)
[2026-05-29 09:18:45.288] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:18:46.396] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:18:47.757] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=14 castSoFar=1 (next=nearby ref)
[2026-05-29 09:18:49.263] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=1 (true=Actor ref)
[2026-05-29 09:18:50.313] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=1] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:18:50.988] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=11 actor_isvalid=false typeid=5 GetFormID=-33378259 name=Stellan Hagen
[2026-05-29 09:18:51.211] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=1 name=Daighre (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:18:51.311] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=11 advancing i++
[2026-05-29 09:18:51.536] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Daighre
[2026-05-29 09:18:52.516] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Daighre inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:18:52.895] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=12 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:18:52.945] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Daighre (persona read)
[2026-05-29 09:18:53.745] [log] [debug] [sl_triggers.cpp:743] Core.HandleOnKeyDown: starting
[2026-05-29 09:18:53.893] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=2 after spell_cast
[2026-05-29 09:18:54.174] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Daighre
[2026-05-29 09:18:54.200] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=12] -> isValid=0 (true=Actor ref)
[2026-05-29 09:19:21.509] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Daighre gender=1 (1=female 2=futa 0=male)
[2026-05-29 09:19:22.883] [log] [debug] [sl_triggers.cpp:743] Core.HandleOnKeyDown: starting
[2026-05-29 09:19:23.308] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train enter virgin rank reads for name=Daighre (rank 4 = train gate per lane; form none = lane skipped entirely)
[2026-05-29 09:19:25.530] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginOral name=Daighre rank=0
[2026-05-29 09:19:26.130] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=12 actor_isvalid=false typeid=5 GetFormID=-33355755 name=Lufani the Slut
[2026-05-29 09:19:26.530] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=12 advancing i++
[2026-05-29 09:19:26.854] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginAnal name=Daighre rank=0
[2026-05-29 09:19:27.903] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=13 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:19:28.053] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginVaginal name=Daighre rank=0
[2026-05-29 09:19:29.202] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=13] -> isValid=0 (true=Actor ref)
[2026-05-29 09:19:29.376] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train oral DOMVirginOral rank=0 (need 4) name=Daighre
[2026-05-29 09:19:31.278] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train anal DOMVirginAnal rank=0 (need 4) name=Daighre
[2026-05-29 09:19:33.323] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train vaginal DOMVirginVaginal rank=0 (need 4) name=Daighre
[2026-05-29 09:19:35.471] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:19:35.870] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=13 actor_isvalid=false typeid=5 GetFormID=154205067 name=Tuula
[2026-05-29 09:19:36.246] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=13 advancing i++
[2026-05-29 09:19:36.745] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=14 castSoFar=2 (next=nearby ref)
[2026-05-29 09:19:37.519] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=14 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:19:38.418] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=1 (true=Actor ref)
[2026-05-29 09:19:39.267] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=2] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:19:39.368] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=14] -> isValid=0 (true=Actor ref)
[2026-05-29 09:19:40.417] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=2 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:19:40.717] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:19:41.690] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:19:42.216] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:19:43.115] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=3 after spell_cast
[2026-05-29 09:19:43.414] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:19:44.140] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:19:46.045] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=14 actor_isvalid=false typeid=5 GetFormID=1023412519 name=Regrr Fenrensson
[2026-05-29 09:19:46.622] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=14 advancing i++
[2026-05-29 09:19:47.944] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:19:48.043] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=15 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:19:49.043] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:19:49.142] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:19:49.217] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1101.831055)
[2026-05-29 09:19:49.367] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:19:49.392] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=15] -> isValid=1 (true=Actor ref)
[2026-05-29 09:19:50.366] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=14 castSoFar=3 (next=nearby ref)
[2026-05-29 09:19:50.715] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=15] -> isPlayer=TRUE (true=skip player not NPC)
[2026-05-29 09:19:51.772] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=1 (true=Actor ref)
[2026-05-29 09:19:53.162] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=3] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:19:54.418] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=3 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:19:54.643] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:19:55.692] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:19:56.216] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP player ref actor_isplayer=true index i=15 name=Dominus (not an NPC target)
[2026-05-29 09:19:56.316] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:19:57.065] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=15 advancing i++
[2026-05-29 09:19:57.490] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=4 after spell_cast
[2026-05-29 09:19:57.865] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:19:58.164] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=16 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:19:58.539] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:19:59.664] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=16] -> isValid=0 (true=Actor ref)
[2026-05-29 09:20:02.986] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:20:04.085] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:20:05.582] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=14 castSoFar=4 (next=nearby ref)
[2026-05-29 09:20:06.557] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=16 actor_isvalid=false typeid=5 GetFormID=468583 name=Delacourt
[2026-05-29 09:20:06.782] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)
[2026-05-29 09:20:07.006] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=16 advancing i++
[2026-05-29 09:20:07.956] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=4] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:20:08.056] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=17 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:20:08.980] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=17] -> isValid=0 (true=Actor ref)
[2026-05-29 09:20:09.179] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=4 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:20:09.829] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:20:10.833] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:20:11.382] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:20:12.306] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=5 after spell_cast
[2026-05-29 09:20:12.681] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:20:13.355] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:20:15.878] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=17 actor_isvalid=false typeid=5 GetFormID=-33358714 name=Lory
[2026-05-29 09:20:16.203] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=17 advancing i++
[2026-05-29 09:20:17.661] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:20:17.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=18 listCount=19 castSoFar=2 (next=nearby ref)
[2026-05-29 09:20:18.825] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:20:18.924] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=18] -> isValid=0 (true=Actor ref)
[2026-05-29 09:20:19.846] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP halt castSoFar=5 >= MAX_TARGETS=5 -> goto done (no more casts this run)
[2026-05-29 09:20:20.320] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=5 (persona casts this run)
[2026-05-29 09:20:20.845] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[227]: [DOM-PR] v2m Read 5 mind(s)
[2026-05-29 09:20:23.742] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP invalid ref index i=18 actor_isvalid=false typeid=5 GetFormID=-33355764 name=Jenna the Whore
[2026-05-29 09:20:24.017] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=18 advancing i++
[2026-05-29 09:20:27.523] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=2 (persona casts this run)
[2026-05-29 09:20:29.829] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[227]: [DOM-PR] v2m Read 2 mind(s)
[2026-05-29 09:21:36.111] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:21:36.187] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1204.764038)
[2026-05-29 09:21:36.311] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:21:36.337] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:21:36.361] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:21:36.387] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:21:36.411] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:21:36.435] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:21:36.461] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:21:36.489] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:21:36.536] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:21:37.087] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:21:37.287] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:21:37.511] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:21:37.935] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:21:38.309] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:21:38.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:21:39.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:21:39.434] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:21:39.857] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:21:40.207] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:21:40.608] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:21:42.455] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:21:43.429] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:21:44.003] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:21:44.578] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=14 castSoFar=0 (next=nearby ref)
[2026-05-29 09:21:45.501] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:21:46.200] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:21:46.925] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:21:47.149] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:21:47.774] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:21:48.099] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:21:48.748] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=1 after spell_cast
[2026-05-29 09:21:49.000] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:21:49.499] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:21:52.144] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:21:52.894] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:21:53.618] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=14 castSoFar=1 (next=nearby ref)
[2026-05-29 09:21:54.543] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=1 (true=Actor ref)
[2026-05-29 09:21:55.292] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=1] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:21:55.942] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=1 name=Daighre (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:21:56.166] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Daighre
[2026-05-29 09:21:56.790] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Daighre inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:21:59.612] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Daighre
[2026-05-29 09:22:00.264] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:22:01.062] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=14 castSoFar=1 (next=nearby ref)
[2026-05-29 09:22:01.910] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=1 (true=Actor ref)
[2026-05-29 09:22:02.510] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=2] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:22:03.285] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=2 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:22:03.485] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:22:04.158] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:22:04.484] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:22:05.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=2 after spell_cast
[2026-05-29 09:22:05.235] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:22:05.732] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:22:08.344] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:22:09.093] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:22:09.892] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=14 castSoFar=2 (next=nearby ref)
[2026-05-29 09:22:10.792] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=1 (true=Actor ref)
[2026-05-29 09:22:11.390] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=3] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:22:12.190] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=3 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:22:12.414] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:22:13.040] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:22:13.314] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:22:13.863] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=3 after spell_cast
[2026-05-29 09:22:14.188] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:22:14.687] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:22:17.361] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:22:18.085] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:22:18.884] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=14 castSoFar=3 (next=nearby ref)
[2026-05-29 09:22:19.758] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)
[2026-05-29 09:22:20.382] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=4] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:22:21.058] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=4 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:22:21.282] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:22:21.912] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:22:22.236] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:22:22.810] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=4 after spell_cast
[2026-05-29 09:22:23.035] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:22:23.535] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:22:26.082] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:22:26.780] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:22:27.529] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=5 listCount=14 castSoFar=4 (next=nearby ref)
[2026-05-29 09:22:28.849] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=5] -> isValid=1 (true=Actor ref)
[2026-05-29 09:22:29.549] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=5] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:22:30.374] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=5 name=Viania (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:22:30.648] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Viania
[2026-05-29 09:22:31.372] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Viania inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:22:31.648] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target=Viania (persona read)
[2026-05-29 09:22:32.318] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=5 after spell_cast
[2026-05-29 09:22:32.593] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=Viania
[2026-05-29 09:22:33.091] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name=Viania gender=1 (1=female 2=futa 0=male)
[2026-05-29 09:22:33.941] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train enter virgin rank reads for name=Viania (rank 4 = train gate per lane; form none = lane skipped entirely)
[2026-05-29 09:22:34.782] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginOral name=Viania rank=-2
[2026-05-29 09:22:35.577] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginAnal name=Viania rank=-2
[2026-05-29 09:22:36.369] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getfactionrank faction=DOMVirginVaginal name=Viania rank=-2
[2026-05-29 09:22:37.193] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train oral DOMVirginOral rank=-2 (need 4) name=Viania
[2026-05-29 09:22:38.267] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train anal DOMVirginAnal rank=-2 (need 4) name=Viania
[2026-05-29 09:22:39.341] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:22:39.391] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train vaginal DOMVirginVaginal rank=-2 (need 4) name=Viania
[2026-05-29 09:22:39.416] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1265.425049)
[2026-05-29 09:22:39.566] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:22:40.515] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=5 advancing i++
[2026-05-29 09:22:41.140] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP halt castSoFar=5 >= MAX_TARGETS=5 -> goto done (no more casts this run)
[2026-05-29 09:22:41.340] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=5 (persona casts this run)
[2026-05-29 09:22:41.739] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[227]: [DOM-PR] v2m Read 5 mind(s)
[2026-05-29 09:23:44.780] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:23:44.854] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1328.295044)
[2026-05-29 09:23:44.955] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:23:44.980] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:23:45.005] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:23:45.030] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:23:45.054] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:23:45.080] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:23:45.104] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:23:45.129] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:23:45.180] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:23:45.730] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:23:45.953] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:23:46.179] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:23:46.603] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:23:46.978] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:23:47.378] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:23:47.752] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:23:48.178] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:23:48.652] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:23:49.076] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:23:49.449] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:23:51.147] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:23:52.072] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:23:52.646] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:23:53.296] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=14 castSoFar=0 (next=nearby ref)
[2026-05-29 09:23:54.270] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:23:54.919] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:23:55.568] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:23:55.768] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:23:56.392] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:23:56.692] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:23:57.317] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=1 after spell_cast
[2026-05-29 09:23:57.541] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:23:57.991] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:24:00.638] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:24:01.412] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=0 advancing i++
[2026-05-29 09:24:02.187] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=1 listCount=14 castSoFar=1 (next=nearby ref)
[2026-05-29 09:24:03.061] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=1] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:03.661] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=1] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:04.310] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=1 name=Daighre (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:24:04.609] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Daighre
[2026-05-29 09:24:05.284] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Daighre inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:24:08.181] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Daighre
[2026-05-29 09:24:08.830] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=1 advancing i++
[2026-05-29 09:24:09.630] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=2 listCount=14 castSoFar=1 (next=nearby ref)
[2026-05-29 09:24:10.528] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=2] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:11.253] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=2] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:11.952] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=2 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:24:12.177] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:24:12.858] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:24:13.216] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:24:15.037] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=2 after spell_cast
[2026-05-29 09:24:15.237] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:24:15.712] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:24:18.359] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:24:19.109] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=2 advancing i++
[2026-05-29 09:24:19.833] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=3 listCount=14 castSoFar=2 (next=nearby ref)
[2026-05-29 09:24:20.757] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=3] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:21.431] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=3] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:22.156] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=3 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:24:22.380] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:24:23.029] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:24:23.329] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:24:23.929] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=3 after spell_cast
[2026-05-29 09:24:24.104] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:24:24.578] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:24:27.200] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:24:27.950] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=3 advancing i++
[2026-05-29 09:24:28.699] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=4 listCount=14 castSoFar=3 (next=nearby ref)
[2026-05-29 09:24:29.623] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=4] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:30.272] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=4] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:30.972] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=4 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:24:31.147] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:24:31.896] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:24:32.246] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:24:32.871] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=4 after spell_cast
[2026-05-29 09:24:33.170] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:24:33.644] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:24:36.242] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:24:37.041] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=4 advancing i++
[2026-05-29 09:24:37.716] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=5 listCount=14 castSoFar=4 (next=nearby ref)
[2026-05-29 09:24:39.090] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=5] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:39.688] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=5] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:40.363] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=5 name=Viania (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:24:40.638] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=Viania
[2026-05-29 09:24:41.262] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name=Viania inFaction=TRUE (false=not yet smartness -> CAST spell)
[2026-05-29 09:24:43.685] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP persona DOMFacetSmartness actor_infaction=true already has facet name=Viania
[2026-05-29 09:24:44.335] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=5 advancing i++
[2026-05-29 09:24:45.083] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=6 listCount=14 castSoFar=4 (next=nearby ref)
[2026-05-29 09:24:46.033] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby[i=6] -> isValid=1 (true=Actor ref)
[2026-05-29 09:24:46.782] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby[i=6] -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:24:47.209] [log] [debug] [sl_triggers.cpp:743] Core.HandleOnKeyDown: starting
[2026-05-29 09:24:47.404] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=6 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:25:57.098] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:25:57.846] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_infaction DOMFacetSmartness name= inFaction=False (false=not yet smartness -> CAST spell)
[2026-05-29 09:25:58.095] [log] [debug] [sl_triggers.cpp:743] Core.OnUpdate
[2026-05-29 09:25:58.170] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: starting at nowtime(1456.679077)
[2026-05-29 09:25:58.221] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m ACTION spell_cast spell=DOMPersonaReadSpell target= (persona read)
[2026-05-29 09:25:58.346] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: running trigger (../sl_triggers/extensions/sl_triggersextensioncore/trigger006.json)
[2026-05-29 09:25:58.370] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_CHANCE
[2026-05-29 09:25:58.395] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_ARMED
[2026-05-29 09:25:58.420] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_CLOTHED
[2026-05-29 09:25:58.445] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_IS_WEAPON_DRAWN
[2026-05-29 09:25:58.470] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) from ATTR_DEEPLOCATION
[2026-05-29 09:25:58.495] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1()
[2026-05-29 09:25:58.570] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: doRun(TRUE) running SLTScript/1(_dom_persona_read)
[2026-05-29 09:25:58.645] [log] [debug] [sl_triggers.cpp:743] Core.HandleTimers: exiting
[2026-05-29 09:25:59.020] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT cast count castSoFar=5 after spell_cast
[2026-05-29 09:25:59.494] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=train actor_getgender name=
[2026-05-29 09:25:59.494] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=INIT script enter Persona Read timer fired
[2026-05-29 09:25:59.818] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CONFIG MAX_TARGETS=5 (cast cap per run)
[2026-05-29 09:26:00.043] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[26]: [DOM-PR] v2m Persona Read triggered
[2026-05-29 09:26:00.268] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m RESULT actor_getgender name= gender=0 (1=female 2=futa 0=male)
[2026-05-29 09:26:00.642] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMFacetSmartness -> facetSmartness form (none=missing mod)
[2026-05-29 09:26:01.585] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMPersonaReadSpell -> personaSpell form (none=missing mod)
[2026-05-29 09:26:02.084] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginAnal -> virginAnal faction (train gate later)
[2026-05-29 09:26:02.659] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginVaginal -> virginVaginal faction
[2026-05-29 09:26:03.558] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMVirginOral -> virginOral faction
[2026-05-29 09:26:04.209] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainAnal -> trainAnal faction
[2026-05-29 09:26:04.832] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m SKIP train branch gender=0 name= (only female=1 or futa=2 get virgin train rolls)
[2026-05-29 09:26:04.932] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainVaginal -> trainVaginal faction
[2026-05-29 09:26:05.781] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=FORM form_getbyid editor=DOMTrainOral -> trainOral faction
[2026-05-29 09:26:06.030] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP end iteration i=6 advancing i++
[2026-05-29 09:26:07.029] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP halt castSoFar=5 >= MAX_TARGETS=5 -> goto done (no more casts this run)
[2026-05-29 09:26:07.354] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=done label castSoFar=5 (persona casts this run)
[2026-05-29 09:26:07.979] [log] [info] [sl_triggers.cpp:751] SLTR:(_dom_persona_read.sltscript)[227]: [DOM-PR] v2m Read 5 mind(s)
[2026-05-29 09:26:08.678] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN util_scan_cell_npcs (no args) center=player default radius=whole cell dead=ignored
[2026-05-29 09:26:09.627] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=SCAN result listCount=$count variable=nearby (Form[] NPC refs)
[2026-05-29 09:26:10.227] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP begin while i<listCount i=0 castSoFar=0 cap=MAX_TARGETS
[2026-05-29 09:26:10.851] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP body iter index i=0 listCount=14 castSoFar=0 (next=nearby ref)
[2026-05-29 09:26:11.775] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isvalid nearby -> isValid=1 (true=Actor ref)
[2026-05-29 09:26:12.374] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_isplayer nearby -> isPlayer=False (true=skip player not NPC)
[2026-05-29 09:26:16.065] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m STEP=LOOP actor identity i=0 name= (next=actor_infaction DOMFacetSmartness)
[2026-05-29 09:26:16.265] [log] [debug] [sl_triggers.cpp:743] DebMsg> [DOM-PR] v2m CHECK actor_infaction faction=DOMFacetSmartness (facetSmartness form) actor=
[2026-05-29 09:26:20.429] [log] [debug] [fact_finder.cpp:173] Metrics on quit: 
counter_ProcessEvent_EquipEvent = 599
counter_ProcessEvent_HitEvent = 71
counter_ProcessEvent_CombatEvent = 4
counter_ProcessEvent_HarvestedEvent = 0
counter_ProcessEvent_SoulsTrapped = 0
counter_PollFacts_Swimming = 0
counter_SendEventAll_PlayerSwimEvent = 0
counter_SendEventAll_PlayerWaterEvent = 0
counter_SendEventAll_PlayerCombatStateChanged = 0
counter_SendEventAll_PlayerEquipEvent = 0
counter_SendEventAll_PlayerHitEvent = 0
counter_SendEventAll_Harvesting = 0
counter_SendEventAll_SoulTrapped = 0
counter_DelayedFunction_HandlePlayerCombatStatusChange = 0

 

 

 

 

 

 

On 5/15/2026 at 8:40 PM, hextun said:

Another odd question: how many times have you *loaded* this game? So... you started the save, new character. You play for a few hours and create 10 saves (don't laugh). You shut down. You come back to it a day later and start again. That's *one* load. You play another few hours; 10 more saves. You quit and start the next day. That's *two* loads. Approximate if you don't mind since specificity is unlikely: 1-5, 6-10, 11-15, etc.

 

 

i have 1000 saves on this one. 

but as soon as i get the stack frame error in resaver i reload an older save/remove the problematic mod so it's quite clean.

 

edit: i also noticed the timer triggers occur as soon as a save is reloaded. not sure it's a great idea given the heavy stress of papyrus when you reload a save.

instead if the timer is let's say 4 minutes, why not just wait the 4 minutes before running it for the first time?

Edited by Fraying9981
Posted
On 5/29/2026 at 8:35 AM, Fraying9981 said:

 

 

 

ok so I've done some testing.

 

Here is the report

 

  Hide contents

Resaver logs: good news: no stack frame error at all on multiple saves and locations!

 

Testing methodology:

4 locations 3 indoor 1 outdoor

1 indoor had 10+ profiles to generate (script is too slow to do all of them but at least no bloat according to resaver)

i saved in each location after a few minutes

core and core timer debug activated, see logs below

 

Script I used with timer 2 minutes:

 

 

 

 

 

 

 

i have 1000 saves on this one. 

but as soon as i get the stack frame error in resaver i reload an older save/remove the problematic mod so it's quite clean.

 

edit: i also noticed the timer triggers occur as soon as a save is reloaded. not sure it's a great idea given the heavy stress of papyrus when you reload a save.

instead if the timer is let's say 4 minutes, why not just wait the 4 minutes before running it for the first time?

 

So first, let me just say I'm a huge fan... :)

 

Seriously, much appreciation from me.

 

As for the timer scripts firing immediately on load, I'll double check if they are actually running directly on load due to poor design or intentional design.

 

Intended design - I now track "time remaining", so if it's a 4 minute timer, each minute I deduct 60 seconds from time remaining and when it goes to zero or less, I run the script and push time remaining back to 4 minutes.

 

Importantly, I remember how much time was remaining between sessions. So if only 1 minute is left on your 4 minute timer when you saved, on load it should fire within the first 60 seconds. I had assumed most would want this because if you, for example, had a very long timer, like on the order of 30 minutes, it is conceivable that if you saved and reloaded within multiple 30 minute spans your timer script would be starved. 

 

It would actually be easier to simply start timers fresh on each load.

 

Poor design - Given my intent, I do *not* want all the timer scripts to just fire automatically at T0 before queuing up to wait. So if that is what is happening, or if the existing time remaining is not being properly honored on a load, then that's a bug.

 

I'll investigate.

 

Anyone have input on whether "time remaining" should be retained across loads?

 

Posted
1 hour ago, hextun said:

Importantly, I remember how much time was remaining between sessions. So if only 1 minute is left on your 4 minute timer when you saved, on load it should fire within the first 60 seconds. I had assumed most would want this because if you, for example, had a very long timer, like on the order of 30 minutes, it is conceivable that if you saved and reloaded within multiple 30 minute spans your timer script would be starved. 

 

It would actually be easier to simply start timers fresh on each load.

 

Poor design - Given my intent, I do *not* want all the timer scripts to just fire automatically at T0 before queuing up to wait. So if that is what is happening, or if the existing time remaining is not being properly honored on a load, then that's a bug.

 

 

that makes sense! then the timer firing on load is just a coincidence.

okay, then I would suggest to keep things as is

 

Will continue to test, I haven't tested on 30 min+ session yet

Posted
On 4/10/2026 at 1:48 PM, hextun said:

 

For SexLab:

- sslThreadController has .IsAggressive(Actor) and .isVictim(Actor)

- when checking if the Actor's role (i.e. "Role") is aggressive or the victim, I call the function directly on the actor being considered (e.g. the actor who climaxed for the "Separate Orgasm" trigger)

- when checking the "Partner Role", I loop through the other actors and count how many aggressive or victim responses are true; then, based on which relationship you are checking for (e.g. "Partner Role: Aggressive"), if that count is non-zero there were one or more partners with that role and the test passes

 

For OStim:

- OMetadata has .HasActorTag() which can be checked for the "dominant" tag

- I loop and count how many have the "dominant" tag; if no one does, the scene has no dominance, so tests for either "Aggressive" as well as "Victim" result in failures (no one is either)

- then for the "Partner Role" I do more or less the same as with SexLab, albeit with the dominance check as well

Just a question, since I was trying to do this recently I couldn't find a way, but currently there is no function to check if the scene is aggressive or not, right? Trying to create a trigger that only runs if a scene is consensual. I know the MCM lets you set roles (aggressor, victim, not part of the scene, any), but I don’t see a way to explicitly filter for "not aggressive" or "consensual" in the script. There isn't anything like a simple sl_isaggressive command that I can use in the sltscript yet, is there?

Posted

Okay, v0.981 is officially posted. Inspired by Mushano's request, I added a late addition: new command: sl_is_aggressive <Actor, optional, defaults to current target>. Returns bool: true if actor's current scene is aggressive, false otherwise.

 

@Mushano: added sl_is_aggressive; see docs for more details but should work with no parameters to reference the currently targeted actor, or you can specify an actor e.g. sl_is_aggressive $system.player

@Fraying9981: This contains the same functionality as you have already grabbed, so unless you want sl_is_aggressive, you don't need to update.

 

Note: THIS DOES NOT INDICATE WHETHER THE ACTOR IS AN AGGRESSOR AND I REALLY OUGHT TO HAVE NAMED IT "SL_IS_SCENE_AGGRESSIVE" AND NOW LIVE IN A POOL OF REGRET! ALSO I SHOULD NOT SHOUT AS IT IS RUDE!

 

 

Posted

*sigh* shipped version of sl_is_aggressive is failing

 

FYI: Previously, several versions ago, I was hosting the mod on github against my personal account alongside all my other projects. I reorganized to use a separate account. I did not, however, update the build environment, which is still using the original repo. This means that I am adding an extra step when doing builds that involves ... ugh... manually copying changes over. Yes, I know, there are better ways. I got lazy because how often do I have a lot of files to touch and I didn't want to muck with existing build setup. Unfortunately that means sometimes things like this *waves hand around* happen.

 

I'll be posting an update to fix the issue soon.

Posted
7 hours ago, hextun said:

Okay, v0.981 is officially posted. Inspired by Mushano's request, I added a late addition: new command: sl_is_aggressive <Actor, optional, defaults to current target>. Returns bool: true if actor's current scene is aggressive, false otherwise.

 

@Mushano: added sl_is_aggressive; see docs for more details but should work with no parameters to reference the currently targeted actor, or you can specify an actor e.g. sl_is_aggressive $system.player

@Fraying9981: This contains the same functionality as you have already grabbed, so unless you want sl_is_aggressive, you don't need to update.

 

Note: THIS DOES NOT INDICATE WHETHER THE ACTOR IS AN AGGRESSOR AND I REALLY OUGHT TO HAVE NAMED IT "SL_IS_SCENE_AGGRESSIVE" AND NOW LIVE IN A POOL OF REGRET! ALSO I SHOULD NOT SHOUT AS IT IS RUDE!

 

 

 

now im confused lol 😁

 

what does it do then if it doesn't detect whether a NPC is an aggressor?

That would be useful actually, to handle the consensual/nonconsensual logic directly inside the code instead of via the MCM which adds an additional step to development + doubles the number of files in certain cases.

Posted
10 minutes ago, Fraying9981 said:

 

now im confused lol 😁

 

what does it do then if it doesn't detect whether a NPC is an aggressor?

That would be useful actually, to handle the consensual/nonconsensual logic directly inside the code instead of via the MCM which adds an additional step to development + doubles the number of files in certain cases.

 

sl_is_aggressive: true if the scene the targeted actor is currently in is marked "aggressive" i.e. any actors are victims or aggressors

if no targeted actor is provided (first parameter; optional), defaults to the actor targeted by the script (i.e. $system.self)

 

So, suppose you hook up the following script:

 

set $scene_is_aggressive resultfrom sl_is_aggressive

set $actor_name resultfrom actor_name $system.self

msg_console $"Scene with actor :{$actor_name}: is_aggressive:{$scene_is_aggressive}:"

 

To "SexLab Start" with no parameters. This means it will run the script once for each actor at the start of a scene i.e. 3-way, 3 copies of the script run, each with $system.self pointing to that actor.

 

Now, assuming the actors in the scene are: JimBob, MarySue

 

If the scene is non-consensual, let's say MarySue did NOT get JimBob's consent i.e. MarySue-aggressor/JimBob-victim, i.e. aggressive, i.e. *any* actor in the scene is an aggressor/victim, you will get:

Scene with actor :JimBob: is_aggressive:TRUE:

Scene with actor :MarySue: is_aggressive:TRUE:

 

If not, if nobody in the scene is an aggressor/victim, i.e. it is consensual, you will get:

Scene with actor :JimBob: is_aggressive:FALSE:

Scene with actor :MarySue: is_aggressive:FALSE:

 

The reason I said it ought to have been named "sl_is_scene_aggressive" is exactly that; because it is returning whether the scene that actor is in is aggressive, and not whether a specific actor is *being* aggressive (i.e. an aggressor).

 

For that, you would want something like "sl_is_actor_aggressor" and "sl_is_actor_victim", which would then return true if the specified actor (or $system.self if not specified) is as indicated, an aggressor or a victim. Would return false in fully consensual scenes (because *nobody* is an aggressor *or* a victim, they are all there consensually).

 

Think it would be worthwhile or nah?

Posted
4 minutes ago, hextun said:

 

sl_is_aggressive: true if the scene the targeted actor is currently in is marked "aggressive" i.e. any actors are victims or aggressors

if no targeted actor is provided (first parameter; optional), defaults to the actor targeted by the script (i.e. $system.self)

 

So, suppose you hook up the following script:

 

set $scene_is_aggressive resultfrom sl_is_aggressive

set $actor_name resultfrom actor_name $system.self

msg_console $"Scene with actor :{$actor_name}: is_aggressive:{$scene_is_aggressive}:"

 

To "SexLab Start" with no parameters. This means it will run the script once for each actor at the start of a scene i.e. 3-way, 3 copies of the script run, each with $system.self pointing to that actor.

 

Now, assuming the actors in the scene are: JimBob, MarySue

 

If the scene is non-consensual, let's say MarySue did NOT get JimBob's consent i.e. MarySue-aggressor/JimBob-victim, i.e. aggressive, i.e. *any* actor in the scene is an aggressor/victim, you will get:

Scene with actor :JimBob: is_aggressive:TRUE:

Scene with actor :MarySue: is_aggressive:TRUE:

 

If not, if nobody in the scene is an aggressor/victim, i.e. it is consensual, you will get:

Scene with actor :JimBob: is_aggressive:FALSE:

Scene with actor :MarySue: is_aggressive:FALSE:

 

The reason I said it ought to have been named "sl_is_scene_aggressive" is exactly that; because it is returning whether the scene that actor is in is aggressive, and not whether a specific actor is *being* aggressive (i.e. an aggressor).

 

For that, you would want something like "sl_is_actor_aggressor" and "sl_is_actor_victim", which would then return true if the specified actor (or $system.self if not specified) is as indicated, an aggressor or a victim. Would return false in fully consensual scenes (because *nobody* is an aggressor *or* a victim, they are all there consensually).

 

Think it would be worthwhile or nah?

 

got it! thanks for the clarification.

 

yes i think it would be worth while.

because at the moment i have 2 versions of the same script, and 2 triggers: one for consensual and one for non consensual. 

its a bit of a mess in my file system so would be helpful!

Posted

So... I don't think the aggressor/victim/submissive code is working for SLP+. At least not as I would expect it to.

 

Perusing said code clearly hints at things like victim status equating to submissive status, and IsConsent() referring to "Aggressive" context and such, but in practice I'm not seeing it actually do what is intended.

 

For example, attempting to use the legacy "SexLabThread.IsAggressive" property (which is actually from the sslThreadModel script) does not appear to resolve appropriately; testing on the Masterstroke list, which seems reasonably well curated with regard to converted SLP+ animations, never appears to return "true" for such scenes. Moreover, the SexLabThread.IsConsent() function wraps around HasContext("Aggressive") which never returns true even for scenes/threads tagged with "Aggressive", so I'm not sure what to make of that.

 

SexLabThread.HasTag("Aggressive") works correctly, and I can replace my attempts at using IsConsent()/IsAggressive with this.

 

However, that leads to the next problem; SexLabThread.IsSubmissive(Actor) returns true for anyone in a scene when the scene is tagged "Aggressive" with clear intent of there being aggressors/victims.

 

As a result, in the next update, I'm going to modify SLP+ aggression handling as follows:

 

Scene aggressive result

- Old: use either IsConsent() or IsAggressive

- New: use HasTag("Aggressive")

 

Actor aggressor result

- Old: use IsAggressor()

- New: use !IsVictim() ; IsAggressor() was not returning expected values

 

Actor victim result

- Old: use IsVictim()

- New: use IsVictim() ; i.e. no change

 

The assumption being that in a scene flagged "Aggressive" if you are not a victim, you are an aggressor. No innocent bystanders.

 

This appears to be giving the expected results in my testing.

 

As an aside, if you *have* been getting expected results on SLP+ I would love to know which modlist/SLP+ version you are using.

Posted
2 minutes ago, hextun said:

So... I don't think the aggressor/victim/submissive code is working for SLP+. At least not as I would expect it to.

 

Perusing said code clearly hints at things like victim status equating to submissive status, and IsConsent() referring to "Aggressive" context and such, but in practice I'm not seeing it actually do what is intended.

 

For example, attempting to use the legacy "SexLabThread.IsAggressive" property (which is actually from the sslThreadModel script) does not appear to resolve appropriately; testing on the Masterstroke list, which seems reasonably well curated with regard to converted SLP+ animations, never appears to return "true" for such scenes. Moreover, the SexLabThread.IsConsent() function wraps around HasContext("Aggressive") which never returns true even for scenes/threads tagged with "Aggressive", so I'm not sure what to make of that.

 

SexLabThread.HasTag("Aggressive") works correctly, and I can replace my attempts at using IsConsent()/IsAggressive with this.

 

However, that leads to the next problem; SexLabThread.IsSubmissive(Actor) returns true for anyone in a scene when the scene is tagged "Aggressive" with clear intent of there being aggressors/victims.

 

As a result, in the next update, I'm going to modify SLP+ aggression handling as follows:

 

Scene aggressive result

- Old: use either IsConsent() or IsAggressive

- New: use HasTag("Aggressive")

 

Actor aggressor result

- Old: use IsAggressor()

- New: use !IsVictim() ; IsAggressor() was not returning expected values

 

Actor victim result

- Old: use IsVictim()

- New: use IsVictim() ; i.e. no change

 

The assumption being that in a scene flagged "Aggressive" if you are not a victim, you are an aggressor. No innocent bystanders.

 

This appears to be giving the expected results in my testing.

 

As an aside, if you *have* been getting expected results on SLP+ I would love to know which modlist/SLP+ version you are using.

 

Note that this problem extends to the trigger filter handling i.e. in the MCM, specifying a "Partner: Aggressor" filter.

Posted

v0.983 has been dropped like something that is culturally relevant and related to being dropped in modern context... *cough*

 

The changelog:

Spoiler

Savegame compatible
Reminder: Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
    (or whichever folder you have your SKSE logs directed to)
enhancement: new commands:
    sl_is_actor_aggressor: return true if target actor (defaults to $system.self) is an aggressor in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_actor_submissive: return true if target actor (defaults to $system.self) is a submissive in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_scene_aggressive: return true if the scene that target actor (defaults to $system.self) is in is aggressive (has aggressors/submissives); false otherwise
deprecated: sl_is_aggressive: still exists but is a wrapper for sl_is_scene_aggressive
bugfix: fixed handling for SexLab P+ scene/actor aggressor/victim status
    Scene aggressive result
        Old: use either SexLabThread.IsConsent() or SexLabThread.IsAggressive
        New: use sslThreadController.HasTag("Aggressive")
    Actor aggressor result
        Old: use IsAggressor(Actor)
        New: use !IsVictim(Actor) ; IsAggressor(Actor) was not returning expected values
    Actor victim result
        Old: use IsVictim(Actor)
        New: use IsVictim(Actor) ; i.e. no change
update: added "Aggressive" tag to sl_startsex call in the following SLTScripts:
    SL Aggressive Sex With Player - Anal.sltscript
    SL Aggressive Sex With Player - Oral.sltscript
    SL Aggressive Sex With Player - Vaginal.sltscript

 

The 'splanation:

I renamed "sl_is_aggressive" to "sl_is_scene_aggressive", but kept a (non-documented) mapping for sl_is_aggressive for the select few who might have perhaps started using it. I recommend updating your scripts because "sl_is_aggressive" is deprecated.

 

I added "sl_is_actor_aggressor" and "sl_is_actor_submissive" which work as you would expect.

 

SexLab P+ detection of aggression/victim state has been updated as indicated. Should be correct now.

 

Added the "Aggressive" tag to the associated SLTScripts. I think they were technically working anyway because of specifying the player as the victim explicitly, but now the tag should ensure appropriate operation.

Posted
54 minutes ago, hextun said:

v0.983 has been dropped like something that is culturally relevant and related to being dropped in modern context... *cough*

 

The changelog:

  Hide contents

Savegame compatible
Reminder: Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
    (or whichever folder you have your SKSE logs directed to)
enhancement: new commands:
    sl_is_actor_aggressor: return true if target actor (defaults to $system.self) is an aggressor in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_actor_submissive: return true if target actor (defaults to $system.self) is a submissive in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_scene_aggressive: return true if the scene that target actor (defaults to $system.self) is in is aggressive (has aggressors/submissives); false otherwise
deprecated: sl_is_aggressive: still exists but is a wrapper for sl_is_scene_aggressive
bugfix: fixed handling for SexLab P+ scene/actor aggressor/victim status
    Scene aggressive result
        Old: use either SexLabThread.IsConsent() or SexLabThread.IsAggressive
        New: use sslThreadController.HasTag("Aggressive")
    Actor aggressor result
        Old: use IsAggressor(Actor)
        New: use !IsVictim(Actor) ; IsAggressor(Actor) was not returning expected values
    Actor victim result
        Old: use IsVictim(Actor)
        New: use IsVictim(Actor) ; i.e. no change
update: added "Aggressive" tag to sl_startsex call in the following SLTScripts:
    SL Aggressive Sex With Player - Anal.sltscript
    SL Aggressive Sex With Player - Oral.sltscript
    SL Aggressive Sex With Player - Vaginal.sltscript

 

The 'splanation:

I renamed "sl_is_aggressive" to "sl_is_scene_aggressive", but kept a (non-documented) mapping for sl_is_aggressive for the select few who might have perhaps started using it. I recommend updating your scripts because "sl_is_aggressive" is deprecated.

 

I added "sl_is_actor_aggressor" and "sl_is_actor_submissive" which work as you would expect.

 

SexLab P+ detection of aggression/victim state has been updated as indicated. Should be correct now.

 

Added the "Aggressive" tag to the associated SLTScripts. I think they were technically working anyway because of specifying the player as the victim explicitly, but now the tag should ensure appropriate operation.

 

awesome! will try it out. this will save on script # and hopefully on execution.

Posted
9 hours ago, hextun said:

v0.983 has been dropped like something that is culturally relevant and related to being dropped in modern context... *cough*

 

The changelog:

  Reveal hidden contents

Savegame compatible
Reminder: Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
    (or whichever folder you have your SKSE logs directed to)
enhancement: new commands:
    sl_is_actor_aggressor: return true if target actor (defaults to $system.self) is an aggressor in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_actor_submissive: return true if target actor (defaults to $system.self) is a submissive in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_scene_aggressive: return true if the scene that target actor (defaults to $system.self) is in is aggressive (has aggressors/submissives); false otherwise
deprecated: sl_is_aggressive: still exists but is a wrapper for sl_is_scene_aggressive
bugfix: fixed handling for SexLab P+ scene/actor aggressor/victim status
    Scene aggressive result
        Old: use either SexLabThread.IsConsent() or SexLabThread.IsAggressive
        New: use sslThreadController.HasTag("Aggressive")
    Actor aggressor result
        Old: use IsAggressor(Actor)
        New: use !IsVictim(Actor) ; IsAggressor(Actor) was not returning expected values
    Actor victim result
        Old: use IsVictim(Actor)
        New: use IsVictim(Actor) ; i.e. no change
update: added "Aggressive" tag to sl_startsex call in the following SLTScripts:
    SL Aggressive Sex With Player - Anal.sltscript
    SL Aggressive Sex With Player - Oral.sltscript
    SL Aggressive Sex With Player - Vaginal.sltscript

 

The 'splanation:

I renamed "sl_is_aggressive" to "sl_is_scene_aggressive", but kept a (non-documented) mapping for sl_is_aggressive for the select few who might have perhaps started using it. I recommend updating your scripts because "sl_is_aggressive" is deprecated.

 

I added "sl_is_actor_aggressor" and "sl_is_actor_submissive" which work as you would expect.

 

SexLab P+ detection of aggression/victim state has been updated as indicated. Should be correct now.

 

Added the "Aggressive" tag to the associated SLTScripts. I think they were technically working anyway because of specifying the player as the victim explicitly, but now the tag should ensure appropriate operation.

*Cough* Thanks so much for the update. I hope I didn't cause you undue stress and hardship, since it seems you were going crazy to get this in. 🫠

Posted
2 hours ago, Mushano said:

*Cough* Thanks so much for the update. I hope I didn't cause you undue stress and hardship, since it seems you were going crazy to get this in. 🫠

Ah, no worries. :) Frankly it is helpful to have a target. I have skills and some ideas but at this point the things I *have* thought of doing are all on the ambitious and/or "ugh, yeah, I should probably get to that" part of the spectrum. Whereas knowing about low hanging fruit that makes someone happy is an easy win. :)

 

as for the struggle, the naming convention issue is entirely on me for not having given it enough thought. In fact as I go through the SLP+ code I am coming to understand there may be a distinction between "victim" and "submissive" that I am not properly respecting. But for now I think how I am handling it is working. 
 

and as for the general issue with my handling of aggressor/victim/submissive status for SLP+, that just happened to become exposed while testing the update, meaning the problem was there the whole time I just hadn't noticed it before. 
 

Honestly I appreciate when folks give me ideas and suggestions even if I don't always act on them. If nothing else it makes the effort seem a bit more worthwhile. 

Posted

Okay... I'm ponderin'

 

util_waitforkbd/sl_waitforkbd/ostim_waitforkbd do the following:

- accept a set of scan codes to wait for

- loops in a 0.5 second wait

- each 0.5 seconds, checks if a key was pressed from those provided or if the scene has ended (for the sl_ and ostim_ variants)

- returns the scan code of the key pressed (or -1 on end of scene for sl_ and ostim_ variants)

 

I'm thinking of introducing util_/sl_/ostim_ variants for _waitforkbd_withtimeout:

- required new first argument: seconds before timeout

- list of scan codes

- loops in a tighter loop (maybe 0.25 seconds)

- each period (0.25 seconds?), checks if key was pressed or if scene has ended (for sl_ and ostim_) OR if timeout reached

- returns scan code of key pressed or -1 on scene end (for ostim_ and sl_ variants) OR -2 if timeout reached

 

This would let you only wait for so long before moving on. 

 

But... this was brought about because I want to emulate a QTE (QuickTime Event). You know, where you have a short period of time to press a specific key from a set of possible keys with consequences for success and failure? Like, say, a mini-game where the player's orgasm is locked until they get 5 successes?

 

So this would be something like: util_/sl_/ostim_ variants for _pseudo_qte:

- takes arg1: timeout in seconds

- takes arg2: string message to display via uilib_notification (i.e. to let the player know which key it is waiting for)

- takes arg3: expected dx scan code for the target key (only one allowed)

- takes arg4-n: keys to register for

  - need to register for multiple keys because pressing the wrong key should terminate early, yes?

  - optionally, only registers for one key (i.e. no arg4-n) ; this does not penalize for pressing the wrong key, only for not pressing the right one in time

- loops in a very tight loop (maybe 0.1 seconds)

- each loop (0.1 seconds), checks if key was pressed or if scene ended (for sl_ and ostim variants) or if timeout reached

- returns scan code of key pressed (on success), -1 for scene end, -2 for timeout

  - possibly a -3 for wrong key pressed if the arg4-n option is used

 

The arg4-n option would introduce more of a performance hit even though it's the option that is more featureful. I'm leaning toward *not* doing the arg4-n option.

 

So for example, the following script uses a mocked up concept of sl_pseudo_qte. You would hook it up to SexLab Start, targeting the Player. It would:

- disable orgasms for the player

- give you a 1 second window to press either left or right arrow, randomly chosen each loop

- keep looping until you succeeded 5 more times than you failed

- if you succeed, orgasms would then be enabled

- otherwise they would remain disabled for the duration of the scene

 

sl_disableorgasm $system.player true

set $successes 0
set $required 5

[startwaiting]
; 203 - arrow left; 205 - arrow right
set $target_key resultfrom rnd_list 203 205

if $target_key == 203
	set $qte_msg "Struggle for your cummies! Arrow Left!"
else
	set $qte_msg "Struggle for your cummies! Arrow Right!"
endif

; sl_pseudo_qte would use a UILIB notification to display $qte_msg
set $a_key resultfrom sl_pseudo_qte 1.0 $qte_msg $target_key

if $a_key == -1
	; scene ended
	uilib_shownotification "You lost out on cummies! wah-waaaahhh"
	return
elseif $a_key == -2
	; timeout
	inc $successes -1 ; subtract, this is just an example, but yes you could go negative
else
	; this version assumes only one key was registered, so you pressed it, congratulations
	inc $successes
endif

if $successes < $required [startwaiting]

uilib_shownotification "You have earned cummies!"
sl_disableorgasm $system.player false

 

Thoughts?

Posted
On 6/3/2026 at 7:59 PM, hextun said:

Okay... I'm ponderin'

 

util_waitforkbd/sl_waitforkbd/ostim_waitforkbd do the following:

- accept a set of scan codes to wait for

- loops in a 0.5 second wait

- each 0.5 seconds, checks if a key was pressed from those provided or if the scene has ended (for the sl_ and ostim_ variants)

- returns the scan code of the key pressed (or -1 on end of scene for sl_ and ostim_ variants)

 

I'm thinking of introducing util_/sl_/ostim_ variants for _waitforkbd_withtimeout:

- required new first argument: seconds before timeout

- list of scan codes

- loops in a tighter loop (maybe 0.25 seconds)

- each period (0.25 seconds?), checks if key was pressed or if scene has ended (for sl_ and ostim_) OR if timeout reached

- returns scan code of key pressed or -1 on scene end (for ostim_ and sl_ variants) OR -2 if timeout reached

 

This would let you only wait for so long before moving on. 

 

But... this was brought about because I want to emulate a QTE (QuickTime Event). You know, where you have a short period of time to press a specific key from a set of possible keys with consequences for success and failure? Like, say, a mini-game where the player's orgasm is locked until they get 5 successes?

 

So this would be something like: util_/sl_/ostim_ variants for _pseudo_qte:

- takes arg1: timeout in seconds

- takes arg2: string message to display via uilib_notification (i.e. to let the player know which key it is waiting for)

- takes arg3: expected dx scan code for the target key (only one allowed)

- takes arg4-n: keys to register for

  - need to register for multiple keys because pressing the wrong key should terminate early, yes?

  - optionally, only registers for one key (i.e. no arg4-n) ; this does not penalize for pressing the wrong key, only for not pressing the right one in time

- loops in a very tight loop (maybe 0.1 seconds)

- each loop (0.1 seconds), checks if key was pressed or if scene ended (for sl_ and ostim variants) or if timeout reached

- returns scan code of key pressed (on success), -1 for scene end, -2 for timeout

  - possibly a -3 for wrong key pressed if the arg4-n option is used

 

The arg4-n option would introduce more of a performance hit even though it's the option that is more featureful. I'm leaning toward *not* doing the arg4-n option.

 

So for example, the following script uses a mocked up concept of sl_pseudo_qte. You would hook it up to SexLab Start, targeting the Player. It would:

- disable orgasms for the player

- give you a 1 second window to press either left or right arrow, randomly chosen each loop

- keep looping until you succeeded 5 more times than you failed

- if you succeed, orgasms would then be enabled

- otherwise they would remain disabled for the duration of the scene

 

sl_disableorgasm $system.player true

set $successes 0
set $required 5

[startwaiting]
; 203 - arrow left; 205 - arrow right
set $target_key resultfrom rnd_list 203 205

if $target_key == 203
	set $qte_msg "Struggle for your cummies! Arrow Left!"
else
	set $qte_msg "Struggle for your cummies! Arrow Right!"
endif

; sl_pseudo_qte would use a UILIB notification to display $qte_msg
set $a_key resultfrom sl_pseudo_qte 1.0 $qte_msg $target_key

if $a_key == -1
	; scene ended
	uilib_shownotification "You lost out on cummies! wah-waaaahhh"
	return
elseif $a_key == -2
	; timeout
	inc $successes -1 ; subtract, this is just an example, but yes you could go negative
else
	; this version assumes only one key was registered, so you pressed it, congratulations
	inc $successes
endif

if $successes < $required [startwaiting]

uilib_shownotification "You have earned cummies!"
sl_disableorgasm $system.player false

 

Thoughts?

I mean, more options are always better. I can't think of a use for the button inputs yet, but I'm sure there could be something. Maybe if there was a way to get distance from player to NPC that's in a sex scene or some such, then there could be a "encourage" key, "break it up" key, "replace NPC with player" key that we could script.

Posted (edited)
On 6/2/2026 at 7:59 AM, hextun said:

v0.983 has been dropped like something that is culturally relevant and related to being dropped in modern context... *cough*

 

The changelog:

  Hide contents

Savegame compatible
Reminder: Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
    (or whichever folder you have your SKSE logs directed to)
enhancement: new commands:
    sl_is_actor_aggressor: return true if target actor (defaults to $system.self) is an aggressor in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_actor_submissive: return true if target actor (defaults to $system.self) is a submissive in current SexLab scene; false otherwise (incl. consensual scenes)
    sl_is_scene_aggressive: return true if the scene that target actor (defaults to $system.self) is in is aggressive (has aggressors/submissives); false otherwise
deprecated: sl_is_aggressive: still exists but is a wrapper for sl_is_scene_aggressive
bugfix: fixed handling for SexLab P+ scene/actor aggressor/victim status
    Scene aggressive result
        Old: use either SexLabThread.IsConsent() or SexLabThread.IsAggressive
        New: use sslThreadController.HasTag("Aggressive")
    Actor aggressor result
        Old: use IsAggressor(Actor)
        New: use !IsVictim(Actor) ; IsAggressor(Actor) was not returning expected values
    Actor victim result
        Old: use IsVictim(Actor)
        New: use IsVictim(Actor) ; i.e. no change
update: added "Aggressive" tag to sl_startsex call in the following SLTScripts:
    SL Aggressive Sex With Player - Anal.sltscript
    SL Aggressive Sex With Player - Oral.sltscript
    SL Aggressive Sex With Player - Vaginal.sltscript

 

The 'splanation:

I renamed "sl_is_aggressive" to "sl_is_scene_aggressive", but kept a (non-documented) mapping for sl_is_aggressive for the select few who might have perhaps started using it. I recommend updating your scripts because "sl_is_aggressive" is deprecated.

 

I added "sl_is_actor_aggressor" and "sl_is_actor_submissive" which work as you would expect.

 

SexLab P+ detection of aggression/victim state has been updated as indicated. Should be correct now.

 

Added the "Aggressive" tag to the associated SLTScripts. I think they were technically working anyway because of specifying the player as the victim explicitly, but now the tag should ensure appropriate operation.

Hmm... I'm not sure if it is fixed in P+? I'm getting false every time a scene starts, even if it's aggressive. In fact, it might have broken the old detection system because a bunch of my sltscripts are no longer firing if I set it under 'aggressive' or 'victim' in the MCM menu.

Edit: It might not even be that. Tried switching around from 978, and 980. Even those are no longer working properly. Maybe the saved game is just borked. 

Edited by Mushano
Posted
7 hours ago, Mushano said:

Hmm... I'm not sure if it is fixed in P+? I'm getting false every time a scene starts, even if it's aggressive. In fact, it might have broken the old detection system because a bunch of my sltscripts are no longer firing if I set it under 'aggressive' or 'victim' in the MCM menu.

Edit: It might not even be that. Tried switching around from 978, and 980. Even those are no longer working properly. Maybe the saved game is just borked. 

 

Before going to "save is borked" instead of "hextun made a booboo", given that I *did* elect to move *away* from actual API calls because in *my* testbed the API calls were not working, I'd like to collect a little info if you don't mind. :)

 

Hmm.. is this a purely custom modlist, a pre-made modlist (e.g. from wabbajack), or a customized pre-made modlist (e.g. from wabbajack, but with your own tweaks)? I'm curious to match it against my own testbed for SLP+ (Masterstroke)

 

Do you have an older save you could load, verify things are working (since you did feel confident things were working at one point), and then try 980 again? 

 

Are you willing to do unpaid testing? :)

 

Side note/PSA: In the LL text editor (i.e. where I am typing right now), if you enter a smiley (like colon-right parens, i.e. ":)" ), but do not hit enter or space after the parens, your arrow keys will stop allowing navigation in the text editor until you do so? Like, start typing, then enter the ":)" but without the quotes. Then, before you hit enter or space (thus letting the editor convert it to the :) icon), try using your arrow keys. You can't! This surprised me. Enjoy!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...