Skip to main content

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

ankmairdor

1,047
Posts
3
Topics
3
Followers
A member registered Feb 27, 2019

Recent community posts

(1 edit)

This game was last updated more than 5 years ago; 4 years ago if you count the last version of the Bugfix mod. Some mods are more than 7 years old and work mostly fine because the code they altered was never really updated.

During the Sex interactions, if a character has a body image assigned and you hover your mouse over the top of their portrait image in their status bar, then it will display their body image.

Mods generally don't touch the number of beds and the Patreon Supporters code provides an unlock on the number of beds.


The number of Meet and Sex interactions per day is determined by the main character's Endurance. You get +1 interactions for every odd(1,3,5,7) point of Endurance.

The Constants mod can be used to easily and safely increase the base amount of daily interactions.

If you want any other scaling, then you would need to edit the code in ".../files/scripts/Mansion.gd":

    globals.state.sexactions = ceil(globals.player.send/2.0) + variables.basesexactions
    globals.state.nonsexactions = ceil(globals.player.send/2.0) + variables.basenonsexactions
Simply change the text, save the file, and run the game to use your changes. If you mess up and the game crashes, then you can always copy the file in the Backup folder over the file you edited. Note: if you install any mods it will automatically reset all game files to use the Backup folder, which will erase all edits to game files.

The game has ceased development, but maybe someone will make a mod for it. Personally, I don't think magic caps need to be raised as magic is already incredibly overpowered. If you didn't know, the game already has two methods of increasing the magic cap for slaves by 2 each, though one of the methods is stupidly expensive.

Yes, there is a level limit. Unfortunately, no amount of save file editing can change this limit. The only way to raise this limit is to mod the game's code to use two variables instead of one variable to count character levels. Though you would need to level-up non-stop at least 300 times per second to reach the level limit before the Sun makes Earth uninhabitable in about 1 billion years, so maybe it's not worth worrying about yet.

(1 edit)

Quick tip, it helps if you reference a file name when referring to code so the other person doesn't need to hunt for it.

In the sex action files, the game uses 2 separate types of randomization; one is relatively easy to replace with a specific order, one is somewhat complicated to order. Changing temparray to const would have no meaningful impact on the behavior of the array, as it only prevents you from changing the type of the variable to something that is not an array; it does not prevent changes to the contents of the array. 


text += temparray[randi()%temparray.size()]

This selects a random line of text within temparray and appends it to the text return variable. To change it to a specific order, the simplest approach is to replace the random integer generator "randi()" with a persistent variable storing an incrementing integer. If we keep most of the function unchanged we get:

var count1 = 0
func initiate():
    ...
    text += temparray[count1%temparray.size()]
    count1 += 1
    ...

However,  many sex actions use multiple layers of appended text to the text return variable and reusing count1 for every layer can restrict the number of combinations of text generated if the layers have the same number of lines of text in temparray. To fix that specific case we can use conditional increments.

var count1 = 0
var count2
func initiate():
    ...
    text += temparray[count1%temparray.size()] 
    count1 += 1
    temparray.clear()
    ...
    text += temparray[count2%temparray.size()]
    if count1%temparray.size() == 0:
        count2 += 1
    ...

The second type of randomization uses specific characters to mark the beginning, separations, and end of the set of randomly selected text:

{^gently:tenderly:carefully}

The first two characters "{^" mark the beginning of the randomized text, the individual texts are separated with colons, and the end is marked with another brace. This sounds straightforward and you might be tempted convert split those three words into separate lines to be handled by a layer of temparray, but consider this line from 100caress.gd:

temparray += ["[name1] {^gently:tenderly:carefully} {^stroke:fondle:cuddle:massage}[s/1] and {^caress[es/1]:rub[s/1]} [names2] [body2]"]

This single line provides 24 unique combinations of randomized text.

The code for this process is found in func splitrand(text) of sexdescriptions.gd. If we made the incorrect assumption that there are a minimal number of cases where these random sets of text are identical, then it's possible to use dictionary to implement an incrementing integer strategy similar to above.

