[0.69.420-BACKER#1898] Genitailia and Siren's Bounty issues

Karretch

Well-Known Member
Aug 26, 2015
2,063
301
Siren's Bounty (SB) TF has the ability to TF cuntsnake tails, and before transferring to JS the Flash version was able to parse this, but JS defaults to "human".

There's also the issue where SB when changing the tail removes the "parasitic" flag when doing a broad flag clear and then doesn't reapply, unsure if this is intended or not.
 

OrangeBurner

Well-Known Member
Mar 13, 2022
305
72
It seems like all exported tail genitals default to human, this might be because the genti-tail flags got changed (possibly in this fix, idk)?

But in Siren's Bounty's code they is currently a missing pc.addTailFlag(GLOBAL.FLAG_PARASITIC) in the TF:
JavaScript:
// Change Tail Genitals to Suula
// PC has parasitic tail:
// Tail Cock: Change Tail genital race to suula
// Cunt Tail: Change Tail genital race to suula
if(changes < changeLimit && pc.hasParasiteTail() && pc.tailGenitalArg != GLOBAL.TYPE_SIREN && rand(5) == 0)
{
    var newTailColor = RandomInCollection(["blue", "aquamarine"]);

    if(pc.hasTailCock())
    {
        output("\n\nYour slippery freeloader works itself into a frenzy as it curls around your body and tries to thrust into your face. Luckily you’re able to stop it from forcing its way down your throat, but you quickly notice that the penis at the end has changed. It’s sprouted a collection of tentacles up and down its shaft, with the largest groupings around the base and crown. <b>Seems its tip has changed to mimic a suula now.</b>");

        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        pc.addTailFlag(GLOBAL.FLAG_APHRODISIAC_LACED);
        pc.addTailFlag(GLOBAL.FLAG_STINGER_BASED);
        // should be a pc.addTailFlag(GLOBAL.FLAG_PARASITIC) here.
    }
    else if(pc.hasTailCunt())
    {
        output("\n\nYour freeloading partner ungulates rapidly before curling around your body, showing off its slit to you. You blink, noticing little tentacles trying to reach out and grab an invisible invader. <b>Your tail pussy is mimicking a suula vagina now!</b>");

        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        if(pc.tailType == GLOBAL.TYPE_CUNTSNAKE) pc.addTailFlag(GLOBAL.FLAG_THICK);
        pc.addTailFlag(GLOBAL.FLAG_APHRODISIAC_LACED);
        pc.addTailFlag(GLOBAL.FLAG_NUBBY);
        pc.addTailFlag(GLOBAL.FLAG_TENDRIL);
        // should be a pc.addTailFlag(GLOBAL.FLAG_PARASITIC) here.
    }

If you do want your cunt-tail to be parasitic again before this gets patched just put pc.addTailFlag(GLOBAL.FLAG_PARASITIC) into the console, it should work just like the TF intended.
 

OrangeBurner

Well-Known Member
Mar 13, 2022
305
72
After looking into this a bit more it seems that Siren's Bounty not only removes the parasitic flag it also completely removes cunt-tail functionally from your tail.
Bugged Tailcunt.png

And so, it doesn't let you access any tailcunt scenes (like the Zil, male tailsuck scene):
Zil, Male - Greyed Out Button.png

I'm assuming it's because they is no pc.addTailFlag(GLOBAL.FLAG_TAILCUNT) in SirensBounty.js
I would assume that it's also broken for tail-cocks given that there's no pc.addTailFlag(GLOBAL.FLAG_TAILCOCK) either.

Siren's Bounty also doesn't set the tail gential to a Suula's either so even if you console in pc.addTailFlag(GLOBAL.FLAG_TAILCUNT) it just leaves you with a pink, human vagina.
Human tailcunt when it should be a suula one.png

I think this is because that SirensBounty.js actually sets the pc.tailGentialArg to Suula (Which isn't used in the code currently).
pc.tailCunt.type/pc.tailCock.type should be used instead.
It also doesn't set the colour correctly given it that it changes pc.tailGentialColor which has basically been abandoned for tailCunt.vaginaColor.
JavaScript:
pc.tailGenitalArg = GLOBAL.TYPE_SIREN; // (Siren and Suula share the same flag number of 20)
pc.tailGenitalColor = newTailColor;

Putting it all together (Hopefully done correctly).
JavaScript:
// Change Tail Genitals to Suula
// PC has parasitic tail:
// Tail Cock: Change Tail genital race to suula
// Cunt Tail: Change Tail genital race to suula
if(changes < changeLimit && pc.hasParasiteTail() && rand(5) == 0) // Given that we're not using tailGenitalArg anymore.
{
    // var newTailColor = RandomInCollection(["blue", "aquamarine"]); Not needed since pc.shiftAnyVagina or Cock both change the colour.

    if(pc.hasTailCock() && pc.tailCock.ctype == GLOBAL.TYPE_SUULA) // Might wanna check this since tailCock.type doesn't return anything but .ctype does
    {
        output("\n\nYour slippery freeloader works itself into a frenzy as it curls around your body and tries to thrust into your face. Luckily you’re able to stop it from forcing its way down your throat, but you quickly notice that the penis at the end has changed. It’s sprouted a collection of tentacles up and down its shaft, with the largest groupings around the base and crown. <b>Seems its tip has changed to mimic a suula now.</b>");

        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        // pc.addTailFlag(GLOBAL.FLAG_APHRODISIAC_LACED); Added with shiftAnyCock instead
        // pc.addTailFlag(GLOBAL.FLAG_STINGER_BASED);
        pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
        
        pc.addTailFlag(GLOBAL.FLAG_TAILCOCK);
        pc.shiftAnyCock(pc.tailCock, GLOBAL.TYPE_SUULA); // I think that's how your meant to do it.
       
        changes++;
    }
    else if(pc.hasTailCunt() && pc.tailCunt.type = GLOBAL.TYPE_SUULA)
    {
        output("\n\nYour freeloading partner ungulates rapidly before curling around your body, showing off its slit to you. You blink, noticing little tentacles trying to reach out and grab an invisible invader. <b>Your tail pussy is mimicking a suula vagina now!</b>");

        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        if(pc.tailType == GLOBAL.TYPE_CUNTSNAKE) pc.addTailFlag(GLOBAL.FLAG_THICK); // Should'nt it always be a cuntsnake at this point?
        //pc.addTailFlag(GLOBAL.FLAG_APHRODISIAC_LACED);
        //pc.addTailFlag(GLOBAL.FLAG_NUBBY);
        //pc.addTailFlag(GLOBAL.FLAG_TENDRIL);
        pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
        
        pc.addTailFlag(GLOBAL.FLAG_TAILCUNT);
        pc.shiftAnyVagina(pc.tailCunt, GLOBAL.TYPE_SUULA); // Also randomly changes the colour of the tailcunt.

        changes++;
        
    }

        // pc.tailGenitalArg = GLOBAL.TYPE_SIREN; This is what it was.
        // pc.tailGenitalColor = newTailColor;
}
Hopefully I haven't missed anything.
 

Karretch

Well-Known Member
Aug 26, 2015
2,063
301
I appreciate all the help you're doing.

if(pc.tailType == GLOBAL.TYPE_CUNTSNAKE) pc.addTailFlag(GLOBAL.FLAG_THICK); // Should'nt it always be a cuntsnake at this point?
Considering few TFs touch parasitic tails it's hard to argue. I recall when it was implemented questioning the fox TFs changing tail away from cockvine/cuntsnake and being told that was the intention. Since it went through, I can only assume that it was sanctioned. I can assume SB was also written like that, though I'm unsure if the implication was to remove the parasictic nature like Foxfire/Snowfire.

The way it was coded would work for any non-parasitic tails as well, so just to allow future proofing of non-parasitic tails (if ever that happens) I'd change it to
if(pc.tailType == GLOBAL.TYPE_COCKVINE) pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
and then subset the cuntsnake argument into it's own bracket like
if(pc.tailType == GLOBAL.TYPE_CUNTSNAKE)
{
pc.addTailFlag(GLOBAL.FLAG_THICK);
pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
}

Assuming I did this correctly (mostly just parroting the style already written), then this hopefully should allow it to work?
 
Last edited:

OrangeBurner

Well-Known Member
Mar 13, 2022
305
72
Given the comments above the function, the if statement checking if the tail is parasitic and the wiki. We can probably assume Siren's Bounty tail genital changes are only meant to work on parasitic tails and keep them parasitic (though it could be easily argued that it should work on non-parasitic cunttails given that you can't currently change non-parasitic tails to a suula one without the console).

All I can say is that I definitely wouldn't be against allowing it to also work with non-parasitic tails.

So possibly something like this?
(Hopefully, I got most things correct.)
JavaScript:
// Change Tail Genitals to Suula
// PC has parasitic tail or non-parasitic tail.
// Tail Cock: Change Tail genital race to suula
// Cunt Tail: Change Tail genital race to suula
if(changes < changeLimit && pc.hasTailGenital() && !(pc.hasTailGenital(GLOBAL.TYPE_SUULA)) && rand(5) == 0) // BEFORE EDIT: pc.hasTailGential() might be redundant but putting it anyway.
{
    // EDIT: I remembered that pc.TailGenital can take a type argument to check for the penis/vagina type. Meaning that I don't have to check indivually
    var hasParasite = (pc.hasParasiteTail()); // Who knows maybe different tail parasites may be added (I much doubt it but given this is for the sake of future proofing...)
 
    if(pc.hasTailCock()) // BEFORE EDIT: OOPS! It's meant to be a != not a ==.
    { // EDIT: Because of now pc.hasTailGenital() taking a type argument (&& pc.tailCock.ctype != GLOBAL.TYPE_SUULA) shouldn't be necessary anymore.
     
        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        pc.addTailFlag(GLOBAL.FLAG_TAILCOCK);
     
        if(hasParasite)
        {
            output("\n\nYour slippery freeloader works itself into a frenzy as it curls around your body and tries to thrust into your face. Luckily you’re able to stop it from forcing its way down your throat, but you quickly notice that the penis at the end has changed. It’s sprouted a collection of tentacles up and down its shaft, with the largest groupings around the base and crown. <b>Seems its tip has changed to mimic a suula now.</b>");
            // If you want to add something specific for cockvine parasites here put if (pc.tailType == GLOBAL.TYPE_COCKVINE) then whatever flags you want.
            pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
        }
        else
        {
            // I'm not a writer so ehhh.
            output("\n\nYou feel a satisfying warmth running down your genti-tail, you grab hold of it to bring the end into your vision and you quickly notice that the penis at the end has changed. It’s sprouted a collection of tentacles up and down its shaft, with the largest groupings around the base and crown. <b>Seems its tip has changed to mimic a suula now.</b>");
        }
     
        pc.shiftAnyCock(pc.tailCock, GLOBAL.TYPE_SUULA);
     
        changes++;
    }
    else if(pc.hasTailCunt()) // BEFORE EDIT: OOPS! forgot an ! (it was just = before).
    { // EDIT: Because of now pc.hasTailGenital() taking a type argument (&& pc.tailCunt.type != GLOBAL.TYPE_SUULA) shouldn't be necessary anymore.
     
        pc.clearTailFlags();
        pc.addTailFlag(GLOBAL.FLAG_LONG);
        pc.addTailFlag(GLOBAL.FLAG_PREHENSILE);
        pc.addTailFlag(GLOBAL.FLAG_TAILCUNT);

        if(hasParasite)
        {
            output("\n\nYour freeloading partner ungulates rapidly before curling around your body, showing off its slit to you. You blink, noticing little tentacles trying to reach out and grab an invisible invader. <b>Your tail pussy is mimicking a suula vagina now!</b>");
            if(pc.tailType == GLOBAL.TYPE_CUNTSNAKE) pc.addTailFlag(GLOBAL.FLAG_THICK); // Might be different parasites, who knows?
            pc.addTailFlag(GLOBAL.FLAG_PARASITIC);
        }
        else
        {
            output("\n\nYou feel a satisfying warmth running down your genti-tail, you grab hold of it to bring the end into your vision. You blink, noticing little tentacles trying to reach out and grab an invisible invader. <b>Your tail pussy is mimicking a suula vagina now!</b>");
        }

        pc.shiftAnyVagina(pc.tailCunt, GLOBAL.TYPE_SUULA); // Also randomly changes the colour of the tailcunt.

        changes++;
     
    }

}

I will say on my previous 'Fixed(?) Code' when checking for the tailCock.cType I got it wrong it was meant to be a != not a == (basically it was checking if the tailCock was already a Suula then changing it back into a Suula.) and for tailCunt.type I simply forgot the !.

EDIT: I now remembered that hasTailGenital() takes a type argument meaning that I can just check for the Suula type there instead of indiviually checking on both tailcock and tailcunt.
 
Last edited: