Mod Ren'Py Space Journey - Gameplay Mod for SJx2.00.010c & d - Version 2.0b

5.00 star(s) 1 Vote

Chrisdarock19

Well-Known Member
Oct 15, 2018
1,241
1,748
The main thing here would be save game compatibility. I've added an extra slot before, back before shells had their own slot, so it's certainly possible, but as I noted, it'd break compatibility with future versions.

There could be a way to track extra slots via a different routine, but it'd be a bit messy, and would disappear in vanilla SJx.
Thanks for the answer. Keep up the great work with this mod.
 
  • Like
Reactions: OhWee

Chrisdarock19

Well-Known Member
Oct 15, 2018
1,241
1,748
OhWee said:
13) A new 'G' type shell has been added for sexbots, essentially a variation of the Infiltrator shell without the extra 'military' addons.
Is this modified infiltrator shell still in your mod?? As I thought the current G type is for Golden Seductress.
Sorry, did you answer the above from this link https://f95zone.to/threads/space-jo...-sj1-50-15-version-1-5c2.180608/post-15894356
You don't have permission to view the spoiler content. Log in or register now.
Trying to get 10 different shells in my arcade. I could use the default model, but as it has no shell, not sure that would count for the "Multi-Shell Income Bonus"... The infiltrator shell with just the skin would be perfect.
 

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
Chrisdarock19

I haven't re-implemented the 'goth' shell in v1.5 of my mod, mainly because you can now buld infiltrator shells (eventually)...

I could add the 'goth' shell, it'd be easy enough to pick a different letter, but atm I'm trying to maintain compatability with future SJx versions, should someone want to transition back to 'vanilla' SJx.

---

Y'all

Attached is a 'prerelease' version of v1.5d of my mod, for you brave betatesters! It's a 'prerelease' as I'm still testing a few changes. No readme included, will include updated readme once this prerelease is playtested a bit.

Main changes:
- The 'popup dropdown menus' on the Maintenance screen, also 'in cargo' icons. Note that Torp loadouts, etc. haven't been changed over to the 'popup dropdown menus' yet... I also adjusted my code, so hopefully I fixed everything...

- You'll get a tailored message about which outfits Nimhe hasn't worn yet when giving her facials in the lab when you click the 'hint' button in the PDA quest log.

- You'll get a 'thinking' tally of how many tons of bio activators, etc. you still need to deliver to Krogneath to earn his favor (100 - delivered so far) when talking to him during the day in his ship at the pirate outpost.

- Hopefully fixed the issue oh45 brought up r.e. missing 'oldbotIQ' variable. Let me know!

Enjoy!
:cool:
 
Last edited:

Incarnax

Newbie
May 3, 2018
19
13
I think Bots are in a pretty good state. Yeah, it's a grind, but that's kinda by design, no?

If you are looking for more ideas, you could implement stuff that y.v. started but didn't finish. For example:
  • 810 : screen spacebar_dancers_scr :: Never-called screen that shows the currenct schedule of dancers at the Illitari Space Bar. Once I created a headshot image for Ylyee and made some minor code edits, it's handy so I don't have to remember which day she starts appearing and what hour she's on.
  • 715 : JOB_Uncrate :: Unimplemented job for BB-2 so he actually does something around the ship. Had to create one or two images so BB-2 could function in the Daily Orders screen and a bunch of coding. In my custom SJX he starts the game at TEC 1, eventually unlocks the Uncrate job, makes a nuisance of himself unpacking crates until he levels up to TEC 5, and then I can buy him a Hyper Wrench so he can be 'promoted' to the job Ship Repairs.
  • Item/Part LVL attribute :: Pretty sure this was intended as a way to limit items and item-related content from 'appearing' before you were at an appropriate Captain level, and possibly further along in the game. It is either mostly or completely unenforced / unimplemented though.
BTW, why are you bothering with a global() for old IQ? The function already has an attr dict parameter. Use it? attr.get("oldIQ", 120) or something.
 
  • Like
Reactions: Chrisdarock19

