Program: 171338
Project: 171338
Buggy source:
public String getAssDescription(GameCharacter owner){
  descriptionSB=new StringBuilder();
  boolean isPlayer=owner.isPlayer();
switch (ass.getType()) {
case HUMAN:
    if (isPlayer) {
      descriptionSB.append("String_Node_Str");
    }
 else {
      descriptionSB.append("String_Node_Str");
    }
  break;
case ANGEL:
if (isPlayer) {
  descriptionSB.append("String_Node_Str");
}
 else {
  descriptionSB.append("String_Node_Str");
}
break;
case DEMON_COMMON:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case DOG_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case WOLF_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case CAT_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case SQUIRREL_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case HORSE_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case COW_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case HARPY:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case SLIME:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
}
if (ass.getAnus().isBleached()) {
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
}
 else {
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
}
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(ass.getAnus().getOrificeAnus().getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(ass.getAnus().getOrificeAnus().getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
if (isPlayer) {
if (ass.getAnus().getOrificeAnus().isVirgin()) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str");
}
 else {
for (PenetrationType pt : PenetrationType.values()) {
if (Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER)) != null && !Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER)).isEmpty()) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str"+ Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER))+ "String_Node_Str");
}
}
}
}
switch (ass.getAnus().getOrificeAnus().getWetness(owner)) {
case ZERO_DRY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_SLIGHTLY_MOIST:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_MOIST:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_WET:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_SLIMY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_SLOPPY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SOPPING_WET:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_DROOLING:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
switch (ass.getAnus().getOrificeAnus().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;
}
switch (ass.getAnus().getOrificeAnus().getPlasticity()) {
case ZERO_RUBBERY:
descriptionSB.append("String_Node_Str");
break;
case ONE_SPRINGY:
descriptionSB.append("String_Node_Str");
break;
case TWO_TENSILE:
descriptionSB.append("String_Node_Str");
break;
case THREE_RESILIENT:
descriptionSB.append("String_Node_Str");
break;
case FOUR_ACCOMMODATING:
descriptionSB.append("String_Node_Str");
break;
case FIVE_YIELDING:
descriptionSB.append("String_Node_Str");
break;
case SIX_MALLEABLE:
descriptionSB.append("String_Node_Str");
break;
case SEVEN_MOULDABLE:
descriptionSB.append("String_Node_Str");
break;
default :
break;
}
if (Main.game.isBodyHairEnabled()) {
if (owner.isPlayer()) {
switch (ass.getAnus().getAssHair()) {
case ZERO_NONE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getName(owner,true) + "String_Node_Str");
break;
case ONE_STUBBLE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case TWO_MANICURED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case THREE_TRIMMED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FOUR_NATURAL:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FIVE_UNKEMPT:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SIX_BUSHY:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SEVEN_WILD:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
}
}
 else {
switch (ass.getAnus().getAssHair()) {
case ZERO_NONE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getName(owner,true) + "String_Node_Str");
break;
case ONE_STUBBLE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case TWO_MANICURED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case THREE_TRIMMED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FOUR_NATURAL:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FIVE_UNKEMPT:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SIX_BUSHY:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SEVEN_WILD:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
}
}
}
for (OrificeModifier om : OrificeModifier.values()) {
if (owner.hasAssOrificeModifier(om)) {
if (owner.isPlayer()) {
switch (om) {
case MUSCLE_CONTROL:
descriptionSB.append("String_Node_Str");
break;
case PUFFY:
descriptionSB.append("String_Node_Str");
break;
case RIBBED:
descriptionSB.append("String_Node_Str");
break;
case TENTACLED:
descriptionSB.append("String_Node_Str");
break;
}
}
 else {
switch (om) {
case MUSCLE_CONTROL:
descriptionSB.append("String_Node_Str");
break;
case PUFFY:
descriptionSB.append("String_Node_Str");
break;
case RIBBED:
descriptionSB.append("String_Node_Str");
break;
case TENTACLED:
descriptionSB.append("String_Node_Str");
break;
}
}
}
}
return UtilText.parse(owner,descriptionSB.toString());
}

