Brothel King - Girl packs and Mods Collection

4.00 star(s) 2 Votes

Jman9

Engaged Member
Jul 17, 2019
2,295
964
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
668
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
199
639
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
964
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
199
639
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
964
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

Jman9

Engaged Member
Jul 17, 2019
2,295
964
Uh, +5 and +15 defence are quite a lot. And 0.2 random tip will stack with Secret Admirers and Tempting Fate to give you effectively 64% chance of double tips.

OTOH, max energy without a corresponding energy boost is rather lackluster. +35 obedience hardly outweighs even the defence loss, never mind having much effect during late game.

I am not sure which 'group preference' you're intending to boost, Ahri's or her customers', but that is also rather small potatoes.

Conclusion: You hate Ahri and Akali, and have a hardon for Tristana, Riven and Poppy. :p Riven, okay, but these Smurf girls?! o_O

Nidalee and Jinx are the ones who have relatively okay traits. Powerful, but not overwhelmingly so.
 

Jman9

Engaged Member
Jul 17, 2019
2,295
964
My opinion:
  • OP: Jinx.
  • A bit too much: Riven, Tracer, Tali.
  • Weak: Kindred, Akali, Yennefer.
  • Useless: Nidalee's energy boost.
 
  • Like
Reactions: Earliestbird

1tomadeira

Engaged Member
May 25, 2017
3,461
10,563
the old website's gone for good but there has been a new one for a while . for the "popularity pool," i did make a thread on the new site for recommending packs but it didn't catch on and i don't think it'd be worth the effort if it's even possible to make the doc sortable by any kind of popularity metric. you can't track download count on mega so the best you could do would be like, some form of user review score which doesn't really seem like a great idea to me, even if it was only specific people allowed to set those scores.

most things are on mega because mega's just the most generally convenient uploader, so probably not.
I know, but still had download limit. That's why I mentioned the favorites option because of course I know it would be an huge task to have everything in 2 download providers.

My opinion:
  • OP: Jinx.
  • A bit too much: Riven, Tracer, Tali.
  • Weak: Kindred, Akali, Yennefer.
  • Useless: Nidalee's energy boost.
Nidalee uses mana, not energy. And she's a decent jungler.

You don't have permission to view the spoiler content. Log in or register now.
 
  • Haha
Reactions: ASDFGMAG

__neronero

Member
Jan 23, 2021
285
393
Ciri - Wild Cunt: +10 valuation /rank, boost prestige by 20% /rank
Without Trait King active, valuation doesn't exist. I don't think this'll cause an error though, it just won't have any effect.

Tali - Quarian Cum-Immunity: +10 hurt resistance
Maybe I'm having a brainfart, but I'm not sure what effect this is :unsure: edit: nvm, i forgot about resist hurt


Technically they're all very strong/OP since you're getting a free bonus trait compared to "normal" girls. But in comparison with one another:

Strong: Tristana, Sombra, Tracer, Tali
Weak: Ahri, Akali, Kindred, Ciri, Yennefer, Elizabeth
 
Last edited:

__neronero

Member
Jan 23, 2021
285
393
Why do you think free upkeep is weak?
Like I said technically they're all OP, but in comparison to -20% tiredness or 15% increased tip or 10% chance of doubled tips or -10 hurt, free upkeep is nothing. Maybe in Bonanza it'd be a challenge, but in vanilla I've never cared about upkeep past the early-game, it's nothing in comparison to the income girls can generate. And that's with my 0-IQ playstyle where I max every girl's upkeep as soon as I aquire them to boost mood.
 

Jman9

Engaged Member
Jul 17, 2019
2,295
964
Well, yeah, but the -20% tiredness etc are all strong traits. Compared to even +50 anal, free upkeep + something else is not too shabby.

I also think I recall someone playing on a higher difficulty saying upkeep was kind of important?

I just checked Justinof's insane 153-girl save, and he has about 10% of his income being eaten by girl upkeep. A bunch of his rank X girls were making only about twice as much as their upkeep.

Edit: Two other chapter 2 saves I had from debugging had ~1/8 and ~1/3 of the profits go to girl upkeep. A chapter 6 save had ~1/4 go to upkeep, and some rank S girls had the vast majority of their profits go to upkeep.

