Program: 171332
Project: 171332
Buggy source:
private void manageMainListeners(){
  document=(Document)webEngine.executeScript("String_Node_Str");
  EventListenerDataMap.put(document,new ArrayList<>());
  String id="String_Node_Str";
  if (flashMessageColour != null && flashMessageText != null) {
    Main.game.flashMessage(flashMessageColour,flashMessageText);
    flashMessageColour=null;
    flashMessageText=null;
  }
  if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
    addEventListener(document,"String_Node_Str","String_Node_Str",copyDialogueButtonListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",copyInfoListener,false);
  }
  if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
    addEventListener(document,"String_Node_Str","String_Node_Str",e -> {
      if (Main.game.getCurrentDialogueNode().equals(CharactersPresentDialogue.MENU)) {
        Game.exportCharacter(CharactersPresentDialogue.characterViewed);
      }
 else {
        Game.exportCharacter(Main.game.getPlayer());
      }
      Main.game.flashMessage(Colour.GENERIC_EXCELLENT,"String_Node_Str");
    }
,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str"),false);
  }
  if (Main.game.isInCombat()) {
    for (    StatusEffect se : Main.game.getPlayer().getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : Main.game.getPlayer().getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (Main.game.getPlayer().getMainWeapon() != null) {
      for (      Spell s : Main.game.getPlayer().getMainWeapon().getSpells()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer().getLevel(),Main.game.getPlayer());
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getPlayer().getOffhandWeapon() != null) {
      for (      Spell s : Main.game.getPlayer().getOffhandWeapon().getSpells()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer().getLevel(),Main.game.getPlayer());
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
        }
      }
    }
    for (    StatusEffect se : Combat.getOpponent().getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str" + StatusEffect.COMBAT_HIDDEN)) != null) {
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(StatusEffect.COMBAT_HIDDEN,Combat.getOpponent());
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",el,false);
    }
    for (    Perk p : Combat.getOpponent().getPerks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setPerk(p,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",el,false);
      }
    }
    for (    Fetish f : Combat.getOpponent().getFetishes()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setFetish(f,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : Combat.getOpponent().getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (Combat.getOpponent().getMainWeapon() != null)     for (    Spell s : Combat.getOpponent().getMainWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Combat.getOpponent().getLevel(),Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    if (Combat.getOpponent().getOffhandWeapon() != null)     for (    Spell s : Combat.getOpponent().getOffhandWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Combat.getOpponent().getLevel(),Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    Attribute[] attributes={Attribute.STRENGTH,Attribute.INTELLIGENCE,Attribute.FITNESS,Attribute.CORRUPTION,Attribute.HEALTH_MAXIMUM,Attribute.MANA_MAXIMUM,Attribute.STAMINA_MAXIMUM};
    for (    Attribute a : attributes) {
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setOpponentExtraAttributes();
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
    }
  }
  if (Main.game.getCurrentDialogueNode() == CharactersPresentDialogue.MENU || Main.game.getCurrentDialogueNode() == PhoneDialogue.CONTACTS) {
    for (    StatusEffect se : CharactersPresentDialogue.characterViewed.getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str" + StatusEffect.COMBAT_HIDDEN)) != null) {
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(StatusEffect.COMBAT_HIDDEN,CharactersPresentDialogue.characterViewed);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",el,false);
    }
    for (    Perk p : CharactersPresentDialogue.characterViewed.getPerks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setPerk(p,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",el,false);
      }
    }
    for (    Fetish f : CharactersPresentDialogue.characterViewed.getFetishes()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setFetish(f,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : CharactersPresentDialogue.characterViewed.getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (CharactersPresentDialogue.characterViewed.getMainWeapon() != null)     for (    Spell s : CharactersPresentDialogue.characterViewed.getMainWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,CharactersPresentDialogue.characterViewed.getLevel(),CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    if (CharactersPresentDialogue.characterViewed.getOffhandWeapon() != null)     for (    Spell s : CharactersPresentDialogue.characterViewed.getOffhandWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,CharactersPresentDialogue.characterViewed.getLevel(),CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    Attribute[] attributes={Attribute.STRENGTH,Attribute.INTELLIGENCE,Attribute.FITNESS,Attribute.CORRUPTION,Attribute.HEALTH_MAXIMUM,Attribute.MANA_MAXIMUM,Attribute.STAMINA_MAXIMUM};
    for (    Attribute a : attributes) {
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setOpponentExtraAttributes();
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
    }
  }
  if (Main.game.getCurrentDialogueNode().equals(DebugDialogue.SPAWN_MENU)) {
    id="String_Node_Str";
    for (    AbstractClothingType clothingType : DebugDialogue.clothingTotal) {
      id=clothingType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addClothing(AbstractClothingType.generateClothing(clothingType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericClothing(clothingType,clothingType.getAvailableColours().get(0));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractWeaponType weaponType : DebugDialogue.weaponsTotal) {
      id=weaponType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addWeapon(AbstractWeaponType.generateWeapon(weaponType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericWeapon(weaponType,weaponType.getAvailableDamageTypes().get(0));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractItemType itemType : DebugDialogue.itemsTotal) {
      id=itemType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addItem(AbstractItemType.generateItem(itemType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericItem(itemType);
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    InventorySlot slot : InventorySlot.values()) {
      id=slot + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          DebugDialogue.activeSlot=slot;
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
    id="String_Node_Str";
    if (((EventTarget)document.getElementById(id)) != null) {
      ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
        DebugDialogue.activeSlot=null;
        Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
      }
,false);
    }
  }
  if (Main.game.isStarted()) {
    id="String_Node_Str";
    InventorySlot[] inventorySlots={InventorySlot.WEAPON_MAIN,InventorySlot.WEAPON_OFFHAND};
    for (    InventorySlot invSlot : inventorySlots) {
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponEquipped(Main.game.getPlayer(),invSlot);
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponEquipped(InventoryDialogue.getInventoryNPC(),invSlot);
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,InventoryDialogue.getInventoryNPC());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,CharactersPresentDialogue.characterViewed);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    InventorySlot invSlot : InventorySlot.values()) {
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingEquipped(Main.game.getPlayer(),invSlot);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,Main.game.getPlayer());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingEquipped(InventoryDialogue.getInventoryNPC(),invSlot);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,CharactersPresentDialogue.characterViewed);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
    for (    Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    Entry<AbstractItem,Integer> entry : Main.game.getPlayer().getMapOfDuplicateItems().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    Entry<AbstractClothing,Integer> entry : Main.game.getPlayer().getMapOfDuplicateClothing().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    if (InventoryDialogue.getInventoryNPC() != null) {
      for (      Entry<AbstractWeapon,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateClothing().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateItems().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
 else {
      for (      Entry<AbstractWeapon,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateClothing().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),null,null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateItems().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),null,null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
    if (InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      if (InventoryDialogue.getInventoryNPC() != null) {
        for (int i=Main.game.getPlayer().getBuybackStack().size() - 1; i >= 0; i--) {
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            ((EventTarget)document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC());
            ((EventTarget)document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el2,false);
          }
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
        }
      }
    }
    for (    TFEssence essence : TFEssence.values()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(TFModifier.NONE);
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.primaryMod);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(TFModifier.NONE);
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.secondaryMod);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        Main.game.setResponseTab(1);
        Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.ITEM_INVENTORY){
          @Override public void effects(){
            EnchantmentDialogue.resetEnchantmentVariables();
          }
        }
);
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)EnchantmentDialogue.ingredient,Main.game.getPlayer(),null);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.effects.isEmpty()) {
        }
 else         if (EnchantmentDialogue.canAffordCost(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects)) {
          Main.game.setContent(new ResponseEffectsOnly("String_Node_Str","String_Node_Str" + EnchantingUtils.getPotionName(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects) + "String_Node_Str"){
            @Override public void effects(){
              EnchantmentDialogue.craftItem(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects);
              if (!Main.game.getPlayer().isQuestCompleted(QuestLine.SIDE_ENCHANTMENT_DISCOVERY)) {
                Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().incrementQuest(QuestLine.SIDE_ENCHANTMENT_DISCOVERY));
              }
              if (Main.game.getPlayer().hasItem((AbstractItem)EnchantmentDialogue.previousIngredient)) {
                EnchantmentDialogue.ingredient=EnchantmentDialogue.previousIngredient;
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU));
              }
 else {
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.INVENTORY_MENU));
              }
            }
          }
);
        }
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.ingredient.getEnchantmentEffect().getEffectsDescription(EnchantmentDialogue.primaryMod,EnchantmentDialogue.secondaryMod,EnchantmentDialogue.potency,EnchantmentDialogue.limit,Main.game.getPlayer(),Main.game.getPlayer()) == null) {
        }
 else {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU){
            @Override public void effects(){
              EnchantmentDialogue.effects.add(new ItemEffect(EnchantmentDialogue.ingredient.getEnchantmentEffect(),EnchantmentDialogue.primaryMod,EnchantmentDialogue.secondaryMod,EnchantmentDialogue.potency,EnchantmentDialogue.limit));
            }
          }
);
        }
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    }
    if (EnchantmentDialogue.ingredient != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getPrimaryModifiers()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (EnchantmentDialogue.ingredient != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getSecondaryModifiers(EnchantmentDialogue.primaryMod)) {
        if (((EventTarget)document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_MANAGEMENT) {
      for (      Cell c : SlaveryManagementDialogue.importantCells) {
        id=c.getId();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect=c;
              }
              @Override public DialogueNodeOld getNextDialogue(){
                return SlaveryManagementDialogue.ROOM_UPGRADES;
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect=c;
              }
              @Override public DialogueNodeOld getNextDialogue(){
                return SlaveryManagementDialogue.ROOM_UPGRADES;
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES) {
      for (      PlaceUpgrade placeUpgrade : PlaceUpgrade.values()) {
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect.getPlace().addPlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getInstallCost());
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect.getPlace().removePlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getRemovalCost());
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",(placeUpgrade.isCoreRoomUpgrade() ? "String_Node_Str" : "String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade)));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  SlaveryManagementDialogue.cellToInspect.getPlace().setName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVERY_OVERVIEW) {
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          SlaveryManagementDialogue.incrementDayNumber(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          SlaveryManagementDialogue.incrementDayNumber(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
    if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() != null) {
      id=Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setName(new NameTriplet(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent()));
                }
              }
);
            }
          }
        }
