added support for "prevent next [number] damage" to player/creature.
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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;};
|
||||
};
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -27,6 +27,7 @@ class RulesPlayerData{
|
||||
int life;
|
||||
int poisonCount;
|
||||
int damageCount;
|
||||
int preventable;
|
||||
string avatar;
|
||||
ManaCost * manapool;
|
||||
RulesPlayerZone zones[5];
|
||||
|
||||
Reference in New Issue
Block a user