#ifndef _REPLACEMENT_EFFECTS_H_ #define _REPLACEMENT_EFFECTS_H_ #include using namespace std; #include "WEvent.h" class TargetChooser; class MTGAbility; class ReplacementEffect { public: virtual WEvent * replace (WEvent * e) {return e;}; virtual ~ReplacementEffect(){}; }; class REDamagePrevention: public ReplacementEffect { protected: MTGAbility * source; TargetChooser * tcSource; TargetChooser * tcTarget; int damage; bool oneShot; public: REDamagePrevention(MTGAbility * _source, TargetChooser *_tcSource = NULL,TargetChooser *_tcTarget = NULL, int _damage = -1, bool _oneShot = true); WEvent * replace (WEvent *e); ~REDamagePrevention(); }; class ReplacementEffects { protected: listmodifiers; public: ReplacementEffects(); WEvent * replace(WEvent *e); int add(ReplacementEffect * re); int remove (ReplacementEffect * re); ~ReplacementEffects(); }; #endif