Exemple #1
0
 @Override
 public void affectCharStats(MOB affected, CharStats affectableStats) {
   super.affectCharStats(affected, affectableStats);
   affectableStats.setStat(
       CharStats.STAT_SAVE_MIND,
       affectableStats.getStat(CharStats.STAT_SAVE_MIND)
           + (2 * affectableStats.getClassLevel(this)));
 }
Exemple #2
0
 @Override
 public void level(MOB mob, List<String> newAbilityIDs) {
   super.level(mob, newAbilityIDs);
   if (CMSecurity.isDisabled(CMSecurity.DisFlag.LEVELS)) return;
   final int attArmor =
       (((int) Math.round(CMath.div(mob.charStats().getStat(CharStats.STAT_DEXTERITY), 9.0))) + 1);
   mob.tell(L("^NYour grace grants you a defensive bonus of ^H@x1^?.^N", "" + attArmor));
 }
Exemple #3
0
  @Override
  public void grantAbilities(MOB mob, boolean isBorrowedClass) {
    super.grantAbilities(mob, isBorrowedClass);

    if (mob.playerStats() == null) {
      final List<AbilityMapper.AbilityMapping> V =
          CMLib.ableMapper()
              .getUpToLevelListings(ID(), mob.charStats().getClassLevel(ID()), false, false);
      for (final AbilityMapper.AbilityMapping able : V) {
        final Ability A = CMClass.getAbility(able.abilityID);
        if ((A != null)
            && ((A.classificationCode() & Ability.ALL_ACODES) == Ability.ACODE_CHANT)
            && (!CMLib.ableMapper().getDefaultGain(ID(), true, A.ID())))
          giveMobAbility(
              mob,
              A,
              CMLib.ableMapper().getDefaultProficiency(ID(), true, A.ID()),
              CMLib.ableMapper().getDefaultParm(ID(), true, A.ID()),
              isBorrowedClass);
      }
      return;
    }

    final Vector grantable = new Vector();

    final int level = mob.charStats().getClassLevel(this);
    int numChants = 2;
    for (final Enumeration<Ability> a = CMClass.abilities(); a.hasMoreElements(); ) {
      final Ability A = a.nextElement();
      if ((CMLib.ableMapper().getQualifyingLevel(ID(), true, A.ID()) == level)
          && ((CMLib.ableMapper().getQualifyingLevel(ID(), true, A.ID()) <= 25)
              && (!CMLib.ableMapper().getSecretSkill(ID(), true, A.ID()))
              && (!CMLib.ableMapper().getDefaultGain(ID(), true, A.ID()))
              && ((A.classificationCode() & Ability.ALL_ACODES) == Ability.ACODE_CHANT))) {
        if (!grantable.contains(A.ID())) grantable.addElement(A.ID());
      }
    }
    for (int a = 0; a < mob.numAbilities(); a++) {
      final Ability A = mob.fetchAbility(a);
      if (grantable.contains(A.ID())) {
        grantable.remove(A.ID());
        numChants--;
      }
    }
    for (int i = 0; i < numChants; i++) {
      if (grantable.size() == 0) break;
      final String AID = (String) grantable.elementAt(CMLib.dice().roll(1, grantable.size(), -1));
      if (AID != null) {
        grantable.removeElement(AID);
        giveMobAbility(
            mob,
            CMClass.getAbility(AID),
            CMLib.ableMapper().getDefaultProficiency(ID(), true, AID),
            CMLib.ableMapper().getDefaultParm(ID(), true, AID),
            isBorrowedClass);
      }
    }
  }
Exemple #4
0
 @Override
 public void affectCharState(MOB affected, CharState affectableState) {
   super.affectCharState(affected, affectableState);
   if (affected.location() != null)
     for (int i = 0; i < affected.location().numItems(); i++) {
       final Item I = affected.location().getItem(i);
       if ((I != null) && (I.ID().equals("DruidicMonument")))
         affectableState.setMana(affectableState.getMana() + (affectableState.getMana() / 2));
     }
 }
