示例#1
1
  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);
    }
  }
示例#2
0
  /**
   * 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));
    }
  }
示例#3
0
  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");
    }
  }
示例#4
0
  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");
    }
  }