News:

Please request registration email again and then check your "Spam" folder

Former www.henthighschool.com

[Resources] Chris' Job Mod Turbo

Started by Jman, Jul 08, 2024, 09:03 PM

Previous topic - Next topic

JmanTopic starter

I took my onetime changes to Chris' Job Mod (i.e. the Bonanza version of it), along with a few extras, and packaged them into a 'Job Mod Turbo'.

Download:

2.3:
Mediafire

2.1 (without the job stat check):
Mediafire
PixelDrain



This is for BK 0.3, although I think it should also work for 0.2. If it does not, tell me.

Features:
Basically, everything that can vary about jobs and different sex acts can vary much, much more. The Job Mod comparison document still generally holds: waiting tables is easy, dancers entertain crowds, masseuses squeeze single customers, being a geisha is efficient but difficult.

Jobs are no longer interchangeable and have more specialisation. Some jobs are better than others, overall and in specific ways, the general tier list in ascending order is waitress < dancer < masseuse < geisha. Additionally, jobs need to be unlocked the same way as whoring in vanilla.

Some sex acts are better than others, with service < sex < anal < fetish. The chance of bi or group sex happening is no longer suppressed as much as in vanilla. The stat requirements for unlocking sex acts are somewhat higher (up to 150 obedience instead of 35 for fetish).

Jobs scale customers as follows: masseuse = whore, waitress = geisha = 2*whore and dancer = 3*whore. Vanilla was just that jobs serve twice as many customers as whores, provided the relevant stats + constitution were identical.

Different jobs and sex acts have innate satisfaction modifiers,  from -6 for geisha/fetish to +3 for waiting tables. They also take different amounts of energy to perform, e.g. fetish acts generally pay thrice as much as sex, but take 1.8 times the energy and have the aforementioned performance malus.

The differences between a good performance and a bad performance are much more pronounced, netting considerably more/less tips and XP. Customers have a stronger base preference for vanilla sex and dancers over other choices.

Bad whores get paid significantly less than bad jobgirls and the reverse for pro sluts vs top bunnygirls. There's also the 'unentertained' malus for whore customers who didn't get to have fun before hitting the sack that's about the same as in the original CJM.

Security events are somewhat less random: thieves are more common than monsters, brawls occur more frequently than assassination attempts and raids show up more often than full-blown sieges of the brothel.
And with strange aeons even death may die...

JmanTopic starter

Of course, since Bonanza was much more comprehensive and BK has moved on in the meantime, I have no idea how well this thing works. Probably not very. :'(

So consider this a beta at the moment. If there's interest and feedback, the mod can change and grow. If not, well, maybe someone can use it for inspiration.
And with strange aeons even death may die...

DarkFire

Avast doesn't let me download it, but the Headhunter mod gives no problem.

JmanTopic starter

Well, IDK what Mediafire is up to now, but have a mirror.
And with strange aeons even death may die...

DarkFire

Got this error while saving with the mod:

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00gamemenu.rpy", line 170, in script
    $ ui.interact()
  File "renpy/common/00gamemenu.rpy", line 170, in <module>
    $ ui.interact()
  File "renpy/common/00action_file.rpy", line 397, in __call__
    renpy.save(fn, extra_info=save_name)
PicklingError: Can't pickle <function will_do_new at 0x000000000ed97820>: it's not the same object as store.will_do_new

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "renpy/common/00gamemenu.rpy", line 170, in script
    $ ui.interact()
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\ast.py", line 1138, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\python.py", line 1122, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/00gamemenu.rpy", line 170, in <module>
    $ ui.interact()
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\core.py", line 3579, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\core.py", line 4540, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\screen.py", line 770, in event
    rv = self.child.event(ev, x, y, st)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1401, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 279, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\layout.py", line 1177, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\behavior.py", line 1138, in event
    return handle_click(self.clicked)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\behavior.py", line 1071, in handle_click
    rv = run(action)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\behavior.py", line 368, in run
    new_rv = run(i, *args, **kwargs)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\display\behavior.py", line 375, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_file.rpy", line 397, in __call__
    renpy.save(fn, extra_info=save_name)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\loadsave.py", line 427, in save
    reraise(t, e, tb)
  File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 444, in raise_
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\loadsave.py", line 413, in save
    dump((roots, renpy.game.log), logf)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\compat\pickle.py", line 103, in dump
    pickle.dump(o, f, pickle.HIGHEST_PROTOCOL if highest else PROTOCOL)
PicklingError: Can't pickle <function will_do_new at 0x000000000ed97820>: it's not the same object as store.will_do_new

Windows-10-10.0.19045 AMD64
Ren'Py 8.1.1.23060707
Brothel King 0.3t v230923
Tue Jul  9 00:34:45 2024

DarkFire

Also does the stats check even when the mod is deactivated;

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/BKmain.rpy", line 1173, in script
    $ girl.set_job(r)
  File "game/BKmain.rpy", line 1173, in <module>
    $ girl.set_job(r)
  File "game/BKgirlclass.rpy", line 1777, in set_job
    if self.will_do(job):
  File "game/Mods/ChrisJobMod/ChrisJobMod.rpy", line 199, in will_do_new
    if self.get_stat("obedience") + self.get_stat("charm") >= (waitress_test / cheat_modifier["stats"]):
