sen4mi Posted April 22, 2012 Posted April 22, 2012 Any of this sound reasonable or should I just go back in my corner? I have been wondering if SexoutNG should not simply disable the scanner while a callback is pending. But that might break things?
zippy57 Posted April 22, 2012 Posted April 22, 2012 edit: Would it be easier/make more sense to just make a "rape key"? As in' date=' press X to rape? I was just thinking that might sidestep the unintentional-aggression thing and the somewhat unusual weapon-but-not-really-a-weapon thing.[/quote']That sort of already exists here, though it's not set up as rape. Maybe it could be tweaked?
astymma Posted April 22, 2012 Posted April 22, 2012 edit: Would it be easier/make more sense to just make a "rape key"? As in' date=' press X to rape? I was just thinking that might sidestep the unintentional-aggression thing and the somewhat unusual weapon-but-not-really-a-weapon thing.[/quote']That sort of already exists here, though it's not set up as rape. Maybe it could be tweaked? The tweaking would be the addition of one line of code as far as I know... setting Sexout.raper to a valid actor before calling SexoutBegin.
iron_jack Posted April 23, 2012 Posted April 23, 2012 How do we use the player's sexuality as picked in the NG MCM menu to determine dialog options? I assumed it would be as simple as setting one of the conditions as target IsInList SexoutNGListGay == 1 (or != 1 for not-gay) but it doesn't seem to be, ah, doing what I want.
sen4mi Posted April 23, 2012 Posted April 23, 2012 How do we use the player's sexuality as picked in the NG MCM menu to determine dialog options? I assumed it would be as simple as setting one of the conditions as target IsInList SexoutNGListGay == 1 (or != 1 for not-gay) but it doesn't seem to be' date=' ah, doing what I want. [/quote'] I think that should be if targetRef.IsInList SexoutNGListGay (since 1 is true and 0 is false in geck scripts) However, when I examine sexout.esm, I see code like this: set iorientS to ListGetFormIndex SexoutNGListStraight player set iorientG to ListGetFormIndex SexoutNGListGay player set iorientB to ListGetFormIndex SexoutNGListBi player if iorientS > -1 ; Straight elseif iorientG > -1 ; Homosexual elseif iorientB > -1 ; Bisexual endif i wonder how that works if someone gets into multiple lists? Personally, if I were designing sexuality, I would have three lists like this: SexualityAssigned SexualityLikesMales SexualityLikesFamales The first would be used for code that assigns sexuality randomly and this would allow for asexual types that do not like anyone. And then on top of that I would want another data structure to represent any current relationships and their details, but I do not know how to do that justice for arbitrary npcs.. it probably needs nonplayable armors to represent state for them? Relationships are complicated things, with wide ranging effects and variations...
astymma Posted April 23, 2012 Posted April 23, 2012 iron_jack is talking about testing sexuality in a dialogue conditional, not in a script. As far as I know the conditional as iron_jack listed it should work just fine. Kinda curious though *how* it seems not to be working though...
iron_jack Posted April 23, 2012 Posted April 23, 2012 iron_jack is talking about testing sexuality in a dialogue conditional' date=' not in a script. As far as I know the conditional as iron_jack listed it should work just fine. Kinda curious though *how* it seems not to be working though... [/quote'] Well, the appropriate responses don't show up when they should. Beyond that I don't know how to describe it. If I'm trying to set a dialog choice only to be available to gay or bi male PCs, for instance, I think it'd be target IsInList SexoutNGListStraight != 1 (or < 1) which to me says "if the target (player) is not explicitly defined as straight (which should catch even undefined sexualities, if that's possible), then allow this dialog"... but if I add that conditional and then speak to the NPC as a gay/bi male, the dialog choice doesn't appear. If I remove the conditional it does appear for males of all sexualities. I could try target IsInList SexoutNGListGay == 1 OR target IsInList SexoutNGListBi == 1 but, uh... the way the AND/OR stuff works in dialog conditions confuses me a little bit. I suppose I could just set up three dialogs with conditions gay == 1, bi == 1, and straight == 1. Could just be something else I'm screwing up I suppose, I just wanted to make sure I was at least headed in the right direction. I could use Confirmed Bachelor as a condition instead, but I'd prefer to use the built-in SexoutNG method. edit: Derp. Turns out it was just something stupid I was doing. Somehow I got both a x < 1 and an x == 1 in the dialog I was testing. Sorry for the stupidity, but thank you all for your assistance.
astymma Posted April 23, 2012 Posted April 23, 2012 Ahh, I figured it might be something simple like an overlooked mistake since your conditional was pretty much exactly as it needed to be. The use of AND and OR in conditionals is annoying since grouping can't be done. You can't do, for example, "if ((A AND OR (C AND D))" because it won't let you group the conditionals. Generally you should limit yourself to two conditionals separated by either AND or OR and then do another response for the other set of conditionals. In the example I just gave you'd do the exact same response text in two responses, one with "if A AND B" and the other with "if C AND D". Having two responses with the same text constitutes an OR'd set of 2 AND conditionals. This has a bad result of displaying both responses so one of them you would do "if A AND B AND NOT C AND NOT D" but leave the other one as "if C AND D". That would display only one of the responses.
sen4mi Posted April 23, 2012 Posted April 23, 2012 Ahh' date=' I figured it might be something simple like an overlooked mistake since your conditional was pretty much exactly as it needed to be. The use of AND and OR in conditionals is annoying since grouping can't be done. You can't do, for example, "if ((A AND OR (C AND D))" because it won't let you group the conditionals. [/quote'] I must admit to not having done any dialog conditions forever (well.. for a year). And you have done an excellent job of describing how to get that grouping in conditionals. But when things get that complicated, it would sometimes good if you set up a quest script to implement the logic in GameMode. Or sometimes you can use a result script in an immediately previous dialog topic where you update a quest variable. (This can work well if you start your conversations with generic small talk.) (Also, I think we should note that the game does group OR statements for you. If we said A AND B OR C AND D we get A AND (B OR C) AND D.)
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 A little update from yours truly.. 1. Should have an updated version out today with: - Donkey's fixed anims (ghouls, 631-634). - The bloatfly anims. - Loogie's rape punch fix. 2. Someone asked about 'locking' Sexout to avoid conflicts in callbacks etc. This just isn't possible; there's nothing I can do in code to prevent some other script in an entirely different mod from stomping on the sexout quest variables. If I were to just delay processing of the CIOS until I'm ready, then a 3rd mod would just stomp on the 2nd mods sexout call. I intend to address a lot of this via extender features in the (hopefully!) near future. 3. Conditionals.. complicated, but you can get the same effect as nested conditions. You have to (almost) think in RPN, and if RPN is hugely annoying for you (as it is for me) then it certainly seems impossible at times. 4. Orientation. The "orientation" vs "likes" bits were a tossup early on. Halstrom and I discussed it shortly and to me it seemed like the problems you get rid of in one method are just replaced by problems using another method. If it is turning out to be too difficult to use the orientation as-is, I can change it. The original version just had an orientation flag for the player (0 == straight, 1 = gay, 2 = bi) but I did away with that "as requested" and went to formlists instead, so NPCs could also have their orientation set (and remembered). This is something that will be addressed via extender features as well, as soon as I am able to save data along with savegames, and we'll go back to the simple integer for both the player and NPCs.
Halstrom Posted April 23, 2012 Posted April 23, 2012 A little update from yours truly.. 1. Should have an updated version out today with: - Donkey's fixed anims (ghouls' date=' 631-634). - The bloatfly anims. - Loogie's rape punch fix. 4. Orientation. The "orientation" vs "likes" bits were a tossup early on. Halstrom and I discussed it shortly and to me it seemed like the problems you get rid of in one method are just replaced by problems using another method. If it is turning out to be too difficult to use the orientation as-is, I can change it. The original version just had an orientation flag for the player (0 == straight, 1 = gay, 2 = bi) but I did away with that "as requested" and went to formlists instead, so NPCs could also have their orientation set (and remembered). This is something that will be addressed via extender features as well, as soon as I am able to save data along with savegames, and we'll go back to the simple integer for both the player and NPCs.[/quote'] Cool stuff, I'm adding the Bloatfly's into the next version of Pregnancy too. I hadn't really given enough thought on what to do with the orientation, so I'm happy enough to leave it as it is, seeing there's a plugin setting it, so people can just set their own preferences. Though I was thinking besides LikesGirls & LikesGuys, it also needed DislikesGirls & DislikesGuy's, I think that would cover every situation? We'll resove it one way or another sooner or later, I have a counter in SCR for tracking sex events & types I hope to get back to doing something with later
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 The likes/dislikes bits were the way you originally suggested IIRC, but that isn't how it's done now. The reason I went with orientation instead was I didn't want to have multiple compares everywhere that orientation was being checked. It came down to either doing an "isInList Straight" for both males and females, or something like "isInList likesFemales && isMale" to check for a "straight male." I think the simple flag makes a lot more sense, but I can't do that with NPCs right now since extender can't save alongside savegames. There's no reason (in my mind) to add "dislikes" flags.. they are implied. If you are a gay male, you don't like females by default; if you do, well, you're bi and not gay.. or, at least, that oversimplification is more than enough for a game like this.
4nk8r Posted April 23, 2012 Posted April 23, 2012 I have a question about the Lewdness measurement I'm seeing in MCM for the Sexout breakout. It stays at 0% no matter what I've been doing, so I'm wondering if that is just a relic of some earlier version that hasn't been completely removed yet?
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 I have a question about the Lewdness measurement I'm seeing in MCM for the Sexout breakout. It stays at 0% no matter what I've been doing' date=' so I'm wondering if that is just a relic of some earlier version that hasn't been completely removed yet? [/quote'] What is "sexout breakout?"
astymma Posted April 23, 2012 Posted April 23, 2012 Ahh' date=' I figured it might be something simple like an overlooked mistake since your conditional was pretty much exactly as it needed to be. The use of AND and OR in conditionals is annoying since grouping can't be done. You can't do, for example, "if ((A AND OR (C AND D))" because it won't let you group the conditionals. [/quote'] I must admit to not having done any dialog conditions forever (well.. for a year). And you have done an excellent job of describing how to get that grouping in conditionals. But when things get that complicated, it would sometimes good if you set up a quest script to implement the logic in GameMode. Or sometimes you can use a result script in an immediately previous dialog topic where you update a quest variable. (This can work well if you start your conversations with generic small talk.) (Also, I think we should note that the game does group OR statements for you. If we said A AND B OR C AND D we get A AND (B OR C) AND D.) Yup, which is why you should generally avoid combining AND and OR in the same conditional as that operator precedence issue will bork your logic nearly every single time. For instance, your example destroys the logic of the conditional completely. If you want dialogue based on (A AND OR (C AND D), using A AND B OR C AND D results, as you said, with A AND (B OR C) AND D you get a true result only with a limited subset of the results that satisfy the logic you intended. A AND B = true, C AND D = false = yes with grouping, no without A AND B = false, C AND D = true = yes with grouping, no without A AND B = false, C AND D = false = no with both A AND B = true, C AND D = true = yes with both As you can see you get proper results with a subset that is only half of what you intended. BTW, these types of comparison charts are beneficial to actually create if the logic is complicated and can improve code by tightening up your conditional branching and in some cases eliminating conditionals by creating a good "else" branch. Speaking of code though, I'm annoyed at how it handles conditional if statements as well. For example, I can't write the following: if Player == (refA || ref B || refC) I have to write: if (Player == refA) || (Player == refB) || (Player == refC) which, I have to say, pisses me off hehe. Especially given that scripts have a strict character limit. you would think they would have developed the notion to strive for compact syntax instead of verbose syntax....sigh.
Guest Loogie Posted April 23, 2012 Posted April 23, 2012 Since most traits are useless anyway, couldn't this be handled with gay/straight/bi/asexual traits chosen at the beginning of the game?
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 Speaking of code though' date=' I'm annoyed at how it handles conditional if statements as well. For example, I can't write the following: if Player == (refA || ref B || refC) I have to write: if (Player == refA) || (Player == refB) || (Player == refC) which, I have to say, pisses me off hehe. Especially given that scripts have a strict character limit. you would think they would have developed the notion to strive for compact syntax instead of verbose syntax....sigh. [/quote'] This is a little annoying but I do have to correct one thing. The script size limit is not based on the raw script, it's based on the compiled script. If you open up a script in fnvedit you can see the difference in size compared to e.g. a local text file with the script source. This is why MCM scripts are so small and simple yet run into the script size limit all the time -- MCM is based entirely on strings and string "patterns" that can't be compiled. IIRC the script size limit is 16KB compiled, 32KB uncompiled. The old main supervisor script (from classic) currently stands at 13KB compiled, but is maxed out on the uncompiled size. OTOH the MCM script #1 is at about 14KB compiled, 20KB uncompiled, and can barely hold anything else -- which is why there are three fucking MCM scripts in sexout right now. Personally I think it's stupid that there is a script size limit at all.
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 Since most traits are useless anyway' date=' couldn't this be handled with gay/straight/bi/asexual traits chosen at the beginning of the game? [/quote'] That would work too, but again, it doesn't cover NPCs. The thought with the current system was that you could pick both your orientation and a default orientation for NPCs, and then assign individual NPC orientations on demand (modders would do this in their scripts -- either randomly per encounter, specifically for their own NPCs, etc).
jaam Posted April 23, 2012 Posted April 23, 2012 Since most traits are useless anyway' date=' couldn't this be handled with gay/straight/bi/asexual traits chosen at the beginning of the game? [/quote'] That would work too, but again, it doesn't cover NPCs. The thought with the current system was that you could pick both your orientation and a default orientation for NPCs, and then assign individual NPC orientations on demand (modders would do this in their scripts -- either randomly per encounter, specifically for their own NPCs, etc). For NPC, its currently used by SexoutOrientationExpress, SexoutSex and SexoutHookups. For the player, well, the player can choose.
4nk8r Posted April 23, 2012 Posted April 23, 2012 I have a question about the Lewdness measurement I'm seeing in MCM for the Sexout breakout. It stays at 0% no matter what I've been doing' date=' so I'm wondering if that is just a relic of some earlier version that hasn't been completely removed yet? [/quote'] What is "sexout breakout?" I meant the expanded MCM menu items when you select a module. The Sexout stats page shows a Lewdness entry that stays at 0%.
Halstrom Posted April 23, 2012 Posted April 23, 2012 I meant the expanded MCM menu items when you select a module. The Sexout stats page shows a Lewdness entry that stays at 0%. I think Lewdness is a leftover from old Sexout, it's calculated on your outfit but in a very primitive fashion, it used to affect rapers stalker chances, but as far as I know nothing else ever used it.
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 I meant the expanded MCM menu items when you select a module. The Sexout stats page shows a Lewdness entry that stays at 0%. I think Lewdness is a leftover from old Sexout' date=' it's calculated on your outfit but in a very primitive fashion, it used to affect rapers stalker chances, but as far as I know nothing else ever used it. [/quote'] Ah, yes. All the stuff in the Sexout page (not the SexoutNG page) in MCM is "leftover." There are maybe three or so things in there that actually work in NG mode, which is the default now. I'll get around to removing all the old deprecated ones at some point, promise.
theblindbat Posted April 23, 2012 Posted April 23, 2012 2. Someone asked about 'locking' Sexout to avoid conflicts in callbacks etc. This just isn't possible; there's nothing I can do in code to prevent some other script in an entirely different mod from stomping on the sexout quest variables. If I were to just delay processing of the CIOS until I'm ready' date=' then a 3rd mod would just stomp on the 2nd mods sexout call. I intend to address a lot of this via extender features in the (hopefully!) near future. [/quote'] That might have been me. I do realize that SexoutNG itself has no control to prevent mods from misbehaving. I was suggesting that Sexout provide a means for mods to check the status of other mods' callbacks, etc. So when a certain mod initiates a callback that the mod can request Sexout to set a flag somewhere so that other mods that might interrupt the callback can check before they might initiate such an action. But the mods themselves are responsible for setting/checking/resetting such flags as Sexout has no way to enforce something like that. But if you have plans in the future to handle the callback breaking behavior then all's good anyway.
prideslayer Posted April 23, 2012 Author Posted April 23, 2012 2. Someone asked about 'locking' Sexout to avoid conflicts in callbacks etc. This just isn't possible; there's nothing I can do in code to prevent some other script in an entirely different mod from stomping on the sexout quest variables. If I were to just delay processing of the CIOS until I'm ready' date=' then a 3rd mod would just stomp on the 2nd mods sexout call. I intend to address a lot of this via extender features in the (hopefully!) near future. [/quote'] That might have been me. I do realize that SexoutNG itself has no control to prevent mods from misbehaving. I was suggesting that Sexout provide a means for mods to check the status of other mods' callbacks, etc. So when a certain mod initiates a callback that the mod can request Sexout to set a flag somewhere so that other mods that might interrupt the callback can check before they might initiate such an action. Callbacks are immune to the stomping problem, since they are done with formlists. If you want a way to inhibit callbacks entirely for any mods other than yours -- I think that's dangerous and fairly useless too. Best to just make sure the two mods that are processing callbacks play nicely with one another. But the mods themselves are responsible for setting/checking/resetting such flags as Sexout has no way to enforce something like that. But if you have plans in the future to handle the callback breaking behavior then all's good anyway. There isn't any callback breaking behavior that I'm aware of, what are you experiencing?
theblindbat Posted April 23, 2012 Posted April 23, 2012 Rapes seem to be able to interrupt sequences frequently. While not happening to me, the legion slavery initiation tour seems to be one. Seems easier to just turn stalking off for it. I was assuming the rapes were breaking things. If not actually callbacks, there still must be something that can be done (within the rape code, too) that could prevent rapes from being attempted while another mod needs exclusive 'rights' to the player's toon. Some sort of means for reserving 'rights' to the toon for a period.
Recommended Posts