Program: 171232
Project: 171232
Buggy source:
@SuppressWarnings("String_Node_Str") public static void initMainControllerListeners(){
  MainController.document=(Document)MainController.webEngine.executeScript("String_Node_Str");
  MainController.EventListenerDataMap.put(MainController.document,new ArrayList<>());
  String id="String_Node_Str";
  if (MainController.flashMessageColour != null && MainController.flashMessageText != null) {
    Main.game.flashMessage(MainController.flashMessageColour,MainController.flashMessageText);
    MainController.flashMessageColour=null;
    MainController.flashMessageText=null;
  }
  if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.copyDialogueButtonListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.copyInfoListener,false);
  }
  if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",e -> {
      if (Main.game.getCurrentDialogueNode().equals(PhoneDialogue.CHARACTER_APPEARANCE)) {
        Game.exportCharacter(Main.game.getPlayer());
      }
 else {
        Game.exportCharacter(CharactersPresentDialogue.characterViewed);
      }
      Main.game.flashMessage(Colour.GENERIC_EXCELLENT,"String_Node_Str");
    }
,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str"),false);
  }
  if (Main.game.getCurrentDialogueNode().equals(CharactersPresentDialogue.MENU) || Main.game.getCurrentDialogueNode().equals(PhoneDialogue.CONTACTS_CHARACTER) || Main.game.getCurrentDialogueNode().equals(SlaveryManagementDialogue.SLAVE_MANAGEMENT_INSPECT)) {
    if (CharactersPresentDialogue.characterViewed instanceof NPC && !((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().isEmpty()) {
      try {
        Artwork artwork=((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().get(((NPC)CharactersPresentDialogue.characterViewed).getArtworkIndex());
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (!artwork.getArtist().getWebsites().isEmpty()) {
              Util.openLinkInDefaultBrowser(artwork.getArtist().getWebsites().get(0).getURL());
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str" + artwork.getArtist().getColour().toWebHexString() + "String_Node_Str"+ artwork.getArtist().getName()+ "String_Node_Str",(artwork.getArtist().getWebsites().isEmpty() ? "String_Node_Str" : "String_Node_Str" + artwork.getArtist().getColour().toWebHexString() + "String_Node_Str"+ artwork.getArtist().getWebsites().get(0).getName()+ "String_Node_Str"+ "String_Node_Str"+ artwork.getArtist().getWebsites().get(0).getURL()+ "String_Node_Str")),false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (artwork.getTotalArtworkCount() > 1) {
              artwork.incrementIndex(-1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (artwork.getTotalArtworkCount() > 1) {
              artwork.incrementIndex(1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().size() > 1) {
              ((NPC)CharactersPresentDialogue.characterViewed).incrementArtworkIndex(-1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().size() > 1) {
              ((NPC)CharactersPresentDialogue.characterViewed).incrementArtworkIndex(1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
      }
 catch (      Exception ex) {
        System.err.println("String_Node_Str");
      }
    }
  }
  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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addClothing(AbstractClothingType.generateClothing(clothingType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericClothing(clothingType,clothingType.getAvailablePrimaryColours().get(0));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractWeaponType weaponType : DebugDialogue.weaponsTotal) {
      id=weaponType.getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addWeapon(AbstractWeaponType.generateWeapon(weaponType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericWeapon(weaponType,weaponType.getAvailableDamageTypes().get(0));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractItemType itemType : DebugDialogue.itemsTotal) {
      id=itemType.getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addItem(AbstractItemType.generateItem(itemType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericItem(itemType);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    InventorySlot slot : InventorySlot.values()) {
      id=slot + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
      ((EventTarget)MainController.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.getCurrentDialogueNode() == CharacterCreation.BACKGROUND_SELECTION_MENU) {
    for (    History history : History.values()) {
      id="String_Node_Str" + history;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setPerk(history.getAssociatedPerk(),Main.game.getPlayer()),false);
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
          Main.game.getPlayer().setHistory(history);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
  }
  if (Main.game.isStarted()) {
    id="String_Node_Str";
    if (Main.game.getCurrentDialogueNode().equals(GiftDialogue.GIFT_DIALOGUE)) {
      for (      Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeWeapon(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeItem(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeClothing(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
    }
    for (int i=0; i < RenderingEngine.INVENTORY_PAGES; i++) {
      MainController.setInventoryPageLeft(i);
      MainController.setInventoryPageRight(i);
    }
    for (    Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
        MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
      }
    }
    if (InventoryDialogue.getInventoryNPC() != null) {
      String idModifier="String_Node_Str" + InventoryDialogue.getInventoryNPC().getId() + "String_Node_Str";
      for (      Entry<AbstractWeapon,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateWeapons().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateClothing().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateItems().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),null,null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),null,null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            ((EventTarget)MainController.document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC());
            ((EventTarget)MainController.document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el2,false);
          }
          if (((EventTarget)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
          if (((EventTarget)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
        }
      }
    }
    for (    TFEssence essence : TFEssence.values()) {
      if (((EventTarget)MainController.document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
      if (((EventTarget)MainController.document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(TFModifier.NONE);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.getPrimaryMod());
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(TFModifier.NONE);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.getSecondaryMod());
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    for (    TFPotency potency : TFPotency.values()) {
      id="String_Node_Str" + potency;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        EnchantmentEventListener el=new EnchantmentEventListener().setPotency(potency);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      }
    }
    for (int effectCount=0; effectCount < EnchantmentDialogue.getEffects().size(); effectCount++) {
      id="String_Node_Str" + effectCount;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        EnchantmentEventListener el=new EnchantmentEventListener().removeEffect(effectCount);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
      }
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(0);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(Math.max(0,EnchantmentDialogue.getLimit() - (EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod()) / 10)));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getLimit() - 1);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() < EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod())) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getLimit() + 1);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      int currentLimit=EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod());
      if (EnchantmentDialogue.getLimit() < currentLimit) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(Math.min(currentLimit,EnchantmentDialogue.getLimit() + (currentLimit / 10)));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() < EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod())) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod()));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        Main.game.setResponseTab(1);
        if (EnchantmentDialogue.getIngredient() instanceof AbstractItem) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.ITEM_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof AbstractClothing) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.CLOTHING_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof AbstractWeapon) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.WEAPON_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof Tattoo) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",BodyChanging.getTarget().isPlayer() ? SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS : SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
      }
,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=null;
      if (EnchantmentDialogue.getIngredient() instanceof AbstractItem) {
        el2=new InventoryTooltipEventListener().setItem((AbstractItem)EnchantmentDialogue.getIngredient(),Main.game.getPlayer(),null);
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof AbstractClothing) {
        el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)EnchantmentDialogue.getIngredient(),Main.game.getPlayer(),null);
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof AbstractWeapon) {
        el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)EnchantmentDialogue.getIngredient(),Main.game.getPlayer());
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof Tattoo) {
        el2=new InventoryTooltipEventListener().setTattoo(EnchantmentDialogue.getTattooSlot(),(Tattoo)EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getTattooBearer(),EnchantmentDialogue.getTattooBearer());
      }
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.getEffects().isEmpty()) {
        }
 else         if (EnchantmentDialogue.canAffordCost(EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getEffects())) {
          Main.game.setContent(new ResponseEffectsOnly("String_Node_Str","String_Node_Str" + EnchantmentDialogue.getOutputName() + "String_Node_Str"){
            @Override public void effects(){
              EnchantmentDialogue.craftItem(EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getEffects());
              if ((EnchantmentDialogue.getPreviousIngredient() instanceof AbstractItem ? Main.game.getPlayer().hasItem((AbstractItem)EnchantmentDialogue.getPreviousIngredient()) : true) && (EnchantmentDialogue.getPreviousIngredient() instanceof AbstractClothing ? Main.game.getPlayer().hasClothing((AbstractClothing)EnchantmentDialogue.getPreviousIngredient()) : true) && (EnchantmentDialogue.getPreviousIngredient() instanceof AbstractWeapon ? Main.game.getPlayer().hasWeapon((AbstractWeapon)EnchantmentDialogue.getPreviousIngredient()) : true)) {
                EnchantmentDialogue.setIngredient(EnchantmentDialogue.getPreviousIngredient());
                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);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.getIngredient().getEnchantmentEffect().getEffectsDescription(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod(),EnchantmentDialogue.getPotency(),EnchantmentDialogue.getLimit(),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.addEffect(new ItemEffect(EnchantmentDialogue.getIngredient().getEnchantmentEffect(),EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod(),EnchantmentDialogue.getPotency(),EnchantmentDialogue.getLimit()));
            }
          }
);
        }
      }
,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str",EnchantmentDialogue.getEffects().size() >= EnchantmentDialogue.getIngredient().getEnchantmentLimit() ? "String_Node_Str" : "String_Node_Str");
      MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
    }
    if (EnchantmentDialogue.getIngredient() != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.getIngredient().getEnchantmentEffect().getPrimaryModifiers()) {
        if (((EventTarget)MainController.document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (EnchantmentDialogue.getIngredient() != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.getIngredient().getEnchantmentEffect().getSecondaryModifiers(EnchantmentDialogue.getPrimaryMod())) {
        if (((EventTarget)MainController.document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_MANAGEMENT) {
      for (      Cell c : SlaveryManagementDialogue.getImportantCells()) {
        id=c.getId();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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_MANAGEMENT;
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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_MANAGEMENT;
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES_MANAGEMENT) {
      for (      PlaceUpgrade placeUpgrade : PlaceUpgrade.values()) {
        id="String_Node_Str" + placeUpgrade;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",(SlaveryManagementDialogue.cellToInspect.getPlace().getPlaceUpgrades().contains(placeUpgrade) ? placeUpgrade.getDescriptionAfterPurchase() : placeUpgrade.getDescriptionForPurchase()));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (placeUpgrade != PlaceUpgrade.LILAYA_ARTHUR_ROOM) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  SlaveryManagementDialogue.cellToInspect.addPlaceUpgrade(placeUpgrade);
                  Main.game.getPlayer().incrementMoney(-placeUpgrade.getInstallCost());
                }
              }
);
            }
 else {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",LilayaHomeGeneric.ROOM_ARTHUR_INSTALLATION){
                @Override public void effects(){
                  Main.game.getArthur().setLocation(Main.game.getPlayer().getWorldLocation(),Main.game.getPlayer().getLocation(),true);
                  SlaveryManagementDialogue.cellToInspect.addPlaceUpgrade(placeUpgrade);
                  Main.game.getDialogueFlags().setFlag(DialogueFlagValue.arthursRoomInstalled,true);
                }
              }
);
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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.removePlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getRemovalCost());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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,placeUpgrade)));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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.getPlayer().getLocationPlace().getPlaceUpgrades().contains(PlaceUpgrade.LILAYA_MILKING_ROOM)) {
      MilkingRoom room=Main.game.getSlaveryUtil().getMilkingRoom(Main.game.getPlayerCell().getType(),Main.game.getPlayerCell().getLocation());
      for (      Entry<FluidMilk,Float> entry : room.getMilkStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int milkAmount=(int)(Math.min(room.getMilkStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (milkAmount > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,milkAmount,entry.getKey().getFluidModifiers()));
              room.incrementMilkStorage(entry.getKey(),-milkAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (milkAmount > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + milkAmount + "String_Node_Str","String_Node_Str" + milkAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getMilkStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementMilkStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getMilkStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getMilkStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      Entry<FluidCum,Float> entry : room.getCumStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int cumAmount=(int)(Math.min(room.getCumStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getCumStorage().get(entry.getKey()) > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,cumAmount,entry.getKey().getFluidModifiers()));
              room.incrementCumStorage(entry.getKey(),-cumAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getCumStorage().get(entry.getKey()) > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + cumAmount + "String_Node_Str","String_Node_Str" + cumAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getCumStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementCumStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getCumStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getCumStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      Entry<FluidGirlCum,Float> entry : room.getGirlcumStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int girlcumAmount=(int)(Math.min(room.getGirlcumStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getGirlcumStorage().get(entry.getKey()) > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,girlcumAmount,entry.getKey().getFluidModifiers()));
              room.incrementGirlcumStorage(entry.getKey(),-girlcumAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getGirlcumStorage().get(entry.getKey()) > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + girlcumAmount + "String_Node_Str","String_Node_Str" + girlcumAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getGirlcumStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementGirlcumStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getGirlcumStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getGirlcumStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVERY_OVERVIEW) {
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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++) {
        MainController.allocateWorkTime(i);
      }
      for (      SlaveJobHours preset : SlaveJobHours.values()) {
        id=preset + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",preset.getDescription());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=preset + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      SlaveJob job : SlaveJob.values()) {
        id="String_Node_Str" + job;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(job.getName(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())),UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getDescription()));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",job.getDescription());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getAvailabilityText(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        for (        SlaveJobSetting setting : job.getMutualSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),"String_Node_Str"));
            MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
              ((EventTarget)MainController.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);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
            }
            id=setting + "String_Node_Str";
            if (((EventTarget)MainController.document.getElementById(id)) != null) {
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
            }
          }
        }
      }
      for (      SlavePermission permission : SlavePermission.values()) {
        for (        SlavePermissionSetting setting : permission.getSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
      }
    }
    for (    String slaveId : Main.game.getPlayer().getSlavesOwned()) {
      id=slaveId;
      NPC slave=(NPC)Main.game.getNPCById(slaveId);
      if (slave != null) {
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.mainController.openInventory(slave,InventoryInteraction.FULL_MANAGEMENT);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.SLAVE_MANAGEMENT_COSMETICS_HAIR){
              @Override public void effects(){
                Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(slave);
                BodyChanging.setTarget(slave);
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getActiveNPC() != null) {
      id=Main.game.getActiveNPC().getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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()) {
      if (Main.game.getCurrentDialogueNode().equals(CharacterCreation.CHOOSE_APPEARANCE)) {
        for (        Month month : Month.values()) {
          id="String_Node_Str" + month;
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
          }
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusDays(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusDays(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusDays(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusDays(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusMonths(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusMonths(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusMonths(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusMonths(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusYears(1));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusYears(5));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusYears(1));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusYears(5));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.soSilly) {
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.FINGER,SexAreaOrifice.URETHRA_PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.FINGER,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.MOUTH,SexAreaPenetration.PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.TONGUE,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.ANUS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.URETHRA_PENIS,SexAreaPenetration.FINGER),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.FINGER),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.MOUTH),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.TONGUE),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.ANUS,SexAreaPenetration.PENIS),i);
            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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (      PersonalityTrait trait : PersonalityTrait.values()) {
        id="String_Node_Str" + trait;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(trait.getName()),trait.getDescription()),false);
        }
        for (        PersonalityWeight weight : PersonalityWeight.values()) {
          id="String_Node_Str" + trait + "String_Node_Str"+ weight;
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              BodyChanging.getTarget().setPersonalityTrait(trait,weight);
              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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(5);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(-5);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (      HornLength hornLength : HornLength.values()) {
        id="String_Node_Str" + hornLength;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHornLength(hornLength.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TongueLength tongueLength : TongueLength.values()) {
        id="String_Node_Str" + tongueLength;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTongueLength(tongueLength.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      WingSize wingSize : WingSize.values()) {
        id="String_Node_Str" + wingSize;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setWingSize(wingSize.getValue());
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastMilkStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      PenisGirth girth : PenisGirth.values()) {
        id="String_Node_Str" + girth;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisGirth(girth.getValue());
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisCumStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      EyeType eyeType : EyeType.values()) {
        id="String_Node_Str" + eyeType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setEyeType(eyeType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      EarType earType : EarType.values()) {
        id="String_Node_Str" + earType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setEarType(earType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      AntennaType antennaType : AntennaType.values()) {
        id="String_Node_Str" + antennaType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAntennaType(antennaType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HairType hairType : HairType.values()) {
        id="String_Node_Str" + hairType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHairType(hairType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      FaceType faceType : FaceType.values()) {
        id="String_Node_Str" + faceType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setFaceType(faceType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      SkinType skinType : SkinType.values()) {
        id="String_Node_Str" + skinType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setSkinType(skinType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      AssType assType : AssType.values()) {
        id="String_Node_Str" + assType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssType(assType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BreastType breastType : BreastType.values()) {
        id="String_Node_Str" + breastType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastType(breastType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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++) {
        MainController.setBreastCountListener(i);
      }
      for (int i=1; i <= Breast.MAXIMUM_NIPPLES_PER_BREAST; i++) {
        MainController.setNippleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastMilkStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(5);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(-5);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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) {
        MainController.setTesticleCountListener(i);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setInternalTesticles(true);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setInternalTesticles(false);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(25);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(500);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-25);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-500);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      PenetrationModifier orificeMod : PenetrationModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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().getDialogueNodeType() == DialogueNodeType.PHONE;
    for (    BodyCoveringType bct : BodyCoveringType.values()) {
      id="String_Node_Str" + bct;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (CharacterModificationUtils.getCoveringsToBeApplied().containsKey(bct)) {
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(CharacterModificationUtils.getCoveringsToBeApplied().get(bct)),false);
                  if (noCost) {
                    if (bct == BodyCoveringType.HUMAN) {
                      BodyChanging.getTarget().getBody().updateCoverings(false,false,false,true);
                    }
                  }
                }
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(false);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(true);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(false);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(true);
            }
          }
);
        }
,false);
      }
      for (      CoveringPattern pattern : CoveringPattern.values()) {
        id=bct + "String_Node_Str" + pattern;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPattern(pattern);
              }
            }
);
          }
,false);
        }
      }
      for (      CoveringModifier modifier : CoveringModifier.values()) {
        id=bct + "String_Node_Str" + modifier;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setModifier(modifier);
              }
            }
);
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllPrimaryColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryColour(colour);
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing((colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing()));
              }
            }
);
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllSecondaryColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryColour(colour);
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing());
              }
            }
);
          }
