NoNickNeeded Posted October 23, 2023 Posted October 23, 2023 (edited) I finally managed to reach the (current) end and I have to say, congrats, that was quite the ride. I didn't expect things to get so serious and emotional toward the end, but that isn't a bad thing. I do have one suggestion to make it even better, at least to my personal tastes, but I think others might enjoy this little tweak too. !!(Spoiler warning to anyone who isn't through yet in version 3.42!! If you choose to let Sloane live, it would be nice to have the option to put her in chains and lock her up. Apart from making sure she won't be able to flee, before the authorities come to collect her, it would be poetic justice to lock her into one of her own cells. Edited October 23, 2023 by NoNickNeeded 1
Miauzi Posted October 23, 2023 Posted October 23, 2023 Vor 1 Stunde sagte NoNickNeeded: Endlich habe ich es geschafft, das (aktuelle) Ende zu erreichen, und ich muss sagen, herzlichen Glückwunsch, das war ein ziemlicher Ritt. Ich hätte nicht erwartet, dass es am Ende so ernst und emotional wird, aber das ist nicht schlecht. Ich habe einen Vorschlag, um es zumindest nach meinem persönlichen Geschmack noch besser zu machen, aber ich denke, dass andere diese kleine Änderung auch mögen könnten. !!(Spoiler-Warnung an alle, die mit Version 3.42 noch nicht fertig sind!! Wenn Sie sich dafür entscheiden, Sloane am Leben zu lassen, wäre es schön, die Möglichkeit zu haben, sie in Ketten zu legen und einzusperren. Abgesehen davon, dass sie nicht fliehen kann, bevor die Behörden sie abholen, wäre es poetische Gerechtigkeit, sie in eine ihrer eigenen Zellen einzusperren. If you put Solane in chains and lock her in one of the cells... you condemn her to death by "starvation" or "dying of thirst." How do I come to this view? When I decided to write a blog story in the Skyrim universe a few months ago - I also looked into mods from the fetish and BDSM area (because of my own preferences). I liked Laura's mod for many different reasons and so I started reading through this huge discussion thread... and found several very interesting discussions about how this mod developed. Particular attention was paid to the relationship between "Solane" and "Laura" and "Katharina"... why, for example, you have no chance of attacking or killing her (and her guards) during their attack on the store. "Solane" (and previously also "Darius") actually have a "free pass" in the province "Skyrim"... they supply the "ruling class" with sex slaves. Even if it were possible to kill the 4 guards and "Solane" WITHOUT anything happening to "Laura" or "Katharina"... the two would then be something like "outlaws" - that is, they could not take revenge from the powerful escape! That's why this power of "Solane" must first be broken... we permanently destroy their trading ring with sex slaves... so "Solane" is no longer of any use to the powerful of Skyrim. But why should they now arrest a woman and put her on trial... who knows a lot of dirty things about these very powerful people. There's no one coming to arrest this woman... just "someone" from the Dark Brotherhood... who's going to fix a problem. And yes - I too wish this woman all the "bad things in the world"... but I also let her live... the loss of her powerful position - which basically throws her "into the gutter"... is one life sentence... the dungeon does not surround her body but her "mind". Please understand this text as my interpretation of the end of the quest story - but of course there was extensive discussion among the users here too. 1
NoNickNeeded Posted October 23, 2023 Posted October 23, 2023 I still think it would work. Laura and Katarina are guaranteed to stay out of public perception, meaning that those formly blackmailed authorities can easily set themselves up, as the people who took her down, with the kudos for bringing down an entire slaver's ring probably being more than enough to offset any "lies" told by Sloane. Also those blackmailed authorities were able to keep their involvement with the slavers, and from what I can tell the very existence of the slave trade in Skyrim secret from the public eye for years, so they've got to have some skill in information manipulation. But if they really wanted to make sure nothing could possibly leak out, as you believe, they have all the more reason not to leave open the chance that someone might just randomly stunble into Sloane's home and free her, meaning they either have to arrest her and put her on trial, foregoe any due process and put her in a hole so deep nobody's ever going to find her, or just assassinate her outright. That being said, we could always go above the heads of the blackmailed people. Going by the stuff in the letters, she didn't have a single Yarl, Thane or Steward under her thumb, so we definitely have options for that. Though I guess locking her up and intentionally letting her starve, would make for a good fourth option. After all Sloane herself was the one who suggested to starve Hinda to death, rather than giving her a quick death. It would not be my prefered option, but I wouldn't lose any sleep over her going out that way either. 2
Laura Posted October 25, 2023 Author Posted October 25, 2023 (edited) On 10/21/2023 at 11:49 PM, Miauzi said: Thank you for your feedback. I myself use such a mod - which carries out constant "scanning": This mod, in conjunction with the length of time that DD devices can be worn, grants some advantages... so I can see quite well despite the blindfold being equipped - which makes completing some quests a lot easier. I incorporate these training effects into my story (usually using “side comments”). Since it also causes physical changes - such as a smaller waist by wearing a corset - I have a fairly heavy script load. (But this is also done by mods that, for example, enable "pregnancies" or "changing the breast circumference" through a variable hormone level... there are quite a lot of "candidates" on LL.) Such feedback from the author of a mod helps me to better understand their work... and thus help other users with their problems --- Addendum: I just thought of something... DCL has a very extensive menu for setting all the trap triggers and what kind of "surprises" you can expect as a player. Among other things, there is (I hope my memory is correct) a connection to the player character's state of sexual arousal... the more "excited" you are, the greater the likelihood that a trap will be triggered. SexLab Aroused is also something that periodically "scans" the player and surrounding characters. It can also be somewhat script heavy which is why SLA Redux exists. I tried to find the periodic events function from DCL for you to use as an example but I couldn't find it. Maybe I did find it but I'm not sure because the mod is huge. Maybe it's this one: Spoiler Function clocktickshort() ; do this only once per load, but we don't want to have to wait for up to an hour. if firstload initialize() endif SuspendNakedCommentsIfBound() dclibs.checkDCURQuestRunning() WasNearDeath = False If dclibs.containermutex dclibs.containermutex = False Return Endif if dcumenu.shutdownmod || dclibs.pollutedsavegame if dcumenu.debuglogenabled debug.trace("[DCUR] Mod functionality has been shut down. Periodic events cancelled.") endif ; If the XDFF quest is active when the mod is shut down, we're setting it to paused state: if dfs.IsRunning() dfs.EndQuest() Endif ; same for the Rubber Doll quest. if rdqs.rdquestrunning rdqs.terminatequest() EndIf return endif ;none of the stuff below needs to be executed in combat or during sex scenes, so we just abort in this case and save some performance: if libs.playerRef.IsInCombat() || libs.IsAnimating(libs.playerRef) || suspendedstate addgraceperiod() return endif if dcumenu.debuglogenabled debug.trace("[DCUR] Periodical update starts") endif ; Device Buffs if dcumenu.enabledevicebuffs dcur_DeviceBuffs.cast(libs.playerref) Else libs.playerref.DispelSpell(dcur_DeviceBuffs) Endif ;checksafearea() If dcumenu.enablehornybuffs && !libs.playerRef.WornHasKeyword(dcur_kw_tentacles) If libs.aroused.GetActorArousal(libs.PlayerRef) > dcumenu.HornyBuffsThreshold if !hornybuffsactive libs.notify("Your sexual desires make you stronger!") hornybuffsactive = True Endif dcur_hornybuffs.cast(libs.playerref) Else if hornybuffsactive libs.notify("You are no longer horny enough to draw stength from it.") hornybuffsactive = False Endif libs.playerref.DispelSpell(dcur_hornybuffs) Endif Else libs.playerref.DispelSpell(dcur_hornybuffs) Endif ; process some tasks once per game hour if (Utility.GetCurrentGameTime() - lasthousekeepingshortinterval) * 24.0 > 1.0 housekeepingshortinterval() endif breastresize() CheckFollowers() cuminflation() mcs.IsSceneRunning = False if StorageUtil.GetIntValue(Game.GetPlayer(), "_SD_iEnslaved") || (dcumenu.installed_PO && (StorageUtil.GetIntValue(Game.GetPlayer(), "xpoPCinJail") == 1) || (StorageUtil.GetIntValue(Game.GetPlayer(), "xpoPCArrested") == 1) || (StorageUtil.GetIntValue(Game.GetPlayer(), "xpoPCArrestStart") == 1)) if dcumenu.debuglogenabled debug.trace("[DCUR] - PO or SD Enslavement active: Periodical update cancelled") endif mcs.IsSceneRunning = True return endif ; regular stuff starts here dclibs.checkchastity() checkvisiblerestraints() ; Belt of Misogyny If Libs.PlayerRef.WornHasKeyword(dclibs.dcur_kw_misogynyBelt) libs.Aroused.UpdateActorExposure(libs.PlayerRef, 10) EndIf Sasha() ; Tentacle Parasite: if libs.playerRef.WornHasKeyword(dcur_kw_tentacles) && ((Utility.GetCurrentGameTime() - lasttentacleaction) * 24.0 > 0.35) && Utility.RandomInt() < 50 && !UI.IsMenuOpen("Dialogue Menu") && !UI.IsMenuOpen("InventoryMenu") && !UI.IsMenuOpen("BarterMenu") && !UI.IsMenuOpen("Crafting Menu") && !UI.IsMenuOpen("ContainerMenu") libs.notify("You are getting fucked by the tentacle inside your pussy..") libs.Aroused.UpdateActorExposure(libs.PlayerRef, 10) int selection = Utility.RandomInt(1,4) bool tease = false if selection == 1 ;libs.ShockActor(libs.playerref) tease = true EndIf libs.VibrateEffect(libs.playerref, (selection+1), 0, teaseOnly = tease, silent = true) lasttentacleaction = Utility.GetCurrentGameTime() Endif ; Gag Talk - change only when the player is not in dialogue to prevent switching system mid-dialogue If !UI.IsMenuOpen("Dialogue Menu") If Utility.RandomFloat(0.0, 99.9) < dcumenu.gagtalkchance ; use DCL Gag Talk dcur_gagtalk_enabled.SetValueInt(1) Else ; use DDI Gag Talk dcur_gagtalk_enabled.SetValueInt(0) Endif Endif ;Misogyny If Utility.RandomInt(0, 99) < dcumenu.pimisogynyrapechance && !mcs.isDCURQuestRunning && !UI.IsMenuOpen("Dialogue Menu") && dclibs.dcur_iswearinglockedgear.GetValueInt() != 1 ;Int Chance = 25 ;If libs.PlayerRef.GetAv("") ; allow misogyny rape dcumenu.dcur_misogyny_cooldown.SetValueInt(1) Else dcumenu.dcur_misogyny_cooldown.SetValueInt(0) Endif ;Device comments if libs.playerRef.WornHasKeyword(libs.zad_Lockable) && !(mcs.isDCURQuestRunning) && dcumenu.devicecommentsenabled && (dcumenu.dcur_isvisiblyrestrained.GetValue() == 1 || !dcumenu.devicecommentsvisibleonly) && (Utility.GetCurrentGameTime() - dcur_lastdevicecommenttime.GetValue()) * 24.0 > dcumenu.devicecommentscooldown dcur_devicecommentallowed.SetValue(1) dcur_devicecommentinconsequential.SetValue(0) dcur_devicecommentaction.SetValue(picknextdevicecommentevent()) elseif !libs.playerRef.WornHasKeyword(libs.zad_Lockable) && !(mcs.isDCURQuestRunning) && dcumenu.devicecommentsenabled && (Utility.GetCurrentGameTime() - dcur_lastdevicecommenttime.GetValue()) * 24.0 > 24.0 If Utility.RandomInt() < 20 dcur_devicecommentallowed.SetValue(2) Else dcur_lastdevicecommenttime.SetValue(Utility.GetCurrentGameTime()) EndIf else dcur_devicecommentallowed.SetValue(0) endif if rdqs.rdquestrunning libs.Aroused.UpdateActorExposure(libs.PlayerRef, 1) rdqs.UpdateSexCounter() endif if dcumenu.selfbondageenable && !mcs.isDCURQuestRunning && !libs.playerref.WornHasKeyword(libs.zad_DeviousHeavyBondage) && (dcumenu.selfbondagewhenrestrained || !libs.playerRef.WornHasKeyword(libs.zad_Lockable)) && !libs.IsAnimating(libs.playerRef) && !libs.playerref.IsOnMount() && !libs.playerref.IsSwimming() If dclibs.Selfbondage() ; abort the function if Selfbondage added an item for performance reasons. return Endif Endif ;Sex attacks, shame animation and collar punishment, but make another check for SL animation and combat first. if libs.playerRef.IsInCombat() || libs.IsAnimating(libs.playerRef) return endif ; at this point we survived two checks for sex scenes, so let's just assume that really none is running: rapemutex = false ; Auto Masturbate bool isAroused = (libs.aroused.GetActorArousal(libs.PlayerRef) > dcumenu.uncontrollablelustThreshold) ; if her arousal is high enough, make her go off If dcumenu.lossofcontrol && isAroused && !mcs.isDCURQuestRunning && ((Utility.GetCurrentGameTime() - lastmasturbation) * 24.0 > 2.0) If Utility.RandomInt(0, 99) < 33 dclibs.Masturbate(libs.playerRef) lastmasturbation = Utility.GetCurrentGameTime() Return Else lastmasturbation = Utility.GetCurrentGameTime() EndIf Endif PublicIndencency() if dcur_scquest_isdancing.GetValueInt() != 1 ; we check for proximity rape opportunities only when there were no sex attacks started or running. if !SexAttacks() if !dclibs.gangbangmutex && (Utility.GetCurrentGameTime() - lastrape) * 24.0 > dcumenu.rdrapecooldown rapemutex = False endif else rapemutex = True endif endif EndFunction I'm somewhat sure this is the code that runs once in a while. You don't need to be an expert to see how much this is. A lot of the lines you see here just link to something else. Lines like Sasha() and Publicindecency() signals those functions to run if they're active in the MCM. Sasha() looks like this: Spoiler Function Sasha() ; no need to process this if Sasha isn't a current follower Actor Sasha = saqs.GetSasha() If !Sasha.IsInFaction(dcumenu.CurrentFollowerFaction) return Endif ; remove dance packages If (Utility.GetCurrentGameTime() - saqs.dancetimerstart) * 24 > 0.5 && saqs.activepackage libs.notify("Sasha stops dancing.") saqs.removepackage(Sasha, saqs.activepackage) saqs.activepackage = None ;saqs.ResetOutfit(saqs.dcur_outfit_sashaNaked) EndIf ;remove flags If (Utility.GetCurrentGameTime() - saqs.lastshock) * 24 > 1 saqs.dcur_sasha_hasbeenshockedlasthour.SetValueInt(0) EndIf ; can run errand once a day If (Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 24 saqs.dcur_sasha_candoerrand.SetValueInt(1) Else saqs.dcur_sasha_candoerrand.SetValueInt(0) EndIf ; can get whored out once a day If (Utility.GetCurrentGameTime() - saqs.lastwhoredout) * 24 > 24 saqs.dcur_sasha_canwhore.SetValueInt(1) Else saqs.dcur_sasha_canwhore.SetValueInt(0) EndIf ; can get gifts once a day If (Utility.GetCurrentGameTime() - saqs.lastgiftgiven) * 24 > 24 saqs.dcur_sasha_cangetgift.SetValueInt(1) Else saqs.dcur_sasha_cangetgift.SetValueInt(0) EndIf ; can be kissed once in a while If (Utility.GetCurrentGameTime() - saqs.lastkissed) * 24 > 6 saqs.dcur_sasha_canbekissed.SetValueInt(1) Else saqs.dcur_sasha_canbekissed.SetValueInt(0) EndIf ; check if she's willing to unlock the player's belt If saqs.dcur_sasha_isdominating.GetValueInt() == 0 && libs.playerref.WornHasKeyword(saqs.dcur_kw_sashaPlayerBelt) && ((Utility.GetCurrentGameTime() - saqs.lastplayerbelted) * 24 > saqs.playerbeltduration) if saqs.dcur_sasha_canunbeltplayer.GetValueInt() != 1 libs.notify("Sasha would be willing to unbelt you.", messagebox = true) EndIf saqs.dcur_sasha_canunbeltplayer.SetValueInt(1) Else saqs.dcur_sasha_canunbeltplayer.SetValueInt(0) EndIf ; domination ; chance to use the plugs if she plugged the player: if libs.playerRef.isEquipped(saqs.dcur_SashaPlayerChastityBelt) && (Utility.GetCurrentGameTime() - saqs.lasttease) * 24 > 3 && Utility.RandomInt() < 10 libs.notify("Sasha activates the vibrators inside you...", messagebox = true) int rnd = Utility.RandomInt(1,5) if rnd == 0 saqs.libs.VibrateEffect(libs.playerRef, 1, 10, teaseOnly = true) elseif rnd == 1 saqs.libs.VibrateEffect(libs.playerRef, 2, 20, teaseOnly = true) elseif rnd == 2 saqs.libs.VibrateEffect(libs.playerRef, 3, 30, teaseOnly = true) elseif rnd == 3 saqs.libs.VibrateEffect(libs.playerRef, 4, 40, teaseOnly = false) elseif rnd == 4 saqs.libs.VibrateEffect(libs.playerRef, 5, 300, teaseOnly = false) Endif saqs.lasttease = Utility.GetCurrentGameTime() EndIf ; has a demand If saqs.dcur_sasha_isdominating.GetValueInt() == 1 && (Utility.GetCurrentGameTime() - saqs.lastdemand) * 24 > 8 && Sasha.GetDistance(libs.playerref) < 1500 && !Sasha.WornHasKeyword(libs.zad_DeviousGag) saqs.dcur_sasha_hasdemand.SetValueInt(1) Else saqs.dcur_sasha_hasdemand.SetValueInt(0) EndIf if saqs.dcur_sasha_hasdemand.GetValueInt() == 1 && !UI.IsMenuOpen("Dialogue Menu") && !UI.IsMenuOpen("BarterMenu") && !UI.IsMenuOpen("ContainerMenu") && !UI.IsMenuOpen("Sleep/Wait Menu") && !libs.playerRef.IsInCombat() && !libs.IsAnimating(libs.playerRef) && !libs.playerref.IsOnMount() && !libs.playerref.IsSwimming() && !dclibs.isInHomeorJail() ; && (dclibs.isInCity() || dclibs.isInHold()) saqs.notalkcounter += 1 If saqs.notalkcounter > 20 if dclibs.progressivebondage(libs.playerref, dcumenu.equiptheme, 1) libs.notify("Sasha is locking more restraints on you for not talking to her!") Else libs.notify("Sasha is making your collar shock you. You need to talk to her!") dcumenu.dcur_electricblastspell.remoteCast(libs.playerRef, libs.playerRef, libs.playerRef) float maxHealth = libs.playerref.GetBaseActorValue("Health") libs.PlayerRef.DamageActorValue("Health", maxHealth * 0.8) float maxStamina = libs.playerref.GetBaseActorValue("Stamina") libs.PlayerRef.DamageActorValue("Stamina", maxStamina * 0.8) float maxMagicka = libs.playerref.GetBaseActorValue("Magicka") libs.PlayerRef.DamageActorValue("Magicka", maxMagicka * 0.8) Endif elseif saqs.notalkcounter > 10 libs.notify("Sasha is making your collar choke you. You need to talk to her!") dcumenu.dcur_electricblastspell.remoteCast(libs.playerRef, libs.playerRef, libs.playerRef) float maxHealth = libs.playerref.GetBaseActorValue("Health") libs.PlayerRef.DamageActorValue("Health", maxHealth * 0.5) Elseif saqs.notalkcounter > 5 libs.notify("Sasha demands you to talk to her NOW!") Else libs.notify("Sasha wants to talk to you.") Endif Endif ; process combination lock if player has the key. if libs.PlayerRef.GetItemCount(saqs.dcur_sashaMasterKey) >= 1 && (Utility.GetCurrentGameTime() - saqs.LastKeyTick) * 24.0 > saqs.KeyTickLen saqs.LastKeyTick = Utility.GetCurrentGameTime() saqs.KeyAction() Endif ; errands If saqs.errandtype > 0 If saqs.errandtype == saqs.errand_lookforkeys && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 2) saqs.ReleaseSasha() libs.notify("Sasha returns with a key.", messagebox = true) dclibs.FindAnyUsefulKey(libs.playerref) saqs.errandtype = 0 Endif If saqs.errandtype == saqs.errand_lookfortreasure && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 4) saqs.ReleaseSasha() libs.notify("Sasha returns with a valuable item.", messagebox = true) dclibs.GiveBondageRewards(leverage = 2) saqs.errandtype = 0 Endif If saqs.errandtype == saqs.errand_lookforgold && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 2) saqs.ReleaseSasha() libs.notify("Sasha returns with some gold.", messagebox = true) libs.playerref.AddItem(dcumenu.gold001, Utility.RandomInt(200,500)) saqs.errandtype = 0 Endif If saqs.errandtype == saqs.errand_lookforsoulgem && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 6) saqs.ReleaseSasha() libs.notify("Sasha returns with a soulgem.", messagebox = true) libs.playerref.Additem(dclibs.LItemSoulGemFullSpecial, 1) saqs.errandtype = 0 Endif Endif ; ties player when she's not outdoors and domination is active if (saqs.dcur_sasha_isdominating.GetValueInt() == 1) && saqs.GetIsOutdoors() saqs.UnlockPlayer() Elseif (saqs.dcur_sasha_isdominating.GetValueInt() == 1) && !saqs.GetIsOutdoors() saqs.TiePlayer() Endif EndFunction And PublicIndecency() looks like this: Spoiler Function PublicIndencency() if !(dclibs.isInCity() || dclibs.isInHold()) || !dcumenu.pienabled || !dcumenu.pienforcenuditylaw || libs.playerref.GetParentCell().IsInterior() return Endif bool isnaked = (libs.playerref.GetWornForm(0x00000004) == None) if !isnaked || (Game.GetModByName("Slaverun_Reloaded.esp") != 255 && dclibs.isInCity()) return Endif ;full chastity ; if (dclibs.dcur_iswearinglockedgear.GetValueInt() == 1) ; actually, lets accept just the belt and bra and don't care if the player has the keys. if libs.playerRef.WornHasKeyword(libs.zad_DeviousBelt) && libs.playerRef.WornHasKeyword(libs.zad_DeviousBra) return Endif Actor currenttest = Game.FindRandomActorFromRef(libs.playerRef, 1000.0) if currenttest && dclibs.testrapist(currenttest) && currenttest.HasKeyword(dcumenu.ActorTypeNPC) ; make sure it's an NPC even if humanoid creatures are otherwise allowed. If currenttest.IsGuard() IndencencyPoints += 3 Elseif dcumenu.pimisogyny IndencencyPoints += 2 Else IndencencyPoints += 1 Endif If IndencencyPoints > 15 piqs.dcur_pi_witness.Clear() piqs.dcur_checkforguardFF.Cast(libs.playerref) Utility.Wait(1) IndencencyPoints = 0 if piqs.dcur_pi_witness.GetActorReference().IsGuard() dcur_pi_usenakeddialogue.SetValueInt(1) libs.notify("A guard is going to prosecute you for public indecency!") piqs.dcur_pi_witness.GetActorReference().moveto(libs.playerref) Utility.Wait(1) piqs.dcur_pi_guard.ForceRefTo(piqs.dcur_pi_witness.GetActorReference()) Else libs.notify("You have been reported for public indecency!") int bounty If dcumenu.pimisogyny bounty = dcumenu.pibounty * 2 Else bounty = dcumenu.pibounty Endif Faction akFaction = piqs.dcur_pi_witness.GetActorReference().GetCrimeFaction() akFaction.ModCrimeGold(bounty, false) Endif Else Bool Sex = currenttest.GetLeveledActorBase().GetSex() If currenttest.IsGuard() libs.notify(currenttest.GetLeveledActorBase().GetName() +" warns you for violeting indecency laws!") ElseIf Sex == 0 ; male Int rm = Utility.RandomInt(1, 10) if rm == 1 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your exposed self!") ElseIf rm == 2 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your boobs!") ElseIf rm == 3 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your pussy!") ElseIf rm == 4 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your curves!") ElseIf rm == 5 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your butt!") ElseIf rm == 6 libs.notify(currenttest.GetLeveledActorBase().GetName() +" thinks you are a cheap whore!") ElseIf rm == 7 libs.notify(currenttest.GetLeveledActorBase().GetName() +" shakes his fist at your indecent exposure!") ElseIf rm == 8 libs.notify(currenttest.GetLeveledActorBase().GetName() +" rolls his eyes at your attention whoring!") ElseIf rm == 9 libs.notify(currenttest.GetLeveledActorBase().GetName() +" rubs his cock while staring at your naked self!") ElseIf rm == 10 libs.notify(currenttest.GetLeveledActorBase().GetName() +" makes obscene gestures in your direction!") Endif Else Int rm = Utility.RandomInt(1, 5) if rm == 1 libs.notify(currenttest.GetLeveledActorBase().GetName() +" thinks you are a cheap whore!") ElseIf rm == 2 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is shocked by your nudity!") ElseIf rm == 3 libs.notify(currenttest.GetLeveledActorBase().GetName() +" shakes her head seeing you naked!") ElseIf rm == 4 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your curves!") ElseIf rm == 5 libs.notify(currenttest.GetLeveledActorBase().GetName() +" turns her eyes away from your exposed self!") Endif Endif Endif EndIf EndFunction Imagine this all running every 15 seconds. That's a lot. But computers are really fast and it's needed to make a huge mod like DCL work. Huge props to Kimy btw. It's impressive. So this in isolation isn't a problem, but imagine if you had more mods like this running at the same time. And then imagine trying to play one of my quests. My mod doesn't scan or anything, but it sometimes does use a bunch of code to spawn things, teleport characters and starts scenes. Like this big one in the last quest: Spoiler Function OnCollarActivate() ;REDONE FOR SEARCH REWORK. NOW STARTS THE CAVE SCENE SQ10B.CleanSearchItems() Game.GetPlayer().removeAllItems(Laura_PlayerItemStorage, true) Laulibs.FadeToBlack() ;libs.LockDevice(libs.playerRef, Laura_ToughBlackAnkleShacklesInventory, false) Jade.MoveTo(JadeCaveTeleportMarker) Daubeny.MoveTo(CaveTeleportMarker) Libs.playerref.MoveTo(CaveTeleportMarker) Game.SetPlayerAIDriven(false) Jade.SetOutfit(Laura_SQ10_JadeFreedOutfit) Libs.LockDevice(Jade, Laura_ToughIronPrisonerChainsInventory, false) Utility.Wait(0.5) Debug.MessageBox("Daubeny takes you and Jade to the cave.") Debug.MessageBox("Something feels really wrong.") Utility.Wait(0.5) CaveEntranceDoor.Lock(false) PlayerCageDoor.SetOpen() PlayerCageDoor.Lock(False) CaveIntroScene.Start() Chest1.Enable() Chest2.Enable() Chest3.Enable() Chest4.Enable() Chest5.Enable() Chest6.Enable() Chest1Prop.Enable() Chest2Prop.Enable() Chest3Prop.Enable() Chest4Prop.Enable() Chest5Prop.Enable() Chest6Prop.Enable() StorageRoomKey.Enable() OldLedger1.Disable() OldLedger2.Disable() Slave34.Disable() libs.UnlockDevice(Slave31, libs.gagPanel, libs.gagPanelRendered, libs.zad_DeviousGag, true, false) libs.UnlockDevice(Slave24, libs.gagPanel, libs.gagPanelRendered, libs.zad_DeviousGag, true, false) Utility.Wait(1) libs.LockDevice(Slave24, libs.gagPanel, false) libs.LockDevice(Slave31, libs.gagPanel, false) EndFunction If you're running multiple "scanning" mods at the same time, there's a chance that there's no room left for my code to spawn a chest or something. And if that happens to be an important chest, you're stuck. Edited October 25, 2023 by Laura 2
Laura Posted October 25, 2023 Author Posted October 25, 2023 (edited) On 10/22/2023 at 12:14 PM, zittonⅡ said: How about add a bed in the shop and change some conversation after player finished this story,? I mean, after player and laura experienced these events, they should have a good friendship. I want to but I also want to overdo it. Adding a few lines of dialogue and some code to make a bed available for the player is easy but I want more. I want it to be part of somekind of sub/dom quest or renting thing. I'm sure I'd regret it if I took the easy path. I've always taken the 'overdo it' path and in hindsight I'm always glad I did. Like the quest I'm currently working on, I want characters to return but it's difficult to not accidentally start a whole new storyline. I could go the easy soap-like route where after the quest they have to go abroad to visit their grandma something and fuck off. But that doesn't make much sense. ? Edited October 25, 2023 by Laura 5
Laura Posted October 25, 2023 Author Posted October 25, 2023 Love the discussion about Sloane and the story btw. 2
Miauzi Posted October 25, 2023 Posted October 25, 2023 (edited) Vor 34 Minuten sagte Laura: SexLab Aroused ist auch etwas, das den Spieler und die umliegenden Charaktere regelmäßig „scannt“. Es kann auch etwas skriptlastig sein, weshalb es SLA Redux gibt. Ich habe versucht, die Funktion für periodische Ereignisse von DCL als Beispiel zu finden, konnte sie aber nicht finden. Vielleicht habe ich es gefunden, bin mir aber nicht sicher, weil der Mod riesig ist. Vielleicht ist es dieses hier: Inhalte ausblenden Funktion clocktickshort() ; Tun Sie dies nur einmal pro Ladung, aber wir möchten nicht bis zu einer Stunde warten müssen. wenn erst laden initialisieren() endif SuspendNakedCommentsIfBound() dclibs.checkDCURQuestRunning() WasNearDeath = Falsch Wenn dclibs.containermutex dclibs.containermutex = Falsch Zurückkehren Endif wenn dcumenu.shutdownmod || dclibs.pollutedsavegame wenn dcumenu.debuglogenabled debug.trace("[DCUR] Mod-Funktionalität wurde heruntergefahren. Regelmäßige Ereignisse abgebrochen.") endif ; Wenn die XDFF-Quest aktiv ist, wenn die Mod heruntergefahren wird, versetzen wir sie in den pausierten Zustand: if dfs.IsRunning() dfs.EndQuest() Endif ; Gleiches gilt für die Gummipuppen-Quest. wenn rdqs.rdquestrunning rdqs.terminatequest() EndIf zurückkehren endif ;Keiner der folgenden Dinge muss im Kampf oder während Sexszenen ausgeführt werden, daher brechen wir in diesem Fall einfach ab und sparen etwas Leistung: if libs.playerRef.IsInCombat() || libs.IsAnimating(libs.playerRef) || suspendierter Zustand addgraceperiod() zurückkehren endif wenn dcumenu.debuglogenabled debug.trace("[DCUR] Regelmäßige Aktualisierung beginnt") endif ; Geräte-Buffs wenn dcumenu.enabledevicebuffs dcur_DeviceBuffs.cast(libs.playerref) Anders libs.playerref.DispelSpell(dcur_DeviceBuffs) Endif ;checksafearea() Wenn dcumenu.enablehornybuffs && !libs.playerRef.WornHasKeyword(dcur_kw_tentacles) Wenn libs.aroused.GetActorArousal(libs.PlayerRef) > dcumenu.HornyBuffsThreshold wenn !hornybuffsactive libs.notify("Deine sexuellen Wünsche machen dich stärker!") hornybuffsactive = True Endif dcur_hornybuffs.cast(libs.playerref) Anders wenn hornybuffsactive libs.notify("Du bist nicht mehr geil genug, um daraus Kraft zu schöpfen.") hornybuffsactive = Falsch Endif libs.playerref.DispelSpell(dcur_hornybuffs) Endif Anders libs.playerref.DispelSpell(dcur_hornybuffs) Endif ; Bearbeiten Sie einige Aufgaben einmal pro Spielstunde if (Utility.GetCurrentGameTime() - lasthousekeepingshortinterval) * 24.0 > 1.0 housekeepingshortinterval() endif Brustgröße() CheckFollowers() Cuminflation() mcs.IsSceneRunning = False if StorageUtil.GetIntValue(Game.GetPlayer(), "_SD_iEnslaved") || (dcumenu.installed_PO && (StorageUtil.GetIntValue(Game.GetPlayer(), "xpoPCinJail") == 1) || (StorageUtil.GetIntValue(Game.GetPlayer(), "xpoPCArrested") == 1) || (StorageUtil. GetIntValue(Game.GetPlayer(), "xpoPCArrestStart") == 1)) wenn dcumenu.debuglogenabled debug.trace("[DCUR] - PO- oder SD-Versklavung aktiv: Regelmäßige Aktualisierung abgebrochen") endif mcs.IsSceneRunning = True zurückkehren endif ; Normales Zeug beginnt hier dclibs.checkchastity() checkvisiblerestraints() ; Gürtel der Frauenfeindlichkeit Wenn Libs.PlayerRef.WornHasKeyword(dclibs.dcur_kw_misogynyBelt) libs.Aroused.UpdateActorExposure(libs.PlayerRef, 10) EndIf Sasha() ; Tentakelparasit: if libs.playerRef.WornHasKeyword(dcur_kw_tentacles) && ((Utility.GetCurrentGameTime() - lasttentacleaction) * 24.0 > 0.35) && Utility.RandomInt() < 50 && !UI.IsMenuOpen("Dialogmenü") && !UI.IsMenuOpen( "InventoryMenu") && !UI.IsMenuOpen("BarterMenu") && !UI.IsMenuOpen("Crafting Menu") && !UI.IsMenuOpen("ContainerMenu") libs.notify("Du wirst von dem Tentakel in deiner Muschi gefickt.") libs.Aroused.UpdateActorExposure(libs.PlayerRef, 10) int-Auswahl = Utility.RandomInt(1,4) bool tease = false wenn Auswahl == 1 ;libs.ShockActor(libs.playerref) necken = wahr EndIf libs.VibrateEffect(libs.playerref, (selection+1), 0, teaseOnly = tease, Silent = true) lasttentacleaction = Utility.GetCurrentGameTime() Endif ; Gag Talk – nur ändern, wenn der Spieler nicht im Dialog ist, um zu verhindern, dass das System mitten im Dialog wechselt Wenn !UI.IsMenuOpen("Dialogmenü") Wenn Utility.RandomFloat(0.0, 99.9) < dcumenu.gagtalkchance ; Verwenden Sie DCL Gag Talk dcur_gagtalk_enabled.SetValueInt(1) Anders ; Verwenden Sie DDI Gag Talk dcur_gagtalk_enabled.SetValueInt(0) Endif Endif ;Misogynie Wenn Utility.RandomInt(0, 99) < dcumenu.pimisogynyrapechance && !mcs.isDCURQuestRunning && !UI.IsMenuOpen("Dialogue Menu") && dclibs.dcur_iswearinglockedgear.GetValueInt() != 1 ;Int Chance = 25 ;Wenn libs.PlayerRef.GetAv("") ; frauenfeindliche Vergewaltigung zulassen dcumenu.dcur_misogyny_cooldown.SetValueInt(1) Anders dcumenu.dcur_misogyny_cooldown.SetValueInt(0) Endif ;Gerätekommentare if libs.playerRef.WornHasKeyword(libs.zad_Lockable) && !(mcs.isDCURQuestRunning) && dcumenu.devicecommentsenabled && (dcumenu.dcur_isvissiblerestrained.GetValue() == 1 || !dcumenu.devicecommentsvisibleonly) && (Utility.GetCurrentGameTime() - dcur_ letztesGerätKommentarzeit .GetValue()) * 24.0 > dcumenu.devicecommentscooldown dcur_devicecommentallowed.SetValue(1) dcur_devicecommentinconsequential.SetValue(0) dcur_devicecommentaction.SetValue(picknextdevicecommentevent()) elseif !libs.playerRef.WornHasKeyword(libs.zad_Lockable) && !(mcs.isDCURQuestRunning) && dcumenu.devicecommentsenabled && (Utility.GetCurrentGameTime() - dcur_lastdevicecommenttime.GetValue()) * 24.0 > 24.0 Wenn Utility.RandomInt() < 20 dcur_devicecommentallowed.SetValue(2) Anders dcur_lastdevicecommenttime.SetValue(Utility.GetCurrentGameTime()) EndIf anders dcur_devicecommentallowed.SetValue(0) endif wenn rdqs.rdquestrunning libs.Aroused.UpdateActorExposure(libs.PlayerRef, 1) rdqs.UpdateSexCounter() endif if dcumenu.selfbondageenable && !mcs.isDCURQuestRunning && !libs.playerref.WornHasKeyword(libs.zad_DeviousHeavyBondage) && (dcumenu.selfbondagewhenrestrained || !libs.playerRef.WornHasKeyword(libs.zad_Lockable)) && !libs.IsAnimating(lib s.playerRef) && !libs.playerref.IsOnMount() && !libs.playerref.IsSwimming() Wenn dclibs.Selfbondage() ; Brechen Sie die Funktion ab, wenn Selfbondage aus Performance-Gründen ein Element hinzugefügt hat. zurückkehren Endif Endif ;Sexuelle Angriffe, Schamanimationen und Kragenstrafen, aber überprüfen Sie zuerst noch einmal die SL-Animationen und den Kampf. if libs.playerRef.IsInCombat() || libs.IsAnimating(libs.playerRef) zurückkehren endif ; Zu diesem Zeitpunkt haben wir zwei Überprüfungen auf Sexszenen überstanden. Gehen wir also einfach davon aus, dass wirklich keine läuft: rapemutex = falsch ; Automatisch masturbieren bool isAroused = (libs.aroused.GetActorArousal(libs.PlayerRef) > dcumenu.uncontrollablelustThreshold) ; Wenn ihre Erregung hoch genug ist, lassen Sie sie los If dcumenu.lossofcontrol && isAroused && !mcs.isDCURQuestRunning && ((Utility.GetCurrentGameTime() - lastmasturbation) * 24.0 > 2.0) Wenn Utility.RandomInt(0, 99) < 33 dclibs.Masturbate(libs.playerRef) lastmasturbation = Utility.GetCurrentGameTime() Zurückkehren Anders lastmasturbation = Utility.GetCurrentGameTime() EndIf Endif PublicIndence() wenn dcur_scquest_isdancing.GetValueInt() != 1 ; Wir suchen nur dann nach Gelegenheiten für eine Vergewaltigung aus der Nähe, wenn keine sexuellen Übergriffe stattgefunden haben oder stattgefunden haben. wenn !SexAttacks() if !dclibs.gangbangmutex && (Utility.GetCurrentGameTime() - lastrape) * 24.0 > dcumenu.rdrapecooldown rapemutex = Falsch endif anders rapemutex = Wahr endif endif EndFunction Ich bin mir ziemlich sicher, dass dies der Code ist, der hin und wieder ausgeführt wird. Man muss kein Experte sein, um zu sehen, wie viel das ist. Viele der Zeilen, die Sie hier sehen, verweisen einfach auf etwas anderes. Zeilen wie Sasha() und Publicindecency() signalisieren die Ausführung dieser Funktionen, wenn sie im MCM aktiv sind. Sasha() sieht so aus: Inhalte ausblenden Funktion Sasha() ; Dies muss nicht verarbeitet werden, wenn Sasha kein aktueller Follower ist Schauspieler Sasha = saqs.GetSasha() Wenn !Sasha.IsInFaction(dcumenu.CurrentFollowerFaction) zurückkehren Endif ; Tanzpakete entfernen If (Utility.GetCurrentGameTime() - saqs.dancetimerstart) * 24 > 0,5 && saqs.activepackage libs.notify("Sasha hört auf zu tanzen.") saqs.removepackage(Sasha, saqs.activepackage) saqs.activepackage = Keine ;saqs.ResetOutfit(saqs.dcur_outfit_sashaNaked) EndIf ;Flags entfernen If (Utility.GetCurrentGameTime() - saqs.lastshock) * 24 > 1 saqs.dcur_sasha_hasbeenshockedlasthour.SetValueInt(0) EndIf ; kann einmal am Tag Besorgungen machen If (Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 24 saqs.dcur_sasha_candoerrand.SetValueInt(1) Anders saqs.dcur_sasha_candoerrand.SetValueInt(0) EndIf ; kann einmal am Tag ausgehurt werden If (Utility.GetCurrentGameTime() - saqs.lastwhoredout) * 24 > 24 saqs.dcur_sasha_canwhore.SetValueInt(1) Anders saqs.dcur_sasha_canwhore.SetValueInt(0) EndIf ; kann einmal am Tag Geschenke bekommen If (Utility.GetCurrentGameTime() - saqs.lastgiftgiven) * 24 > 24 saqs.dcur_sasha_cangetgift.SetValueInt(1) Anders saqs.dcur_sasha_cangetgift.SetValueInt(0) EndIf ; kann ab und zu geküsst werden If (Utility.GetCurrentGameTime() - saqs.lastkissed) * 24 > 6 saqs.dcur_sasha_canbekissed.SetValueInt(1) Anders saqs.dcur_sasha_canbekissed.SetValueInt(0) EndIf ; Überprüfen Sie, ob sie bereit ist, den Gürtel des Spielers zu öffnen Wenn saqs.dcur_sasha_isdominating.GetValueInt() == 0 && libs.playerref.WornHasKeyword(saqs.dcur_kw_sashaPlayerBelt) && ((Utility.GetCurrentGameTime() - saqs.lastplayerbelted) * 24 > saqs.playerbeltduration) wenn saqs.dcur_sasha_canunbeltplayer.GetValueInt() != 1 libs.notify("Sasha wäre bereit, dich abzuschnallen.", messagebox = true) EndIf saqs.dcur_sasha_canunbeltplayer.SetValueInt(1) Anders saqs.dcur_sasha_canunbeltplayer.SetValueInt(0) EndIf ; Herrschaft ; Chance, die Stecker zu verwenden, wenn sie den Player angeschlossen hat: if libs.playerRef.isEquipped(saqs.dcur_SashaPlayerChastityBelt) && (Utility.GetCurrentGameTime() - saqs.lasttease) * 24 > 3 && Utility.RandomInt() < 10 libs.notify("Sasha aktiviert die Vibratoren in dir...", messagebox = true) int rnd = Utility.RandomInt(1,5) wenn rnd == 0 saqs.libs.VibrateEffect(libs.playerRef, 1, 10, teaseOnly = true) elseif rnd == 1 saqs.libs.VibrateEffect(libs.playerRef, 2, 20, teaseOnly = true) elseif rnd == 2 saqs.libs.VibrateEffect(libs.playerRef, 3, 30, teaseOnly = true) elseif rnd == 3 saqs.libs.VibrateEffect(libs.playerRef, 4, 40, teaseOnly = false) elseif rnd == 4 saqs.libs.VibrateEffect(libs.playerRef, 5, 300, teaseOnly = false) Endif saqs.lasttease = Utility.GetCurrentGameTime() EndIf ; hat eine Nachfrage Wenn saqs.dcur_sasha_isdominating.GetValueInt() == 1 && (Utility.GetCurrentGameTime() - saqs.lastdemand) * 24 > 8 && Sasha.GetDistance(libs.playerref) < 1500 && !Sasha.WornHasKeyword(libs.zad_DeviousGag) saqs.dcur_sasha_hasdemand.SetValueInt(1) Anders saqs.dcur_sasha_hasdemand.SetValueInt(0) EndIf if saqs.dcur_sasha_hasdemand.GetValueInt() == 1 && !UI.IsMenuOpen("Dialogue Menu") && !UI.IsMenuOpen("BarterMenu") && !UI.IsMenuOpen("ContainerMenu") && !UI.IsMenuOpen("Sleep /Wartemenü") && !libs.playerRef.IsInCombat() && !libs.IsAnimating(libs.playerRef) && !libs.playerref.IsOnMount() && !libs.playerref.IsSwimming() && !dclibs.isInHomeorJail() ; && (dclibs.isInCity() || dclibs.isInHold()) saqs.notalkcounter += 1 Wenn saqs.notalkcounter > 20 if dclibs.progressivebondage(libs.playerref, dcumenu.equiptheme, 1) libs.notify("Sasha legt dir noch mehr Beschränkungen auf, weil du nicht mit ihr redest!") Anders libs.notify("Sasha sorgt dafür, dass dein Kragen dich schockiert. Du musst mit ihr reden!") dcumenu.dcur_electricblastspell.remoteCast(libs.playerRef, libs.playerRef, libs.playerRef) float maxHealth = libs.playerref.GetBaseActorValue("Health") libs.PlayerRef.DamageActorValue("Health", maxHealth * 0,8) float maxStamina = libs.playerref.GetBaseActorValue("Stamina") libs.PlayerRef.DamageActorValue("Stamina", maxStamina * 0,8) float maxMagicka = libs.playerref.GetBaseActorValue("Magicka") libs.PlayerRef.DamageActorValue("Magicka", maxMagicka * 0,8) Endif elseif saqs.notalkcounter > 10 libs.notify("Sasha lässt dich am Halsband ersticken. Du musst mit ihr reden!") dcumenu.dcur_electricblastspell.remoteCast(libs.playerRef, libs.playerRef, libs.playerRef) float maxHealth = libs.playerref.GetBaseActorValue("Health") libs.PlayerRef.DamageActorValue("Health", maxHealth * 0,5) Elseif saqs.notalkcounter > 5 libs.notify("Sasha verlangt von dir, JETZT mit ihr zu reden!") Anders libs.notify("Sasha möchte mit dir reden.") Endif Endif ; Benutzen Sie das Zahlenschloss, wenn der Spieler den Schlüssel hat. wenn libs.PlayerRef.GetItemCount(saqs.dcur_sashaMasterKey) >= 1 && (Utility.GetCurrentGameTime() - saqs.LastKeyTick) * 24.0 > saqs.KeyTickLen saqs.LastKeyTick = Utility.GetCurrentGameTime() saqs.KeyAction() Endif ; Besorgungen Wenn saqs.errandtype > 0 Wenn saqs.errandtype == saqs.errand_lookforkeys && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 2) saqs.ReleaseSasha() libs.notify("Sasha kommt mit einem Schlüssel zurück.", messagebox = true) dclibs.FindAnyUsefulKey(libs.playerref) saqs.errandtype = 0 Endif Wenn saqs.errandtype == saqs.errand_lookfortreasure && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 4) saqs.ReleaseSasha() libs.notify("Sasha kommt mit einem wertvollen Gegenstand zurück.", messagebox = true) dclibs.GiveBondageRewards(leverage = 2) saqs.errandtype = 0 Endif Wenn saqs.errandtype == saqs.errand_lookforgold && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 2) saqs.ReleaseSasha() libs.notify("Sasha kommt mit etwas Gold zurück.", messagebox = true) libs.playerref.AddItem(dcumenu.gold001, Utility.RandomInt(200,500)) saqs.errandtype = 0 Endif Wenn saqs.errandtype == saqs.errand_lookforsoulgem && ((Utility.GetCurrentGameTime() - saqs.lasterrand) * 24 > 6) saqs.ReleaseSasha() libs.notify("Sasha kehrt mit einem Seelenstein zurück.", messagebox = true) libs.playerref.Additem(dclibs.LItemSoulGemFullSpecial, 1) saqs.errandtype = 0 Endif Endif ; bindet die Spielerin, wenn sie nicht draußen ist und die Dominanz aktiv ist if (saqs.dcur_sasha_isdominating.GetValueInt() == 1) && saqs.GetIsOutdoors() saqs.UnlockPlayer() Elseif (saqs.dcur_sasha_isdominating.GetValueInt() == 1) && !saqs.GetIsOutdoors() saqs.TiePlayer() Endif EndFunction Und PublicIndecency() sieht so aus: Verborgene Inhalte aufdecken Function PublicIndencency() if !(dclibs.isInCity() || dclibs.isInHold()) || !dcumenu.pienabled || !dcumenu.pienforcenuditylaw || libs.playerref.GetParentCell().IsInterior() return Endif bool isnaked = (libs.playerref.GetWornForm(0x00000004) == None) if !isnaked || (Game.GetModByName("Slaverun_Reloaded.esp") != 255 && dclibs.isInCity()) return Endif ;full chastity ; if (dclibs.dcur_iswearinglockedgear.GetValueInt() == 1) ; actually, lets accept just the belt and bra and don't care if the player has the keys. if libs.playerRef.WornHasKeyword(libs.zad_DeviousBelt) && libs.playerRef.WornHasKeyword(libs.zad_DeviousBra) return Endif Actor currenttest = Game.FindRandomActorFromRef(libs.playerRef, 1000.0) if currenttest && dclibs.testrapist(currenttest) && currenttest.HasKeyword(dcumenu.ActorTypeNPC) ; make sure it's an NPC even if humanoid creatures are otherwise allowed. If currenttest.IsGuard() IndencencyPoints += 3 Elseif dcumenu.pimisogyny IndencencyPoints += 2 Else IndencencyPoints += 1 Endif If IndencencyPoints > 15 piqs.dcur_pi_witness.Clear() piqs.dcur_checkforguardFF.Cast(libs.playerref) Utility.Wait(1) IndencencyPoints = 0 if piqs.dcur_pi_witness.GetActorReference().IsGuard() dcur_pi_usenakeddialogue.SetValueInt(1) libs.notify("A guard is going to prosecute you for public indecency!") piqs.dcur_pi_witness.GetActorReference().moveto(libs.playerref) Utility.Wait(1) piqs.dcur_pi_guard.ForceRefTo(piqs.dcur_pi_witness.GetActorReference()) Else libs.notify("You have been reported for public indecency!") int bounty If dcumenu.pimisogyny bounty = dcumenu.pibounty * 2 Else bounty = dcumenu.pibounty Endif Faction akFaction = piqs.dcur_pi_witness.GetActorReference().GetCrimeFaction() akFaction.ModCrimeGold(bounty, false) Endif Else Bool Sex = currenttest.GetLeveledActorBase().GetSex() If currenttest.IsGuard() libs.notify(currenttest.GetLeveledActorBase().GetName() +" warns you for violeting indecency laws!") ElseIf Sex == 0 ; male Int rm = Utility.RandomInt(1, 10) if rm == 1 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your exposed self!") ElseIf rm == 2 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your boobs!") ElseIf rm == 3 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your pussy!") ElseIf rm == 4 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your curves!") ElseIf rm == 5 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your butt!") ElseIf rm == 6 libs.notify(currenttest.GetLeveledActorBase().GetName() +" thinks you are a cheap whore!") ElseIf rm == 7 libs.notify(currenttest.GetLeveledActorBase().GetName() +" shakes his fist at your indecent exposure!") ElseIf rm == 8 libs.notify(currenttest.GetLeveledActorBase().GetName() +" rolls his eyes at your attention whoring!") ElseIf rm == 9 libs.notify(currenttest.GetLeveledActorBase().GetName() +" rubs his cock while staring at your naked self!") ElseIf rm == 10 libs.notify(currenttest.GetLeveledActorBase().GetName() +" makes obscene gestures in your direction!") Endif Else Int rm = Utility.RandomInt(1, 5) if rm == 1 libs.notify(currenttest.GetLeveledActorBase().GetName() +" thinks you are a cheap whore!") ElseIf rm == 2 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is shocked by your nudity!") ElseIf rm == 3 libs.notify(currenttest.GetLeveledActorBase().GetName() +" shakes her head seeing you naked!") ElseIf rm == 4 libs.notify(currenttest.GetLeveledActorBase().GetName() +" is staring at your curves!") ElseIf rm == 5 libs.notify(currenttest.GetLeveledActorBase().GetName() +" turns her eyes away from your exposed self!") Endif Endif Endif EndIf EndFunction Stellen Sie sich vor, das Ganze läuft alle 15 Sekunden ab. Das ist eine Menge. Aber Computer sind wirklich schnell und es ist notwendig, damit ein großer Mod wie DCL funktioniert. Ein großes Lob übrigens an Kimy. Es ist beeindruckend. Das ist also für sich genommen kein Problem, aber stellen Sie sich vor, Sie hätten mehrere Mods dieser Art gleichzeitig laufen lassen. Und dann stellen Sie sich vor, Sie versuchen, eine meiner Quests zu spielen. Mein Mod scannt nicht oder so, aber er verwendet manchmal eine Menge Code, um Dinge zu spawnen, Charaktere zu teleportieren und Szenen zu starten. Wie dieser große in der letzten Quest: Inhalte ausblenden Funktion OnCollarActivate() ;ÜBERARBEITET ZUR ÜBERARBEITUNG DER SUCHE. JETZT BEGINNT DIE HÖHLENSZENE SQ10B.CleanSearchItems() Game.GetPlayer().removeAllItems(Laura_PlayerItemStorage, true) Laulibs.FadeToBlack() ;libs.LockDevice(libs.playerRef, Laura_ToughBlackAnkleShacklesInventory, false) Jade.MoveTo(JadeCaveTeleportMarker) Daubeny.MoveTo(CaveTeleportMarker) Libs.playerref.MoveTo(CaveTeleportMarker) Game.SetPlayerAIDriven(false) Jade.SetOutfit(Laura_SQ10_JadeFreedOutfit) Libs.LockDevice(Jade, Laura_ToughIronPrisonerChainsInventory, false) Utility.Wait(0.5) Debug.MessageBox("Daubeny bringt dich und Jade in die Höhle.") Debug.MessageBox("Etwas fühlt sich wirklich falsch an.") Utility.Wait(0.5) CaveEntranceDoor.Lock(false) PlayerCageDoor.SetOpen() PlayerCageDoor.Lock(False) CaveIntroScene.Start() Chest1.Enable() Chest2.Enable() Chest3.Enable() Chest4.Enable() Chest5.Enable() Chest6.Enable() Chest1Prop.Enable() Chest2Prop.Enable() Chest3Prop.Enable() Chest4Prop.Enable() Chest5Prop.Enable() Chest6Prop.Enable() StorageRoomKey.Enable() OldLedger1.Disable() OldLedger2.Disable() Slave34.Disable() libs.UnlockDevice(Slave31, libs.gagPanel, libs.gagPanelRendered, libs.zad_DeviousGag, true, false) libs.UnlockDevice(Slave24, libs.gagPanel, libs.gagPanelRendered, libs.zad_DeviousGag, true, false) Utility.Wait(1) libs.LockDevice(Slave24, libs.gagPanel, false) libs.LockDevice(Slave31, libs.gagPanel, false) EndFunction Wenn Sie mehrere „Scanning“-Mods gleichzeitig ausführen, besteht die Möglichkeit, dass kein Platz mehr für meinen Code vorhanden ist, um eine Truhe oder ähnliches zu erzeugen. Und wenn es sich hierbei um eine wichtige Truhe handelt, stecken Sie fest. Thank you for these detailed examples ... they show me things I have only suspected so far (due to lack of detailed knowledge). The user in question - whom I tried to help - has a very long mod list with various candidates. I myself had a similarly long mod list when I first tried to get her mod to work ... also with DCL - which I really enjoyed playing!. And so her mod didn't work for me either - very frsutrated I had deleted it then. This time I approached the matter differently ... I informed myself in this thread beforehand and adjusted my mod list accordingly (as described) ... and everything works perfectly. --- This training mod (gives bonuses for wearing DD equipment over time) - has a very high scan frequency - if you extend this scanning to your companions it sometimes gets difficult (you see clear time delays in quest reactions) ... but as soon as you extend the scan function to all NPCs, it's over ... it becomes unplayable. Since the physical changes - which are produced by the training - are also adjusted at the same time, the game can be overwhelmed even with a fully activated DCL. (You only have to go to the "club cellar" in Flusswald...) Edited October 25, 2023 by Miauzi 1
Miauzi Posted October 25, 2023 Posted October 25, 2023 Vor 17 Minuten sagte Laura: Ich möchte, aber ich möchte es auch übertreiben. Ein paar Dialogzeilen und etwas Code hinzuzufügen, um dem Spieler ein Bett zur Verfügung zu stellen, ist einfach, aber ich möchte mehr. Ich möchte, dass es Teil einer Art Sub-/Dom-Quest oder einer Mietsache ist. Ich bin mir sicher, dass ich es bereuen würde, wenn ich den einfachen Weg gewählt hätte. Ich habe immer den Weg gewählt, es zu übertreiben, und im Nachhinein bin ich immer froh, dass ich es getan habe. Wie bei der Quest, an der ich gerade arbeite, möchte ich, dass die Charaktere zurückkehren, aber es ist schwierig, nicht versehentlich eine ganz neue Handlung zu beginnen. Ich könnte den einfachen Soap-ähnlichen Weg gehen, bei dem sie nach der Quest ins Ausland gehen müssen, um ihre Oma zu besuchen und sich zu verpissen. Aber das macht wenig Sinn. ? A "game relationship" between Laura and the player ... good idea - because the beginning is already there, so to speak. I have already hinted at something like that in my story ... but these are still the thoughts of my play character - how she reacts to being locked into the KG ... my own "roll-play", so to speak. Whereas in the current story an actual "play-relationship" (sub-dom-relationship) would be very complicated - because something like that is already firmly planned with other protagonists (the companion "Recorder" and the "modified" Serana). Laura "merely" supplies the "toys" needed ... also "custom-made"). But this idea would inspire many fans of the mod from my point of view.
lmTAYLA Posted October 27, 2023 Posted October 27, 2023 Going to sound like a broken record but i've tried every listed fix for that one stage in taking control, I saved outside the shop, master literally couldn't be closer to me, go inside, he comes in just fine, no laura trigger, spawn laura, has the first line of dialogue then back to usual shop dialogue, masters dialogue will trigger when he says "make her" and you can respond but after that nothing. autosaves don't do it, talking to master outside is a nope, inside nope, might try killing viggo tomorrow see if that fixes it. did not kill viggo in case it's linked to that. SSE. 1
F0xii Posted October 29, 2023 Posted October 29, 2023 On 10/25/2023 at 11:51 PM, Laura said: So this in isolation isn't a problem, but imagine if you had more mods like this running at the same time. And then imagine trying to play one of my quests. Relating to this, does anyone know how much script load bakafactory/factoryclose's mods have? Namely SLHH, SLAP and BaboDialogue.
philyb Posted October 29, 2023 Posted October 29, 2023 Just incase anyone is wondering, JK's Whiterun Outskirts is KIND OF compatible, there are a few clipping issues but it kind of places nicely and gives Laura a backyard. A few markfordelete can clean it up nicely.
BlahBlahBlah1103 Posted October 30, 2023 Posted October 30, 2023 Just completed the main storyline; what happens to Jade after she seemingly escapes? I really enjoyed her character and story, and really want to see more of her. Maybe some side quests where we try to track her down and capture her again, since she still hasn't faced justice (and probably get tied up by her along the way)?
aurreth Posted October 30, 2023 Posted October 30, 2023 On 10/29/2023 at 12:27 AM, philyb said: Just incase anyone is wondering, JK's Whiterun Outskirts is KIND OF compatible, there are a few clipping issues but it kind of places nicely and gives Laura a backyard. A few markfordelete can clean it up nicely. I have a patch for Outskirts available here: 1
xyzxyz Posted October 31, 2023 Posted October 31, 2023 On 10/30/2023 at 12:54 PM, BlahBlahBlah1103 said: Just completed the main storyline; what happens to Jade after she seemingly escapes? I really enjoyed her character and story, and really want to see more of her. Maybe some side quests where we try to track her down and capture her again, since she still hasn't faced justice (and probably get tied up by her along the way)? So far no new updates after the main quest ends so we have no idea.
Miauzi Posted October 31, 2023 Posted October 31, 2023 Am 30.10.2023 um 12:54 Uhr sagte BlahBlahBlah1103: Habe gerade die Haupthandlung abgeschlossen; Was passiert mit Jade, nachdem sie scheinbar entkommen ist? Ich habe ihren Charakter und ihre Geschichte wirklich genossen und möchte unbedingt mehr von ihr sehen. Vielleicht ein paar Nebenquests, in denen wir versuchen, sie aufzuspüren und wieder gefangen zu nehmen, da sie immer noch nicht vor Gericht gestellt wurde (und wahrscheinlich unterwegs von ihr gefesselt wird)? "Jade" itself comes - as I understand the plot - from the slave cellar of "Darius" and "Sloane". Whether she was able to escape or was released by her "new owner" or escaped... as I understand it, it's not really clear yet... or have I overlooked something fundamental? Their "raids" - according to my interpretation - were intended to get the "ball rolling"... ultimately they represent the dramaturgical lever - why "Laura" and "Katharina" ultimately have to face their fate... with the indispensable help of the player. So finding "Jade" in the dungeon basement of "Sloane" was logical... the slave trader probably also had various papers about her in her hand in addition to the StarWars guy... which we don't have found in the safe. The mod author is obviously still keeping some continuation options open here. Interactions with Jade would ultimately be a kind of "spin-off" of the mod itself... would turn her from an important supporting character into THE main character... but who is actually far superior to the player in all aspects of "stealth". So if you want to hunt "Jade"... you have to offer yourself as a "tasty" bait... basically invite her to a BDSM game together. ?
Sidorowicz Posted November 3, 2023 Posted November 3, 2023 First of all - your mod is brilliant - I recently downloaded it on the SE version, everything works for me - including DD, chains, etc. But for some reason, during the first task - bringing thotium, Katarina cannot remove any DD accessories from the character. I don't know what the problem is, even Debug in MM cannot remove them
Naps-On-Dirt Posted November 3, 2023 Posted November 3, 2023 3 hours ago, Sidorowicz said: First of all - your mod is brilliant - I recently downloaded it on the SE version, everything works for me - including DD, chains, etc. But for some reason, during the first task - bringing thotium, Katarina cannot remove any DD accessories from the character. I don't know what the problem is, even Debug in MM cannot remove them If you still have one, try reloading a save before going into the shop and try to get her to remove it again. Might be script lag or something. If that fails or you don't have a save, you could try adding "Laura's Secret Key" I think it is called, via console. However... I remember that one set of the quest items won't open with that key and it might be that one, the first set. So if that happens, you could try the debug options in DD itself, and maybe even Deviously Cursed Loot if you use it. DCL has a "Free Me!" button that can remove quest objects... but that might be reserved for only DCL objects, I don't actually know if it can free you from other mods' items.
Miauzi Posted November 3, 2023 Posted November 3, 2023 Vor 4 Stunden sagte Sidorowicz: Zunächst einmal – Ihr Mod ist brillant – ich habe ihn kürzlich auf die SE-Version heruntergeladen, bei mir funktioniert alles – einschließlich DD, Ketten usw. Aber aus irgendeinem Grund kann Katarina während der ersten Aufgabe – Thotium bringen – kein DD-Zubehör entfernen der Charakter. Ich weiß nicht, wo das Problem liegt, selbst Debug in MM kann sie nicht entfernen Well - without a complete list of their mods (in a spoiler please) we can't really get any further here. We addressed your error here for another user just a few weeks ago.
OlegMokry Posted November 4, 2023 Posted November 4, 2023 Hello. Can you help me? i have trouble with "familiar face". I found all three keys, but i can`t open a strongbox.
Miauzi Posted November 4, 2023 Posted November 4, 2023 Vor 27 Minuten sagte OlegMokry: Hallo. Kannst du mir helfen? Ich habe Probleme mit „vertrautes Gesicht“. Ich habe alle drei Schlüssel gefunden, aber ich kann keinen Tresor öffnen. Can't you describe it a little more precisely... I, for example, do NOT have a "crystal ball" and at the moment I don't feel like guessing blindly... thank you
OlegMokry Posted November 5, 2023 Posted November 5, 2023 (edited) 20 hours ago, Miauzi said: Can't you describe it a little more precisely... I, for example, do NOT have a "crystal ball" and at the moment I don't feel like guessing blindly... thank you i`ve found all three keys, and then i can`t understand what i need to do next. i can only to change my restraints. A strongbox is not active. i try to open it, but nothing happens. All idols work. What i need to do next? i`ve tried every restraints set but a strongbox didn`t activate, ScreenShot3.bmp Edited November 5, 2023 by OlegMokry
Miauzi Posted November 5, 2023 Posted November 5, 2023 (edited) Vor einer Stunde sagte OlegMokry: Ich habe alle drei Schlüssel gefunden und verstehe dann nicht, was ich als nächstes tun soll. Ich kann nur meine Fesseln ändern. Ein Tresor ist nicht aktiv. Ich versuche es zu öffnen, aber es passiert nichts. Alle Idole funktionieren. Was muss ich als nächstes tun? Ich habe alle Fesseln ausprobiert, aber ein Tresor ließ sich nicht aktivieren. ScreenShot3.bmp 5.93 MB · 2 downloads According to the picture you sent, you have already opened the box (???) ... it contains the key with which you can leave the mine ... it belongs to the grille door behind the drawbridge The problem is not unknown to me... it has been discussed at least once in this thread... I just don't remember where. So it only helps to look through the last 200 pages ... Edited November 5, 2023 by Miauzi
OlegMokry Posted November 5, 2023 Posted November 5, 2023 49 minutes ago, Miauzi said: According to the picture you sent, you have already opened the box (???) ... it contains the key with which you can leave the mine ... it belongs to the grille door behind the drawbridge but i didn`t get a key. This strongbox is active when i don`t have any of three keys. maybe i can use older versions of this mod. I will check my other mods. Maybe one of them caused it
Miauzi Posted November 5, 2023 Posted November 5, 2023 Gerade eben sagte OlegMokry: Aber ich habe keinen Schlüssel bekommen. Dieser Tresor ist aktiv, wenn ich keinen der drei Schlüssel habe. Vielleicht kann ich ältere Versionen dieses Mods verwenden. Ich werde meine anderen Mods überprüfen. Vielleicht hat es einer von ihnen verursacht Well - the current version works - I used it to create my blog story But translations of the subtitles or packages that give the mod's NPC "voices" - can lead to errors... although usually in dialogues The reason that a "box" doesn't work is usually due to a conflict with another mod... but without a complete mod list (in a spoiler) we can't help you
vrelk Posted November 6, 2023 Posted November 6, 2023 On 10/26/2023 at 9:14 PM, lmTAYLA said: Going to sound like a broken record but i've tried every listed fix for that one stage in taking control, I saved outside the shop, master literally couldn't be closer to me, go inside, he comes in just fine, no laura trigger, spawn laura, has the first line of dialogue then back to usual shop dialogue, masters dialogue will trigger when he says "make her" and you can respond but after that nothing. autosaves don't do it, talking to master outside is a nope, inside nope, might try killing viggo tomorrow see if that fixes it. did not kill viggo in case it's linked to that. SSE. Nope, just went back and tried that myself, but it didn't seem to make a difference. So far, the closest I got was by manually doing what the TpSonaAndLaura function does, but you can only talk to each once before they go back to their normal dialog. I did try and brute force it along, but due to the issues, it really didn't help all that much. I will include what I did in a spoiler below, in case you want to try and break shit as well. Spoiler This is super janky, and brute forces your way though, but has some MAJOR issues due to missing scripts. Move and enable Sona: prid xx029057, moveto player, enable Talk to Sona. Enable Laura: prid xx004f08, enable Talk to Laura & Master. Based on the code, somewhere in here it looks like you would attack Laura. Trying that when not asked doesn't help other than make people yell and run around. Manually set the quest stage to 1400, then 1500. Manually unlock the thotium case under the front desk and touch it. The quest stage should now be 1600. Re-enable Laura. Set it to 1650. This is the dialog that indicates what should be happening right now. (function: FreePlayer2) "Sona slowly puts her hands near the collar and seems to drain it. As she drains it, master fades away and the rest of the steel restraints disappear. She then carefully removes the collar and then takes off the gag." Since this doesn't happen, you're left with all your restraints. Find a way to get the restraints off of yourself. Use the console, or give youself the key (xx01c35a). I used the console, then unequiped them from my inventory. Disable Master to get him out of the way. Talk to Laura, she will remove all the leather restraints. It would have re-enabled fast travel, but it doesn't since the script didn't run, so that's a problem... (function: FreePlayer3) Set the stage to 1800, Manually unlock the front door and re-lock the thotium case is you wish. (function: StartStage1800) Talk to Laura. She asks if you're ready to go, but she never follows. At this point, I got stuck since there's no quest marker or objective.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now