Guest Posted March 11, 2018 Posted March 11, 2018 5 minutes ago, macnchz said: Thank you for refreshing this amazing mod. I have not been able to use this mod for a long time. Now it works like a charm! Thank you for your work, and expansion of the dialog, GREAT JOB!! Your welcome, I am glad you are enjoy it. Have you got to experience some of the new dialog? I did some testing today but I found I had some conditions and variables wrong, its a tedious road but will get them all right sooner of later :), enjoy !
macnchz Posted March 11, 2018 Posted March 11, 2018 3 minutes ago, -Caden- said: Your welcome, I am glad you are enjoy it. Have you got to experience some of the new dialog? I did some testing today but I found I had some conditions and variables wrong, its a tedious road but will get them all right sooner of later :), enjoy ! I just tore through it (my poor pc!). I will take note of anything I see the next time I run through it. Thanks again!
Guest Posted March 11, 2018 Posted March 11, 2018 no problem and thank you, and please do let me know if you find something off
thesteve812 Posted March 11, 2018 Posted March 11, 2018 The new dialogue is great. I'm actually reading it, instead of click, click, let's get to it, bam bam, thank you mam. Specific race dialogue is a nice touch too.
Guest Posted March 11, 2018 Posted March 11, 2018 23 minutes ago, thesteve812 said: The new dialogue is great. I'm actually reading it, instead of click, click, let's get to it, bam bam, thank you mam. Specific race dialogue is a nice touch too. HAHA nice, what character and race do you play?, I also made some dialog vampire/race/gender aware as well! More will be in the update coming tonight, of first thing tomorrow
thesteve812 Posted March 11, 2018 Posted March 11, 2018 21 minutes ago, -Caden- said: HAHA nice, what character and race do you play?, I also made some dialog vampire/race/gender aware as well! More will be in the update coming tonight, of first thing tomorrow Redguard
Guest Posted March 11, 2018 Posted March 11, 2018 31 minutes ago, thesteve812 said: Redguard nice, have some good redguard dialog...a lot of npcs seem to want to get bred...lol
GiantTiger Posted March 11, 2018 Posted March 11, 2018 Your files name are confusing... so I need to download "Radiant Prostitution_Gigolo 3.3.7z" and "Radiant Prostitution_Gigolo3.3.1(ESP File Only).7z" right?
Guest Posted March 11, 2018 Posted March 11, 2018 13 minutes ago, GiantTiger said: Your files name are confusing... so I need to download "Radiant Prostitution_Gigolo 3.3.7z" and "Radiant Prostitution_Gigolo3.3.1(ESP File Only).7z" right? no, that's my bad, I just upload a full update, 3.4 that's all you need, I am deleted the other unneeded files now
GiantTiger Posted March 11, 2018 Posted March 11, 2018 11 minutes ago, -Caden- said: no, that's my bad, I just upload a full update, 3.4 that's all you need, I am deleted the other unneeded files now Great! Thank you.
shiagwen Posted March 11, 2018 Posted March 11, 2018 Hello, I worked on RP weith Wrathslayer to make some changes in scripts a while ago: handler : sex makes relationsship ally handler config : experience slider in mcm 0.1 steps, so 0.5 can be made ranks x9=10, x14 = 15, not visible in mcm homevisitquest: pc always win (too frustrationg this Long work for nothing) simplejobquest: approachtext i am looking for a Client on Display deleted text a Client is coming to you still appears Errors in RP : mcm vaginal and anal are named opposite repetitions only work 1x. if more, a new client approaches, the repetitions are stopped at the next end, the new Client takes the further repetitions the rape makes no sense, because once you know it you never go there anymore. taking inventory away is always wrong (should get it back for free at least) quests block the Standard Prostitution. if you get the companion quest in markath or rifton ...... what exactly is new for a female prostitute ? if your Goal is a gay mod, it is already if you use the approaching sliders in mcm the most missing parts in RP to me are : sex raises speechcraft : we found out how to make fixed amount of skillxp, but not how to add the skillevel modificator. creature sex only in quests, should be available as Standard offer (maybe with the help of henatai creatures?) zaz furniture bdsm sex should be quests and Standard offer (using the missing Features for rank 5 (x14 / 15) and rank 6 (x20) quests to gangbang complete dungeons, with bandits and with creatures, and Dragons would be a dream (using the skyrim bounty quests ?) mf_handler.pex mf_handler_config.pex mf_homevisit_quest.pex mf_simplejobquestscript.pex mf_handler.psc mf_handler_config.psc mf_homevisit_quest.psc mf_simplejobquestscript.psc
gizmo1206 Posted March 11, 2018 Posted March 11, 2018 glad to see someone continuing the mod. now i have a question that i didnt really get a answer to in its forum but is this compatible with apropos? apropos says radiant prostitution causes conflicts but it links RadiantProstitution Tweaked by korialstraszbob
Guest Posted March 11, 2018 Posted March 11, 2018 6 hours ago, shiagwen said: what exactly is new for a female prostitute ? A lot, the original upload I did was Called Radiant Gigolo, all dialog assumed you were a male character, kinda like all the dialog in 3.2.2 assumed you were a female (yes there were 2 or 3 lines that was for m/m but that was it, but then people started asking me if it could be used for females so i decide to make the version I made work with both: Now Imagine for a second, (as a man)your out at a bar and you just hit it off with the really hot woman, you go to her place, things are heating up, you grab her and throw her down on the bed and she looks up to you and says......" I cant wait to fuck your pussy but if you get pregnant, I'm not responsible for your baby"..I'd be like... " tha fuckd you just say bitch", and go flaccid. ...now, that's how RP3.2.2 addressed the male player, and nothing as frustrated me more than seeing all of these fantastic mods being made for Skyrim and other games, and all based on being a female PC, I mean I understand that woman play the game too, but 99% of the gamers are NOT females but yet 99% of the mods are geared towards a female player, Its like your girlfriend holding a gun to your head and making you put on a dress ffs, and that's all good for some people but not everyone! So in this image you can see an example of what I am doing with dialog: So now dialog will be different if you are an orc female player, talking to a Nord, or a Breton, or a male elf vampire talking to a redguard, make the game so ANYONE can play and it will be geared towards there character! Not just the occasion generic dialog for a Khajiit like was in 3.2.2
Guest Posted March 11, 2018 Posted March 11, 2018 6 hours ago, shiagwen said: if your Goal is a gay mod, it is already if you use the approaching sliders in mcm How in any sense was RP 3.2.2 geared towards a gay player? Cause it allowed men to come talk to a male PC...but speak to you like you were female? talk about getting you pregnant? No , just because it allow m/m sex (like most sex mods do) does not mean it was geared towards a gay PC, this is a game people like to go in and act out a character, and that's great but your role playing character should not have to roleplay too, because the male PC has "pretend" the npc he was talking to didn't just talked about seeing his big tits! Animation wise , yes, it allowed gays sex...and that's where it stopped, cause there was nothing else in 3.2.2 that did anything for anyone unless you played as a female PC! People that play the game want options, gay male, gay females, submissive males and females, dom males and females, straight males(yes there are some of us still in the world :P), sissy males, dominitrix, furry and beastiality....but instead EVERY single mod coming out is geared towards playing as a female, so people do not have a choice to play a different character if they want a modded game, well the changes in RP prostitute/Gigolo is working towards all players, not just females
Guest Posted March 11, 2018 Posted March 11, 2018 5 hours ago, gizmo1206 said: glad to see someone continuing the mod. now i have a question that i didnt really get a answer to in its forum but is this compatible with apropos? apropos says radiant prostitution causes conflicts but it links RadiantProstitution Tweaked by korialstraszbob I am not sure, a haven't got into that side of it yet, I used Apropos for a long time, great mod, I will not be able to find the conflict until I finish all the dialog changes here:) Best bet is to go into your before installing this, open up console and type something like "save TestRP", then exit the game and install RP and play a bit to see if it does conflict , then if it does, you can go back to the TestRP save and reload it without ruining your current game
divinefire Posted March 11, 2018 Posted March 11, 2018 I'd like to see a group sex or gangbang quest be put in since we have a few animation packs that do them now or maybe just a customer request it when they approach you or ask them if they want any food or drink. They already ask for bj/vag/anal anyway. Thanks for updating and supporting this mod.
Guest Posted March 11, 2018 Posted March 11, 2018 6 hours ago, shiagwen said: the most missing parts in RP to me are : sex raises speechcraft : we found out how to make fixed amount of skillxp, but not how to add the skillevel modificator. creature sex only in quests, should be available as Standard offer (maybe with the help of henatai creatures?) zaz furniture bdsm sex should be quests and Standard offer (using the missing Features for rank 5 (x14 / 15) and rank 6 (x20) quests to gangbang complete dungeons, with bandits and with creatures, and Dragons would be a dream (using the skyrim bounty quests ?) mf_handler.pex mf_handler_config.pex mf_homevisit_quest.pex mf_simplejobquestscript.pex mf_handler.psc mf_handler_config.psc mf_homevisit_quest.psc mf_simplejobquestscript.psc Spoiler Scriptname mf_Handler extends Quest SexLabFramework Property SexLab Auto mf_Handler_Config Property HandlerConfig Auto mf_Variables Property HandlerConditional Auto ImageSpaceModifier Property FadeIn Auto ImageSpaceModifier Property FadeOut Auto ImageSpaceModifier Property BlackScreen Auto Message Property ErrorMessage Auto Armor Property WenchCloths Auto Armor Property WenchBoots Auto MiscObject Property Gold Auto ; ------ SERVING FOOD QUEST ------------------ MF_FoodJob Property FoodJob Auto Quest Property SimplerJob Auto mf_simplerjobscript Property SimplerJobScript Auto float TimeLastJobFailed = 0.0 float TimeLastFailJob = 0.0 ; ------ FREE ROAMING PROSTITUTION QUEST ----- Quest Property SingleJobMonitor Auto mf_SolicitPlayerMainScript Property SingleJobMonitorScript Auto mf_SimpleJobQuestScript Property SingleJob Auto mf_SimpleJobQuestScript Property SingleJobScript Auto String akJobType int totalReward = 0 ; ------ HOME DELIVERY QUEST ----------------- MF_RandomQuest Property HomeJob Auto FormList Property HomeJobs Auto float TimeLastHomeJobCompleted ; ------ MILITARY CAMP QUEST ----------------- MF_RandomQuest Property CampJob Auto FormList Property CampJobs Auto float TimeLastCampJobCompleted ; ------ RANDOM JOB QUEST -------------------- FormList Property RandomQuests Auto MF_RandomQuest currentQuest float TimeLastRandomJobCompleted GlobalVariable Property UndeclaredJobs Auto GlobalVariable Property TotalClients Auto GlobalVariable Property MissingMoney Auto Faction Property ProstituteFaction Auto Faction Property MadameFaction Auto SPELL Property RefractoryS Auto SPELL Property RefractoryD Auto FormList Property BeastRace Auto FormList Property ElfRace Auto FormList Property HumanRace Auto ReferenceAlias Property akPlayerRef Auto Actor Property akPlayer Auto int Property PlayerRace Auto Actor Property akMadame Auto float Property BountyMult = 1.0 Auto int lastHomeJob = 0 int lastCampJob = 0 int lastRandomJob = 0 ;Frostfall things bool isFrostfallLoaded = false GlobalVariable property Frostfall_exposurePoints = none auto SexLabFramework Function GetSexLab() return SexLab endFunction Actor Function GetPlayer() return akPlayer endFunction int Function GetScanInterval() return HandlerConfig.ScanInterval as int endFunction int Function GetMaxRepetitions() return (HandlerConfig.MaxRepetitions + 1) as int ;WS note - the +1 is because of a mismatch between the MCM descriptions and how the scripts use the MaxRepetitions var. (as far as scripts are concerned, a single sex scene is already 1 repetition) endFunction Function AddInitClothes() HandlerConditional.GotClothes = true int config = JValue.readFromFile("Data/MF_RP_Config.json") if(config != 0) form chestPiece = JValue.solveForm(config, ".startCloths.chestPiece") akPlayer.addItem(chestPiece,1) int rest = JValue.solveObj(config, ".startCloths.rest") int count = JArray.count(rest) while(count >= 0 ) count -= 1 akPlayer.addItem(JArray.getForm(rest,count),1) endWhile JValue.release(rest) JValue.release(config) else akPlayer.addItem(WenchCloths,1) akPlayer.addItem(WenchBoots,1) endIf endFunction Function ModBountyMult(int point) if(point < 0) BountyMult -= HandlerConfig.BountyDownRate * point else BountyMult += HandlerConfig.BountyUpRate * point endif if(BountyMult < 1.0) BountyMult = 1.0 elseif(BountyMult > HandlerConfig.MaxBountyMult) BountyMult = HandlerConfig.MaxBountyMult endif endFunction int Function ValidateStatInt(string statName, int localValue, int modLocValue) if(SexLab.FindStat(statName) == -1) int value = localValue + modLocValue SexLab.RegisterStat(statName, value as string) return value else return SexLab.AdjustBy(statName, modLocValue) endif endFunction Function TriggerFailCD() RegisterForUpdateGameTime(0.5) TimeLastFailJob = Utility.GetCurrentGameTime() HandlerConditional.FailJobOnCD = 1 endFunction Function TriggerHomeJobCD() RegisterForUpdateGameTime(0.5) TimeLastHomeJobCompleted = Utility.GetCurrentGameTime() HandlerConditional.HomeJobOnCD = 1 endFunction Function TriggerCampJobCD() RegisterForUpdateGameTime(0.5) TimeLastCampJobCompleted = Utility.GetCurrentGameTime() HandlerConditional.CampJobOnCD = 1 endFunction Function TriggerRandomJobCD() RegisterForUpdateGameTime(0.5) TimeLastRandomJobCompleted = Utility.GetCurrentGameTime() HandlerConditional.RandomJobOnCD = 1 endFunction Function ResetAllCD() HandlerConditional.FailJobOnCD = 0 HandlerConditional.HomeJobOnCD = 0 HandlerConditional.CampJobOnCD = 0 HandlerConditional.RandomJobOnCD = 0 UnregisterForUpdateGameTime() endFunction Event OnUpdateGameTime() float time = Utility.GetCurrentGameTime() if(TimeLastFailJob + HandlerConfig.FailJobCD <= time) HandlerConditional.FailJobOnCD = 0 endif if(TimeLastHomeJobCompleted + HandlerConfig.HomeJobCD <= time) HandlerConditional.HomeJobOnCD = 0 endif if(TimeLastCampJobCompleted + HandlerConfig.CampJobCD <= time) HandlerConditional.CampJobOnCD = 0 endif if(TimeLastRandomJobCompleted + HandlerConfig.RandomJobCD <= time) HandlerConditional.RandomJobOnCD = 0 endif ;if all of them are off CD, stop receiving events if(HandlerConditional.FailJobOnCD == 0 && HandlerConditional.HomeJobOnCD == 0 && HandlerConditional.CampJobOnCD == 0 && HandlerConditional.RandomJobOnCD == 0) UnregisterForUpdateGameTime() endif endEvent Function SetMadame(Actor Madame, int rank) akPlayer = akPlayerRef.GetRef() as Actor Race pRace = akPlayer.GetActorBase().GetRace() if(HumanRace.HasForm(pRace)) PlayerRace = 1 elseif(ElfRace.HasForm(pRace)) PlayerRace = 2 elseif(BeastRace.HasForm(pRace)) PlayerRace = 4 else PlayerRace = 8 endif akMadame = Madame akMadame.SetFactionRank(MadameFaction, rank) akPlayer.SetFactionRank(MadameFaction, 0) ; just put the player in madame_faction such that we know by looking at ourselves that we are running a quest for a madame UndeclaredJobs.SetValue(0) ; ... endFunction Function Reset() akPlayer = akPlayerRef.GetRef() as Actor akPlayer.RemoveFromFaction(MadameFaction) if(akMadame != None) akMadame.SetFactionRank(MadameFaction, 0) endif ; WS edit - replacing foodjob with simplerjob ;FoodJob.Stop() SimplerJob.Stop() SingleJob.Stop() if(HomeJob) HomeJob.Stop() endif if(CampJob) CampJob.Stop() endif if(currentQuest) currentQuest.Stop() endif ResetAllCD() endFunction Function ResetMadame() int tc = TotalClients.GetValueInt() if(tc < HandlerConfig.ProstituteRank1) akPlayer.SetFactionRank(ProstituteFaction, 0) elseif(tc < HandlerConfig.ProstituteRank2) akPlayer.SetFactionRank(ProstituteFaction, 1) elseif(tc < HandlerConfig.ProstituteRank3) akPlayer.SetFactionRank(ProstituteFaction, 2) elseif(tc < HandlerConfig.ProstituteRank4) akPlayer.SetFactionRank(ProstituteFaction, 3) elseif(tc < HandlerConfig.ProstituteRank5) akPlayer.SetFactionRank(ProstituteFaction, 4) else akPlayer.SetFactionRank(ProstituteFaction, 5) endif int pr = akPlayer.GetFactionRank(ProstituteFaction) if(pr >= 1 && HandlerConditional.PlayerKnowsHomeJob != 1) HandlerConditional.PlayerLearnHomeJob = 1 endif if(pr >= 2 && HandlerConditional.PlayerKnowsCampJob != 1) HandlerConditional.PlayerLearnCampJob = 1 endif if(pr >= 3 && HandlerConditional.PlayerKnowsRandomJob != 1) HandlerConditional.PlayerLearnRandomJob = 1 endif akMadame.SetFactionRank(MadameFaction, 0) akPlayer.RemoveFromFaction(MadameFaction) endFunction ; ------------ QUEST KICKERS -------------- Function SimplerJobQuestKicker(Actor Madame) ; WS edit - replacing foodjob with simplerjob ;FoodJob.Start() ;FoodJob.setMadame(Madame) SimplerJob.Start() SetMadame(Madame, 1) endFunction Function SingleJobMonitorKicker(Actor Madame) SingleJob.Start() SingleJob.SetStage(0) SingleJob.ResetVariables() SetMadame(Madame, 2) endFunction Function SingleJobQuestKicker(Actor Client, bool once = false) SingleJobScript.Start() SingleJobScript.SetOnce(once) SingleJobScript.ForceSpeakerClient(Client) endFunction Function SingleJobQuestKickerAndApproach(Actor Client) SingleJobQuestKicker(Client) endFunction Function HomeJobQuestKicker(Actor Madame) HomeJob = QuestKicker(HomeJobs,lastHomeJob) if(HomeJob) HomeJob.setMadame(Madame) SetMadame(Madame, 3) endif endFunction Function CampJobQuestKicker(Actor Madame) CampJob = QuestKicker(CampJobs,lastCampJob) if(CampJob) CampJob.setMadame(Madame) SetMadame(Madame, 4) endif endFunction Function RandomJobQuestKicker(Actor Madame) currentQuest = QuestKicker(RandomQuests,lastRandomJob) if(currentQuest) currentQuest.setMadame(Madame) SetMadame(Madame, 5) endif endFunction ; ------------- QUEST FAILURE -------------- ; WS edit - adding functions for SimplerJob Function SimplerJobQuestFail() ResetMadame() TriggerFailCD() SimplerJob.Stop() endFunction ; WS edit - adding functions for SimplerJob Function SimplerJobLeave() if(SimplerJob.GetStage() == 20 || SimplerJob.GetStage() == 30); food or gold Debug.Notification("You left the inn with the innkeeper's property") TriggerFailCD() ; consequence ?? int amount = (100.0 * BountyMult) as int akMadame.GetCrimeFaction().ModCrimeGold(amount) Debug.Notification(amount+"gold bounty added") ModBountyMult(1) else Debug.Notification("You quitted serving food at the inn") endif ResetMadame() SimplerJob.Stop() SingleJob.Stop() endFunction Function SingleJobQuestFail() SingleJob.Stop() endFunction Function SingleJobLeave() if(UndeclaredJobs.GetValue() > 0) Debug.Notification("You left town with the innkeeper's gold") TriggerFailCD() ; consequence ?? int amount = (BountyMult * (UndeclaredJobs.GetValueInt() * HandlerConfig.BaseGoldPerClient * HandlerConfig.BaseGoldMadameCut * BountyMult) / 100.0) as int akMadame.GetCrimeFaction().ModCrimeGold(amount) Debug.Notification(amount+" gold bounty added") ModBountyMult(1) else Debug.Notification("You left the prostitution job behind you") endif ResetMadame() UndeclaredJobs.SetValue(0) SingleJob.CompleteAllObjectives() SingleJob.StopFollow() SingleJob.Stop() endFunction Function HomeJobQuestFail() HomeJob.FailAllObjectives() HomeJob.SetStage(201) ;to get the quest fail message EndHomeJob() ;this will ensure the homeJob CD is triggered, and that the quest's shutdown stage is called, and also calls ResetMadame() endFunction Function CampJobQuestFail() CampJob.FailAllObjectives() CampJob.SetStage(201) ;to get the fail message endCampJob() endFunction Function RandomJobQuestFail() ResetMadame() TriggerRandomJobCD() currentQuest.FailAllObjectives() currentQuest.setStage(200) currentQuest.Stop() currentQuest = None endFunction ; ; ---------- FOOD JOB REWARD - WS added ; Function GetSimplerJobReward(bool success = true) if(success) SimplerJobScript.GetTip() endif ResetMadame() SimplerJob.Stop() endFunction ; ; ----------- SINGLE JOB REWARD ------------- ; Function GetSingleJobReward(int lie) int amount if (lie == 0) amount = Math.Floor(totalReward * HandlerConfig.BaseGoldMadameCut / 100) ModBountyMult(UndeclaredJobs.GetValueInt() * (-1)) elseif (lie == 1) amount = Math.Floor(totalReward * HandlerConfig.BaseGoldMadameCut / 1000) elseif (lie > 1) amount = Math.Floor(totalReward * HandlerConfig.BaseGoldMadameCut / 33) akMadame.GetCrimeFaction().ModCrimeGold(Math.floor(amount * BountyMult)) Debug.Notification("The innkeeper put a bounty on my head, I'll have to sort that out with the guards") ModBountyMult(1) TriggerFailCD() amount = 0 endif totalReward = 0; if(amount != 0) int goldCount = Game.GetPlayer().GetItemCount(Gold) if(goldCount < amount) amount -= goldCount MissingMoney.mod(amount) UpdateCurrentInstanceGlobal(MissingMoney) amount = goldCount endIf akMadame.AddItem(Gold, amount) akPlayer.RemoveItem(Gold, amount) endif ResetMadame() UndeclaredJobs.SetValue(0) SingleJobMonitor.Stop() SingleJob.UnregisterForUpdate() SingleJob.Stop() ;Finish misc quest for learning about prostitution if present If IsObjectiveDisplayed(10) SetObjectiveCompleted(10) EndIf endFunction int Function CalcReward(float QM = 1.0, float PERF = 1.0, string Type = "All",int repetitions=1) float BG = HandlerConfig.BaseGoldPerClient ; base cost float SM = akPlayer.GetAV("Speechcraft") * HandlerConfig.GoldBonusPerSpeechcraft ; speechcraft modifier float FM = akPlayer.GetFactionRank(ProstituteFaction) * HandlerConfig.GoldBonusPerRank ; faction reputation modifier float GM = 0.0 if(Game.GetPlayer().GetActorBase().GetSex() == 1) GM = HandlerConfig.FemaleGoldBonus else GM = HandlerConfig.MaleGoldBonus endif float MOD float PM if(Type == "Oral" || Type == "Blowjob" || Type == "Cunnilingus") MOD = HandlerConfig.OralModifier PM = HandlerConfig.GoldBonusPerSexRank * SexLab.GetPlayerStatLevel("Oral") elseif(Type == "Anal") MOD = HandlerConfig.AnalModifier PM = HandlerConfig.GoldBonusPerSexRank * SexLab.GetPlayerStatLevel("Anal") elseif(Type == "Vaginal") MOD = HandlerConfig.VaginalModifier PM = HandlerConfig.GoldBonusPerSexRank * SexLab.GetPlayerStatLevel("Vaginal") elseif(Type == "Rape") MOD = HandlerConfig.RapeModifier PM = HandlerConfig.GoldBonusPerSexRank * SexLab.GetPlayerStatLevel("Victim") elseIf(Type == "Lesbian") MOD = HandlerConfig.VaginalModifier PM = HandlerConfig.GoldBonusPerSexRank * SexLab.GetPlayerStatLevel("Vaginal") else MOD = 1.0 ; overall quest modifier PM = HandlerConfig.GoldBonusPerSexRank * (SexLab.GetPlayerStatLevel("Anal") + SexLab.GetPlayerStatLevel("Vaginal") + SexLab.GetPlayerStatLevel("Oral"))/3 endif MOD *= PERF * QM int payment = Math.Floor((BG + SM + FM + PM + GM) * MOD) if(repetitions > 1) int multipleBonus= Math.Floor(payment * (repetitions - 1) * HandlerConfig.MultipleBonus) payment = payment + multipleBonus endif return payment endFunction ; ; ----------- HOME JOB REWARD ------------- ; Function GetHomeJobReward() float PERF = HandlerConditional.PerformanceRewardMod float QM = 3.0 * HandlerConfig.HomeDeliveryQuestModifier akPlayer.AddItem(Gold, CalcReward(QM, PERF)) HomeJob.CompleteAllObjectives() EndHomeJob() endFunction Function EndHomeJob() HomeJob.Stop() ModBountyMult(-2) ResetMadame() TriggerHomeJobCD() endFunction ; ; ----------- CAMP JOB REWARD ------------- ; Function GetCampJobReward() float PERF = (CampJob as mf_CampJobQuestScript).GetModifier() ; overall quest modifier float QM = 0.75 * HandlerConfig.CampJobQuestModifier ModBountyMult(-PERF as int) akPlayer.AddItem(Gold, CalcReward(QM, PERF)) CampJob.CompleteAllObjectives() endCampJob() endFunction Function endCampJob() ResetMadame() TriggerCampJobCD() CampJob.stop() endFunction ; ; ----------- RANDOM JOB REWARD ------------- ; Function GetRandomJobReward() ModBountyMult(-5) ResetMadame() TriggerRandomJobCD() currentQuest.Stop() currentQuest = None HandlerConditional.GrantExtraReward = false; endFunction Function GetRandomJobExtraReward() ModBountyMult(-5) ResetMadame() TriggerRandomJobCD() (currentQuest as MF_RandomQuest).getExtraReward() currentQuest.Stop() currentQuest = None HandlerConditional.GrantExtraReward = false; endFunction ; ; ----------- REWARD FROM CLIENT ------------- ; Function GetRewardSingleFromClient(Actor akClient, int repetitions=0, int jobNumeric = -1) float PERF = HandlerConditional.PerformanceRewardMod float QM = 1.0 string jobType= akJobType if(jobNumeric == 1) jobType= "Oral" elseif(jobNumeric == 2) jobType= "Vaginal" elseif(jobNumeric == 3) jobType= "Anal" elseif(jobNumeric == 4) jobType= "Things" elseif(jobNumeric == 5) jobType= "Rape" elseif(jobNumeric == 7) jobType= "Lesbian" endIf if(repetitions > 0) int reward = CalcReward(QM, PERF, jobType,repetitions) totalReward += reward akPlayer.AddItem(Gold, reward) int t = UndeclaredJobs.GetValueInt() + 1 UndeclaredJobs.SetValue(t) UpdateCurrentInstanceGlobal(UndeclaredJobs) endif endFunction event EvaluateSex(string eventName, string argString, float argNum, form sender) CalcRewardMod(argString) ; Debug.Notification("Sex lasted " + sexLasted + " sec") UnregisterForModEvent("AnimationEnd_GetTime") endEvent Function CalcRewardMod(string argString) float sexLasted = SexLab.HookTime(argString) if(sexLasted > HandlerConfig.TimeForFullReward) HandlerConditional.PerformanceRewardMod = 1.0 else HandlerConditional.PerformanceRewardMod = sexLasted / HandlerConfig.TimeForFullReward endif endFunction Function IncrementTotalClients(int c) int t = TotalClients.GetValueInt() TotalClients.SetValue(ValidateStatInt("Client Count", t, c)) UpdateCurrentInstanceGlobal(TotalClients) endFunction Function SetRefractory(Actor Client, bool satisfied=true) if(satisfied) RefractoryS.Cast(Client, Client) else RefractoryD.Cast(Client, Client) endIf endFunction sslThreadController Function PerformSex(Actor akClient, string type, string aggr = "None", string next = "None",bool isPlayerVictim=false, bool foreplay=false, bool switchOnFF =false) sslBaseAnimation[] anims actor[] actors = new actor[2] int playerIndex =0 actors[0] = akPlayer actors[1] = akClient int sex0 = actors[0].GetActorBase().GetSex() int sex1 = actors[1].GetLeveledActorBase().GetSex() int f = sex0 + sex1 int m = 2 - f string option = "" string suppress ="Aggressive" if(aggr != "None" || isPlayerVictim) option = ",Aggressive" suppress ="" endif ; sort the player/client depending on the anim type that will be chosen if(f == 2); FF option = "" suppress ="Aggressive" if(type == "Oral" && !switchOnFF) actors[0] = akClient actors[1] = akPlayer playerIndex=1 elseif(switchOnFF) actors[0] = akClient actors[1] = akPlayer playerIndex=1 endif ;ws edit - searching by "FF,<type>" when type=oral removes a lot of valid cunnilingus animations - search for tag cunnilingus instead, with 69 suppress if type == "Oral" anims = SexLab.GetAnimationsByTags(2, "Cunnilingus", "69", requireAll=true) Else ;if type isn't Oral, then use the code that was already here anims = SexLab.GetAnimationsByTags(2, "FF,"+ type+ option,suppress, requireAll=true) EndIf if(anims.Length == 0) anims = SexLab.GetAnimationsByTags(2, "MF,"+ type+ option,suppress, requireAll=true) endif elseif(f == 1);FM || MF if(sex0 == 0) ;PC is male actors[0] = akClient actors[1] = akPlayer playerIndex=1 endif anims = SexLab.GetAnimationsByTags(2, "MF,"+ type+ option,suppress+",69", requireAll=true) else; MM anims = SexLab.GetAnimationsByTags(2, "MM,"+ type+ option,suppress, requireAll=true) if(anims.Length == 0) anims = SexLab.GetAnimationsByTags(2, "MF,"+ type+ option,suppress, requireAll=true) endif endif if(anims.Length == 0) Debug.Notification("You've blacklisted all consensual "+type+" sex anims. This won't work.") anims = SexLab.GetAnimationsByTags(2,"Sex") endif SetRefractory(akClient) return fuck(actors,playerIndex,anims,foreplay,next,type,isPlayerVictim).StartThread() endFunction sslThreadModel Function fuck(Actor[] actors, int playerIndex, sslBaseAnimation[] anims, bool foreplay = true, string next = "None",string type = "None", bool isPlayerVictim = false) akJobType = type IncrementTotalClients(1) bool[] equip0 = New bool[33] bool[] equip1 = New bool[33] int i=0 While(i < 33) equip0 = false equip1 = false i += 1 endWhile if(type == "Oral") equip0[0] = true ;head equip0[3] = true ;hand equip0[4] = true ;forearms equip0[9] = true ;shield equip0[14] = true ;face equip0[32] = true ;weapon equip1[2] = true ;body equip1[9] = true ;shield equip1[16] = true ;chest equip1[19] = true ;pelvis equip1[28] = true ;undergarment equip1[32] = true ;weapon else equip0[2] = true ;body equip0[9] = true ;shield equip0[16] = true ;chest equip0[19] = true ;pelvis equip0[28] = true ;undergarment equip0[32] = true ;weapon equip1[2] = true ;body equip1[9] = true ;shield equip1[16] = true ;chest equip1[19] = true ;pelvis equip1[28] = true ;undergarment equip1[32] = true ;weapon endif RegisterForModEvent("AnimationEnd_GetTime", "EvaluateSex") While (SexLab.FindActorController(actors[0]) != -1 || SexLab.FindActorController(actors[1]) != -1) Utility.Wait(1.0) endwhile sslThreadModel th = SexLab.NewThread() if(actors.length == 2) if(playerIndex == 1) th.AddActor(actors[0]) th.AddActor(actors[1], isVictim= isPlayerVictim) if(HandlerConfig.PlayerMinimalStripping) th.SetStrip(actors[1], equip0) endif if(HandlerConfig.ClientMinimalStripping) th.SetStrip(actors[0], equip1) endif else th.AddActor(actors[0], isVictim= isPlayerVictim) th.AddActor(actors[1]) if(HandlerConfig.PlayerMinimalStripping) th.SetStrip(actors[0], equip0) endif if(HandlerConfig.ClientMinimalStripping) th.SetStrip(actors[1], equip1) endif endif elseif(actors.length == 3) if(playerIndex == 0) th.AddActor(actors[0], isVictim= isPlayerVictim) th.AddActor(actors[1]) th.AddActor(actors[2]) if(HandlerConfig.PlayerMinimalStripping) th.SetStrip(actors[0], equip0) endif if(HandlerConfig.ClientMinimalStripping) th.SetStrip(actors[1], equip1) th.SetStrip(actors[2], equip1) endif elseif(playerIndex == 1) th.AddActor(actors[0]) th.AddActor(actors[1], isVictim= isPlayerVictim) th.AddActor(actors[2]) if(HandlerConfig.PlayerMinimalStripping) th.SetStrip(actors[1], equip0) endif if(HandlerConfig.ClientMinimalStripping) th.SetStrip(actors[0], equip1) th.SetStrip(actors[2], equip1) endif elseif(playerIndex == 2) th.AddActor(actors[0]) th.AddActor(actors[1]) th.AddActor(actors[2], isVictim= isPlayerVictim) if(HandlerConfig.PlayerMinimalStripping) th.SetStrip(actors[2], equip0) endif if(HandlerConfig.ClientMinimalStripping) th.SetStrip(actors[0], equip1) th.SetStrip(actors[1], equip1) endif endif endIf th.SetAnimations(anims) if(isPlayerVictim) th.DisableLeadIn(true) else th.DisableLeadIn(!foreplay) endif ;Bed Search is Disabled if a CenterObject is set ;if(!HandlerConfig.UseBeds) ;ws - commented out - this might be what's causing issues with the automatic free cam (edit: it was!) ; th.CenterOnObject(actors[playerIndex]) ;endIf ;WS - restoring UseBeds MCM function If(!HandlerConfig.UseBeds) th.DisableBedUse(true) EndIf th.SetHook("GetTime") if(next != "None") th.SetHook(next) endif return th endFunction sslThreadController Function PerformCreatureSex(Actor[] creatures, string next = "None") sslThreadModel th = SexLab.NewThread() th.AddActor(akPlayer, isVictim=true) int count = 0 while count < creatures.length th.AddActor(creatures[count]) count= count+1 endWhile if(next != "None") th.SetHook(next) endif th.CenterOnObject(akPlayer) return th.StartThread() endFunction sslThreadController Function PerformThreesome(Actor akClient, Actor akGuest, string next = "None", bool isPlayerVictim =false) IncrementTotalClients(2) SetRefractory(akClient) SetRefractory(akGuest) sslBaseAnimation[] anims actor[] actors = new actor[3] int playerIndex =0 actors[0] = akPlayer actors[1] = akClient actors[2] = akGuest int sex0 = Game.GetPlayer().GetActorBase().GetSex() int sex1 = akClient.GetLeveledActorBase().GetSex() int sex2 = akGuest.GetLeveledActorBase().GetSex() int c = 1 sslBaseAnimation[] anims2 int f = sex0 + sex1 + sex2 int m = 3 - f if(sex0 == 1) ; female PC if(sex1 == 1); female NPC if(sex2 == 1); FFF c = 2 anims = SexLab.GetAnimationsByTags(2, "Cunnilingus") if(anims.length ==0) anims = SexLab.GetAnimationsByTag(2, "FF") endif if(anims.length ==0) anims = SexLab.GetAnimationsByTag(2, "MF,FM") endif anims2 = SexLab.GetAnimationsByTags(1, "F", "Masturbation") else anims = SexLab.GetAnimationsByTags(3, "MFF") endif else; male NPC if(sex2 == 1) ; FMF actors[0] = akGuest actors[1] = akPlayer actors[2] = akClient playerIndex =1 anims = SexLab.GetAnimationsByTags(3, "MFF") else ;FMM anims = SexLab.GetAnimationsByTags(3, "MMF") endif endif else; male PC if(sex1 == 1) if(sex2 == 1); MFF actors[0] = akGuest actors[2] = akPlayer playerIndex =2 anims = SexLab.GetAnimationsByTags(3, "MFF") else ; MFM anims = SexLab.GetAnimationsByTags(3, "MFF") endif else if(sex2 == 1) ; MMF actors[1] = akGuest actors[2] = akClient anims = SexLab.GetAnimationsByTags(3, "MFF") else ;MMM anims = SexLab.GetAnimationsByTags(3, "MMF") ;player in female position endif endif endif if(anims.Length == 0) Debug.Notification("You've blacklisted all threesome sex anims. This won't work.") if(c == 1) anims = SexLab.GetAnimationsByTags(3,"Sex") else anims = SexLab.GetAnimationsByTags(2,"Sex") anims2 = SexLab.GetAnimationsByTags(1,"Sex") endif endif RegisterForModEvent("AnimationEnd_GetTime", "EvaluateSex") While (SexLab.FindActorController(actors[0]) != -1 ||SexLab.FindActorController(actors[1]) != -1 || SexLab.FindActorController(actors[2]) != -1) Utility.Wait(1.0) endwhile if(c == 1) sslThreadModel th = SexLab.NewThread() if(playerIndex ==0) th.AddActor(actors[0],isVictim = isPlayerVictim) th.AddActor(actors[1]) th.AddActor(actors[2]) elseif(playerIndex ==1) th.AddActor(actors[0]) th.AddActor(actors[1],isVictim = isPlayerVictim) th.AddActor(actors[2]) else th.AddActor(actors[0]) th.AddActor(actors[1]) th.AddActor(actors[2],isVictim = isPlayerVictim) endif th.SetAnimations(anims) th.DisableLeadIn(isPlayerVictim) th.SetHook("GetTime") if(next != "None") th.SetHook(next) endif return th.StartThread() else sslThreadModel th2 = SexLab.NewThread() th2.AddActor(actors[1]) th2.SetAnimations(anims2) th2.DisableLeadIn(true) th2.StartThread() sslThreadModel th1 = SexLab.NewThread() if(playerIndex ==0) th1.AddActor(actors[0],isVictim = isPlayerVictim) th1.AddActor(actors[2]) else th1.AddActor(actors[0]) th1.AddActor(actors[2],isVictim = isPlayerVictim) endif th1.SetAnimations(anims) th1.DisableLeadIn(true) th1.SetHook("GetTime") if(next != "None") th1.SetHook(next) endif return th1.StartThread() endifendFunction sslThreadController Function PerformMasturbation(Actor akSoloer, string next = "None") int sex = akSoloer.GetLeveledActorBase().GetSex() akJobType = "Masturbation" sslBaseAnimation[] anims if(sex == 0) anims = SexLab.GetAnimationsByTag(1, "M", akJobType, requireAll=true) ;anims = SexLab.GetAnimationsByTag(1, "M", akJobType, tagSuppress="Zaz", requireAll=true) else anims = SexLab.GetAnimationsByTag(1, "F", akJobType, requireAll=true) ;anims = SexLab.GetAnimationsByTag(1, "F", akJobType, tagSuppress="Zaz", requireAll=true) endif if(anims.Length == 0) Debug.Notification("You've blacklisted all consensual "+akJobType+" sex anims. This won't work.") return None else While (SexLab.FindActorController(akSoloer) != -1 ) Utility.Wait(1.0) endwhile sslThreadModel th = SexLab.NewThread() th.AddActor(akSoloer) th.SetAnimations(anims) th.DisableLeadIn(true) if(next != "None") th.SetHook(next) endif return th.StartThread() endifendFunction Function PerformDance() endFunction Function FadeToBlack() akPlayer.SetRestrained(true) FadeOut.Apply() Utility.Wait(2.5) ; since Fadeout lasts exactly 3.0s, we need to allow some script delay FadeOut.PopTo(BlackScreen)endFunction Function FadeFromBlack() BlackScreen.PopTo(FadeIn) Utility.Wait(2.0) FadeIn.Remove() akPlayer.SetRestrained(false)endFunction MF_RandomQuest Function QuestKicker(FormList quests,int lastIndex) Debug.Trace("[Radiant Prostitution] try to start a quest from list " + quests.GetName()) Debug.Trace("[Radiant Prostitution] last Index was " + lastIndex) MF_RandomQuest questToStart = randomQuest(quests, lastIndex) Debug.Trace("[Radiant Prostitution] Try to start Quest " + questToStart) int try1 = 0 While(!questToStart.IsRunning() && try1 < 5) int try2 = 0 Debug.Trace("[Radiant Prostitution] Are Preconditions fullfilled ? " + (questToStart.checkConditions())) if(questToStart.checkConditions()) questToStart.Start() Utility.wait(0.5) While(!questToStart.IsRunning() && try2 < 5) Debug.Trace("[Radiant Prostitution] Quest not started Retry "+ try2) questToStart.Start() try2 += 1 Utility.wait(0.5) endWhile endIf if(!questToStart.IsRunning()) Debug.Trace("[Radiant Prostitution] Quest did not start get a new one") questToStart = randomQuest(quests, lastIndex) Debug.Trace("[Radiant Prostitution] New Quest is "+ questToStart) questToStart.Start() try1 += 1 endIf endWhile if(questToStart.IsRunning()) Debug.Trace("[Radiant Prostitution] Quest started") return questToStart endif Debug.Trace("[Radiant Prostitution] no Quest Could be started") Debug.Notification("No quest was started. Please try again.") return noneendFunction MF_RandomQuest Function randomQuest(FormList quests, int lastIndex) int listSize = quests.GetSize() if(listSize <= 0) ErrorMessage.show() endIf ; WS - commented out, this method of picking a quest confuses me and seems to cause predictable repetition even after the first round ;lastIndex = lastIndex + Utility.RandomInt(1, Math.ceiling(listSize / 2)) ;while(lastIndex > listSize - 1) ; lastIndex = lastIndex - (listSize - 1) ;endWhile ; WS - instead of the above whatever-the-hell-that-is, all we want is ensure that a random quest isn't given twice in a row, if there are more than 2 choices ; note: the WHILE needs to check if listSize is larger than one, so we don't get stuck if the list only has 1 quest ; and if the listSize is 2, we need to do RandomInt(0,1) instead, otherwise it'll always alternate between one and the other with no randomness int newIndex = lastIndex if listSize == 2 newIndex = Utility.RandomInt(0,1) Else While ( (newIndex == lastIndex) && (listSize > 1) ) newIndex = Utility.RandomInt(0, (listSize - 1)) EndWhile EndIf Debug.Trace("MF_RP TRACE : FINAL INDEX IS " + newIndex + " (" + quests.GetAt(newIndex) + ")") MF_RandomQuest questToStart = quests.GetAt(newIndex) as MF_RandomQuest if(questToStart.getRank() == 1) lastHomeJob = newIndex elseif(questToStart.getRank() == 2) lastCampJob = newIndex elseif(questToStart.getRank() >= 3) lastRandomJob = newIndex endIf return questToStartendFunction Function loadFrostfall() isFrostfallLoaded = false int Mods = Game.GetModCount() int i While i < Mods string Modname = Game.GetModName(i) If !isFrostfallLoaded && Modname == "Chesko_Frostfall.esp" isFrostfallLoaded = true Frostfall_exposurePoints = Game.GetFormFromFile(0x00000183d, "chesko_frostfall.esp") as GlobalVariable return EndIf i += 1 EndWhileEndFunction Function frostfallWarmPlayer() if (isFrostfallLoaded) Frostfall_exposurePoints.SetValue(120) Else loadFrostfall() If (isFrostfallLoaded) Frostfall_exposurePoints.SetValue(120) EndIf EndIfEndFunction Above in the Spoiler is the whole Handler script form RP 3.2.2, now the reason I want to point this out is in that code, there is option for m/m, mf hetro, ff (PC sub side, and dom side) No where in that code is the option for the female to dom a male, ITS NOT, so again, all I am saying is I am trying to make the game for all styles of play, not just certain ones. In 3.2.2, a female NPC could approach a Male pc, and actually say " I want to fuck your ass and leave it a gaping black hole", then when the animations starts, the code puts the female in the submissive position! so It is immersive breaking! By no means am I trying to down the work you and others did, it is much appreciated, and I am hoping you would like to help me make this better, What I am saying is, before I want to move onto making more quest, I want the game to be useable for all players and play styles thru dialog Immersion I agree with you all those things you mention need to be added, and we will get there, I just want a stronger foundation to build this on, so everyone feels they can use RP, with any character, any sexual preference, any race, it feels to that person like the mod was mad for the character they are playing Its that high expectations on my part...yea..lol but I have been modding my own game for years, examples: Defeat, made my own json files, maybe my favorite mod of all time, I change a lot of conditions to be gear towards male players, instead of just generic dialog Apropos- made my own json files so there was male male description in debug messages , or female strap-on to male RDS- another one of my favorites from Guffel, I made it for my playthrough so it talks to me , directly to my character, instead of just generic The only issue I see with modders out here now, is the first thought is " I need to script this" or " I need to make a script to fix another script"when a lot of things can be done without scripting everything , that's not to take away from some of the amazing code all these different modders have written, cause its amazing! Anyways, I hope none of what I said was taking personally, we all see it different, and thanks for the work you have done on this, I hope you are interested in doing more
Guest Posted March 11, 2018 Posted March 11, 2018 27 minutes ago, divinefire said: I'd like to see a group sex or gangbang quest be put in since we have a few animation packs that do them now or maybe just a customer request it when they approach you or ask them if they want any food or drink. They already ask for bj/vag/anal anyway. Thanks for updating and supporting this mod. Your welcome, That's a great Idea and I will start working on that once the dialog is complete:), There is a quest for home gangbang but the code as of now is set for threesomes, while the others watch, then take turns for another threesome but once we get to the coding side of it, full 4 and 5 person gang bangs will be added
TheGreatJoeLouis Posted March 11, 2018 Posted March 11, 2018 It's very nice to see this mod getting updates since it was one of my favourites, i've a question about it, do i need a new save to use the mod or can a save with the old radiant prostitution can be updated with this new version? Also if it's possible to update do i need to do something specific or can i just substitute the old version with the new one and everything will work fine?
Guest Posted March 11, 2018 Posted March 11, 2018 35 minutes ago, TheGreatJoeLouis said: It's very nice to see this mod getting updates since it was one of my favourites, i've a question about it, do i need a new save to use the mod or can a save with the old radiant prostitution can be updated with this new version? Also if it's possible to update do i need to do something specific or can i just substitute the old version with the new one and everything will work fine? you should be able to update right over the old one, and everything should be fine, do a save first just in case, but i see now reason that you cant just update from 3.2.2
Jappa123 Posted March 11, 2018 Posted March 11, 2018 Hello, i just wanted to ask you is there any "soft bondage" content like in cursed loot solicitation or Maria eden? If not any plans for it? asking because i wanted to start new game with new modlist Thanks!
Guest Posted March 11, 2018 Posted March 11, 2018 38 minutes ago, Jappa123 said: Hello, i just wanted to ask you is there any "soft bondage" content like in cursed loot solicitation or Maria eden? If not any plans for it? asking because i wanted to start new game with new modlist Thanks! There are plans for it in the future, once all the dialog match's that's in there now, I want to release standalone versions to go with mods like you mention and more, and if someone else gets the jump on it earlier to make quest for this to link with other mods, that's great as well, but yes is in the future plans :). also if you are starting a new playthru, give Sexlab adventures a try, it is one of the best Rape mods I have seen, its from Teutonic https://www.loverslab.com/files/file/5183-sexlab-adventures/
pendulo1 Posted March 11, 2018 Posted March 11, 2018 Hi...i just update the mod in my current game...and found two things: in the solitude inn the innkeeper dont have the dialog for start working, and when i try with Hulda in whiterun she speaks to my female pc as gigolo I dont know if this happens because i´m playing with a custom race (Lunari) Thanks for your great work and for your help
Guest Posted March 11, 2018 Posted March 11, 2018 6 minutes ago, pendulo1 said: Hi...i just update the mod in my current game...and found two things: in the solitude inn the innkeeper dont have the dialog for start working, and when i try with Hulda in whiterun she speaks to my female pc as gigolo I dont know if this happens because i´m playing with a custom race (Lunari) Thanks for your great work and for your help Hmm, it might be, I will jump into the CK in a minute and make sure he still has the innkepper keyword in winking skeever
Guest Posted March 11, 2018 Posted March 11, 2018 23 minutes ago, pendulo1 said: Hi...i just update the mod in my current game...and found two things: in the solitude inn the innkeeper dont have the dialog for start working, and when i try with Hulda in whiterun she speaks to my female pc as gigolo I dont know if this happens because i´m playing with a custom race (Lunari) Thanks for your great work and for your help Hey good catch So I had the conditions wrong in that dialog, I am going to update it in a minute, all you will have to do is drop the esp into your Skyrim data folder and hit yes when its askes to overwrite, I will drop the file here for you now, then put it in the update after I check out the winking skeever issue MF_RadiantProstitution.esp
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