Segs / Segs

:muscle: SEGS - Super Entity Game Server

Home Page:https://segs.dev/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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)