[OTJ] Implementing "saddle" mechanic (#12012)

* [OTJ] Implement Trained Arynx

* implement saddle cost

* update saddled effect

* add test

* add sorcery speed to saddle ability

* apply requested changes

* [OTJ] Implement Quilled Charger

* rework test
This commit is contained in:
Evan Kranzler 2024-03-29 23:00:22 -04:00 committed by GitHub
parent 2dbd313956
commit 8fbc7c9507
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 447 additions and 2 deletions

View file

@ -0,0 +1,67 @@
package org.mage.test.cards.abilities.keywords;
import mage.abilities.keyword.MenaceAbility;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.game.permanent.Permanent;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* @author TheElk801
*/
public class SaddleTest extends CardTestPlayerBase {
private static final String charger = "Quilled Charger";
private static final String bear = "Grizzly Bears";
private void assertSaddled(String name, boolean saddled) {
Permanent permanent = getPermanent(name);
Assert.assertEquals(
name + " should " + (saddled ? "" : "not ") + "be saddled",
saddled, permanent.isSaddled()
);
}
@Test
public void testNoSaddle() {
addCard(Zone.BATTLEFIELD, playerA, charger);
attack(1, playerA, charger, playerB);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertTapped(charger, true);
assertSaddled(charger, false);
assertAbility(playerA, charger, new MenaceAbility(false), false);
assertLife(playerB, 20 - 4);
}
@Test
public void testSaddle() {
addCard(Zone.BATTLEFIELD, playerA, charger);
addCard(Zone.BATTLEFIELD, playerA, bear);
setChoice(playerA, bear);
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Saddle");
attack(1, playerA, charger, playerB);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
assertTapped(bear, true);
assertTapped(charger, true);
assertSaddled(charger, true);
assertAbility(playerA, charger, new MenaceAbility(false), true);
assertLife(playerB, 20 - 4 - 1);
setStopAt(2, PhaseStep.UPKEEP);
execute();
assertSaddled(charger, false);
}
}