Program: 171416
Project: 171416
Buggy source:
public String getVaginaDescription(GameCharacter owner){
  boolean isPlayer=owner.isPlayer();
  descriptionSB=new StringBuilder();
  if (isPlayer) {
    if (penis.getType() != PenisType.NONE)     descriptionSB.append("String_Node_Str" + penis.getName(owner,false) + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str");
  }
 else {
    if (penis.getType() != PenisType.NONE)     descriptionSB.append("String_Node_Str" + penis.getName(owner,false) + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str");
  }
switch (vagina.getType()) {
case HUMAN:
    if (isPlayer)     descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
  break;
case ANGEL:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
break;
case DEMON_COMMON:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case DOG_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case WOLF_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case CAT_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case HORSE_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case HARPY:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case SLIME:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
break;
default :
break;
}
if (isPlayer) {
if (owner.getVaginaRawClitorisSizeValue() == 0) descriptionSB.append("String_Node_Str");
 else descriptionSB.append("String_Node_Str");
}
 else {
if (owner.getVaginaRawClitorisSizeValue() == 0) descriptionSB.append("String_Node_Str");
 else descriptionSB.append("String_Node_Str");
}
if (vagina.isVirgin()) {
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ "String_Node_Str"+ Colour.GENERIC_GOOD.toWebHexString()+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str");
}
 else {
if (isPlayer) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
for (PenetrationType pt : PenetrationType.values()) {
if (Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.VAGINA_PLAYER)) != null) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str"+ Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.VAGINA_PLAYER))+ "String_Node_Str");
}
}
}
 else {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
}
}
switch (vagina.getWetness()) {
case ZERO_DRY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_SLIGHTLY_MOIST:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_MOIST:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_WET:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_SLIMY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_SLOPPY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SOPPING_WET:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_DROOLING:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
switch (vagina.getElasticity()) {
case ZERO_UNYIELDING:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_RIGID:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_FIRM:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_FLEXIBLE:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_LIMBER:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_STRETCHY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SUPPLE:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_ELASTIC:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
return UtilText.parse(owner,descriptionSB.toString());
}

Fixed version (ground truth):
public String getVaginaDescription(GameCharacter owner){
  boolean isPlayer=owner.isPlayer();
  descriptionSB=new StringBuilder();
  if (isPlayer) {
    if (penis.getType() != PenisType.NONE)     descriptionSB.append("String_Node_Str" + penis.getName(owner,false) + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str");
  }
 else {
    if (penis.getType() != PenisType.NONE)     descriptionSB.append("String_Node_Str" + penis.getName(owner,false) + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str");
  }
switch (vagina.getType()) {
case HUMAN:
    if (isPlayer)     descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else     descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
  break;
case ANGEL:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
break;
case DEMON_COMMON:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case DOG_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case WOLF_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case CAT_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case HORSE_MORPH:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case HARPY:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str"+ "String_Node_Str");
break;
case SLIME:
if (isPlayer) descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + (vagina.isPierced() ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
break;
default :
break;
}
if (isPlayer) {
if (owner.getVaginaRawClitorisSizeValue() == 0) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str" + (owner.getVaginaRawClitorisSizeValue() == 1 ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
}
}
 else {
if (owner.getVaginaRawClitorisSizeValue() == 0) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str" + (owner.getVaginaRawClitorisSizeValue() == 1 ? "String_Node_Str" : "String_Node_Str") + "String_Node_Str");
}
}
if (vagina.isVirgin()) {
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ "String_Node_Str"+ Colour.GENERIC_GOOD.toWebHexString()+ "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str"+ vagina.getName(owner,false)+ "String_Node_Str");
}
 else {
if (isPlayer) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
for (PenetrationType pt : PenetrationType.values()) {
if (Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.VAGINA_PLAYER)) != null && pt.isTakesVirginity()) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str"+ Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.VAGINA_PLAYER))+ "String_Node_Str");
}
}
}
 else {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(vagina.getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
}
}
switch (vagina.getWetness()) {
case ZERO_DRY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_SLIGHTLY_MOIST:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_MOIST:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_WET:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_SLIMY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_SLOPPY:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SOPPING_WET:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_DROOLING:
if (isPlayer) descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
 else descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
switch (vagina.getElasticity()) {
case ZERO_UNYIELDING:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_RIGID:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_FIRM:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_FLEXIBLE:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_LIMBER:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_STRETCHY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SUPPLE:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_ELASTIC:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
return UtilText.parse(owner,descriptionSB.toString());
}