var dictCounting = {}
func splitrand(text):
    var pos = text.find("{^")
    while pos >= 0:
        var targetText = text.substr(pos, text.find("}", pos)+1 - pos)
        var splitText = targetText.substr(2, targetText.length()-3).split(":")
        text = text.replace(targetText, splitText[ dictCounting.get(targetText,0) % splitText.size() ])
        dictCounting[targetText] = dictCounting.get(targetText,0) + 1
        pos = text.find("{^", pos)
    return text

It's been a while since I've coded, but I'm mostly certain this would work as long as I didn't make any typos. While this is an inaccurate solution as the assumption was incorrect, it's by far the least effort solution.

If you want any more control over the ordering of text than this, then you will probably have to create an array of all possible combinations of text for each sex action and then use the incrementing integer technique to walk through them one at a time.


Edit: Please note that itch.io converted all tabs to spaces, which will wreck havoc in Godot if you try to copy and paste my code.

Character sex/gender is only updated when the character undergoes a change which would be likely to change it. These changes are pretty much all driven by the player, though using too many potions too quickly can cause random mutations.

If the game crashes anytime you add a new line, even a blank one, then your editor is adding the wrong set of newline characters (the invisible characters that cause editors to put text on a new line) whenever you press the Enter/Return key.

If you don't have programming experience with Python, then I recommend taking a free online interactive tutorial for Python. GDScript is designed as a beginner friendly version of Python with some LUA, but since Python is a primary programming language it gets some better tutorials. A few hours with a tutorial will make things a lot clearer.

For simple debugging I recommend the Debug mod: https://itch.io/t/1137280/debugmod-v10d
I tend to do most of my programming in Sublime Text 3 with Python syntax highlighting and use the Debug mod to find out what breaks.
Otherwise get the Godot Editor version 3.3. It is needed if you want to work with the GUI, though it won't be much help for making mods.

This is the largest portrait pack and still works: https://gitgud.io/sqs4p-maitainer/strive-image-pack

Links generally stop working when the file sharing sites stop hosting the files, so many of them no longer have any links unless someone uploads them again. I don't  really feel like going through the links and my files to see what is available.