,false);
      }
      id=Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  for (                  String id : Main.game.getPlayer().getSlavesOwned()) {
                    Main.game.getNPCById(id).setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                  }
                }
              }
);
            }
          }
        }
,false);
      }
      for (int i=0; i < 24; i++) {
        allocateWorkTime(i);
      }
      for (      SlaveJobHours preset : SlaveJobHours.values()) {
        id=preset + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().resetWorkHours();
            for (int hour=preset.getStartHour(); hour < preset.getStartHour() + preset.getLength(); hour++) {
              if (hour >= 24) {
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour - 24,true);
              }
 else {
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour,true);
              }
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",preset.getDescription());
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=preset + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
      for (      SlaveJob job : SlaveJob.values()) {
        id=job + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setSlaveJob(job);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",job.getDescription());
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getAvailabilityText(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        for (        SlaveJobSetting setting : job.getMutualSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),"String_Node_Str"));
            addEventListener(document,id,"String_Node_Str",el,false);
          }
        }
        for (        Entry<String,List<SlaveJobSetting>> entry : job.getMutuallyExclusiveSettings().entrySet()) {
          for (          SlaveJobSetting setting : entry.getValue()) {
            id=setting + "String_Node_Str";
            if (((EventTarget)document.getElementById(id)) != null) {
              ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
                for (                SlaveJobSetting settingRem : entry.getValue()) {
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(settingRem);
                }
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
              }
,false);
              addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
              addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              addEventListener(document,id,"String_Node_Str",el,false);
            }
            id=setting + "String_Node_Str";
            if (((EventTarget)document.getElementById(id)) != null) {
              addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
              addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              addEventListener(document,id,"String_Node_Str",el,false);
            }
          }
        }
      }
      for (      SlavePermission permission : SlavePermission.values()) {
        for (        SlavePermissionSetting setting : permission.getSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlavePermissionSetting(permission,setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlavePermissionSetting(permission,setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
            addEventListener(document,id,"String_Node_Str",el,false);
          }
        }
      }
    }
    for (    String slaveId : Main.game.getPlayer().getSlavesOwned()) {
      id=slaveId;
      NPC slave=(NPC)Main.game.getNPCById(slaveId);
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.mainController.openInventory(slave,InventoryInteraction.FULL_MANAGEMENT);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
            @Override public void effects(){
              slave.setHomeLocation(Main.game.getPlayer().getWorldLocation(),Main.game.getPlayer().getLocation());
              slave.returnToHome();
            }
          }
);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
            @Override public void effects(){
              Main.game.getPlayer().incrementMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()));
              Main.game.getDialogueFlags().getSlaveTrader().addSlave(slave);
              slave.setLocation(Main.game.getDialogueFlags().getSlaveTrader().getWorldLocation(),Main.game.getDialogueFlags().getSlaveTrader().getLocation(),true);
            }
          }
);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str" + UtilText.formatAsMoney(slave.getValueAsSlave(),"String_Node_Str",Colour.GENERIC_GOOD) + "String_Node_Str"+ "String_Node_Str"+ Main.game.getDialogueFlags().getSlaveTrader().getName()+ "String_Node_Str"+ UtilText.formatAsMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()),"String_Node_Str",Colour.GENERIC_ARCANE)+ "String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    if (Main.game.getDialogueFlags().getSlaveTrader() != null) {
      for (      String slaveId : Main.game.getDialogueFlags().getSlaveTrader().getSlavesOwned()) {
        id=slaveId + "String_Node_Str";
        NPC slave=(NPC)Main.game.getNPCById(slaveId);
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                Main.game.getPlayer().incrementMoney(-(int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()));
                Main.game.getPlayer().addSlave(slave);
                slave.setLocation(WorldType.SLAVER_ALLEY,PlaceType.SLAVER_ALLEY_SLAVERY_ADMINISTRATION,true);
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str" + UtilText.formatAsMoney(slave.getValueAsSlave(),"String_Node_Str",Colour.GENERIC_GOOD) + "String_Node_Str"+ "String_Node_Str"+ Main.game.getDialogueFlags().getSlaveTrader().getName()+ "String_Node_Str"+ UtilText.formatAsMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()),"String_Node_Str",Colour.GENERIC_ARCANE)+ "String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getActiveNPC() != null) {
      id=Main.game.getActiveNPC().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 2 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getActiveNPC().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
    }
    if (!Main.game.isInNewWorld()) {
      for (      Month month : Month.values()) {
        id="String_Node_Str" + month;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setStartingDateMonth(month);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
    }
    if (!Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_CORE) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_FACE)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_ASS)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_BREASTS)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_VAGINA)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_PENIS)) {
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          CharacterCreation.setGenderMale();
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          CharacterCreation.setGenderFemale();
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.MASCULINE_STRONG.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.MASCULINE.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.ANDROGYNOUS.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.FEMININE.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.FEMININE_STRONG.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      Personality personality : Personality.values()) {
        id="String_Node_Str" + personality;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPersonality(personality);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      SexualOrientation orientation : SexualOrientation.values()) {
        id="String_Node_Str" + orientation;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setSexualOrientation(orientation);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.heightChoices) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHeight(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BodySize bs : BodySize.values()) {
        id="String_Node_Str" + bs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBodySize(bs.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Muscle muscle : Muscle.values()) {
        id="String_Node_Str" + muscle;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setMuscle(muscle.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LipSize ls : LipSize.values()) {
        id="String_Node_Str" + ls;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setLipSize(ls.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().addFaceOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().removeFaceOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      CupSize cs : CupSize.values()) {
        id="String_Node_Str" + cs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastSize(cs.getMeasurement());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BreastShape bs : BreastShape.values()) {
        id="String_Node_Str" + bs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastShape(bs);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      NippleSize ns : NippleSize.values()) {
        id="String_Node_Str" + ns;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleSize(ns.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      AreolaeSize as : AreolaeSize.values()) {
        id="String_Node_Str" + as;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAreolaeSize(as.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().addNippleOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().removeNippleOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      int i : CharacterModificationUtils.getLactationQuantitiesAvailable()) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastLactation(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      AssSize as : CharacterModificationUtils.getAssSizesAvailable()) {
        id="String_Node_Str" + as;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssSize(as.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HipSize hs : CharacterModificationUtils.getHipSizesAvailable()) {
        id="String_Node_Str" + hs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHipSize(hs.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setAssBleached(true);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setAssBleached(false);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      int ps : CharacterModificationUtils.getPenisSizesAvailable()) {
        id="String_Node_Str" + ps;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TesticleSize ts : CharacterModificationUtils.getTesticleSizesAvailable()) {
        id="String_Node_Str" + ts;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTesticleSize(ts.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      CumProduction cp : CharacterModificationUtils.getCumProductionAvailable()) {
        id="String_Node_Str" + cp;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cp.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Wetness wetness : Wetness.values()) {
        id="String_Node_Str" + wetness;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaWetness(wetness.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaPlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      ClitorisSize cs : ClitorisSize.values()) {
        id="String_Node_Str" + cs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaClitorisSize(cs.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LabiaSize ls : LabiaSize.values()) {
        id="String_Node_Str" + ls;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaLabiaSize(ls.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      ArmType armType : ArmType.values()) {
        id="String_Node_Str" + armType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setArmType(armType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HornType hornType : HornType.values()) {
        id="String_Node_Str" + hornType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHornType(hornType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LegType legType : LegType.values()) {
        id="String_Node_Str" + legType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setLegType(legType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TailType tailType : TailType.values()) {
        id="String_Node_Str" + tailType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTailType(tailType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      WingType wingType : WingType.values()) {
        id="String_Node_Str" + wingType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setWingType(wingType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasAssOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeAssOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addAssOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (int i=1; i <= Breast.MAXIMUM_BREAST_ROWS; i++) {
        setBreastCountListener(i);
      }
      for (int i=1; i <= Breast.MAXIMUM_NIPPLES_PER_BREAST; i++) {
        setNippleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNipplePlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.demonLactationValues) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastLactation(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasNippleOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeNippleOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addNippleOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      VaginaType vaginaType : VaginaType.values()) {
        id="String_Node_Str" + vaginaType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaType(vaginaType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasVaginaOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeVaginaOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addVaginaOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisType penisType : PenisType.values()) {
        id="String_Node_Str" + penisType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisType(penisType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisSize ps : PenisSize.values()) {
        id="String_Node_Str" + ps.getMinimumValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps.getMinimumValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + ps.getMedianValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TesticleSize size : TesticleSize.values()) {
        id="String_Node_Str" + size;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTesticleSize(size.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (int i=Testicle.MIN_TESTICLE_COUNT; i <= Testicle.MAX_TESTICLE_COUNT; i+=2) {
        setTesticleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      CumProduction cumProduction : CumProduction.values()) {
        id="String_Node_Str" + cumProduction.getMinimumValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cumProduction.getMinimumValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + cumProduction.getMedianValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cumProduction.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setUrethraElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setUrethraPlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisModifier orificeMod : PenisModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasPenisModifier(orificeMod)) {
              BodyChanging.getTarget().removePenisModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addPenisModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasUrethraOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeUrethraOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addUrethraOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
    }
    boolean noCost=!Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().getMapDisplay() == MapDisplay.PHONE;
    for (    BodyCoveringType bct : BodyCoveringType.values()) {
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),false,BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),true,BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),false),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),true),false);
              }
            }
);
          }
        }
,false);
      }
      for (      CoveringPattern pattern : CoveringPattern.values()) {
        id=bct + "String_Node_Str" + pattern;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,pattern,BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
                }
              }
);
            }
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),colour,(colour == Colour.COVERING_NONE ? false : BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing()),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
                  if (noCost) {
                    if (bct == BodyCoveringType.HUMAN) {
                      BodyChanging.getTarget().getBody().updateCoverings(false,false,false,true);
                    }
                  }
                }
              }
);
            }
          }
