myDNS Posted February 20, 2022 Posted February 20, 2022 (edited) Alright I'm struggling. I feel like I don't understand the concept of PlayerRef. I don't understand how I'd go about selecting the correct Actor to pipe into StorageUtils SetFloatValue function ... Maybe someone smarter than me can figure this out: Apropos2Actors.psc - line 228 - Event OverrideWearAndTear Event OverrideWearAndTear(Form frm, String area, Int new_value, Bool updateAbuse, Bool updateCreatureAbuse, Bool updateDaedricAbuse) Debug("OverrideWearAndTear") Actor anActor = frm As Actor If !anActor Return EndIf If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Log("AproposWearAndTear.OverrideWearAndTear(" + actorName + "," + new_value + ")") EndIf Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor If area == "Vaginal" aproposActor.OverrideVaginalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + new_value) ElseIf area == "Anal" aproposActor.OverrideAnalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + new_value) Else aproposActor.OverrideOralWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) EndIf EndIf EndEvent Apropos2Actors.psc - line 257 - Function DoApplyWearAndTear Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) ;Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) Debug("DoApplyWearAndTear") If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Debug("DoApplyWearAndTear(" + actorName + "," + damageClass + "," + isRapeOrAggressive + ")") EndIf Bool isDaedricCreatureOrDremora = IsDremoraOrDaedricCreature(damageClass) Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor Int amount = GetWearTearDamage(damageClass, isRapeOrAggressive) If area == "Vaginal" aproposActor.IncreaseVaginalWearAndTear(amount) aproposActor.IncreaseVaginalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + amount) ElseIf area == "Anal" aproposActor.IncreaseAnalWearAndTear(amount) aproposActor.IncreaseAnalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + amount) Else aproposActor.IncreaseOralWearAndTear(amount) aproposActor.IncreaseOralAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) EndIf EndIf EndFunction Apropos2Actors.psc - appendix to eof - Function TearSimpleWnT and Float Function ScaleRange ;Simple Wear & Tear by darknotfear Compability Function TearSimpleWnT(Actor anActor, Int fAproposTearValue, String fArea) If fArea == "Vaginal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 1.0) ;I think the Range here is 0-1+ for Simple Wear&Tear, where ElseIf metric < 9 && metric >= 7 ;prolapse occurs at 0.9 and higher values are kinda useless StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Pussy. Metric is " + metric) ElseIf fArea == "Anal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 1.0) ElseIf metric < 9 && metric >= 7 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Asshole. Metric is " + metric) EndIf EndFunction Float Function ScaleRange(Float x) Int a = 0 Int b = 10 ;This is the used metric from above Int min = 0 Int max = 2000 ;I think max here is 2000, found that in some script. Maybe hardcoding this is bad - Idk. Float fScaledVal = ((b - a) * (x - min)) / (max - min) + a return fScaledVal EndFunction I'd if this is helpful for anyone ... Edited February 20, 2022 by myDNS
belegost Posted February 21, 2022 Posted February 21, 2022 (edited) Getting instant CTD when loading into the game. I'm using latest version of 3BA along with latest CBPC, which is setup to control the physics instead of HDT for performance reasons (HDT controlled body tanks fps to unplayable levels), plus The Pure skin. I have required HDT version but it's there mostly for clothing. CTD occurs with or without prolapsed uteus installed, which seems to be the only component that needs HDT. I suspect there's a mesh conflict somewhere. I'm on SE 1.5.97, SKSE 2.0.20, SL 1.63 and never updated to AE so basically the same version as you. All the other requirements you listed are met as well. Edited February 21, 2022 by belegost
darknotfear Posted February 21, 2022 Author Posted February 21, 2022 1 hour ago, belegost said: Getting instant CTD when loading into the game. I'm using latest version of 3BA along with latest CBPC, which is setup to control the physics instead of HDT for performance reasons (HDT controlled body tanks fps to unplayable levels), plus The Pure skin. I have required HDT version but it's there mostly for clothing. CTD occurs with or without prolapsed uteus installed, which seems to be the only component that needs HDT. I suspect there's a mesh conflict somewhere. I'm on SE 1.5.97, SKSE 2.0.20, SL 1.63 and never updated to AE so basically the same version as you. All the other requirements you listed are met as well. only the mcm and configs are loaded upon loading the game, there is no actual function before the mod is enabled manually. did you have papyrus log for that?
belegost Posted February 21, 2022 Posted February 21, 2022 (edited) 41 minutes ago, darknotfear said: only the mcm and configs are loaded upon loading the game, there is no actual function before the mod is enabled manually. did you have papyrus log for that? The log doesn't say anything in regards to this mod. In my experience instant CTD without any papyrus output usually means mesh conflict and I suspect that skin replacer I'm using might be the source. I will examine it later in xEdit to see if there are any conflicts with my current load order. Edited February 21, 2022 by belegost
belegost Posted February 21, 2022 Posted February 21, 2022 (edited) Ok, xEdit doesn't list any conflicts, in fact I had reinstalled SWT again and it started with no problems this time. However I have made some changes since last time I tested it though, namely I have removed Dirt&Blood&Cum and all its requirements, as the cum effects from it would not be registered by SLSF. I assume this might have been the source of the conflict, but that's just educated guess at this point as I have no intention of reinstalling it and confirming right now. Question: since SWT can be started without Prolapsed Uterus, is it really necessary? I have tinkered a bit with debug options but the uterus doesn't seem to want to show up once wear reaches and exceeds the threshold. Also I am not really a big fan of having it, I presume it can be turned off somehow which would make it a soft requirement? Edited February 21, 2022 by belegost
darknotfear Posted February 21, 2022 Author Posted February 21, 2022 57 minutes ago, belegost said: Ok, xEdit doesn't list any conflicts, in fact I had reinstalled SWT again and it started with no problems this time. However I have made some changes since last time I tested it though, namely I have removed Dirt&Blood&Cum and all its requirements, as the cum effects from it would not be registered by SLSF. I assume this might have been the source of the conflict, but that's just educated guess at this point as I have no intention of reinstalling it and confirming right now. Question: since SWT can be started without Prolapsed Uterus, is it really necessary? I have tinkered a bit with debug options but the uterus doesn't seem to want to show up once wear reaches and exceeds the threshold. Also I am not really a big fan of having it, I presume it can be turned off somehow which would make it a soft requirement? Yes actually its a soft requirement, you can turn it off by setting prolapseAt below zero. 1
crajjjj Posted February 23, 2022 Posted February 23, 2022 On 2/20/2022 at 11:36 PM, myDNS said: Alright I'm struggling. I feel like I don't understand the concept of PlayerRef. I don't understand how I'd go about selecting the correct Actor to pipe into StorageUtils SetFloatValue function ... Maybe someone smarter than me can figure this out: Apropos2Actors.psc - line 228 - Event OverrideWearAndTear Event OverrideWearAndTear(Form frm, String area, Int new_value, Bool updateAbuse, Bool updateCreatureAbuse, Bool updateDaedricAbuse) Debug("OverrideWearAndTear") Actor anActor = frm As Actor If !anActor Return EndIf If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Log("AproposWearAndTear.OverrideWearAndTear(" + actorName + "," + new_value + ")") EndIf Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor If area == "Vaginal" aproposActor.OverrideVaginalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + new_value) ElseIf area == "Anal" aproposActor.OverrideAnalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + new_value) Else aproposActor.OverrideOralWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) EndIf EndIf EndEvent Apropos2Actors.psc - line 257 - Function DoApplyWearAndTear Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) ;Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) Debug("DoApplyWearAndTear") If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Debug("DoApplyWearAndTear(" + actorName + "," + damageClass + "," + isRapeOrAggressive + ")") EndIf Bool isDaedricCreatureOrDremora = IsDremoraOrDaedricCreature(damageClass) Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor Int amount = GetWearTearDamage(damageClass, isRapeOrAggressive) If area == "Vaginal" aproposActor.IncreaseVaginalWearAndTear(amount) aproposActor.IncreaseVaginalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + amount) ElseIf area == "Anal" aproposActor.IncreaseAnalWearAndTear(amount) aproposActor.IncreaseAnalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + amount) Else aproposActor.IncreaseOralWearAndTear(amount) aproposActor.IncreaseOralAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) EndIf EndIf EndFunction Apropos2Actors.psc - appendix to eof - Function TearSimpleWnT and Float Function ScaleRange ;Simple Wear & Tear by darknotfear Compability Function TearSimpleWnT(Actor anActor, Int fAproposTearValue, String fArea) If fArea == "Vaginal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 1.0) ;I think the Range here is 0-1+ for Simple Wear&Tear, where ElseIf metric < 9 && metric >= 7 ;prolapse occurs at 0.9 and higher values are kinda useless StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Pussy. Metric is " + metric) ElseIf fArea == "Anal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 1.0) ElseIf metric < 9 && metric >= 7 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Asshole. Metric is " + metric) EndIf EndFunction Float Function ScaleRange(Float x) Int a = 0 Int b = 10 ;This is the used metric from above Int min = 0 Int max = 2000 ;I think max here is 2000, found that in some script. Maybe hardcoding this is bad - Idk. Float fScaledVal = ((b - a) * (x - min)) / (max - min) + a return fScaledVal EndFunction I'd if this is helpful for anyone ... IMO It's easier to integrate events from Apropos Apropos itself uses it for applying slavetats RegisterForModEvent("APRWT_UpdateEffectsAndTats", "UpdateEffectsAndTats") RegisterForModEvent("APRWT_ApplyWearAndTear", "ApplyWearAndTear") RegisterForModEvent("APRWT_OverrideWearAndTear", "OverrideWearAndTear") Event ApplyWearAndTear(Form frm, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) Actor anActor = frm As Actor If !anActor Return EndIf DoApplyWearAndTear(anActor, area, damageClass, isRapeOrAggressive, isCreature) EndEvent
normal24yearoldstudent Posted February 24, 2022 Posted February 24, 2022 awsome work, been thinking of such a mod ever since 3ba v2 which came with a anus slider heres hoping for a apropos intergration
Midnightbug Posted February 24, 2022 Posted February 24, 2022 the mod is really cool, some things which would be good: Apropos integration, different sliders for wear and tear , depending on the circumstances, partners etc. compatibility with Ostim as well?
Midnightbug Posted February 24, 2022 Posted February 24, 2022 (edited) Also this could be another mod as well, aroused nips got nipple morphs, using vaginal sliders in your mod you could also make an arousal mod similar to aroused nips (instead hooking into wear and tear, hook into arousal)- that would be awesome. -Aroused lips- Edited February 24, 2022 by Midnightbug
darknotfear Posted February 24, 2022 Author Posted February 24, 2022 (edited) 6 hours ago, Midnightbug said: the mod is really cool, some things which would be good: Apropos integration, different sliders for wear and tear , depending on the circumstances, partners etc. compatibility with Ostim as well? What are the circumstances? And why is the partner type matters? Edited February 24, 2022 by darknotfear
Midnightbug Posted February 24, 2022 Posted February 24, 2022 53 minutes ago, darknotfear said: What are the circumstances? And why is the partner type matters? Circumstances like the size of the partner, race etc. could have separate sliders
myDNS Posted February 24, 2022 Posted February 24, 2022 21 hours ago, crajjjj said: IMO It's easier to integrate events from Apropos Apropos itself uses it for applying slavetats RegisterForModEvent("APRWT_UpdateEffectsAndTats", "UpdateEffectsAndTats") RegisterForModEvent("APRWT_ApplyWearAndTear", "ApplyWearAndTear") RegisterForModEvent("APRWT_OverrideWearAndTear", "OverrideWearAndTear") Event ApplyWearAndTear(Form frm, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) Actor anActor = frm As Actor If !anActor Return EndIf DoApplyWearAndTear(anActor, area, damageClass, isRapeOrAggressive, isCreature) EndEvent The concept does sound a lot, a lot easier, but I have no experience in Skyrim modding. I'd have to blind-eyed deep dive into that stuff, but I'm also a subpar coder. :^) I'll take a look at ModEvents, thanks for the tip! 1
darknotfear Posted February 25, 2022 Author Posted February 25, 2022 On 2/21/2022 at 6:36 AM, myDNS said: Alright I'm struggling. I feel like I don't understand the concept of PlayerRef. I don't understand how I'd go about selecting the correct Actor to pipe into StorageUtils SetFloatValue function ... Maybe someone smarter than me can figure this out: Apropos2Actors.psc - line 228 - Event OverrideWearAndTear Event OverrideWearAndTear(Form frm, String area, Int new_value, Bool updateAbuse, Bool updateCreatureAbuse, Bool updateDaedricAbuse) Debug("OverrideWearAndTear") Actor anActor = frm As Actor If !anActor Return EndIf If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Log("AproposWearAndTear.OverrideWearAndTear(" + actorName + "," + new_value + ")") EndIf Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor If area == "Vaginal" aproposActor.OverrideVaginalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + new_value) ElseIf area == "Anal" aproposActor.OverrideAnalWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) TearSimpleWnT(PlayerRef, new_value, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: OverrideWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + new_value) Else aproposActor.OverrideOralWearTearState(new_value, updateAbuse=updateAbuse, updateCreatureAbuse=updateCreatureAbuse, updateDaedricAbuse=updateDaedricAbuse) EndIf EndIf EndEvent Apropos2Actors.psc - line 257 - Function DoApplyWearAndTear Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) ;Function DoApplyWearAndTear(Actor anActor, String area, string damageClass, Bool isRapeOrAggressive, Bool isCreature) Debug("DoApplyWearAndTear") If !ShouldApplyWearAndTear(anActor) Return EndIf String actorName = anActor.GetDisplayName() If Config.TraceMessagesEnabled Debug("DoApplyWearAndTear(" + actorName + "," + damageClass + "," + isRapeOrAggressive + ")") EndIf Bool isDaedricCreatureOrDremora = IsDremoraOrDaedricCreature(damageClass) Apropos2ActorAlias aproposActor = GetTrackedActorOrStartTracking(anActor) If aproposActor Int amount = GetWearTearDamage(damageClass, isRapeOrAggressive) If area == "Vaginal" aproposActor.IncreaseVaginalWearAndTear(amount) aproposActor.IncreaseVaginalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Pussy. Value: " + amount) ElseIf area == "Anal" aproposActor.IncreaseAnalWearAndTear(amount) aproposActor.IncreaseAnalAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) TearSimpleWnT(PlayerRef, amount, area) ;Simple Wear & Tear Bridge Debug.Trace("PLZWORK: DoApplyWearAndTear " + PlayerRef.getactorbase().getName() + "'s Asshole. Value: " + amount) Else aproposActor.IncreaseOralWearAndTear(amount) aproposActor.IncreaseOralAbuseWearAndTear(amount, isRapeOrAggressive, isDaedricCreatureOrDremora, isCreature) EndIf EndIf EndFunction Apropos2Actors.psc - appendix to eof - Function TearSimpleWnT and Float Function ScaleRange ;Simple Wear & Tear by darknotfear Compability Function TearSimpleWnT(Actor anActor, Int fAproposTearValue, String fArea) If fArea == "Vaginal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 1.0) ;I think the Range here is 0-1+ for Simple Wear&Tear, where ElseIf metric < 9 && metric >= 7 ;prolapse occurs at 0.9 and higher values are kinda useless StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_VaginalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Pussy. Metric is " + metric) ElseIf fArea == "Anal" Float metric = scaleRange(fAproposTearValue) If metric >= 9 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 1.0) ElseIf metric < 9 && metric >= 7 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.6) ElseIf metric < 7 && metric >= 5 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.4) ElseIf metric < 5 && metric >= 3 StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.2) Else StorageUtil.SetFloatValue(anActor, "SimpleWnT_ACTOR_AnalWearing", 0.0) EndIf Debug.Trace("PLZWORK: TearSimpleWnT " + anActor.getactorbase().getName() + "'s Asshole. Metric is " + metric) EndIf EndFunction Float Function ScaleRange(Float x) Int a = 0 Int b = 10 ;This is the used metric from above Int min = 0 Int max = 2000 ;I think max here is 2000, found that in some script. Maybe hardcoding this is bad - Idk. Float fScaledVal = ((b - a) * (x - min)) / (max - min) + a return fScaledVal EndFunction I'd if this is helpful for anyone ... I 've looked briefly through the source code of Apropos 2, and as far as I see there is no easy way to make it work gracefully since I have no idea how to access its internal W&T values without touching the code itself. But, but if you want to do it "dirty" anyway, maybe you can try this. There are 8 functions in apropos that handles the wearing and hearing internally: (Apropos2ActorAlias.psc) Function IncreaseVaginalWearAndTear(Int amountApplied) Function IncreaseVaginalAbuseWearAndTear(Int amountApplied, Bool isRapeOrAggressive, Bool isDaedricCreatureOrDremora, Bool isCreature) Function ApplyReducedVaginalWearAndTearAmount(Int amountApplied) Function ApplyReducedVaginalAbuseWearAndTearAmount(Int amountApplied) Function IncreaseAnalWearAndTear(Int amountApplied) Function IncreaseAnalAbuseWearAndTear(Int amountApplied, Bool isRapeOrAggressive, Bool isDaedricCreatureOrDremora, Bool isCreature) Function ApplyReducedAnalWearAndTearAmount(Int amountApplied) Function ApplyReducedAnalAbuseWearAndTearAmount(Int amountApplied) (I don't know what "abuse" functions does because I havn't tried apropos wear & tear before, so you need to figure it out yourself or keep it synchrolized with the normal one.) You may update actor's w&t values in these function using StorageUtil (after metric conversion, ofc). Within these functions you can simply access all the context variables you need for that conversion.
crajjjj Posted February 25, 2022 Posted February 25, 2022 (edited) 3 hours ago, darknotfear said: I 've looked briefly through the source code of Apropos 2, and as far as I see there is no easy way to make it work gracefully since I have no idea how to access its internal W&T values without touching the code itself. But, but if you want to do it "dirty" anyway, maybe you can try this. There are 8 functions in apropos that handles the wearing and hearing internally: (Apropos2ActorAlias.psc) Function IncreaseVaginalWearAndTear(Int amountApplied) Function IncreaseVaginalAbuseWearAndTear(Int amountApplied, Bool isRapeOrAggressive, Bool isDaedricCreatureOrDremora, Bool isCreature) Function ApplyReducedVaginalWearAndTearAmount(Int amountApplied) Function ApplyReducedVaginalAbuseWearAndTearAmount(Int amountApplied) Function IncreaseAnalWearAndTear(Int amountApplied) Function IncreaseAnalAbuseWearAndTear(Int amountApplied, Bool isRapeOrAggressive, Bool isDaedricCreatureOrDremora, Bool isCreature) Function ApplyReducedAnalWearAndTearAmount(Int amountApplied) Function ApplyReducedAnalAbuseWearAndTearAmount(Int amountApplied) (I don't know what "abuse" functions does because I havn't tried apropos wear & tear before, so you need to figure it out yourself or keep it synchrolized with the normal one.) You may update actor's w&t values in these function using StorageUtil (after metric conversion, ofc). Within these functions you can simply access all the context variables you need for that conversion. Attached is the script to get 0-10 general abuse for an actor. To get the quest: ;Apropos2 Quest ActorsQuest if !ActorsQuest && isAprReady() ActorsQuest = Game.GetFormFromFile(0x02902C, "Apropos2.esp") as Quest endif Bool Function isAprReady() Global Return isDependencyReady("Apropos2.esp") EndFunction Bool Function isDependencyReady(String modname) Global Return Game.GetModbyName(modname) != 255 EndFunction Can be wired to events mentioned above to trigger the call PS. All code that works with deps should be isolated in separate files and called only if the dep is available (handling soft dependencies) CondiExp_Interface_Appr2.psc Edited February 25, 2022 by crajjjj
darknotfear Posted February 25, 2022 Author Posted February 25, 2022 31 minutes ago, crajjjj said: Attached is the script to get 0-10 general abuse for an actor. To get the quest: ;Apropos2 Quest ActorsQuest if !ActorsQuest && isAprReady() ActorsQuest = Game.GetFormFromFile(0x02902C, "Apropos2.esp") as Quest endif Bool Function isAprReady() Global Return isDependencyReady("Apropos2.esp") EndFunction Bool Function isDependencyReady(String modname) Global Return Game.GetModbyName(modname) != 255 EndFunction Can be wired to events mentioned above to trigger the call CondiExp_Interface_Appr2.psc 1.06 kB · 1 download Thanks for the hint, I'll try it later. 1
chevalierx Posted February 25, 2022 Posted February 25, 2022 +Anal prolapse feature not working and no bodyslide files for Anal prolapse only for vaginal 1
darknotfear Posted February 26, 2022 Author Posted February 26, 2022 7 hours ago, chevalierx said: +Anal prolapse feature not working and no bodyslide files for Anal prolapse only for vaginal You need to install the rosebutt to make it works, and yes there is no bodyslide for that.
darknotfear Posted February 26, 2022 Author Posted February 26, 2022 1 hour ago, sdsdddddddddddddddddd said: 不知道为什么mcm菜单没有出现 检查前置版本,必须安装
Tamayori Posted February 27, 2022 Posted February 27, 2022 Not sure why but I'm just not getting the MCM to pop up. even tried console command too
darknotfear Posted February 27, 2022 Author Posted February 27, 2022 11 minutes ago, Tamayori said: Not sure why but I'm just not getting the MCM to pop up. even tried console command too Do you have the papyrus log for that? Make sure you have all the requirements installed.
SexyTop69 Posted February 27, 2022 Posted February 27, 2022 Besides the prolapsed pussy, what armor is that PC wearing in the screenshot?
Tamayori Posted February 27, 2022 Posted February 27, 2022 3 hours ago, darknotfear said: Do you have the papyrus log for that? Make sure you have all the requirements installed. So i'm still very much a beginner when it comes to modding and turns out i didn't have it enabled. Not really crashing since I'm running the game fine. I've install all the requirements except for apropos.
darknotfear Posted February 27, 2022 Author Posted February 27, 2022 2 hours ago, SexyTop69 said: Besides the prolapsed pussy, what armor is that PC wearing in the screenshot? Spoiler https://www.youtube.com/watch?v=L_IlgTpmMc0 1
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