Program: 171293
Project: 171293
Buggy source:
@Override public void handleEvent(Event event){
  if (item != null || (coreItem instanceof AbstractItem)) {
    if (coreItem != null)     item=(AbstractItem)coreItem;
    int yIncrease=0;
    if (InventoryDialogue.getInventoryNPC() != null && InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      yIncrease+=2;
    }
    if (item.getItemEffects().size() > 0) {
      for (      ItemEffect ie : item.getItemEffects()) {
        yIncrease+=ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).size();
      }
    }
    Main.mainController.setTooltipSize(360,290 + (20 * yIncrease));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(item.getDisplayName(true)) + "String_Node_Str");
    if (item.getItemEffects().size() > 0) {
      tooltipSB.append("String_Node_Str");
      int ieCount=0;
      for (      ItemEffect ie : item.getItemEffects()) {
        if (ieCount > 0)         tooltipSB.append("String_Node_Str");
        ieCount++;
        for (int i=0; i < ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).size(); i++) {
          if (i != 0)           tooltipSB.append("String_Node_Str");
          tooltipSB.append(ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).get(i));
        }
      }
      tooltipSB.append("String_Node_Str");
    }
    tooltipSB.append("String_Node_Str" + (item.isConsumedOnUse() ? "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str") + "String_Node_Str"+ "String_Node_Str"+ (item.isAbleToBeUsedInCombat() ? (item.isAbleToBeUsedInSex() ? "String_Node_Str" + Colour.GENERIC_COMBAT.toWebHexString() + "String_Node_Str"+ Colour.GENERIC_SEX.toWebHexString()+ "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_COMBAT.toWebHexString() + "String_Node_Str") : (item.isAbleToBeUsedInSex() ? "String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str" : "String_Node_Str"))+ "String_Node_Str"+ "String_Node_Str"+ UtilText.parse(item.getDescription())+ "String_Node_Str"+ "String_Node_Str"+ UtilText.formatAsMoney(item.getValue())+ "String_Node_Str");
    if (InventoryDialogue.getInventoryNPC() != null && InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      if (owner.isPlayer()) {
        if (InventoryDialogue.getInventoryNPC().willBuy(item))         tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(item.getPrice(InventoryDialogue.getInventoryNPC().getBuyModifier()))+ "String_Node_Str");
 else         tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ InventoryDialogue.getInventoryNPC().getName("String_Node_Str")+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        if (InventoryDialogue.isBuyback()) {
          tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(getBuybackPriceFor(item))+ "String_Node_Str");
        }
 else {
          tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(item.getPrice(InventoryDialogue.getInventoryNPC().getSellModifier()))+ "String_Node_Str");
        }
      }
    }
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (weapon != null || (coreItem instanceof AbstractWeapon)) {
    if (coreItem != null)     weapon=(AbstractWeapon)coreItem;
    weaponTooltip(weapon);
  }
 else   if (clothing != null || (coreItem instanceof AbstractClothing)) {
    if (coreItem != null)     clothing=(AbstractClothing)coreItem;
    clothingTooltip(clothing);
  }
 else   if (dyeClothing != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    if (colour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(colour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(colour,InventoryDialogue.dyePreviewSecondary,InventoryDialogue.dyePreviewTertiary)+ "String_Node_Str");
    }
 else     if (secondaryColour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(secondaryColour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(InventoryDialogue.dyePreviewPrimary,secondaryColour,InventoryDialogue.dyePreviewTertiary)+ "String_Node_Str");
    }
 else     if (tertiaryColour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(tertiaryColour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(InventoryDialogue.dyePreviewPrimary,InventoryDialogue.dyePreviewSecondary,tertiaryColour)+ "String_Node_Str");
    }
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (genericItem != null) {
    Main.mainController.setTooltipSize(360,60);
    Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(genericItem.getName(false)) + "String_Node_Str"));
  }
 else   if (genericClothing != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + genericClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(genericClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(colour.getName())+ "String_Node_Str"+ "String_Node_Str"+ genericClothing.getSVGImage(colour,genericClothing.getAvailableSecondaryColours().isEmpty() ? null : genericClothing.getAvailableSecondaryColours().get(0),genericClothing.getAvailableTertiaryColours().isEmpty() ? null : genericClothing.getAvailableTertiaryColours().get(0))+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (genericWeapon != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + genericWeapon.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(genericWeapon.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(dt.getName())+ "String_Node_Str"+ "String_Node_Str"+ genericWeapon.getSVGStringMap().get(dt)+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (invSlot != null) {
    if (invSlot == InventorySlot.WEAPON_MAIN) {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getMainWeapon() == null) {
          Main.mainController.setTooltipSize(360,60);
          Main.mainController.setTooltipContent("String_Node_Str");
        }
 else {
          weaponTooltip(equippedToCharacter.getMainWeapon());
        }
      }
 else {
        Main.mainController.setTooltipSize(360,60);
        Main.mainController.setTooltipContent("String_Node_Str");
      }
    }
 else     if (invSlot == InventorySlot.WEAPON_OFFHAND) {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getOffhandWeapon() == null) {
          Main.mainController.setTooltipSize(360,60);
          Main.mainController.setTooltipContent("String_Node_Str");
        }
 else {
          weaponTooltip(equippedToCharacter.getOffhandWeapon());
        }
      }
 else {
        Main.mainController.setTooltipSize(360,60);
        Main.mainController.setTooltipContent("String_Node_Str");
      }
    }
 else {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getClothingInSlot(invSlot) == null) {
          List<String> clothingBlockingThisSlot=new ArrayList<>();
          for (          AbstractClothing c : equippedToCharacter.getClothingCurrentlyEquipped())           if (c.getClothingType().getIncompatibleSlots().contains(invSlot))           clothingBlockingThisSlot.add(c.getName());
          if (!clothingBlockingThisSlot.isEmpty()) {
            setBlockedTooltipContent("String_Node_Str" + Colour.SEALED.toWebHexString() + "String_Node_Str"+ Util.stringsToStringList(clothingBlockingThisSlot,false)+ "String_Node_Str");
          }
 else           if (invSlot.slotBlockedByRace(equippedToCharacter) != null) {
            setBlockedTooltipContent(invSlot.getCannotBeWornDescription(equippedToCharacter));
          }
 else {
            boolean piercingBlocked=false;
switch (invSlot) {
case PIERCING_VAGINA:
              if (equippedToCharacter.getVaginaType() == VaginaType.NONE) {
                setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
                piercingBlocked=true;
              }
 else               if (!equippedToCharacter.isPiercedVagina()) {
                setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
                piercingBlocked=true;
              }
            break;
case PIERCING_EAR:
          if (!equippedToCharacter.isPiercedEar()) {
            setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
            piercingBlocked=true;
          }
        break;
case PIERCING_LIP:
      if (!equippedToCharacter.isPiercedLip()) {
        setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
        piercingBlocked=true;
      }
    break;
case PIERCING_NIPPLE:
  if (!equippedToCharacter.isPiercedNipple()) {
    setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
    piercingBlocked=true;
  }
break;
case PIERCING_NOSE:
if (!equippedToCharacter.isPiercedNose()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
case PIERCING_PENIS:
if (equippedToCharacter.getPenisType() == PenisType.NONE) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
 else if (!equippedToCharacter.isPiercedPenis()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
case PIERCING_STOMACH:
if (!equippedToCharacter.isPiercedNavel()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
case PIERCING_TONGUE:
if (!equippedToCharacter.isPiercedTongue()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
default :
break;
}
if (!piercingBlocked) {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(invSlot.getName()) + "String_Node_Str"));
}
}
}
 else {
clothingTooltip(equippedToCharacter.getClothingInSlot(invSlot));
}
}
 else {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(invSlot.getName()) + "String_Node_Str"));
}
}
}
 else if (enchantmentModifier != null) {
Main.mainController.setTooltipSize(360,174);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + enchantmentModifier.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(enchantmentModifier.getName())+ "String_Node_Str"+ "String_Node_Str"+ UtilText.parse(enchantmentModifier.getDescription())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ EnchantmentDialogue.ingredient.getRelatedEssence().getColour().toWebHexString()+ "String_Node_Str"+ enchantmentModifier.getValue()+ "String_Node_Str"+ EnchantmentDialogue.ingredient.getRelatedEssence().getName()+ "String_Node_Str"+ "String_Node_Str"));
}
 else if (essence != null) {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + essence.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(essence.getName())+ "String_Node_Str"));
}
 else {
return;
}
(new Thread(new TooltipUpdateThread())).start();
}