oh45

Member
Jul 1, 2017
108
187
- Hopefully fixed the issue oh45 brought up r.e. missing 'oldbotIQ' variable. Let me know!
:cool:
Since this one happens randomly, it'll be at best a "seems better now" as long as I see no new uncaught exceptions when collecting from debris hexes. Regardless, I'll update this chat once I try it out enough.
 
  • Like
Reactions: OhWee

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
I think Bots are in a pretty good state. Yeah, it's a grind, but that's kinda by design, no?

If you are looking for more ideas, you could implement stuff that y.v. started but didn't finish. For example:
  • 810 : screen spacebar_dancers_scr :: Never-called screen that shows the currenct schedule of dancers at the Illitari Space Bar. Once I created a headshot image for Ylyee and made some minor code edits, it's handy so I don't have to remember which day she starts appearing and what hour she's on.
  • 715 : JOB_Uncrate :: Unimplemented job for BB-2 so he actually does something around the ship. Had to create one or two images so BB-2 could function in the Daily Orders screen and a bunch of coding. In my custom SJX he starts the game at TEC 1, eventually unlocks the Uncrate job, makes a nuisance of himself unpacking crates until he levels up to TEC 5, and then I can buy him a Hyper Wrench so he can be 'promoted' to the job Ship Repairs.
  • Item/Part LVL attribute :: Pretty sure this was intended as a way to limit items and item-related content from 'appearing' before you were at an appropriate Captain level, and possibly further along in the game. It is either mostly or completely unenforced / unimplemented though.
BTW, why are you bothering with a global() for old IQ? The function already has an attr dict parameter. Use it? attr.get("oldIQ", 120) or something.
I'm deliberately staying away from modifying base bot values/attributes (i.e. adding new ones not in vanilla SJx), as this has issues with multiverse pod packaging. As for 'why globals()', well that's my usual fallback solution for when using 'just the variable' isn't carrying over to the new screen/def.

oldbotIQ is a new variable that only supposed to apply when my mod is installed, as are a number of other variables. I want to make sure that people can switch back to 'vanilla' SJx and still have everything work as intended.

Same with the extra sort options. Note that the sort options maintain their 'state' in my mod, but in vanilla SJx the 'default state' of the sort options on the part screen is reset every time you enter the screen.

So I'm trying really hard this time to give existing saves the best chance of working with SJx 2.0 when it drops. yv0751 is making an effort to start maintaining save compatibility between versions, although he's making a number of changes under the hood for SJx 2.0 as I understand, so v1.50 saves might not be compatible in any case, I guess we'll see.

As for the other ideas you suggested, more stuff to ponder... Being able to check the schedule for the dancers would be nice.

I currently have BB-2 on call for torpedo reloads if Khelara is 'off shift'. There's a quick message that pops up once each day if you click the torpedo loadout/slots on the ship navigation or star system screens, where either Khelara or BB-2 respond... this is mostly for role-playing flavor.

I always did wonder about that 'LVL' stat in the part/item listings. As you mentioned, I figured it had something to do with random item selection for traders, etc. but I haven't dug very far into those routines to see if there were 'if level requirements met, add this part to mix' checks.
 
Last edited:

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
Since this one happens randomly, it'll be at best a "seems better now" as long as I see no new uncaught exceptions when collecting from debris hexes. Regardless, I'll update this chat once I try it out enough.
What I did is add:
$ oldbotIQ = 0

To the beginning of 762_sexbot_templates.

That file sets up the random chances for various shells, etc. to be used when assembling bot containers found via combat drops and such. So hopefully this resolves the issue...

Since newly assembled bots don't have to worry about upgraded cortexes, this should solve the issue, as the other associated code I added does a 'if oldbotIQ == 0 use 120 as the baseline value for randomizing IQ, othewise use oldbotIQ as the baseline to start from'. Me and my coding silliness!
 

Incarnax