Exemple #5
0
 @Override
 public void affectPhyStats(Physical affected, PhyStats affectableStats) {
   super.affectPhyStats(affected, affectableStats);
   if (affected instanceof MOB) {
     if (CMLib.flags().isStanding((MOB) affected)) {
       final MOB mob = (MOB) affected;
       final int attArmor =
           (((int) Math.round(CMath.div(mob.charStats().getStat(CharStats.STAT_DEXTERITY), 9.0)))
                   + 1)
               * (mob.charStats().getClassLevel(this) - 1);
       affectableStats.setArmor(affectableStats.armor() - attArmor);
     }
   }
 }
Exemple #6
0
 @Override
 public void executeMsg(Environmental host, CMMsg msg) {
   if (host instanceof MOB) {
     final MOB myChar = (MOB) host;
     if (msg.amISource(myChar)
         && (msg.tool() instanceof Ability)
         && (!myChar.isMonster())
         && (msg.sourceMinor() == CMMsg.TYP_PREINVOKE)
         && (myChar.isMine(msg.tool()))
         && (myChar.charStats().getClassLevel(this) >= 30)
         && (CMLib.ableMapper().getQualifyingLevel(ID(), true, msg.tool().ID()) < 1))
       invokable = new WeakReference(msg.tool());
   }
   super.executeMsg(host, msg);
   Bard.visitationBonusMessage(host, msg);
 }
Exemple #7
0
 @Override
 public void grantAbilities(MOB mob, boolean isBorrowedClass) {
   super.grantAbilities(mob, isBorrowedClass);
   if (mob.playerStats() == null) {
     final List<AbilityMapper.AbilityMapping> V =
         CMLib.ableMapper()
             .getUpToLevelListings(ID(), mob.charStats().getClassLevel(ID()), false, false);
     for (final AbilityMapper.AbilityMapping able : V) {
       final Ability A = CMClass.getAbility(able.abilityID);
       if ((A != null)
           && ((A.classificationCode() & Ability.ALL_ACODES) == Ability.ACODE_SONG)
           && (!CMLib.ableMapper().getDefaultGain(ID(), true, A.ID())))
         giveMobAbility(
             mob,
             A,
             CMLib.ableMapper().getDefaultProficiency(ID(), true, A.ID()),
             CMLib.ableMapper().getDefaultParm(ID(), true, A.ID()),
             isBorrowedClass);
     }
   }
 }
Exemple #8
0
 @Override
 public void executeMsg(Environmental host, CMMsg msg) {
   super.executeMsg(host, msg);
   Druid.doAnimalFollowerLevelingCheck(this, host, msg);
   Druid.doAnimalFreeingCheck(this, host, msg);
 }
Exemple #9
0
  @Override
  public void initializeClass() {
    super.initializeClass();
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Write", 0, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Recall", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Revoke", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_WandUse", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Swim", 100, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Climb", 100, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Natural", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Staff", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Herbology", 0, false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Druidic", 75, true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Druid_DruidicPass", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Druid_ShapeShift", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Druid_MyPlants", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Chant_PredictWeather", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Chant_BestowName", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Chant_SummonPlants", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Chant_HardenSkin", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_WildernessLore", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Chant_SummonWater", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Chant_LocatePlants", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Chant_SensePoison", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Chant_SummonFood", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Chant_Moonbeam", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Chant_RestoreMana", 0, "", false, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Chant_SenseLife", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Chant_Tangle", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Chant_SummonFire", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Chant_LocateAnimals", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Chant_FortifyFood", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Chant_Farsight", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Chant_FeelElectricity", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Chant_CalmAnimal", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Chant_Sunray", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Chant_Treeform", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Chant_Goodberry", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Chant_Hunger", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Chant_FeelCold", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Chant_NaturalBalance", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Chant_WarpWood", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Chant_ControlFire", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Chant_VenomWard", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Chant_CalmWind", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Chant_Barkskin", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Chant_WaterWalking", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Chant_AnimalFriendship", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Chant_FeelHeat", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Chant_GrowClub", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Chant_Brittle", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Chant_PlantPass", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Chant_WindGust", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Chant_Poison", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Chant_Treemind", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Chant_WhisperWard", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Chant_BreatheWater", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Chant_HoldAnimal", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Chant_PlantBed", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Chant_LightningWard", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Chant_ColdWard", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Chant_Bury", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Chant_IllusionaryForest", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Chant_Hippieness", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Herbalism", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Chant_Fertilization", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Chant_CharmAnimal", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Chant_CalmWeather", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "PlantLore", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Chant_FireWard", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Chant_Shillelagh", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Chant_SummonPeace", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Chant_Plague", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Chant_DistantGrowth", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Chant_Earthquake", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Chant_PlantMaze", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Chant_GasWard", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Chant_Hibernation", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Chant_Reabsorb", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Chant_SummonAnimal", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Chant_Nectar", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Chant_SummonHeat", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Chant_SenseSentience", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Scrapping", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Chant_Grapevine", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Chant_SummonCold", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Chant_SummonInsects", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Chant_AnimalSpy", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Chant_SummonRain", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Chant_PlantSnare", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Chant_SensePregnancy", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Chant_SenseFluids", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Chant_Treemorph", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Chant_SummonWind", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Chant_NeutralizePoison", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Chant_FindPlant", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Chant_SensePlants", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Chant_GrowItem", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Chant_SummonLightning", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Chant_SummonMount", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Chant_FindOre", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Chant_SenseOres", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_CharmArea", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_SummonElemental", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_SummonFear", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_SenseAge", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_FindGem", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Chant_SenseGems", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Chant_SpeedTime", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Chant_SummonSapling", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Chant_Feralness", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 30, "Chant_Reincarnation", true);
  }
