Brothel King - Girl packs and Mods Collection

4.00 star(s) 2 Votes

Jman9

Engaged Member
Jul 17, 2019
2,295
958
I tried without mods and same things, even rewriting BK.ini file to match the ones with the other packs that do work was unsucessful. But meh, it doesnt matter that much I guess, since obvious when real name and when a random one. Will try to toy around more, but then again not game breaking enough to make game unplayable.
Well, you can give me the save, the girl's ID and her _BK.ini, plus tell me whatever mods you were using for that save. I can then take a look and see if there's a genuine bug, it's weird but working as intended, or you're just missing something.
 

Sarukami

Newbie
Jan 22, 2018
80
16
Well, you can give me the save, the girl's ID and her _BK.ini, plus tell me whatever mods you were using for that save. I can then take a look and see if there's a genuine bug, it's weird but working as intended, or you're just missing something.
I mean sure. I think it is the second option, weird but working as intended, since sometimes it shows and sometimes it doesnt even with correct name. For example this was a fresh start game, with KingsWay, Traitking and Headhunter mods installed and activated. You can check in the save that for example Fischl is normal, while Shenhe is gold, while in previous start both were normal. And before you ask, it is the same for all, even from different packs xD, so probably I screwed something myself while installing.
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
I think it is the second option, weird but working as intended, since sometimes it shows and sometimes it doesnt even with correct name.
This. Both Fischl and Shenhe in your save are originals. I think what you're missing is that the 'yellow' in the name is only shown on the little 'girl card', and not on top of the stat block to the left.

You can try lobbying Goldo to change that, I imagine. My own solution from a while ago was to remove the 'yellow' altogether and put a tiny star next to her name.
 
  • Like
Reactions: DougTheC

Sarukami

Newbie
Jan 22, 2018
80
16
This. Both Fischl and Shenhe in your save are originals. I think what you're missing is that the 'yellow' in the name is only shown on the little 'girl card', and not on top of the stat block to the left.

You can try lobbying Goldo to change that, I imagine. My own solution from a while ago was to remove the 'yellow' altogether and put a tiny star next to her name.
Yeah, something like that would be much more preferable. The problem I see is that this will only further get complicated with mods and more packs. But hey, for now since not breaking game it is fine, but maybe in future would be nice to have a better overview.
 

Earliestbird

Member
Game Developer
Sep 5, 2020
276
747
Is it possible to add a custom trait inside the BK.ini or the events.rpy* files? If I understand the TraitKing code correctly, this line adds a trait to the game.
Code:
# Adding special traits to trait dict (but not to pos/neg traits)
        godless_trait = trait_dict["Godless"] = Trait("Godless", verb = "be", eff1 = Effect("boost", "reputation gains", -0.2))