Newbie
May 3, 2018
19
13
While that's laudable, I don't think you understood what I meant.
You don't have permission to view the spoiler content. Log in or register now.
Some details of my code might differ from yours, but it's the same thing without a global variable and if/else. rollNew() only uses specific, known values of its attr param.
 
  • Thinking Face
Reactions: OhWee

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
What I really want to see is Dee with a pregnant Belly and then with a black baby from Martin
While that's laudable, I don't think you understood what I meant.
You don't have permission to view the spoiler content. Log in or register now.
Some details of my code might differ from yours, but it's the same thing without a global variable and if/else. rollNew() only uses specific, known values of its attr param.
I'll look into this later.

I'd be very much interested in hearing about what else you have going on in your personal mod, if you'd like to discuss this!

Also, it's nice to interact with someone else (besides yv0751) that has a pretty good understanding of what's going on under the hood In SJx. While I've become more adept at coding with Ren'Py, Ren'py/Python is still not my jam, and I end up tweaking things via a lot of trial and error...

I certainly am not claiming a monopoly on good ideas here, I'm just tweaking stuff as I go along, and trying to reduce the number of clicks to do stuff whenever I can, either by showing more relevant info when possible, and also by reducing the number of steps to do stuff.

One thing that I'd like to figure out/see is a method to apply new likes when traits are being upgraded via cubes that relate to said likes, and adjust the underlying skill value accordingly. Swapping out the traits is easy enough, but usually a 'like' also has an associated skill talent boost.

I've been picking my battles, as my intention is to get back to work on my own project soon. I wanted to get as much stuff as I can into this mod now for SJx v1.50, so that yv0751 can run with the ideas that he really likes in the next SJx version (V2). As much as I enjoy tinkering around with SJx, I have my own ambitions...

One other thing on my 'to do' list has to do with the 'smart' function as it relates to how I'm listing required quantities for cargo missions. It's not working quite like I intended when multiple missions that want the same ware are involved. I can work around this by just using the regular 'buy' button as needed, but there's a bit of room for improvement here. I've just been putting this off as there's so much else I wanted to tweak first.
 
Last edited:
  • Like
Reactions: sweetit

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
Chrisdarock19

A quick note. Since I've introduced the ability to upgrade Precursor cortex attitudes to 'devoted' in my mod. this can free up a slot that you'd otherwise be using for immobilizers to use for a skill booster.

'Devoted' feels a bit overpowered to me IMHO, and perhaps I could introduce a 'must use mil grade cube to upgrade attitude to Devoted' as a bit of a balancer, but for now I'm leaving well enough alone.

How are you feeling about the economic changes I've introduced, i.e. changes to bot values and arcade earning mainly?
 

Chrisdarock19

Well-Known Member
Oct 15, 2018
1,241
1,748
Chrisdarock19

A quick note. Since I've introduced the ability to upgrade Precursor cortex attitudes to 'devoted' in my mod. this can free up a slot that you'd otherwise be using for immobilizers to use for a skill booster.

'Devoted' feels a bit overpowered to me IMHO, and perhaps I could introduce a 'must use mil grade cube to upgrade attitude to Devoted' as a bit of a balancer, but for now I'm leaving well enough alone.

How are you feeling about the economic changes I've introduced, i.e. changes to bot values and arcade earning mainly?
I thought the arcade earnings were fair, not crazy high like in vanilla (previous vanilla, by the late game I was earning 5 mil credits per day), but certainly keeps from being too OP.

On the most recent mod I was earning just over 1 mil credits a day by late game, but by then money is largely irrelevant so it's cool.

Also, the default bot without a shell does count towards your "Multi-Shell Bonus", so I had 10 different bots in the arcade which was cool to see. I'll just keep creating Infiltrator shells and sell them to the auctioneer and hope Nimhe eventually makes a "vanilla" one. :) (y)
 
  • Like
Reactions: OhWee

Incarnax

Newbie
May 3, 2018
19
13
One thing that I'd like to figure out/see is a method to apply new likes when traits are being upgraded via cubes that relate to said likes, and adjust the underlying skill value accordingly. Swapping out the traits is easy enough, but usually a 'like' also has an associated skill talent boost.
Well, that's pretty much why various classes have the tags list and attr dict properties: extensions that do not unduly affect the classes as written, and are only minor clutter if they are unused.

