assuming you mean the main mod not mine.Excuse me I have a problem in the current version of the mod what happens is that pregnant women when I have sex the clothes completely disappear the girl's clothes and she stays naked all the time
assuming you mean the main mod not mine.Excuse me I have a problem in the current version of the mod what happens is that pregnant women when I have sex the clothes completely disappear the girl's clothes and she stays naked all the time
Updated my mod to improve the contract system.
The contract system now grows with you.
It looks at what you have unlocked to develop contracts based on that.
It builds real serums then uses those stats to determine the contract stats.
A Hint is now given at the end of the contract description of what was used to generate the serum stats.
I designed the code so if they add new traits in that it will work with those as well.
Reminder: it is unlikely this mod will work with the main mod.
You must be registered to see the links
Diconica where is your mod?
Thanks for replying to him Shane420
Why would they do that? Just start your own mod thread, and release it there. Your mod has nothing to do with this thread, and shouldn't be here.Nope, I was forced by f95zone admin to place my mod in this forum as well. Ever since they moved my post in here a while back I just went with it.
You might want to see the next updates code first.Diconica I like what you did with the contract generation; if I submitted a pull request with some changes (taking your idea and making the code more 'elegant') would you take a look at it? (I'm not very familiar with Git yet; in the meantime, please find my code attached.)
init -2 python:
#for testing purposes
def tlog(text):
f = open("traitlist.txt","a")
f.write(text)
f.close()
def exclude_test(text,tags):
if isinstance(tags,list):
if text in tags:
return 1
else:
if text == tags:
return 1
return 0
#We had to do this because some idiot used max as a variable!!! Moron
#def max_key(dict):
# m = 0
# k = None
# for key in dict:
# if dict[key] > m:
# m = dict[key]
# k = key
# return k
def generate_contract(contract_tier = 0):
t_mental = 0
t_physical = 0
t_sexual = 0
t_medical = 0
t_flaws = 0
t_attention = 0
serum_bases = []
base_slots = []
high_cap = None
available_traits = []
lts = list_of_traits
#this is used because Vren initialized it before the MC is initialized
try:
mc
except NameError:
lts = list_of_traits
else:
lts = list_of_traits + mc.business.blueprinted_traits
#Create a list of bases <= contract tier
for trait in lts:
if trait.tier <= contract_tier and exclude_test("Production",trait.exclude_tags):
serum_bases.append(trait)
base_slots.append(trait.slots)
#build list of available traits
#traits have to be below the level of contract and researched
for t in range (0,4):
if contract_tier >= t:
for trait in lts:
if trait.tier == t and trait.researched == True and trait.name != "High Capacity Design" and not exclude_test("Production",trait.exclude_tags):
available_traits.append(trait)
#High Cap
for trait in lts:
if trait.name == "High Capacity Design":
high_cap = trait
#select the actual level of serum base
ct = 0
if contract_tier > 0:
ct = renpy.random.randint(0,len(serum_bases)-1)
slots = serum_bases[ct].slots
#add bases aspects to aspects
t_mental = serum_bases[ct].mental_aspect
t_physical = serum_bases[ct].physical_aspect
t_sexual = serum_bases[ct].sexual_aspect
t_medical = serum_bases[ct].medical_aspect
t_flaws = serum_bases[ct].flaws_aspect
t_attention = serum_bases[ct].attention
#determine if High Capacity is used.
HC_Test = 0
if renpy.random.randint(1,7) < 4 and high_cap.researched:
HC_Test = 1
if HC_Test:
slots += 1
#include HC aspects
t_mental += high_cap.mental_aspect
t_physical += high_cap.physical_aspect
t_sexual += high_cap.sexual_aspect
t_medical += high_cap.medical_aspect
t_flaws += high_cap.flaws_aspect
t_attention += high_cap.attention
#Determine number of slots filled
fill = 1
if ct > 0 and HC_Test != 1: #tier >0 and no High Cap, may not use all slots
fill = renpy.random.randint(1,slots)
if HC_Test == 1: #if HC is used all slots are used
fill = slots
trait_names = "Min Traits:" #string of the tait names selected for trouble shooting purposes
#select traits to fill slots
if(len(available_traits)>0): #needed because you start with a base but no traits
Rn = 0
selected_traits = [] #these are traits already selected in serum
for x in range(0,fill):
while Rn in selected_traits:
Rn = renpy.random.randint(0,len(available_traits)-1)
selected_trait = available_traits[Rn]
selected_traits.append(Rn)
trait_names += " " + selected_trait.name
t_mental += selected_trait.mental_aspect
t_physical += selected_trait.physical_aspect
t_sexual += selected_trait.sexual_aspect
t_medical += selected_trait.medical_aspect
t_flaws += selected_trait.flaws_aspect
t_attention += selected_trait.attention
t_flaws += renpy.random.randint(0,(ct+1)*2)
#Some idiot use max as a variable
asp_dict = {"mental":int(t_medical),"physical":int(t_physical),"sexual":int(t_sexual),"medical":int(t_medical)}
primary_aspect = max(asp_dict,key=asp_dict.get)
#primary_aspect = max_key(asp_dict)
del asp_dict[primary_aspect]
#secondary_aspect = max_key(asp_dict)
secondary_aspect = max(asp_dict,key=asp_dict.get)
#These are shity and don't really match serums either
#Temp for now
contract_name, contract_description = get_contract_description(primary_aspect, secondary_aspect, contract_tier)
amount_desired = 5*(contract_tier+renpy.random.randint(1,3))*(contract_tier+renpy.random.randint(1,3))
contract_length = 3 + (renpy.random.randint(0,3+contract_tier) * renpy.random.randint(0,3+contract_tier))
#My change
contract_description += " " + trait_names
#end change
new_contract = Contract(contract_name, contract_description, contract_length,
mental_requirement = t_mental, physical_requirement = t_physical, sexual_requirement = t_sexual, medical_requirement = t_medical,
flaw_tolerance = t_flaws, attention_tolerance = t_attention, amount_desired = amount_desired)
return new_contract
def get_contract_description(primary_aspect, secondary_aspect, contract_tier):
contract_dict = {("mental","physical"):("Eltaro Co. Employee Boosters","Eltaro Co. is looking for a way to improve the general productivity of their employees by sharpening both body and mind."),
("Mental","sexual"):("Iris Cosmetics Makeup Additive","Having a beautiful mind is just as important as clear skin or perfect makeup. Iris cosmetics is looking for something to promote that feeling in their customers, and a little sex appeal always helps sell products."),
("mental","medical"):("Tresmon Pharmaceuticals Neuotropics","Tresmon Pharmaceuticals has a number of clients interested in thought-boosting drugs, and they're willing to pay top dollar for you to fill those orders for them."),
("physical","mental"):("Univerity Athletics Council Request","The university athletics council is looking for a way to improve the performance of their key athletes, on and off the field."),
("physical","sexual"):("Univerity Cheerleading Council Request","Attendance at recent sporting events has been down, and many are blaming the new \"respectful\" cheerleading uniforms. Cheer leadership is looking for a new workout enhancer, ideally one that will reduce resistance to a return to the old uniform."),
("physical","medical"):("Gary's Power Lifting Additive","Gary runs a local gym, and he's always on the look out for another performance enhancing drug to peddle to those looking for a quick path to fitness."),
("sexual","mental"):("Personal Business Supplies","A C-suite executive of a nearby business has a secretary they want to turn into a, quote, \"Cock drunk bimbo-slut\", and they're willing to pay good money for a large stock of serum to make it happen."),
("sexual","physical"):(str(strip_club.name),str(strip_club_owner) + " is interested in anything that will give his girls more sex appeal while they're stripping on stage. Bigger tits, toned bodies, whatever you think they need to get more twenties on the stage."),
("sexual","medical"):("A Questionable Contact","An individual using an obviously fake name has requested \"Anything that gets 'em horny, wet, and ready to suck dick.\". Their name might be fake, but their cash definitely isn't."),
("medical","mental"):("Tresmon Pharmaceuticals Research Materials","Tresmon Pharmaceuticals is intensely interested in our work on mind altering substances. They want a stock of their own to perform advanced R&D with."),
("medical","physical"):("Military Research Study","The military is interested in potential \"super soldier\" applications, and they're willing to work with civilian sources to obtain research material."),
("medical","sexual"):("Female Libedo Enhancements","Low libedo is a side effect for many different medications. Tresmon Pharmaceuticals is interested in an additive that might lessen or eliminate that problem from their existing drugs.")
}
r = contract_dict.get((primary_aspect,secondary_aspect))
contract_name = r[0]
contract_description = r[1]
return contract_name, contract_description
I think the admins just didn't want more than one thread of mods for the game. I don't know not going to get in a fight over it.Why would they do that? Just start your own mod thread, and release it there. Your mod has nothing to do with this thread, and shouldn't be here.
Maybe it is time I ask again.I think the admins just didn't want more than one thread of mods for the game. I don't know not going to get in a fight over it.
They also might have thought the to mods could be combined. But they are wrong if that was their thought. They aren't compatible. They have different purposes and conflicts in code.
script.rpy 406 original 48.1You might want to see the next updates code first.
There are a number of changes I haven't put up yet.
Some of the code issues are because Vren has made some poor choices.
Those include stuff like using max as a variable initializing stuff in a bad order.
I haven't been able to track down and get rid of the all the max variables.
That means using something like mk = max(asp_dict, key=asp_dict.get) can't be used without getting an error about max being an int and not callable.
Python:init -2 python: #for testing purposes def tlog(text): f = open("traitlist.txt","a") f.write(text) f.close() def exclude_test(text,tags): if isinstance(tags,list): if text in tags: return 1 else: if text == tags: return 1 return 0 #We had to do this because some idiot used max as a variable!!! Moron def max_key(dict): m = 0 k = None for key in dict: if dict[key] > m: m = dict[key] k = key return k def generate_contract(contract_tier = 0): t_mental = 0 t_physical = 0 t_sexual = 0 t_medical = 0 t_flaws = 0 t_attention = 0 serum_bases = [] base_slots = [] high_cap = None available_traits = [] lts = list_of_traits #this is used because Vren initialized it before the MC is initialized try: mc except NameError: lts = list_of_traits else: lts = list_of_traits + mc.business.blueprinted_traits #Create a list of bases <= contract tier for trait in lts: if trait.tier <= contract_tier and exclude_test("Production",trait.exclude_tags): serum_bases.append(trait) base_slots.append(trait.slots) #build list of available traits #traits have to be below the level of contract and researched for t in range (0,4): if contract_tier >= t: for trait in lts: if trait.tier == t and trait.researched == True and trait.name != "High Capacity Design" and not exclude_test("Production",trait.exclude_tags): available_traits.append(trait) #High Cap for trait in lts: if trait.name == "High Capacity Design": high_cap = trait #select the actual level of serum base ct = 0 if contract_tier > 0: ct = renpy.random.randint(0,len(serum_bases)-1) slots = serum_bases[ct].slots #add bases aspects to aspects t_mental = serum_bases[ct].mental_aspect t_physical = serum_bases[ct].physical_aspect t_sexual = serum_bases[ct].sexual_aspect t_medical = serum_bases[ct].medical_aspect t_flaws = serum_bases[ct].flaws_aspect t_attention = serum_bases[ct].attention #determine if High Capacity is used. HC_Test = 0 if renpy.random.randint(1,7) < 4 and high_cap.researched: HC_Test = 1 if HC_Test: slots += 1 #include HC aspects t_mental += high_cap.mental_aspect t_physical += high_cap.physical_aspect t_sexual += high_cap.sexual_aspect t_medical += high_cap.medical_aspect t_flaws += high_cap.flaws_aspect t_attention += high_cap.attention #Determine number of slots filled fill = 1 if ct > 0 and HC_Test != 1: #tier >0 and no High Cap, may not use all slots fill = renpy.random.randint(1,slots) if HC_Test == 1: #if HC is used all slots are used fill = slots trait_names = "Min Traits:" #string of the tait names selected for trouble shooting purposes #select traits to fill slots if(len(available_traits)>0): #needed because you start with a base but no traits Rn = 0 selected_traits = [] #these are traits already selected in serum for x in range(0,fill): while Rn in selected_traits: Rn = renpy.random.randint(0,len(available_traits)-1) selected_trait = available_traits[Rn] selected_traits.append(Rn) trait_names += " " + selected_trait.name t_mental += selected_trait.mental_aspect t_physical += selected_trait.physical_aspect t_sexual += selected_trait.sexual_aspect t_medical += selected_trait.medical_aspect t_flaws += selected_trait.flaws_aspect t_attention += selected_trait.attention t_flaws += renpy.random.randint(0,(ct+1)*2) #Some idiot use max as a variable asp_dict = {"mental":int(t_medical),"physical":int(t_physical),"sexual":int(t_sexual),"medical":int(t_medical)} primary_aspect = max_key(asp_dict) del asp_dict[primary_aspect] secondary_aspect = max_key(asp_dict) #These are shity and don't really match serums either #Temp for now contract_name, contract_description = get_contract_description(primary_aspect, secondary_aspect, contract_tier) amount_desired = 5*(contract_tier+renpy.random.randint(1,3))*(contract_tier+renpy.random.randint(1,3)) contract_length = 3 + (renpy.random.randint(0,3+contract_tier) * renpy.random.randint(0,3+contract_tier)) #My change contract_description += " " + trait_names #end change new_contract = Contract(contract_name, contract_description, contract_length, mental_requirement = t_mental, physical_requirement = t_physical, sexual_requirement = t_sexual, medical_requirement = t_medical, flaw_tolerance = t_flaws, attention_tolerance = t_attention, amount_desired = amount_desired) return new_contract def get_contract_description(primary_aspect, secondary_aspect, contract_tier): contract_dict = {("mental","physical"):("Eltaro Co. Employee Boosters","Eltaro Co. is looking for a way to improve the general productivity of their employees by sharpening both body and mind."), ("Mental","sexual"):("Iris Cosmetics Makeup Additive","Having a beautiful mind is just as important as clear skin or perfect makeup. Iris cosmetics is looking for something to promote that feeling in their customers, and a little sex appeal always helps sell products."), ("mental","medical"):("Tresmon Pharmaceuticals Neuotropics","Tresmon Pharmaceuticals has a number of clients interested in thought-boosting drugs, and they're willing to pay top dollar for you to fill those orders for them."), ("physical","mental"):("Univerity Athletics Council Request","The university athletics council is looking for a way to improve the performance of their key athletes, on and off the field."), ("physical","sexual"):("Univerity Cheerleading Council Request","Attendance at recent sporting events has been down, and many are blaming the new \"respectful\" cheerleading uniforms. Cheer leadership is looking for a new workout enhancer, ideally one that will reduce resistance to a return to the old uniform."), ("physical","medical"):("Gary's Power Lifting Additive","Gary runs a local gym, and he's always on the look out for another performance enhancing drug to peddle to those looking for a quick path to fitness."), ("sexual","mental"):("Personal Business Supplies","A C-suite executive of a nearby business has a secretary they want to turn into a, quote, \"Cock drunk bimbo-slut\", and they're willing to pay good money for a large stock of serum to make it happen."), ("sexual","physical"):(str(strip_club.name),str(strip_club_owner) + " is interested in anything that will give his girls more sex appeal while they're stripping on stage. Bigger tits, toned bodies, whatever you think they need to get more twenties on the stage."), ("sexual","medical"):("A Questionable Contact","An individual using an obviously fake name has requested \"Anything that gets 'em horny, wet, and ready to suck dick.\". Their name might be fake, but their cash definitely isn't."), ("medical","mental"):("Tresmon Pharmaceuticals Research Materials","Tresmon Pharmaceuticals is intensely interested in our work on mind altering substances. They want a stock of their own to perform advanced R&D with."), ("medical","physical"):("Military Research Study","The military is interested in potential \"super soldier\" applications, and they're willing to work with civilian sources to obtain research material."), ("medical","sexual"):("Female Libedo Enhancements","Low libedo is a side effect for many different medications. Tresmon Pharmaceuticals is interested in an additive that might lessen or eliminate that problem from their existing drugs.") } r = contract_dict.get((primary_aspect,secondary_aspect)) contract_name = r[0] contract_description = r[1] return contract_name, contract_description
dionica also, you can likely usescript.rpy 406 original 48.1
$ max = len(mc.business.mandatory_crises_list)
line 470
$ max = len(mc.business.mandatory_morning_crises_list)
business.rpy
def get_max_employee_slut(self):
max = -1 #Set to -1 for an empty business, all calls should require at least sluttiness 0
for person in self.get_employee_list():
if person.sluttiness > max:
max = person.sluttiness
return max
that is the only places I see it used as a variable
__builtins__.max
Yep, found those. Thanks.script.rpy 406 original 48.1
$ max = len(mc.business.mandatory_crises_list)
line 470
$ max = len(mc.business.mandatory_morning_crises_list)
business.rpy
def get_max_employee_slut(self):
max = -1 #Set to -1 for an empty business, all calls should require at least sluttiness 0
for person in self.get_employee_list():
if person.sluttiness > max:
max = person.sluttiness
return max
that is the only places I see it used as a variable
Thanks also. I think I'll end up using the function I made. It makes the code a little more clear what is going on.dionica also, you can likely useif you don't want to mess with those.Python:__builtins__.max
My mod or the primary mod?At this point I think this mod and the bug fixes should've be part of the original game as one single release...
Just saying...
Do have to install the unofficial bug fix to be able to use your mod?My mod or the primary mod?
NopeDo have to install the unofficial bug fix to be able to use your mod?
If their happiness is dropping consistently then I don't think a serum will help you. Unless that's been fixed, it's an opinion they constantly do (Like wearing skimpy clothes when they actually hate dressing like that)Sorry if this is the wrong place but which serum do I have to make for the sister's Stephanie and Ashley to make them happy? I've tried a bunch and keep not making the correct one