Exemple #10
0
 @Override
 public void executeMsg(Environmental host, CMMsg msg) {
   super.executeMsg(host, msg);
   Bard.visitationBonusMessage(host, msg);
 }
Exemple #11
0
  @Override
  public void initializeClass() {
    super.initializeClass();
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Natural", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Ranged", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Sword", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Recall", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Write", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Swim", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Befriend", 50, true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Dance_Stop", 100, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Dance_CanCan", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Thief_Lore", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Dance_Foxtrot", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Fighter_Kick", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Skill_Climb", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Dance_Tarantella", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Thief_Appraise", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Dance_Waltz", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Skill_Dodge", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Dance_Salsa", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Dance_Grass", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Dance_Clog", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Thief_Distract", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Dance_Capoeira", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Dance_Tap", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Dance_Swing", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Skill_Disarm", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Dance_Basse", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Fighter_BodyFlip", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Dance_Tango", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Fighter_Spring", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Dance_Polka", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Dance_RagsSharqi", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Dance_Manipuri", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Skill_Trip", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Dance_Cotillon", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Skill_TwoWeaponFighting", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Dance_Ballet", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Fighter_Tumble", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Dance_Jitterbug", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Dance_Butoh", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Skill_Attack2", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Dance_Courante", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Dance_Musette", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Fighter_Endurance", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Fighter_Cartwheel", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Dance_Swords", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Dance_Flamenco", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Fighter_Roll", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Dance_Jingledress", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Dance_Morris", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Fighter_BlindFighting", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Dance_Butterfly", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Dance_Macabre", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Fighter_CircleTrip", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Dance_War", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 30, "Dance_Square", true);
  }
