Advertisement
tusKOr661

Skyrim Alchemy Ingredient Matching

Sep 30th, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.15 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class SkyrimAlchemy {
  4.     private String[][] ingredients = new String [][] {
  5.         new String[] {"Abecean Longfin", "Weakness to Frost", "Fortify Sneak", "Weakness to Poison", "Fortify Restoration"},
  6.         new String[] {"Ash Creep Cluster (DB)", "Damage Stamina", "Invisibility", "Resist Fire", "Fortify Destruction"},
  7.         new String[] {"Ash Hopper Jelly (DB)", "Restore Health", "Fortify Light Armor", "Resist Shock", "Weakness to Frost"},
  8.         new String[] {"Ashen Grass Pod (DB)", "Resist Fire", "Weakness to Shock", "Fortify Lockpicking", "Fortify Sneak"},
  9.         new String[] {"Ancestor Moth Wing (DG)", "Damage Stamina", "Fortify Conjuration", "Damage Magicka Regen", "Fortify Enchanting"},
  10.         new String[] {"Bear Claws", "Restore Stamina", "Fortify Health", "Fortify One-Handed", "Damage Magicka Regen"},
  11.         new String[] {"Bee", "Restore Stamina", "Ravage Stamina", "Regenerate Stamina", "Weakness to Shock"},
  12.         new String[] {"Beehive Husk", "Resist Poison", "Fortify Light Armor", "Fortify Sneak", "Fortify Destruction"},
  13.         new String[] {"Bleeding Crown", "Weakness to Fire", "Fortify Block", "Weakness to Poison", "Resist Magic"},
  14.         new String[] {"Blisterwort", "Damage Stamina", "Frenzy", "Restore Health", "Fortify Smithing"},
  15.         new String[] {"Blue Butterfly Wing", "Damage Stamina", "Fortify Conjuration", "Damage Magicka Regen", "Fortify Enchanting"},
  16.         new String[] {"Blue Dartwing", "Resist Shock", "Fortify Pickpocket", "Restore Health", "Fear"},
  17.         new String[] {"Blue Mountain Flower", "Restore Health", "Fortify Health", "Fortify Conjuration", "Damage Magicka Regen"},
  18.         new String[] {"Boar Tusk (DB)", "Fortify Stamina", "Fortify Health", "Fortify Block", "Frenzy"},
  19.         new String[] {"Bone Meal", "Damage Stamina", "Resist Fire", "Fortify Conjuration", "Ravage Stamina"},
  20.         new String[] {"Briar Heart", "Restore Magicka", "Fortify Block", "Paralysis", "Fortify Magicka"},
  21.         new String[] {"Burnt Spriggan Wood (DB)", "Weakness to Fire", "Fortify Alteration", "Damage Magicka Regen", "Slow"},
  22.         new String[] {"Butterfly Wing", "Restore Health", "Fortify Barter", "Lingering Damage Stamina", "Damage Magicka"},
  23.         new String[] {"Canis Root", "Damage Stamina", "Fortify One-Handed", "Fortify Marksman", "Paralysis"},
  24.         new String[] {"Charred Skeever Hide", "Restore Stamina", "Cure Disease", "Resist Poison", "Restore Health"},
  25.         new String[] {"Chaurus Eggs", "Weakness to Poison", "Fortify Stamina", "Damage Magicka", "Invisibility"},
  26.         new String[] {"Chaurus Hunter Antennae (DG)", "Damage Stamina", "Fortify Conjuration", "Damage Magicka Regen", "Fortify Enchanting"},
  27.         new String[] {"Chicken's Egg", "Resist Magic", "Damage Magicka Regen", "Waterbreathing", "Lingering Damage Stamina"},
  28.         new String[] {"Creep Cluster", "Restore Magicka", "Damage Stamina Regen", "Fortify Carry Weight", "Weakness to Magic"},
  29.         new String[] {"Crimson Nirnroot", "Damage Health", "Damage Stamina", "Invisibility", "Resist Magic"},
  30.         new String[] {"Cyrodilic Spadetail", "Damage Stamina", "Fortify Restoration", "Fear", "Ravage Health"},
  31.         new String[] {"Daedra Heart", "Damage Stamina Regen", "Restore Health", "Damage Magicka", "Fear"},
  32.         new String[] {"Deathbell", "Damage Health", "Ravage Stamina", "Slow", "Weakness to Poison"},
  33.         new String[] {"Dragon's Tongue", "Resist Fire", "Fortify Barter", "Fortify Illusion", "Fortify Two-handed"},
  34.         new String[] {"Dwarven Oil", "Weakness to Magic", "Fortify Illusion", "Regenerate Magicka", "Restore Magicka"},
  35.         new String[] {"Ectoplasm", "Restore Magicka", "Fortify Destruction", "Fortify Magicka", "Damage Health"},
  36.         new String[] {"Elves Ear", "Restore Magicka", "Fortify Marksman", "Weakness to Frost", "Resist Fire"},
  37.         new String[] {"Emperor Parasol Mossv", "Damage Health", "Fortify Magicka", "Regenerate Health", "Fortify Two-Handed"},
  38.         new String[] {"Eye of Sabre Cat", "Restore Stamina", "Ravage Health", "Damage Magicka", "Restore Health"},
  39.         new String[] {"Falmer Ear", "Damage Health", "Resist Poison", "Frenzy", "Fortify Lockpicking"},
  40.         new String[] {"Felsaad Tern Feathers (DB)", "Restore Health", "Fortify Light Armor", "Cure Disease", "Resist Magic"},
  41.         new String[] {"Fire Salts", "Weakness to Frost", "Restore Magicka", "Resist Fire", "Regenerate Magicka"},
  42.         new String[] {"Fly Amanita", "Resist Fire", "Fortify Two-handed", "Frenzy", "Regenerate Stamina"},
  43.         new String[] {"Frost Mirriam", "Resist Frost", "Fortify Sneak", "Ravage Magicka", "Damage Stamina Regen"},
  44.         new String[] {"Frost Salts", "Weakness to Fire", "Resist Frost", "Restore Magicka", "Fortify Conjuration"},
  45.         new String[] {"Garlic", "Resist Poison", "Fortify Stamina", "Regenerate Magicka", "Regenerate Health"},
  46.         new String[] {"Giant Lichen", "Ravage Health", "Weakness to Shock", "Weakness to Poison", "Restore Magicka"},
  47.         new String[] {"Giant's Toe", "Damage Stamina", "Fortify Health", "Fortify Carry Weight", "Damage Stamina Regen"},
  48.         new String[] {"Gleamblossom (DG)", "Resist Magic", "Fear", "Regenerate Health", "Paralysis"},
  49.         new String[] {"Glow Dust", "Damage Magicka", "Damage Magicka Regen", "Fortify Destruction", "Resist Shock"},
  50.         new String[] {"Glowing Mushroom", "Resist Shock", "Fortify Destruction", "Fortify Smithing", "Fortify Health"},
  51.         new String[] {"Grass Pod", "Resist Poison", "Ravage Magicka", "Fortify Alteration", "Restore Magicka"},
  52.         new String[] {"Hagraven Claw", "Resist Magic", "Lingering Damage Magicka", "Fortify Enchanting", "Fortify Barter"},
  53.         new String[] {"Hagraven Feathers", "Damage Magicka", "Fortify Conjuration", "Frenzy", "Weakness to Shock"},
  54.         new String[] {"Hanging Moss", "Damage Magicka", "Fortify Health", "Damage Magicka Regen", "Fortify One-Handed"},
  55.         new String[] {"Hawk Beak", "Restore Stamina", "Resist Frost", "Fortify Carry Weight", "Resist Shock"},
  56.         new String[] {"Hawk's Egg", "Resist Magic", "Damage Magicka Regen", "Waterbreathing", "Lingering Damage Stamina"},
  57.         new String[] {"Hawk Feathers", "Cure Disease", "Fortify Light Armor", "Fortify One-Handed", "Fortify Sneak"},
  58.         new String[] {"Histcarp", "Restore Stamina", "Fortify Magicka", "Damage Stamina Regen", "Waterbreathing"},
  59.         new String[] {"Honeycomb", "Restore Stamina", "Fortify Block", "Fortify Light Armor", "Ravage Stamina"},
  60.         new String[] {"Human Flesh", "Damage Health", "Paralysis", "Restore Magicka", "Fortify Sneak"},
  61.         new String[] {"Human Heart", "Damage Health", "Damage Magicka", "Damage Magicka Regen", "Frenzy"},
  62.         new String[] {"Ice Wraith Teeth", "Weakness to Frost", "Fortify Heavy Armor", "Invisibility", "Weakness to Fire"},
  63.         new String[] {"Imp Stool", "Damage Health", "Lingering Damage Health", "Paralysis", "Restore Health"},
  64.         new String[] {"Jarrin Root", "Damage Health", "Damage Magicka", "Damage Stamina", "Damage Magicka Regen"},
  65.         new String[] {"Jazbay Grapes", "Weakness to Magic", "Fortify Magicka", "Regenerate Magicka", "Ravage Health"},
  66.         new String[] {"Juniper Berries", "Weakness to Fire", "Fortify Marksman", "Regenerate Health", "Damage Stamina Regen"},
  67.         new String[] {"Large Antlers", "Restore Stamina", "Fortify Stamina", "Slow", "Damage Stamina Regen"},
  68.         new String[] {"Lavender", "Resist Magic", "Fortify Stamina", "Ravage Magicka", "Fortify Conjuration"},
  69.         new String[] {"Luna Moth Wing", "Damage Magicka", "Fortify Light Armor", "Regenerate Health", "Invisibility"},
  70.         new String[] {"Moon Sugar", "Weakness to Fire", "Resist Frost", "Restore Magicka", "Regenerate Magicka"},
  71.         new String[] {"Mora Tapinella", "Restore Magicka", "Lingering Damage Health", "Regenerate Stamina", "Fortify Illusion"},
  72.         new String[] {"Mudcrab Chitin", "Restore Stamina", "Cure Disease", "Resist Poison", "Resist Fire"},
  73.         new String[] {"Namira's Rot", "Damage Magicka", "Fortify Lockpicking", "Fear", "Regenerate Health"},
  74.         new String[] {"Netch Jelly (DB)", "Paralysis", "Fortify Carry Weight", "Restore Stamina", "Fear"},
  75.         new String[] {"Nightshade", "Damage Health", "Damage Magicka Regen", "Lingering Damage Stamina", "Fortify Destruction"},
  76.         new String[] {"Nirnroot", "Damage Health", "Damage Stamina", "Invisibility", "Resist Magic"},
  77.         new String[] {"Nordic Barnacle", "Damage Magicka", "Waterbreathing", "Regenerate Health", "Fortify Pickpocket"},
  78.         new String[] {"Orange Dartwing", "Restore Stamina", "Ravage Magicka", "Fortify Pickpocket", "Lingering Damage Health"},
  79.         new String[] {"Pearl", "Restore Stamina", "Fortify Block", "Restore Magicka", "Resist Shock"},
  80.         new String[] {"Pine Thrush Egg", "Restore Stamina", "Fortify Lockpicking", "Weakness to Poison", "Resist Shock"},
  81.         new String[] {"Poison Bloom (DG)", "Damage Health", "Slow", "Fortify Carry Weight", "Fear"},
  82.         new String[] {"Powdered Mammoth Tusk", "Restore Stamina", "Fortify Sneak", "Weakness to Fire", "Fear"},
  83.         new String[] {"Purple Mountain Flower", "Restore Stamina", "Fortify Sneak", "Lingering Damage Magicka", "Resist Frost"},
  84.         new String[] {"Red Mountain Flower", "Restore Magicka", "Ravage Magicka", "Fortify Magicka", "Damage Health"},
  85.         new String[] {"River Betty", "Damage Health", "Fortify Alteration", "Slow", "Fortify Carry Weight"},
  86.         new String[] {"Rock Warbler Egg", "Restore Health", "Fortify One-Handed", "Damage Stamina", "Weakness to Magic"},
  87.         new String[] {"Sabre Cat Tooth", "Restore Stamina", "Fortify Heavy Armor", "Fortify Smithing", "Weakness to Poison"},
  88.         new String[] {"Salmon Roe", "Restore Stamina", "Waterbreathing", "Fortify Magicka", "Regenerate Magicka"},
  89.         new String[] {"Salt Pile", "Weakness to Magic", "Fortify Restoration", "Slow", "Regenerate Magicka"},
  90.         new String[] {"Scaly Pholiata", "Weakness to Magic", "Fortify Illusion", "Regenerate Stamina", "Fortify Carry Weight"},
  91.         new String[] {"Scathecraw (DB)", "Ravage Health", "Ravage Stamina", "Ravage Magicka", "Lingering Damage Health"},
  92.         new String[] {"Silverside Perch", "Restore Stamina", "Damage Stamina Regen", "Ravage Health", "Resist Frost"},
  93.         new String[] {"Skeever Tail", "Damage Stamina Regen", "Ravage Health", "Damage Health", "Fortify Light Armor"},
  94.         new String[] {"Slaughterfish Egg", "Resist Poison", "Fortify Pickpocket", "Lingering Damage Health", "Fortify Stamina"},
  95.         new String[] {"Slaughterfish Scales", "Resist Frost", "Lingering Damage Health", "Fortify Heavy Armor", "Fortify Block"},
  96.         new String[] {"Small Antlers", "Weakness to Poison", "Fortify Restoration", "Lingering Damage Stamina", "Damage Health"},
  97.         new String[] {"Small Pearl", "Restore Stamina", "Fortify One-Handed", "Fortify Restoration", "Resist Frost"},
  98.         new String[] {"Snowberries", "Resist Fire", "Fortify Enchanting", "Resist Frost", "Resist Shock"},
  99.         new String[] {"Spawn Ash (DB)", "Ravage Stamina", "Resist Fire", "Fortify Enchanting", "Ravage Magicka"},
  100.         new String[] {"Spider Egg", "Damage Stamina", "Damage Magicka Regen", "Fortify Lockpicking", "Fortify Marksman"},
  101.         new String[] {"Spriggan Sap", "Damage Magicka Regen", "Fortify Enchanting", "Fortify Smithing", "Fortify Alteration"},
  102.         new String[] {"Swamp Fungal Pod", "Resist Shock", "Lingering Damage Magicka", "Paralysis", "Restore Health"},
  103.         new String[] {"Taproot", "Weakness to Magic", "Fortify Illusion", "Regenerate Magicka", "Restore Magicka"},
  104.         new String[] {"Thistle Branch", "Resist Frost", "Ravage Stamina", "Resist Poison", "Fortify Heavy Armor"},
  105.         new String[] {"Torchbug Thorax", "Restore Stamina", "Lingering Damage Magicka", "Weakness to Magic", "Fortify Stamina"},
  106.         new String[] {"Trama Root (DB)", "Weakness to Shock", "Fortify Carry Weight", "Damage Magicka", "Slow"},
  107.         new String[] {"Troll Fat", "Resist Poison", "Fortify Two-handed", "Frenzy", "Damage Health"},
  108.         new String[] {"Tundra Cotton", "Resist Magic", "Fortify Magicka", "Fortify Block", "Fortify Barter"},
  109.         new String[] {"Vampire Dust", "Invisibility", "Restore Magicka", "Regenerate Health", "Cure Disease"},
  110.         new String[] {"Void Salts", "Weakness to Shock", "Resist Magic", "Damage Health", "Fortify Magicka"},
  111.         new String[] {"Wheat", "Restore Health", "Fortify Health", "Damage Stamina Regen", "Lingering Damage Magicka"},
  112.         new String[] {"White Cap", "Weakness to Frost", "Fortify Heavy Armor", "Restore Magicka", "Ravage Magicka"},
  113.         new String[] {"Wisp Wrappings", "Restore Stamina", "Fortify Destruction", "Fortify Carry Weight", "Resist Magic"},
  114.         new String[] {"Yellow Mountain Flower (DG)", "Resist Poison", "Fortify Restoration", "Fortify Health", "Damage Stamina Regen"},
  115.     };
  116.    
  117.     SkyrimAlchemy () {
  118.         String searchMode = "ing";
  119.         Scanner scanner = new Scanner (System.in);
  120.         System.out.println (" ");
  121.        
  122.         do {
  123.             String input = scanner.nextLine ();
  124.            
  125.             if (input.matches ("^quit$")) {
  126.                 scanner = null;
  127.                 return;
  128.             };
  129.            
  130.             if (input.matches ("^setmode .+"))
  131.                 searchMode = input.substring (7).equals ("ing") ? "ing" : "eff";
  132.            
  133.             else if (searchMode.equals ("ing"))
  134.                 getCompatableIngredients (input);
  135.             else if (searchMode.equals ("eff"))
  136.                 getCompatableEffects (input);
  137.            
  138.         } while (scanner != null);
  139.     };
  140.    
  141.     String findRealIngredientName (String input) {
  142.         for (String [] array : ingredients)
  143.             if (array [0].toLowerCase ().equals (input.toLowerCase ()))//.substring (0, input.length () - 1) == input.toLowerCase ())
  144.                 return array [0];
  145.        
  146.         return "not found";
  147.     };
  148.     String findRealEffect (String input) {
  149.         for (String [] array : ingredients)
  150.             for (int i = 1; i < array.length; i++)
  151.                 if (array [i].toLowerCase ().equals (input.toLowerCase ()))//.substring (0, input.length () - 1) == input.toLowerCase ())
  152.                     return array [i];
  153.        
  154.         return "not found";
  155.     };
  156.     String [] getIngredientEffects (String input) {
  157.         input = findRealIngredientName (input);
  158.         if (input.equals ("not found"))
  159.             return new String [] {"Not found", "Not found", "Not found", "Not found"};
  160.        
  161.         for (String[] s: ingredients)
  162.             if (s [0].equals (input))
  163.                 return new String []{s [1], s [2], s [3], s [4]};
  164.            
  165.         return new String [] {"Not found", "Not found", "Not found", "Not found"};
  166.     };
  167.  
  168.     void getCompatableIngredients (String input) {
  169.         input = findRealIngredientName (input);
  170.        
  171.         if (input.equals ("not found")) {
  172.             print ("Ingredient not found.");
  173.             return ;
  174.         };
  175.        
  176.         String [] ingredientEffects = getIngredientEffects (input);
  177.         HashMap <String, Boolean> compatableIngredients = new
  178.             HashMap <>();
  179.        
  180.         print ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  181.         print (input); //simulate normality of terminal?
  182.         print ("Finding compatable ingredients for " + input);
  183.         print (String.format ("Ingredients: %s, %s, %s, %s", ingredientEffects [0], ingredientEffects [1], ingredientEffects [2], ingredientEffects [3]));
  184.        
  185.         for (String arr[]: ingredients)
  186.             for (int i = 1; i < arr.length; ++i)
  187.                 for (int j = 0; j < ingredientEffects.length; ++j)
  188.                     if (arr [i].equals (ingredientEffects [j]))
  189.                         if (compatableIngredients.get (arr [0]) == null)
  190.                             compatableIngredients.put (arr [0], Boolean.TRUE);
  191.                        
  192.         Object []objs = compatableIngredients.keySet ().toArray ();
  193.        
  194.         if (objs.length == 0)
  195.             print ("None found");
  196.         else
  197.             for (Object key:objs)
  198.                 print (key.toString ());
  199.     };
  200.    
  201.     void getCompatableEffects (String effect) {
  202.         String input = findRealEffect (effect);
  203.        
  204.         if (input.equals ("not found")) {
  205.             print ("Effect not found.");
  206.             return ;
  207.         };
  208.        
  209.         String [] ingredientEffects = getIngredientEffects (input);
  210.         HashMap <String, Boolean> compatableIngredients = new
  211.             HashMap <>();
  212.        
  213.         print ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  214.         print (input); //simulate normality of terminal?
  215.         print ("Finding compatable effects for " + input);
  216.        
  217.         for (String arr[]: ingredients)
  218.             for (int i = 1; i < arr.length; ++i)
  219.                 for (int j = 0; j < ingredientEffects.length; ++j)
  220.                     if (arr [i].toLowerCase ().equals (input.toLowerCase ()))
  221.                         if (compatableIngredients.get (arr [0]) == null)
  222.                             compatableIngredients.put (arr [0], Boolean.TRUE);
  223.                        
  224.         Object []objs = compatableIngredients.keySet ().toArray ();
  225.        
  226.         if (objs.length == 0)
  227.             print ("None found");
  228.         else
  229.             for (Object key:objs)
  230.                 print (key.toString ());
  231.     };
  232.    
  233.     void print (String s) {
  234.         System.out.println (s);
  235.     };
  236.    
  237.     void print (String [] s) {
  238.         String raw = "";
  239.         for (String str : s)
  240.             raw += raw.length() == 0 ? "" : "\t" + str;
  241.        
  242.         print (raw);
  243.     };
  244.    
  245.     static void main (String []args) {
  246.         new SkyrimAlchemy ();
  247.     };
  248. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement