[0.9.000-PUBLIC#1940] Rats Raiders bugs -- ratputation() error prevents reputation gain, wrong combat portraits

one_two

Well-Known Member
Jan 20, 2022
457
130
#1

There's a flow error in ratputation() function in ratsRaiders.js:

JavaScript:
function ratputation(increase = 0, goodCEO = false)
{
    if (flags["RATPUTATION"] == undefined) return RatsRaider.RAT_REP_NONE;
//...
    //improve rep
    flags["RATPUTATION"] += increase;
//...
}

because the reputation starts as "undefined" any call with supplied increase parameter will return immediately, before reputation improvement can actually take place. As a result reputation with Rats Raiders never improves (or worsens)

#2

while regular rats' portraits (both dressed and naked) are displayed normally, combat portraits are missing and/or wrong -- for one of the rats naked variant is used instead of dressed one:

1652323380895.png
 

OrangeBurner

Well-Known Member
Mar 13, 2022
305
72
I never had any trouble befriending the Rat Raiders in my saves.

Looking at the code it seems that flags["RATPUTATION"] is actually set to 0 when the Rat Theives figure out you're Victor's Son (Or, after about 4 battles) so that after they know who you are you can increase your "Ratputation" with them.
JavaScript:
// After 4 wins and/or losses, cumulatively, the rats will figure out who Steele is. Escapes DO NOT COUNT
// When encountering the Rat Thieves after 4 wins and/or losses, this scene replaces the intro only once.
else if (!ratsPCIsKnown() && (flags["RAT_VICTORIES"] == undefined ? 0 : flags["RAT_VICTORIES"]) + (flags["RAT_LOSSES"] == undefined ? 0 : flags["RAT_LOSSES"]) >= 3)
{
    showRats(3);
    output(blockHeader("A Secret") + "\n");

    output("The familiar chittering of klepto-rodents encroaches on your [pc.ears]. Sighing, you raise your guard. The snickering is just up ahead. Before the next corner, you find three rats all squatting near a wall, looking at something on an old gadget, resembling an antique style of phone or personal assistant. When they spot you, they don’t scurry your way this time. The pack stands gradually, regarding you with faces so smug that entire planets would be lining up to punch them. You quirk one eyebrow and level your [pc.weapon].");
    output("\n\n<i>“Hey,");
    if (pc.tallness >= 6*12) output(" big");
    output(" [pc.boyGirl]!”</i> the [rat0.furColor]-furred rodenian waves. <i>“You thought you could keep that secret forever, huh?”</i> They approach you slowly, hands on their batons, tails waving and bodies shaking -- some emotion is barely contained.");
    output("\n\n<i>“Ha! You were right under our noses this whole time, and to think we hadn’t even scratched the surface of what you’ve squirreled away!”</i> the [rat1.skinColor]-skinned mouse boy announces.");
    output("\n\n<i>“Oh yeah! We’re working on sharing your secret to our friends! You’re gonna regret stepping foot here!”</i> the half-rodenian [rat2.boyGirl] wags a furry finger.");
    output("\n\nWait, what secret? You lower your [pc.weapon].");
    if (pc.isBimbo()) output(" <i>“Ooh, and what secret is that? I thought I showed you all of mine!”</i>");
    else if (pc.isBro()) output(" <i>“There’re no secrets between fuck buddies. Did we not go over that?”</i>");
    else if (pc.isNice()) output(" <i>“And what secret are you so sure is mine?”</i>");
    else if (pc.isMischievous()) output(" <i>“Oh yeah? I’ve got a lot of secrets, and I don’t recall sharing that many to you.”</i>");
    else output(" <i>“Really? Do tell.”</i>");
    output("\n\nChuckling, the self-assured mouse-thief brings the device to her face and acts like she’s presenting on a stage. <i>“Ohh, you know... just a little tip we got from a concerned party a while back,”</i> she quips, clears her throat, and begins narrating with exaggerated enunciation.");
    output("\n\n<i>“There will be a bothersome little snotbag coming your way who can’t help but stick his or her dull face into every corner. You’ll know them by their conceited sense of superiority and their complete lack of honesty and virtue. However this troublesome child may look compared to what they were born as, one fact remains: they are the " + pc.mf("son", "daughter") + " of Victor Steele, late CEO to Steele Tech, direct descendant and inheritor. What you do with this information is up to you, but I wholeheartedly suggest they are <i>not</i> to be left alone.”</i>");
    output("\n\nA thread snaps in your mind hearing the name of your father, and their snickering cuts even deeper than before in your speechless form. The words you were hearing all spilled away at that moment, and now you know... now <i>they</i> know... <b><i>thanks to your " + rival.mf("bastard", "bitch") + " cousin.</i></b> Who else could have sent that kind of message?");
    output("\n\n<i>“[pc.name] Steele!”</i> the cocky rodenian points at you, <i>“Next in line to ownership of the Steele Tech megacorporation! Just our luck that a corporate stooge was walking around Zhèng Shi! Haha! And would you believe it? Not a <i>mere</i> stooge, but the <b>head</b> stooge! It took us a while to figure it out, but who else fits the bill besides you?”</i>");
    output("\n\n<i>“A CEO!”</i> squeaks the freckled mouse-boy.");
    output("\n\n<i>“All to ourselves!”</i> finishes the [rat2.furColor]-limbed half-rodenian.");
    output("\n\nThey all level their batons at you, faces shining with excitement. Their usual encirclement is again in effect. The air tenses up, and you can sense the effort they exert to not jump you straight away. <i>“Now, [pc.mister] CEO, you’re our primary mark. Now... we have your scent! Don’t worry though, this is just between you and ours, heh, as if we’d give the others a chance to capitalize! You have no idea how long we’ve gone without a score!”</i>");
    output("\n\n<i>“Absolutely!”</i> the mouse-boy fist pumps. <i>“Little by little, you’re going to give back!”</i>");
    output("\n\n<i>“And it’s up to you whether or not we do this the easy way or the hard way!”</i> the [rat2.boyGirl] standing to your right chortles.");
    output("\n\n<i>“Don’t mistake us, we’re not going to hurt you, but you’re going to start owing us a lot more! You can start atoning for your crimes one payment at a time!”</i> the [rat0.eyeColor] rat-girl strikes the tip of her baton to the ground. <i>“A fight? We’d <b>love</b> to earn it. But if you give us what we ask for, we’ll leave ‘ya be for now. But we’ll find you again!”</i>");
    output("\n\nA cold rush of fear is felt, and even some hesitation. If word of this gets out...");
    output("\n\nA bead of sweat drips down your head looking at these rodents. There’s only small comfort in that, maybe, they won’t give out your name to the other pirates here, but that doesn’t make future encounters any easier. Maybe you can try to fix this situation? It’s something to consider.");
    output("\n\nBut for now, one thing’s certain: you’ll not get out of this particular encounter with a sexual favor.");

    IncrementFlag("RATCOUNTERS");
    flags["RATPUTATION"] = 0; // It's set here.
    ratButtons(4);
    return true;
}
So, as soon as they know who you are ratputation() should work correctly (I managed to completely befriend them on my saves).

And I will add that the combat busts are also broken for me.
 

Theron

Well-Known Member
Nov 8, 2018
3,618
1,377
44
Because it's based on fights, they never figure out who you are if you keep bribing them. This means you can never increase your reputation. It's especially odd if you've been bribing them with milk.
 

one_two

Well-Known Member
Jan 20, 2022
457
130
Exactly. In my case two encounters i've had with the rats both ended with accepting offer to get my milk. That's +12 reputation (+6 for each accepted milking) but because i've never fought them (let alone 3+ times) the reputation level remained undefined. Which i doubt is intended.

On side note if you have to fight them in order to establish who you are, as opposed to counting encounters regardless how they're resolved, that's also pretty weird design decision, if it's intended and not an oversight.
 
Last edited:

Theron

Well-Known Member
Nov 8, 2018
3,618
1,377
44
Speaking of milk, making it a percent check (40%) has potentially weird consequences. A Steele with A Cups has 180 mLs at 40%. If she maxed out on Lactaid Milk Tanks, she'd have 180 Ls at 40%. Steele could potentially have over 100 liters of milk and not be able to feed the raiders.
 

one_two

Well-Known Member
Jan 20, 2022
457
130
I think the check is okay -- it's not related to Steele's milk amount, but is a flat chance to resist the offer "on principle" (potentially reduced by extra pheromones if there's any).
 

Theron

Well-Known Member
Nov 8, 2018
3,618
1,377
44
I think the check is okay -- it's not related to Steele's milk amount, but is a flat chance to resist the offer "on principle" (potentially reduced by extra pheromones if there's any).
There's a random failure chance, but Steele has to have at least 40% fullness to even offer.
If Steele has Mega Milk, you might not notice, because it sets minimum fullness to 40%.
 

one_two

Well-Known Member
Jan 20, 2022
457
130
Ahh i see, the number being 40 in both cases confused me what you're referring to. In this case yeah, checking against fixed milk amount if the justification behind disabling the offer is "you don't have enough milk for 3 rats", that'd make more sense.
 

DrunkZombie

Well-Known Member
Moderator
Apr 12, 2018
1,564
877
Minnesota, USA
I checked with Will and that is intended behavior. My guess is until they know who you are they have no interest in getting to know you better as you are just another random victim.
 
  • Like
Reactions: one_two

one_two

Well-Known Member
Jan 20, 2022
457
130
I checked with Will and that is intended behavior. My guess is until they know who you are they have no interest in getting to know you better as you are just another random victim.
Could you please double-check if it's also intended to have "learning who you are" locked exclusively behind fighting the rats, when it doesn't really have to be, and when it's done without any apparent hint something extra might happen if you keep picking fights instead of resolving things peacefully, to boot?

Because while i can see how "they have no interest until they know your identity" might make sense as justification, it makes quite less sense you'd remain "just another random victim" even when they keep extorting you over and over and over and over; and not having them "learn who you are" through just interacting with you a few times (regardless of the outcome)... is effectively locking some players out of the chunk of content, for no real reason..?
 

one_two

Well-Known Member
Jan 20, 2022
457
130
Welp, then. This feels like a really weird design decision to me but yeah, the function definitely works as intended then. Thank you very much for checking, and sorry for taking your time to do that.