Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Jan 01, 2018

Recent community posts

It's written in C# using WPF.  Youcan possibly build it using msbuild from command line, but I'd recommend downloading Visual Studio.  I believe it should work with the Community edition that is free.

That's not an AppData folder like on windows, it's a user home directory for Godot, the game engine Strive uses. I wrote that path based upon what the game code does to get the path and this:  which says on Mac OSX the path is ~/.godot/app_userdata/yourgame  so ~/.godot/app_userdata/strive/mods  would be the mod path.

The mods folder won't exist yet, and the parent folder won't necessarily already exist either. You have to create this path.

However, the way the game works makes it likely mods won't work on Mac because they're bindled into the "app" and thus it might lack permissions it expects to manipulate data within the app as OSX wants the app to be doing that outside of it's .app structure.

Line 21, you'd want to change like this I think, haven't tested.

filterRegex.compile('(?!dark ?)elf')

This will make sure it doesn't match just "elf" on files named "Dark Elf"

then later on you'd want to change line 26 like this, so it'll support both with and without spaces.

if file.findn(race.replace(' ','')) >= 0 || file.findn(race >= 0:

Entire file,  and again i didn't test these but should roughly work.

There is no option in my mod to only check for race, that's maybe one of the game's options for its own simplistic random portrait code, which this mod completely replaces.

I think you could achieve this by changing minMatch to -1 ?  This would affect more than just the gender filtering though.  Right now, for race or gender, if the matches are below minMatch, it aborts.  If it's not, but the result is empty, then it ignores that filter.  so if these conditions are met:

  • minMatch setting set to 0
  • No matching portraits for gender

Then instead of aborting like it would with a minMatch, it will discard the filtering on gender.  It'll filter on it, see that the result is empty, and continue with the prior list.  It'll however apply this to Races too, so if it filters on race and gets 0, it'll revert to using all portraits, then trying to filter on gender,  if that's also 0, it'll continue with all portraits (or a set of portraits for a race if you had one).

I think a more ideal way to handle this would be to have settings for whether it aborts or ignores the filter when below minMatch for race, gender, and age.

I haven't been playing the game as much lately and thus not too active on the mod. Not sure if/when that might change.

Delayed portrait loading got integrated into 0.5.21, stop using it, it will definitely break things.   I haven't tested it, but their patch notes noted they pulled it into the official game.

The game tries to create a backup directory and in another thread errors seemed to spam about that. Wasn't 100% clear on cause, but it could be the different way things are packed on mac (pck file instead of a folder layout), or it could be some permissions issue, but in general it appears mod's definitely do not work on Mac.

I should add a check for errors on that and avoid moving, and ideally also have it rollback changes if it moves one, but fails on the other (like if for some reason a file already exists with the target name, or it fails to create a folder, etc.)

Hair and Fur are considered one tag, mainly because a given race can only have one of those, none of them have both a skin and a fur color.

I do like the idea though of marking colors that are never normally picked by the game for selected race(s).  Maybe mark it red if none of the selected races can have that color, yellow if some of them can (in case someone is applying multiple for some reason).

I don't see adding a copy option instead of move.  You can achieve this outside the editor easily by only working on a copy of the files, which honestly I'd recommend anyways.

Mod's don't work on Mac, when you hit apply it basically spit out a bunch of errors to console and did nothing.

So, the only slaves that automatically get a portrait are the special ones, all the generic ones. All the default ones don't get any portraits normally. There's an option to enable random portraits, but it requires portraits to have matching races in the names so you can't just dump any files into the appropriate folder.

The appropriate folders are:
If you download packs, or use your own images, they need to go in one of those 2 folders.

Once there are images in those folders, you can select a slave in your mansion, go to customization tab, and click portrait to select a new one.  If nothing comes up in that, then either you got the path wrong,  or you've potentially changed the default path. Without any specific details of what you've done though it's hard to guess.

Lower the amount of images is what he meant by lower their amount.

I have no idea why you wiped the saves or what any of the tings you're talking about were supposed to achieve. You seem to be potentially talking about some other issue or unclear what you're trying to achieve and what you're seeing happen.

it also needs to write out the .gd files and have the game use them, instead of what is in the pck file. so pre-including backup might help it write out the files initially if it at least lets it use existing files... but overall seems like it could be annoying to get working.

Short answer: Mods can't work on OSX at all currently, and probably for the foreseeable future.

The errors you've posted to me suggested it is not working at all on your machine, and maybe Mac's in general. Basically, the mod engine is trying to build a backup folder, and failing.  That's the first step to applying a mod, it makes a backup copy of all the files, then loads the backup copy of files, and applies the mod.  If it can't make the backup, it'll never actually apply a mod.

I just downloaded the OSX build of the game, and looking in that zip, I don't see how the mod engine could work at all on OSX.  The mod engine expects to find a "files" folder that contains all the .gd files, but the osx package of the game doesn't have that, all the resources seem to be packaged up in a pck file. So mod engine, tries to find script files in the files folder, and it doesn't exist, so it errors a bunch trying to backup things.  then when trying to apply the mod, it can't find the backup folder so errors some more and basically does nothing.

I'm not sure if there's some way to have the game not use a pck file on OSX or not? If it needs to be built differently or could be manually achieved? The mod engine could also potentially be able to detect things are in a pck file and instead iterate on the files inside there and be made to work, however without a mac to actually test this on, it'd be a bit difficult to achieve.

By "activated it in the mods menu" do you mean checked it, and clicked apply? Which results in the game exiting.

To get logs, run the game from a shell prompt.  it outputs to the shell all the messages.  If there's no Random Portrait button, then the mod did not apply correctly.  You might need to extract a fresh copy of the game, and apply the mod again, thus time running it from the shell, to see what errors might happen.  Some errors are normal though, so if anything can be worth while to run the game, and exit it once, just to see what normally happens.  Then run it again, apply the mod, and see if any different errors appear. I don't know if mods work on Mac as I haven't read of anyone trying and my only mac is a work laptop.

The game has it's own random portrait code, but it *only* uses race, so that's likely what you saw get applied.

Nope, you can look at th emod and see what files it modifies, is not one of those.

For that job, they need to have over 45 lewdness or their gold will be halved, that's specifically what will cause it to say they had insufficient skill. So advanced sexual actions is mainly just being super lewd. However, doing kinkier stuff with them causes their lewdness to go up faster.

Then there are bonuses from Sex-crazed, hollow nipples, augmented tongue, and nympho.  Nympho also lowers the stress gained (or if they're a bunny). 

FYI, I think the mod system is broken right now if 2 mod's modify the same file. I've been too lazy to test and report it, but I found that regardless of order, the last mod doesn't modify the result of the prior mod, but instead starts from the backup copy of the file all over, thus wiping out the prior mod's changes entirely.

Thus why right now it has to be end of the loading order, as my random portrait mod also modifies, but then this means your mod being at the end of the order is almost definitely wiping out my mod's changes to the file.

The bit I modify in is tiny though and not critical to the random portraits mod working.  It was primarily a fix to have it re-choose portrait for starting slave after you customize them.

Any other mods though that modify any of the similar files will likely not play nice, even though you coded it to try and play nice as much as possible :(

Hmm ok so that could be either #1 or #2.   I'll try and take a crack at my logic for determining which images to load to something that doesn't depend upon the compositing so if that has issues, it still only loads the necessary ones, and i'll test it out with 0.5.20a.  Probably won't get to it till the weekend as next few days are busy.

I'll also probably take a crack at a really efficient design that uses a smaller number of button objects and re-uses them.  Dealt with some similar designs for web pages, though doing the asynchronous loading in Godot will be a lot more painful than it is in javascript.

Any error messages output to the console when it's failing? There's a few potential causes.

1: Godot just breaks when more than a certain number of objects added to the ScrollContainer. So maybe at around 4000 things worked, but at 6000 things just break? If so I'd expect to see some errors in the console.

2. My mod uses a bit of a hack to render the initial viewed items.  Without the delay, the rendering engine hasn't setup the size/location of everything yet and so it thinks everything is visible and the delayed loading ends up loading everything.  I thought the way I did it the actual delay didn't matter as it's block on that compositing, but maybe I was wrong

3. Something I'm not thinking of, but console output might help identify.

What other mods/versions do you have? Did you try it with just the delayed loading mod enabled?

TitsS and AssS include small, flat, and masculine.  You could however add your own tags of FlatAss and FlatChest which would match only flat, similar for Masculine.

You can edit the settings.json file and add these yourself, you can copy and paste lines and then modify, for example, adding this to the TitSizes lines:

{ "Name": "Flat", "Regex": "FlatChest", "Tag": "FlatChest"}

Pink hair never naturally occurs in the game, so if you tag something with that, it'll only ever by used by the mod if you: 1. Use hair dye on a character to die their hair pink.  2. Click the random portrait button.

3.1 alpha 1 went out august 31st.  Which was 7 months since 3.0.

This is the list of issues tagged for the 3.1 issue:
With 992 open and 3950 closed, I'm guessing they've got a few months more of development.  Some of those likely get pushed, but still quite a bit of work remaining.

This is unfortunately a problem with my mod, if you're using it, it assigns a random portrait to every slave and there's no differentiation to one created for the player vs. any other. So if you have my random portraits mod enabled and start a new game, you'll be getting a random portrait for your main character.

I've been meaning to see if I can implement a work-around, something that resets it back to the default figures during character creation or something, but haven't yet.  Dunno if Lazerus's method works or not, but if it doesn't, you can edit your save, first search for  "player":   then search for first "imagefull":  after that,  and change it's value to null, "imagefull":null

Yeah looking at how it works, this would have to be a bug with the scrolled container that's part of Godot. I'm curious on the trigger though as I haven't seen it occur on my end.

Yeah I mean this is better than before as before for most people it'd never finish loading, but it still takes a really long time even on an i7-8700k to load a bunch of images.  The delayed loading i implemented isn't the best user experience as it loads them in the main UI thread. I was curious if i can offload that to the background somehow, then it'd be perfect.

(1 edit)

Based on the changelog for 0.5.20a, it'll make the game take more time to load images.  If the only change was to load them as 100x100 then, before:

  1. Load image


  1. Load image
  2. Resize to 100x100

Workload has been increased, so it's doing more for every image it loads. It however will use less memory so on systems with less memory that before would crash, it will at least finish, it'll just take forever.

I wrote a mod that stops the loading until they appear in the scroll list. Maybe they attempted to do something similar in 0.5.20a? No mention of it in the log and I haven't looked at the source yet.  My delayed load mod will probably need updating as it replaces how that loading works.  It might just work with 0.5.20a though, and basically rip out the 100x100 resizing and instead have it load on-demand.

I made a mod where it loads the images on-demand, instead of all at once. I likely need to update it so it works with 0.5.20a and it's tweaks to load them as smaller images. However if you run 0.5.20 and the mod, it'll likely be a ton faster than what you see in 0.5.20 without crazy memory usage unless you spend the time to scroll through the entire list.

The 0.5.20a update fixes the memory issue but it should actually make the load time LONGER, as before it was just loading them into memory. If you had enough memory, it'd finish.  Now it loads them and resizes them.  0.5.20a will take longer to load than 0.5.20, but yes it will use less memory.

With large portrait collections, the delayed loading is vastly more useful than converting them to smaller portraits. However the combination would be great too. I can probably update the mod for 0.5.20a tomorrow, maybe later today.

That would have nothing to do with this mod.  Also likely has nothing to do with the delayed portrait loading mod either.

The oblivion potion clears out what they think they want to level up. No guarantee it won't just roll the exact same thing, but at least it's an in-game option instead of save scumming.  It does raise their magic toxicity though and can cause them to start mutating if you do it more than once.

By specs I assume he means specializations, like hunter, mage, slaver, etc.  For those, you can only have one. As mentioned elsewhere in here, allowing for more would require modifying something like 92 locations in the game's code.

Apply the built-in Constants mod. Then click the new Constants button in main menu and modify the value for basenonsexactions. New value will take effect on next day in-game.

Alternatively, skip the mod and just edit the value in scripts/ 

You don't need to modify anything for traits, it's already an array in the file. Just add whatever traits you want, only need to make sure you type it exactly as the game wants, as i believe it's case sensitive on it. For example, here's the traits for one of my slaves:

"traits": ["Submissive", "Infertile", "Pervert", "Masochist", "Likes it rough", "Bisexual"],

Well first off, stop calling them traits! They're Specializations. The game has traits and they mean something else entirely.

To make it support this, you'd have to find every reference of .spec and see if/how it should be updated. Exactly how it changes depends. Yould for one need to make newly created characters define this as an array, and for loading to convert it from an array. Or you'd need to make the code handle if it was an array or just a plain string.  Then maybe a helper function to check for a given spec. Then every place that checks for a spec would need to be update to use said function.

If you're asking this question, then I don't think you're up for making the necessary changes. You're looking at changing somewhere around 92 places in code and at least several of those are non-trivial changes.

For traits, it's trivially simple, it's just an array you add text to, but you're talking about specialization, not traits if you're mentioning mage/alchemist.  And yes, the game supports only 1 specialization, you would need a mod to allow for multiple, as it's a single text field and the game only expects a single text field in all the locations it applies the specialization's attributes.

For siblings, you can add as many as you want, the game's code looks like this:

if entry.siblings.size() > 0:
text += '\n[center]Siblings[/center]\n'
for i in entry.siblings:
entry2 = relativesdata[i]
if entry2.state == 'fetus':
if == 'male':
text += "Brother: " else:
text += "Sister: "
text += getentrytext(entry2) + "\n"

So to add a sibling, you just need to edit the state.relativesdata appropriately, primarily you need to:

1. add id to siblings array for each slave.
2. Make very sure that the id you enter does exist in the relativesdata object, and has all expected variables defined. For mother/father, that can be -1 to say they're unknown. However, every id you reference in any entry in relativesdata has to have an associated object for that id that is valid.

As a note, for #4:

4. fresh reboot + running strive + looking at portrait folder in game

That's basically expected behavior with base game, it loads every single portrait into memory, and it's loading their uncompressed raw format which is significantly larger than their on-disk size.

Now that I re-read the other numbers, it actually seems your memory usage is basically in-line with my own. At least I assume #2 is an add-on to #1, and thus it's using around 300-400mb. Not sure why you're looking at system wide values though, much simpler to just look at Strive.exe. Working set numbers are the more useful ones, they show up in Physical Memory if you do properties on Strive.exe in process explorer.

If you want to reduce memory for loading of the portraits folder, that's why I added the delayed loading mod.

Re-download the mod, there's a new 1.0 from a few days ago when i released the delayed loading mod that specifically is compatible. so download it again, delete the old, and extract the new. Load up the game, and hit apply again.

Don't need to make a new save or anything.

The saves are in json, so you can open up the save file as json and edit it.  Ideally something that formats it into something more readable by a human.  You can go somewhere like  and paste the content of your save file into the left side, then click the arrow pointing to the right, now the right side is a more easily viewable/editable chunk. Including options to duplicate sections, which will be more reliable to not break the save. Once done, can click arrow to left to generate new json. This is more likely to generate a valid save the game will load, but again you can do something it doesn't expect and break things still.  If you run the game via a command prompt, or just look at the console prompt when loading, it might point to what chunk of the save it doesn't like, especially if you also examine the loading code.

For siblings, i'm not sure, you'd need to get an idea of how the game implements that via the code potentially, or at least look at how it's setup for emily/tisha maybe.

When you replaced with v1.0 (which I hope you did), did you extract it fresh, or did you just extract it over top the old one?  If you didn't extract it fresh to the mods folder (delete the old one first), then yeah that still wouldn't work, the v1.0 removes a file, if you just extract over you'd change basically nothing.

It does work with delayed portrait loading.

What stat are you looking at? committed memory? I mentioned that is fairly high for the game, but it's not actually memory that's allocated and in use, it's a sort of pre-allocation where something says "I think i'm going to want to use this, reserve it for me".  If you have virtual memory then this will never really impact actual memory usage.  Be better if it didn't do it, but it's not really much of an issue in my opinion.  More useful is to look at the private working set size and that's what I was referencing in my numbers.