,false);
        }
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),colour,(colour == Colour.COVERING_NONE ? false : BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing())),false);
                }
              }
);
            }
          }
,false);
        }
      }
    }
    for (    HairLength hairLength : HairLength.values()) {
      id="String_Node_Str" + hairLength;
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_LENGTH_COST || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_LENGTH_COST);
                }
                BodyChanging.getTarget().setHairLength(hairLength.getMedianValue());
              }
            }
);
          }
        }
,false);
      }
    }
    for (    HairStyle hairStyle : HairStyle.values()) {
      id="String_Node_Str" + hairStyle;
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_STYLE_COST || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_STYLE_COST);
                }
                BodyChanging.getTarget().setHairStyle(hairStyle);
              }
            }
);
          }
        }
,false);
      }
    }
    for (    PiercingType piercingType : PiercingType.values()) {
      id=piercingType + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
                }
switch (piercingType) {
case EAR:
                  BodyChanging.getTarget().setPiercedEar(false);
                break;
case LIP:
              BodyChanging.getTarget().setPiercedLip(false);
            break;
case NAVEL:
          BodyChanging.getTarget().setPiercedNavel(false);
        break;
case NIPPLE:
      BodyChanging.getTarget().setPiercedNipples(false);
    break;
case NOSE:
  BodyChanging.getTarget().setPiercedNose(false);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(false);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(false);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(false);
break;
}
}
}
);
}
}
,false);
}
id=piercingType + "String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
}
switch (piercingType) {
case EAR:
BodyChanging.getTarget().setPiercedEar(true);
break;
case LIP:
BodyChanging.getTarget().setPiercedLip(true);
break;
case NAVEL:
BodyChanging.getTarget().setPiercedNavel(true);
break;
case NIPPLE:
BodyChanging.getTarget().setPiercedNipples(true);
break;
case NOSE:
BodyChanging.getTarget().setPiercedNose(true);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(true);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(true);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(true);
break;
}
}
}
);
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(false);
}
}
);
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(true);
}
}
);
}
}
,false);
}
for (BodyHair bodyHair : BodyHair.values()) {
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setAssHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setUnderarmHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setPubicHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setFacialHair(bodyHair);
}
}
);
}
}
,false);
}
}
for (AbstractClothingType clothing : ClothingType.getAllClothing()) for (Colour c : clothing.getAvailableColours()) {
if ((EventTarget)document.getElementById(clothing.hashCode() + "String_Node_Str" + c.toString()) != null) {
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",moveTooltipListener,false);
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericClothing(clothing,c);
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",el2,false);
}
}
for (AbstractWeaponType weapon : WeaponType.allweapons) for (DamageType dt : weapon.getAvailableDamageTypes()) {
if ((EventTarget)document.getElementById(weapon.hashCode() + "String_Node_Str" + dt.toString()) != null) {
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",moveTooltipListener,false);
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericWeapon(weapon,dt);
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",el2,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseStrength(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseStrength(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseIntelligence(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseIntelligence(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseFitness(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseFitness(),false);
for (Perk p : Perk.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(p,Main.game.getPlayer()),false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",new LevelUpButtonsEventListener().handlePerkPress(p),false);
}
}
for (Fetish f : Fetish.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",new TooltipInformationEventListener().setFetish(f,Main.game.getPlayer()),false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",new LevelUpButtonsEventListener().handleFetishPress(f),false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
for (KeyboardAction ka : KeyboardAction.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
actionToBind=ka;
primaryBinding=true;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
Main.getProperties().hotkeyMapPrimary.put(ka,null);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
actionToBind=ka;
primaryBinding=false;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
Main.getProperties().hotkeyMapSecondary.put(ka,null);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.GENDER_PREFERENCE) {
for (Gender g : Gender.values()) {
for (GenderPreference preference : GenderPreference.values()) {
if (((EventTarget)document.getElementById(preference + "String_Node_Str" + g)) != null) {
((EventTarget)document.getElementById(preference + "String_Node_Str" + g)).addEventListener("String_Node_Str",e -> {
Main.getProperties().genderPreferencesMap.put(g,preference.getValue());
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.FURRY_PREFERENCE) {
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=0;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=1;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=2;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=3;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=4;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.HUMAN;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.MINIMUM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.REDUCED;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.NORMAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.MAXIMUM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=0;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=1;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=2;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.HUMAN);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.HUMAN);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MINIMUM);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.REDUCED);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.REDUCED);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.NORMAL);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.NORMAL);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MAXIMUM);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (Race r : Race.values()) {
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.HUMAN);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.HUMAN.getName(),FurryPreference.HUMAN.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MINIMUM.getName(),FurryPreference.MINIMUM.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.REDUCED);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.REDUCED.getName(),FurryPreference.REDUCED.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.NORMAL);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.NORMAL.getName(),FurryPreference.NORMAL.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MAXIMUM.getName(),FurryPreference.MAXIMUM.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.HUMAN);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.HUMAN.getName(),FurryPreference.HUMAN.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MINIMUM.getName(),FurryPreference.MINIMUM.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.REDUCED);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.REDUCED.getName(),FurryPreference.REDUCED.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.NORMAL);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.NORMAL.getName(),FurryPreference.NORMAL.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MAXIMUM.getName(),FurryPreference.MAXIMUM.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.CONTENT_PREFERENCE || Main.game.getCurrentDialogueNode() == CharacterCreation.CONTENT_PREFERENCES) {
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().nonConContent=true;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().nonConContent=false;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().incestContent=true;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().incestContent=false;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().facialHairContent=!Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().facialHairContent=!Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pubicHairContent=!Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pubicHairContent=!Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().bodyHairContent=!Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().bodyHairContent=!Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().furryTailPenetrationContent=!Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().furryTailPenetrationContent=!Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (int i : OptionsDialogue.forcedTFsettings) {
id="String_Node_Str" + i;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=i;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD && !Main.game.isInCombat() && !Main.game.isInSex()) {
for (File f : Main.getSavedGames()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.overwriteConfirmationName.equals(f.getName())) {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
Main.saveGame(f.getName().substring(0,f.getName().lastIndexOf('.')),true);
}
 else {
OptionsDialogue.overwriteConfirmationName=f.getName();
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Main.loadGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName=f.getName();
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.IMPORT_EXPORT) {
for (File f : Main.getGamesForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Game.importGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName=f.getName();
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.IMPORT_EXPORT));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteExportedGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.IMPORT_EXPORT));
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == CharacterCreation.IMPORT_CHOOSE) {
for (File f : Main.getCharactersForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
Main.importCharacter(f);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_IMPORT) {
for (File f : Main.getSlavesForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
try {
Game.importCharacterAsSlave(f.getName().substring(0,f.getName().lastIndexOf('.')));
this.updateUI();
Main.game.flashMessage(Colour.GENERIC_GOOD,"String_Node_Str");
}
 catch (Exception ex) {
Main.game.flashMessage(Colour.GENERIC_BAD,"String_Node_Str");
}
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_BLOCK_LIST) {
for (NPC npc : Main.game.getCharactersPresent()) {
id=npc.getId() + "String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
if (Main.game.getPlayer().isHasSlaverLicense()) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
SlaverAlleyDialogue.setupBidding(npc);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaverAlleyDialogue.AUCTION_BIDDING));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
addEventListener(document,id,"String_Node_Str",el,false);
}
 else {
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
addEventListener(document,id,"String_Node_Str",el,false);
}
}
}
}
setResponseEventListeners();
}