For example: My custom version of Cube effects also adds the ID of the cube to the Sexbot.tags list. In say, the getAttitude method, an appropriate 'cubed' tag grants priority to the bot's cube-set attitude over the shell, which allows for further customization at end-game bot tinkering.

About your query... wait. My first reaction is: likes have no effect on skill/talent amount beside training speed. Unless you intend to add such bonuses, it is traits that 'apply' both the extra likes and bonus to talents. However, I think I know what you mean. A few versions of my custom code ago, I moved parts of the Sexbot.rollNew function into separate functions--rollTalents, rollLikes, rollLikeTraits, and rollTalentTraits--so I could call them from the rollCube method without code duplication and errors creeping in.

Send me a PM if you are interested in getting my code. But, well... A lot of it is little things with broad effects: for example, all the crew sort of have their own color (outfits and cabin has a different predominant tone) so I wanted their names in text everywhere to be similarly colored to match. This required changes to the Actor class, thier narration Characters, and edits to quest and dialogue all over the place. I think the result looks nice, but it was a lot of effort for polishing existing content. Most of the rest is code changes where I was unhappy with y.v.'s code and often spent too much time 'improving' it for little in-game effect.
 

Chrisdarock19

Well-Known Member
Oct 15, 2018
1,241
1,748
A lot of it is little things with broad effects: for example, all the crew sort of have their own color (outfits and cabin has a different predominant tone) so I wanted their names in text everywhere to be similarly colored to match. This required changes to the Actor class, thier narration Characters, and edits to quest and dialogue all over the place.
Please share this with OhWee and hopefully he can implement it into this mod. I also prefer when the characters have their own individual color for the names!
 

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
Incarnax

r.e. name colors...

So I just tried this (215_init_chars.rpy):

define mc = DynamicCharacter("GAME.mc.name", image="mc", color = "f00")

This immediately changed the MC's name to red in the name header box. Just the name though. As for the text in the text box, my first instinct would be to modify the dialogue box in screens.rpy, but that'd be rather 'hack-ey'. Another way of course is to add a color tag to the names in the various dialogues (intercepts and such), but that'd be tedious.

I think a few players wouldn't mind this.

The name is kind of redundant anyways, since there's a side image, I eliminated the name box in FmF since we were using side images, but went back to the 'normal' way in FmF Stories, and gave up on side images 'cuz they are a bit of a pain to utilize, and my project partners weren't making good use of the side images at the time... i.e. Dee happy "blah blah' instead of just Dee "blah blah", but I digress...

Also, classes and defs hurt my brain. I'm old school Ren'Py/KISS. I know that if you can get the hang of them, they are probably better, but yeah... again, digressing...


I'm sure the method you described might work better. If the MC name is called in dialogue via a [] or whatever - instead of just typing the name into the text, I'd imagine there'd be some way to invoke the color. You'd probably know better how to do this than I do. It'd be easy enough to do find/replace for the names if you can carry the color info over in the naming bracket insert, but at that point {color=red}[MC.name]{/color} would be just as easy to type into the find/replace, at least for the normal dialogue.

As for the call box thing that yv0751 went with instead of menus, yeah that's another brain scrambler for me... mind you, I think it fits with the style of the game, but menus could be adapted pretty easily to look like the frame boxes in use now. I've messed with menu display a few times in various projects...

Back to the color thing though, I tend to try to not go too hog wild when altering Name header text color. Some developers end up choosing colors that are hard to read, so this is definitely a balancing act.

As you mention, this is also a time vs. reward thing. This is a very minor change in the grand scheme of things from the player's perspective, so the amount of effort required, well it might not be worth it. Sure, WinMerge, etc. can help copy changes over between versions, but even that still requires a bit of a time investment to review the changes.

