-fixed bug when re-ordering blockers
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-07-18 09:31:34 +00:00
parent 3e7ecb3016
commit 70ad549611
3 changed files with 35 additions and 4 deletions

View File

@@ -3,6 +3,7 @@
########################
generic/attacks_each_turn.txt
generic/m10_blockers.txt
generic/m10_blockers2.txt
generic/first_strike.txt
generic/first_strike2.txt
generic/first_strike3.txt

View File

@@ -0,0 +1,30 @@
#New blockers reordering rule
[INIT]
COMBATATTACKERS
[PLAYER1]
inplay:grizzly bears
[PLAYER2]
inplay:raging goblin,Drudge Skeletons,dragon engine
[DO]
grizzly bears
next
#blockers
dragon engine
raging goblin
Drudge Skeletons
next
#blockers order
dragon engine
dragon engine
next
#combat damage
next
#combat end
[ASSERT]
COMBATEND
[PLAYER1]
graveyard:grizzly bears
[PLAYER2]
graveyard:Drudge Skeletons,raging goblin
inplay:dragon engine
[END]

View File

@@ -474,10 +474,10 @@ MTGCardInstance * MTGCardInstance::getNextDefenser(MTGCardInstance * previous){
int MTGCardInstance::moveBlockerInRow(MTGCardInstance * blocker){
list<MTGCardInstance *>::iterator it1 = find(blockers.begin(), blockers.end(), blocker);
list<MTGCardInstance *>::iterator it2 = it1;
if (it2 != blockers.end()) it2++;
if (it2 == blockers.end()) it2 = blockers.begin();
blockers.splice( it2, blockers, it1 ); // move a before b, invalidates a
if (it2 == blockers.end()) it2 = blockers.begin(); else ++it2;
if (it2 == blockers.end()) it2 = blockers.begin();
std::iter_swap(it1,it2);
WEvent* e = NEW WEventCreatureBlockerRank(blocker,*it2,this);
GameObserver::GetInstance()->receiveEvent(e);
delete(e);