Fixed version (ground truth):
private void manageMainListeners(){
  document=(Document)webEngine.executeScript("String_Node_Str");
  EventListenerDataMap.put(document,new ArrayList<>());
  String id="String_Node_Str";
  if (flashMessageColour != null && flashMessageText != null) {
    Main.game.flashMessage(flashMessageColour,flashMessageText);
    flashMessageColour=null;
    flashMessageText=null;
  }
  if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
    addEventListener(document,"String_Node_Str","String_Node_Str",copyDialogueButtonListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",copyInfoListener,false);
  }
  if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
    addEventListener(document,"String_Node_Str","String_Node_Str",e -> {
      if (Main.game.getCurrentDialogueNode().equals(CharactersPresentDialogue.MENU)) {
        Game.exportCharacter(CharactersPresentDialogue.characterViewed);
      }
 else {
        Game.exportCharacter(Main.game.getPlayer());
      }
      Main.game.flashMessage(Colour.GENERIC_EXCELLENT,"String_Node_Str");
    }
,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    addEventListener(document,"String_Node_Str","String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str"),false);
  }
  if (Main.game.isInCombat()) {
    for (    StatusEffect se : Main.game.getPlayer().getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : Main.game.getPlayer().getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (Main.game.getPlayer().getMainWeapon() != null) {
      for (      Spell s : Main.game.getPlayer().getMainWeapon().getSpells()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer().getLevel(),Main.game.getPlayer());
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getPlayer().getOffhandWeapon() != null) {
      for (      Spell s : Main.game.getPlayer().getOffhandWeapon().getSpells()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer().getLevel(),Main.game.getPlayer());
          addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
        }
      }
    }
    for (    StatusEffect se : Combat.getOpponent().getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str" + StatusEffect.COMBAT_HIDDEN)) != null) {
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(StatusEffect.COMBAT_HIDDEN,Combat.getOpponent());
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",el,false);
    }
    for (    Perk p : Combat.getOpponent().getPerks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setPerk(p,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",el,false);
      }
    }
    for (    Fetish f : Combat.getOpponent().getFetishes()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setFetish(f,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : Combat.getOpponent().getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (Combat.getOpponent().getMainWeapon() != null)     for (    Spell s : Combat.getOpponent().getMainWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Combat.getOpponent().getLevel(),Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    if (Combat.getOpponent().getOffhandWeapon() != null)     for (    Spell s : Combat.getOpponent().getOffhandWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,Combat.getOpponent().getLevel(),Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    Attribute[] attributes={Attribute.STRENGTH,Attribute.INTELLIGENCE,Attribute.FITNESS,Attribute.CORRUPTION,Attribute.HEALTH_MAXIMUM,Attribute.MANA_MAXIMUM,Attribute.STAMINA_MAXIMUM};
    for (    Attribute a : attributes) {
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Combat.getOpponent());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setOpponentExtraAttributes();
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
    }
  }
  if (Main.game.getCurrentDialogueNode() == CharactersPresentDialogue.MENU || Main.game.getCurrentDialogueNode() == PhoneDialogue.CONTACTS) {
    for (    StatusEffect se : CharactersPresentDialogue.characterViewed.getStatusEffects()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + se)) != null) {
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(se,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + se,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str" + StatusEffect.COMBAT_HIDDEN)) != null) {
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setStatusEffect(StatusEffect.COMBAT_HIDDEN,CharactersPresentDialogue.characterViewed);
      addEventListener(document,"String_Node_Str" + StatusEffect.COMBAT_HIDDEN,"String_Node_Str",el,false);
    }
    for (    Perk p : CharactersPresentDialogue.characterViewed.getPerks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setPerk(p,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + p,"String_Node_Str",el,false);
      }
    }
    for (    Fetish f : CharactersPresentDialogue.characterViewed.getFetishes()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setFetish(f,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + f,"String_Node_Str",el,false);
      }
    }
    for (    SpecialAttack sa : CharactersPresentDialogue.characterViewed.getSpecialAttacks()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + sa)) != null) {
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpecialAttack(sa,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + sa,"String_Node_Str",el,false);
      }
    }
    if (CharactersPresentDialogue.characterViewed.getMainWeapon() != null)     for (    Spell s : CharactersPresentDialogue.characterViewed.getMainWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,CharactersPresentDialogue.characterViewed.getLevel(),CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    if (CharactersPresentDialogue.characterViewed.getOffhandWeapon() != null)     for (    Spell s : CharactersPresentDialogue.characterViewed.getOffhandWeapon().getSpells()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + s)) != null) {
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setSpell(s,CharactersPresentDialogue.characterViewed.getLevel(),CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + s,"String_Node_Str",el,false);
      }
    }
    Attribute[] attributes={Attribute.STRENGTH,Attribute.INTELLIGENCE,Attribute.FITNESS,Attribute.CORRUPTION,Attribute.HEALTH_MAXIMUM,Attribute.MANA_MAXIMUM,Attribute.STAMINA_MAXIMUM};
    for (    Attribute a : attributes) {
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,Main.game.getPlayer());
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + a)) != null) {
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setAttribute(a,CharactersPresentDialogue.characterViewed);
        addEventListener(document,"String_Node_Str" + a,"String_Node_Str",el,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el=new TooltipInformationEventListener().setOpponentExtraAttributes();
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
    }
  }
  if (Main.game.getCurrentDialogueNode().equals(DebugDialogue.SPAWN_MENU)) {
    id="String_Node_Str";
    for (    AbstractClothingType clothingType : DebugDialogue.clothingTotal) {
      id=clothingType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addClothing(AbstractClothingType.generateClothing(clothingType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericClothing(clothingType,clothingType.getAvailableColours().get(0));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractWeaponType weaponType : DebugDialogue.weaponsTotal) {
      id=weaponType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addWeapon(AbstractWeaponType.generateWeapon(weaponType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericWeapon(weaponType,weaponType.getAvailableDamageTypes().get(0));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractItemType itemType : DebugDialogue.itemsTotal) {
      id=itemType.getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addItem(AbstractItemType.generateItem(itemType));
          this.updateUIRightPanel();
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericItem(itemType);
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    for (    InventorySlot slot : InventorySlot.values()) {
      id=slot + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          DebugDialogue.activeSlot=slot;
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
    id="String_Node_Str";
    if (((EventTarget)document.getElementById(id)) != null) {
      ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
        DebugDialogue.activeSlot=null;
        Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
      }
,false);
    }
  }
  if (Main.game.isStarted()) {
    id="String_Node_Str";
    InventorySlot[] inventorySlots={InventorySlot.WEAPON_MAIN,InventorySlot.WEAPON_OFFHAND};
    for (    InventorySlot invSlot : inventorySlots) {
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponEquipped(Main.game.getPlayer(),invSlot);
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponEquipped(InventoryDialogue.getInventoryNPC(),invSlot);
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,InventoryDialogue.getInventoryNPC());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,CharactersPresentDialogue.characterViewed);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    InventorySlot invSlot : InventorySlot.values()) {
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingEquipped(Main.game.getPlayer(),invSlot);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,Main.game.getPlayer());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingEquipped(InventoryDialogue.getInventoryNPC(),invSlot);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      id="String_Node_Str" + invSlot.toString() + "String_Node_Str";
      if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setInventorySlot(invSlot,CharactersPresentDialogue.characterViewed);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
    for (    Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    Entry<AbstractItem,Integer> entry : Main.game.getPlayer().getMapOfDuplicateItems().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    for (    Entry<AbstractClothing,Integer> entry : Main.game.getPlayer().getMapOfDuplicateClothing().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),Main.game.getPlayer());
        addEventListener(document,id,"String_Node_Str",el,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
        addEventListener(document,id,"String_Node_Str",el2,false);
      }
    }
    if (InventoryDialogue.getInventoryNPC() != null) {
      for (      Entry<AbstractWeapon,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateClothing().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateItems().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
 else {
      for (      Entry<AbstractWeapon,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateClothing().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),null,null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateItems().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),null);
          addEventListener(document,id,"String_Node_Str",el,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),null,null);
          addEventListener(document,id,"String_Node_Str",el2,false);
        }
      }
    }
    if (InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
      if (InventoryDialogue.getInventoryNPC() != null) {
        for (int i=Main.game.getPlayer().getBuybackStack().size() - 1; i >= 0; i--) {
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            ((EventTarget)document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC());
            ((EventTarget)document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el2,false);
          }
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
          if (((EventTarget)document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            addEventListener(document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
        }
      }
    }
    for (    TFEssence essence : TFEssence.values()) {
      if (((EventTarget)document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
      if (((EventTarget)document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        addEventListener(document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(TFModifier.NONE);
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.primaryMod);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(TFModifier.NONE);
      addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.secondaryMod);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        Main.game.setResponseTab(1);
        Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.ITEM_INVENTORY){
          @Override public void effects(){
            EnchantmentDialogue.resetEnchantmentVariables();
          }
        }
);
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)EnchantmentDialogue.ingredient,Main.game.getPlayer(),null);
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.effects.isEmpty()) {
        }
 else         if (EnchantmentDialogue.canAffordCost(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects)) {
          Main.game.setContent(new ResponseEffectsOnly("String_Node_Str","String_Node_Str" + EnchantingUtils.getPotionName(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects) + "String_Node_Str"){
            @Override public void effects(){
              EnchantmentDialogue.craftItem(EnchantmentDialogue.ingredient,EnchantmentDialogue.effects);
              if (!Main.game.getPlayer().isQuestCompleted(QuestLine.SIDE_ENCHANTMENT_DISCOVERY)) {
                Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().incrementQuest(QuestLine.SIDE_ENCHANTMENT_DISCOVERY));
              }
              if (Main.game.getPlayer().hasItem((AbstractItem)EnchantmentDialogue.previousIngredient)) {
                EnchantmentDialogue.ingredient=EnchantmentDialogue.previousIngredient;
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU));
              }
 else {
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.INVENTORY_MENU));
              }
            }
          }
);
        }
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      addEventListener(document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.ingredient.getEnchantmentEffect().getEffectsDescription(EnchantmentDialogue.primaryMod,EnchantmentDialogue.secondaryMod,EnchantmentDialogue.potency,EnchantmentDialogue.limit,Main.game.getPlayer(),Main.game.getPlayer()) == null) {
        }
 else {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU){
            @Override public void effects(){
              EnchantmentDialogue.effects.add(new ItemEffect(EnchantmentDialogue.ingredient.getEnchantmentEffect(),EnchantmentDialogue.primaryMod,EnchantmentDialogue.secondaryMod,EnchantmentDialogue.potency,EnchantmentDialogue.limit));
            }
          }
);
        }
      }
