[Meta] Powers Roadmap - Part 2
cyanpill opened this issue · comments
Some of these require previous steps completed, or are just very complex. THe ones labeled (easy) should be do-able now.
Remaining Power Mechanics to work on:
- Delayed/ repeat effects (add a queue on targets for effects, fires off on timer).
- Defense types can be used for hit checks: convert "AttackTypes", get values for target's defense, use the highest (example fire melee would be attacktypes 112,120,128, which would become defense[0,2,7]) (easy)
- Load attrib.bin into the game data, and use for damage/defense types. (easy)
- Set Debt when a player dies, applying debt protection (easy)
- Keep buffs and recharging queue when moving between zones/log out by adding to fromActualCharacter(). A timestamp could be added to see how long it's been, and timers would move forward accordingly.
- Additions to "FloatingInfo" for different colors(endurance changes being blue, other people damage is grey?) and words appearing over target (miss, containment, etc) (easy)
- Check an entity's global buffs when factoring in range, endurance discount and recharge reduction. (easy)
- Advanced effects for sleep/fear/confuse/taunt, need to add a system to break on damage, etc.
- Translucent effect making a target 0% or 50% visible, for teleport effect and others (easy)
- Inspirations should go into the activation queue, which would move the deletion to later, when temps get deleted too (easy)
- Archetype bonuses- scrapper/controller powers have a "special case" flag that needs to be checked properly, tankers need a short range taunt on every attack, defenders need an auto power that checks number of team mates and % health. Blasters are done.
Parse_CharAttrib Discussion:
From looking at how the power data must be used, it seems more likely Cryptic had Parse_CharAttrib's for strength, resistance, maximums and current attributes.
as an array. Even if the values never change, they would be 0's so the values would line up. For examples:
fire melee: base value *str[dmg(fire)] / res[dmg(fire)] done to the targets HP
knockback: base value *str[knockback] / res[knockback] added to target's current knockback
runspeed: : base value *str[runspeed] / res[runspeed] added to target's current runspeed
- We need to added resistance and strength Parse_CharAttrib's, we already have max's for those!
- We could either have line after line of checking variables by name, or change Parse_CharAttrib into an array, or add function that uses a switch statement to return a pointer to the correct variable. That could be an []operator.
Change powers so critters have access:
- "Powers should actually be stored in Entity instead of Character, as Critters and other entity types may have powers as well."
- "Powers array should actually be stored in Entity, and provided to Character as a pointer (because sendPowers() in character update)."
- What about the Parse_CharAttrib's in character and chardata?
- Auto powers should load when you log in, and when you buy the power. Right now that requires sending entity instead of character in addpower.
- Pseudopets (caltrops, rain of fire, etc) call autopowers and nothing else
- Currently critter's have "NPCPower_Desc" which have a powercat/set/power like players... except the category is always villain. Somehow those all need to be loaded into the correct critters.
- Possibly a template of powers loaded for each critter type. For AI, there should separate lists for ranged and melee powers, with autopowers left off. The proportion of melee/ranged powers would affect how the AI acts.
Depends on movement/physics
- Cone powers selecting targets in an arc. #686 #805
- Knockback/repel effects.
- Critters walking to a location? might be possible now
Enhancements:
- Read base values from powers.json (easy)
- Determine scaling based on level difference between player and each enhancement (easy)
- Add a total of all the enhancement in power, keeping a parseattrib for the power, gets recalculate every level or change to enhancements
- Finally apply enhancement values where needed in power mechanics! (easy)