The 'actually have slots for trait cubes thing while retaining the original personality/traits/attitude' thing that you mentioned is intriguing. I was trying to do something similar with Shells, where both the Shell personality and Base personality would exist side by side, with both affecting bot valuation, but at the time the methodology I used was messing with the Multiverse Pod saves, so I backed off of this.

It's the multiverse pod saves that make me so gunshy. I've had a number of times where trying to open the multiverse pod after using my mod generated errors/lost stuff, hence my current quest to stay away from 'core variables/classes' to maintain Multiverse Pod and save compatibility going forward, and so that people can just use a save from my mod in vanilla SJx at the same time, should they have separate installs...

---

As for 'niggles' in code, you mentioned tweaking a few things in your personal build. Yeah I've replaced 'frame' with 'fixed' a few times, as they do pretty much the same thing, but fixed eliminates the need to make the background color transparent. I also started to modify a few buttons so that the 'hover' would actually change text color or something. yv0751 is picking his battles too, I'd personally rather he focus on making more cool renders of the hot gals for more scenes. If SJx is lacking anywhere, it's the lack of character renders and associated story development that would require a bunch of new renders to 'show' instead of 'tell' in dialogue situations. I get that he likes playing around with code though, we all have our passions...

I also started to swap out grid for vpgrid in a few places, 'cuz vpgrid is awesome and eliminated the need for the extra 'count/fill empty boxes' code.



I very much do appreciate your feedback, and I am happy to discuss things further. The overall goal is to make things better, and I'm not afraid to ask for help in improving things!
:cool:

I need to experiment with your IQ suggestion still, but I'm trying to pay off Krogneath with cargo wares atm. I could just use the console to add a bunch of bio whatever via cheats, but where's the fun in that?
 
Last edited:
  • Like
Reactions: Chrisdarock19

oh45

Member
Jul 1, 2017
108
187
What I did is add:
$ oldbotIQ = 0

To the beginning of 762_sexbot_templates.

That file sets up the random chances for various shells, etc. to be used when assembling bot containers found via combat drops and such. So hopefully this resolves the issue...

Since newly assembled bots don't have to worry about upgraded cortexes, this should solve the issue, as the other associated code I added does a 'if oldbotIQ == 0 use 120 as the baseline value for randomizing IQ, othewise use oldbotIQ as the baseline to start from'. Me and my coding silliness!
Well, I haven't seen any uncaught exceptions since I copied in your latest, but I don't recall ever finding any bot containers -- which I'm presuming would have been what triggered the problem -- from any debris since I updated my game, either. So... take that as it is.
 
  • Thinking Face
Reactions: OhWee

sweetit

Member
Aug 17, 2020
404
425
im really wondering if the issues here are people running old saves, i tried running a fresh game and have not run into any issues yet
 
  • Thinking Face
Reactions: Chrisdarock19

OhWee

Conversation Conqueror
Modder
Game Developer
Jun 17, 2017
6,068
30,522
Got this exception from the latest mod when finished Nimhe's first lab facial.
im really wondering if the issues here are people running old saves, i tried running a fresh game and have not run into any issues yet
In this case, yeah it's a 'me' problem. I think I know what the issue is, I'll look into it later, doing other things atm.
 
  • Like
Reactions: Chrisdarock19

Incarnax

Newbie
May 3, 2018
19
13
Right on. I was originally annoyed that some character's names were occasionally misspelled (T'Ris and Krogneath mostly), and it kinda spiralled out from there.

Ah, well. I'm not at all skilled or tooled for original graphics, so the few images I have made for my private SJX game are entirely derived from y.v.'s original source. I am a developer though, so it is fun for me to play around at improving the code.

As for the multiverse pod stuff, yeah, with any changes to bots or bot parts, you should check the functions in BotLab that translate between JSON and Python in case you need to modify them to comply with your changes. But, as you say, you're more into Ren'Py ... design(?) than Python coding.

And no, my code does not add properties ('slots') for Cube modifications. It does something like this:
You don't have permission to view the spoiler content. Log in or register now.
 
  • Like
Reactions: OhWee
5.00 star(s) 1 Vote