planeswalker attack
This commit is contained in:
@@ -171,6 +171,7 @@ public:
|
||||
int canBlock();
|
||||
int canBlock(MTGCardInstance * opponent);
|
||||
int canAttack();
|
||||
int canPWAttack();
|
||||
int isAttacker();
|
||||
Targetable * isAttacking;
|
||||
MTGCardInstance * storedCard;
|
||||
|
||||
@@ -266,7 +266,8 @@ class Constants
|
||||
HIDDENFACE = 144,
|
||||
ANYTYPEOFMANA = 145,
|
||||
NECROED = 146,
|
||||
NB_BASIC_ABILITIES = 147,
|
||||
CANTATTACKPW = 147,
|
||||
NB_BASIC_ABILITIES = 148,
|
||||
|
||||
RARITY_S = 'S', //Special Rarity
|
||||
RARITY_M = 'M', //Mythics
|
||||
|
||||
@@ -279,7 +279,7 @@ public:
|
||||
MTGAttackRule(GameObserver* observer, int _id);
|
||||
const string getMenuText()
|
||||
{
|
||||
return "Attacker";
|
||||
return "Attack Player";
|
||||
}
|
||||
int receiveEvent(WEvent * event);
|
||||
virtual MTGAttackRule * clone() const;
|
||||
|
||||
@@ -1158,7 +1158,14 @@ AADamager::AADamager(GameObserver* observer, int _id, MTGCardInstance * _source,
|
||||
{
|
||||
MTGCardInstance * _target = dynamic_cast<MTGCardInstance*>(target);
|
||||
if(_target && _target->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
{
|
||||
if(d.size())
|
||||
{
|
||||
WParsedInt parsedNum(d, NULL, source);
|
||||
return _("Deal " + parsedNum.getStringValue() + " Damage to " + _target->name).c_str();
|
||||
}
|
||||
return _target->name.c_str();
|
||||
}
|
||||
if(redirected)
|
||||
{
|
||||
if(d.size())
|
||||
|
||||
@@ -743,7 +743,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
check = restriction[i].find("didnotcastnontoken");
|
||||
if(check != string::npos)
|
||||
{
|
||||
restriction.push_back("lastturn(*[-token]|mystack,mybattlefield)~lessthan~1");
|
||||
restriction.push_back("lastturn(*[-token]|opponentstack,opponentbattlefield)~lessthan~1");
|
||||
}
|
||||
|
||||
check = restriction[i].find("paid(");
|
||||
|
||||
@@ -690,6 +690,25 @@ int MTGCardInstance::canAttack()
|
||||
return 1;
|
||||
}
|
||||
|
||||
int MTGCardInstance::canPWAttack()
|
||||
{
|
||||
if (has(Constants::CANTATTACKPW))
|
||||
return 0;
|
||||
if (has(Constants::FLYERSONLY) && !has(Constants::FLYING))
|
||||
return 0;
|
||||
if (tapped)
|
||||
return 0;
|
||||
if (hasSummoningSickness())
|
||||
return 0;
|
||||
if (has(Constants::DEFENSER) && !has(Constants::CANATTACK))
|
||||
return 0;
|
||||
if (!isCreature())
|
||||
return 0;
|
||||
if (!isInPlay(observer))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int MTGCardInstance::addToToughness(int value)
|
||||
{
|
||||
toughness += value;
|
||||
|
||||
@@ -177,7 +177,8 @@ const char* Constants::MTGBasicAbilities[] = {
|
||||
"cantcrew",
|
||||
"hiddenface",//test for hiding card
|
||||
"anytypeofmana",
|
||||
"necroed"//hide necored
|
||||
"necroed"//hide necored,
|
||||
"cantpwattack"
|
||||
};
|
||||
|
||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||
|
||||
@@ -1862,8 +1862,10 @@ int MTGAttackRule::receiveEvent(WEvent *e)
|
||||
card->setAttacker(0);
|
||||
if (card->isAttacker() && !card->has(Constants::VIGILANCE))
|
||||
card->tap();
|
||||
if (card->isAttacker() && card->has(Constants::CANTATTACK))
|
||||
if (card->isAttacker() && card->has(Constants::CANTATTACK) && (card->isAttacking && ((Damageable*)card->isAttacking)->type_as_damageable == Damageable::DAMAGEABLE_PLAYER))
|
||||
card->toggleAttacker();//if a card has cantattack, then you cant
|
||||
if (card->isAttacker() && card->has(Constants::CANTATTACKPW) && (card->isAttacking && ((Damageable*)card->isAttacking)->type_as_damageable == Damageable::DAMAGEABLE_PLAYER))
|
||||
card->toggleAttacker();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1915,7 +1917,7 @@ int MTGPlaneswalkerAttackRule::isReactingToClick(MTGCardInstance * card, ManaCos
|
||||
return 0;
|
||||
if (card->isAttacker())
|
||||
return 1;
|
||||
if (card->canAttack() && card->attackPlaneswalkerCost < 1)
|
||||
if (card->canPWAttack() && card->attackPlaneswalkerCost < 1)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -1972,7 +1974,7 @@ bool MTGPlaneswalkerAttackRule::select(Target* t)
|
||||
if (CardView* c = dynamic_cast<CardView*>(t))
|
||||
{
|
||||
MTGCardInstance * card = c->getCard();
|
||||
if (card->canAttack() && !card->isPhased)
|
||||
if (card->canPWAttack() && !card->isPhased)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -262,6 +262,8 @@ bool Player::hasPossibleAttackers()
|
||||
MTGCardInstance * c = z->cards[j];
|
||||
if (c->canAttack() && c->isCreature())
|
||||
return true;
|
||||
if (c->canPWAttack() && c->isCreature() && c->controller()->opponent()->inPlay()->hasType("planeswalker"))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user