Kitteh6660 / Corruption-of-Champions-Mod

CoC source from fenoxo, modded by Kitteh6660
232 stars 97 forks source link

[Bug] #1335

Closed Troller07 closed 5 years ago

Troller07 commented 6 years ago

I have checked the following before submitting this issue:

Overview

Urta does not recognise player male genitalia in the "Vag Fuck" scene.

Game version

1.4.13b android

Expected behaviour

Urta in her dialogs during "Vag Fuck" should recognise the type of player male genitalia correctly.

Actual behaviour

During her dialog in the end of the scene she always recognise it as human, ordinary looking and e.t.c. Also if knot presented she will always recognise your male genitals as dog looking even if it is different type (like equine with knot) and her last dialog with human dong still exist.

How often can this be reproduced?

Always

Steps to reproduce the issue

  1. Gain Lover status with Urta
  2. Visit her in the bar during her sober state
  3. Choose "Her place" and pick "Vag Fuck" option
brrritssocold commented 5 years ago

This comment is to avoid duplicate effort.

I'm working on this issue:

brrritssocold commented 5 years ago

During her dialog in the end of the scene she always recognise it as human, ordinary looking

Found the code that is causing this, should be an easy fix.

Also if knot presented she will always recognise your male genitals as dog looking even if it is different type (like equine with knot) and her last dialog with human dong still exist.

This would require new scenes to be written for the different combinations. AFAIK, when the scene was written, only dog cocks could have knots. This changed at some point and the scenes were never updated to handle this.

brrritssocold commented 5 years ago

@Stadler76 @Kitteh6660 Is a non-canine cock with a knot intended?

Stadler76 commented 5 years ago
[...]\Corruption-of-Champions-Mod\classes\classes\Items\Consumables>grep -P --color=auto --exclude-dir=.git --exclude-dir=target --exclude-dir=build-dep -rn "\.knotMultiplier" .
./CaninePepper.as:178:                                                  player.cocks[0].knotMultiplier = 1.7;
./CaninePepper.as:180:                                                  player.cocks[1].knotMultiplier = 1.7;
./CaninePepper.as:188:                                                  player.cocks[0].knotMultiplier = 1.5;
./CaninePepper.as:191:                                                  player.cocks[1].knotMultiplier = 1.7;
./CaninePepper.as:200:                                                  player.cocks[0].knotMultiplier = 1.4;
./CaninePepper.as:201:                                                  player.cocks[1].knotMultiplier = 1.4;
./CaninePepper.as:212:                                                  player.cocks[1].knotMultiplier = 1.4;
./CaninePepper.as:221:                                                          player.cocks[1].knotMultiplier = 1.4;
./CaninePepper.as:227:                                                          player.cocks[0].knotMultiplier = 1.4;
./CaninePepper.as:254:                                                  if (player.cocks[temp].cockType == CockTypesEnum.DOG && player.cocks[temp].knotMultiplier < player.cocks[temp2].knotMultiplier) temp2 = temp;
./CaninePepper.as:258:                                          if (player.cocks[temp2].knotMultiplier >= 1.5) temp3 /= 2;
./CaninePepper.as:259:                                          if (player.cocks[temp2].knotMultiplier >= 1.75) temp3 /= 2;
./CaninePepper.as:260:                                          if (player.cocks[temp2].knotMultiplier >= 2) temp3 /= 5;
./CaninePepper.as:261:                                          player.cocks[temp2].knotMultiplier += (temp3);
./CaninePepper.as:272:                                          player.cocks[0].knotMultiplier = 2.1;
./CaninePepper.as:321:                                          if (player.cocks[temp].cockType == CockTypesEnum.DOG && player.cocks[temp].knotMultiplier < player.cocks[temp2].knotMultiplier) temp2 = temp;
./CaninePepper.as:325:                                  if (player.cocks[temp2].knotMultiplier >= 1.5) temp3 /= 2;
./CaninePepper.as:326:                                  if (player.cocks[temp2].knotMultiplier >= 1.75) temp3 /= 2;
./CaninePepper.as:327:                                  if (player.cocks[temp2].knotMultiplier >= 2) temp3 /= 5;
./CaninePepper.as:328:                                  player.cocks[temp2].knotMultiplier += (temp3);
./CaninePepper.as:384:                                  player.cocks[temp3].knotMultiplier = 1.1;
./EmberTFs.as:78:                               player.cocks[select].knotMultiplier = 1.3;
./FoxBerry.as:206:                                      player.cocks[select].knotMultiplier = 1.25;
./KangaFruit.as:163:                                                    player.cocks[cockIdx].knotMultiplier = 1;
./WhiskerFruit.as:183:                          player.cocks[i].knotMultiplier = 1;
./WolfPepper.as:130:                            player.cocks[0].knotMultiplier = 1.5;
./WolfPepper.as:161:                                    player.cocks[temp3].knotMultiplier = 1.5;

So it seems, that the only intended non-canine knot is for dragon cocks.

The problem is, that other TFs don't touch the knotMultiplier. Quick and dirty suggestion: In Cock.as:

public function setCockType(cockType:CockTypesEnum, knotMultiplier:Number = 1):void
{
    _cockType = cockType;

    if (knotMultiplier < 0) {
        return;
    }

    _knotMultiplier = knotMultiplier;
}
brrritssocold commented 5 years ago

Would suggest adding a function along the lines of supportsKnot(CockTypesEnum):Boolean to test if the knotMultiplier should be reset.

The downside to this is if a new transformation item is added and the author does not add it to function. Can be implemented as white-list or blacklist.

~~Another option would be to add a interface (transformative?) to items that can transform and force the author to implement the function. Could possible also make sub-interfaces for different categories of transformations, instead of one for all transformations.~~ This would be too convoluted.

Settled on white-list based method. See PR #1357