If it's possible, then basically what I want to do is the following: When the player completes a custom event, the girl gains a custom trait. I'd like this to work with all my packs, whether they are used together or individually, which means I need to find a way to avoid adding the same custom trait to the game multiple times (Maybe? I'm not sure if this would break the game).
 
Last edited:
  • Like
Reactions: __neronero

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Is it possible to add a custom trait inside the BK.ini or the events.ini files?
_BK.ini, no. _events.rpy, yes.

If I understand the TraitKing code correctly, this line adds a trait to the game.
Code:
# Adding special traits to trait dict (but not to pos/neg traits)
        godless_trait = trait_dict["Godless"] = Trait("Godless", verb = "be", eff1 = Effect("boost", "reputation gains", -0.2))
'Godless' is actually a vanilla trait.

If it's possible, then basically what I want to do is the following: When the player completes a custom event, the girl gains a custom trait.
I suggest you take a look at __neronero's Fran. She has two special traits she swaps out with some regularity. I wrote some support for her once, to make such temporary custom traits have their own colour and not affect sales price (a Bonanza-specific thing).

If you want a special but permanent trait, you can just copy the ninja girls' traits from 0.2 itself (at the end of the traits script file). You can actually make your own small script file with these extra traits, and mandate that users of your girl packs have a copy by, say, including it in all your packs with the same relative path. At worst, if a player messes up the installation, the Ren'Py will complain about multiple labels with the same name, so you can tell them they messed up. :D

Maybe? I'm not sure if this would break the game.
Possibly, but I can imagine several things that might go wrong, depending on what you're trying to do.
 
  • Like
Reactions: __neronero

__neronero

Member
Jan 23, 2021
285
392
I suggest you take a look at __neronero's Fran. She has two special traits she swaps out with some regularity. I wrote some support for her once, to make such temporary custom traits have their own colour and not affect sales price (a Bonanza-specific thing).
I recently reorganised my MEGA, Fran is available in the folder "_(Outdated) Experiments" (not sure how functional she currently is in 0.2)

Here are some puzzle pieces you could use:

You don't have permission to view the spoiler content. Log in or register now.
You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:

Earliestbird

Member
Game Developer
Sep 5, 2020
276
747
I recently reorganised my MEGA, Fran is available in the folder "_(Outdated) Experiments" (not sure how functional she currently is in 0.2)
This is a godsend, thank you!

So I messed around a bit and made the following method work.
Use this at start of the _events.rpy:
Code:
init python:

    def riven_init_function(girl):
    # where 'riven' is [GIRLNAME] depending on the pack
   
        girl.flags["pregtrait"] = 0

        return
And when I want to add the trait at the end of an event, I add this code:
Code:
                                if girl.flags["pregtrait"] == 0:
                                    $ renpy.say("", event_color["special"] % ("She gained a special trait: MindBroken Blade!"))
                                    $ girl.add_trait(Trait("MindBroken Blade", verb = "be a", effects=[Effect("change", "defense", 10)], base_description = "Once a warrior with a broken blade, Riven now devotes her body to the cultivation of her master's virile seed."))
                                    $ girl.flags["pregtrait"] = 1
                                    return
I briefly tested this with 2 separate characters and I havent found any conflicts or errors. Did the event multiple times, passed a few days, saved and loaded the game. Seems to be functional. But I still want to ask you guys opinions, does it look safe enough to use?

It would allow me to add unique traits for every single girl based on their lore/personality. While the event text remains the same across the board (because writing out 20+ different versions of the events for each girl would be an ambitious commitment), this could provide a unique flavor with minimal time investment.
 

Leortha

Active Member
Jun 25, 2019
744
667
New pack released.

Name: Hyakumantenbara Salome
Universe: Nijisanji
Pics: 407
Type: VTuber

Notes: This VTuber has existed for only around a month. She is an absolute phenomenon. She is the fastest growing VTuber ever. In less than a month she is already the most subscribed VTuber in all of Nijisanji. She's not the most subscribed VTuber overall, that is still Gawr Gura of Hololive, but she is climbing much faster than Gura did.

Her "family name" is a Japanese pun about the number 1 million. She launched in celebration of the main Nijisanji youtube account reaching 1 million subscribers. When announced, with her punny name, a lot of people thought she would be a joke account or some sort of company staff account. But she is a real, legit VTuber, and she has absolutely gotten a crazy level of response.

profile libido lingerie (00000).jpg masseuse swim (00014).jpg
 

Kite80

Well-Known Member
Modder
May 30, 2017
1,079
1,068
Is it possible to add a custom trait inside the BK.ini or the events.rpy* files? If I understand the TraitKing code correctly, this line adds a trait to the game.
Code:
# Adding special traits to trait dict (but not to pos/neg traits)
        godless_trait = trait_dict["Godless"] = Trait("Godless", verb = "be", eff1 = Effect("boost", "reputation gains", -0.2))
If it's possible, then basically what I want to do is the following: When the player completes a custom event, the girl gains a custom trait. I'd like this to work with all my packs, whether they are used together or individually, which means I need to find a way to avoid adding the same custom trait to the game multiple times (Maybe? I'm not sure if this would break the game).
Take a look at basic Boa Hancock .rpy file, there's the snake trait which is implemented there
 
  • Like
Reactions: __neronero

Jman9

Engaged Member
Jul 17, 2019
2,295
958
earliestbird555: I would suggest something like that, just in an init block. The sanity checking should make it work with multiple girls sharing the same code, too.
Code:
init python:
    mindbroken_blade_trait = Trait("MindBroken Blade", verb = "be a", effects=[Effect("change", "defense", 10)], base_description = "Once a warrior with a broken blade, Riven now devotes her body to the cultivation of her master's virile seed.")
    if not mindbroken_blade_trait.name in trait_dict.keys():
        trait_dict[trait.name] = mindbroken_blade_trait
        if not mindbroken_blade_trait.name in gold_trait_dict.keys():                        # replace with pos_traits or neg_traits as appropriate
            gold_trait_dict[trait.name] = mindbroken_blade_trait
        if not mindbroken_blade_trait.name in [tr.name for tr in gold_traits]:
            gold_traits.append(mindbroken_blade_trait )

And when I want to add the trait at the end of an event, I add this code:
Code:
                                if girl.flags["pregtrait"] == 0:
                                    $ renpy.say("", event_color["special"] % ("She gained a special trait: MindBroken Blade!"))
                                    $ girl.add_trait()
                                    $ girl.flags["pregtrait"] = 1
                                    return
This has no sanity checking for accidentally adding the trait twice. Something like if not girl.has_trait(mindbroken_blade_trait.name) would work, since pretty much all of BK assumes there are never two different traits (as objects) that share the same name.

Take a look at basic Boa Hancock .rpy file, there's the snake trait which is implemented there
I thought the snake used to be a perk? In any case, AFAIK Fran is a much more complex example.

Edit: Also, __neronero's example uses direct iteration over all traits instead of girl.has_trait(), which is more convenient and ignores issues like "AIDS" vs "AiDS". There is only one kind of AIDS in Zan! :p
 
  • Like
Reactions: __neronero

Leortha

Active Member
Jun 25, 2019
744
667
Although it is nice to see the trait properly color-coded ingame, isn't it true that once you add it to gold_traits, newly generated girls may then randomly start spawning with that trait?
That sounds familiar. I think I remember similar happening with the custom personality from the "inflatable doll" pack.
 

Earliestbird

Member
Game Developer
Sep 5, 2020
276
747
Although it is nice to see the trait properly color-coded ingame, isn't it true that once you add it to gold_traits, newly generated girls may then randomly start spawning with that trait?
Honestly Im kinda liking the blue color I have right now lol
1656178570416.png

You mentioned there's no sanity checking to make sure the trait isn't added twice, but with the method that changes the girl.flags value, with nothing to change it back, is that necessary?
Fiddling around with the code you suggested (sorry Im too dumb for this) I get errors like this: 1656178927323.png

I 100% believe your method of double-checking is the smarter way, but the pleb snippet I currently have is working (which is more than I can usually say for myself :D) Do you reckon it should, in theory, be good enough as long as I don't ever touch the girl.flags["pregtrait"] value?
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Although it is nice to see the trait properly color-coded ingame, isn't it true that once you add it to gold_traits, newly generated girls may then randomly start spawning with that trait?
Well, yeah. You might even want that. :p

If not, the alternative is asking Goldo for a custom colour, or living with the default. That was the reason I made a 'custom_traits' list back when I Bonanzafied Fran.

You can always limit yourself to the pre-gold-traits part, which makes sure the trait does get added to the trait dictionary, like the other unique traits. And is thus reuseable across girl packs without worrying one girl might define it one way and the other can undermine that definition because you (or someone else) forgot.

You mentioned there's no sanity checking to make sure the trait isn't added twice, but with the method that changes the girl.flags value, with nothing to change it back, is that necessary?
You might forget, or accidentally reuse the flag, or someone else accidentally invents the same flag name ('pregtrait' is right in the danger zone).

Fiddling around with the code you suggested (sorry Im too dumb for this) I get errors like this
Make sure 'girl' is defined beforehand. Usually by passing her as a label argument (e.g. label my_label(girl):.

Also, don't use __neronero's iteration over traits. Use girl.has_trait('trait name').

I 100% believe your method of double-checking is the smarter way, but the pleb snippet I currently have is working (which is more than I can usually say for myself) Do you reckon it should, in theory, be good enough as long as I don't ever touch the girl.flags["pregtrait"] value?
It costs you pretty much nothing to rewrite it as
Code:
if girl.flags["pregtrait"] == 0 and not girl.has_trait(mindbroken_blade_trait.name):
 

Earliestbird

Member
Game Developer
Sep 5, 2020
276
747
You might forget, or accidentally reuse the flag, or someone else accidentally invents the same flag name ('pregtrait' is right in the danger zone).
Yeah I'll rename it to custom_lmao_xd_pregtrait or something

Make sure 'girl' is defined beforehand. Usually by passing her as a label argument (e.g. label my_label(girl):.

Also, don't use __neronero's iteration over traits. Use girl.has_trait('trait name').


It costs you pretty much nothing to rewrite it as
Code:
if girl.flags["pregtrait"] == 0 and not girl.has_trait(mindbroken_blade_trait.name):
So I have this after the end of the event
Code:
                                if girl.flags["pregtrait"] == 0 and not girl.has_trait(mindbroken_blade_trait.name):
                                    $ renpy.say("", event_color["special"] % ("She gained a special trait: MindBroken Blade!"))
                                    $ girl.add_trait(mindbroken_blade_trait)
                                    $ girl.flags["pregtrait"] = 1
                                    return
And at the start of the rpy:
Code:
init python:
    mindbroken_blade_trait = Trait("MindBroken Blade", verb = "be a", effects=[Effect("change", "defense", 10)], base_description = "Once a warrior with a broken blade, Riven now devotes her body to the cultivation of her master's virile seed.")   
    def riven_init_function(girl):

        girl.flags["pregtrait"] = 0

        return
I tested it ingame and it seems to be working. Really appreciate all the help guys, hopefully this is correct.
 

Jman9

Engaged Member
Jul 17, 2019
2,295
958
Yeah I'll rename it to custom_lmao_xd_pregtrait or something
(y)

I still advise you to use something this:
Code:
init python:
    mindbroken_blade_trait = Trait("MindBroken Blade", verb = "be a", effects=[Effect("change", "defense", 10)], base_description = "Once a warrior with a broken blade, Riven now devotes her body to the cultivation of her master's virile seed.")
    if not mindbroken_blade_trait.name in trait_dict.keys():
        trait_dict[mindbroken_blade_trait.name] = mindbroken_blade_trait

...

    if girl.flags["pregtrait"] == 0:
        if not girl.has_trait(mindbroken_blade_trait.name):
            $ renpy.say("", event_color["special"] % ("She gained a special trait: MindBroken Blade!"))
            $ girl.add_trait(trait_dict[mindbroken_blade_trait.name])
            ...
        else:
            $ renpy.say("", event_color["bad"] % ("I am [girl.fullname] and I am buggy! Report me!"))
This way, you're safe(r) from (accidentally or not) reusing the same traits in different packs.
 
Last edited:
  • Like
Reactions: __neronero

Earliestbird

Member
Game Developer
Sep 5, 2020
276
747
Alrighty then, just to show what to expect, here's the LoL characters' unique traits I have come up with thus far. (mind you, these traits are unlocked far into the game so they are supposed to be powerful)

You don't have permission to view the spoiler content. Log in or register now.

Edit: stat bonuses are highly subjective, I will tone down the OP stuff
 
Last edited:
4.00 star(s) 2 Votes