-fix issue 161 (brass man can untap outside of upkeep). Use "myUpkeepOnly" keyword. Other keywords such as "myDrawOnly" of course work. Haven't implemented "opponent" yet, is it needed ?
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-12-13 10:18:37 +00:00
parent f9c810058d
commit ee4e9f2262
6 changed files with 39 additions and 12 deletions

View File

@@ -79,7 +79,7 @@ rarity=U
mana={1}
type=Artifact Creature
subtype=Construct
auto={1}:untap
auto={1}:untap myUpkeepOnly
power=1
toughness=3
abilities=doesnotuntap

View File

@@ -251,7 +251,7 @@ type=Sorcery
[card]
text=Brass Man doesn't untap during your untap step. At the beginning of your upkeep, you may pay {1}. If you do, untap Brass Man.
id=1099
auto={1}:untap myTurnOnly
auto={1}:untap myUpkeepOnly
name=Brass Man
rarity=U
mana={1}

View File

@@ -116,6 +116,7 @@ borderland_behemoth.txt
bottle_gnomes.txt
bottle_gnomes2.txt
brass_man.txt
brass_man_i161.txt
cage_of_hands.txt
Call_to_Heel_1.txt
Call_to_Heel_2.txt

View File

@@ -1,13 +1,9 @@
#NAME: Brass Man untapping
#DESC: Brass Man can untap outside of Upkeep.
#DESC: To test this, we try to untap him in
#DESC: secondmain and then cast Assassinate
#DESC: on him (which should destroy him if
#DESC: he's still tapped, which he should be).
[INIT]
combatattackers
[PLAYER1]
inplay:Brass Man,Island,Swamp,Plains,Forest
inplay:Brass Man,Swamp,Plains,Forest
hand:Assassinate
[PLAYER2]
life:20
@@ -17,10 +13,9 @@ next
next
next
next
Island
Swamp
Brass Man
choice 0
Swamp
Plains
Forest
Assassinate
@@ -28,8 +23,7 @@ Brass Man
[ASSERT]
secondmain
[PLAYER1]
inplay:Island,Swamp,Plains,Forest
hand:
inplay:Swamp,Plains,Forest
graveyard:Brass Man,Assassinate
[PLAYER2]
life:19

View File

@@ -103,7 +103,22 @@ class ActivatedAbility:public MTGAbility{
enum {
NO_RESTRICTION = 0,
PLAYER_TURN_ONLY = 1,
AS_SORCERY = 2
AS_SORCERY = 2,
MY_BEFORE_BEGIN = 3,
MY_UNTAP = 4,
MY_UPKEEP = 5,
MY_DRAW = 6,
MY_FIRSTMAIN = 7,
MY_COMBATBEGIN = 8,
MY_COMBATATTACKERS = 9,
MY_COMBATBLOCKERS = 10,
MY_COMBATDAMAGE = 11,
MY_COMBATEND = 12,
MY_SECONDMAIN = 13,
MY_ENDOFTURN = 14,
MY_EOT = 15,
MY_CLEANUP = 16,
MY_AFTER_EOT = 17,
};
int restrictions;
int needsTapping;

View File

@@ -146,6 +146,19 @@ TriggeredAbility * AbilityFactory::parseTrigger(string magicText, int id, Spell
int AbilityFactory::parseRestriction(string s){
if (s.find("myturnonly") != string::npos) return ActivatedAbility::PLAYER_TURN_ONLY;
if (s.find("assorcery") != string::npos) return ActivatedAbility::AS_SORCERY;
size_t found = s.find("my");
if (found !=string::npos){
for (int i = 0; i < Constants::NB_MTG_PHASES; i++){
string toFind = "my";
toFind.append(Constants::MTGPhaseCodeNames[i]).append("only");
found = s.find(toFind);
if (found != string::npos){
return ActivatedAbility::MY_BEFORE_BEGIN + i;
}
}
}
return ActivatedAbility::NO_RESTRICTION;
}
@@ -1722,6 +1735,10 @@ int ActivatedAbility::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
if (cPhase != Constants::MTG_PHASE_FIRSTMAIN && cPhase != Constants::MTG_PHASE_SECONDMAIN) return 0;
break;
}
if (restrictions>= MY_BEFORE_BEGIN && restrictions <= MY_AFTER_EOT){
if (player != game->currentPlayer) return 0;
if (cPhase != restrictions - MY_BEFORE_BEGIN + Constants::MTG_PHASE_BEFORE_BEGIN) return 0;
}
if (card == source && source->controller()==player && (!needsTapping || (!source->isTapped() && !source->hasSummoningSickness()))){
if (!cost) return 1;