NameError: name 'waitress_test' is not defined

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/BKmain.rpy", line 1173, in script
    $ girl.set_job(r)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\ast.py", line 1138, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\Users\Dani\Desktop\Juegos\Brothel_King-0.3t\Brothel_King-pc\renpy\python.py", line 1122, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "game/BKmain.rpy", line 1173, in <module>
    $ girl.set_job(r)
  File "game/BKgirlclass.rpy", line 1777, in set_job
    if self.will_do(job):
  File "game/Mods/ChrisJobMod/ChrisJobMod.rpy", line 199, in will_do_new
    if self.get_stat("obedience") + self.get_stat("charm") >= (waitress_test / cheat_modifier["stats"]):
NameError: name 'waitress_test' is not defined

Windows-10-10.0.19045 AMD64
Ren'Py 8.1.1.23060707
Brothel King 0.3t v230923
Tue Jul  9 00:43:42 2024

JmanTopic starter

#6
Yeah, it looks like I can't change functions dynamically like that. For the time being, it seems this will be something that can't be done without some extra code from Goldo.



Edit: Uploaded a 2.1 version without enforced job minimums.

I also see that Goldo's mod activation and deactivation system works as flawlessly as always. :'(



Edit2: Perhaps found a way to bypass the pickling issue. Left 2.1 up for people who don't care for that check. Tell me how it works now.

Also, since mod deactivation seems FUBAR, you can do it manually via consoling 'call chris_jobmod_revert()'.
And with strange aeons even death may die...

DarkFire

You'll need to lower the limit for whoring for the Papa storyline:


JmanTopic starter

#8
Do I? What are her sex skills?



Edit: Honestly, I think I need to raise the limits, since vanilla BK starts with rank C girls who have 50 max stat value, whereas Bonanza started with rank F girls who had 25. So the progression is 50 -> 100 -> Papa Freak, whereas previously it was 25 -> 50 (100 for rank D, who were very pricy to buy and could not be ranked up to in chapter 2, only bought).

I wonder if 500 is too much for whores? You can get 400 from maxing Libido, Obedience and all four sex stats, and some amount from food and items. Not sure how much, since the food stacking exploit was fixed.
And with strange aeons even death may die...

DarkFire

Quote from: Jman on Jul 10, 2024, 03:50 AMDo I? What are her sex skills?



Edit: Honestly, I think I need to raise the limits, since vanilla BK starts with rank C girls who have 50 max stat value, whereas Bonanza started with rank F girls who had 25. So the progression is 50 -> 100 -> Papa Freak, whereas previously it was 25 -> 50 (100 for rank D, who were very pricy to buy and could not be ranked up to in chapter 2, only bought).

I wonder if 500 is too much for whores? You can get 400 from maxing Libido, Obedience and all four sex stats, and some amount from food and items. Not sure how much, since the food stacking exploit was fixed.

Okay, let's see if i understand the math.
Libido and Obidence is 220 in total.
Sex skills is 43.
Total stats are 263. And need total 500 stats to advance to the next part of the story?
Imo the grinding is going to be long, also the text just says "libido/obidience too low" making no reference to sex skills.


JmanTopic starter

Doesn't it say "Libido/Obedience/Sex skills too low"? Granted, Goldo's new notifications flash past pretty quickly.

Also, remember, this came from Bonanza, where everything was more complex than it needed to be. ;D  It's not just Libido + Obedience + all sex skills, oh no. It's Libido + Obedience + [average of the four sex skills] + [maximum of the four sex skills].

So you can get a cool 400 from maxing these 6. Some 20-30 more from strategically picked traits, as in your image. 30+10 from higher-end dress&panties. Another 25-30 from libido and obedience food. And finally +5 or +10 from a ring. So, possible if you squeeze everything to the max, but no bueno otherwise.

Perhaps 450 would be more reasonable?
And with strange aeons even death may die...

DarkFire

I actually played Bonanza so i understand.

Quote from: Jman on Jul 10, 2024, 03:57 PMDoesn't it say "Libido/Obedience/Sex skills too low"?



Quote from: Jman on Jul 10, 2024, 03:57 PMAlso, remember, this came from Bonanza, where everything was more complex than it needed to be. ;D  It's not just Libido + Obedience + all sex skills, oh no. It's Libido + Obedience + [average of the four sex skills] + [maximum of the four sex skills].

Okay, so the actual math is 110+110+10,75+¿20?= 250,75. That or I don't understand "[maximum of the four sex skills]"
So yes, maybe lower it a bit would be helpful.

JmanTopic starter

#12
Quote from: DarkFire on Jul 10, 2024, 04:20 PMI actually played Bonanza so i understand.
;D



If you're seeing that, the mod hasn't activated correctly. Console 'call chris_jobmod_init()' to make sure.

Your numbers seem right. But she kinda sucks as a whore. If I were Papa Freak, I wouldn't take her. :P
And with strange aeons even death may die...

DarkFire

#13
Console call it and was allowed to whore, tried to another and included the sex skills missing.

Edit: Each time i open the game i need to update the mod to make it work correctly.

Goldo

Quote from: Jman on Jul 08, 2024, 11:07 PMYeah, it looks like I can't change functions dynamically like that. For the time being, it seems this will be something that can't be done without some extra code from Goldo.



Edit: Uploaded a 2.1 version without enforced job minimums.

I also see that Goldo's mod activation and deactivation system works as flawlessly as always. :'(



Edit2: Perhaps found a way to bypass the pickling issue. Left 2.1 up for people who don't care for that check. Tell me how it works now.

Also, since mod deactivation seems FUBAR, you can do it manually via consoling 'call chris_jobmod_revert()'.

Do you know what's causing problems with mod activation and deactivation? When I implemented that, I had no mods to serve as templates, so I couldn't really test it extensively. I also know more about loading games now so maybe I can improve things.
Maker of BK. Looking for the latest patch for BK 0.2? The link doesn't change, so bookmark it!