ERwan
-fix issue 145 (double strike damages)
This commit is contained in:
@@ -131,6 +131,8 @@ death_ward.txt
|
|||||||
deja_vu.txt
|
deja_vu.txt
|
||||||
dingus_egg.txt
|
dingus_egg.txt
|
||||||
doomed_necromancer.txt
|
doomed_necromancer.txt
|
||||||
|
double_strike_i145.txt
|
||||||
|
double_strike2_i145.txt
|
||||||
dragon_fodder.txt
|
dragon_fodder.txt
|
||||||
dragon_fodder2.txt
|
dragon_fodder2.txt
|
||||||
dragon_whelp_i154.txt
|
dragon_whelp_i154.txt
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
#NAME: Double Strike i145
|
|
||||||
#DESC: When a creature with double strike kills
|
|
||||||
#DESC: its blocker with its first strike, then
|
|
||||||
#DESC: it should not be able to deal damage to
|
|
||||||
#DESC: the opponent player with its regular
|
|
||||||
#DESC: strike, unless it has Trample.
|
|
||||||
#DESC: The following test checks Double Strike
|
|
||||||
#DESC: with and without Trample. Player1 should
|
|
||||||
#DESC: lose 7 life from the Fangren Hunter, but
|
|
||||||
#DESC: none from the Shanodin Dryads.
|
|
||||||
[INIT]
|
|
||||||
combatattackers
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:shanodin dryads,fangren hunter,rage reflection
|
|
||||||
graveyard:
|
|
||||||
[PLAYER2]
|
|
||||||
inplay:drudge skeletons,walking dead
|
|
||||||
graveyard:
|
|
||||||
life:20
|
|
||||||
[DO]
|
|
||||||
shanodin dryads
|
|
||||||
fangren hunter
|
|
||||||
next
|
|
||||||
drudge skeletons
|
|
||||||
walking dead
|
|
||||||
walking dead
|
|
||||||
next
|
|
||||||
next
|
|
||||||
next
|
|
||||||
next
|
|
||||||
[ASSERT]
|
|
||||||
combatend
|
|
||||||
[PLAYER1]
|
|
||||||
inplay:shanodin dryads,fangren hunter,rage reflection
|
|
||||||
graveyard:
|
|
||||||
[PLAYER2]
|
|
||||||
inplay:
|
|
||||||
graveyard:drudge skeletons,walking dead
|
|
||||||
life:13
|
|
||||||
[END]
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
#NAME: Double Strike i145
|
||||||
|
[INIT]
|
||||||
|
combatattackers
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:Hearthfire Hobgoblin
|
||||||
|
[PLAYER2]
|
||||||
|
inplay:grizzly bears
|
||||||
|
[DO]
|
||||||
|
Hearthfire Hobgoblin
|
||||||
|
next
|
||||||
|
grizzly bears
|
||||||
|
next
|
||||||
|
#damage 1
|
||||||
|
next
|
||||||
|
#end
|
||||||
|
[ASSERT]
|
||||||
|
combatend
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:Hearthfire Hobgoblin
|
||||||
|
[PLAYER2]
|
||||||
|
graveyard:grizzly bears
|
||||||
|
[END]
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#NAME: Double Strike i145
|
||||||
|
#Testing double strike + trample
|
||||||
|
# see http://code.google.com/p/wagic/issues/detail?id=145
|
||||||
|
[INIT]
|
||||||
|
combatattackers
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:fangren hunter,rage reflection
|
||||||
|
graveyard:
|
||||||
|
[PLAYER2]
|
||||||
|
inplay:grizzly bears
|
||||||
|
[DO]
|
||||||
|
fangren hunter
|
||||||
|
next
|
||||||
|
grizzly bears
|
||||||
|
next
|
||||||
|
#choose trample
|
||||||
|
next
|
||||||
|
#damage 1
|
||||||
|
next
|
||||||
|
#damage 2
|
||||||
|
next
|
||||||
|
[ASSERT]
|
||||||
|
combatend
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:fangren hunter,rage reflection
|
||||||
|
[PLAYER2]
|
||||||
|
graveyard:grizzly bears
|
||||||
|
life:14
|
||||||
|
[END]
|
||||||
@@ -307,14 +307,16 @@ int GuiCombat::resolve() // Returns the number of damage objects dealt this turn
|
|||||||
DamageStack* stack = NEW DamageStack();
|
DamageStack* stack = NEW DamageStack();
|
||||||
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it)
|
||||||
{
|
{
|
||||||
signed dmg = (*it)->card->stepPower(step);
|
MTGCardInstance * attacker = (*it)->card;
|
||||||
|
signed dmg = attacker->stepPower(step);
|
||||||
for (vector<DefenserDamaged*>::iterator q = (*it)->blockers.begin(); q != (*it)->blockers.end(); ++q)
|
for (vector<DefenserDamaged*>::iterator q = (*it)->blockers.begin(); q != (*it)->blockers.end(); ++q)
|
||||||
{
|
{
|
||||||
for (vector<Damage>::iterator d = (*q)->damages.begin(); d != (*q)->damages.end(); ++d)
|
for (vector<Damage>::iterator d = (*q)->damages.begin(); d != (*q)->damages.end(); ++d)
|
||||||
stack->Add(NEW Damage(*d));
|
stack->Add(NEW Damage(*d));
|
||||||
dmg -= (*q)->sumDamages();
|
dmg -= (*q)->sumDamages();
|
||||||
}
|
}
|
||||||
if (dmg > 0) stack->Add(NEW Damage((*it)->card, go->opponent(), dmg, DAMAGE_COMBAT));
|
|
||||||
|
if (dmg > 0 && ( (!attacker->blocked) || attacker->has(Constants::TRAMPLE)) ) stack->Add(NEW Damage((*it)->card, go->opponent(), dmg, DAMAGE_COMBAT));
|
||||||
for (vector<Damage>::iterator d = (*it)->damages.begin(); d != (*it)->damages.end(); ++d)
|
for (vector<Damage>::iterator d = (*it)->damages.begin(); d != (*it)->damages.end(); ++d)
|
||||||
stack->Add(NEW Damage(*d));
|
stack->Add(NEW Damage(*d));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user