- Fix issue 102 (Rampage not working correctly)
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-10-20 13:24:12 +00:00
parent 771b6d75be
commit 83bc12a275
5 changed files with 55 additions and 2 deletions

View File

@@ -21,6 +21,7 @@ generic/persist2.txt
generic/persist3.txt
generic/phases.txt
generic/rampage.txt
generic/rampage2.txt
generic/regenerate.txt
generic/sacrifice.txt
generic/summoning_sickness.txt

View File

@@ -0,0 +1,49 @@
#Testing Rampage
# issue #102: http://code.google.com/p/wagic/issues/detail?id=102
[INIT]
COMBATATTACKERS
[PLAYER1]
inplay:Hunding Gjornersen
[PLAYER2]
inplay:black knight,grizzly bears
[DO]
Hunding Gjornersen
next
black knight
grizzly bears
next
#blockers order
next
#damage first strike
next
#combat damage->Gui
next
#combat Damage
eot
eot
next
#upkeep
next
#draw
next
#main
next
#begin
next
#attackers
Hunding Gjornersen
next
#blockers
next
#damage
next
#combat end
[ASSERT]
COMBATEND
[PLAYER1]
inplay:Hunding Gjornersen
[PLAYER2]
graveyard:grizzly bears
inplay:black knight
life:15
[END]

View File

@@ -3980,11 +3980,12 @@ class ARampageAbility:public MTGAbility{
int receiveEvent(WEvent * event) {
if (dynamic_cast<WEventBlockersChosen*>(event)) {
nbOpponents = source->blockers.size();
if (nbOpponents <= MaxOpponent) return 0;
source->power += PowerModifier * (nbOpponents - MaxOpponent);
source->addToToughness(ToughnessModifier * (nbOpponents - MaxOpponent));
}
else if (WEventPhaseChange* pe = dynamic_cast<WEventPhaseChange*>(event)) {
if (Constants::MTG_PHASE_AFTER_EOT == pe->to->id)
if (Constants::MTG_PHASE_AFTER_EOT == pe->to->id && nbOpponents > MaxOpponent)
{
source->power -= PowerModifier * (nbOpponents - MaxOpponent);
source->addToToughness(-ToughnessModifier * (nbOpponents - MaxOpponent));

View File

@@ -123,6 +123,7 @@ void GuiCombat::removeOne(DefenserDamaged* blocker, CombatStep step)
}
bool GuiCombat::clickOK(){
active = activeAtk = NULL;
cursor_pos = NONE;
switch (step)
{

View File

@@ -118,7 +118,8 @@ int TestSuiteAI::Act(float dt){
}
else if (action.compare("next")==0){
GuiCombat * gc = g->mLayers->combatLayer();
if (ORDER == g->combatStep || DAMAGE == g->combatStep) gc->clickOK();
if (ORDER == g->combatStep || DAMAGE == g->combatStep)
gc->clickOK();
else g->userRequestNextGamePhase();
}
else if (action.compare("yes")==0)