,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
      addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
    }
    if (EnchantmentDialogue.ingredient != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getPrimaryModifiers()) {
        if (((EventTarget)document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (EnchantmentDialogue.ingredient != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getSecondaryModifiers(EnchantmentDialogue.primaryMod)) {
        if (((EventTarget)document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          addEventListener(document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_MANAGEMENT) {
      for (      Cell c : SlaveryManagementDialogue.importantCells) {
        id=c.getId();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect=c;
              }
              @Override public DialogueNodeOld getNextDialogue(){
                return SlaveryManagementDialogue.ROOM_UPGRADES;
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect=c;
              }
              @Override public DialogueNodeOld getNextDialogue(){
                return SlaveryManagementDialogue.ROOM_UPGRADES;
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES) {
      for (      PlaceUpgrade placeUpgrade : PlaceUpgrade.values()) {
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect.getPlace().addPlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getInstallCost());
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                SlaveryManagementDialogue.cellToInspect.getPlace().removePlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getRemovalCost());
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",(placeUpgrade.isCoreRoomUpgrade() ? "String_Node_Str" : "String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(),placeUpgrade)));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  SlaveryManagementDialogue.cellToInspect.getPlace().setName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVERY_OVERVIEW) {
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          SlaveryManagementDialogue.incrementDayNumber(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          SlaveryManagementDialogue.incrementDayNumber(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
    if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() != null) {
      id=Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setName(new NameTriplet(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent()));
                }
              }
);
            }
          }
        }
