Esempio n. 1
0
  data.recruit = _.map(data.recruit, function (recruit) {
    // attach monster data for this recruit
    monster = _.find(data.monster, { name : recruit.species });

    if (monster) {
      recruit = _.merge({}, monster, recruit);
      recruit.status = helpers.fixStatus(recruit.status);

      return recruit;

    } else {
      throw new Error('Unable to find monster data for recruit ' + recruit.name + ', species: ' + recruit.species);
    }
  });
Esempio n. 2
0
  _.each(data[type], function (member) {
    member.type = type;

    member.experience = Math.max(member.experience, 0);
    member.gold = Math.max(member.gold, 0);

    // make sure base STR/AGI are in-bounds
    member.base_strength = Math.min(member.base_strength, max_stat['base_strength']);
    member.base_agility = Math.min(member.base_agility, max_stat['base_agility']);

    helpers.recalculateStats(data, member);

    // run_fac (only used for PvP)
    member.run_fac   = 1;
    member.run_score = function () {
        return (parseInt(this.run_fac * this.curr_agility, 10) || 1);
    };

    // resist
    _.each(member.resist, function (base_value, key) {
      member.resist[key] = helpers.calculateStatBoost('resist.' + key, base_value, data, member);
      member.resist[key] = Math.max(member.resist[key], 0);
    });

    // saver
    member.saver = { burn : false, phys : false, ment : false };
    _.each(member.saver, function (value, key) {
      member.saver[key] = helpers.calculateStatBoost('saver.' + key, false, data, member);
    });

    // is_cursed
    member.is_cursed = helpers.calculateStatBoost('is_cursed', false, data, member);
    // target_group
    member.target_group = helpers.calculateStatBoost('target_group', false, data, member);
    // target_all
    member.target_all = helpers.calculateStatBoost('target_all', false, data, member);
    // hits (minimum of 1 and maximum of 2)
    member.hits = helpers.calculateStatBoost('double_hit', false, data, member) ? 2 : 1;
  
    // status should be an array
    member.status = helpers.fixStatus(member.status);

    // effects should be an array
    if (member.effects) {
      member.effects = _.compact(_.map(member.effects.split(';'), function (effect) { return effect.trim(); }));
    } else {
      member.effects = [];
    }

    // abilities should be an array
    if (member.abilities) {
      member.abilities = _.compact(_.map(member.abilities.split(';'), function (ability) { return ability.trim(); }));
    } else {
      member.abilities = [];
    }

    // sanitize lottery tickets
    if (member.loto3) {
      member.loto3 = _.map(member.loto3, function (ticket) { return ticket.replace(/\s/g, ''); });
    }
    if (member.bol) {
      member.bol = _.map(member.bol, function (ticket) { return ticket.replace(/\s/g, ''); });
    }

    member.displayName = function () {
      return (this.name + (this.symbol || ''));
    }
  });