private void kobolds() { group("k", speed: 2, meander: 4, flags: "cowardly"); breed("forest sprite", lightGreen, 8, new List <object>() { new Attack("scratch[es]", 4), MoveFactory.teleport(range: 6) }, drop: new List <Drop>() { DropFactory.PercentDrop(20, "magic", 1) }); breed("house sprite", lightBlue, 15, new List <object>() { new Attack("poke[s]", 8), MoveFactory.teleport(range: 6) }, drop: new List <Drop>() { DropFactory.PercentDrop(20, "magic", 6) }); breed("mischievous sprite", lightRed, 24, new List <object>() { new Attack("stab[s]", 9), MoveFactory.sparkBolt(rate: 8, damage: 8), MoveFactory.poisonBolt(rate: 15, damage: 10), MoveFactory.teleport(range: 8) }, drop: new List <Drop>() { DropFactory.PercentDrop(40, "magic", 8) }); breed("scurrilous imp", lightRed, 18, new List <object>() { new Attack("club[s]", 4), MoveFactory.insult(), MoveFactory.haste() }, drop: new List <Drop>() { DropFactory.PercentDrop(10, "club", 1), DropFactory.PercentDrop(5, "speed", 1), }, meander: 4, flags: "cowardly"); breed("vexing imp", purple, 19, new List <object>() { new Attack("scratch[es]", 4), MoveFactory.insult(), MoveFactory.sparkBolt(rate: 5, damage: 6) }, drop: DropFactory.PercentDrop(10, "teleportation", 1), meander: 2, speed: 1, flags: "cowardly"); breed("kobold", red, 16, new List <object>() { new Attack("poke[s]", 4), MoveFactory.teleport(rate: 6, range: 6) }, drop: new List <Drop>() { DropFactory.PercentDrop(30, "magic", 7) }, meander: 2, flags: "group"); breed("kobold shaman", blue, 16, new List <object>() { new Attack("hit[s]", 4), MoveFactory.teleport(rate: 5, range: 6), MoveFactory.waterBolt(rate: 5, damage: 6) }, drop: new List <Drop>() { DropFactory.PercentDrop(40, "magic", 7) }, meander: 2); breed("kobold trickster", gold, 20, new List <object>() { new Attack("hit[s]", 5), MoveFactory.sparkBolt(rate: 5, damage: 8), MoveFactory.teleport(rate: 5, range: 6), MoveFactory.haste(rate: 7) }, drop: new List <Drop>() { DropFactory.PercentDrop(40, "magic", 7) }, meander: 2); breed("kobold priest", white, 25, new List <object>() { new Attack("club[s]", 6), MoveFactory.heal(rate: 15, amount: 10), MoveFactory.fireBolt(rate: 10, damage: 8), MoveFactory.teleport(rate: 5, range: 6), MoveFactory.haste(rate: 7) }, drop: new List <Drop>() { DropFactory.PercentDrop(30, "club", 10), DropFactory.PercentDrop(40, "magic", 7) }, meander: 2); breed("imp incanter", lightPurple, 18, new List <object>() { new Attack("scratch[es]", 4), MoveFactory.insult(), MoveFactory.fireBolt(rate: 5, damage: 10) }, drop: DropFactory.PercentDrop(20, "magic", 1), meander: 4, speed: 1, flags: "cowardly"); breed("imp warlock", darkPurple, 40, new List <object>() { new Attack("stab[s]", 5), MoveFactory.iceBolt(rate: 8, damage: 12), MoveFactory.fireBolt(rate: 8, damage: 12) }, drop: DropFactory.PercentDrop(20, "magic", 4), meander: 3, speed: 1, flags: "cowardly"); // TODO: Always drop something good. breed("Feng", orange, 60, new List <object>() { new Attack("stab[s]", 5), MoveFactory.teleport(rate: 5, range: 6), MoveFactory.teleport(rate: 50, range: 30), MoveFactory.insult(), MoveFactory.lightningCone(rate: 8, damage: 12) }, drop: DropFactory.PercentDrop(20, "magic", 4), meander: 3, speed: 1, flags: "cowardly"); // homonculous }
private void goblins() { group("g", meander: 1, flags: "open-doors"); breed("goblin peon", lightBrown, 20, new List <object>() { new Attack("stab[s]", 5) }, drop: new List <Drop>() { DropFactory.PercentDrop(10, "spear", 3), DropFactory.PercentDrop(5, "healing", 2), }, meander: 2, flags: "few"); breed("goblin archer", green, 22, new List <object>() { new Attack("stab[s]", 3), MoveFactory.arrow(rate: 3, damage: 4) }, drop: new List <Drop>() { DropFactory.PercentDrop(20, "bow", 1), DropFactory.PercentDrop(10, "dagger", 2), DropFactory.PercentDrop(5, "healing", 3), }, flags: "few"); breed("goblin fighter", brown, 30, new List <object>() { new Attack("stab[s]", 7) }, drop: new List <Drop>() { DropFactory.PercentDrop(15, "spear", 5), DropFactory.PercentDrop(10, "armor", 5), DropFactory.PercentDrop(5, "resistance", 3), DropFactory.PercentDrop(5, "healing", 3), }); breed("goblin warrior", gray, 42, new List <object>() { new Attack("stab[s]", 10) }, drop: new List <Drop>() { DropFactory.PercentDrop(20, "axe", 6), DropFactory.PercentDrop(20, "armor", 6), DropFactory.PercentDrop(5, "resistance", 3), DropFactory.PercentDrop(5, "healing", 3), }, flags: "protective"); breed("goblin mage", blue, 30, new List <object>() { new Attack("whip[s]", 7), MoveFactory.fireBolt(rate: 12, damage: 6), MoveFactory.sparkBolt(rate: 12, damage: 8), }, drop: new List <Drop>() { DropFactory.PercentDrop(10, "equipment", 5), DropFactory.PercentDrop(10, "whip", 5), DropFactory.PercentDrop(20, "magic", 6), }); breed("goblin ranger", darkGreen, 36, new List <object>() { new Attack("stab[s]", 10), MoveFactory.arrow(rate: 3, damage: 8) }, drop: new List <Drop>() { DropFactory.PercentDrop(30, "bow", 11), DropFactory.PercentDrop(20, "armor", 8), DropFactory.PercentDrop(20, "magic", 8) }); // TODO: Always drop something good. breed("Erlkonig, the Goblin Prince", darkGray, 80, new List <object>() { new Attack("hit[s]", 10), new Attack("slash[es]", 14), MoveFactory.darkBolt(rate: 20, damage: 10), }, drop: new List <Drop>() { DropFactory.PercentDrop(60, "equipment", 10), DropFactory.PercentDrop(60, "equipment", 10), DropFactory.PercentDrop(40, "magic", 12), }, flags: "protective"); }