,false);
      }
      id=Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  for (                  String id : Main.game.getPlayer().getSlavesOwned()) {
                    Main.game.getNPCById(id).setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                  }
                }
              }
);
            }
          }
        }
,false);
      }
      for (int i=0; i < 24; i++) {
        allocateWorkTime(i);
      }
      for (      SlaveJobHours preset : SlaveJobHours.values()) {
        id=preset + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().resetWorkHours();
            for (int hour=preset.getStartHour(); hour < preset.getStartHour() + preset.getLength(); hour++) {
              if (hour >= 24) {
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour - 24,true);
              }
 else {
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour,true);
              }
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",preset.getDescription());
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=preset + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
      for (      SlaveJob job : SlaveJob.values()) {
        id=job + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setSlaveJob(job);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",job.getDescription());
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getAvailabilityText(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        for (        SlaveJobSetting setting : job.getMutualSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),"String_Node_Str"));
            addEventListener(document,id,"String_Node_Str",el,false);
          }
        }
        for (        Entry<String,List<SlaveJobSetting>> entry : job.getMutuallyExclusiveSettings().entrySet()) {
          for (          SlaveJobSetting setting : entry.getValue()) {
            id=setting + "String_Node_Str";
            if (((EventTarget)document.getElementById(id)) != null) {
              ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
                for (                SlaveJobSetting settingRem : entry.getValue()) {
                  Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(settingRem);
                }
                Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
                Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
              }
,false);
              addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
              addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              addEventListener(document,id,"String_Node_Str",el,false);
            }
            id=setting + "String_Node_Str";
            if (((EventTarget)document.getElementById(id)) != null) {
              addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
              addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              addEventListener(document,id,"String_Node_Str",el,false);
            }
          }
        }
      }
      for (      SlavePermission permission : SlavePermission.values()) {
        for (        SlavePermissionSetting setting : permission.getSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlavePermissionSetting(permission,setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlavePermissionSetting(permission,setting);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
            }
,false);
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            addEventListener(document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)document.getElementById(id)) != null) {
            addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
            addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
            addEventListener(document,id,"String_Node_Str",el,false);
          }
        }
      }
    }
    for (    String slaveId : Main.game.getPlayer().getSlavesOwned()) {
      id=slaveId;
      NPC slave=(NPC)Main.game.getNPCById(slaveId);
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(slave)));
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.mainController.openInventory(slave,InventoryInteraction.FULL_MANAGEMENT);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
            @Override public void effects(){
              slave.setHomeLocation(Main.game.getPlayer().getWorldLocation(),Main.game.getPlayer().getLocation());
              slave.returnToHome();
            }
          }
);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
            @Override public void effects(){
              Main.game.getPlayer().incrementMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()));
              Main.game.getDialogueFlags().getSlaveTrader().addSlave(slave);
              slave.setLocation(Main.game.getDialogueFlags().getSlaveTrader().getWorldLocation(),Main.game.getDialogueFlags().getSlaveTrader().getLocation(),true);
            }
          }
);
        }
,false);
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str" + UtilText.formatAsMoney(slave.getValueAsSlave(),"String_Node_Str",Colour.GENERIC_GOOD) + "String_Node_Str"+ "String_Node_Str"+ Main.game.getDialogueFlags().getSlaveTrader().getName()+ "String_Node_Str"+ UtilText.formatAsMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()),"String_Node_Str",Colour.GENERIC_ARCANE)+ "String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
      id=slaveId + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
        addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
        TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
        addEventListener(document,id,"String_Node_Str",el,false);
      }
    }
    if (Main.game.getDialogueFlags().getSlaveTrader() != null) {
      for (      String slaveId : Main.game.getDialogueFlags().getSlaveTrader().getSlavesOwned()) {
        id=slaveId + "String_Node_Str";
        NPC slave=(NPC)Main.game.getNPCById(slaveId);
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                Main.game.getPlayer().incrementMoney(-(int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()));
                Main.game.getPlayer().addSlave(slave);
                slave.setLocation(WorldType.SLAVER_ALLEY,PlaceType.SLAVER_ALLEY_SLAVERY_ADMINISTRATION,true);
              }
            }
);
          }
,false);
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str" + UtilText.formatAsMoney(slave.getValueAsSlave(),"String_Node_Str",Colour.GENERIC_GOOD) + "String_Node_Str"+ "String_Node_Str"+ Main.game.getDialogueFlags().getSlaveTrader().getName()+ "String_Node_Str"+ UtilText.formatAsMoney((int)(slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()),"String_Node_Str",Colour.GENERIC_ARCANE)+ "String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)document.getElementById(id)) != null) {
          addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
          addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          addEventListener(document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getActiveNPC() != null) {
      id=Main.game.getActiveNPC().getId() + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          boolean unsuitableName=false;
          if (Main.mainController.getWebEngine().executeScript("String_Node_Str") != null) {
            Main.mainController.getWebEngine().executeScript("String_Node_Str");
            if (Main.mainController.getWebEngine().getDocument() != null) {
              if (Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 2 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32)               unsuitableName=true;
 else {
                unsuitableName=false;
              }
            }
            if (!unsuitableName) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  Main.game.getActiveNPC().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
                }
              }
);
            }
          }
        }
