Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Sooo... I'm presuming this is gonna be out of my reach for a while, but how difficult would it be to accomplish the following set of actions during a sex scene?

  1. If act is penetrating, giver has a particular trait (Dominant), and climax just happened, then:
  2. Turn penetrating act into ongoing act (ideally with unique wording)
  3. Lock those buttons that conflict with (that is, would cancel) the ongoing act (ideally with unique tooltip if you hover over them)
  4. Set a timer to keep the buttons locked for at least three rounds
  5. Change the wording for when the act gets shifted to a different act

I'm open to variations that avoid the most complicated portions here.

It's entirely doable, but there isn't any support within the sex system for those particular changes and some of them can end up being rather complex to implement. I would rate this as a significantly difficult set of changes that would probably take weeks or months for most people to implement.

1. Orgasm is a function in newsexsystem.gd. The only challenge is coming up with a proper set of conditions to check as there are some variations on the conditions you gave, such as the double dildo actions. 

2.  It's not particularly difficult to append the last action to the list of ongoing actions, but sex actions effectively have no state information, meaning that they don't track any changes or variations. The sex action scripts are reused by other participants so you cannot easily add variables to the sex action files to track the timer for a specific act. Storing the timer outside of the action and using it to switch between two types of text generation functions is complicated by the alternate text system that is used by many penetration actions, but at the very least this means altering the every penetration sex action file to handle the unique wording. I expect that altering the following line in newsexsystem.gd to include an entry for your action state information is the simplest approach:

var dict = {'scene' : scenescript, 'takers' : takers.duplicate(), 'givers' : givers.duplicate()}

3. There is some precedent for disabling action buttons based on other conditions and the conflicting actions function might produce data that can be used to accomplish this. Though there are other considerations for preventing actions from being cancelled, such as the "Interrupt" URL for ongoing actions. The sex system's GUI currently does not support alternate uses for URLs nor showing tooltips, though such functionalities exist for other GUIs in the game. Also, all actions get cancelled when restraints are removed from a slave that is resisting sex or when the sex interaction ends.

4. Timers themselves are easy to manage, but going back to #2 the core problems are where to store them and share them.

5. This is covered in #2, but changes to the flavor text of sex actions is messy work and likely to consume a disproportionately large portion of your time.

That's very useful info and I much appreciate it, especially the way you explained each element in turn and told me where to find them specifically.  It does look like it's outside my skill set / patience level for the moment, but that I might be capable of toying around with parts of it just to see if little pieces could give me kinda what I'm after, or at least a hint of it.  I've been debating about toying with the flavor text to try to get an Omegaverse version anyway, so maybe if I start playing with that section I'll see about tying it into some of the other parts.

On the up side, my recent changes have finally started paying off, aside from a few random crashes.  Unfortunately, the debug utility won't work -- every time I try to load a game, it pops back to forcing me to tell it I'm okay playing a game like this, which just takes me back to the main menu.  So I'm still fumbling through trying to suss out which problems I've created, mostly by keeping track of which lines do get displayed without crashes.  But I've got it giving different reactions when I sell slaves (based on if they're terrified, if they're newly captured, if they're spoiled and demand to be released, etc.) and when I look at them up for auction, which now differs between locations (I've finally worked out how to grab the location, though I'm half convinced that that might be part of what triggers crashes).  Slaves get treated more "genteel" in Wimborn and more rough in Gorn (or Umbra, should I ever get there), and Frostford has a different view on which slaves are exotic vs. mundane.  That sort of thing.  Child slaves in particular get treated differently in the code, because I was getting a bit creeped out by the way it automatically flashed me same as any other slave.  (At some point I'm gonna make bandits stop having child soldiers in their gangs, but I do still want kids to be part of my experience in general, so I'm slowly tailoring it to treat them more distinctly... which is a lot of fiddly bits.)

Also got the descriptions back to working, though some of them are still buggy or half-formed.  No more crashes there that I've noticed.  It'll have me find a character doing something related to their job, give me their reaction to my approach and their costume (and reaction to the costume, e.g. a prude not appreciating the sexy clothing) etc.  And the core descriptors change as the slave gets familiar: newbies are described in more physical terms ("The wolf-eared lad looks up cautiously as you approach"), while slaves I've had for a while get less flowery about the descriptions.  Only issue there is that because of the way I've reused functions, currently the auction house has slaves reacting as they would in my mansion, lol!

P.S. What's the easiest way to give my character the Heal spell without having to bother with the Mage Guild quest?  Like, I'd be willing to make a function to give it to me, and then tie it to some in-game button just long enough to grant me the spell and then undoing that code.  It bugs me that I'm not starting with that spell because it changes how well newbies warm up to me if I can heal their wounds (not just bandage them) and I miss that.

If the normal error messages from debug mode are not useful for your problems, then I recommend using the the print() or globals.traceFile() functions to track what is happening or not happening. When I am uncertain how code is actually executing, I'll scatter those around the code and run it to see what ran and what didn't. Usually it looks something like this:

print("Here1")
... various code ...
print("Here2")
... various code ...
print("Here3, var1: " + str(var1))


It is a simple boolean change with no other consequences, so the simplest way to give yourself the healing spell is to add a line like this to the _ready() function in Mansion.gd:

globals.spelldict.heal.learned = true

Nice!  I didn't realize it was so simple, 'cuz the spot I found for learning spells has quite a few other lines of code.

I just stuffed it into looking at myself in the mirror, 'cuz I've already got description modifications going fine.  That'll be a useful tweak for me to use next time I restart the game, and a decent place to stick any quick cheat codes like that.