There was a bug with how that was handled in the beta version I posted last weekend. I just posted a release version of the add-ons which should address this. I was able to do a near complete play through with no errors.
deviate
Recent community posts
This is a fantastic idea and if Aric is too busy I would be happy to work on it after I finish the hybrid work. I haven't looked at your code, but it should be fairly straight forward to create a system to craft and break down items. I can envision a system somewhat like WoW, where you can break down magic items for raw magic ingredients, and then use mundane items, magic ingredients and spells to craft new gear. Item values could be dynamically derived from your magic affinity stat and maybe even a new item crafting skill (one which slowly goes up as you use it). As for the GUI, that should be a simple matter of coping the alchemy panel and then making some modifications. Likely also want to add a new mansion upgrade path (maybe Forge).
Pallington, if you are ok with me expanded on your code I will look into it next week.
To clarify (and for anyone else reading) after you have enabled Aric's mod and it is working correctly you would want to insert the code into the game files within the main Strive game folder. Typically when I am writing any code for Strive I edit the game files directly so that I can see code changes immediately upon reloading the game. This of course means that if you go back into the mod options and disable the Aric mod you will lose all of your code changes (which is why I also keep a copy outside of strive). There are also some files which are not part of the base game which reside only in the roaming/strive/mod/AricsExpansion folder. I think the only file in there that is modified is expansion.gd.
So, for base game files put the code into the files located within the main game folder. For expansion only files, put them in the files in the roaming folder.
While it is possible that I missed a function or variable when compiling the list of code changes, that actually sounds like you did not add the code correctly to the game files. The function changerace is not one of my functions, but is called by one of the functions I modified.
The first thing to understand is that the files provided are not game files. They will not work by dropping them into the game folders. Rather the files are excerpts of code. The code has to be inserted into a game file manually. There is a header for each section of code which tells you what game file and whether you are adding new code or replacing existing code. New code can be added anywhere within a script. Though in general it is best practice to place global variables before functions, for simplicity you may want to just add all the new code at the bottom since it is just for your personal use. Modified code, however, must replace the existing variable/function otherwise you will get an error for multiple declarations.
Before making any edits make sure you have a backup of you game files, especially if you have made any other manual modifications.
I prepared them this way because the intent is to allow Aric to easily perform a code review and then add it into the base expansion. It is likely by the time this code is release ready he will be in the middle of working on v0.95.0 so this allows him to easily integrate my work into his current work.
Hope this helps.
I really like the variable to modify the on/off cycle lengths so I’ll implement that. I hesitate to use a percent of pregduration because I sometimes set that 90 or 180 days to make the game a bit more realistic so the on/off cycle would be way out of wack in such cases (same thing if the pregduration is really short).
You will notice when you dig into the code I tried to respect all of your expansion’s flags. I wanted the system to feel like a fully integrated part of your mod and not just a bolt-on afterthought. If you notice any I missed please let me know.
As for the person file I did not know that. I’ll read through the code tonight.
One question for you, what is the purpose of the perfectview variable? When displaying metric data I wanted to require a nurse for some information but also wanted to respect any mod variables which should override that requirement. But it looks like the perfectview variable is always set to true.
It’s an if else, meaning if >= 70% then full else if >= 50% half blood.
The idea of the full blood and half blood is these are your most pure blooded. Someone who is say 40% human, 30% elf and 30% gnome is not really half human but a mixed breed.
The percentages and values can be tweaked to some extent very easily and Aric very well may do so. Also, once the code is bug free I’d like to add more depth to the in-game descriptions. That is a lot of creative writing and a good deal of logic so it will wait until the mechanics work flawlessly.
The intent is for Aric to incorporate them into the expansion itself, but anyone is free to use the code. Each file corresponds to one of the add-ons (calling it that because they are not standalone and rely on aric’s expansion mod).
Within each file the code is broken down into sections by the file edited and then either one new code or modified code. Modified code replaces a variable or function while new code adds it.
If you don’t know what your doing you really should make sure you have a backup of your files before attempting anything (probably a good idea even if you do know what your doing). The files are formatted like this so it is easier for Aric (or anyone for that matter) to review exactly what is being changed and walk through the code.
EDIT 2: Here is the final release of the add-ons. Everything should be working correctly now. I believe all of the add-ons had at least some minor change to them.
EDIT: I was able to correct the issue with the father not being passed to the child so that is now working correctly. I also modified the ovulation cycle durations to use variables.
Aric,
Here are the add-ons I previously mentions. Please keep in mind this a beta and there are bugs in the hybrid/ovulation system. I have not yet done a complete play through. I will be doing that over the next week or two and will update the code with the needed bug fixes. I wanted to go ahead and post this so you guys could take a look and play with it. The code is not fully marked up yet. I will include the mark ups you requested with the final release.
All of the add-ons require the general code (file aricsexpansion_addon_general_beta). Changes are made to the person object so this will break previous game saves.
Standalone Add-ons
These should be fine by themselves. They are very simple modifications and should be relatively bug free.
- Housepet -
- adds a housepet job
- slave must have advanced brand for job
- provides stress relief for slaves resting in mansion
- random encounters with dogs increases obedience and loyalty (basically they are becoming more of a housepet)
- Kennel Sleep Location
- adds kennel as a sleep location
- no limit on number of slaves sleeping in kennel because they don't need much space
- random encounters with dogs increases obedience and loyalty (basically they are becoming more of a housepet)
- Body Cum Handling
- modifies how the expansion handles cum removal from body
- removal is based on bath rule (for body and face), pregnancy desire (for pussy) and fetishes
- slaves will want to remove cum from themselves unless they have a desire or fetish
- a decay will gradually reduce cum no matter what desire or fetish is, simulates minimum daily cleaning
- Unique Character Naked Images
- extends the expansion's naked image support to the unique characters
- have not completed a full play-through and tested all characters but it should work just fine
Dependent Add-on
This add-on is dependent on the main hybrid add-on
- Beast Breeding
- Simple mod that modifies the sex scene code to allow animals to attempt to impregnate slaves
- There are breeding restrictions based on race in the hybrid add-on which determines if it is possible to impregnate
Hybrid, Ovulation & Improvements Metrics
These three are too intertwined to use separately, so I included the code together. Please note there is a bug in the ovulation system where the father is not being set so offspring are not being generated correctly. I will identify the issue and correct it during my testing over the next week or two. Be warned you are likely going to run into bugs until then.
Hybrids
Hybrids are handled by generating a genealogy for each person. For generated persons (not born), the race is used to determine the genealogy. For born persons, the race is determined from genealogy which is inherited from the parents.
All races are separated into categories: Humanoid, Uncommon, Magic, Beast and Animals
- Humanoid : Human, Elf, Dark Elf, Drow, Orc, Gnome, Goblin, Demon and Dragonkin
- can breed with any humanoid race or beast race
- full blood is 70% or higher
- half blood is 50% or higher
- Uncommon : Fairy, Seraph, Dryad, Lamia, Harpy, Arachna, Nereid and Scylla
- can only breed with a member of their own race
- always full blooded
- Magic : Slime
- cannot breed - game description describes slimes as a magic mutation
- have highest possible bonuses since cannot breed
- always full blooded (idea is they are no longer whatever they previously were when turned into a slime)
- Beast : Centaur, Taurus, Beastkin and Halfkin
- can breed with any humanoid race or beast race
- can breed with corresponding animal (beastkin wolf can breed with dog, centaur can breed with horse, etc.)
- beastkin is 70% or higher of animal stock
- halfkin is 50% or higher of animal stock
- because genealogy is determined by taking half of each parent, breeding a beastkin and halfkin of same type will result in halfkin, breeding two of different type is likely to result in a mixed blood
- breeding a halfkin with the corresponding animal will produce a beastkin
- Animals : Bunny, Cat, Cow, Dog, Fox, Horse and Raccoon
- can only breed with corresponding beastkin/halfkin type
The idea here was to create a more complex way of breeding slaves and encourage the use of breeding strategies. I tried to apply some basic rules of genetics to give the system more flavor. The beastkin/halfkin are based off of in-game descriptions which suggest that at some point in the past mages experimented on people. I interpreted this as they blended animal stock with people.
Each race gives bonuses and/or negatives to certain stats. I tried to make the bonuses/negatives make sense. The value for each bonus/negative is based on a random range so each person will be a little bit more unique. Since these bonuses/negatives are applied to all persons, both born and generated, overall game balance should be maintained. Just some races will be more suited to certain tasks than others.
Ovulation System
The ovulation system completely replaces the current impregnation system. The vanilla function calls are repurposed to now use the new system, allowing for all previous code to continue to work.
There are two types of ovulation. The standard ovulation type ovulates for 8 days and then rests for 15. The extended type ovulates for 12 days then rests for 15. The ovulation type is determined by the person's race. Each time a male ejaculates into a female an entry is made in an array. This simulates semen remaining in the womb. After 5 days, semen begins to "die off" and is removed from the array. The amount of semen is based on the values used in the expansion for each balls size. The size of the penis determines how much of that semen initially enters the womb. The virility of the male at the time of ejaculation is also stored in the womb to be used later in determining if the semen reaches the egg. If is possible for the semen of multiple males to be simultaneously in the womb competing for the egg.
Each night the female is ovulating the womb array is looped over and each deposit is given a chance to impregnate the egg. This means that a single ejaculation could potential try to fertilize the egg 5-6 times. Also, if there is cum still in the pussy, each night a small percentage will enter into the womb, thus increasing the chances of reaching the egg.
To fertilize the egg, semen must first pass a check to determine if they reach it. Then, the egg must pass a check to determine if it is successfully fertilized. The chance of actually fertilizing the egg is based on:
- Male - penis size, balls size, base fertility, racial fertility bonus/negative, viritility, fertile trait
- Female - breast size, butt size, base fertility, racial fertility bonus/negative,, egg strength, fertile trait
Scores are determine for both the male and the female. The difficulty of this check is reduced by 25% if the player is a breeder
It is possible for multi-children births. In order for this to happen multiple eggs must be fertilized on the same night. There is also a limit on the number of possible children in a single birth based on the race type.
Improved Metrics
Displayed metrics and person information is changed in multiple locations to accommodate the hybrid and ovulation systems.
Notepad++ is really good for gd script. The language is tab sensitive so you have to use an editor that is very good at handling tabs, which Notepad++ is.
I finished all of the code for the add-ons I mentioned. I am going to do a partial play through and then upload what I have tomorrow. I'll then do a full play through to fully test the code over the next week or so.
Below are two screenshots of the genealogy (hybrid races). I basically had to completely rewrite it because I took short cuts when it was just my code. I think it turned out pretty cool. Genealogy is passed on to children and provides bonuses and/or negatives based on the primary race. The first screenshot shows the person's genealogy breakdown (full blooded is >= 70%). As an elf, the person is getting random bonuses to magic affinity, beauty, wit and charm (you can see the max wit and charm is higher than 100 in the second screenshot). They are also getting a negative to fertility (in most fiction elves are slow breeders).
I used the in-game descriptions and common myths as the criteria on what bonuses/negatives each race gets. For beauty, I used humans as the control since the game describes humans as the most common race (so beauty bonus is based on what humans would find attractive).
I'll provide a full description for all of the add-ons when I post tomorrow.
Looking forward to trying the updated version. By the way, if you are interested i have a lot of code that i always add to your mod to add some features i want that you are more than welcome to use. I have not updated some of it in a while, but I would be willing to this weekend if you are interested. Below is a quick summary of the code I have.
- modify pregnancy mechanic - replaces the standard mechanic with an ovulation system, supports multiple live births and egg clutches
- hybrid races - adds hybrid races. basically each person has a primary race which is stored in their race variable, then each has a genealogy array with the percent of each race type they have. the primary race is determined by the race percents. race percents are passed down from parents to children. if you have a nurse you can see the person's genealogy on the stats tab. i was planning to eventually add racial bonuses and slave market prices based on the genealogy but never did, though it would be fairly easy to do
- unique character naked image support - adds support of displaying the vanilla naked images for unique characters (Emily, Cali, Tisha, etc.) when they are naked
- cum drip mechanic - modifies the behavior of characters removing cum from their bodies during the end of day based on their fetishes, pregnancy desire, bath rule and the overall quantity of cum
- improved metrics display - some minor changes to metrics display to include random encounters and track animal sex encounters
- beastkin/halfkin wolf pregnancy by dog - allows beastkin/halfkin races to be impregnated by dog, when used with hybrid race modification allows for dogs and halfkin to produce a full beastkin offspring
- housepet job - adds new job of housepet, pet reduces stress of slaves sleeping in mansion, potential for random animal sex encounter which will increase characters lewdness, obedience and loyalty and reduce wit
- kennel sleep - allows having slaves sleep in kennel, created as immersion for housepets
I'm sorry but I don't remember where that one came from. It appeared to be caused by the oviposition fetish variable in the person object being NIL (error basically said it was comparing a STRING to a NIL in an IF statement) . But looking at person.gd I see you are defining that variable as "none" when it is created. So unless the code overwrites the "none" value with NIL at some point I'm not sure what the root cause might be. Is the value reset to NIL when you ask them about the fetish and they refuse to talk about it (the whole "Eww I can't talk about that")?
I also have to compliment you on how responsive you are to bugs. I'm a software developer and I'm not always this responsive to my users LOL. Anyways, great job.
yeah all of the resources tracked by the game (food, gold, etc.) are in resources in the globals file.
i noticed today if i bought an incubator then tried to use it i got a similar issue. however, buying the incubator, saving the game and then restarting seemed to fix it. again it seems like the object is not initialized (at least that is what i would guess with other languages I have worked with). gdscript is not the best language and the lack of error handling (along with other short comings) really makes proper code design impossible
The forum is not showing the screenshot I posted for #5.
The error :
SCRIPT ERROR: dailyFarm: Invalid get index 'level' (on base 'String').
At: user://mods/AricsExpansion/scripts/aricsexpansion/expansionfarm.gd:1249
SCRIPT ERROR: _on_end_pressed: Invalid operands 'String' and 'Nil' in operator '+'.
At: res://files/scripts/Mansion.gd:1282
Before getting into bug reports I wanted to say I love the mod. Adds a lot more depth to the game.
I have found some issues with the farm, specifically with snail breeding. I've been correcting them in my game as I come across them and wanted to make you aware.
1) In mansion.gd you are comparing an INT to a STRING when checking the consent. The call is made when you click the "Breed Snails" button on the cattle's panel. Below is the section of code:
func _on_snailbreeding_pressed():
if selectedfarmslave.farmexpanded.breeding.status != 'none':
selectedfarmslave.farmexpanded.breeding.status = 'none'
if selectedfarmslave.farmexpanded.breeding.partner != '-1':
selectedfarmslave.unassignPartner()
selectedfarmslave.farmexpanded.breeding.snails = get_node("MainScreen/mansion/farmpanel/slavefarminsepct/snailbreeding").is_pressed()
farminspect(selectedfarmslave)
2) It looks like you are not handling NIL values. This occurred when evaluating a person's fetishes, specifically eggs. The error popped up after setting cattle to be breed by snails. I resolved this by talking to them until they gave an answer on their preference of for the fetish.
3) The cook snails code overwrites the current value in globals.resources.food to the number of snail eggs cooked. In expansionfarm.gd (line 1267) changing the following corrected it:
globals.resources.food = snailresults CHANGED INTO globals.resources.food = globals.resources.food + snailresults
4) In expansionfarm.gd line 875 there is a variable which is not defined in globals. Removing the entire line corrects the issue.
var overstuffedmod = globals.expansion.settings.snailegglaboroverstuffedmod
5) When setting eggs to auto hatch the following error occurs on next day. Looks to be an issue with the incubators global variable being looped over. Since it would require knowing how the variable was initialized I was not able to resolve this one (just not wanting to dig that deep into the code).
I may have missed a few that I corrected last night but I think this is all of the errors I came across.