Fixed version (ground truth):
@Override public void handleEvent(Event event){
  if (item != null || (coreItem instanceof AbstractItem)) {
    if (coreItem != null)     item=(AbstractItem)coreItem;
    int yIncrease=0;
    if (InventoryDialogue.getInventoryNPC() != null && InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      yIncrease+=2;
    }
    if (item.getItemEffects().size() > 0) {
      for (      ItemEffect ie : item.getItemEffects()) {
        yIncrease+=ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).size();
      }
    }
    Main.mainController.setTooltipSize(360,290 + (20 * yIncrease));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(item.getDisplayName(true)) + "String_Node_Str");
    if (item.getItemEffects().size() > 0) {
      tooltipSB.append("String_Node_Str");
      int ieCount=0;
      for (      ItemEffect ie : item.getItemEffects()) {
        if (ieCount > 0)         tooltipSB.append("String_Node_Str");
        ieCount++;
        for (int i=0; i < ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).size(); i++) {
          if (i != 0)           tooltipSB.append("String_Node_Str");
          tooltipSB.append(ie.getEffectsDescription(Main.game.getPlayer(),Main.game.getPlayer()).get(i));
        }
      }
      tooltipSB.append("String_Node_Str");
    }
    tooltipSB.append("String_Node_Str" + (item.isConsumedOnUse() ? "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str") + "String_Node_Str"+ "String_Node_Str"+ (item.isAbleToBeUsedInCombat() ? (item.isAbleToBeUsedInSex() ? "String_Node_Str" + Colour.GENERIC_COMBAT.toWebHexString() + "String_Node_Str"+ Colour.GENERIC_SEX.toWebHexString()+ "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_COMBAT.toWebHexString() + "String_Node_Str") : (item.isAbleToBeUsedInSex() ? "String_Node_Str" + Colour.GENERIC_SEX.toWebHexString() + "String_Node_Str" : "String_Node_Str"))+ "String_Node_Str"+ "String_Node_Str"+ UtilText.parse(item.getDescription())+ "String_Node_Str"+ "String_Node_Str"+ UtilText.formatAsMoney(item.getValue())+ "String_Node_Str");
    if (InventoryDialogue.getInventoryNPC() != null && InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      if (owner.isPlayer()) {
        if (InventoryDialogue.getInventoryNPC().willBuy(item))         tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(item.getPrice(InventoryDialogue.getInventoryNPC().getBuyModifier()))+ "String_Node_Str");
 else         tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ InventoryDialogue.getInventoryNPC().getName("String_Node_Str")+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        if (InventoryDialogue.isBuyback()) {
          tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(getBuybackPriceFor(item))+ "String_Node_Str");
        }
 else {
          tooltipSB.append("String_Node_Str" + InventoryDialogue.getInventoryNPC().getName("String_Node_Str") + "String_Node_Str"+ UtilText.formatAsMoney(item.getPrice(InventoryDialogue.getInventoryNPC().getSellModifier()))+ "String_Node_Str");
        }
      }
    }
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (weapon != null || (coreItem instanceof AbstractWeapon)) {
    if (coreItem != null)     weapon=(AbstractWeapon)coreItem;
    weaponTooltip(weapon);
  }
 else   if (clothing != null || (coreItem instanceof AbstractClothing)) {
    if (coreItem != null)     clothing=(AbstractClothing)coreItem;
    clothingTooltip(clothing);
  }
 else   if (dyeClothing != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    if (colour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(colour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(colour,InventoryDialogue.dyePreviewSecondary,InventoryDialogue.dyePreviewTertiary)+ "String_Node_Str");
    }
 else     if (secondaryColour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(secondaryColour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(InventoryDialogue.dyePreviewPrimary,secondaryColour,InventoryDialogue.dyePreviewTertiary)+ "String_Node_Str");
    }
 else     if (tertiaryColour != null) {
      tooltipSB.append("String_Node_Str" + dyeClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(dyeClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(tertiaryColour.getName())+ "String_Node_Str"+ "String_Node_Str"+ dyeClothing.getClothingType().getSVGImage(InventoryDialogue.dyePreviewPrimary,InventoryDialogue.dyePreviewSecondary,tertiaryColour)+ "String_Node_Str");
    }
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (genericItem != null) {
    Main.mainController.setTooltipSize(360,60);
    Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(genericItem.getName(false)) + "String_Node_Str"));
  }
 else   if (genericClothing != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + genericClothing.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(genericClothing.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(colour.getName())+ "String_Node_Str"+ "String_Node_Str"+ genericClothing.getSVGImage(colour,genericClothing.getAvailableSecondaryColours().isEmpty() ? null : genericClothing.getAvailableSecondaryColours().get(0),genericClothing.getAvailableTertiaryColours().isEmpty() ? null : genericClothing.getAvailableTertiaryColours().get(0))+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (genericWeapon != null) {
    Main.mainController.setTooltipSize(360,446);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + genericWeapon.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(genericWeapon.getName())+ "String_Node_Str"+ "String_Node_Str"+ Util.capitaliseSentence(dt.getName())+ "String_Node_Str"+ "String_Node_Str"+ genericWeapon.getSVGStringMap().get(dt)+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (invSlot != null) {
    if (invSlot == InventorySlot.WEAPON_MAIN) {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getMainWeapon() == null) {
          Main.mainController.setTooltipSize(360,60);
          Main.mainController.setTooltipContent("String_Node_Str");
        }
 else {
          weaponTooltip(equippedToCharacter.getMainWeapon());
        }
      }
 else {
        Main.mainController.setTooltipSize(360,60);
        Main.mainController.setTooltipContent("String_Node_Str");
      }
    }
 else     if (invSlot == InventorySlot.WEAPON_OFFHAND) {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getOffhandWeapon() == null) {
          Main.mainController.setTooltipSize(360,60);
          Main.mainController.setTooltipContent("String_Node_Str");
        }
 else {
          weaponTooltip(equippedToCharacter.getOffhandWeapon());
        }
      }
 else {
        Main.mainController.setTooltipSize(360,60);
        Main.mainController.setTooltipContent("String_Node_Str");
      }
    }
 else {
      if (equippedToCharacter != null) {
        if (equippedToCharacter.getClothingInSlot(invSlot) == null) {
          List<String> clothingBlockingThisSlot=new ArrayList<>();
          for (          AbstractClothing c : equippedToCharacter.getClothingCurrentlyEquipped()) {
            if (c.getClothingType().getIncompatibleSlots().contains(invSlot)) {
              clothingBlockingThisSlot.add(c.getName());
            }
          }
          if (!clothingBlockingThisSlot.isEmpty()) {
            setBlockedTooltipContent("String_Node_Str" + Colour.SEALED.toWebHexString() + "String_Node_Str"+ Util.stringsToStringList(clothingBlockingThisSlot,false)+ "String_Node_Str");
          }
 else           if (invSlot.slotBlockedByRace(equippedToCharacter) != null) {
            setBlockedTooltipContent(invSlot.getCannotBeWornDescription(equippedToCharacter));
          }
 else {
            boolean piercingBlocked=false;
switch (invSlot) {
case PIERCING_VAGINA:
              if (equippedToCharacter.getVaginaType() == VaginaType.NONE) {
                setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str",(equippedToCharacter.getPlayerKnowsAreasMap().get(CoverableArea.VAGINA) ? "String_Node_Str" : "String_Node_Str")));
                piercingBlocked=true;
              }
 else               if (!equippedToCharacter.isPiercedVagina()) {
                setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str",(equippedToCharacter.getPlayerKnowsAreasMap().get(CoverableArea.VAGINA) ? "String_Node_Str" : "String_Node_Str")));
                piercingBlocked=true;
              }
            break;
case PIERCING_EAR:
          if (!equippedToCharacter.isPiercedEar()) {
            setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
            piercingBlocked=true;
          }
        break;
case PIERCING_LIP:
      if (!equippedToCharacter.isPiercedLip()) {
        setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
        piercingBlocked=true;
      }
    break;
case PIERCING_NIPPLE:
  if (!equippedToCharacter.isPiercedNipple()) {
    setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str",(equippedToCharacter.getPlayerKnowsAreasMap().get(CoverableArea.NIPPLES) ? "String_Node_Str" : "String_Node_Str")));
    piercingBlocked=true;
  }
break;
case PIERCING_NOSE:
if (!equippedToCharacter.isPiercedNose()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
case PIERCING_PENIS:
if (equippedToCharacter.getPenisType() == PenisType.NONE) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str",(equippedToCharacter.getPlayerKnowsAreasMap().get(CoverableArea.PENIS) ? "String_Node_Str" : "String_Node_Str")));
piercingBlocked=true;
}
 else if (!equippedToCharacter.isPiercedPenis()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str",(equippedToCharacter.getPlayerKnowsAreasMap().get(CoverableArea.PENIS) ? "String_Node_Str" : "String_Node_Str")));
piercingBlocked=true;
}
break;
case PIERCING_STOMACH:
if (!equippedToCharacter.isPiercedNavel()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
case PIERCING_TONGUE:
if (!equippedToCharacter.isPiercedTongue()) {
setBlockedTooltipContent(getTooltipText(equippedToCharacter,"String_Node_Str","String_Node_Str"));
piercingBlocked=true;
}
break;
default :
break;
}
if (!piercingBlocked) {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(invSlot.getName()) + "String_Node_Str"));
}
}
}
 else {
clothingTooltip(equippedToCharacter.getClothingInSlot(invSlot));
}
}
 else {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + Util.capitaliseSentence(invSlot.getName()) + "String_Node_Str"));
}
}
}
 else if (enchantmentModifier != null) {
Main.mainController.setTooltipSize(360,174);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + enchantmentModifier.getRarity().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(enchantmentModifier.getName())+ "String_Node_Str"+ "String_Node_Str"+ UtilText.parse(enchantmentModifier.getDescription())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ EnchantmentDialogue.ingredient.getRelatedEssence().getColour().toWebHexString()+ "String_Node_Str"+ enchantmentModifier.getValue()+ "String_Node_Str"+ EnchantmentDialogue.ingredient.getRelatedEssence().getName()+ "String_Node_Str"+ "String_Node_Str"));
}
 else if (essence != null) {
Main.mainController.setTooltipSize(360,60);
Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + essence.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(essence.getName())+ "String_Node_Str"));
}
 else {
return;
}
(new Thread(new TooltipUpdateThread())).start();
}