Bosses are unique classes that will be created by the LevelManager at the beginning of a level. Each one will set its stats and define its abilities in the contructor and override the ability methods. Along with overriding the ability methods it will be adding in more since bosses will have more than 3 abilities. Bosses will also use a unique AI so will not use a Behavior but just do it right in the class.

While inheriting from EnemyBase, the Boss class is to be very specialized and unique for each boss. However, basic attributes carry over across all enemies.


  • EnemyBase : inherits from EnemyBase and shares all relationships with it
  • LevelManager : created in LevelManager


  • bool isPossessable - whether or not the boss can be possessed
  • int phasesCount - the number of phases the boss has
  • int currentPhase - the current phase the boss is on
  • any other attributes that the boss may or may not need for its unique AI or abilities


  • Will override the 3 ability methods for their specific abilities
  • Will add in any extra ability methods that it needs
  • Update
    • Will override update method to add in its AI
    • Common boss AI could include changing strategies based on a timer, health remaining, etc.
    • A drastic change of AI/Abilities would result in a new "phase" for the boss, which would require a different approach to defeat
    • will use the currentPhase to decide what to do and also check to see if the phase needs to change.
  • NextPhase
    • This will increment currentPhase
    • based on this new phase this will handle any changes that will be made in the phase, such as an increase in health, or more defense, etc.
    • If currentPhase equals phasesCount then the fight is over and the Death method will be called.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License