Granted, I saw little upkeep optimisation in there. But none of the games besides Justinof's looked like another +1K, or 2K, or 4K would not be noticed.


Edit2: Of course, it'd be a much bigger deal in Bonanza, but remember, all of Bonanza's traits were jacked to high heaven. :sneaky:
 
Last edited:
  • Like
Reactions: __neronero

__neronero

Member
Jan 23, 2021
285
393
I only play on normal mode. I guess upkeep is something that can be easily underestimated... But if it only costs 10% of income, and income inflates as it does, then I would rather focus on traits & perks that increase my income.

free upkeep + something else is not too shabby.
I agree with that. Jinx fox example is really good (although the +mood doesn't matter since there is no upkeep) - but group preference increase does nothing for me.
 
  • Like
Reactions: Jman9

Jman9

Engaged Member
Jul 17, 2019
2,295
964
But if it only costs 10% of income...
That was in an extreme outlier of a save. And even there, some girls could have doubled their last night's income (didn't dig very deep) by foregoing upkeep.

Jinx fox example is really good
Which is why she's on my list as OP and on your list as... "er, where?" :p

but group preference increase does nothing for me.
Well, it enables her to be group-trained faster. I agree that it's pretty close to useless.

Edit:
although the +mood doesn't matter since there is no upkeep
Technically, it does do some things (like making her less likely to 'rebel'), but these are relatively minor to begin with and +6 is not much at all.
 

Jman9

Engaged Member
Jul 17, 2019
2,295
964
Oh yeah I can totally see that being ridiculous. I'll try 5 for now. Reducing but generally not outright negating the amount of time spent hurt.
Even +5 is pretty good. How many times has one of your girls been injured for 5+ days?

About upkeep, (when using King's Way to quickly test my events) a level 1 S rank girl has about 450 gold/day upkeep on low pay, and that's without any traits that increase it. So, not a huge deal, but somewhat significant.
An actual rank S girl with levels from a debug save from IDK who had ~900 upkeep per day, 254 at minimum (which is easily reachable via love and trust), and ~1560 income per day over the last month (and that was the best girl on the entire roster). Even minimising all upkeep, that's 1/6. And that doesn't account for taxes, brothel upkeep or other expenses, so it's actually more than that.

In conclusion, it's something like +10% tips at the very least. For many girls, more like ~20-50% extra tips. Looks like a pretty big deal to me. Maybe I'm overlooking something, because I have no vanilla experience to speak of.

Riven: add +20% increased upkeep
That actually puts her on the weak side, if my upkeep musings are right. I'd just lower her bonus to +5.

Tracer: add -3 defense (keeping the very strong -20% tiredness, but adding a strong downside to balance it)
Defence is actually not that powerful compared to tiredness, since girls don't get attacked all that often.

Tristana: add -1 defense
That's not really a significant downside for what will essentially be +20% tips in the long run (with Tempting Fate). Again, I suggest moving the whole thing to Ahri for the Fox theme, and making the Cumflator into something fetish-related. +3-4 fetish satisfaction, +500 fetish preference off the bat, a 'whore obedience target' boost, something along these lines.

Kindred: add +5 const, sens and libido
Mostly cosmetic and she remains among the weakest.

Yennefer: 8 sens and refinement /rank (up from 5)
Will do little to make her trait more attractive because, unlike the redhead sorceress, she needs to be highly ranked to get the benefits, which are really not all that strong in the first place.

Give her some sort of mana boost, maybe? Or something to go with the unicorn? :D

Ciri: Valuation removed, add +3 defense
There are a lot of these defence traits now, aren't there?

Elizabeth: +7 sens /rank (up from 5)
See Kindred.

Nidalee: max energy removed, add +8 sex /rank
Giving her a corresponding energy boost (even +10%) would have been more thematic, unique, interesting and powerful.
 
  • Like
Reactions: Earliestbird

__neronero

Member
Jan 23, 2021
285
393
All this upkeep talk is making me revalue the Maid perktree. I always thought of it as a somewhat mediocre early-game centric tree, but -45% upkeep (combined with furniture) clearly becomes superb in the lategame.
 
4.00 star(s) 2 Votes