From The Mana World
Revision as of 13:39, 16 May 2010 by Freeyorp (talk | contribs) (Further expansion)

Sketchbook for systems

This page is intended for rough working while systems are being worked on.


General LHS stat purposes

Stat Primary Secondary Tertiary Additional
Strength Carrying capacity Used to determine the base damage in many conventional melee weapons
Agility Attack speed Base conventional dodge Movement speed
Vitality Max hp Conventional defense Hp regeneration
Intelligence Max sp Spell cooldown rate Used to determine the power of many specials
Dexterity Conventional accuracy Warmup/cooldown split for auto attack Used to determine the base damage in many conventional ranged weapons
Willpower Base magical dodge Sp regen Warmup/cooldown split for special activation

Systems

  • Stackable attribute means all modifiers of this type contribute to the final value.
  • Non stackable attribute means that the character will automatically use the highest modifier of this type. Malus effects are still stackable unless otherwise stated.
  • Non stackable bonus attribute means that the character will automatically use the highest bonus modifier of this type, though the base attribute is still stackable. Malus effects are still stackable unless otherwise stated.
  • Elemental alignment can be one of A, B, C, D, E or Neutral. (Fire, Water, Nature, Ice, Spirit?)
  • Damage type can be one of Conventional damage, Magical damage, or Direct damage.
    • Conventional damage is the standard damage type. It is generally dealt by all players from their auto attack. It is subject to:
      • Avoidance on a chance based on the non-stackable bonus attribute conventional dodge
      • Consistent reduction through the stackable attribute conventional defense
      • It is undecided whether any block reduction will be implemented at present.
    • Magical damage is encountered less often than conventional damage, but is still very common. It is dealt by most attack specials that do not deal conventional damage, and some later items may give a chance to proc magic damage on certain triggers (when attacking, when attacked, passive on skill usage etc). It is subject to:
      • Avoidance on a chance based on the stackable attribute magic dodge (alternative terms welcome. Spell resistance?)
      • Consistent reduction through the non-stackable bonus attribute magic defense.
    • Direct damage should be used sparingly, intended for use in scripts or maybe in very high-level late-game items. It is not subject to any form of reduction or avoidance, and cannot proc any trigger when attacked with it.
  • Conventional dodge is a non-stackable bonus attribute. Conventional dodge is calculated on a curve based on agility and the highest dodge attribute modifier.
Formula: TODO
  • Conventional defense is a stackable attribute. Conventional defense is calculated on a curve based on the sum of all current defense attribute modifiers and, to a lesser extent, the vitality stat.
Formulae:
Defense = (Sum of all current defense attribute modifiers) + 0.3 * Vitality
Conventional damage reduction: damage = damage * (1.0 - (0.0159375f * defense) / (1.0 + 0.017 * defense)) + random(damage >> 4)
Formula for negative defense (when a character has active malus effects, for example?)
  • Magic defense is a non-stackable bonus attribute. Magic defense is calculated on a curve based on the highest magic defense attribute modifier.
Formula: TODO (Not needed for CR1)
Notes:
A character should have roughly a quarter magic damage reduction without any special equipment or malus effects active.
  • Magic dodge (name?) is a stackable attribute. Magic dodge is calculated linearly based on all active modifiers and willpower.
Formula: TODO (Not needed for CR1)
Notes:
The curve here should be rather steep. It should be difficult for anyone of a few dozen points lower than the target to hit the target, and difficult for anyone of a few points higher to miss.
Elemental alignments significantly affect this. When someone of any given elemental alignment attack an elemental alignment with a vulnerability to this, the curve should only affect the chance to hit within roughly a 60-97% range, rather than extending a near-full range such as 3%-97%. The converse is not true, however.
Attacking a target that has a neutral alignment should set the hit range to around 40%-97% unless the attack is also neutral.
All indicated ranges are generally skewed to favour the higher values.
  • Base attack is externalized to a per-item basis.
The base attack for auto-attack is based on the presently equipped weapon. The core value, skill delta, skill variance, skill average, and stat growth are all specified per-weapon. Most stat growth will be based on at least one of Strength or Dexterity. Other LHS stats may also have a role, but serious justification would be needed when neither Strength nor Dexterity is the primary stat used.
Formula:
Base_attack (pseudo-code):
for (i = STAT_MAX; i; --i) if (weapon->t_data.w->d_boni[i] && pc->stats[i]) base_attack += weapon->t_data.w->d_boni[i] * pc->stats[i];
if (weapon->t_data.w->skill_delta_factor) base_attack = (int) (base_attack * (weapon->t_data.w->skill_min_factor + weapon->t_data.w->skill_delta_factor * exp(weapon.t_data.w->skill_exp_factor * -exp(-0.04 * pc->getskill_lv(skill)))));
else if (weapon->t_data.w->skill_min_factor - 1) base_attack = (int) (base_attack * weapon->t_data.w->skill_min_factor);
  • Attack speed is a stackable attribute. Attack speed is calculated on a curve based on primarily on agility and attack speed bonuses from exclusive items, such as weapons, and to a lesser extent, other items.
    • Base attack speed is the attack speed component from attributes and the weapon.
    • Bonus attack speed is the attack speed component from addition active boni
Formulae:
Attack speed (raw) = (int) ((double) Agi * (weapon attack speed multiplier)) + (All active modifiers)
delay (in seconds) = (500.0 + (raw attack speed)) / (double) (150 + ((raw attack speed) << 2))
Notes:
Attack speed balancing is different from base attack balancing in a number of aspects: this doesn't just affect the dps, it also affects the proc rate on effects (whether an attackers proc or a defenders proc), in addition to being less effective against any block type damage reduction on the target as opposed to increasing damage through the relevant stats/skills.
The client should have a way of displaying both the raw attack speed value (since this is what effects would modify), and the human readable attack delay in seconds
  • Maximum hit points, or max hp/max_hp for short, refers to the maximum number of hitpoints that a character can have at any one time.
Formula:
max hp = (vit + 3) * (vit + 20) >> 3
  • Maximum special points, or max sp/max_so for short, refers to the maximum number of global special points that a character has available at any one time. It is undecided whether such a system is to be used in addition to the semi-shared special cooldowns with mp.
Formula:
max sp = 1600-241000/(int+150)+int*int/225
  • Hp regeneration is a stackable attribute.
Formula:
natural hp regeneration = vit*0.05 hp/s
Notes:
Most hp recovery comes from items and specials, either as active or passive hp regeneration, or as an active healing effect.
Natural hp regeneration cannot be disabled while in combat, but some in-combat status effect should prevent the majority of item/special passive effects.
  • Sp regeneration is a non stackable bonus attribute.
Formula:
natural sp regeneration TODO (based on wil)
Notes:
Most sp recovery comes from sp regeneration multipliers from items and specials. These multipliers do stack, and apply to the natural sp regeneration plus the highest direct sp regeneration modifier. Some of these multipliers may have an upper limit to the amount of sp regeneration they can grant.
  • Movement speed is a stackable attribute, though items/specials should generally keep track of a number of items/specials their movespeed is exclusive with.
Formula:
TODO
  • Carrying capacity