Program: 171294
Project: 171294
Buggy source:
@Override public void handleEvent(Event event){
  Main.mainController.setTooltipSize(360,180);
  Main.mainController.setTooltipContent("String_Node_Str");
  if (statusEffect != null) {
    int yIncrease=(statusEffect.getModifiersAsStringList(owner).size() > 4 ? statusEffect.getModifiersAsStringList(owner).size() - 4 : 0) + (owner.hasStatusEffect(statusEffect) ? (owner.getStatusEffectDuration(statusEffect) == -1 ? 0 : 2) : 0);
    Main.mainController.setTooltipSize(360,284 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Util.capitaliseSentence(statusEffect.getName(owner)) + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    if (statusEffect.getModifiersAsStringList(owner).size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str");
      for (      String s : statusEffect.getModifiersAsStringList(owner))       tooltipSB.append("String_Node_Str" + s);
    }
 else {
      tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    }
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + statusEffect.getSVGString(owner) + "String_Node_Str"+ "String_Node_Str"+ statusEffect.getDescription(owner)+ "String_Node_Str");
    if (owner.hasStatusEffect(statusEffect))     if (owner.getStatusEffectDuration(statusEffect) != -1) {
      if (statusEffect.isCombatEffect()) {
        tooltipSB.append("String_Node_Str" + owner.getStatusEffectDuration(statusEffect) + "String_Node_Str");
      }
 else {
        int timerHeight=(int)((owner.getStatusEffectDuration(statusEffect) / (60 * 6f)) * 100);
        Colour timerColour=Colour.STATUS_EFFECT_TIME_HIGH;
        if (timerHeight > 100) {
          timerHeight=100;
          timerColour=Colour.STATUS_EFFECT_TIME_OVERFLOW;
        }
 else         if (timerHeight < 15) {
          timerColour=Colour.STATUS_EFFECT_TIME_LOW;
        }
 else         if (timerHeight < 50) {
          timerColour=Colour.STATUS_EFFECT_TIME_MEDIUM;
        }
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + timerColour.toWebHexString() + "String_Node_Str"+ (owner.getStatusEffectDuration(statusEffect) / 60)+ "String_Node_Str"+ String.format("String_Node_Str",(owner.getStatusEffectDuration(statusEffect) % 60))+ "String_Node_Str"+ "String_Node_Str");
      }
    }
    tooltipSB.append("String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (perk != null) {
    if (perk instanceof Perk) {
      int yIncrease=(perk.getModifiersAsStringList().size() > 4 ? perk.getModifiersAsStringList().size() - 4 : 0);
      Main.mainController.setTooltipSize(360,288 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(perk.getName(owner)) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (perk.getModifiersAsStringList().size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str");
        for (        String s : perk.getModifiersAsStringList())         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getSVGString() + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else     if (perk instanceof Fetish) {
      int yIncrease=(perk.getModifiersAsStringList().size() > 4 ? perk.getModifiersAsStringList().size() - 4 : 0);
      Main.mainController.setTooltipSize(360,288 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(perk.getName(owner)) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (perk.getModifiersAsStringList().size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str");
        for (        String s : perk.getModifiersAsStringList())         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getSVGString() + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
  }
 else   if (levelUpPerk != null) {
    int yIncrease=(levelUpPerk.getModifiersAsStringList().size() > 4 ? levelUpPerk.getModifiersAsStringList().size() - 4 : 0) + levelUpPerk.getPerkRequirements(Main.game.getPlayer(),PhoneDialogue.levelUpPerks).size();
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(levelUpPerk.getName(owner)) + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    for (    String s : levelUpPerk.getPerkRequirements(Main.game.getPlayer(),PhoneDialogue.levelUpPerks))     tooltipSB.append("String_Node_Str" + s);
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str");
    if (levelUpPerk.getModifiersAsStringList().size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str");
      for (      String s : levelUpPerk.getModifiersAsStringList())       tooltipSB.append("String_Node_Str" + s);
    }
 else     tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + levelUpPerk.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + levelUpPerk.getDescription(Main.game.getPlayer()) + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (fetish != null) {
    int yIncrease=(fetish.getModifiersAsStringList().size() > 4 ? fetish.getModifiersAsStringList().size() - 4 : 0) + fetish.getFetishesForAutomaticUnlock().size();
    Main.mainController.setTooltipSize(360,(fetish.getFetishesForAutomaticUnlock().size() == 0 ? 288 : 324) + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(fetish.getName(owner)) + "String_Node_Str");
    if (fetish.getFetishesForAutomaticUnlock().size() >= 1) {
      tooltipSB.append("String_Node_Str");
      for (      Fetish f : fetish.getFetishesForAutomaticUnlock())       tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(f.getName(Main.game.getPlayer())) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
    }
    tooltipSB.append("String_Node_Str");
    if (fetish.getModifiersAsStringList().size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str");
      for (      String s : fetish.getModifiersAsStringList())       tooltipSB.append("String_Node_Str" + s);
    }
 else     tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + fetish.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + fetish.getDescription(owner) + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (specialAttack != null) {
    int yIncrease=(specialAttack.getStatusEffects().size() > 2 ? specialAttack.getStatusEffects().size() - 2 : 0);
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(specialAttack.getName()) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.SPECIAL_ATTACK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ (specialAttack.getMinimumDamage(owner,null))+ "String_Node_Str"+ (specialAttack.getMaximumDamage(owner,null))+ "String_Node_Str"+ "String_Node_Str"+ specialAttack.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ specialAttack.getDamageType().getName()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str" + Colour.SPECIAL_ATTACK.toWebHexString() + "String_Node_Str");
    if (specialAttack.getStatusEffects().size() != 0) {
      for (      Entry<StatusEffect,Integer> e : specialAttack.getStatusEffects().entrySet())       tooltipSB.append("String_Node_Str" + e.getKey().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(e.getKey().getName(owner))+ "String_Node_Str"+ e.getValue()+ "String_Node_Str"+ (e.getValue() > 1 ? "String_Node_Str" : "String_Node_Str"));
    }
 else     tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + specialAttack.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + specialAttack.getDescription(owner) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ (specialAttack.getMinimumCost(owner))+ "String_Node_Str"+ (specialAttack.getMaximumCost(owner))+ "String_Node_Str"+ "String_Node_Str"+ Colour.ATTRIBUTE_FITNESS.toWebHexString()+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (spell != null) {
    int yIncrease=(spell.getStatusEffects().size() > 2 ? spell.getStatusEffects().size() - 2 : 0);
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(spell.getName()) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str");
    if (spell.isSelfCastSpell())     tooltipSB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ spell.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ spell.getDamageType().getName()+ "String_Node_Str");
 else     tooltipSB.append("String_Node_Str" + (spell.getMinimumDamage(owner,null,spellLevel)) + "String_Node_Str"+ (spell.getMaximumDamage(owner,null,spellLevel))+ "String_Node_Str"+ "String_Node_Str"+ spell.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ spell.getDamageType().getName()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str");
    if (spell.getStatusEffects().size() != 0) {
      for (      Entry<StatusEffect,Integer> e : spell.getStatusEffects().entrySet())       tooltipSB.append("String_Node_Str" + e.getKey().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(e.getKey().getName(owner))+ "String_Node_Str"+ e.getValue()+ "String_Node_Str"+ (e.getValue() > 1 ? "String_Node_Str" : "String_Node_Str"));
    }
 else     tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + spell.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + spell.getDescription(owner,spellLevel) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ (spell.getMinimumCost(owner,spellLevel))+ "String_Node_Str"+ (spell.getMaximumCost(owner,spellLevel))+ "String_Node_Str"+ "String_Node_Str"+ Colour.ATTRIBUTE_MANA.toWebHexString()+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (attribute != null) {
    if (attribute == Attribute.STRENGTH || attribute == Attribute.INTELLIGENCE || attribute == Attribute.FITNESS || attribute == Attribute.CORRUPTION || attribute == Attribute.AROUSAL || attribute == Attribute.LUST) {
      StatusEffect currentAttributeStatusEffect=null;
      int minimumLevelValue=0, maximumLevelValue=0;
      if (attribute == Attribute.STRENGTH) {
        currentAttributeStatusEffect=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getRelatedStatusEffect();
        minimumLevelValue=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getMinimumValue();
        maximumLevelValue=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getMaximumValue();
      }
 else       if (attribute == Attribute.INTELLIGENCE) {
        currentAttributeStatusEffect=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getRelatedStatusEffect();
        minimumLevelValue=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getMinimumValue();
        maximumLevelValue=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getMaximumValue();
      }
 else       if (attribute == Attribute.FITNESS) {
        currentAttributeStatusEffect=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getRelatedStatusEffect();
        minimumLevelValue=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getMinimumValue();
        maximumLevelValue=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getMaximumValue();
      }
 else       if (attribute == Attribute.CORRUPTION) {
        currentAttributeStatusEffect=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getRelatedStatusEffect();
        minimumLevelValue=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getMinimumValue();
        maximumLevelValue=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getMaximumValue();
      }
 else       if (attribute == Attribute.AROUSAL) {
        currentAttributeStatusEffect=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getRelatedStatusEffect();
        minimumLevelValue=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getMinimumValue();
        maximumLevelValue=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getMaximumValue();
      }
 else       if (attribute == Attribute.LUST) {
        currentAttributeStatusEffect=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getRelatedStatusEffect();
        minimumLevelValue=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getMinimumValue();
        maximumLevelValue=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getMaximumValue();
      }
      int yIncrease=(currentAttributeStatusEffect.getModifiersAsStringList(owner).size() > 4 ? currentAttributeStatusEffect.getModifiersAsStringList(owner).size() - 4 : 0) + (owner.hasStatusEffect(currentAttributeStatusEffect) ? (owner.getStatusEffectDuration(currentAttributeStatusEffect) == -1 ? 0 : 2) : 0);
      Main.mainController.setTooltipSize(360,460 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + attribute.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(attribute.getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ (owner.getBaseAttributeValue(attribute) > 0 ? "String_Node_Str" + Colour.GENERIC_EXCELLENT.getShades()[1] + "String_Node_Str" : "String_Node_Str")+ String.format("String_Node_Str",owner.getBaseAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((owner.getBonusAttributeValue(attribute)) > 0 ? "String_Node_Str" + Colour.GENERIC_GOOD.getShades()[1] + "String_Node_Str" : ((owner.getBonusAttributeValue(attribute)) == 0 ? "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.getShades()[1] + "String_Node_Str"))+ String.format("String_Node_Str",owner.getBonusAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getColour().toWebHexString()+ "String_Node_Str"+ String.format("String_Node_Str",owner.getAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str");
      tooltipSB.append("String_Node_Str" + attribute.getDescription(owner) + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + "String_Node_Str" + currentAttributeStatusEffect.getColour().toWebHexString() + "String_Node_Str"+ currentAttributeStatusEffect.getName(owner)+ "String_Node_Str"+ minimumLevelValue+ "String_Node_Str"+ maximumLevelValue+ "String_Node_Str"+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (currentAttributeStatusEffect.getModifiersAsStringList(owner).size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str");
        for (        String s : currentAttributeStatusEffect.getModifiersAsStringList(owner))         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + currentAttributeStatusEffect.getSVGString(owner) + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + currentAttributeStatusEffect.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else     if (attribute == Attribute.EXPERIENCE) {
      Main.mainController.setTooltipSize(420,560);
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + owner.getRace().getColour().toWebHexString() + "String_Node_Str"+ (owner.getRaceStage().getName() != "String_Node_Str" ? "String_Node_Str" + owner.getRaceStage().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(owner.getRaceStage().getName())+ "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ owner.getRace().getColour().toWebHexString()+ "String_Node_Str"+ (owner.isFeminine() ? Util.capitaliseSentence(owner.getRace().getSingularFemaleName()) : Util.capitaliseSentence(owner.getRace().getSingularMaleName()))+ "String_Node_Str"+ "String_Node_Str");
      if (owner.isPlayer()) {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + owner.getLevel() + "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((PlayerCharacter)owner).getExperience()+ "String_Node_Str"+ (10 * owner.getLevel())+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + owner.getLevel() + "String_Node_Str");
      }
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getFaceRace(),owner.getFaceType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getSkinRace(),owner.getSkinType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getArmRace(),owner.getArmType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getLegRace(),owner.getLegType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getHairRace(),owner.getHairType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getEyeRace(),owner.getEyeType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getEarRace(),owner.getEarType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getTongueRace(),owner.getTongueType().getBodyCoveringType()));
      if (owner.getHornType() != HornType.NONE) {
        tooltipSB.append(getBodyPartDiv((owner.hasHorns() ? Util.capitaliseSentence(owner.getHornName()) : "String_Node_Str"),owner.getHornRace(),owner.getHornType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getAntennaType() != AntennaType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getAntennaRace(),owner.getAntennaType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getWingType() != WingType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getWingRace(),owner.getWingType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getTailType() != TailType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getTailRace(),owner.getTailType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (!owner.isPlayer() && !owner.getPlayerKnowsAreasMap().get(CoverableArea.VAGINA)) {
        tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
      }
 else {
        if (owner.getVaginaType() != VaginaType.NONE) {
          tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getVaginaRace(),owner.getVaginaType().getBodyCoveringType()));
        }
 else {
          tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
        }
      }
      if (!owner.isPlayer() && !owner.getPlayerKnowsAreasMap().get(CoverableArea.PENIS)) {
        tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
      }
 else {
        if (owner.getPenisType() != PenisType.NONE) {
          tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getPenisRace(),owner.getPenisType().getBodyCoveringType()));
        }
 else {
          tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
        }
      }
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getAssRace(),owner.getAssType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getBreastRace(),owner.getBreastType().getBodyCoveringType()));
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else {
      Main.mainController.setTooltipSize(360,234);
      Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + attribute.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(attribute.getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ (owner.getBaseAttributeValue(attribute) > 0 ? "String_Node_Str" + Colour.GENERIC_EXCELLENT.getShades()[1] + "String_Node_Str" : "String_Node_Str")+ owner.getBaseAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((owner.getBonusAttributeValue(attribute)) > 0 ? "String_Node_Str" + Colour.GENERIC_GOOD.getShades()[1] + "String_Node_Str" : ((owner.getBonusAttributeValue(attribute)) == 0 ? "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.getShades()[1] + "String_Node_Str"))+ owner.getBonusAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getColour().toWebHexString()+ "String_Node_Str"+ owner.getAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getDescription(owner)+ "String_Node_Str"));
    }
  }
 else   if (extraAttributes) {
    Main.mainController.setTooltipSize(360,600);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Femininity.valueOf(Main.game.getPlayer().getFemininityValue()).getColour().toWebHexString() + "String_Node_Str"+ (owner.getName().length() == 0 ? (owner.getFemininityValue() <= Femininity.MASCULINE.getMaximumFemininity() ? "String_Node_Str" : "String_Node_Str") : owner.getName())+ "String_Node_Str"+ extraAttributeBonus(owner,Attribute.CRITICAL_CHANCE)+ extraAttributeBonus(owner,Attribute.CRITICAL_DAMAGE)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_ATTACK,Attribute.RESISTANCE_ATTACK)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_SPELLS,Attribute.RESISTANCE_SPELLS)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_PHYSICAL,Attribute.RESISTANCE_PHYSICAL)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_FIRE,Attribute.RESISTANCE_FIRE)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_ICE,Attribute.RESISTANCE_ICE)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_POISON,Attribute.RESISTANCE_POISON)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_MANA,Attribute.RESISTANCE_MANA)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_STAMINA,Attribute.RESISTANCE_STAMINA)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_PURE,Attribute.RESISTANCE_PURE)+ extraAttributeBonus(owner,Attribute.FERTILITY)+ extraAttributeBonus(owner,Attribute.VIRILITY)+ extraAttributeBonus(owner,Attribute.SPELL_COST_MODIFIER));
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (opponentExtraAttributes) {
    Main.mainController.setTooltipSize(360,480);
    tooltipSB.setLength(0);
    GameCharacter target=null;
    if (Main.game.isInCombat()) {
      target=Combat.getOpponent();
    }
 else {
      target=CharactersPresentDialogue.characterViewed;
    }
    tooltipSB.append("String_Node_Str" + Femininity.valueOf(target.getFemininityValue()).getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(target.getName())+ "String_Node_Str");
    tooltipSB.append(extraAttributeBonus(target,Attribute.CRITICAL_CHANCE) + extraAttributeBonus(target,Attribute.CRITICAL_DAMAGE) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_ATTACK,null)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_SPELLS,null)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_PHYSICAL,Attribute.RESISTANCE_PHYSICAL)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_FIRE,Attribute.RESISTANCE_FIRE)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_ICE,Attribute.RESISTANCE_ICE)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_POISON,Attribute.RESISTANCE_POISON)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_MANA,Attribute.RESISTANCE_MANA)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_STAMINA,Attribute.RESISTANCE_STAMINA)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_PURE,Attribute.DAMAGE_PURE));
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (weather) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Main.game.getCurrentWeather().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(Main.game.getCurrentWeather().getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ ((Main.game.getWeatherTimeRemaining() / 60) + 1)+ "String_Node_Str"+ (((Main.game.getWeatherTimeRemaining() / 60) + 1) > 1 ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (protection) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + (owner.isWearingCondom() ? "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str") + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (tattoo) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (copyInformation) {
    Main.mainController.setTooltipSize(360,170);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + (Main.game.getCurrentDialogueNode().getLabel() == "String_Node_Str" || Main.game.getCurrentDialogueNode().getLabel() == null ? "String_Node_Str" : Main.game.getCurrentDialogueNode().getLabel()) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.ANDROGYNOUS.toWebHexString()+ "String_Node_Str"+ Main.game.getCurrentDialogueNode().getAuthor()+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else {
    Main.mainController.setTooltipSize(360,175);
    Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + title + "String_Node_Str"+ "String_Node_Str"+ description+ "String_Node_Str"));
  }
  (new Thread(new TooltipUpdateThread())).start();
}

Fixed version (ground truth):
@Override public void handleEvent(Event event){
  Main.mainController.setTooltipSize(360,180);
  Main.mainController.setTooltipContent("String_Node_Str");
  if (statusEffect != null) {
    int yIncrease=(statusEffect.getModifiersAsStringList(owner).size() > 4 ? statusEffect.getModifiersAsStringList(owner).size() - 4 : 0) + (owner.hasStatusEffect(statusEffect) ? (owner.getStatusEffectDuration(statusEffect) == -1 ? 0 : 2) : 0);
    Main.mainController.setTooltipSize(360,284 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Util.capitaliseSentence(statusEffect.getName(owner)) + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    if (statusEffect.getModifiersAsStringList(owner).size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str");
      for (      String s : statusEffect.getModifiersAsStringList(owner))       tooltipSB.append("String_Node_Str" + s);
    }
 else {
      tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    }
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + statusEffect.getSVGString(owner) + "String_Node_Str"+ "String_Node_Str"+ statusEffect.getDescription(owner)+ "String_Node_Str");
    if (owner.hasStatusEffect(statusEffect))     if (owner.getStatusEffectDuration(statusEffect) != -1) {
      if (statusEffect.isCombatEffect()) {
        tooltipSB.append("String_Node_Str" + owner.getStatusEffectDuration(statusEffect) + "String_Node_Str");
      }
 else {
        int timerHeight=(int)((owner.getStatusEffectDuration(statusEffect) / (60 * 6f)) * 100);
        Colour timerColour=Colour.STATUS_EFFECT_TIME_HIGH;
        if (timerHeight > 100) {
          timerHeight=100;
          timerColour=Colour.STATUS_EFFECT_TIME_OVERFLOW;
        }
 else         if (timerHeight < 15) {
          timerColour=Colour.STATUS_EFFECT_TIME_LOW;
        }
 else         if (timerHeight < 50) {
          timerColour=Colour.STATUS_EFFECT_TIME_MEDIUM;
        }
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + timerColour.toWebHexString() + "String_Node_Str"+ (owner.getStatusEffectDuration(statusEffect) / 60)+ "String_Node_Str"+ String.format("String_Node_Str",(owner.getStatusEffectDuration(statusEffect) % 60))+ "String_Node_Str"+ "String_Node_Str");
      }
    }
    tooltipSB.append("String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (perk != null) {
    if (perk instanceof Perk) {
      int yIncrease=(perk.getModifiersAsStringList().size() > 4 ? perk.getModifiersAsStringList().size() - 4 : 0);
      Main.mainController.setTooltipSize(360,288 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(perk.getName(owner)) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (perk.getModifiersAsStringList().size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str");
        for (        String s : perk.getModifiersAsStringList())         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getSVGString() + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else     if (perk instanceof Fetish) {
      int yIncrease=(perk.getModifiersAsStringList().size() > 4 ? perk.getModifiersAsStringList().size() - 4 : 0);
      Main.mainController.setTooltipSize(360,288 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(perk.getName(owner)) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (perk.getModifiersAsStringList().size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str");
        for (        String s : perk.getModifiersAsStringList())         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getSVGString() + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + perk.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
  }
 else   if (levelUpPerk != null) {
    int yIncrease=(levelUpPerk.getModifiersAsStringList().size() > 4 ? levelUpPerk.getModifiersAsStringList().size() - 4 : 0) + levelUpPerk.getPerkRequirements(Main.game.getPlayer(),PhoneDialogue.levelUpPerks).size();
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(levelUpPerk.getName(owner)) + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    for (    String s : levelUpPerk.getPerkRequirements(Main.game.getPlayer(),PhoneDialogue.levelUpPerks))     tooltipSB.append("String_Node_Str" + s);
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str");
    if (levelUpPerk.getModifiersAsStringList().size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str");
      for (      String s : levelUpPerk.getModifiersAsStringList())       tooltipSB.append("String_Node_Str" + s);
    }
 else     tooltipSB.append("String_Node_Str" + Colour.PERK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + levelUpPerk.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + levelUpPerk.getDescription(Main.game.getPlayer()) + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (fetish != null) {
    int yIncrease=(fetish.getModifiersAsStringList().size() > 4 ? fetish.getModifiersAsStringList().size() - 4 : 0) + fetish.getFetishesForAutomaticUnlock().size();
    Main.mainController.setTooltipSize(360,(fetish.getFetishesForAutomaticUnlock().size() == 0 ? 288 : 324) + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(fetish.getName(owner)) + "String_Node_Str");
    if (fetish.getFetishesForAutomaticUnlock().size() >= 1) {
      tooltipSB.append("String_Node_Str");
      for (      Fetish f : fetish.getFetishesForAutomaticUnlock())       tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(f.getName(Main.game.getPlayer())) + "String_Node_Str");
      tooltipSB.append("String_Node_Str");
    }
    tooltipSB.append("String_Node_Str");
    if (fetish.getModifiersAsStringList().size() != 0) {
      tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str");
      for (      String s : fetish.getModifiersAsStringList())       tooltipSB.append("String_Node_Str" + s);
    }
 else     tooltipSB.append("String_Node_Str" + Colour.FETISH.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + fetish.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + fetish.getDescription(owner) + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (specialAttack != null) {
    int yIncrease=(specialAttack.getStatusEffects().size() > 2 ? specialAttack.getStatusEffects().size() - 2 : 0);
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(specialAttack.getName()) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.SPECIAL_ATTACK.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ (specialAttack.getMinimumDamage(owner,null))+ "String_Node_Str"+ (specialAttack.getMaximumDamage(owner,null))+ "String_Node_Str"+ "String_Node_Str"+ specialAttack.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ specialAttack.getDamageType().getName()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str" + Colour.SPECIAL_ATTACK.toWebHexString() + "String_Node_Str");
    if (specialAttack.getStatusEffects().size() != 0) {
      for (      Entry<StatusEffect,Integer> e : specialAttack.getStatusEffects().entrySet())       tooltipSB.append("String_Node_Str" + e.getKey().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(e.getKey().getName(owner))+ "String_Node_Str"+ e.getValue()+ "String_Node_Str"+ (e.getValue() > 1 ? "String_Node_Str" : "String_Node_Str"));
    }
 else     tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + specialAttack.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + specialAttack.getDescription(owner) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ (specialAttack.getMinimumCost(owner))+ "String_Node_Str"+ (specialAttack.getMaximumCost(owner))+ "String_Node_Str"+ "String_Node_Str"+ Colour.ATTRIBUTE_FITNESS.toWebHexString()+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (spell != null) {
    int yIncrease=(spell.getStatusEffects().size() > 2 ? spell.getStatusEffects().size() - 2 : 0);
    Main.mainController.setTooltipSize(360,324 + (yIncrease * 20));
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Util.capitaliseSentence(spell.getName()) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str");
    if (spell.isSelfCastSpell())     tooltipSB.append("String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str"+ spell.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ spell.getDamageType().getName()+ "String_Node_Str");
 else     tooltipSB.append("String_Node_Str" + (spell.getMinimumDamage(owner,null,spellLevel)) + "String_Node_Str"+ (spell.getMaximumDamage(owner,null,spellLevel))+ "String_Node_Str"+ "String_Node_Str"+ spell.getDamageType().getMultiplierAttribute().getColour().toWebHexString()+ "String_Node_Str"+ spell.getDamageType().getName()+ "String_Node_Str");
    tooltipSB.append("String_Node_Str" + Colour.GENERIC_ARCANE.toWebHexString() + "String_Node_Str");
    if (spell.getStatusEffects().size() != 0) {
      for (      Entry<StatusEffect,Integer> e : spell.getStatusEffects().entrySet())       tooltipSB.append("String_Node_Str" + e.getKey().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(e.getKey().getName(owner))+ "String_Node_Str"+ e.getValue()+ "String_Node_Str"+ (e.getValue() > 1 ? "String_Node_Str" : "String_Node_Str"));
    }
 else     tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str");
    tooltipSB.append("String_Node_Str" + spell.getSVGString() + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + spell.getDescription(owner,spellLevel) + "String_Node_Str");
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str"+ (spell.getMinimumCost(owner,spellLevel))+ "String_Node_Str"+ (spell.getMaximumCost(owner,spellLevel))+ "String_Node_Str"+ "String_Node_Str"+ Colour.ATTRIBUTE_MANA.toWebHexString()+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (attribute != null) {
    if (attribute == Attribute.STRENGTH || attribute == Attribute.INTELLIGENCE || attribute == Attribute.FITNESS || attribute == Attribute.CORRUPTION || attribute == Attribute.AROUSAL || attribute == Attribute.LUST) {
      StatusEffect currentAttributeStatusEffect=null;
      int minimumLevelValue=0, maximumLevelValue=0;
      if (attribute == Attribute.STRENGTH) {
        currentAttributeStatusEffect=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getRelatedStatusEffect();
        minimumLevelValue=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getMinimumValue();
        maximumLevelValue=StrengthLevel.getStrengthLevelFromValue(owner.getAttributeValue(Attribute.STRENGTH)).getMaximumValue();
      }
 else       if (attribute == Attribute.INTELLIGENCE) {
        currentAttributeStatusEffect=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getRelatedStatusEffect();
        minimumLevelValue=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getMinimumValue();
        maximumLevelValue=IntelligenceLevel.getIntelligenceLevelFromValue(owner.getAttributeValue(Attribute.INTELLIGENCE)).getMaximumValue();
      }
 else       if (attribute == Attribute.FITNESS) {
        currentAttributeStatusEffect=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getRelatedStatusEffect();
        minimumLevelValue=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getMinimumValue();
        maximumLevelValue=FitnessLevel.getFitnessLevelFromValue(owner.getAttributeValue(Attribute.FITNESS)).getMaximumValue();
      }
 else       if (attribute == Attribute.CORRUPTION) {
        currentAttributeStatusEffect=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getRelatedStatusEffect();
        minimumLevelValue=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getMinimumValue();
        maximumLevelValue=CorruptionLevel.getCorruptionLevelFromValue(owner.getAttributeValue(Attribute.CORRUPTION)).getMaximumValue();
      }
 else       if (attribute == Attribute.AROUSAL) {
        currentAttributeStatusEffect=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getRelatedStatusEffect();
        minimumLevelValue=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getMinimumValue();
        maximumLevelValue=ArousalLevel.getArousalLevelFromValue(owner.getAttributeValue(Attribute.AROUSAL)).getMaximumValue();
      }
 else       if (attribute == Attribute.LUST) {
        currentAttributeStatusEffect=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getRelatedStatusEffect();
        minimumLevelValue=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getMinimumValue();
        maximumLevelValue=LustLevel.getLustLevelFromValue(owner.getAttributeValue(Attribute.LUST)).getMaximumValue();
      }
      int yIncrease=(currentAttributeStatusEffect.getModifiersAsStringList(owner).size() > 4 ? currentAttributeStatusEffect.getModifiersAsStringList(owner).size() - 4 : 0) + (owner.hasStatusEffect(currentAttributeStatusEffect) ? (owner.getStatusEffectDuration(currentAttributeStatusEffect) == -1 ? 0 : 2) : 0);
      Main.mainController.setTooltipSize(360,460 + (yIncrease * 20));
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + attribute.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(attribute.getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ (owner.getBaseAttributeValue(attribute) > 0 ? "String_Node_Str" + Colour.GENERIC_EXCELLENT.getShades()[1] + "String_Node_Str" : "String_Node_Str")+ String.format("String_Node_Str",owner.getBaseAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((owner.getBonusAttributeValue(attribute)) > 0 ? "String_Node_Str" + Colour.GENERIC_GOOD.getShades()[1] + "String_Node_Str" : ((owner.getBonusAttributeValue(attribute)) == 0 ? "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.getShades()[1] + "String_Node_Str"))+ String.format("String_Node_Str",owner.getBonusAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getColour().toWebHexString()+ "String_Node_Str"+ String.format("String_Node_Str",owner.getAttributeValue(attribute))+ "String_Node_Str"+ "String_Node_Str");
      tooltipSB.append("String_Node_Str" + attribute.getDescription(owner) + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + "String_Node_Str" + currentAttributeStatusEffect.getColour().toWebHexString() + "String_Node_Str"+ currentAttributeStatusEffect.getName(owner)+ "String_Node_Str"+ minimumLevelValue+ "String_Node_Str"+ maximumLevelValue+ "String_Node_Str"+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      if (currentAttributeStatusEffect.getModifiersAsStringList(owner).size() != 0) {
        tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str");
        for (        String s : currentAttributeStatusEffect.getModifiersAsStringList(owner))         tooltipSB.append("String_Node_Str" + s);
      }
 else       tooltipSB.append("String_Node_Str" + Colour.STATUS_EFFECT.toWebHexString() + "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str");
      tooltipSB.append("String_Node_Str");
      tooltipSB.append("String_Node_Str" + currentAttributeStatusEffect.getSVGString(owner) + "String_Node_Str");
      tooltipSB.append("String_Node_Str" + currentAttributeStatusEffect.getDescription(owner) + "String_Node_Str");
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else     if (attribute == Attribute.EXPERIENCE) {
      Main.mainController.setTooltipSize(420,560);
      tooltipSB.setLength(0);
      tooltipSB.append("String_Node_Str" + owner.getRace().getColour().toWebHexString() + "String_Node_Str"+ (owner.getRaceStage().getName() != "String_Node_Str" ? "String_Node_Str" + owner.getRaceStage().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(owner.getRaceStage().getName())+ "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ owner.getRace().getColour().toWebHexString()+ "String_Node_Str"+ (owner.isFeminine() ? Util.capitaliseSentence(owner.getRace().getSingularFemaleName()) : Util.capitaliseSentence(owner.getRace().getSingularMaleName()))+ "String_Node_Str"+ "String_Node_Str");
      if (owner.isPlayer()) {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + owner.getLevel() + "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((PlayerCharacter)owner).getExperience()+ "String_Node_Str"+ (10 * owner.getLevel())+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + owner.getLevel() + "String_Node_Str");
      }
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getFaceRace(),owner.getFaceType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getSkinRace(),owner.getSkinType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getArmRace(),owner.getArmType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getLegRace(),owner.getLegType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getHairRace(),owner.getHairType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getEyeRace(),owner.getEyeType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getEarRace(),owner.getEarType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getTongueRace(),owner.getTongueType().getBodyCoveringType()));
      if (owner.getHornType() != HornType.NONE) {
        tooltipSB.append(getBodyPartDiv((owner.hasHorns() ? Util.capitaliseSentence(owner.getHornName()) : "String_Node_Str"),owner.getHornRace(),owner.getHornType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getAntennaType() != AntennaType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getAntennaRace(),owner.getAntennaType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getWingType() != WingType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getWingRace(),owner.getWingType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (owner.getTailType() != TailType.NONE) {
        tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getTailRace(),owner.getTailType().getBodyCoveringType()));
      }
 else {
        tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
      }
      if (!owner.isPlayer() && !owner.getPlayerKnowsAreasMap().get(CoverableArea.VAGINA)) {
        tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
      }
 else {
        if (owner.getVaginaType() != VaginaType.NONE) {
          tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getVaginaRace(),owner.getVaginaType().getBodyCoveringType()));
        }
 else {
          tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
        }
      }
      if (!owner.isPlayer() && !owner.getPlayerKnowsAreasMap().get(CoverableArea.PENIS)) {
        tooltipSB.append("String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str");
      }
 else {
        if (owner.getPenisType() != PenisType.NONE) {
          tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getPenisRace(),owner.getPenisType().getBodyCoveringType()));
        }
 else {
          tooltipSB.append("String_Node_Str" + "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str"+ "String_Node_Str");
        }
      }
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getAssRace(),owner.getAssType().getBodyCoveringType()));
      tooltipSB.append(getBodyPartDiv("String_Node_Str",owner.getBreastRace(),owner.getBreastType().getBodyCoveringType()));
      Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
    }
 else {
      Main.mainController.setTooltipSize(360,234);
      Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + attribute.getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(attribute.getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ (owner.getBaseAttributeValue(attribute) > 0 ? "String_Node_Str" + Colour.GENERIC_EXCELLENT.getShades()[1] + "String_Node_Str" : "String_Node_Str")+ owner.getBaseAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.TEXT_GREY.toWebHexString()+ "String_Node_Str"+ ((owner.getBonusAttributeValue(attribute)) > 0 ? "String_Node_Str" + Colour.GENERIC_GOOD.getShades()[1] + "String_Node_Str" : ((owner.getBonusAttributeValue(attribute)) == 0 ? "String_Node_Str" + Colour.TEXT_GREY.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.getShades()[1] + "String_Node_Str"))+ owner.getBonusAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getColour().toWebHexString()+ "String_Node_Str"+ owner.getAttributeValue(attribute)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ attribute.getDescription(owner)+ "String_Node_Str"));
    }
  }
 else   if (extraAttributes) {
    Main.mainController.setTooltipSize(360,600);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + Femininity.valueOf(Main.game.getPlayer().getFemininityValue()).getColour().toWebHexString() + "String_Node_Str"+ (owner.getName().length() == 0 ? (owner.getFemininityValue() <= Femininity.MASCULINE.getMaximumFemininity() ? "String_Node_Str" : "String_Node_Str") : owner.getName())+ "String_Node_Str"+ extraAttributeBonus(owner,Attribute.CRITICAL_CHANCE)+ extraAttributeBonus(owner,Attribute.CRITICAL_DAMAGE)+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_ATTACK,Attribute.RESISTANCE_ATTACK)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_SPELLS,Attribute.RESISTANCE_SPELLS)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_PHYSICAL,Attribute.RESISTANCE_PHYSICAL)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_FIRE,Attribute.RESISTANCE_FIRE)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_ICE,Attribute.RESISTANCE_ICE)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_POISON,Attribute.RESISTANCE_POISON)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_MANA,Attribute.RESISTANCE_MANA)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_STAMINA,Attribute.RESISTANCE_STAMINA)+ extraAttributeTableRow(owner,"String_Node_Str",Attribute.DAMAGE_PURE,Attribute.RESISTANCE_PURE)+ extraAttributeBonus(owner,Attribute.FERTILITY)+ extraAttributeBonus(owner,Attribute.VIRILITY)+ extraAttributeBonus(owner,Attribute.SPELL_COST_MODIFIER));
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (opponentExtraAttributes) {
    Main.mainController.setTooltipSize(360,480);
    tooltipSB.setLength(0);
    GameCharacter target=null;
    if (Main.game.isInCombat()) {
      target=Combat.getOpponent();
    }
 else {
      target=CharactersPresentDialogue.characterViewed;
    }
    tooltipSB.append("String_Node_Str" + Femininity.valueOf(target.getFemininityValue()).getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(target.getName())+ "String_Node_Str");
    tooltipSB.append(extraAttributeBonus(target,Attribute.CRITICAL_CHANCE) + extraAttributeBonus(target,Attribute.CRITICAL_DAMAGE) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_ATTACK,null)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_SPELLS,null)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_PHYSICAL,Attribute.RESISTANCE_PHYSICAL)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_FIRE,Attribute.RESISTANCE_FIRE)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_ICE,Attribute.RESISTANCE_ICE)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_POISON,Attribute.RESISTANCE_POISON)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_MANA,Attribute.RESISTANCE_MANA)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_STAMINA,Attribute.RESISTANCE_STAMINA)+ extraAttributeTableRow(target,"String_Node_Str",Attribute.DAMAGE_PURE,Attribute.DAMAGE_PURE));
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (weather) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + Main.game.getCurrentWeather().getColour().toWebHexString() + "String_Node_Str"+ Util.capitaliseSentence(Main.game.getCurrentWeather().getName())+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ ((Main.game.getWeatherTimeRemaining() / 60) + 1)+ "String_Node_Str"+ (((Main.game.getWeatherTimeRemaining() / 60) + 1) > 1 ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (protection) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + (owner.isWearingCondom() ? "String_Node_Str" + Colour.GENERIC_GOOD.toWebHexString() + "String_Node_Str" : "String_Node_Str" + Colour.GENERIC_BAD.toWebHexString() + "String_Node_Str") + "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (tattoo) {
    Main.mainController.setTooltipSize(360,100);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else   if (copyInformation) {
    Main.mainController.setTooltipSize(360,170);
    tooltipSB.setLength(0);
    tooltipSB.append("String_Node_Str" + (Main.game.getCurrentDialogueNode().getLabel() == "String_Node_Str" || Main.game.getCurrentDialogueNode().getLabel() == null ? "String_Node_Str" : Main.game.getCurrentDialogueNode().getLabel()) + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ Colour.ANDROGYNOUS.toWebHexString()+ "String_Node_Str"+ Main.game.getCurrentDialogueNode().getAuthor()+ "String_Node_Str");
    Main.mainController.setTooltipContent(UtilText.parse(tooltipSB.toString()));
  }
 else {
    if (description == null || description.isEmpty()) {
      Main.mainController.setTooltipSize(360,64);
      Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + title + "String_Node_Str"));
    }
 else {
      Main.mainController.setTooltipSize(360,175);
      Main.mainController.setTooltipContent(UtilText.parse("String_Node_Str" + title + "String_Node_Str"+ "String_Node_Str"+ description+ "String_Node_Str"));
    }
  }
  (new Thread(new TooltipUpdateThread())).start();
}