,false);
        }
      }
    }
    for (    HairLength hairLength : HairLength.values()) {
      id="String_Node_Str" + hairLength;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
}
}
if (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS || Main.game.getCurrentDialogueNode() == CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS) {
for (InventorySlot invSlot : InventorySlot.getClothingSlots()) {
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
if (BodyChanging.getTarget().getTattooInSlot(invSlot) != null) {
InventoryTooltipEventListener el=new InventoryTooltipEventListener().setTattoo(invSlot,BodyChanging.getTarget().getTattooInSlot(invSlot),BodyChanging.getTarget(),BodyChanging.getTarget());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
 else {
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(invSlot.getTattooSlotName()),"String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
if (BodyChanging.getTarget().getTattooInSlot(invSlot) == null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.isInNewWorld() ? (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS ? SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS_ADD : SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS_ADD) : CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS_ADD){
@Override public void effects(){
SuccubisSecrets.invSlotTattooToRemove=null;
CharacterModificationUtils.resetTattooVariables(invSlot);
}
}
);
}
,false);
}
 else {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= 100 || !Main.game.isInNewWorld()) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (SuccubisSecrets.invSlotTattooToRemove == invSlot || !Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations)) {
SuccubisSecrets.invSlotTattooToRemove=null;
if (Main.game.isInNewWorld()) {
Main.game.getTextStartStringBuilder().append(Main.game.getPlayer().incrementMoney(-100));
}
BodyChanging.getTarget().removeTattoo(invSlot);
}
 else {
SuccubisSecrets.invSlotTattooToRemove=invSlot;
}
}
}
);
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",Main.game.isInNewWorld() ? (Main.game.getPlayer().getMoney() >= 100 ? "String_Node_Str" + UtilText.formatAsMoney(100,"String_Node_Str") + "String_Node_Str"+ (!Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations) ? "String_Node_Str" : "String_Node_Str") : "String_Node_Str" + UtilText.formatAsMoney(100,"String_Node_Str") + "String_Node_Str") : "String_Node_Str" + (!Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations) ? "String_Node_Str" : "String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU){
@Override public DialogueNodeOld getNextDialogue(){
return EnchantmentDialogue.getEnchantmentMenu(BodyChanging.getTarget().getTattooInSlot(invSlot),BodyChanging.getTarget(),invSlot);
}
}
);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS_ADD || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS_ADD || Main.game.getCurrentDialogueNode() == CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS_ADD) {
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el=new InventoryTooltipEventListener().setTattoo(CharacterModificationUtils.tattooInventorySlot,CharacterModificationUtils.tattoo,BodyChanging.getTarget(),BodyChanging.getTarget());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
for (AbstractTattooType type : TattooType.getAllTattooTypes()) {
id="String_Node_Str" + type.getId();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
if (type.getSlotAvailability().contains(CharacterModificationUtils.tattooInventorySlot)) {
if (!CharacterModificationUtils.tattoo.getType().equals(type)) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setType(type);
CharacterModificationUtils.resetTattooColours();
}
}
);
}
,false);
}
}
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(type.getName()),type.getDescription() + (type.getSlotAvailability().contains(CharacterModificationUtils.tattooInventorySlot) ? "String_Node_Str" : "String_Node_Str" + CharacterModificationUtils.tattooInventorySlot.getTattooSlotName() + "String_Node_Str"+ "String_Node_Str"+ Util.tattooInventorySlotsToStringList(type.getSlotAvailability())));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailablePrimaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setPrimaryColour(c);
}
}
);
}
,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailableSecondaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setSecondaryColour(c);
}
}
);
}
,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailableTertiaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setTertiaryColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setGlowing(!CharacterModificationUtils.tattoo.isGlowing());
}
}
);
}
,false);
}
for (TattooWritingStyle style : TattooWritingStyle.values()) {
id="String_Node_Str" + style.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
if (!CharacterModificationUtils.tattoo.getWriting().getStyles().contains(style)) {
CharacterModificationUtils.tattoo.getWriting().addStyle(style);
}
 else {
CharacterModificationUtils.tattoo.getWriting().removeStyle(style);
}
}
}
);
}
,false);
}
}
for (Colour c : TattooWriting.getAvailableColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getWriting().setColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getWriting().setGlow(!CharacterModificationUtils.tattoo.getWriting().isGlow());
}
}
);
}
,false);
}
for (TattooCounterType counterType : TattooCounterType.values()) {
id="String_Node_Str" + counterType.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setType(counterType);
}
}
);
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(counterType.getName()),counterType.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
for (TattooCountType countType : TattooCountType.values()) {
id="String_Node_Str" + countType.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setCountType(countType);
}
}
);
}
,false);
}
}
for (Colour c : TattooCounter.getAvailableColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setGlow(!CharacterModificationUtils.tattoo.getCounter().isGlow());
}
}
);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_CLOTHING || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_CLOTHING_CHARACTER_CREATION || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_CLOTHING || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_CLOTHING_CHARACTER_CREATION) {
AbstractClothingType clothing=InventoryDialogue.getClothing().getClothingType();
for (Colour c : clothing.getAllAvailablePrimaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingPrimary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (!clothing.getAllAvailableSecondaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableSecondaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingSecondary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
if (!clothing.getAllAvailableTertiaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableTertiaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewTertiary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingTertiary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
for (Pattern pattern : Pattern.getAllPatterns().values()) {
id="String_Node_Str" + pattern.getName();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (InventoryDialogue.dyePreviewPattern != pattern.getName()) {
InventoryDialogue.dyePreviewPattern=pattern.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
,false);
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isPrimaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isSecondaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isTertiaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternTertiary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_WEAPON || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_WEAPON) {
AbstractWeaponType weapon=InventoryDialogue.getWeapon().getWeaponType();
for (Colour c : weapon.getAllAvailablePrimaryColours()) {
id="String_Node_Str" + weapon.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeWeaponPrimary(InventoryDialogue.getWeapon(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
for (Colour c : weapon.getAllAvailableSecondaryColours()) {
id="String_Node_Str" + weapon.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeWeaponSecondary(InventoryDialogue.getWeapon(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
for (AbstractClothingType clothing : ClothingType.getAllClothing()) {
for (Colour colour : clothing.getAllAvailablePrimaryColours()) {
if ((EventTarget)MainController.document.getElementById(clothing.hashCode() + "String_Node_Str" + colour.toString()) != null) {
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericClothing(clothing,colour);
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",el2,false);
}
}
}
for (AbstractItemType item : ItemType.allItems) {
id=ItemType.itemToIdMap.get(item);
if ((EventTarget)MainController.document.getElementById(id) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericItem(item);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
for (AbstractWeaponType weapon : WeaponType.allweapons) {
for (DamageType dt : weapon.getAvailableDamageTypes()) {
if ((EventTarget)MainController.document.getElementById(weapon.hashCode() + "String_Node_Str" + dt.toString()) != null) {
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericWeapon(weapon,dt);
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",el2,false);
}
}
}
for (Perk perk : Perk.values()) {
if (perk.getPerkCategory() == PerkCategory.JOB) {
id="String_Node_Str" + perk;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(0,perk,Main.game.getPlayer()),false);
}
}
 else {
id="String_Node_Str" + perk;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(PerkManager.MANAGER.getPerkRow(perk),perk,Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
Main.game.getPlayer().removeTrait(perk);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_ARCANE || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_EARTH || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_WATER || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_AIR || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_FIRE) {
for (Spell s : Spell.values()) {
id="String_Node_Str" + s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer()),false);
}
for (List<TreeEntry<SpellSchool,SpellUpgrade>> upgradeList : s.getSpellUpgradeTree().values()) {
for (TreeEntry<SpellSchool,SpellUpgrade> upgrade : upgradeList) {
id="String_Node_Str" + upgrade.getEntry();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setSpellUpgrade(upgrade.getEntry(),Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
if (Spell.isSpellUpgradeAvailable(Main.game.getPlayer(),s,upgrade) && Main.game.getPlayer().getSpellUpgradePoints(upgrade.getCategory()) >= upgrade.getEntry().getPointCost()) {
Main.game.getPlayer().addSpellUpgrade(upgrade.getEntry());
Main.game.getPlayer().incrementSpellUpgradePoints(upgrade.getCategory(),-upgrade.getEntry().getPointCost());
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
,false);
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_LEVEL_UP) {
for (int i=0; i < PerkManager.ROWS; i++) {
for (Entry<PerkCategory,List<TreeEntry<PerkCategory,Perk>>> entry : PerkManager.MANAGER.getPerkTree().get(i).entrySet()) {
for (TreeEntry<PerkCategory,Perk> e : entry.getValue()) {
id=i + "String_Node_Str" + e.getEntry();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(i,e.getEntry(),Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
if (e.getEntry().isEquippableTrait() && PerkManager.MANAGER.isPerkOwned(e)) {
if (!Main.game.getPlayer().hasTraitActivated(e.getEntry())) {
Main.game.getPlayer().addTrait(e.getEntry());
}
 else {
Main.game.getPlayer().removeTrait(e.getEntry());
}
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
 else if (Main.game.getPlayer().getPerkPoints() >= 1 && PerkManager.MANAGER.isPerkAvailable(e)) {
if (Main.game.getPlayer().addPerk(e.getRow(),e.getEntry())) {
Main.game.getPlayer().incrementPerkPoints(-1);
if (e.getEntry().isEquippableTrait() && Main.game.getPlayer().getTraits().size() < GameCharacter.MAX_TRAITS) {
Main.game.getPlayer().addTrait(e.getEntry());
}
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_FETISHES) {
for (Fetish f : Fetish.values()) {
id="String_Node_Str" + f;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= f.getCost()) {
if (Main.game.getPlayer().addFetish(f)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE,-f.getCost(),false);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetish(f,Main.game.getPlayer()),false);
}
id=f + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetishExperience(f,Main.game.getPlayer()),false);
}
for (FetishDesire desire : FetishDesire.values()) {
id=f + "String_Node_Str" + desire;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= FetishDesire.getCostToChange()) {
if (Main.game.getPlayer().setFetishDesire(f,desire)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE,-FetishDesire.getCostToChange(),false);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetishDesire(f,desire,Main.game.getPlayer()),false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.MENU) {
Cell[][] grid=Main.game.getWorlds().get(Main.game.getPlayer().getWorldLocation()).getGrid();
for (int i=grid[0].length - 1; i >= 0; i--) {
for (int j=0; j < grid.length; j++) {
Cell c=grid[j][i];
boolean discovered=c.isDiscovered() || Main.game.isDebugMode();
if (!discovered) {
continue;
}
if (c.getPlace().getPlaceType() == PlaceType.GENERIC_IMPASSABLE) {
continue;
}
MainController.setMapLocationListeners(c,i,j);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
for (KeyboardAction ka : KeyboardAction.values()) {
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
MainController.actionToBind=ka;
MainController.primaryBinding=true;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
MainController.actionToBind=ka;
MainController.primaryBinding=false;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.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)MainController.document.getElementById(preference + "String_Node_Str" + g)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.HUMAN);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.HUMAN);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.MINIMUM);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.MINIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.REDUCED);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.REDUCED);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.NORMAL);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.NORMAL);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.MAXIMUM);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.MAXIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (Subspecies s : Subspecies.values()) {
for (FurryPreference preference : FurryPreference.values()) {
id="String_Node_Str" + preference + "String_Node_Str"+ s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setFeminineFurryPreference(s,preference);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(preference.getName(),preference.getDescriptionFeminine(s));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + preference + "String_Node_Str"+ s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setMasculineFurryPreference(s,preference);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(preference.getName(),preference.getDescriptionMasculine(s));
MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.artwork,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.artwork,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (Artist artist : Artwork.allArtists) {
id="String_Node_Str" + artist.getFolderName();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().preferredArtist=artist.getFolderName();
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.lactationContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.lactationContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.cumRegenerationContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.cumRegenerationContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.urethralContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.urethralContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.nipplePenContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.nipplePenContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
Map<String,PropertyValue> settingsMap=Util.newHashMapOfValues(new Value<>("String_Node_Str",PropertyValue.facialHairContent),new Value<>("String_Node_Str",PropertyValue.analContent),new Value<>("String_Node_Str",PropertyValue.futanariTesticles));
for (Entry<String,PropertyValue> entry : settingsMap.entrySet()) {
id=entry.getKey() + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(entry.getValue(),true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id=entry.getKey() + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(entry.getValue(),false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.pubicHairContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.pubicHairContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.bodyHairContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.bodyHairContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.assHairContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.assHairContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.feminineBeardsContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.feminineBeardsContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.furryTailPenetrationContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.furryTailPenetrationContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.inflationContent,true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(PropertyValue.inflationContent,false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=Math.min(100,Main.getProperties().forcedTFPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=Math.max(0,Main.getProperties().forcedTFPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowth=Math.min(10,Main.getProperties().pregnancyBreastGrowth + 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowth=Math.max(0,Main.getProperties().pregnancyBreastGrowth - 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowthLimit=Math.min(100,Main.getProperties().pregnancyBreastGrowthLimit + 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowthLimit=Math.max(0,Main.getProperties().pregnancyBreastGrowthLimit - 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationIncrease=Math.min(1000,Main.getProperties().pregnancyLactationIncrease + 50);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationIncrease=Math.max(0,Main.getProperties().pregnancyLactationIncrease - 50);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationLimit=Math.min(Lactation.SEVEN_MONSTROUS_AMOUNT_POURING.getMaximumValue(),Main.getProperties().pregnancyLactationLimit + 250);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationLimit=Math.max(0,Main.getProperties().pregnancyLactationLimit - 250);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishPercentage=Math.min(100,Main.getProperties().forcedFetishPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishPercentage=Math.max(0,Main.getProperties().forcedFetishPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str" + ForcedTFTendency.NEUTRAL;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.NEUTRAL.getName(),ForcedTFTendency.NEUTRAL.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.FEMININE;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.FEMININE;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE.getName(),ForcedTFTendency.FEMININE.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.FEMININE_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.FEMININE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE_HEAVY.getName(),ForcedTFTendency.FEMININE_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.MASCULINE;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.MASCULINE;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE.getName(),ForcedTFTendency.MASCULINE.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.MASCULINE_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.MASCULINE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE_HEAVY.getName(),ForcedTFTendency.MASCULINE_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.NEUTRAL;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.NEUTRAL.getName(),ForcedFetishTendency.NEUTRAL.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.BOTTOM;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.BOTTOM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM.getName(),ForcedFetishTendency.BOTTOM.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.BOTTOM_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.BOTTOM_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM_HEAVY.getName(),ForcedFetishTendency.BOTTOM_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.TOP;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.TOP;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP.getName(),ForcedFetishTendency.TOP.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.TOP_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.TOP_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP_HEAVY.getName(),ForcedFetishTendency.TOP_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD) {
for (File f : Main.getSavedGames()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.overwriteConfirmationName.equals(f.getName())) {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
Main.saveGame(fileIdentifier,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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Main.loadGame(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteGame(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str",(!Main.game.isStarted() ? "String_Node_Str" : "String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.IMPORT_EXPORT) {
for (File f : Main.getCharactersForImport()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteExportedCharacter(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)).addEventListener("String_Node_Str",e -> {
Main.importCharacter(f);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_IMPORT) {
for (File f : Main.getSlavesForImport()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)).addEventListener("String_Node_Str",e -> {
try {
Game.importCharacterAsSlave(fileIdentifier);
MainController.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)MainController.document.getElementById(id)) != null) {
if (Main.game.getPlayer().isHasSlaverLicense()) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
 else {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD) {
for (File f : EnchantmentDialogue.getSavedEnchants()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.overwriteConfirmationName.equals(f.getName())) {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.saveEnchant(fileIdentifier,true);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
 else {
EnchantmentDialogue.overwriteConfirmationName=f.getName();
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.loadConfirmationName.equals(f.getName())) {
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
LoadedEnchantment lEnch=EnchantmentDialogue.loadEnchant(fileIdentifier);
EnchantmentDialogue.resetNonTattooEnchantmentVariables();
EnchantmentDialogue.initModifiers(lEnch.getSuitableItem());
EnchantmentDialogue.getEffects().clear();
for (ItemEffect ie : lEnch.getEffects()) {
EnchantmentDialogue.addEffect(ie);
}
EnchantmentDialogue.setOutputName(lEnch.getName());
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU));
}
 else {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.loadConfirmationName=f.getName();
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.deleteConfirmationName.equals(f.getName())) {
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteEnchant(fileIdentifier);
EnchantmentDialogue.initSaveLoadMenu();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
 else {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
EnchantmentDialogue.saveEnchant(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
for (Entry<String,LoadedEnchantment> entry : EnchantmentDialogue.getLoadedEnchantmentsMap().entrySet()) {
id="String_Node_Str" + entry.getKey();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setLoadedEnchantment(entry.getValue());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
if (Main.game.isStarted() && Main.game.getPlayerCell().getPlace().getPlaceType() == PlaceType.GAMBLING_DEN_GAMBLING) {
for (int i=0; i < DicePoker.getPlayerDice().size(); i++) {
setDiceHandler(i);
}
}
MainController.setResponseEventListeners();
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") public static void initMainControllerListeners(){
  MainController.document=(Document)MainController.webEngine.executeScript("String_Node_Str");
  MainController.EventListenerDataMap.put(MainController.document,new ArrayList<>());
  String id="String_Node_Str";
  if (MainController.flashMessageColour != null && MainController.flashMessageText != null) {
    Main.game.flashMessage(MainController.flashMessageColour,MainController.flashMessageText);
    MainController.flashMessageColour=null;
    MainController.flashMessageText=null;
  }
  if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.copyDialogueButtonListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.copyInfoListener,false);
  }
  if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",e -> {
      if (Main.game.getCurrentDialogueNode().equals(PhoneDialogue.CHARACTER_APPEARANCE)) {
        Game.exportCharacter(Main.game.getPlayer());
      }
 else {
        Game.exportCharacter(CharactersPresentDialogue.characterViewed);
      }
      Main.game.flashMessage(Colour.GENERIC_EXCELLENT,"String_Node_Str");
    }
,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
    MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str"),false);
  }
  if (Main.game.getCurrentDialogueNode().equals(CharactersPresentDialogue.MENU) || Main.game.getCurrentDialogueNode().equals(PhoneDialogue.CONTACTS_CHARACTER) || Main.game.getCurrentDialogueNode().equals(SlaveryManagementDialogue.SLAVE_MANAGEMENT_INSPECT)) {
    if (CharactersPresentDialogue.characterViewed instanceof NPC && !((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().isEmpty()) {
      try {
        Artwork artwork=((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().get(((NPC)CharactersPresentDialogue.characterViewed).getArtworkIndex());
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (!artwork.getArtist().getWebsites().isEmpty()) {
              Util.openLinkInDefaultBrowser(artwork.getArtist().getWebsites().get(0).getURL());
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setInformation("String_Node_Str" + artwork.getArtist().getColour().toWebHexString() + "String_Node_Str"+ artwork.getArtist().getName()+ "String_Node_Str",(artwork.getArtist().getWebsites().isEmpty() ? "String_Node_Str" : "String_Node_Str" + artwork.getArtist().getColour().toWebHexString() + "String_Node_Str"+ artwork.getArtist().getWebsites().get(0).getName()+ "String_Node_Str"+ "String_Node_Str"+ artwork.getArtist().getWebsites().get(0).getURL()+ "String_Node_Str")),false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (artwork.getTotalArtworkCount() > 1) {
              artwork.incrementIndex(-1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (artwork.getTotalArtworkCount() > 1) {
              artwork.incrementIndex(1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().size() > 1) {
              ((NPC)CharactersPresentDialogue.characterViewed).incrementArtworkIndex(-1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (((NPC)CharactersPresentDialogue.characterViewed).getArtworkList().size() > 1) {
              ((NPC)CharactersPresentDialogue.characterViewed).incrementArtworkIndex(1);
              CharactersPresentDialogue.resetContent(CharactersPresentDialogue.characterViewed);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
        }
      }
 catch (      Exception ex) {
        System.err.println("String_Node_Str");
      }
    }
  }
  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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addClothing(AbstractClothingType.generateClothing(clothingType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericClothing(clothingType,clothingType.getAvailablePrimaryColours().get(0));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractWeaponType weaponType : DebugDialogue.weaponsTotal) {
      id=weaponType.getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addWeapon(AbstractWeaponType.generateWeapon(weaponType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericWeapon(weaponType,weaponType.getAvailableDamageTypes().get(0));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    AbstractItemType itemType : DebugDialogue.itemsTotal) {
      id=itemType.getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addItem(AbstractItemType.generateItem(itemType));
          MainController.updateUIRightPanel();
        }
,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el=new InventoryTooltipEventListener().setGenericItem(itemType);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
    }
    for (    InventorySlot slot : InventorySlot.values()) {
      id=slot + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
      ((EventTarget)MainController.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.getCurrentDialogueNode() == CharacterCreation.BACKGROUND_SELECTION_MENU) {
    for (    History history : History.values()) {
      id="String_Node_Str" + history;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setPerk(history.getAssociatedPerk(),Main.game.getPlayer()),false);
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
          Main.game.getPlayer().setHistory(history);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
    }
  }
  if (Main.game.isStarted()) {
    id="String_Node_Str";
    if (Main.game.getCurrentDialogueNode().equals(GiftDialogue.GIFT_DIALOGUE)) {
      for (      Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
        id="String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeWeapon(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeItem(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",GiftDialogue.getDialogueToProceedTo()){
              @Override public void effects(){
                Main.game.setResponseTab(GiftDialogue.getProceedDialogueTab());
                Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(),true));
                Main.game.getPlayer().removeClothing(entry.getKey());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
    }
    for (int i=0; i < RenderingEngine.INVENTORY_PAGES; i++) {
      MainController.setInventoryPageLeft(i);
      MainController.setInventoryPageRight(i);
    }
    for (    Entry<AbstractWeapon,Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
      id="String_Node_Str" + entry.getKey().hashCode();
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),Main.game.getPlayer(),null);
        MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
        InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),Main.game.getPlayer());
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),Main.game.getPlayer(),null);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
      }
    }
    if (InventoryDialogue.getInventoryNPC() != null) {
      String idModifier="String_Node_Str" + InventoryDialogue.getInventoryNPC().getId() + "String_Node_Str";
      for (      Entry<AbstractWeapon,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateWeapons().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractClothing,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateClothing().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
        }
      }
      for (      Entry<AbstractItem,Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateItems().entrySet()) {
        id=idModifier + "String_Node_Str" + entry.getKey().hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),InventoryDialogue.getInventoryNPC());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),InventoryDialogue.getInventoryNPC(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon(entry.getKey(),null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing(entry.getKey(),null,null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory(entry.getKey(),null);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem(entry.getKey(),null,null);
          MainController.addEventListener(MainController.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)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setWeaponInventory((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            ((EventTarget)MainController.document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC());
            ((EventTarget)MainController.document.getElementById("String_Node_Str" + i)).addEventListener("String_Node_Str",el2,false);
          }
          if (((EventTarget)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setClothingInventory((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
          if (((EventTarget)MainController.document.getElementById("String_Node_Str" + i)) != null) {
            InventorySelectedItemEventListener el=new InventorySelectedItemEventListener().setItemInventory((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),i);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",MainController.hideTooltipListener,false);
            InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setItem((AbstractItem)Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(),InventoryDialogue.getInventoryNPC(),null);
            MainController.addEventListener(MainController.document,"String_Node_Str" + i,"String_Node_Str",el2,false);
          }
        }
      }
    }
    for (    TFEssence essence : TFEssence.values()) {
      if (((EventTarget)MainController.document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
      if (((EventTarget)MainController.document.getElementById("String_Node_Str" + essence.hashCode())) != null) {
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
        InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setEssence(essence);
        MainController.addEventListener(MainController.document,"String_Node_Str" + essence.hashCode(),"String_Node_Str",el2,false);
      }
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(TFModifier.NONE);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.getPrimaryMod());
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(TFModifier.NONE);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.getSecondaryMod());
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    for (    TFPotency potency : TFPotency.values()) {
      id="String_Node_Str" + potency;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        EnchantmentEventListener el=new EnchantmentEventListener().setPotency(potency);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      }
    }
    for (int effectCount=0; effectCount < EnchantmentDialogue.getEffects().size(); effectCount++) {
      id="String_Node_Str" + effectCount;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        EnchantmentEventListener el=new EnchantmentEventListener().removeEffect(effectCount);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
        TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
      }
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(0);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(Math.max(0,EnchantmentDialogue.getLimit() - (EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod()) / 10)));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() > 0) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getLimit() - 1);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() < EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod())) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getLimit() + 1);
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      int currentLimit=EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod());
      if (EnchantmentDialogue.getLimit() < currentLimit) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(Math.min(currentLimit,EnchantmentDialogue.getLimit() + (currentLimit / 10)));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      if (EnchantmentDialogue.getLimit() < EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod())) {
        EnchantmentEventListener el=new EnchantmentEventListener().setLimit(EnchantmentDialogue.getIngredient().getEnchantmentEffect().getLimits(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod()));
        MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
      }
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        Main.game.setResponseTab(1);
        if (EnchantmentDialogue.getIngredient() instanceof AbstractItem) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.ITEM_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof AbstractClothing) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.CLOTHING_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof AbstractWeapon) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",InventoryDialogue.WEAPON_INVENTORY){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
 else         if (EnchantmentDialogue.getIngredient() instanceof Tattoo) {
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",BodyChanging.getTarget().isPlayer() ? SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS : SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS){
            @Override public void effects(){
              EnchantmentDialogue.resetEnchantmentVariables();
            }
          }
);
        }
      }
,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      InventoryTooltipEventListener el2=null;
      if (EnchantmentDialogue.getIngredient() instanceof AbstractItem) {
        el2=new InventoryTooltipEventListener().setItem((AbstractItem)EnchantmentDialogue.getIngredient(),Main.game.getPlayer(),null);
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof AbstractClothing) {
        el2=new InventoryTooltipEventListener().setClothing((AbstractClothing)EnchantmentDialogue.getIngredient(),Main.game.getPlayer(),null);
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof AbstractWeapon) {
        el2=new InventoryTooltipEventListener().setWeapon((AbstractWeapon)EnchantmentDialogue.getIngredient(),Main.game.getPlayer());
      }
 else       if (EnchantmentDialogue.getIngredient() instanceof Tattoo) {
        el2=new InventoryTooltipEventListener().setTattoo(EnchantmentDialogue.getTattooSlot(),(Tattoo)EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getTattooBearer(),EnchantmentDialogue.getTattooBearer());
      }
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
      ((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.getEffects().isEmpty()) {
        }
 else         if (EnchantmentDialogue.canAffordCost(EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getEffects())) {
          Main.game.setContent(new ResponseEffectsOnly("String_Node_Str","String_Node_Str" + EnchantmentDialogue.getOutputName() + "String_Node_Str"){
            @Override public void effects(){
              EnchantmentDialogue.craftItem(EnchantmentDialogue.getIngredient(),EnchantmentDialogue.getEffects());
              if ((EnchantmentDialogue.getPreviousIngredient() instanceof AbstractItem ? Main.game.getPlayer().hasItem((AbstractItem)EnchantmentDialogue.getPreviousIngredient()) : true) && (EnchantmentDialogue.getPreviousIngredient() instanceof AbstractClothing ? Main.game.getPlayer().hasClothing((AbstractClothing)EnchantmentDialogue.getPreviousIngredient()) : true) && (EnchantmentDialogue.getPreviousIngredient() instanceof AbstractWeapon ? Main.game.getPlayer().hasWeapon((AbstractWeapon)EnchantmentDialogue.getPreviousIngredient()) : true)) {
                EnchantmentDialogue.setIngredient(EnchantmentDialogue.getPreviousIngredient());
                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);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el2,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
        if (EnchantmentDialogue.getIngredient().getEnchantmentEffect().getEffectsDescription(EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod(),EnchantmentDialogue.getPotency(),EnchantmentDialogue.getLimit(),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.addEffect(new ItemEffect(EnchantmentDialogue.getIngredient().getEnchantmentEffect(),EnchantmentDialogue.getPrimaryMod(),EnchantmentDialogue.getSecondaryMod(),EnchantmentDialogue.getPotency(),EnchantmentDialogue.getLimit()));
            }
          }
);
        }
      }
,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
      MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
    }
    id="String_Node_Str";
    if (((EventTarget)MainController.document.getElementById(id)) != null) {
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
      MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
      TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str",EnchantmentDialogue.getEffects().size() >= EnchantmentDialogue.getIngredient().getEnchantmentLimit() ? "String_Node_Str" : "String_Node_Str");
      MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
    }
    if (EnchantmentDialogue.getIngredient() != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.getIngredient().getEnchantmentEffect().getPrimaryModifiers()) {
        if (((EventTarget)MainController.document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setPrimaryModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (EnchantmentDialogue.getIngredient() != null) {
      for (      TFModifier tfMod : EnchantmentDialogue.getIngredient().getEnchantmentEffect().getSecondaryModifiers(EnchantmentDialogue.getPrimaryMod())) {
        if (((EventTarget)MainController.document.getElementById("String_Node_Str" + tfMod.hashCode())) != null) {
          EnchantmentEventListener el=new EnchantmentEventListener().setSecondaryModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",MainController.hideTooltipListener,false);
          InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setTFModifier(tfMod);
          MainController.addEventListener(MainController.document,"String_Node_Str" + tfMod.hashCode(),"String_Node_Str",el2,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_MANAGEMENT) {
      for (      Cell c : SlaveryManagementDialogue.getImportantCells()) {
        id=c.getId();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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_MANAGEMENT;
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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_MANAGEMENT;
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=c.getId() + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES_MANAGEMENT) {
      for (      PlaceUpgrade placeUpgrade : PlaceUpgrade.values()) {
        id="String_Node_Str" + placeUpgrade;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",(SlaveryManagementDialogue.cellToInspect.getPlace().getPlaceUpgrades().contains(placeUpgrade) ? placeUpgrade.getDescriptionAfterPurchase() : placeUpgrade.getDescriptionForPurchase()));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (placeUpgrade != PlaceUpgrade.LILAYA_ARTHUR_ROOM) {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
                @Override public void effects(){
                  SlaveryManagementDialogue.cellToInspect.addPlaceUpgrade(placeUpgrade);
                  Main.game.getPlayer().incrementMoney(-placeUpgrade.getInstallCost());
                }
              }
);
            }
 else {
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",LilayaHomeGeneric.ROOM_ARTHUR_INSTALLATION){
                @Override public void effects(){
                  Main.game.getArthur().setLocation(Main.game.getPlayer().getWorldLocation(),Main.game.getPlayer().getLocation(),true);
                  SlaveryManagementDialogue.cellToInspect.addPlaceUpgrade(placeUpgrade);
                  Main.game.getDialogueFlags().setFlag(DialogueFlagValue.arthursRoomInstalled,true);
                }
              }
);
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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.removePlaceUpgrade(placeUpgrade);
                Main.game.getPlayer().incrementMoney(-placeUpgrade.getRemovalCost());
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "String_Node_Str"+ SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect,placeUpgrade));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=placeUpgrade + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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,placeUpgrade)));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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.getPlayer().getLocationPlace().getPlaceUpgrades().contains(PlaceUpgrade.LILAYA_MILKING_ROOM)) {
      MilkingRoom room=Main.game.getSlaveryUtil().getMilkingRoom(Main.game.getPlayerCell().getType(),Main.game.getPlayerCell().getLocation());
      for (      Entry<FluidMilk,Float> entry : room.getMilkStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int milkAmount=(int)(Math.min(room.getMilkStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (milkAmount > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,milkAmount,entry.getKey().getFluidModifiers()));
              room.incrementMilkStorage(entry.getKey(),-milkAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (milkAmount > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + milkAmount + "String_Node_Str","String_Node_Str" + milkAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getMilkStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementMilkStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getMilkStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getMilkStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      Entry<FluidCum,Float> entry : room.getCumStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int cumAmount=(int)(Math.min(room.getCumStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getCumStorage().get(entry.getKey()) > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,cumAmount,entry.getKey().getFluidModifiers()));
              room.incrementCumStorage(entry.getKey(),-cumAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getCumStorage().get(entry.getKey()) > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + cumAmount + "String_Node_Str","String_Node_Str" + cumAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getCumStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementCumStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getCumStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getCumStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      Entry<FluidGirlCum,Float> entry : room.getGirlcumStorage().entrySet()) {
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          int girlcumAmount=(int)(Math.min(room.getGirlcumStorage().get(entry.getKey()),100));
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getGirlcumStorage().get(entry.getKey()) > 0) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,girlcumAmount,entry.getKey().getFluidModifiers()));
              room.incrementGirlcumStorage(entry.getKey(),-girlcumAmount);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getGirlcumStorage().get(entry.getKey()) > 0) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str" + girlcumAmount + "String_Node_Str","String_Node_Str" + girlcumAmount + "String_Node_Str"+ entry.getKey().getName(null)+ "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            if (room.getGirlcumStorage().get(entry.getKey()) >= 500) {
              Main.game.getTextEndStringBuilder().append(Main.game.getPlayer().ingestFluid(entry.getKey().getType(),SexAreaOrifice.MOUTH,500,entry.getKey().getFluidModifiers()));
              room.incrementGirlcumStorage(entry.getKey(),-500);
              Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
            }
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          if (room.getGirlcumStorage().get(entry.getKey()) >= 500) {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
 else {
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
        id="String_Node_Str" + entry.hashCode();
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int income=Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue()));
            Main.game.getPlayer().incrementMoney(income);
            room.getGirlcumStorage().remove(entry.getKey());
            Main.game.getTextEndStringBuilder().append("String_Node_Str" + (UtilText.formatAsMoney(income,"String_Node_Str")) + "String_Node_Str");
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str" + entry.getKey().getName(null) + "String_Node_Str"+ (Math.max(1,(int)(entry.getKey().getValuePerMl() * entry.getValue())))+ "String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVERY_OVERVIEW) {
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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) {
              unsuitableName=Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent().length() > 32;
            }
            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++) {
        MainController.allocateWorkTime(i);
      }
      for (      SlaveJobHours preset : SlaveJobHours.values()) {
        id=preset + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",preset.getDescription());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=preset + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
      for (      SlaveJob job : SlaveJob.values()) {
        id="String_Node_Str" + job;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(job.getName(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())),UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getDescription()));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",job.getDescription());
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=job + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),job.getAvailabilityText(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        for (        SlaveJobSetting setting : job.getMutualSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(),"String_Node_Str"));
            MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
              ((EventTarget)MainController.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);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
            }
            id=setting + "String_Node_Str";
            if (((EventTarget)MainController.document.getElementById(id)) != null) {
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
              MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
              TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
              MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
            }
          }
        }
      }
      for (      SlavePermission permission : SlavePermission.values()) {
        for (        SlavePermissionSetting setting : permission.getSettings()) {
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",setting.getDescription());
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
          id=setting + "String_Node_Str";
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
            MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
            TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
            MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
          }
        }
      }
    }
    for (    String slaveId : Main.game.getPlayer().getSlavesOwned()) {
      id=slaveId;
      NPC slave=(NPC)Main.game.getNPCById(slaveId);
      if (slave != null) {
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.mainController.openInventory(slave,InventoryInteraction.FULL_MANAGEMENT);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.SLAVE_MANAGEMENT_COSMETICS_HAIR){
              @Override public void effects(){
                Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(slave);
                BodyChanging.setTarget(slave);
              }
            }
);
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
          }
,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.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"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
        id=slaveId + "String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",UtilText.parse(slave,"String_Node_Str"));
          MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
        }
      }
    }
    if (Main.game.getActiveNPC() != null) {
      id=Main.game.getActiveNPC().getId() + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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()) {
      if (Main.game.getCurrentDialogueNode().equals(CharacterCreation.CHOOSE_APPEARANCE)) {
        for (        Month month : Month.values()) {
          id="String_Node_Str" + month;
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.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);
          }
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusDays(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusDays(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusDays(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusDays(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusMonths(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusMonths(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusMonths(1));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            int age=Main.game.getPlayer().getAge();
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusMonths(5));
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusYears(1));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().minusYears(5));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusYears(1));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str";
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            Main.game.getPlayer().setBirthday(Main.game.getPlayer().getBirthday().plusYears(5));
            int age=Main.game.getPlayer().getAge();
            CharacterModificationUtils.performPlayerAgeCheck(age);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      int i : CharacterModificationUtils.soSilly) {
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.FINGER,SexAreaOrifice.URETHRA_PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.FINGER,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.MOUTH,SexAreaPenetration.PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.TONGUE,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.VAGINA),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.ANUS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.URETHRA_PENIS,SexAreaPenetration.FINGER),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.FINGER),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaPenetration.PENIS,SexAreaOrifice.MOUTH),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.TONGUE),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.VAGINA,SexAreaPenetration.PENIS),i);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
        id="String_Node_Str" + i;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.NORMAL,SexAreaOrifice.ANUS,SexAreaPenetration.PENIS),i);
            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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (      PersonalityTrait trait : PersonalityTrait.values()) {
        id="String_Node_Str" + trait;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
          MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(trait.getName()),trait.getDescription()),false);
        }
        for (        PersonalityWeight weight : PersonalityWeight.values()) {
          id="String_Node_Str" + trait + "String_Node_Str"+ weight;
          if (((EventTarget)MainController.document.getElementById(id)) != null) {
            ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
              BodyChanging.getTarget().setPersonalityTrait(trait,weight);
              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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(5);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementHeight(-5);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (      HornLength hornLength : HornLength.values()) {
        id="String_Node_Str" + hornLength;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHornLength(hornLength.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      TongueLength tongueLength : TongueLength.values()) {
        id="String_Node_Str" + tongueLength;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setTongueLength(tongueLength.getMedianValue());
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      WingSize wingSize : WingSize.values()) {
        id="String_Node_Str" + wingSize;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setWingSize(wingSize.getValue());
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastMilkStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      PenisGirth girth : PenisGirth.values()) {
        id="String_Node_Str" + girth;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisGirth(girth.getValue());
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setPenisCumStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      EyeType eyeType : EyeType.values()) {
        id="String_Node_Str" + eyeType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setEyeType(eyeType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      EarType earType : EarType.values()) {
        id="String_Node_Str" + earType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setEarType(earType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      AntennaType antennaType : AntennaType.values()) {
        id="String_Node_Str" + antennaType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAntennaType(antennaType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      HairType hairType : HairType.values()) {
        id="String_Node_Str" + hairType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setHairType(hairType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      FaceType faceType : FaceType.values()) {
        id="String_Node_Str" + faceType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setFaceType(faceType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      SkinType skinType : SkinType.values()) {
        id="String_Node_Str" + skinType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setSkinType(skinType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      AssType assType : AssType.values()) {
        id="String_Node_Str" + assType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setAssType(assType);
            Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
          }
,false);
        }
      }
      for (      BreastType breastType : BreastType.values()) {
        id="String_Node_Str" + breastType;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastType(breastType);
            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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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++) {
        MainController.setBreastCountListener(i);
      }
      for (int i=1; i <= Breast.MAXIMUM_NIPPLES_PER_BREAST; i++) {
        MainController.setNippleCountListener(i);
      }
      for (      Capacity capacity : Capacity.values()) {
        id="String_Node_Str" + capacity;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
            BodyChanging.getTarget().setBreastMilkStorage(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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(5);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisSize(-5);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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) {
        MainController.setTesticleCountListener(i);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setInternalTesticles(true);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().setInternalTesticles(false);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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);
        }
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(25);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(500);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-1);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-25);
          Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
        }
,false);
      }
      id="String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
          BodyChanging.getTarget().incrementPenisCumStorage(-500);
          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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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 (      PenetrationModifier orificeMod : PenetrationModifier.values()) {
        id="String_Node_Str" + orificeMod;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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().getDialogueNodeType() == DialogueNodeType.PHONE;
    for (    BodyCoveringType bct : BodyCoveringType.values()) {
      id="String_Node_Str" + bct;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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 (CharacterModificationUtils.getCoveringsToBeApplied().containsKey(bct)) {
                  if (!noCost) {
                    Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
                  }
                  BodyChanging.getTarget().setSkinCovering(new Covering(CharacterModificationUtils.getCoveringsToBeApplied().get(bct)),false);
                  if (noCost) {
                    if (bct == BodyCoveringType.HUMAN) {
                      BodyChanging.getTarget().getBody().updateCoverings(false,false,false,true);
                    }
                  }
                }
              }
            }
);
          }
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(false);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(true);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(false);
            }
          }
);
        }
,false);
      }
      id=bct + "String_Node_Str";
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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(){
              CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
              CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(true);
            }
          }
);
        }