There are currently no AI mods for Strive for Power, though someone recently made one for Strive: Conquest.
The improved random portraits mod( https://itch.io/t/984434/randomportraits-and-portrait-pack-editor-for-the-10-ver... ) randomly selects images based on the tags that are similar to the character descriptions.

60 courage is needed to prevent the 50-75% reduction of food during hunting. The condition includes a random condition related to courage, so a slave with 55 courage will receive the penalty about 32% of the time on average. A slave with 0 courage will receive the penalty about 45% of the time on average. Thus Random Number Generation(RNG) is the dominant reason for the difference in outcomes.

Any change is possible if you put in the time and effort.
The flavor text provided during sexual interactions is created by ".../files/scripts/sexdescriptions.gd". The system converts pronoun tags into the most specific generalization for the group. Though it was designed for a simpler conception of pronouns, it should be relatively easy to adapt if you have already managed the change in person.gd.

The core of the sex interactions is ".../files/scripts/newsexsystem.gd". Search the file for the trait name. You will probably need to add exceptions for the action codes for those actions since the original system was designed with phallic-based assumptions about which side was the "giver" or "taker".

If your file names are changing, then the most likely causes are a user mistake or failing hardware. The game does not have any functionality to rename files and I have not seen any mods that do this. The cause of your problem cannot be determined without a specific error message. If your operating system is not providing the error message, then the Debug mod (https://itch.io/t/1137280/debugmod-v10d) can be used to have the game provide error messages.

This community could use a new portrait pack. There are still those that prefer non-AI images, though most of the focus is currently on using AI to generate images as it can be difficult to find a proper variety and consistency of images for the improved random portraits, much less the expanded image sets for AricsExpansion.  Either way, most of the discussion happens on the Discord: https://itch.io/t/284398/discord

(1 edit)

Potions add toxicity to slaves, which can be monitored using the Mind Read spell. When that toxicity is above 60 you will have a chance of mutations, and need to wait until it dissipates. Each potion has it's own amount of toxicity and the only resource for knowing how much is the items.gd script in the game's files. These values range from 0 for Hair Dye to 50 for an Elixir of Clarity.

Not really certain what you are asking for in your second post. The age of a slave has almost no impact on them at all, so there are no age requirements nor patterns for Specializations. Children, as in offspring from a pregnant person, will not inherit a specialization from their parents so they will not start with one.

The game does not support having more than one starting slave. If you edit a save to get more than one, then only the top one in the list will be considered the starting slave. The save files are JSON formatted plain text, so they can be edited with any text editor, though I highly recommend using something that supports the JSON format, such as an online editor. It is possible to move slaves between saves, but care needs to be taken to ensure that the relevant data such as slave IDs do not conflict nor overlap.

https://itch.io/post/10344412

This generally happens when someone tries to run the game without extracting all of the files from the Zip archive, or when buggy or conflicting mods are applied.

The Debug mod can be used to diagnose the cause of the error, though it also changes the crashing behavior of the game, but it does not fix errors. https://itch.io/t/1137280/debugmod-v10d

If mods were applied, then the best solution is to delete the Strive program folder and extract a new copy.

In ".../Strive/mods/AricsExpansion/customScripts/expansionsettings.gd" you can change the value of capturedSelect to your preference. The comment above that variable explains the values. The Constants mod can be used to easily chance many of the values, but support for that type of value was never added to either mod.

Hopefully you have already figured it out, but this mod does not replace any files. It simply provides a new executable that helps with finding errors in the game.

Line 684 of ".../files/scripts/jobs&specs.gd".

"checkforevents" is a variable in the mansion that essentially indicates whether the mansion should attempt to check for and display a new event. In practice, this value is only true while an event is being displayed, but it will be blocked from checking for new events until the first frame where the current event is no longer visible on screen. Thus "func nextdayevents" will be repeatedly called until the end of the function is reached without triggering an event.

The player gives birth first, followed by slaves giving birth in the order that they appear in the mansion list, followed by scheduled events, followed by random events, and followed by main quest story scenes. This order of presenting events is always maintained, though not every type of event occurs in a single day.

A new system was being planned to handle events in a more centralized manner, but the person contributing that code abandoned it for whatever reason. So the new system was removed from operation and the game uses the old system for events.

If you are simply trying to add it as new behavior style to the Headgirl job, then you would simply need to add the role to the GUI, either through patching the Mansion.tscn or adding code to the "_ready" function of Mansion.gd to add the option to the OptionButton.

If you are trying to add it as a new job, then you need to add an entry to the jobdict in ".../files/scripts/jobs&specs.gd".

After either of those, you add your code to the end-of-day function.

You found one of the messier parts of the game's code. Godot provides the option to set custom getter and setter functions for variables in a class. In this case, the class "progress" is found in ".../files/globals.gd". 

var condition = 85 setget cond_set

This variable declaration establishes a custom setter function for "condition", so any attempt to assign a value to "condition" outside the setter function will call the setter function with the new value as the argument for the function. Simply changing "condition = -X" to "condition -= X" causes the resulting value of "condition" to be "condition*2-X".

In order to make the switch, you would need to remove the setter function and update every line in the game that assigns to "condition". Note that all changes to "condition" are multiplied by "conditionmod", which is 1.3, so you would need to include this multiplier in every line when updating them otherwise the value would be reduced.

It's fairly quick and easy for an experienced modder, but tricky for someone unfamiliar with all the parts. A core issue is that the portrait displays are implemented separately for each part of the game, which would require the modder to locate a few different sections of the GUI and the corresponding code.

AricsExpansion went a different route and added the pregnancy icon to the slave tooltips and information tabs, which is far fewer locations.

There are no records of past orgasms/ejaculations in the unmodded game, so your options are to either add some type of record or add the relevant code from "func checkrequest" to "func orgasm". The latter approach is probably simpler.

This game should never show anything like "emptymod" nor "10001110". Are you playing Strive: Conquest?

In Strive for Power, the mod is always named by the folder containing the mod, so only a mod in a folder named "emptymod" could appear with that name. A new folder named "New folder" in the mod folder with only sub-folder named "scripts", will appear as a mod named "New folder" not "emptymod".

You don't need to give them gold and food to get them as slaves, but you do if you want to progress along that quest line. The amounts are 50 gold and 50 food, which should be trivial amounts, especially since you have at least 7 days before Tisha appears after you invite Emily into your mansion.

For an easy start, I play as a Halfkin Wolf Hunter, put 2 points into agility, buy and equip Chain Armor, and then explore the Outskirts of Wimborn for bystanders to rescue from thugs. I use the rewards I get from the bystanders to buy bandages and fight until I have enough gold to buy full gear for my combat group and 1000 to 2000 spare gold. While Emily cannot be used as part of the combat group immediately after inviting her into your mansion, an experienced player can use a Meet interaction to boost her obedience and loyalty to the levels required for the combat party (the Bugfix mod can help clarify why people cannot join the combat party). Then I buy 3 supplies and use the "Rest and eat" option to remove all stress from the combat group before I assign jobs and end the first day.

The Mods menu has a button to "Open Mod Folder", which will attempt to open the folder for you.

The location of the mod folder on your computer is dependent upon which OS you are using and tend to be hidden by the OS. As stated in the Help section of the Mods menu:

Replace USER_NAME with the value appropriate for your computer.
Windows:  C:/Users/USER_NAME/AppData/Roaming/Strive/mods
MacOSX:  Users/USER_NAME/Library/Application Support/Strive/mods
Linux:  ~/.local/share/Strive/mods
Note, if you are using the itch.io launcher to run the game, then your mod folder will be inside the data folder for the launcher.

Also, the folder ".../files/scripts/mods/" in the Strive program folder is strictly for the Constants mod that comes with the game.

The only thing that has been known to force people to restart is when people make their edits directly to the game files and then they use the mod system to change the active mods, which resets all changes to the game files and erases their edits. As long as you are making your changes to files in the Mods folder you should be able to make progress forward. If you do get stuck on errors, feel free to hop on the Strive Discord and we can fix them quickly.

There's no records of mental breakdowns. It seems to me that the simplest way to implement this would be to add a timer variable to ".../files/scripts/person/person.gd". It could also be implemented as a new effect, but that system is a bit clunky so it would be more work to implement it correctly.

The names are fully set after line 50 of ".../files/scripts/characters/constructor", so anything between there and the return will generally work, except for unique characters and mods like AricsExpansion, which set some traits afterwards.

Guilds slaves are added in the function at 339 of ".../files/scripts/outside.gd".

Something like the "amnesiapoteffect" function on line 709 of ".../files/inventory.gd"?

Or something like the "_on_nickname_pressed" function on line 542 of ".../files/scripts/slave_tab.gd"?

The code that gives characters their surnames is line 98 of ".../files/scripts/characters/constructor.gd".
The code that assigns surnames to races is found in ".../files/scripts/characters/races.gd", such as line 12.
The code that assigns first names to characters is line 81 of ".../files/scripts/assets.gd".
The script for "names.gd" can be accessed anywhere with "globals.names" and the function can be accessed anywhere with "globals.assets".

The races of the captives can be accessed using "enemygroup.captured[ <index> ].race" if you know the index or use zero to reference the first captive, which is what is used on line 1931 of .../files/scripts/exploration.gd".

The number of steps to travel through a region is set as "length" in ".../files/scripts/explorationregions.gd".
The energy cost per step of exploration is subtracted on at line 863 of ".../files/scripts/exploration.gd".

By "bound tightly to prevent escape" I assume you mean 'A tied and bound [color=yellow]$sex[/color] looks at you with fear and hatred. ' on line 202 of ".../files/scripts/characters/descriptions.gd". Unfortunately, there's no good way to differentiate between enemies and captives. That's not to say that it isn't possible, but you would need to reference the "enemygroup.captured" array in the exploration script which needs to be referenced through the mansion script which needs to be referenced through the globals script. Then you would need to search the array for a person with an ID that matches the person for the description.

To release a captive during exploration you would need to call the function "freetrue" at line 2521 of ".../files/scripts/outside.gd" by pressing the Control button during exploration (even with the post battle menu), selecting the Captured Slaves tab, pressing the red circle button (which is a very lame button), and agree to free this person. No errors with this functionality in the current version as far as I know, though a prior version did have errors. Note that this still counts as using the rope so it might wear out and break, but otherwise you will get the rope back.

The functions for the String type have improved a lot as the Godot Engine has been updated. Many of the convenient functions in the current version weren't available when this game was written and the code wasn't updated to use newer functions. There are newer versions of Godot available now that have even better functions, but simply updating the game to be compatible with it could take a few days. String.find() reports the position of the first character of the matched string and is useful for string editing or searching for multiple instances of a string, though the latter has String.count() in the latest version of Godot. The "in" keyword is basically a sideways access to String.contains() even though that function wasn't included in the API until 4.0.

Strive for Power uses a beta version of Godot 3.2, so it has some of the features and fixes of 3.3. The Debug mod displays the Godot version in the terminal when the game starts. Usually I get the docs I want by googling something like "godot 3.2 string".

(2 edits)

No, this is an old error that was never fixed. The baby has a description problem because babies don't use the standard data. It can be fixed with any plain text editor.

After line 354( or anywhere inside of "dict"), of ".../mods/AricsExpansion/scripts/characters/description.gd", a new line needs to be added for feathers_and_fur. I just copied the normal entry from lower down in the file:

feathers_and_fur = '$His body is sparsely covered with [color=aqua][feathercolor] bird-like feathers[/color]. Beneath that is thick, soft [color=aqua]fur of [furcolor]', 

Although [furcolor] doesn't work because it was only added to the normal description function, it doesn't cause any errors.

Edit: another description line is missing from "dict" and can also be added next to the feathers_and_fur line.

fullfeathers = '$His body is covered with [color=aqua][feathercolor] feathers[/color]. ',

Since this change is made to the mod file, you will need to re-apply the mods to update the game files. No need to go through the full install process, simply press Apply and restart when done.

You are overthinking your problem and it has nothing to do with this mod. Version 1.0 of the unmodded game made the following changes to race names:

  • "Dark Elves" are renamed to "Tribal Elves"
  • "Drow" are renamed to "Dark Elves"

Dark Elves can be found in the Elven Grove.

(2 edits)

Please be sure to read the instructions for the Debug mod. It explicitly states that it is a manual patch and not installed using the mod system, so selecting it in the Mods menu will have no effect.

From what I can make out from the screenshot your "AricsExpansion" is spelled correctly, so you have some other issue.

Also, the mods are essentially always source code as the game is open source and the mod system works by editing the game's code to include the mod's code.

I agree with Aric's assessment, a wrong folder name makes the most sense as the cause, but I'd like to clarify some details.

Without the Debug Mod(https://itch.io/t/1137280/debugmod-v10d), most users won't get any debug console and some OS require launching the game through Command Prompt to get one.

Both the current mod system and AricsExpansion can handle non-direct folder locations for the mod so anything like ".../mods/.../AricsExpansion/" will work, but the folder containing "info.txt" must be named "AricsExpansion". The usual culprit is that GitHub names the Zip archive "AricsExpansion_main", which results in an incorrect folder name when extracted.

There was some files on the AricsExpansion Discord to fix it. This should be a working version:

https://mega.nz/file/aAhxQALY#fmEBqM195yMTaKLWxHuMvA6ccg2yNFFQhR5aveeKS_I