Exemple #12
0
  @Override
  public void grantAbilities(MOB mob, boolean isBorrowedClass) {
    super.grantAbilities(mob, isBorrowedClass);

    // if he already has one, don't give another!
    if (mob.playerStats() != null) {
      final int classLevel = mob.baseCharStats().getClassLevel(this);
      if (classLevel < 2) return;
      if ((classLevel % 2) != 0) return;

      int maxSkills = classLevel / 2;

      // now only give one, for current level, respecting alignment!
      // first, get a list of all skills you don't qualify for that you MIGHT have gained or will
      // gain
      final List<Ability> choices = new Vector<Ability>();
      for (final Enumeration<Ability> a = CMClass.abilities(); a.hasMoreElements(); ) {
        final Ability A = a.nextElement();
        final int lql = CMLib.ableMapper().lowestQualifyingLevel(A.ID());
        if ((CMLib.ableMapper().qualifyingLevel(mob, A) <= 0)
            && (lql < 25)
            && (lql > 0)
            && (!CMLib.ableMapper().getSecretSkill(A.ID()))
            && (CMLib.ableMapper().qualifiesByAnyCharClass(A.ID()))
            && (CMLib.ableMapper().availableToTheme(A.ID(), Area.THEME_FANTASY, true))
            && (!CMLib.ableMapper().qualifiesOnlyByClan(mob, A))
            && (!CMLib.ableMapper().qualifiesOnlyByRace(mob, A))
            && (A.isAutoInvoked()
                || ((A.triggerStrings() != null) && (A.triggerStrings().length > 0))))
          choices.add(A);
      }

      // now count those you already have
      for (int a = choices.size() - 1; a >= 0; a--) {
        final Ability A = choices.get(a);
        if (mob.fetchAbility(A.ID()) != null) maxSkills--;
      }
      if (maxSkills < 1) // if that reduced you to 0, you are done.
      return;
      // now eliminate those you already have, and those that are
      // above your level, if you are <25
      for (int a = choices.size() - 1; a >= 0; a--) {
        final Ability A = choices.get(a);
        final int lql = CMLib.ableMapper().lowestQualifyingLevel(A.ID());
        if ((mob.fetchAbility(ID()) != null)
            || ((lql != classLevel) && (lql != classLevel - 1) && (classLevel < 25)))
          choices.remove(a);
      }
      if (choices.size() == 0) return;
      final Ability A = choices.get(CMLib.dice().roll(1, choices.size(), -1));
      if (A != null) giveMobAbility(mob, A, 0, "", isBorrowedClass);
    } else {
      final List<AbilityMapper.AbilityMapping> V =
          CMLib.ableMapper()
              .getUpToLevelListings(ID(), mob.charStats().getClassLevel(ID()), false, false);
      for (final AbilityMapper.AbilityMapping able : V) {
        final Ability A = CMClass.getAbility(able.abilityID);
        if ((A != null)
            && (!CMLib.ableMapper().getAllQualified(ID(), true, A.ID()))
            && (!CMLib.ableMapper().getDefaultGain(ID(), true, A.ID())))
          giveMobAbility(
              mob,
              A,
              CMLib.ableMapper().getDefaultProficiency(ID(), true, A.ID()),
              CMLib.ableMapper().getDefaultParm(ID(), true, A.ID()),
              isBorrowedClass);
      }
    }
  }
Exemple #13
0
  @Override
  public void initializeClass() {
    super.initializeClass();
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Natural", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Ranged", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_EdgedWeapon", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Specialization_Sword", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Recall", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Write", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Swim", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Befriend", 50, true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Song_Nothing", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 1, "Skill_Haggle", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Thief_Swipe", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 2, "Skill_Revoke", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Skill_Disguise", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Skill_Climb", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 3, "Thief_Hide", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Thief_Mark", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 4, "Song_Charm", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Fighter_Rescue", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 5, "Skill_StrikeTheSet", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Skill_Songcraft", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 6, "Spell_ReadMagic", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Skill_Imitation", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 7, "Skill_CastBlocking", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Thief_Distract", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 8, "Skill_WandUse", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Skill_Warrants", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 9, "Skill_BreakALeg", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Skill_Dodge", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 10, "Song_Detection", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Skill_FalseArrest", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 11, "Song_Comprehension", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Skill_Spellcraft", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Ranger_Track", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Spell_MagicMissile", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 12, "Song_Rage", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Skill_Map", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 13, "Skill_Trip", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Thief_AnalyzeMark", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 14, "Skill_Upstage", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Skill_Chantcraft", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 15, "Song_Protection", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Skill_Shuffle", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 16, "Skill_ExitStageLeft", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Skill_Attack2", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 17, "Chant_SummonPlants", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Skill_Prayercraft", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Prayer_CureLight", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 18, "Song_Mana", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Song_Knowledge", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 19, "Skill_CurtainCall", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Thief_Detection", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 20, "Skill_Monologue", true);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Song_Thanks", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 21, "Spell_LocateObject", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Skill_Parry", false);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 22, "Skill_AdLib", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Thief_Con", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 23, "Song_Strength", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Song_Disgust", true);
    CMLib.ableMapper().addCharAbilityMapping(ID(), 24, "Thief_FrameMark", false);

    CMLib.ableMapper().addCharAbilityMapping(ID(), 25, "Skill_MarkDisguise", true);

    // 30 -- cheaper skills
  }