using System.Collections; using UnityEngine; public class Lottery { private Hashtable lottery; // Hashtable. Maps item subtype to relative chance of getting the item. int sum; public Lottery(Hashtable _lottery) { this.lottery = _lottery; sum = 0; foreach (DictionaryEntry KV in lottery) { sum += (int)KV.Value; } } public static Item generateItem(ItemSubType subType, int minMoney = 1, int maxMoney = 1) { if (subType == ItemSubType.MONEY) { Item item = new Item(null, subType); int amount = Random.Range(minMoney, maxMoney); if (amount > 999) { item.subType = ItemSubType.MONEY3; } else if (amount > 99) { item.subType = ItemSubType.MONEY2; } item.count = amount; return item; } else { return new Item((ItemData)ItemData.itemData[subType], subType, minMoney); } } public Item Roll(int minMoney, int maxMoney) { int ticket = Random.Range(0, sum + 1); int currentBucket = 0; foreach (DictionaryEntry KV in lottery) { if (currentBucket < ticket && ticket < currentBucket + (int)KV.Value) { // You win! if (KV.Key == null || (ItemSubType)KV.Key == ItemSubType.NONE) { return null; } if ((ItemSubType)KV.Key == ItemSubType.MONEY || (ItemSubType)KV.Key == ItemSubType.MONEY2 || (ItemSubType)KV.Key == ItemSubType.MONEY3) { return generateItem((ItemSubType)KV.Key, minMoney, maxMoney); } return generateItem((ItemSubType)KV.Key); } currentBucket += (int)KV.Value; } return null; } } public class MonsterInfo { public string name; public int level; public long maxHP; public int exp; public int attack; public float defense; public float defenseMultiplier; public int numLotteryRuns; public int minMoney; public int maxMoney; // TODO: Add monster power per skill (bosses have multiple, hard monsters have multiple) // probably can just be a List public MonsterInfo(string name, int level, long maxHP, int exp, int attack, float defense, float mul, int numRuns, int min, int max) { this.name = name; this.level = level; this.maxHP = maxHP; this.exp = exp; this.attack = attack; this.defense = defense; this.defenseMultiplier = mul; this.numLotteryRuns = numRuns; this.minMoney = min; this.maxMoney = max; } public enum MonsterID { // Dangerous Valley BROWN_MUSHROOM, BLUE_MUSHROOM, RED_MUSHROOM, SLIME, RED_FOX, BROWN_SQUIRREL, WHITE_FOX, WHITE_SQUIRREL, HARPY_F, HALFLING_ROGUE, HALFLING_SWORDWIELDER, HARPY_F_2, HALFLING_ARCHER, HALFLING_ROGUE_2, HARPY_M, HALFLING_ARCHER_2, HALFLING_SWORDWIELDER_2, HARPY_M_2, HALFLING_ROGUE_3, HALFLING_ARCHER_3, HALFLING_SWORDWIELDER_3, HALFLING_LEADER, // Dense Forest POSSESSED_FAIRY, POSSESSED_FLOWER, LOST_SOUL, POSSESSED_FAIRY_2, POSSESSED_MUSHROOM, POSSESSED_FAIRY_3, LOST_SOUL_2, POSSESSED_FLOWER_2, VAMPIRE, POSSESSED_FAIRY_4, LOST_SOUL_3, VAMPIRE_2, LOST_SOUL_4, LOST_SOUL_5, HUNTER, } public static readonly Hashtable MonsterInfoMap = new Hashtable() { { MonsterID.BROWN_MUSHROOM, new MonsterInfo( /*name=*/ "Brown Mushroom", /*level=*/ 1, /*hp=*/ 1000, /*exp=*/ 6, /*attack=*/ 20, /*def=*/ 20, /*defMul=*/ 1f, /*rolls=*/ 1, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.BLUE_MUSHROOM, new MonsterInfo( /*name=*/ "Red Mushroom", /*level=*/ 2, /*hp=*/ 1500, /*exp=*/ 8, /*attack=*/ 30, /*def=*/ 30, /*defMul=*/ 1f, /*rolls=*/ 1, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.RED_MUSHROOM, new MonsterInfo( /*name=*/ "Red Mushroom", /*level=*/ 3, /*hp=*/ 2000, /*exp=*/ 8, /*attack=*/ 30, /*def=*/ 30, /*defMul=*/ 1f, /*rolls=*/ 1, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.SLIME, new MonsterInfo( /*name=*/ "Slime", /*level=*/ 3, /*hp=*/ 2500, /*exp=*/ 15, /*attack=*/ 35, /*def=*/ 20, /*defMul=*/ 1f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.RED_FOX, new MonsterInfo( /*name=*/ "Red Fox", /*level=*/ 5, /*hp=*/ 5000, /*exp=*/ 30, /*attack=*/ 80, /*def=*/ 50, /*defMul=*/ 0.98f, /*rolls=*/ 2, /*minMoney=*/ 2, /*maxMoney=*/ 5) }, { MonsterID.BROWN_SQUIRREL, new MonsterInfo( /*name=*/ "Brown Squirrel", /*level=*/ 6, /*hp=*/ 6250, /*exp=*/ 32, /*attack=*/ 90, /*def=*/ 55, /*defMul=*/ 0.98f, /*rolls=*/ 2, /*minMoney=*/ 2, /*maxMoney=*/ 7) }, { MonsterID.WHITE_FOX, new MonsterInfo( /*name=*/ "White Fox", /*level=*/ 7, /*hp=*/ 6800, /*exp=*/ 34, /*attack=*/ 100, /*def=*/ 50, /*defMul=*/ 0.98f, /*rolls=*/ 2, /*minMoney=*/ 2, /*maxMoney=*/ 5) }, { MonsterID.WHITE_SQUIRREL, new MonsterInfo( /*name=*/ "White Squirrel", /*level=*/ 8, /*hp=*/ 9000, /*exp=*/ 38, /*attack=*/ 100, /*def=*/ 60, /*defMul=*/ 0.98f, /*rolls=*/ 2, /*minMoney=*/ 2, /*maxMoney=*/ 7) }, { MonsterID.HARPY_F, new MonsterInfo( /*name=*/ "Harpy (F)", /*level=*/ 8, /*hp=*/ 5000, /*exp=*/ 40, /*attack=*/ 90, /*def=*/ 60, /*defMul=*/ 0.96f, /*rolls=*/ 2, /*minMoney=*/ 2, /*maxMoney=*/ 7) }, { MonsterID.HALFLING_ROGUE, new MonsterInfo( /*name=*/ "Halfling Rogue", /*level=*/ 9, /*hp=*/ 6500, /*exp=*/ 60, /*attack=*/ 150, /*def=*/ 50, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 8, /*maxMoney=*/ 15) }, { MonsterID.HALFLING_SWORDWIELDER, new MonsterInfo( /*name=*/ "Halfling Swordwielder", /*level=*/ 10, /*hp=*/ 7500, /*exp=*/ 75, /*attack=*/ 180, /*def=*/ 100, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 5, /*maxMoney=*/ 10) }, { MonsterID.HARPY_F_2, new MonsterInfo( /*name=*/ "Angry Harpy (F)", /*level=*/ 11, /*hp=*/ 6000, /*exp=*/ 65, /*attack=*/ 130, /*def=*/ 60, /*defMul=*/ 0.95f, /*rolls=*/ 3, /*minMoney=*/ 3, /*maxMoney=*/ 10) }, { MonsterID.HALFLING_ARCHER, new MonsterInfo( /*name=*/ "Halfling Archer", /*level=*/ 12, /*hp=*/ 7000, /*exp=*/ 75, /*attack=*/ 150, /*def=*/ 80, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 5, /*maxMoney=*/ 10) }, { MonsterID.HALFLING_ROGUE_2, new MonsterInfo( /*name=*/ "Sneaky Halfling Rogue", /*level=*/ 13, /*hp=*/ 7000, /*exp=*/ 85, /*attack=*/ 200, /*def=*/ 100, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 10, /*maxMoney=*/ 20) }, { MonsterID.HARPY_M, new MonsterInfo( /*name=*/ "Harpy (M)", /*level=*/ 14, /*hp=*/ 8000, /*exp=*/ 95, /*attack=*/ 250, /*def=*/ 120, /*defMul=*/ 0.95f, /*rolls=*/ 3, /*minMoney=*/ 5, /*maxMoney=*/ 15) }, { MonsterID.HALFLING_ARCHER_2, new MonsterInfo( /*name=*/ "Decorated Halfling Archer", /*level=*/ 15, /*hp=*/ 10000, /*exp=*/ 100, /*attack=*/ 250, /*def=*/ 150, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 5, /*maxMoney=*/ 15) }, { MonsterID.HALFLING_SWORDWIELDER_2, new MonsterInfo( /*name=*/ "Burly Halfling Swordwielder", /*level=*/ 16, /*hp=*/ 13000, /*exp=*/ 150, /*attack=*/ 350, /*def=*/ 200, /*defMul=*/ 0.90f, /*rolls=*/ 3, /*minMoney=*/ 10, /*maxMoney=*/ 25) }, { MonsterID.HARPY_M_2, new MonsterInfo( /*name=*/ "Angry Harpy (M)", /*level=*/ 16, /*hp=*/ 9000, /*exp=*/ 115, /*attack=*/ 300, /*def=*/ 140, /*defMul=*/ 0.92f, /*rolls=*/ 3, /*minMoney=*/ 10, /*maxMoney=*/ 25) }, { MonsterID.HALFLING_ROGUE_3, new MonsterInfo( /*name=*/ "Shadowy Halfling Rogue", /*level=*/ 17, /*hp=*/ 10000, /*exp=*/ 165, /*attack=*/ 300, /*def=*/ 150, /*defMul=*/ 0.90f, /*rolls=*/ 4, /*minMoney=*/ 20, /*maxMoney=*/ 40) }, { MonsterID.HALFLING_ARCHER_3, new MonsterInfo( /*name=*/ "Expert Halfling Archer", /*level=*/ 18, /*hp=*/ 10500, /*exp=*/ 200, /*attack=*/ 400, /*def=*/ 150, /*defMul=*/ 0.90f, /*rolls=*/ 44, /*minMoney=*/ 10, /*maxMoney=*/ 25) }, { MonsterID.HALFLING_SWORDWIELDER_3, new MonsterInfo( /*name=*/ "Master Halfling Swordwielder", /*level=*/ 19, /*hp=*/ 15000, /*exp=*/ 250, /*attack=*/ 500, /*def=*/ 300, /*defMul=*/ 0.90f, /*rolls=*/ 4, /*minMoney=*/ 15, /*maxMoney=*/ 40) }, { MonsterID.HALFLING_LEADER, new MonsterInfo( /*name=*/ "Halfling Bandit Leader", /*level=*/ 20, /*hp=*/ 500000, /*exp=*/ 2000, /*attack=*/ 1000, /*def=*/ 500, /*defMul=*/ 0.85f, /*rolls=*/ 10, /*minMoney=*/ 50, /*maxMoney=*/ 100) }, // Dense Forest { MonsterID.POSSESSED_FAIRY, new MonsterInfo( /*name=*/ "Possessed Fairy", /*level=*/ 17, /*hp=*/ 30000, /*exp=*/ 300, /*attack=*/ 1000, /*def=*/ 300, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 20, /*maxMoney=*/ 40) }, { MonsterID.POSSESSED_FLOWER, new MonsterInfo( /*name=*/ "Possessed Flower", /*level=*/ 18, /*hp=*/ 30000, /*exp=*/ 150, /*attack=*/ 500, /*def=*/ 300, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 10, /*maxMoney=*/ 20) }, { MonsterID.LOST_SOUL, new MonsterInfo( /*name=*/ "Lost Soul", /*level=*/ 19, /*hp=*/ 40000, /*exp=*/ 230, /*attack=*/ 900, /*def=*/ 500, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.POSSESSED_FAIRY_2, new MonsterInfo( /*name=*/ "Skittish Possessed Fairy", /*level=*/ 20, /*hp=*/ 80000, /*exp=*/ 400, /*attack=*/ 1500, /*def=*/ 500, /*defMul=*/ 0.85f, /*rolls=*/ 3, /*minMoney=*/ 20, /*maxMoney=*/ 50) }, { MonsterID.POSSESSED_MUSHROOM, new MonsterInfo( /*name=*/ "Possessed Mushroom", /*level=*/ 21, /*hp=*/ 40000, /*exp=*/ 200, /*attack=*/ 700, /*def=*/ 400, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 10, /*maxMoney=*/ 25) }, { MonsterID.POSSESSED_FAIRY_3, new MonsterInfo( /*name=*/ "Territorial Possessed Fairy", /*level=*/ 22, /*hp=*/ 100000, /*exp=*/ 550, /*attack=*/ 2000, /*def=*/ 600, /*defMul=*/ 0.85f, /*rolls=*/ 3, /*minMoney=*/ 30, /*maxMoney=*/ 60) }, { MonsterID.LOST_SOUL_2, new MonsterInfo( /*name=*/ "Berating Lost Soul", /*level=*/ 23, /*hp=*/ 60000, /*exp=*/ 300, /*attack=*/ 1200, /*def=*/ 500, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.POSSESSED_FLOWER_2, new MonsterInfo( /*name=*/ "Poisonous Possessed Flower", /*level=*/ 24, /*hp=*/ 70000, /*exp=*/ 350, /*attack=*/ 1400, /*def=*/ 550, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 10, /*maxMoney=*/ 20) }, { MonsterID.VAMPIRE, new MonsterInfo( /*name=*/ "Possessed Vampire", /*level=*/ 25, /*hp=*/ 100000, /*exp=*/ 500, /*attack=*/ 1800, /*def=*/ 800, /*defMul=*/ 0.85f, /*rolls=*/ 3, /*minMoney=*/ 40, /*maxMoney=*/ 65) }, { MonsterID.POSSESSED_FAIRY_4, new MonsterInfo( /*name=*/ "Furious Possessed Fairy", /*level=*/ 23, /*hp=*/ 150000, /*exp=*/ 800, /*attack=*/ 3000, /*def=*/ 1000, /*defMul=*/ 0.80f, /*rolls=*/ 4, /*minMoney=*/ 50, /*maxMoney=*/ 70) }, { MonsterID.LOST_SOUL_3, new MonsterInfo( /*name=*/ "Fiery Lost Soul", /*level=*/ 24, /*hp=*/ 80000, /*exp=*/ 400, /*attack=*/ 1800, /*def=*/ 600, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.VAMPIRE_2, new MonsterInfo( /*name=*/ "Bloody Possessed Vampire", /*level=*/ 25, /*hp=*/ 120000, /*exp=*/ 600, /*attack=*/ 2000, /*def=*/ 800, /*defMul=*/ 0.85f, /*rolls=*/ 3, /*minMoney=*/ 40, /*maxMoney=*/ 65) }, { MonsterID.LOST_SOUL_4, new MonsterInfo( /*name=*/ "Fiery Lost Soul", /*level=*/ 26, /*hp=*/ 90000, /*exp=*/ 450, /*attack=*/ 2000, /*def=*/ 600, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.LOST_SOUL_5, new MonsterInfo( /*name=*/ "Fiery Lost Soul", /*level=*/ 27, /*hp=*/ 100000, /*exp=*/ 500, /*attack=*/ 2200, /*def=*/ 600, /*defMul=*/ 0.85f, /*rolls=*/ 2, /*minMoney=*/ 0, /*maxMoney=*/ 0) }, { MonsterID.HUNTER, new MonsterInfo( /*name=*/ "Hunter", /*level=*/ 28, /*hp=*/ 5000000, /*exp=*/ 5000, /*attack=*/ 4000, /*def=*/ 1000, /*defMul=*/ 0.50f, /*rolls=*/ 10, /*minMoney=*/ 100, /*maxMoney=*/ 150) }, // Grand Star Tower // Rocky Valley // Ryothe City Outskirts // Magician's Academy // Mountain Foot // Mountainside // Dead Horizon }; public static readonly Hashtable LotteryMap = new Hashtable() { // Valley { MonsterID.BROWN_MUSHROOM, new Lottery(new Hashtable() { { ItemSubType.NONE, 50 }, { ItemSubType.ARCHER_TUNIC, 200 }, { ItemSubType.ARCHER_GLOVES, 200 }, { ItemSubType.ARCHER_BOW, 200 }, { ItemSubType.ARCHER_BOOTS, 200 }, { ItemSubType.BANDIT_OUTFIT, 200 }, { ItemSubType.BANDIT_GLOVES, 200 }, { ItemSubType.BANDIT_BOW, 200 }, { ItemSubType.BANDIT_BOOTS, 200 }, { ItemSubType.GREEN_MUSHROOM_SAMPLE, 200 }, { ItemSubType.SPIRIT_WATER, 50 }, { ItemSubType.ENHANCE, 10 }, }) }, { MonsterID.BLUE_MUSHROOM, new Lottery(new Hashtable() { { ItemSubType.NONE, 100 }, { ItemSubType.GREEN_MUSHROOM_SAMPLE, 200 }, { ItemSubType.SPIRIT_WATER, 50 }, { ItemSubType.ENHANCE, 10 }, }) }, { MonsterID.RED_MUSHROOM, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.RED_MUSHROOM_SAMPLE, 200 }, { ItemSubType.SPIRIT_WATER, 50 }, { ItemSubType.ENHANCE, 10 }, }) }, { MonsterID.SLIME, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.BRANCH, 200 }, { ItemSubType.ENHANCE, 10 }, }) }, { MonsterID.RED_FOX, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.FOX_FUR, 200 }, { ItemSubType.ENHANCE, 10 }, { ItemSubType.ARCHER_TUNIC, 3 }, { ItemSubType.ARCHER_BOOTS, 6 }, }) }, { MonsterID.BROWN_SQUIRREL, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.SQUIRREL_FUR, 200 }, { ItemSubType.ENHANCE, 10 }, { ItemSubType.ARCHER_TUNIC, 3 }, { ItemSubType.ARCHER_BOOTS, 6 }, }) }, { MonsterID.WHITE_FOX, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.FOX_FUR, 200 }, { ItemSubType.ENHANCE, 10 }, { ItemSubType.ARCHER_TUNIC, 3 }, { ItemSubType.ARCHER_BOOTS, 8 }, }) }, { MonsterID.WHITE_SQUIRREL, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.SQUIRREL_FUR, 200 }, { ItemSubType.ENHANCE, 10 }, { ItemSubType.ARCHER_TUNIC, 3 }, { ItemSubType.ARCHER_BOOTS, 8 }, }) }, { MonsterID.HARPY_F, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.HARPY_FEATHER, 200 }, { ItemSubType.ENHANCE, 3 }, { ItemSubType.ARCHER_TUNIC, 6 }, }) }, { MonsterID.HALFLING_ROGUE, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.FUZZY_SCARF, 200 }, { ItemSubType.ENHANCE, 20 }, { ItemSubType.BREAD_LOAF, 10 }, { ItemSubType.MUSHROOM_SOUP, 10 }, { ItemSubType.BANDIT_BOOTS, 4 }, { ItemSubType.BANDIT_OUTFIT, 5 }, }) }, { MonsterID.HALFLING_SWORDWIELDER, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SOFT_FABRIC, 200 }, { ItemSubType.ENHANCE, 20 }, { ItemSubType.BREAD_LOAF, 10 }, { ItemSubType.MUSHROOM_SOUP, 10 }, { ItemSubType.BANDIT_BOOTS, 5 }, { ItemSubType.BANDIT_OUTFIT, 4 }, { ItemSubType.GODDESS_BOW, 4000 }, { ItemSubType.GODDESS_DRESS, 4000 }, { ItemSubType.GODDESS_SANDALS, 4000 }, { ItemSubType.GODDESS_CUFFS, 4000 }, }) }, { MonsterID.HARPY_F_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.HARPY_FEATHER, 200 }, { ItemSubType.ENHANCE, 25 }, { ItemSubType.ARCHER_TUNIC, 8 }, }) }, { MonsterID.HALFLING_ARCHER, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 600 }, { ItemSubType.BREASTPLATE, 200 }, { ItemSubType.ENHANCE, 20 }, { ItemSubType.BREAD_LOAF, 10 }, { ItemSubType.MUSHROOM_SOUP, 10 }, { ItemSubType.BANDIT_BOOTS, 7 }, { ItemSubType.BANDIT_OUTFIT, 6 }, { ItemSubType.BANDIT_BOW, 5 }, }) }, { MonsterID.HALFLING_ROGUE_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.FUZZY_SCARF, 200 }, { ItemSubType.ENHANCE, 30 }, { ItemSubType.BREAD_LOAF, 15 }, { ItemSubType.MUSHROOM_SOUP, 15 }, { ItemSubType.BANDIT_BOOTS, 7 }, { ItemSubType.BANDIT_OUTFIT, 4 }, { ItemSubType.BANDIT_BOW, 1 }, }) }, { MonsterID.HARPY_M, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.LARGE_HARPY_FEATHER, 200 }, { ItemSubType.HARPY_FEATHER, 100 }, { ItemSubType.ENHANCE, 30 }, { ItemSubType.BREAD_LOAF, 15 }, { ItemSubType.MUSHROOM_SOUP, 15 }, { ItemSubType.ARCHER_TUNIC, 10 }, }) }, { MonsterID.HALFLING_ARCHER_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 600 }, { ItemSubType.BREASTPLATE, 200 }, { ItemSubType.ENHANCE, 30 }, { ItemSubType.BREAD_LOAF, 15 }, { ItemSubType.MUSHROOM_SOUP, 15 }, { ItemSubType.BANDIT_BOOTS, 4 }, { ItemSubType.BANDIT_OUTFIT, 4 }, { ItemSubType.BANDIT_BOW, 8 }, }) }, { MonsterID.HALFLING_SWORDWIELDER_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SOFT_FABRIC, 200 }, { ItemSubType.ENHANCE, 35 }, { ItemSubType.BREAD_LOAF, 25 }, { ItemSubType.MUSHROOM_SOUP, 25 }, { ItemSubType.BANDIT_BOOTS, 7 }, { ItemSubType.BANDIT_OUTFIT, 7 }, }) }, { MonsterID.HARPY_M_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.LARGE_HARPY_FEATHER, 300 }, { ItemSubType.HARPY_FEATHER, 100 }, { ItemSubType.ENHANCE, 40 }, { ItemSubType.BREAD_LOAF, 15 }, { ItemSubType.MUSHROOM_SOUP, 15 }, { ItemSubType.ARCHER_TUNIC, 10 }, }) }, { MonsterID.HALFLING_ROGUE_3, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 700 }, { ItemSubType.FUZZY_SCARF, 200 }, { ItemSubType.ENHANCE, 35 }, { ItemSubType.BREAD_LOAF, 15 }, { ItemSubType.MUSHROOM_SOUP, 15 }, { ItemSubType.BANDIT_BOOTS, 10 }, { ItemSubType.BANDIT_GLOVES, 2 }, }) }, { MonsterID.HALFLING_ARCHER_3, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 600 }, { ItemSubType.BREASTPLATE, 200 }, { ItemSubType.ENHANCE, 35 }, { ItemSubType.BREAD_LOAF, 20 }, { ItemSubType.MUSHROOM_SOUP, 20 }, { ItemSubType.BANDIT_BOW, 10 }, { ItemSubType.BANDIT_GLOVES, 2 }, }) }, { MonsterID.HALFLING_SWORDWIELDER_3, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SOFT_FABRIC, 200 }, { ItemSubType.ENHANCE, 35 }, { ItemSubType.BREAD_LOAF, 25 }, { ItemSubType.MUSHROOM_SOUP, 25 }, { ItemSubType.BANDIT_OUTFIT, 10 }, { ItemSubType.BANDIT_GLOVES, 2 }, }) }, { MonsterID.HALFLING_LEADER, new Lottery(new Hashtable() { { ItemSubType.MONEY, 1000 }, { ItemSubType.SOFT_FABRIC, 200 }, { ItemSubType.BREASTPLATE, 200 }, { ItemSubType.FUZZY_SCARF, 200 }, { ItemSubType.ENHANCE, 200 }, { ItemSubType.BREAD_LOAF, 200 }, { ItemSubType.MUSHROOM_SOUP, 200 }, { ItemSubType.BANDIT_OUTFIT, 200 }, { ItemSubType.BANDIT_BOOTS, 200 }, { ItemSubType.BANDIT_BOW, 50 }, { ItemSubType.BANDIT_GLOVES, 5 }, { ItemSubType.SPECIAL_FEATHER_PIN, 1 }, }) }, // Dense Forest { MonsterID.POSSESSED_FAIRY, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.FAIRY_DUST, 200 }, { ItemSubType.ENHANCE, 40 }, { ItemSubType.APPLE, 25 }, { ItemSubType.SMALL_SPIRIT, 10 }, { ItemSubType.MUSHROOM_SOUP, 5 }, { ItemSubType.FAIRY_DRESS, 2 }, { ItemSubType.FAIRY_SANDALS, 2 }, }) }, { MonsterID.POSSESSED_FLOWER, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SPIRIT_WATER, 80 }, { ItemSubType.ENHANCE, 40 }, { ItemSubType.SMALL_SPIRIT, 10 }, }) }, { MonsterID.LOST_SOUL, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.ENHANCE, 40 }, }) }, { MonsterID.POSSESSED_FAIRY_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.FAIRY_DUST, 200 }, { ItemSubType.ENHANCE, 50 }, { ItemSubType.APPLE, 30 }, { ItemSubType.SMALL_SPIRIT, 10 }, { ItemSubType.MUSHROOM_SOUP, 5 }, { ItemSubType.FAIRY_DRESS, 3 }, { ItemSubType.FAIRY_SANDALS, 3 }, }) }, { MonsterID.POSSESSED_MUSHROOM, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SPIRIT_WATER, 80 }, { ItemSubType.ENHANCE, 50 }, { ItemSubType.SMALL_SPIRIT, 10 }, }) }, { MonsterID.POSSESSED_FAIRY_3, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.FAIRY_DUST, 200 }, { ItemSubType.ENHANCE, 50 }, { ItemSubType.APPLE, 35 }, { ItemSubType.SMALL_SPIRIT, 10 }, { ItemSubType.MUSHROOM_SOUP, 5 }, { ItemSubType.FAIRY_DRESS, 5 }, { ItemSubType.FAIRY_SANDALS, 5 }, { ItemSubType.FAIRY_BOW, 3 }, { ItemSubType.SPECIAL_FAIRY, 1 }, }) }, { MonsterID.LOST_SOUL_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.ENHANCE, 45 }, }) }, { MonsterID.POSSESSED_FLOWER_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.ENHANCE, 50 }, { ItemSubType.SMALL_SPIRIT, 50 }, }) }, { MonsterID.VAMPIRE, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.BLOOD_VIAL, 200 }, { ItemSubType.ENHANCE, 50 }, { ItemSubType.SMALL_SPIRIT, 50 }, { ItemSubType.APPLE, 35 }, { ItemSubType.BREAD_LOAF, 35 }, { ItemSubType.MUSHROOM_SOUP, 5 }, }) }, { MonsterID.POSSESSED_FAIRY_4, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.FAIRY_DUST, 200 }, { ItemSubType.ENHANCE, 70 }, { ItemSubType.APPLE, 50 }, { ItemSubType.SMALL_SPIRIT, 10 }, { ItemSubType.FAIRY_DRESS, 6 }, { ItemSubType.FAIRY_SANDALS, 6 }, { ItemSubType.FAIRY_BOW, 3 }, { ItemSubType.SPECIAL_FAIRY, 1 }, }) }, { MonsterID.LOST_SOUL_3, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.ENHANCE, 50 }, }) }, { MonsterID.VAMPIRE_2, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.BLOOD_VIAL, 200 }, { ItemSubType.ENHANCE, 60 }, { ItemSubType.SMALL_SPIRIT, 50 }, { ItemSubType.APPLE, 40 }, { ItemSubType.BREAD_LOAF, 40 }, { ItemSubType.MUSHROOM_SOUP, 20 }, { ItemSubType.SPECIAL_FAIRY, 1 }, }) }, { MonsterID.LOST_SOUL_4, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.ENHANCE, 60 }, }) }, { MonsterID.LOST_SOUL_5, new Lottery(new Hashtable() { { ItemSubType.NONE, 500 }, { ItemSubType.MONEY, 500 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.ENHANCE, 60 }, }) }, { MonsterID.HUNTER, new Lottery(new Hashtable() { { ItemSubType.MONEY, 1000 }, { ItemSubType.SMALL_SPIRIT, 200 }, { ItemSubType.BLOOD_VIAL, 200 }, { ItemSubType.FAIRY_DUST, 200 }, { ItemSubType.ENHANCE, 200 }, { ItemSubType.FAIRY_DRESS, 200 }, { ItemSubType.FAIRY_SANDALS, 200 }, { ItemSubType.FAIRY_BOW, 50 }, { ItemSubType.SPECIAL_FAIRY_DUST, 2 }, { ItemSubType.SPECIAL_FAIRY, 1 }, }) }, // Grand Star Tower // Rocky Valley // Ryothe City Outskirts // Magician's Academy // Mountain Foot // Mountainside // Dead Horizon }; }