,false);
      }
    }
    if (!Main.game.isInNewWorld()) {
      for (      Month month : Month.values()) {
        id="String_Node_Str" + month;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setStartingDateMonth(month);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
    }
    if (!Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_CORE) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_FACE)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_ASS)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_BREASTS)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_VAGINA)|| Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_PENIS)) {
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          CharacterCreation.setGenderMale();
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          CharacterCreation.setGenderFemale();
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.MASCULINE_STRONG.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.MASCULINE.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.ANDROGYNOUS.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.FEMININE.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setFemininity(Femininity.FEMININE_STRONG.getMedianFemininity());
          if (!Main.game.isInNewWorld()) {
            CharacterCreation.getDressed();
          }
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      Personality personality : Personality.values()) {
        id="String_Node_Str" + personality;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPersonality(personality);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      SexualOrientation orientation : SexualOrientation.values()) {
        id="String_Node_Str" + orientation;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setSexualOrientation(orientation);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.heightChoices) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHeight(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BodySize bs : BodySize.values()) {
        id="String_Node_Str" + bs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBodySize(bs.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Muscle muscle : Muscle.values()) {
        id="String_Node_Str" + muscle;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setMuscle(muscle.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LipSize ls : LipSize.values()) {
        id="String_Node_Str" + ls;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setLipSize(ls.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().addFaceOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().removeFaceOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      CupSize cs : CupSize.values()) {
        id="String_Node_Str" + cs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastSize(cs.getMeasurement());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BreastShape bs : BreastShape.values()) {
        id="String_Node_Str" + bs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastShape(bs);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      NippleSize ns : NippleSize.values()) {
        id="String_Node_Str" + ns;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleSize(ns.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      AreolaeSize as : AreolaeSize.values()) {
        id="String_Node_Str" + as;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAreolaeSize(as.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().addNippleOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().removeNippleOrificeModifier(OrificeModifier.PUFFY);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      int i : CharacterModificationUtils.getLactationQuantitiesAvailable()) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastLactation(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      AssSize as : CharacterModificationUtils.getAssSizesAvailable()) {
        id="String_Node_Str" + as;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssSize(as.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HipSize hs : CharacterModificationUtils.getHipSizesAvailable()) {
        id="String_Node_Str" + hs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHipSize(hs.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setAssBleached(true);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setAssBleached(false);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      for (      int ps : CharacterModificationUtils.getPenisSizesAvailable()) {
        id="String_Node_Str" + ps;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TesticleSize ts : CharacterModificationUtils.getTesticleSizesAvailable()) {
        id="String_Node_Str" + ts;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTesticleSize(ts.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      CumProduction cp : CharacterModificationUtils.getCumProductionAvailable()) {
        id="String_Node_Str" + cp;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cp.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Wetness wetness : Wetness.values()) {
        id="String_Node_Str" + wetness;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaWetness(wetness.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaPlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      ClitorisSize cs : ClitorisSize.values()) {
        id="String_Node_Str" + cs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaClitorisSize(cs.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LabiaSize ls : LabiaSize.values()) {
        id="String_Node_Str" + ls;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaLabiaSize(ls.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      ArmType armType : ArmType.values()) {
        id="String_Node_Str" + armType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setArmType(armType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HornType hornType : HornType.values()) {
        id="String_Node_Str" + hornType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHornType(hornType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LegType legType : LegType.values()) {
        id="String_Node_Str" + legType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setLegType(legType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TailType tailType : TailType.values()) {
        id="String_Node_Str" + tailType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTailType(tailType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      WingType wingType : WingType.values()) {
        id="String_Node_Str" + wingType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setWingType(wingType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      EyeShape eyeShape : EyeShape.values()) {
        id="String_Node_Str" + eyeShape;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setIrisShape(eyeShape);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + eyeShape;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPupilShape(eyeShape);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      LipSize lipSize : LipSize.values()) {
        id="String_Node_Str" + lipSize;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setLipSize(lipSize.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasFaceOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeFaceOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addFaceOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TongueModifier tongueMod : TongueModifier.values()) {
        id="String_Node_Str" + tongueMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasTongueModifier(tongueMod)) {
              BodyChanging.getTarget().removeTongueModifier(tongueMod);
            }
 else {
              BodyChanging.getTarget().addTongueModifier(tongueMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasAssOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeAssOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addAssOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      AssSize as : AssSize.values()) {
        id="String_Node_Str" + as;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssSize(as.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HipSize hs : HipSize.values()) {
        id="String_Node_Str" + hs;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHipSize(hs.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      Wetness wetness : Wetness.values()) {
        id="String_Node_Str" + wetness;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssWetness(wetness.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssPlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (int i=1; i <= Breast.MAXIMUM_BREAST_ROWS; i++) {
        setBreastCountListener(i);
      }
      for (int i=1; i <= Breast.MAXIMUM_NIPPLES_PER_BREAST; i++) {
        setNippleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNippleElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setNipplePlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.demonLactationValues) {
        id="String_Node_Str" + i;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastLactation(i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasNippleOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeNippleOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addNippleOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      VaginaType vaginaType : VaginaType.values()) {
        id="String_Node_Str" + vaginaType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setVaginaType(vaginaType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasVaginaOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeVaginaOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addVaginaOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisType penisType : PenisType.values()) {
        id="String_Node_Str" + penisType;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisType(penisType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisSize ps : PenisSize.values()) {
        id="String_Node_Str" + ps.getMinimumValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps.getMinimumValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + ps.getMedianValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisSize(ps.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TesticleSize size : TesticleSize.values()) {
        id="String_Node_Str" + size;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTesticleSize(size.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (int i=Testicle.MIN_TESTICLE_COUNT; i <= Testicle.MAX_TESTICLE_COUNT; i+=2) {
        setTesticleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisCapacity(capacity.getMedianValue(),true);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      CumProduction cumProduction : CumProduction.values()) {
        id="String_Node_Str" + cumProduction.getMinimumValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cumProduction.getMinimumValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + cumProduction.getMedianValue();
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setCumProduction(cumProduction.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeElasticity elasticity : OrificeElasticity.values()) {
        id="String_Node_Str" + elasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setUrethraElasticity(elasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificePlasticity plasticity : OrificePlasticity.values()) {
        id="String_Node_Str" + plasticity;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setUrethraPlasticity(plasticity.getValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      PenisModifier orificeMod : PenisModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasPenisModifier(orificeMod)) {
              BodyChanging.getTarget().removePenisModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addPenisModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      OrificeModifier orificeMod : OrificeModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (BodyChanging.getTarget().hasUrethraOrificeModifier(orificeMod)) {
              BodyChanging.getTarget().removeUrethraOrificeModifier(orificeMod);
            }
 else {
              BodyChanging.getTarget().addUrethraOrificeModifier(orificeMod);
            }
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
    }
    boolean noCost=!Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().getMapDisplay() == MapDisplay.PHONE;
    for (    BodyCoveringType bct : BodyCoveringType.values()) {
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),false,BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),true,BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),false),false);
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                }
                BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),true),false);
              }
            }
);
          }
        }
,false);
      }
      for (      CoveringPattern pattern : CoveringPattern.values()) {
        id=bct + "String_Node_Str" + pattern;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,pattern,BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
                }
              }
);
            }
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),colour,(colour == Colour.COVERING_NONE ? false : BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing()),BodyChanging.getTarget().getCovering(bct).getSecondaryColour(),BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing()),false);
                  if (noCost) {
                    if (bct == BodyCoveringType.HUMAN) {
                      BodyChanging.getTarget().getBody().updateCoverings(false,false,false,true);
                    }
                  }
                }
              }
);
            }
          }
,false);
        }
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)document.getElementById(id)) != null) {
          ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(bct,BodyChanging.getTarget().getCovering(bct).getPattern(),BodyChanging.getTarget().getCovering(bct).getPrimaryColour(),BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing(),colour,(colour == Colour.COVERING_NONE ? false : BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing())),false);
                }
              }
);
            }
          }
,false);
        }
      }
    }
    for (    HairLength hairLength : HairLength.values()) {
      id="String_Node_Str" + hairLength;
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_LENGTH_COST || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_LENGTH_COST);
                }
                BodyChanging.getTarget().setHairLength(hairLength.getMedianValue());
              }
            }
);
          }
        }
,false);
      }
    }
    for (    HairStyle hairStyle : HairStyle.values()) {
      id="String_Node_Str" + hairStyle;
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_STYLE_COST || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_STYLE_COST);
                }
                BodyChanging.getTarget().setHairStyle(hairStyle);
              }
            }
);
          }
        }
