diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index 2443312cf..220281113 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -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 diff --git a/projects/mtg/bin/Res/test/generic/rampage2.txt b/projects/mtg/bin/Res/test/generic/rampage2.txt new file mode 100644 index 000000000..ffaf2686e --- /dev/null +++ b/projects/mtg/bin/Res/test/generic/rampage2.txt @@ -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] \ No newline at end of file diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 90d8764e7..a4c0aa045 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -3980,11 +3980,12 @@ class ARampageAbility:public MTGAbility{ int receiveEvent(WEvent * event) { if (dynamic_cast(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(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)); diff --git a/projects/mtg/src/GuiCombat.cpp b/projects/mtg/src/GuiCombat.cpp index 87d892107..8454ddfe1 100644 --- a/projects/mtg/src/GuiCombat.cpp +++ b/projects/mtg/src/GuiCombat.cpp @@ -123,6 +123,7 @@ void GuiCombat::removeOne(DefenserDamaged* blocker, CombatStep step) } bool GuiCombat::clickOK(){ + active = activeAtk = NULL; cursor_pos = NONE; switch (step) { diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index f85195564..9a6b9b66b 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -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)