public static void addDebugModifications(Thing h) { h.set("IsImmortal", 1); h.set("IsDebugMode", 1); if ("QuickTester".equals(h.getString("HeroName"))) { h.addThing(Spell.create("Annihilation")); h.addThing(Spell.create("Blaze")); h.addThing(Spell.create("Ultimate Destruction")); Wish.makeWish("skills", 100); } }
/** * This function awards some bonus items based on the hero's professional skills. * * @param h */ private static void applyBonusItems(Thing h) { if (h.getFlag(Skill.PRAYER)) { Thing t = Lib.create("potion of holy water"); t.set("Number", h.getStat(Skill.PRAYER)); h.addThingWithStacking(t); } if (h.getFlag(Skill.TRADING)) { Thing t = Lib.create("sovereign"); t.set("Number", h.getStat(Skill.TRADING)); h.addThingWithStacking(t); } if (h.getFlag(Skill.WEAPONLORE)) { Thing t = Lib.createType("IsWeapon", RPG.d(2, 6)); h.addThingWithStacking(t); } if (h.getFlag(Skill.COOKING)) { Thing t = Lib.createType("IsFood", 25); t.set("Number", h.getStat(Skill.COOKING)); h.addThingWithStacking(t); } if (h.getFlag(Skill.ARCHERY)) { // a reanged weapon + ammo Thing t = Lib.createType("IsRangedWeapon", RPG.d(h.getStat(Skill.ARCHERY), 6)); Thing ms = RangedWeapon.createAmmo(t, RPG.d(h.getStat(Skill.ARCHERY), 6)); h.addThing(t); h.addThing(ms); } Thing[] ws = h.getFlaggedContents("IsWeapon"); if (ws.length == 0) { h.addThing(Lib.createType("IsWeapon", 1)); } }
private static void applyRace(Thing h, String r) { if (r.equals("human")) { // humans are the most common inhabitants in the world of Tyrant // they are good all-round characters Coin.addMoney(h, 10 * RPG.d(4, 10)); h.addThing(Lib.create("[IsDagger]")); h.addThing(Lib.create("[IsFood]")); } else if (r.equals("dwarf")) { // dwarves are sturdy and industrious cave dwellers // they are famed for their skill in smithing and mining Coin.addMoney(h, 10 * RPG.d(5, 10)); h.addThing(Lib.create("iron hand axe")); h.addThing(Lib.create("loaf of dwarf bread")); } else if (r.equals("hobbit")) { // hobbits are just three feet high // they are peaceful folk, renowned as farmers Coin.addMoney(h, RPG.d(6, 10)); h.addThing(Lib.create("stone knife")); h.addThing(Lib.create("[IsFood]")); h.addThing(Lib.create("[IsFood]")); h.addThing(Lib.create("[IsFood]")); h.addThing(Lib.create("[IsEquipment]")); h.addThing(Lib.create("sling")); h.addThing(Lib.create("10 pebble")); } else if (r.equals("high elf")) { // high elves are noble and wise Coin.addMoney(h, 10 * RPG.d(6, 10)); h.addThing(Lib.create("ornate mithril ring")); h.addThing(Lib.create("elven steel dagger")); } else if (r.equals("wood elf")) { // wood elves are shy of other races // they are agile and talented archers h.addThing(Lib.create("short bow")); h.addThing(Lib.create("lesser elven arrow")); } else if (r.equals("dark elf")) { // dark elves are vicious and powerful // they prefer throwing weapons, darts and shurikens h.addThing(Lib.create("iron dagger")); h.addThing(Lib.create("[IsPotion]")); } else if (r.equals("gnome")) { // gnomes are disadvantage by their small size // they make up for this with igenuity Thing n = Lib.createType("IsMagicItem", 5); Item.identify(n); h.addThing(n); Coin.addMoney(h, 100 * RPG.d(10, 10)); } else if (r.equals("half orc")) { // half orcs are volatile and dangerous h.addThing(Lib.createType("IsWeapon", RPG.d(3))); h.addThing(Lib.create("[IsMeat]")); Coin.addMoney(h, RPG.d(4, 10)); } else if (r.equals("half troll")) { // trolls are lumbering hunks of muscle // with fearsome regenerative powers // they are not very bright h.incStat(RPG.ST_SKILLPOINTS, -1); h.addThing(Lib.createType("IsClub", RPG.d(6))); h.addThing(Lib.create("[IsMeat]")); h.addThing(Lib.create("[IsMeat]")); h.addThing(Lib.create("meat ration")); } else if (r.equals("argonian")) { // some equipment // in line with argonian style h.addThing(Lib.create("[IsTrident]")); h.addThing(Lib.create("[IsMeat]")); h.addThing(Lib.create("[IsFish]")); } else if (r.equals("hawken")) { // some equipment // in line with hawken style h.addThing(Lib.create("[IsDagger]")); h.addThing(Lib.create("[IsMeat]")); Coin.addMoney(h, RPG.d(4, 10)); } else if (r.equals("pensadorian")) { // some equipment // in line with pensadorian style h.addThing(Lib.create("[IsDagger]")); h.addThing(Lib.create("[IsFruit]")); Coin.addMoney(h, RPG.d(4, 10)); } else { throw new Error("Race [" + r + "] not recognised"); } }
private static void applyProfession(Thing h, String p) { h.set("Profession", p); if (p.equals("fighter")) { h.set("Image", 7); h.incStat(RPG.ST_SK, RPG.r(5)); h.incStat(RPG.ST_ST, RPG.r(5)); h.incStat(RPG.ST_AG, RPG.r(4)); h.incStat(RPG.ST_TG, RPG.r(6)); h.incStat(RPG.ST_IN, RPG.r(0)); h.incStat(RPG.ST_WP, RPG.r(0)); h.incStat(RPG.ST_CH, RPG.r(0)); h.incStat(RPG.ST_CR, RPG.r(0)); h.incStat(Skill.ATTACK, 1); h.incStat(Skill.DEFENCE, 1); h.incStat(Skill.UNARMED, RPG.d(2)); h.incStat(Skill.WEAPONLORE, RPG.d(2)); } else if (p.equals("wizard")) { h.set("Image", 6); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(0) - 1); h.incStat(RPG.ST_IN, RPG.r(7)); h.incStat(RPG.ST_WP, RPG.r(5)); h.incStat(RPG.ST_CH, RPG.r(2)); h.incStat(RPG.ST_CR, RPG.r(4)); h.incStat(Skill.IDENTIFY, RPG.r(2)); h.incStat(Skill.LITERACY, RPG.d(3)); h.incStat(Skill.TRUEMAGIC, RPG.d(2)); h.incStat(Skill.CASTING, RPG.d(2)); h.incStat(Skill.FOCUS, RPG.d(2)); h.addThing(Spell.randomOffensiveSpell(Skill.TRUEMAGIC, 3)); h.incStat("Luck", -5); // book and scroll h.addThing(SpellBook.create(Skill.TRUEMAGIC, RPG.d(6))); h.addThing(Lib.create("[IsScroll]")); } else if (p.equals("shaman")) { h.set("Image", 6); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(4)); h.incStat(RPG.ST_WP, RPG.r(4)); h.incStat(RPG.ST_CH, RPG.r(5)); h.incStat(RPG.ST_CR, RPG.r(6)); h.incStat(Skill.IDENTIFY, RPG.r(2)); h.incStat(Skill.LITERACY, RPG.r(2)); h.incStat(Skill.BLACKMAGIC, RPG.d(3)); h.incStat(Skill.CASTING, RPG.d(2)); h.incStat(Skill.HERBLORE, RPG.d(2)); h.addThing(Spell.randomSpell(Skill.BLACKMAGIC, 3)); h.incStat("Luck", 15); // herbs and monster parts for (int i = 0; i < 10; i++) h.addThingWithStacking(Lib.createType("IsHerb", RPG.d(10))); for (int i = 0; i < 6; i++) h.addThingWithStacking(Lib.createType("IsMonsterPart", RPG.d(10))); } else if (p.equals("witch")) { h.set("Image", 32); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(5)); h.incStat(RPG.ST_WP, RPG.r(4)); h.incStat(RPG.ST_CH, RPG.r(4)); h.incStat(RPG.ST_CR, RPG.r(6)); h.incStat(Skill.LITERACY, 1); h.incStat(Skill.BLACKMAGIC, 1); h.incStat(Skill.CASTING, 1); h.incStat(Skill.HERBLORE, RPG.r(3)); h.incStat(Skill.COOKING, RPG.r(3)); for (int i = 0; i < 10; i++) h.addThingWithStacking(Lib.createType("IsHerb", RPG.d(10))); h.addThing(Spell.randomSpell(Skill.BLACKMAGIC, 3)); h.incStat("Luck", 10); h.addThing(Lib.create("[IsScroll]")); h.addThing(SpellBook.create(Skill.BLACKMAGIC, RPG.d(8))); } else if (p.equals("war-mage")) { h.set("Image", 6); h.incStat(RPG.ST_SK, RPG.r(2)); h.incStat(RPG.ST_ST, RPG.r(2)); h.incStat(RPG.ST_AG, RPG.r(2)); h.incStat(RPG.ST_TG, RPG.r(2)); h.incStat(RPG.ST_IN, RPG.r(2)); h.incStat(RPG.ST_WP, RPG.r(4)); h.incStat(RPG.ST_CH, RPG.r(2)); h.incStat(RPG.ST_CR, RPG.r(4)); h.incStat(Skill.LITERACY, 1); h.incStat(Skill.TRUEMAGIC, RPG.r(3)); h.incStat(Skill.HEALING, RPG.d(2)); h.incStat(Skill.CASTING, RPG.d(2)); h.addThing(Spell.randomSpell(Skill.TRUEMAGIC, 3)); h.incStat("Luck", 0); } else if (p.equals("runecaster")) { h.set("Image", 6); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(6)); h.incStat(RPG.ST_WP, RPG.r(5)); h.incStat(RPG.ST_CH, RPG.r(4)); h.incStat(RPG.ST_CR, RPG.r(8)); h.incStat(Skill.ALCHEMY, RPG.r(3)); h.incStat(Skill.HERBLORE, RPG.r(2)); h.incStat(Skill.IDENTIFY, RPG.d(2)); h.incStat(Skill.LITERACY, RPG.d(4)); h.incStat(Skill.RUNELORE, RPG.d(2)); h.incStat("Luck", -10); { Thing n = Lib.create("scroll of Teleport Self"); Item.identify(n); h.addThing(n); } { Thing n = Lib.createType("IsWeaponRunestone", RPG.d(17)); Item.identify(n); h.addThing(n); } for (int i = RPG.d(6); i > 0; i--) { Thing n = Lib.createType("IsRunestone", RPG.d(10)); Item.identify(n); h.addThing(n); } for (int i = RPG.r(3); i > 0; i--) { Thing n = Lib.createType("IsRuneRecipeScroll", RPG.d(10)); Item.identify(n); h.addThing(n); } } else if (p.equals("priest")) { h.set("Image", 11); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(3)); h.incStat(RPG.ST_IN, RPG.r(4)); h.incStat(RPG.ST_WP, RPG.r(8)); h.incStat(RPG.ST_CH, RPG.r(5)); h.incStat(RPG.ST_CR, RPG.r(0)); h.incStat(Skill.PRAYER, RPG.d(2)); h.incStat(Skill.LITERACY, RPG.d(2)); h.incStat(Skill.HOLYMAGIC, RPG.d(2)); h.incStat(Skill.HEALING, RPG.r(3)); h.incStat(Skill.MEDITATION, RPG.r(2)); h.incStat(Skill.FOCUS, RPG.r(2)); h.incStat("Luck", 5); h.addThing(Spell.randomSpell(Skill.HOLYMAGIC, 5)); Thing n = Lib.create("potion of healing"); Item.identify(n); h.addThing(n); } else if (p.equals("healer")) { h.set("Image", 11); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(3)); h.incStat(RPG.ST_IN, RPG.r(4)); h.incStat(RPG.ST_WP, RPG.r(4)); h.incStat(RPG.ST_CH, RPG.r(5)); h.incStat(RPG.ST_CR, RPG.r(4)); h.incStat(Skill.IDENTIFY, RPG.d(2)); h.incStat(Skill.LITERACY, RPG.d(2)); h.incStat(Skill.HEALING, RPG.d(3)); h.incStat(Skill.HERBLORE, RPG.d(2)); h.incStat(Skill.MEDITATION, RPG.r(2)); h.incStat(Skill.FOCUS, RPG.r(2)); h.incStat("Luck", 15); Thing n = Lib.create("potion of healing"); Item.identify(n); h.addThing(n); h.addThing(Lib.create("potion of healing")); h.addThing(Lib.create("potion of healing")); h.addThing(Lib.createType("IsHerb", RPG.d(10))); h.addThing(Lib.createType("IsHerb", RPG.d(10))); h.addThing(Lib.createType("IsHerb", RPG.d(10))); h.addThing(Lib.createType("IsHerb", RPG.d(10))); h.addThing(Lib.createType("IsHerb", RPG.d(10))); } else if (p.equals("bard")) { h.set("Image", 7); h.incStat(RPG.ST_SK, RPG.r(3)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(3)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(3)); h.incStat(RPG.ST_WP, RPG.r(3)); h.incStat(RPG.ST_CH, RPG.r(6)); h.incStat(RPG.ST_CR, RPG.r(6)); h.incStat(Skill.MUSIC, RPG.po(0.5)); h.incStat(Skill.PERCEPTION, 1); h.incStat(Skill.SLEIGHT, RPG.po(0.5)); h.incStat(Skill.STORYTELLING, RPG.po(0.5)); h.incStat(Skill.SEDUCTION, RPG.po(1.2)); h.incStat(Skill.LITERACY, RPG.po(0.8)); h.incStat("Luck", 20); Thing n = Lib.createType("IsRing", 5); Item.identify(n); h.addThing(n); } else if (p.equals("paladin")) { h.set("Image", 7); h.incStat(RPG.ST_SK, RPG.r(4)); h.incStat(RPG.ST_ST, RPG.r(4)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(4)); h.incStat(RPG.ST_IN, RPG.r(4)); h.incStat(RPG.ST_WP, RPG.r(4)); h.incStat(RPG.ST_CH, RPG.r(0)); h.incStat(RPG.ST_CR, RPG.r(0)); h.incStat(Skill.PRAYER, RPG.d(2)); h.incStat(Skill.ATTACK, RPG.r(2)); h.incStat(Skill.DEFENCE, RPG.r(2)); h.incStat(Skill.BRAVERY, RPG.d(3)); h.addThing(Weapon.createWeapon(RPG.d(4))); Thing n = Lib.createType("IsWand", RPG.d(4)); Item.identify(n); h.addThing(n); } else if (p.equals("barbarian")) { h.set("Image", 3); h.incStat(RPG.ST_SK, RPG.r(3)); h.incStat(RPG.ST_ST, RPG.r(3)); h.incStat(RPG.ST_AG, RPG.r(5)); h.incStat(RPG.ST_TG, RPG.r(5)); h.incStat(RPG.ST_IN, RPG.r(0)); h.incStat(RPG.ST_WP, RPG.r(0)); h.incStat(RPG.ST_CH, RPG.r(0)); h.incStat(RPG.ST_CR, RPG.r(0)); h.incStat(RPG.ST_ATTACKSPEED, 10); h.incStat(Skill.ATTACK, RPG.r(2)); h.incStat(Skill.FEROCITY, 1); h.incStat(Skill.ATHLETICS, 1); h.incStat(Skill.ALERTNESS, RPG.r(3)); h.incStat(Skill.SURVIVAL, RPG.d(2)); h.incStat(Skill.PICKPOCKET, RPG.r(2)); h.incStat(Skill.UNARMED, 1); h.incStat(Skill.TRACKING, RPG.r(2)); Thing n = Lib.create("potion of speed"); Item.identify(n); h.addThing(n); } else if (p.equals("thief")) { h.set("Image", 10); h.incStat(RPG.ST_SK, RPG.r(5)); h.incStat(RPG.ST_ST, RPG.r(0)); h.incStat(RPG.ST_AG, RPG.r(6)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(0)); h.incStat(RPG.ST_WP, RPG.r(0)); h.incStat(RPG.ST_CH, RPG.r(4)); h.incStat(RPG.ST_CR, RPG.r(3)); h.incStat(RPG.ST_ATTACKSPEED, 120); h.incStat(Skill.ALERTNESS, RPG.d(3)); h.incStat(Skill.PICKPOCKET, RPG.r(3)); h.incStat(Skill.PICKLOCK, RPG.r(3)); h.incStat(Skill.DISARM, RPG.r(2)); Thing n = Lib.create("wand of Teleport Self"); Item.identify(n); h.addThing(n); } else if (p.equals("ranger")) { h.set("Image", 10); h.incStat(RPG.ST_SK, RPG.r(8)); h.incStat(RPG.ST_ST, RPG.r(3)); h.incStat(RPG.ST_AG, RPG.r(6)); h.incStat(RPG.ST_TG, RPG.r(0)); h.incStat(RPG.ST_IN, RPG.r(0)); h.incStat(RPG.ST_WP, RPG.r(0)); h.incStat(RPG.ST_CH, RPG.r(4)); h.incStat(RPG.ST_CR, RPG.r(0)); h.incStat(Skill.ARCHERY, RPG.r(3)); h.incStat(Skill.THROWING, RPG.r(3)); h.incStat(Skill.SURVIVAL, RPG.d(1)); h.incStat(Skill.SWIMMING, RPG.r(2)); h.incStat(Skill.RIDING, RPG.r(2)); h.incStat(Skill.TRACKING, RPG.d(3)); Thing n = Lib.create("healing potion"); h.addThing(n); } else if (p.equals("farmer")) { h.set("Image", 10); h.incStat(RPG.ST_SK, RPG.r(0)); h.incStat(RPG.ST_ST, RPG.r(4)); h.incStat(RPG.ST_AG, RPG.r(0)); h.incStat(RPG.ST_TG, RPG.r(4)); h.incStat(RPG.ST_IN, RPG.r(0)); h.incStat(RPG.ST_WP, RPG.r(6)); h.incStat(RPG.ST_CH, RPG.r(4)); h.incStat(RPG.ST_CR, RPG.r(6)); h.incStat(Skill.THROWING, RPG.r(3)); h.incStat(Skill.SURVIVAL, RPG.r(3)); h.incStat(Skill.SWIMMING, RPG.r(2)); h.incStat(Skill.COOKING, RPG.r(3)); h.incStat(Skill.HERBLORE, RPG.d(2)); // a healing potion Thing n = Lib.create("potion of healing"); Item.identify(n); h.addThing(n); } else { throw new Error("Profession [" + p + "] not recognised"); } }