,false);
      }
    }
    for (    PiercingType piercingType : PiercingType.values()) {
      id=piercingType + "String_Node_Str";
      if (((EventTarget)document.getElementById(id)) != null) {
        ((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
              @Override public void effects(){
                if (!noCost) {
                  Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
                }
switch (piercingType) {
case EAR:
                  BodyChanging.getTarget().setPiercedEar(false);
                break;
case LIP:
              BodyChanging.getTarget().setPiercedLip(false);
            break;
case NAVEL:
          BodyChanging.getTarget().setPiercedNavel(false);
        break;
case NIPPLE:
      BodyChanging.getTarget().setPiercedNipples(false);
    break;
case NOSE:
  BodyChanging.getTarget().setPiercedNose(false);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(false);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(false);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(false);
break;
}
}
}
);
}
}
,false);
}
id=piercingType + "String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
}
switch (piercingType) {
case EAR:
BodyChanging.getTarget().setPiercedEar(true);
break;
case LIP:
BodyChanging.getTarget().setPiercedLip(true);
break;
case NAVEL:
BodyChanging.getTarget().setPiercedNavel(true);
break;
case NIPPLE:
BodyChanging.getTarget().setPiercedNipples(true);
break;
case NOSE:
BodyChanging.getTarget().setPiercedNose(true);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(true);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(true);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(true);
break;
}
}
}
);
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(false);
}
}
);
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(true);
}
}
);
}
}
,false);
}
for (BodyHair bodyHair : BodyHair.values()) {
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setAssHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setUnderarmHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setPubicHair(bodyHair);
}
}
);
}
}
,false);
}
id="String_Node_Str" + bodyHair;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setFacialHair(bodyHair);
}
}
);
}
}
,false);
}
}
for (AbstractClothingType clothing : ClothingType.getAllClothing()) for (Colour c : clothing.getAvailableColours()) {
if ((EventTarget)document.getElementById(clothing.hashCode() + "String_Node_Str" + c.toString()) != null) {
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",moveTooltipListener,false);
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericClothing(clothing,c);
addEventListener(document,clothing.hashCode() + "String_Node_Str" + c.toString(),"String_Node_Str",el2,false);
}
}
for (AbstractWeaponType weapon : WeaponType.allweapons) for (DamageType dt : weapon.getAvailableDamageTypes()) {
if ((EventTarget)document.getElementById(weapon.hashCode() + "String_Node_Str" + dt.toString()) != null) {
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",moveTooltipListener,false);
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericWeapon(weapon,dt);
addEventListener(document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",el2,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseStrength(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseStrength(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseIntelligence(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseIntelligence(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().increaseFitness(),false);
if (((EventTarget)document.getElementById("String_Node_Str")) != null) addEventListener(document,"String_Node_Str","String_Node_Str",new LevelUpButtonsEventListener().decreaseFitness(),false);
for (Perk p : Perk.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + p)) != null) {
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",hideTooltipListener,false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(p,Main.game.getPlayer()),false);
addEventListener(document,"String_Node_Str" + p,"String_Node_Str",new LevelUpButtonsEventListener().handlePerkPress(p),false);
}
}
for (Fetish f : Fetish.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f)) != null) {
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",hideTooltipListener,false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",new TooltipInformationEventListener().setFetish(f,Main.game.getPlayer()),false);
addEventListener(document,"String_Node_Str" + f,"String_Node_Str",new LevelUpButtonsEventListener().handleFetishPress(f),false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
for (KeyboardAction ka : KeyboardAction.values()) {
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
actionToBind=ka;
primaryBinding=true;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
Main.getProperties().hotkeyMapPrimary.put(ka,null);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
actionToBind=ka;
primaryBinding=false;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
Main.getProperties().hotkeyMapSecondary.put(ka,null);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.GENDER_PREFERENCE) {
for (Gender g : Gender.values()) {
for (GenderPreference preference : GenderPreference.values()) {
if (((EventTarget)document.getElementById(preference + "String_Node_Str" + g)) != null) {
((EventTarget)document.getElementById(preference + "String_Node_Str" + g)).addEventListener("String_Node_Str",e -> {
Main.getProperties().genderPreferencesMap.put(g,preference.getValue());
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.FURRY_PREFERENCE) {
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=0;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=1;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=2;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=3;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().humanEncountersLevel=4;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.HUMAN;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.MINIMUM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.REDUCED;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.NORMAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPreference=FurryPreference.MAXIMUM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,id,"String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=0;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=1;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.getProperties().multiBreasts=2;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,"String_Node_Str","String_Node_Str",moveTooltipListener,false);
addEventListener(document,"String_Node_Str","String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
addEventListener(document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.HUMAN);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.HUMAN);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MINIMUM);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.REDUCED);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.REDUCED);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.NORMAL);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.NORMAL);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Race r : Race.values()) {
if (r.isAffectedByFurryPreference()) {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MAXIMUM);
}
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (Race r : Race.values()) {
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.HUMAN);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.HUMAN.getName(),FurryPreference.HUMAN.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MINIMUM.getName(),FurryPreference.MINIMUM.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.REDUCED);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.REDUCED.getName(),FurryPreference.REDUCED.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.NORMAL);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.NORMAL.getName(),FurryPreference.NORMAL.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceFemininePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MAXIMUM.getName(),FurryPreference.MAXIMUM.getDescriptionFeminine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.HUMAN);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.HUMAN.getName(),FurryPreference.HUMAN.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MINIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MINIMUM.getName(),FurryPreference.MINIMUM.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.REDUCED);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.REDUCED.getName(),FurryPreference.REDUCED.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.NORMAL);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.NORMAL.getName(),FurryPreference.NORMAL.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + r;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().raceMasculinePreferencesMap.put(r,FurryPreference.MAXIMUM);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(FurryPreference.MAXIMUM.getName(),FurryPreference.MAXIMUM.getDescriptionMasculine(r));
addEventListener(document,id,"String_Node_Str",el,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.CONTENT_PREFERENCE || Main.game.getCurrentDialogueNode() == CharacterCreation.CONTENT_PREFERENCES) {
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().nonConContent=true;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().nonConContent=false;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().incestContent=true;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().incestContent=false;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().facialHairContent=!Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().facialHairContent=!Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pubicHairContent=!Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pubicHairContent=!Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().bodyHairContent=!Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().bodyHairContent=!Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().furryTailPenetrationContent=!Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().furryTailPenetrationContent=!Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (int i : OptionsDialogue.forcedTFsettings) {
id="String_Node_Str" + i;
if (((EventTarget)document.getElementById(id)) != null) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=i;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD && !Main.game.isInCombat() && !Main.game.isInSex()) {
for (File f : Main.getSavedGames()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.overwriteConfirmationName.equals(f.getName())) {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
Main.saveGame(f.getName().substring(0,f.getName().lastIndexOf('.')),true);
}
 else {
OptionsDialogue.overwriteConfirmationName=f.getName();
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Main.loadGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName=f.getName();
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.SAVE_LOAD));
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.IMPORT_EXPORT) {
for (File f : Main.getGamesForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Game.importGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName=f.getName();
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.IMPORT_EXPORT));
}
}
,false);
}
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteExportedGame(f.getName().substring(0,f.getName().lastIndexOf('.')));
}
 else {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
OptionsDialogue.loadConfirmationName="String_Node_Str";
OptionsDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",OptionsDialogue.IMPORT_EXPORT));
}
}
,false);
}
}
if (((EventTarget)document.getElementById("String_Node_Str")) != null) {
((EventTarget)document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == CharacterCreation.IMPORT_CHOOSE) {
for (File f : Main.getCharactersForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
Main.importCharacter(f);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_IMPORT) {
for (File f : Main.getSlavesForImport()) {
if (((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))) != null) {
((EventTarget)document.getElementById("String_Node_Str" + f.getName().substring(0,f.getName().lastIndexOf('.')))).addEventListener("String_Node_Str",e -> {
try {
Game.importCharacterAsSlave(f.getName().substring(0,f.getName().lastIndexOf('.')));
this.updateUI();
Main.game.flashMessage(Colour.GENERIC_GOOD,"String_Node_Str");
}
 catch (Exception ex) {
Main.game.flashMessage(Colour.GENERIC_BAD,"String_Node_Str");
}
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_BLOCK_LIST) {
for (NPC npc : Main.game.getCharactersPresent()) {
id=npc.getId() + "String_Node_Str";
if (((EventTarget)document.getElementById(id)) != null) {
if (Main.game.getPlayer().isHasSlaverLicense()) {
((EventTarget)document.getElementById(id)).addEventListener("String_Node_Str",e -> {
SlaverAlleyDialogue.setupBidding(npc);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaverAlleyDialogue.AUCTION_BIDDING));
}
,false);
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
addEventListener(document,id,"String_Node_Str",el,false);
}
 else {
addEventListener(document,id,"String_Node_Str",moveTooltipListener,false);
addEventListener(document,id,"String_Node_Str",hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
addEventListener(document,id,"String_Node_Str",el,false);
}
}
}
}
setResponseEventListeners();
}