(Elaborate more on LHS attribute roles) |
(Expand areas, some based on discussion from IRC. Modify formatting a bit) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
= Sketchbook for systems = | |||
This page is intended for rough working while systems are being worked on. | This page is intended for rough working while systems are being worked on. | ||
= General LHS stat purposes = | == General LHS stat purposes == | ||
{{Opinions|{{Pro|Freeyorp}}|}} | |||
{| border="1" cellpadding="3" cellspacing="0" | {| border="1" cellpadding="3" cellspacing="0" | ||
| Stat | | Stat | ||
Line 51: | Line 51: | ||
|} | |} | ||
= Systems = | == Systems == | ||
=== Modifier types === | |||
Any attribute may have defined a number of modifiers in a certain order. | |||
{{Opinions|{{Pro|Freeyorp}}|}} | |||
* '''Stackable''' attribute means all modifiers of this type contribute to the final value. | * '''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''' 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. | * '''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. | ||
* ''' | |||
* '''Multiplicative''' modifier is one that multiplies the value by some floating point or double value. The default for this is 1 unless otherwise defined. | |||
* '''Additive''' modifier is one that adds to the value some integer, floating point or double value. The default for this is 0 unless otherwise defined. | |||
=== Elements === | |||
Note: There seems to be some reference to elements on [[Rune combination|this page]], but this article seems to both have new ideas (for manaserv ?) and references to TMWAthena magic (spell invocations, athena style elements). What follows here are provisional thoughts in the event that it has not been fully worked out. However, if anyone can clear up any previous plans here, this would be a great help. - [[User:Freeyorp|Freeyorp]] 06:39, 1 June 2010 (UTC) | |||
{{Opinions||}} | |||
==== Elemental alignment ==== | |||
** ''' | '''Elemental alignment''' can be one of '''A''', '''B''', '''C''', '''D''', '''E''' or '''Neutral'''. (Fire, Water, Nature, Ice, Spirit?) | ||
* | |||
=== Damage calculation === | |||
* ''' | |||
Specifics here are made under the assumption of a steep curve, following the results of [http://forums.themanaworld.org/viewtopic.php?f=24&t=10612 This poll]. As such, RHS attributes '''do not'' implicitly scale with level, so LHS stats carry a heavier weighting, and the player has a lot more flexibility in what route their character takes. This also means that if any one LHS attribute is used extensively as a dump stat, the effects of this stat in comparison for the others should be reviewed carefully. | |||
{{Opinions|{{Pro|Freeyorp}}|}} | |||
==== Damage type ==== | |||
: | '''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''' | ||
: Formula | ** 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 ==== | |||
:: The | '''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 ==== | |||
'''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 ==== | |||
'''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 defense ==== | |||
'''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 ==== | |||
'''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 ==== | |||
'''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 | |||
=== Misc core RHS attributes === | |||
{{Opinions|{{Pro|Freeyorp}}|}} | |||
==== Maximum hit points ==== | |||
'''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 ==== | |||
NOTE: Some articles on the wiki explicitly state that sp is to be unused, but the client still displays such information. The articles haven't been updated in quite some time, so what follows here are provisional thoughts in case such a system is to be used. However, if anyone can clear up any previous plans here, this would be a great help. - [[User:Freeyorp|Freeyorp]] 06:39, 1 June 2010 (UTC) | |||
'''Maximum special points''', or max sp/max_sp 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 ==== | |||
'''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 ==== | |||
'''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 ==== | |||
'''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 ==== | |||
'''Carrying capacity''' TODO | |||
== Additional notes == | |||
=== Within the scope of CR1 === | |||
==== Items ==== | |||
===== Simple melee weapon ===== | |||
* Damage only scales with Str. | |||
* No other passive effects. | |||
* No procs or other active effects. | |||
* Requires the following: | |||
** Single 32x32 inventory icon | |||
** Spritesheet | |||
** Simple balance testing | |||
===== Simple armor equipment ===== | |||
* Provides single additive defensive bonus. | |||
* No other passive effects. | |||
* No procs or other active effects. | |||
* Requires the following: | |||
** Single 32x32 inventory icon | |||
** Spritesheet | |||
** Simple balance testing | |||
===== Simple regenerative trinket ===== | |||
* Provides single multiplicative hp regen bonus. | |||
* No other passive effects. | |||
* No procs or other active effects. | |||
* Requires the following: | |||
** Single 32x32 inventory icon | |||
** Simple balance testing | |||
===== Simple consumable regenerative item ===== | |||
* Provides one time hp regeneration bonus on use for a as yet undefined amount of time, dispelling on damage. The item is consumed on activation. | |||
* No other active effects. | |||
* No passive effects. | |||
* Requires the following: | |||
** Single 32x32 inventory icon | |||
** Simple balance testing | |||
** Particle effect while effect is active (?) | |||
=== Outside the scope of CR1 === | |||
==== Active gameplay ==== | |||
Rather than providing certain actions as passive procs linked triggering on auto-attack, I propose that such actions should be implemented as temporary effects on specials, active items/potions, or other active effects. These could take the form of a one time chance/hit, or as a temporary passive proc (which may be linked to auto-attack (or any proc trigger!), just not permanently.) | |||
===== Criticals ===== | |||
In the former case, some description for a critical may read as follows: | |||
<pre>(Special name): | |||
Self moves with 20% extra movespeed towards target. | |||
Upon reaching target, 80% chance to deal 70% extra damage to target as a critical hit, ignoring 20% of target's defense.</pre> | |||
With the latter, as a proc: | |||
<pre>(Special name): | |||
Applies status effect `Rage' to self for 12 seconds. | |||
Rage passive effects: | |||
+20 movement speed | |||
On attack, 10% chance to deal 50% extra damage to target as a critical hit.</pre> | |||
===== Stuns ===== | |||
As above, but stunning the target instead of dealing extra damage as a critical hit. | |||
===== Push effects ===== | |||
As above, but pushing the target away from self. Should generally stun for the duration of the push? |
Latest revision as of 06:39, 1 June 2010
Sketchbook for systems
This page is intended for rough working while systems are being worked on.
General LHS stat purposes
People who approve this proposal | People who oppose this proposal |
---|---|
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
Modifier types
Any attribute may have defined a number of modifiers in a certain order.
People who approve this proposal | People who oppose this proposal |
---|---|
- 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.
- Multiplicative modifier is one that multiplies the value by some floating point or double value. The default for this is 1 unless otherwise defined.
- Additive modifier is one that adds to the value some integer, floating point or double value. The default for this is 0 unless otherwise defined.
Elements
Note: There seems to be some reference to elements on this page, but this article seems to both have new ideas (for manaserv ?) and references to TMWAthena magic (spell invocations, athena style elements). What follows here are provisional thoughts in the event that it has not been fully worked out. However, if anyone can clear up any previous plans here, this would be a great help. - Freeyorp 06:39, 1 June 2010 (UTC)
People who approve this proposal | People who oppose this proposal |
---|---|
Elemental alignment
Elemental alignment can be one of A, B, C, D, E or Neutral. (Fire, Water, Nature, Ice, Spirit?)
Damage calculation
Specifics here are made under the assumption of a steep curve, following the results of This poll. As such, RHS attributes 'do not implicitly scale with level, so LHS stats carry a heavier weighting, and the player has a lot more flexibility in what route their character takes. This also means that if any one LHS attribute is used extensively as a dump stat, the effects of this stat in comparison for the others should be reviewed carefully.
People who approve this proposal | People who oppose this proposal |
---|---|
Damage type
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
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
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
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 defense
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
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
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
Misc core RHS attributes
People who approve this proposal | People who oppose this proposal |
---|---|
Maximum hit points
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
NOTE: Some articles on the wiki explicitly state that sp is to be unused, but the client still displays such information. The articles haven't been updated in quite some time, so what follows here are provisional thoughts in case such a system is to be used. However, if anyone can clear up any previous plans here, this would be a great help. - Freeyorp 06:39, 1 June 2010 (UTC)
Maximum special points, or max sp/max_sp 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
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
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
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
Carrying capacity TODO
Additional notes
Within the scope of CR1
Items
Simple melee weapon
- Damage only scales with Str.
- No other passive effects.
- No procs or other active effects.
- Requires the following:
- Single 32x32 inventory icon
- Spritesheet
- Simple balance testing
Simple armor equipment
- Provides single additive defensive bonus.
- No other passive effects.
- No procs or other active effects.
- Requires the following:
- Single 32x32 inventory icon
- Spritesheet
- Simple balance testing
Simple regenerative trinket
- Provides single multiplicative hp regen bonus.
- No other passive effects.
- No procs or other active effects.
- Requires the following:
- Single 32x32 inventory icon
- Simple balance testing
Simple consumable regenerative item
- Provides one time hp regeneration bonus on use for a as yet undefined amount of time, dispelling on damage. The item is consumed on activation.
- No other active effects.
- No passive effects.
- Requires the following:
- Single 32x32 inventory icon
- Simple balance testing
- Particle effect while effect is active (?)
Outside the scope of CR1
Active gameplay
Rather than providing certain actions as passive procs linked triggering on auto-attack, I propose that such actions should be implemented as temporary effects on specials, active items/potions, or other active effects. These could take the form of a one time chance/hit, or as a temporary passive proc (which may be linked to auto-attack (or any proc trigger!), just not permanently.)
Criticals
In the former case, some description for a critical may read as follows:
(Special name): Self moves with 20% extra movespeed towards target. Upon reaching target, 80% chance to deal 70% extra damage to target as a critical hit, ignoring 20% of target's defense.
With the latter, as a proc:
(Special name): Applies status effect `Rage' to self for 12 seconds. Rage passive effects: +20 movement speed On attack, 10% chance to deal 50% extra damage to target as a critical hit.
Stuns
As above, but stunning the target instead of dealing extra damage as a critical hit.
Push effects
As above, but pushing the target away from self. Should generally stun for the duration of the push?