Skip to content

Reactable refactor #2468

Description

@srliao

Purpose of this issue is to document the necessary steps to refactor reactable in such a way that would allow us to replace the existing system with a modifier based system (game's definition of modifier, not to be confused with gcsim implementation, which uses the same name but is something entirely different) so that reactions such as Lunar Charged can be properly implemented.

The refactor should be carried out in small incremental steps in such a way that each step can be merged into main without breaking existing functionalities or changing any calculations.

Step plan, in sequence, as follows

  • Refactor all commonly used structs into a separate package (targeting pkg/core/info)
    • move structures depend on by reactable in the combat package into pkg/model: PR
    • move remainder of the shared structures in combat package: Issue / PR
    • add a Reactable interface in pkg/model to reflect existing reactable state: PR
  • Refactor reactable into an interface, and all references to reactions of any sort should rely upon this new interface Issue / PR
  • Remove as much as possible from the new reactable interface any methods that should not be needed (i.e. internal workings such as TryEC etc...)
  • Implement a generic modifier system, mimicking actual game behaviour
  • Add reaction specific behaviour built on top of the generic modifier system in step 3 and should implement the new reactable interface

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions