From e0c523d07f379c60f9ada610b86a345700f438b6 Mon Sep 17 00:00:00 2001 From: "omegablast2002@yahoo.com" Date: Thu, 19 Aug 2010 01:00:03 +0000 Subject: [PATCH] rewrote transformsFOREVER to be better handled and condense previous code. --- projects/mtg/include/AllAbilities.h | 59 ++++++++--------------------- 1 file changed, 15 insertions(+), 44 deletions(-) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 1a9551ac6..2812f0581 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -2553,7 +2553,7 @@ public: return a;} ~ATransformer(){} }; -//Adds types/abilities/P/T to a card (until end of turn) +//Adds types/abilities/changes color to a card (until end of turn) class ATransformerUEOT: public InstantAbility{ public: ATransformer * ability; @@ -2573,53 +2573,24 @@ public: delete ability; }}; //transforms forever -class ATransformerFOREVER:public MTGAbility{ + class ATransformerFOREVER: public InstantAbility{ public: - listabilities; - listtypes; - listcolors; - ATransformerFOREVER(int id, MTGCardInstance * source, MTGCardInstance * target, string stypes, string sabilities):MTGAbility(id,source,target){ - for (int j = 0; j < Constants::NB_BASIC_ABILITIES; j++){ - size_t found = sabilities.find(Constants::MTGBasicAbilities[j]); - if (found != string::npos){ - abilities.push_back(j);} - } - for (int j = 0; j < Constants::MTG_NB_COLORS; j++){ - size_t found = sabilities.find(Constants::MTGColorStrings[j]); - if (found != string::npos){ - colors.push_back(j);} - } - string s = stypes; - while (s.size()){ - size_t found = s.find(" "); - if (found != string::npos){ - int id = Subtypes::subtypesList->find(s.substr(0,found)); - types.push_back(id); - s = s.substr(found+1); - }else{ - int id = Subtypes::subtypesList->find(s); - types.push_back(id); - s = "";} - } - } - int addToGame(){ - MTGCardInstance * _target = (MTGCardInstance *)target; - if (_target){ - while (_target->next) _target=_target->next; - list::iterator it; - for( it=colors.begin(); it != colors.end();it++){ _target->setColor(0,1);} - for ( it=types.begin() ; it != types.end(); it++ ){_target->addType(*it);} - for ( it=colors.begin() ; it != colors.end(); it++ ){_target->setColor(*it);} - for ( it=abilities.begin() ; it != abilities.end(); it++ ){_target->basicAbilities[*it]++;} - } - return MTGAbility::addToGame(); - } + ATransformer * ability; + ATransformerFOREVER(int id, MTGCardInstance * source, MTGCardInstance * target, string types, string abilities):InstantAbility(id,source,target){ + ability = NEW ATransformer(id,source,target,types,abilities);} + int resolve(){ + ATransformer * a = ability->clone(); + GenericInstantAbility * wrapper = NEW GenericInstantAbility(1,source,(Damageable *)(this->target),a); + wrapper->addToGame(); + return 1;} ATransformerFOREVER * clone() const{ ATransformerFOREVER * a = NEW ATransformerFOREVER(*this); + a->ability = this->ability->clone(); a->isClone = 1; - return a;} - ~ATransformerFOREVER(){} -}; + return a;} + ~ATransformerFOREVER(){ + }}; +//becomes ability //Adds types/abilities/P/T to a card (aura) class ABecomes:public MTGAbility{ public: