added support for "prevent next [number] damage" to player/creature.

This commit is contained in:
omegablast2002@yahoo.com
2010-08-28 19:50:26 +00:00
parent 33d0577366
commit 98d908f403
13 changed files with 99 additions and 19 deletions
+31 -2
View File
@@ -2167,6 +2167,7 @@ AALifeSet(int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt *
class AADamager:public ActivatedAbilityTP{
public:
WParsedInt * damage;
AADamager(int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt * damage, ManaCost * _cost=NULL, int doTap = 0, int who = TargetChooser::UNSET):ActivatedAbilityTP(_id,_source,_target,_cost,doTap,who),damage(damage){
aType = MTGAbility::DAMAGER;
}
@@ -2180,11 +2181,9 @@ AADamager(int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt *
}
return 0;
}
const char * getMenuText(){
return "Damage";
}
AADamager * clone() const{
AADamager * a = NEW AADamager(*this);
a->damage = NEW WParsedInt(*(a->damage));
@@ -2197,6 +2196,36 @@ AADamager(int _id, MTGCardInstance * _source, Targetable * _target, WParsedInt *
}
};
//prevent next damage
class AADamagePrevent:public ActivatedAbilityTP{
public:
int preventing;
AADamagePrevent(int _id, MTGCardInstance * _source, Targetable * _target,int preventing, ManaCost * _cost=NULL, int doTap = 0, int who = TargetChooser::UNSET):ActivatedAbilityTP(_id,_source,_target,_cost,doTap,who),preventing(preventing){
}
int resolve(){
Damageable * _target = (Damageable *) getTarget();
if(_target){
_target->preventable += preventing;
}
return 0;
}
const char * getMenuText(){
return "Prevent Damage";
}
AADamagePrevent * clone() const{
AADamagePrevent * a = NEW AADamagePrevent(*this);
a->isClone = 1;
return a;
}
~AADamagePrevent(){
}
};
//poison removel
class AARemovePoison:public ActivatedAbilityTP{
+2
View File
@@ -23,12 +23,14 @@ class Damageable:public Targetable {
int life;
int poisonCount;
int damageCount;
int preventable;
int type_as_damageable;
Damageable(int _life){life=_life;};
int getLife(){return life;};
virtual int dealDamage(int damage){life-=damage;return life;};
virtual int afterDamage(){return 0;}
virtual int poisoned(){return 0;}
virtual int prevented(){return 0;}
virtual JQuad * getIcon(){return NULL;};
};
-1
View File
@@ -94,7 +94,6 @@ class MTGCardInstance: public CardPrimitive, public MTGCard, public Damageable {
int nbOpponents();
int stepPower(CombatStep step);
int afterDamage();
int has(int ability);
int cleanup();
+1
View File
@@ -26,6 +26,7 @@ class Player: public Damageable{
int afterDamage();
int poisoned();
int damaged();
int prevented();
Player(MTGPlayerCards * deck, string deckFile, string deckFileSmall);
virtual ~Player();
void unTapPhase();
+1
View File
@@ -27,6 +27,7 @@ class RulesPlayerData{
int life;
int poisonCount;
int damageCount;
int preventable;
string avatar;
ManaCost * manapool;
RulesPlayerZone zones[5];