AdventureSpellMechanics.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * AdventureSpellMechanics.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "CDefaultSpellMechanics.h"
  12. //todo: make configurable
  13. class AdventureBonusingMechanics: public DefaultSpellMechanics
  14. {
  15. public:
  16. AdventureBonusingMechanics(CSpell * s, Bonus::BonusType _bonusTypeID): DefaultSpellMechanics(s), bonusTypeID(_bonusTypeID){};
  17. protected:
  18. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  19. virtual int spellLevelToSubtype(const int schoolLevel) const = 0;
  20. private:
  21. Bonus::BonusType bonusTypeID;
  22. };
  23. //FLY & WATER_WALK
  24. class FlyMechanics: public AdventureBonusingMechanics
  25. {
  26. public:
  27. FlyMechanics(CSpell * s, Bonus::BonusType _bonusTypeID): AdventureBonusingMechanics(s, _bonusTypeID){};
  28. protected:
  29. int spellLevelToSubtype(const int schoolLevel) const override;
  30. };
  31. //VISIONS & DISGUISE
  32. class VisionsMechanics: public AdventureBonusingMechanics
  33. {
  34. public:
  35. VisionsMechanics(CSpell * s, Bonus::BonusType _bonusTypeID): AdventureBonusingMechanics(s, _bonusTypeID){};
  36. protected:
  37. int spellLevelToSubtype(const int schoolLevel) const override;
  38. };
  39. class SummonBoatMechanics: public DefaultSpellMechanics
  40. {
  41. public:
  42. SummonBoatMechanics(CSpell * s): DefaultSpellMechanics(s){};
  43. protected:
  44. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  45. };
  46. class ScuttleBoatMechanics: public DefaultSpellMechanics
  47. {
  48. public:
  49. ScuttleBoatMechanics(CSpell * s): DefaultSpellMechanics(s){};
  50. protected:
  51. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  52. };
  53. class DimensionDoorMechanics: public DefaultSpellMechanics
  54. {
  55. public:
  56. DimensionDoorMechanics(CSpell * s): DefaultSpellMechanics(s){};
  57. protected:
  58. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  59. };
  60. class TownPortalMechanics: public DefaultSpellMechanics
  61. {
  62. public:
  63. TownPortalMechanics(CSpell * s): DefaultSpellMechanics(s){};
  64. protected:
  65. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  66. };
  67. class ViewAirMechanics: public DefaultSpellMechanics
  68. {
  69. public:
  70. ViewAirMechanics(CSpell * s): DefaultSpellMechanics(s){};
  71. protected:
  72. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  73. };
  74. class ViewEarthMechanics: public DefaultSpellMechanics
  75. {
  76. public:
  77. ViewEarthMechanics(CSpell * s): DefaultSpellMechanics(s){};
  78. protected:
  79. bool applyAdventureEffects(const SpellCastEnvironment * env, AdventureSpellCastParameters & parameters) const override;
  80. };