,false);
      }
      for (      CoveringPattern pattern : CoveringPattern.values()) {
        id=bct + "String_Node_Str" + pattern;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPattern(pattern);
              }
            }
);
          }
,false);
        }
      }
      for (      CoveringModifier modifier : CoveringModifier.values()) {
        id=bct + "String_Node_Str" + modifier;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setModifier(modifier);
              }
            }
);
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllPrimaryColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryColour(colour);
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing((colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing()));
              }
            }
);
          }
,false);
        }
      }
      for (      Colour colour : bct.getAllSecondaryColours()) {
        id=bct + "String_Node_Str" + colour;
        if (((EventTarget)MainController.document.getElementById(id)) != null) {
          ((EventTarget)MainController.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(){
                CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct,new Covering(BodyChanging.getTarget().getCovering(bct)));
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryColour(colour);
                CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing());
              }
            }
);
          }
,false);
        }
      }
    }
    for (    HairLength hairLength : HairLength.values()) {
      id="String_Node_Str" + hairLength;
      if (((EventTarget)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
        ((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
}
}
if (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS || Main.game.getCurrentDialogueNode() == CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS) {
for (InventorySlot invSlot : InventorySlot.getClothingSlots()) {
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
if (BodyChanging.getTarget().getTattooInSlot(invSlot) != null) {
InventoryTooltipEventListener el=new InventoryTooltipEventListener().setTattoo(invSlot,BodyChanging.getTarget().getTattooInSlot(invSlot),BodyChanging.getTarget(),BodyChanging.getTarget());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
 else {
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(invSlot.getTattooSlotName()),"String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
if (BodyChanging.getTarget().getTattooInSlot(invSlot) == null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.isInNewWorld() ? (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS ? SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS_ADD : SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS_ADD) : CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS_ADD){
@Override public void effects(){
SuccubisSecrets.invSlotTattooToRemove=null;
CharacterModificationUtils.resetTattooVariables(invSlot);
}
}
);
}
,false);
}
 else {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getMoney() >= 100 || !Main.game.isInNewWorld()) {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()){
@Override public void effects(){
if (SuccubisSecrets.invSlotTattooToRemove == invSlot || !Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations)) {
SuccubisSecrets.invSlotTattooToRemove=null;
if (Main.game.isInNewWorld()) {
Main.game.getTextStartStringBuilder().append(Main.game.getPlayer().incrementMoney(-100));
}
BodyChanging.getTarget().removeTattoo(invSlot);
}
 else {
SuccubisSecrets.invSlotTattooToRemove=invSlot;
}
}
}
);
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str",Main.game.isInNewWorld() ? (Main.game.getPlayer().getMoney() >= 100 ? "String_Node_Str" + UtilText.formatAsMoney(100,"String_Node_Str") + "String_Node_Str"+ (!Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations) ? "String_Node_Str" : "String_Node_Str") : "String_Node_Str" + UtilText.formatAsMoney(100,"String_Node_Str") + "String_Node_Str") : "String_Node_Str" + (!Main.getProperties().hasValue(PropertyValue.tattooRemovalConfirmations) ? "String_Node_Str" : "String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
id="String_Node_Str" + invSlot.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU){
@Override public DialogueNodeOld getNextDialogue(){
return EnchantmentDialogue.getEnchantmentMenu(BodyChanging.getTarget().getTattooInSlot(invSlot),BodyChanging.getTarget(),invSlot);
}
}
);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SuccubisSecrets.SHOP_BEAUTY_SALON_TATTOOS_ADD || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_TATTOOS_ADD || Main.game.getCurrentDialogueNode() == CharacterCreation.CHOOSE_ADVANCED_APPEARANCE_TATTOOS_ADD) {
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el=new InventoryTooltipEventListener().setTattoo(CharacterModificationUtils.tattooInventorySlot,CharacterModificationUtils.tattoo,BodyChanging.getTarget(),BodyChanging.getTarget());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
for (AbstractTattooType type : TattooType.getAllTattooTypes()) {
id="String_Node_Str" + type.getId();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
if (type.getSlotAvailability().contains(CharacterModificationUtils.tattooInventorySlot)) {
if (!CharacterModificationUtils.tattoo.getType().equals(type)) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setType(type);
CharacterModificationUtils.resetTattooColours();
}
}
);
}
,false);
}
}
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(type.getName()),type.getDescription() + (type.getSlotAvailability().contains(CharacterModificationUtils.tattooInventorySlot) ? "String_Node_Str" : "String_Node_Str" + CharacterModificationUtils.tattooInventorySlot.getTattooSlotName() + "String_Node_Str"+ "String_Node_Str"+ Util.tattooInventorySlotsToStringList(type.getSlotAvailability())));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailablePrimaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setPrimaryColour(c);
}
}
);
}
,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailableSecondaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setSecondaryColour(c);
}
}
);
}
,false);
}
}
for (Colour c : CharacterModificationUtils.tattoo.getType().getAvailableTertiaryColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setTertiaryColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.setGlowing(!CharacterModificationUtils.tattoo.isGlowing());
}
}
);
}
,false);
}
for (TattooWritingStyle style : TattooWritingStyle.values()) {
id="String_Node_Str" + style.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
if (!CharacterModificationUtils.tattoo.getWriting().getStyles().contains(style)) {
CharacterModificationUtils.tattoo.getWriting().addStyle(style);
}
 else {
CharacterModificationUtils.tattoo.getWriting().removeStyle(style);
}
}
}
);
}
,false);
}
}
for (Colour c : TattooWriting.getAvailableColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getWriting().setColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getWriting().setGlow(!CharacterModificationUtils.tattoo.getWriting().isGlow());
}
}
);
}
,false);
}
for (TattooCounterType counterType : TattooCounterType.values()) {
id="String_Node_Str" + counterType.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setType(counterType);
}
}
);
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(Util.capitaliseSentence(counterType.getName()),counterType.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
for (TattooCountType countType : TattooCountType.values()) {
id="String_Node_Str" + countType.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setCountType(countType);
}
}
);
}
,false);
}
}
for (Colour c : TattooCounter.getAvailableColours()) {
id="String_Node_Str" + c.toString();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setColour(c);
}
}
);
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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.mainController.getWebEngine().executeScript("String_Node_Str");
CharacterModificationUtils.tattoo.getWriting().setText(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent());
CharacterModificationUtils.tattoo.getCounter().setGlow(!CharacterModificationUtils.tattoo.getCounter().isGlow());
}
}
);
}
,false);
}
}
if (Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_CLOTHING || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_CLOTHING_CHARACTER_CREATION || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_CLOTHING || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_CLOTHING_CHARACTER_CREATION) {
AbstractClothingType clothing=InventoryDialogue.getClothing().getClothingType();
for (Colour c : clothing.getAllAvailablePrimaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingPrimary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (!clothing.getAllAvailableSecondaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableSecondaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingSecondary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
if (!clothing.getAllAvailableTertiaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableTertiaryColours()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewTertiary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeClothingTertiary(InventoryDialogue.getClothing(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
for (Pattern pattern : Pattern.getAllPatterns().values()) {
id="String_Node_Str" + pattern.getName();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (InventoryDialogue.dyePreviewPattern != pattern.getName()) {
InventoryDialogue.dyePreviewPattern=pattern.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
,false);
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isPrimaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isSecondaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Pattern.getPattern(InventoryDialogue.dyePreviewPattern) != null && Pattern.getPattern(InventoryDialogue.dyePreviewPattern).isTertiaryRecolourAvailable()) {
for (Colour c : ColourListPresets.ALL.getPresetColourList()) {
id="String_Node_Str" + clothing.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPatternTertiary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_WEAPON || Main.game.getCurrentDialogueNode() == InventoryDialogue.DYE_EQUIPPED_WEAPON) {
AbstractWeaponType weapon=InventoryDialogue.getWeapon().getWeaponType();
for (Colour c : weapon.getAllAvailablePrimaryColours()) {
id="String_Node_Str" + weapon.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewPrimary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeWeaponPrimary(InventoryDialogue.getWeapon(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
for (Colour c : weapon.getAllAvailableSecondaryColours()) {
id="String_Node_Str" + weapon.hashCode() + "String_Node_Str"+ c.toString();
if ((EventTarget)MainController.document.getElementById(id) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
InventoryDialogue.dyePreviewSecondary=c;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setDyeWeaponSecondary(InventoryDialogue.getWeapon(),c);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
for (AbstractClothingType clothing : ClothingType.getAllClothing()) {
for (Colour colour : clothing.getAllAvailablePrimaryColours()) {
if ((EventTarget)MainController.document.getElementById(clothing.hashCode() + "String_Node_Str" + colour.toString()) != null) {
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericClothing(clothing,colour);
MainController.addEventListener(MainController.document,clothing.hashCode() + "String_Node_Str" + colour.toString(),"String_Node_Str",el2,false);
}
}
}
for (AbstractItemType item : ItemType.allItems) {
id=ItemType.itemToIdMap.get(item);
if ((EventTarget)MainController.document.getElementById(id) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericItem(item);
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
for (AbstractWeaponType weapon : WeaponType.allweapons) {
for (DamageType dt : weapon.getAvailableDamageTypes()) {
if ((EventTarget)MainController.document.getElementById(weapon.hashCode() + "String_Node_Str" + dt.toString()) != null) {
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",MainController.hideTooltipListener,false);
InventoryTooltipEventListener el2=new InventoryTooltipEventListener().setGenericWeapon(weapon,dt);
MainController.addEventListener(MainController.document,weapon.hashCode() + "String_Node_Str" + dt.toString(),"String_Node_Str",el2,false);
}
}
}
for (Perk perk : Perk.values()) {
if (perk.getPerkCategory() == PerkCategory.JOB) {
id="String_Node_Str" + perk;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(0,perk,Main.game.getPlayer()),false);
}
}
 else {
id="String_Node_Str" + perk;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(PerkManager.MANAGER.getPerkRow(perk),perk,Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
Main.game.getPlayer().removeTrait(perk);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_ARCANE || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_EARTH || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_WATER || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_AIR || Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_SPELLS_FIRE) {
for (Spell s : Spell.values()) {
id="String_Node_Str" + s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setSpell(s,Main.game.getPlayer()),false);
}
for (List<TreeEntry<SpellSchool,SpellUpgrade>> upgradeList : s.getSpellUpgradeTree().values()) {
for (TreeEntry<SpellSchool,SpellUpgrade> upgrade : upgradeList) {
id="String_Node_Str" + upgrade.getEntry();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setSpellUpgrade(upgrade.getEntry(),Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
if (Spell.isSpellUpgradeAvailable(Main.game.getPlayer(),s,upgrade) && Main.game.getPlayer().getSpellUpgradePoints(upgrade.getCategory()) >= upgrade.getEntry().getPointCost()) {
Main.game.getPlayer().addSpellUpgrade(upgrade.getEntry());
Main.game.getPlayer().incrementSpellUpgradePoints(upgrade.getCategory(),-upgrade.getEntry().getPointCost());
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
,false);
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_LEVEL_UP) {
for (int i=0; i < PerkManager.ROWS; i++) {
for (Entry<PerkCategory,List<TreeEntry<PerkCategory,Perk>>> entry : PerkManager.MANAGER.getPerkTree().get(i).entrySet()) {
for (TreeEntry<PerkCategory,Perk> e : entry.getValue()) {
id=i + "String_Node_Str" + e.getEntry();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setLevelUpPerk(i,e.getEntry(),Main.game.getPlayer()),false);
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",event -> {
if (e.getEntry().isEquippableTrait() && PerkManager.MANAGER.isPerkOwned(e)) {
if (!Main.game.getPlayer().hasTraitActivated(e.getEntry())) {
Main.game.getPlayer().addTrait(e.getEntry());
}
 else {
Main.game.getPlayer().removeTrait(e.getEntry());
}
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
 else if (Main.game.getPlayer().getPerkPoints() >= 1 && PerkManager.MANAGER.isPerkAvailable(e)) {
if (Main.game.getPlayer().addPerk(e.getRow(),e.getEntry())) {
Main.game.getPlayer().incrementPerkPoints(-1);
if (e.getEntry().isEquippableTrait() && Main.game.getPlayer().getTraits().size() < GameCharacter.MAX_TRAITS) {
Main.game.getPlayer().addTrait(e.getEntry());
}
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_FETISHES) {
for (Fetish f : Fetish.values()) {
id="String_Node_Str" + f;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= f.getCost()) {
if (Main.game.getPlayer().addFetish(f)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE,-f.getCost(),false);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetish(f,Main.game.getPlayer()),false);
}
id=f + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetishExperience(f,Main.game.getPlayer()),false);
}
for (FetishDesire desire : FetishDesire.values()) {
id=f + "String_Node_Str" + desire;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= FetishDesire.getCostToChange()) {
if (Main.game.getPlayer().setFetishDesire(f,desire)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE,-FetishDesire.getCostToChange(),false);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",new TooltipInformationEventListener().setFetishDesire(f,desire,Main.game.getPlayer()),false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.MENU) {
Cell[][] grid=Main.game.getWorlds().get(Main.game.getPlayer().getWorldLocation()).getGrid();
for (int i=grid[0].length - 1; i >= 0; i--) {
for (int j=0; j < grid.length; j++) {
Cell c=grid[j][i];
boolean discovered=c.isDiscovered() || Main.game.isDebugMode();
if (!discovered) {
continue;
}
if (c.getPlace().getPlaceType() == PlaceType.GENERIC_IMPASSABLE) {
continue;
}
MainController.setMapLocationListeners(c,i,j);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
for (KeyboardAction ka : KeyboardAction.values()) {
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
MainController.actionToBind=ka;
MainController.primaryBinding=true;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)).addEventListener("String_Node_Str",e -> {
MainController.actionToBind=ka;
MainController.primaryBinding=false;
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + ka)) != null) ((EventTarget)MainController.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)MainController.document.getElementById(preference + "String_Node_Str" + g)) != null) {
((EventTarget)MainController.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)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,"String_Node_Str","String_Node_Str",el,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.HUMAN);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.HUMAN);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.MINIMUM);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.MINIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.REDUCED);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.REDUCED);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.NORMAL);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.NORMAL);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str")).addEventListener("String_Node_Str",e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().setFeminineFurryPreference(r,FurryPreference.MAXIMUM);
Main.getProperties().setMasculineFurryPreference(r,FurryPreference.MAXIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
for (Subspecies s : Subspecies.values()) {
for (FurryPreference preference : FurryPreference.values()) {
id="String_Node_Str" + preference + "String_Node_Str"+ s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setFeminineFurryPreference(s,preference);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(preference.getName(),preference.getDescriptionFeminine(s));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + preference + "String_Node_Str"+ s;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setMasculineFurryPreference(s,preference);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(preference.getName(),preference.getDescriptionMasculine(s));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.CONTENT_PREFERENCE || Main.game.getCurrentDialogueNode() == CharacterCreation.CONTENT_PREFERENCES) {
for (Artist artist : Artwork.allArtists) {
id="String_Node_Str" + artist.getFolderName();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().preferredArtist=artist.getFolderName();
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
Map<String,PropertyValue> settingsMap=Util.newHashMapOfValues(new Value<>("String_Node_Str",PropertyValue.artwork),new Value<>("String_Node_Str",PropertyValue.nonConContent),new Value<>("String_Node_Str",PropertyValue.incestContent),new Value<>("String_Node_Str",PropertyValue.lactationContent),new Value<>("String_Node_Str",PropertyValue.cumRegenerationContent),new Value<>("String_Node_Str",PropertyValue.urethralContent),new Value<>("String_Node_Str",PropertyValue.nipplePenContent),new Value<>("String_Node_Str",PropertyValue.facialHairContent),new Value<>("String_Node_Str",PropertyValue.analContent),new Value<>("String_Node_Str",PropertyValue.futanariTesticles),new Value<>("String_Node_Str",PropertyValue.ageContent),new Value<>("String_Node_Str",PropertyValue.pubicHairContent),new Value<>("String_Node_Str",PropertyValue.bodyHairContent),new Value<>("String_Node_Str",PropertyValue.assHairContent),new Value<>("String_Node_Str",PropertyValue.feminineBeardsContent),new Value<>("String_Node_Str",PropertyValue.furryTailPenetrationContent),new Value<>("String_Node_Str",PropertyValue.inflationContent));
for (Entry<String,PropertyValue> entry : settingsMap.entrySet()) {
id=entry.getKey() + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(entry.getValue(),true);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id=entry.getKey() + "String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().setValue(entry.getValue(),false);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=Math.min(100,Main.getProperties().forcedTFPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFPercentage=Math.max(0,Main.getProperties().forcedTFPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowth=Math.min(10,Main.getProperties().pregnancyBreastGrowth + 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowth=Math.max(0,Main.getProperties().pregnancyBreastGrowth - 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowthLimit=Math.min(100,Main.getProperties().pregnancyBreastGrowthLimit + 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyBreastGrowthLimit=Math.max(0,Main.getProperties().pregnancyBreastGrowthLimit - 1);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationIncrease=Math.min(1000,Main.getProperties().pregnancyLactationIncrease + 50);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationIncrease=Math.max(0,Main.getProperties().pregnancyLactationIncrease - 50);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationLimit=Math.min(Lactation.SEVEN_MONSTROUS_AMOUNT_POURING.getMaximumValue(),Main.getProperties().pregnancyLactationLimit + 250);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().pregnancyLactationLimit=Math.max(0,Main.getProperties().pregnancyLactationLimit - 250);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishPercentage=Math.min(100,Main.getProperties().forcedFetishPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishPercentage=Math.max(0,Main.getProperties().forcedFetishPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
}
id="String_Node_Str" + ForcedTFTendency.NEUTRAL;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.NEUTRAL.getName(),ForcedTFTendency.NEUTRAL.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.FEMININE;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.FEMININE;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE.getName(),ForcedTFTendency.FEMININE.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.FEMININE_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.FEMININE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE_HEAVY.getName(),ForcedTFTendency.FEMININE_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.MASCULINE;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.MASCULINE;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE.getName(),ForcedTFTendency.MASCULINE.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedTFTendency.MASCULINE_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedTFTendency=ForcedTFTendency.MASCULINE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE_HEAVY.getName(),ForcedTFTendency.MASCULINE_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.NEUTRAL;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.NEUTRAL.getName(),ForcedFetishTendency.NEUTRAL.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.BOTTOM;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.BOTTOM;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM.getName(),ForcedFetishTendency.BOTTOM.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.BOTTOM_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.BOTTOM_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM_HEAVY.getName(),ForcedFetishTendency.BOTTOM_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.TOP;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.TOP;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP.getName(),ForcedFetishTendency.TOP.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
id="String_Node_Str" + ForcedFetishTendency.TOP_HEAVY;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.getProperties().forcedFetishTendency=ForcedFetishTendency.TOP_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",Main.game.getCurrentDialogueNode()));
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP_HEAVY.getName(),ForcedFetishTendency.TOP_HEAVY.getDescription());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD) {
for (File f : Main.getSavedGames()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.overwriteConfirmationName.equals(f.getName())) {
OptionsDialogue.overwriteConfirmationName="String_Node_Str";
Main.saveGame(fileIdentifier,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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName="String_Node_Str";
Main.loadGame(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteGame(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str",(!Main.game.isStarted() ? "String_Node_Str" : "String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.IMPORT_EXPORT) {
for (File f : Main.getCharactersForImport()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName="String_Node_Str";
Main.deleteExportedCharacter(fileIdentifier);
}
 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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
if (((EventTarget)MainController.document.getElementById("String_Node_Str")) != null) {
((EventTarget)MainController.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()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)).addEventListener("String_Node_Str",e -> {
Main.importCharacter(f);
}
,false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_IMPORT) {
for (File f : Main.getSlavesForImport()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
if (((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)) != null) {
((EventTarget)MainController.document.getElementById("String_Node_Str" + fileIdentifier)).addEventListener("String_Node_Str",e -> {
try {
Game.importCharacterAsSlave(fileIdentifier);
MainController.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)MainController.document.getElementById(id)) != null) {
if (Main.game.getPlayer().isHasSlaverLicense()) {
((EventTarget)MainController.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);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
 else {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el=new TooltipInformationEventListener().setInformation(UtilText.parse(npc,"String_Node_Str"),UtilText.parse(npc,"String_Node_Str"));
MainController.addEventListener(MainController.document,id,"String_Node_Str",el,false);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD) {
for (File f : EnchantmentDialogue.getSavedEnchants()) {
String fileIdentifier=f.getName().substring(0,f.getName().lastIndexOf('.'));
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.overwriteConfirmationName.equals(f.getName())) {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.saveEnchant(fileIdentifier,true);
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
 else {
EnchantmentDialogue.overwriteConfirmationName=f.getName();
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.loadConfirmationName.equals(f.getName())) {
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
LoadedEnchantment lEnch=EnchantmentDialogue.loadEnchant(fileIdentifier);
EnchantmentDialogue.resetNonTattooEnchantmentVariables();
EnchantmentDialogue.initModifiers(lEnch.getSuitableItem());
EnchantmentDialogue.getEffects().clear();
for (ItemEffect ie : lEnch.getEffects()) {
EnchantmentDialogue.addEffect(ie);
}
EnchantmentDialogue.setOutputName(lEnch.getName());
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_MENU));
}
 else {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.loadConfirmationName=f.getName();
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
id="String_Node_Str" + fileIdentifier;
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
if (!Main.getProperties().hasValue(PropertyValue.overwriteWarning) || EnchantmentDialogue.deleteConfirmationName.equals(f.getName())) {
EnchantmentDialogue.deleteConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteEnchant(fileIdentifier);
EnchantmentDialogue.initSaveLoadMenu();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
 else {
EnchantmentDialogue.overwriteConfirmationName="String_Node_Str";
EnchantmentDialogue.loadConfirmationName="String_Node_Str";
EnchantmentDialogue.deleteConfirmationName=f.getName();
Main.game.setContent(new Response("String_Node_Str","String_Node_Str",EnchantmentDialogue.ENCHANTMENT_SAVE_LOAD));
}
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
id="String_Node_Str";
if (((EventTarget)MainController.document.getElementById(id)) != null) {
((EventTarget)MainController.document.getElementById(id)).addEventListener("String_Node_Str",e -> {
Main.mainController.getWebEngine().executeScript("String_Node_Str");
EnchantmentDialogue.saveEnchant(Main.mainController.getWebEngine().getDocument().getElementById("String_Node_Str").getTextContent(),false);
}
,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setInformation("String_Node_Str","String_Node_Str");
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
for (Entry<String,LoadedEnchantment> entry : EnchantmentDialogue.getLoadedEnchantmentsMap().entrySet()) {
id="String_Node_Str" + entry.getKey();
if (((EventTarget)MainController.document.getElementById(id)) != null) {
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.moveTooltipListener,false);
MainController.addEventListener(MainController.document,id,"String_Node_Str",MainController.hideTooltipListener,false);
TooltipInformationEventListener el2=new TooltipInformationEventListener().setLoadedEnchantment(entry.getValue());
MainController.addEventListener(MainController.document,id,"String_Node_Str",el2,false);
}
}
}
if (Main.game.isStarted() && Main.game.getPlayerCell().getPlace().getPlaceType() == PlaceType.GAMBLING_DEN_GAMBLING) {
for (int i=0; i < DicePoker.getPlayerDice().size(); i++) {
setDiceHandler(i);
}
}
MainController.setResponseEventListeners();
}