diff --git a/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java b/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java index 2b59c83..fda0725 100644 --- a/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java +++ b/src/eu/smoser/dungeongenerator/dungeon/objects/Treasure.java @@ -51,11 +51,11 @@ public class Treasure extends ADungeonObject{ case 5: case 6: case 7: - descString = "eine Handvoll Schätze"; // TODO: generate real treasure here + descString = DetailedTreasure(); break; case 8: case 9: - descString = "zwei Handvoll Schätze"; // TODO: generate real treasure here + descString = DetailedTreasure() + "; außerdem " + DetailedTreasure(); break; case 10: descString = "uralte Waffe/Rüstung"; @@ -107,4 +107,145 @@ public class Treasure extends ADungeonObject{ break; } } + + private String DetailedTreasure(){ + switch(Dice.Roll(20,1)){ + case 1: + case 2: + case 3: + case 4: return Coins(); + case 5: + case 6: + case 7: + case 8: + case 9: return Jewelry(); + case 10: + case 11: + case 12: + case 13: + case 14: return Gems(); + case 15: + case 16: return Coins() + " und " + Jewelry(); + case 17: + case 18: return Coins() + " und " + Gems(); + case 19: return Jewelry() + " und " + Gems(); + case 20: return Coins() + ", " + Jewelry() + " und " + Gems(); + } + } + + private String Coins(){ + switch(Dice.Roll(20,1)){ + case 1: + case 2: return Dice.Roll(20, 2) + " Kreuzer"; + case 3: + case 4: return Dice.Roll(20, 2) + " Heller"; + case 5: + case 6: return Dice.Roll(20, 2) + " Silbertaler"; + case 7: + case 8: return Dice.Roll(20, 2) + " Dukaten"; + case 9: + case 10: return "Je " + Dice.Roll(20, 1) + " Kreuzer und Heller"; + case 11: + case 12: return "Je " + Dice.Roll(20, 1) + " Kreuzer, Heller und Silbertaler"; + case 13: + case 14: return "Je " + Dice.Roll(20, 1) + " Kreuzer, Heller, Silbertaler und Dukaten"; + case 15: + case 16: return "Je " + Dice.Roll(20, 2) + " Silbertaler und Dukaten"; + case 17: + case 18: return "Je " + Dice.Roll(20, 1) + " Kreuzer, Heller, Silbertaler und Dukaten"; + case 19: + case 20: return Dice.Roll(20, 3) + " Dukaten"; + } + } + + private String Jewelry(){ + switch(Dice.Roll(20,1)){ + case 1: + case 2: return Material() + "-Amulett"; + case 3: + case 4: return Material() + "-Armreif"; + case 5: + case 6: return Material() + "-Brosche"; + case 7: + case 8: return Material() + "-Diadem"; + case 9: + case 10: return Material() + "-Kette"; + case 11: + case 12: return Material() + "-Ohrring"; + case 13: + case 14: return Material() + "-Ring"; + case 15: return Material() + "-Armreif mit eingearbeitetem " + Gem(); + case 16: return Material() + "-Brosche besetzt mit " + Dice.Roll(6, 1) + Gems(); + case 17: return Material() + "-Diadem besetzt mit " + Dice.Roll(6, 1) + Gems(); + case 18: return Material() + "-Kette mit Anhänger mit einem " + Gems(); + case 19: return Material() + "-Ohrring mit einem " + Gems(); + case 20: return Material() + "-Ring mit einem " + Gems(); + } + } + + private String Material(){ + switch(Dice.Roll(20,1)){ + case 1: return "rostige(s/r) Eisen"; + case 2: return "Eisen"; + case 3: return "Zinn"; + case 4: + case 5: return "Messing"; + case 6: + case 7: return "Bronze"; + case 8: + case 9: return "Kupfer"; + case 10: + case 11: + case 12: + case 13: + case 14: return "Silber"; + case 15: + case 16: + case 17: return "Gold"; + case 18: + case 19: return "Elektrum"; + case 20: return (Dice.Roll(6,1)==6 ? "Mindorium" : "Mondsilber"); + } + } + + private String Gems(){ + switch(Dice.Roll(20,1)){ + case 1: + case 2: return "Speckstein (weiß/braun/rot, " + Karat() + ")"; + case 3: + case 4: return "Obsidian (schwarz, " + Karat() + ")"; + case 5: + case 6: return "Malachit (dunkelgrün, " + Karat() + ")"; + case 7: + case 8: return "Achat (rot/braun/grün, " + Karat() + ")"; + case 9: return "Türkis (grün-blau, " + Karat() + ")"; + case 10: return "Aventurin (grünlich, " + Karat() + ")"; + case 11: return "Turmalin (farblos, " + Karat() + ")"; + case 12: return "Obsidian (rot, " + Karat() + ")"; + case 13: return "Jade (grün, " + Karat() + ")"; + case 14: return "Topas (farblos, " + Karat() + ")"; + case 15: return "Opal (milchig, " + Karat() + ")"; + case 16: return "Feueropal (rot schimmernd, " + Karat() + ")"; + case 17: return "Smaragd (grün, " + Karat() + ")"; + case 18: return "Saphir (blau, " + Karat() + ")"; + case 19: return "Rubin (rot, " + Karat() + ")"; + case 20: return "Diamant (durchsichtig, " + Karat() + ")"; + } + } + + private String Karat(){ + switch(Dice.Roll(6,2)){ + case 2: return Dice.Roll(20, 2).toString() + " Karat"; + case 3: + case 4: return Dice.Roll(6, 2).toString() + " Karat"; + case 5: + case 6: return Dice.Roll(6, 1).toString() + " Karat"; + case 7: + case 8: + case 9: return (Dice.Roll(6, 1)/2).toString() + " Karat"; + case 10: return (Dice.Roll(6, 3)+3).toString() + " Karat"; + case 11: return Dice.Roll(6, 5).toString() + " Karat"; + case 12: return (Dice.Roll(20, 1)+10).toString() + " Karat"; + } + } }