Fixed version (ground truth):
public String getAssDescription(GameCharacter owner){
  descriptionSB=new StringBuilder();
  boolean isPlayer=owner.isPlayer();
switch (ass.getType()) {
case HUMAN:
    if (isPlayer) {
      descriptionSB.append("String_Node_Str");
    }
 else {
      descriptionSB.append("String_Node_Str");
    }
  break;
case ANGEL:
if (isPlayer) {
  descriptionSB.append("String_Node_Str");
}
 else {
  descriptionSB.append("String_Node_Str");
}
break;
case DEMON_COMMON:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case DOG_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case WOLF_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case CAT_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case SQUIRREL_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case HORSE_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case COW_MORPH:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case HARPY:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
case SLIME:
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
break;
}
if (ass.getAnus().isBleached()) {
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
}
 else {
if (isPlayer) {
descriptionSB.append("String_Node_Str");
}
 else {
descriptionSB.append("String_Node_Str");
}
}
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str"+ Capacity.getCapacityFromValue(ass.getAnus().getOrificeAnus().getStretchedCapacity()).getDescriptor()+ "String_Node_Str"+ Capacity.getCapacityFromValue(ass.getAnus().getOrificeAnus().getStretchedCapacity()).getMaximumSizeComfortableWithLube().getDescriptor()+ "String_Node_Str");
if (isPlayer) {
if (ass.getAnus().getOrificeAnus().isVirgin()) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str");
}
 else {
for (PenetrationType pt : PenetrationType.values()) {
if (Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER)) != null && !Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER)).isEmpty()) {
descriptionSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str"+ Main.game.getPlayer().getVirginityLoss(new SexType(pt,OrificeType.ANUS_PLAYER))+ "String_Node_Str");
break;
}
}
}
}
switch (ass.getAnus().getOrificeAnus().getWetness(owner)) {
case ZERO_DRY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case ONE_SLIGHTLY_MOIST:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case TWO_MOIST:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case THREE_WET:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FOUR_SLIMY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case FIVE_SLOPPY:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SIX_SOPPING_WET:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
case SEVEN_DROOLING:
descriptionSB.append("String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str");
break;
default :
break;
}
switch (ass.getAnus().getOrificeAnus().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;
}
switch (ass.getAnus().getOrificeAnus().getPlasticity()) {
case ZERO_RUBBERY:
descriptionSB.append("String_Node_Str");
break;
case ONE_SPRINGY:
descriptionSB.append("String_Node_Str");
break;
case TWO_TENSILE:
descriptionSB.append("String_Node_Str");
break;
case THREE_RESILIENT:
descriptionSB.append("String_Node_Str");
break;
case FOUR_ACCOMMODATING:
descriptionSB.append("String_Node_Str");
break;
case FIVE_YIELDING:
descriptionSB.append("String_Node_Str");
break;
case SIX_MALLEABLE:
descriptionSB.append("String_Node_Str");
break;
case SEVEN_MOULDABLE:
descriptionSB.append("String_Node_Str");
break;
default :
break;
}
if (Main.game.isBodyHairEnabled()) {
if (owner.isPlayer()) {
switch (ass.getAnus().getAssHair()) {
case ZERO_NONE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getName(owner,true) + "String_Node_Str");
break;
case ONE_STUBBLE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case TWO_MANICURED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case THREE_TRIMMED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FOUR_NATURAL:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FIVE_UNKEMPT:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SIX_BUSHY:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SEVEN_WILD:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
}
}
 else {
switch (ass.getAnus().getAssHair()) {
case ZERO_NONE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getName(owner,true) + "String_Node_Str");
break;
case ONE_STUBBLE:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case TWO_MANICURED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case THREE_TRIMMED:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FOUR_NATURAL:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case FIVE_UNKEMPT:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SIX_BUSHY:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
case SEVEN_WILD:
descriptionSB.append("String_Node_Str" + owner.getAssHairType().getFullDescription(owner,true) + "String_Node_Str");
break;
}
}
}
for (OrificeModifier om : OrificeModifier.values()) {
if (owner.hasAssOrificeModifier(om)) {
if (owner.isPlayer()) {
switch (om) {
case MUSCLE_CONTROL:
descriptionSB.append("String_Node_Str");
break;
case PUFFY:
descriptionSB.append("String_Node_Str");
break;
case RIBBED:
descriptionSB.append("String_Node_Str");
break;
case TENTACLED:
descriptionSB.append("String_Node_Str");
break;
}
}
 else {
switch (om) {
case MUSCLE_CONTROL:
descriptionSB.append("String_Node_Str");
break;
case PUFFY:
descriptionSB.append("String_Node_Str");
break;
case RIBBED:
descriptionSB.append("String_Node_Str");
break;
case TENTACLED:
descriptionSB.append("String_Node_Str");
break;
}
}
}
}
return UtilText.parse(owner,descriptionSB.toString());
}