revert pw attack rule
need to refactor this as this cause crashes on android when you cast a planeswalker
This commit is contained in:
@@ -171,7 +171,6 @@ public:
|
|||||||
int canBlock();
|
int canBlock();
|
||||||
int canBlock(MTGCardInstance * opponent);
|
int canBlock(MTGCardInstance * opponent);
|
||||||
int canAttack();
|
int canAttack();
|
||||||
int canPWAttack();
|
|
||||||
int isAttacker();
|
int isAttacker();
|
||||||
Targetable * isAttacking;
|
Targetable * isAttacking;
|
||||||
MTGCardInstance * storedCard;
|
MTGCardInstance * storedCard;
|
||||||
|
|||||||
@@ -266,8 +266,7 @@ class Constants
|
|||||||
HIDDENFACE = 144,
|
HIDDENFACE = 144,
|
||||||
ANYTYPEOFMANA = 145,
|
ANYTYPEOFMANA = 145,
|
||||||
NECROED = 146,
|
NECROED = 146,
|
||||||
CANTATTACKPW = 147,
|
NB_BASIC_ABILITIES = 147,
|
||||||
NB_BASIC_ABILITIES = 148,
|
|
||||||
|
|
||||||
RARITY_S = 'S', //Special Rarity
|
RARITY_S = 'S', //Special Rarity
|
||||||
RARITY_M = 'M', //Mythics
|
RARITY_M = 'M', //Mythics
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ public:
|
|||||||
MTGAttackRule(GameObserver* observer, int _id);
|
MTGAttackRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const string getMenuText()
|
||||||
{
|
{
|
||||||
return "Attack Player";
|
return "Attacker";
|
||||||
}
|
}
|
||||||
int receiveEvent(WEvent * event);
|
int receiveEvent(WEvent * event);
|
||||||
virtual MTGAttackRule * clone() const;
|
virtual MTGAttackRule * clone() const;
|
||||||
|
|||||||
@@ -1158,14 +1158,7 @@ AADamager::AADamager(GameObserver* observer, int _id, MTGCardInstance * _source,
|
|||||||
{
|
{
|
||||||
MTGCardInstance * _target = dynamic_cast<MTGCardInstance*>(target);
|
MTGCardInstance * _target = dynamic_cast<MTGCardInstance*>(target);
|
||||||
if(_target && _target->hasType(Subtypes::TYPE_PLANESWALKER))
|
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();
|
return _target->name.c_str();
|
||||||
}
|
|
||||||
if(redirected)
|
if(redirected)
|
||||||
{
|
{
|
||||||
if(d.size())
|
if(d.size())
|
||||||
|
|||||||
@@ -684,8 +684,6 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
int onum = w+1;
|
int onum = w+1;
|
||||||
card->zpos = abs(onum - zone->nb_cards)+1;
|
card->zpos = abs(onum - zone->nb_cards)+1;
|
||||||
}
|
}
|
||||||
if(card && zone->owner)//last controller
|
|
||||||
card->lastController = zone->owner;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -714,6 +712,8 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
for (int j = zone->nb_cards - 1; j >= 0; j--)
|
for (int j = zone->nb_cards - 1; j >= 0; j--)
|
||||||
{
|
{
|
||||||
MTGCardInstance * card = zone->cards[j];
|
MTGCardInstance * card = zone->cards[j];
|
||||||
|
//lastcontroller zone update
|
||||||
|
card->lastController = players[i];
|
||||||
card->entersBattlefield = 0;
|
card->entersBattlefield = 0;
|
||||||
card->LKIpower = card->power;
|
card->LKIpower = card->power;
|
||||||
card->LKItoughness = card->toughness;
|
card->LKItoughness = card->toughness;
|
||||||
@@ -1049,14 +1049,15 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
int skipLevel = (currentPlayer->playMode == Player::MODE_TEST_SUITE || mLoading) ? Constants::ASKIP_NONE
|
int skipLevel = (currentPlayer->playMode == Player::MODE_TEST_SUITE || mLoading) ? Constants::ASKIP_NONE
|
||||||
: options[Options::ASPHASES].number;
|
: options[Options::ASPHASES].number;
|
||||||
bool noattackers = currentPlayer->noPossibleAttackers();
|
bool noattackers = currentPlayer->noPossibleAttackers();
|
||||||
bool hasdiaochan = currentPlayer->game->inPlay->hasAlias(10544);//diaochan activated ability combat begins
|
bool nodiaochan = (currentPlayer->game->battlefield->countByAlias(10544)<1)?true:false;
|
||||||
if (skipLevel == Constants::ASKIP_SAFE || skipLevel == Constants::ASKIP_FULL)
|
if (skipLevel == Constants::ASKIP_SAFE || skipLevel == Constants::ASKIP_FULL)
|
||||||
{
|
{
|
||||||
if ((opponent()->isAI() && !(isInterrupting)) && ((mCurrentGamePhase == MTG_PHASE_UNTAP)
|
if ((opponent()->isAI() && !(isInterrupting)) && ((mCurrentGamePhase == MTG_PHASE_UNTAP)
|
||||||
|| (mCurrentGamePhase == MTG_PHASE_DRAW)
|
|| (mCurrentGamePhase == MTG_PHASE_DRAW)
|
||||||
|| ((mCurrentGamePhase == MTG_PHASE_COMBATBEGIN) && (!hasdiaochan))
|
|| ((mCurrentGamePhase == MTG_PHASE_COMBATBEGIN) && (nodiaochan))
|
||||||
|| ((mCurrentGamePhase == MTG_PHASE_COMBATATTACKERS) && (noattackers))
|
|| ((mCurrentGamePhase == MTG_PHASE_COMBATATTACKERS) && (noattackers))
|
||||||
|| (mCurrentGamePhase == MTG_PHASE_COMBATEND) || (mCurrentGamePhase == MTG_PHASE_ENDOFTURN)
|
|| (mCurrentGamePhase == MTG_PHASE_COMBATEND)
|
||||||
|
|| (mCurrentGamePhase == MTG_PHASE_ENDOFTURN)
|
||||||
|| ((mCurrentGamePhase == MTG_PHASE_CLEANUP) && (currentPlayer->game->hand->nb_cards < 8))))
|
|| ((mCurrentGamePhase == MTG_PHASE_CLEANUP) && (currentPlayer->game->hand->nb_cards < 8))))
|
||||||
userRequestNextGamePhase();
|
userRequestNextGamePhase();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -742,10 +742,14 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
|||||||
}
|
}
|
||||||
check = restriction[i].find("didnotcastnontoken");
|
check = restriction[i].find("didnotcastnontoken");
|
||||||
if(check != string::npos)
|
if(check != string::npos)
|
||||||
|
{
|
||||||
|
restriction.push_back("lastturn(*[-token]|mystack,mybattlefield)~lessthan~1");
|
||||||
|
}
|
||||||
|
check = restriction[i].find("didnotcastnontoken");
|
||||||
|
if(check != string::npos)
|
||||||
{
|
{
|
||||||
restriction.push_back("lastturn(*[-token]|opponentstack,opponentbattlefield)~lessthan~1");
|
restriction.push_back("lastturn(*[-token]|opponentstack,opponentbattlefield)~lessthan~1");
|
||||||
}
|
}
|
||||||
|
|
||||||
check = restriction[i].find("paid(");
|
check = restriction[i].find("paid(");
|
||||||
if(check != string::npos)
|
if(check != string::npos)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -690,23 +690,6 @@ int MTGCardInstance::canAttack()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGCardInstance::canPWAttack()
|
|
||||||
{
|
|
||||||
if (has(Constants::CANTATTACKPW))
|
|
||||||
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)
|
int MTGCardInstance::addToToughness(int value)
|
||||||
{
|
{
|
||||||
toughness += value;
|
toughness += value;
|
||||||
|
|||||||
@@ -177,8 +177,7 @@ const char* Constants::MTGBasicAbilities[] = {
|
|||||||
"cantcrew",
|
"cantcrew",
|
||||||
"hiddenface",//test for hiding card
|
"hiddenface",//test for hiding card
|
||||||
"anytypeofmana",
|
"anytypeofmana",
|
||||||
"necroed"//hide necored,
|
"necroed"//hide necored
|
||||||
"cantpwattack"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||||
|
|||||||
@@ -1142,8 +1142,6 @@ MTGGameZone * MTGGameZone::intToZone(GameObserver *g, int zoneId, MTGCardInstanc
|
|||||||
else
|
else
|
||||||
p2 = target->controller();
|
p2 = target->controller();
|
||||||
|
|
||||||
//if(p2 != p && p2 != p->opponent())//should match at least one
|
|
||||||
//p2 = p;
|
|
||||||
|
|
||||||
MTGGameZone * result = intToZone(zoneId, p, p2);
|
MTGGameZone * result = intToZone(zoneId, p, p2);
|
||||||
if (result) return result;
|
if (result) return result;
|
||||||
|
|||||||
@@ -1862,13 +1862,8 @@ int MTGAttackRule::receiveEvent(WEvent *e)
|
|||||||
card->setAttacker(0);
|
card->setAttacker(0);
|
||||||
if (card->isAttacker() && !card->has(Constants::VIGILANCE))
|
if (card->isAttacker() && !card->has(Constants::VIGILANCE))
|
||||||
card->tap();
|
card->tap();
|
||||||
if (card->isAttacker() && card->has(Constants::CANTATTACK) && (card->isAttacking && ((Damageable*)card->isAttacking)->type_as_damageable == Damageable::DAMAGEABLE_PLAYER))
|
if (card->isAttacker() && card->has(Constants::CANTATTACK))
|
||||||
card->toggleAttacker();//if a card has cantattack, then you cant
|
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_MTGCARDINSTANCE))
|
|
||||||
{
|
|
||||||
if(((MTGCardInstance *)card->isAttacking)->hasType("planeswalker"))
|
|
||||||
card->toggleAttacker();
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -1920,7 +1915,7 @@ int MTGPlaneswalkerAttackRule::isReactingToClick(MTGCardInstance * card, ManaCos
|
|||||||
return 0;
|
return 0;
|
||||||
if (card->isAttacker())
|
if (card->isAttacker())
|
||||||
return 1;
|
return 1;
|
||||||
if (card->canPWAttack() && card->attackPlaneswalkerCost < 1)
|
if (card->canAttack() && card->attackPlaneswalkerCost < 1)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1977,7 +1972,7 @@ bool MTGPlaneswalkerAttackRule::select(Target* t)
|
|||||||
if (CardView* c = dynamic_cast<CardView*>(t))
|
if (CardView* c = dynamic_cast<CardView*>(t))
|
||||||
{
|
{
|
||||||
MTGCardInstance * card = c->getCard();
|
MTGCardInstance * card = c->getCard();
|
||||||
if (card->canPWAttack() && !card->isPhased)
|
if (card->canAttack() && !card->isPhased)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -262,8 +262,6 @@ bool Player::hasPossibleAttackers()
|
|||||||
MTGCardInstance * c = z->cards[j];
|
MTGCardInstance * c = z->cards[j];
|
||||||
if (c->canAttack() && c->isCreature())
|
if (c->canAttack() && c->isCreature())
|
||||||
return true;
|
return true;
|
||||||
if (c->canPWAttack() && c->isCreature() && c->controller()->opponent()->inPlay()->hasType("planeswalker"))
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user