-Reverted hasSecondStrike() for now, even though I'm still not sure why it doesn't work.

-Fixed some issues with Planeswalker's abilities.
-Added a few Ally cards.
-Fixed Ashes to Ashes.
-Fixed some issues with Archon of Justice.
This commit is contained in:
jendave
2011-08-06 02:48:06 +00:00
parent c7e29fa4b0
commit e35672b584
8 changed files with 219 additions and 37 deletions

View File

@@ -4,6 +4,36 @@ Artifact
no text
Comes into play tapped.
Kazuul Warlord
4 R
Creature Minotaur Warrior Ally
Whenever Kazuul Warlord or another Ally enters the battlefield under your control, you may put a +1/+1 counter on each Ally creature you control.
3/3
Seascape Aerialist
4 U
Creature Merfolk Wizard Ally
Whenever Seascape Aerialist or another Ally enters the battlefield under your control, you may have Ally creatures you control gain flying until end of turn.
2/3
Ondu Cleric
1 W
Creature Kor Cleric Ally
Whenever Ondu Cleric or another Ally enters the battlefield under your control, you may gain life equal to the number of Allies you control.
1/1
Joraga Bard
3 G
Creature Elf Rogue Ally
Whenever Joraga Bard or another Ally enters the battlefield under your control, you may have Ally creatures you control gain vigilance until end of turn.
1/4
Highland Berserker
1 R
Creature Human Berserker Ally
Whenever Highland Berserker or another Ally enters the battlefield under your control, you may have Ally creatures you control gain first strike until end of turn.
2/1
Cruel Edict
1 B
Sorcery

View File

@@ -5237,8 +5237,8 @@ public class CardFactory implements NewConstants {
public void selectButtonCancel() {stop();}
public void selectCard(Card c, PlayerZone zone)
{
if(! CardUtil.getColor(c).equals(Constant.Color.Colorless) &&
c.isCreature() &&
if(! c.isArtifact() &&
c.isCreature() &&
zone.is(Constant.Zone.Play))
{
target[index[0]] = c;
@@ -16577,14 +16577,14 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
//*************** START *********** START **************************
else if (cardName.equals("Door to Nothingness"))
{
Ability_Tap ab1 = new Ability_Tap(card, "G G R R B B U U W W")
{
/**
*
*/
private static final long serialVersionUID = 6665327569823149191L;
public void resolve() {
AllZone.GameAction.getPlayerLife(getTargetPlayer()).setLife(0);

View File

@@ -79,7 +79,9 @@ class CardFactory_Planeswalkers {
AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability2
@@ -142,7 +144,8 @@ class CardFactory_Planeswalkers {
return 8 <= card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -207,7 +210,8 @@ class CardFactory_Planeswalkers {
return 0 < card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability1
@@ -312,7 +316,8 @@ class CardFactory_Planeswalkers {
AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability2
@@ -370,7 +375,8 @@ class CardFactory_Planeswalkers {
return 7 <= card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -455,7 +461,8 @@ class CardFactory_Planeswalkers {
return 0 < card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability1
@@ -591,7 +598,8 @@ class CardFactory_Planeswalkers {
return 9 <= card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -697,7 +705,8 @@ class CardFactory_Planeswalkers {
AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability2
@@ -754,7 +763,8 @@ class CardFactory_Planeswalkers {
return 0 < card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public void chooseTargetAI()
@@ -926,7 +936,8 @@ class CardFactory_Planeswalkers {
AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability2
@@ -982,7 +993,8 @@ class CardFactory_Planeswalkers {
return 6 <= card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -1033,7 +1045,8 @@ class CardFactory_Planeswalkers {
return 0 < card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability1
@@ -1156,7 +1169,8 @@ class CardFactory_Planeswalkers {
1 < library.size() &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability2
@@ -1212,7 +1226,8 @@ class CardFactory_Planeswalkers {
return 8 <= card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -1272,7 +1287,8 @@ class CardFactory_Planeswalkers {
return 0 < card2.getCounters(Counters.LOYALTY) && AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};//SpellAbility ability1
@@ -1376,7 +1392,8 @@ class CardFactory_Planeswalkers {
return AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}
public boolean canPlayAI()
{
@@ -1446,7 +1463,8 @@ class CardFactory_Planeswalkers {
return AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}
public boolean canPlayAI()
{
@@ -1538,7 +1556,8 @@ class CardFactory_Planeswalkers {
turn[0] != AllZone.Phase.getTurn() &&
7 < card2.getCounters(Counters.LOYALTY) &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}
public boolean canPlayAI()
{
@@ -1635,7 +1654,8 @@ class CardFactory_Planeswalkers {
return AllZone.getZone(card2).is(Constant.Zone.Play) &&
turn[0] != AllZone.Phase.getTurn() &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
};
final Input targetLand = new Input()
@@ -1722,7 +1742,8 @@ class CardFactory_Planeswalkers {
turn[0] != AllZone.Phase.getTurn() &&
0 < card2.getCounters(Counters.LOYALTY) &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{
@@ -1808,7 +1829,8 @@ class CardFactory_Planeswalkers {
turn[0] != AllZone.Phase.getTurn() &&
3 < card2.getCounters(Counters.LOYALTY) &&
AllZone.Phase.getActivePlayer().equals(card2.getController()) &&
!AllZone.Phase.getPhase().equals("End of Turn");
!AllZone.Phase.getPhase().equals("End of Turn") &&
(AllZone.Phase.getPhase().equals("Main1") || AllZone.Phase.getPhase().equals("Main2"));
}//canPlay()
public boolean canPlayAI()
{

View File

@@ -155,7 +155,8 @@ public static void sortFlying(CardList list)
int attack = 0;
for(int i = 0; i < c.size(); i++){
if(c.get(i).isCreature() && c.get(i).hasSecondStrike()) {
//if(c.get(i).isCreature() && c.get(i).hasSecondStrike()) {
if(c.get(i).isCreature() && (!c.get(i).hasFirstStrike() || (c.get(i).hasDoubleStrike() && c.get(i).hasFirstStrike())) ) {
if (!CombatUtil.isDoranInPlay())
attack += c.get(i).getNetAttack();
else if(CombatUtil.isDoranInPlay())

View File

@@ -68,7 +68,8 @@ public class Combat
damageDealt = att.get(i).getNetDefense();
//if the creature has first strike do not do damage in the normal combat phase
if(att.get(i).hasSecondStrike())
//if(att.get(i).hasSecondStrike())
if(!att.get(i).hasFirstStrike() || (att.get(i).hasFirstStrike() && att.get(i).hasDoubleStrike()) )
defendingDamage += damageDealt;
}
}
@@ -268,7 +269,8 @@ public class Combat
CardList attacking = new CardList(getAttackers());
for(int i = 0; i < attacking.size(); i++)
{
if(!attacking.get(i).hasSecondStrike() ){
//if(!attacking.get(i).hasSecondStrike() ){
if(!attacking.get(i).hasFirstStrike() || (attacking.get(i).hasFirstStrike() && attacking.get(i).hasDoubleStrike() )){
block = getBlockers(attacking.get(i));
//attacker always gets all blockers' attack

View File

@@ -982,12 +982,21 @@ public class GameActionUtil
public static void executeAllyEffects(Card c)
{
if (c.getName().equals("Kazandu Blademaster") || c.getName().equals("Makindi Shieldmate") ||
c.getName().equals("Nimana Sell-Sword") || c.getName().equals("Ondu Cleric") ||
c.getName().equals("Oran-Rief Survivalist") ||c.getName().equals("Tuktuk Grunts") ||
c.getName().equals("Umara Raptor"))
c.getName().equals("Nimana Sell-Sword") || c.getName().equals("Oran-Rief Survivalist") ||
c.getName().equals("Tuktuk Grunts") || c.getName().equals("Umara Raptor"))
ally_Generic_P1P1(c);
else if (c.getName().equals("Turntimber Ranger"))
ally_Turntimber_Ranger(c);
else if (c.getName().equals("Highland Berserker"))
ally_BoostUntilEOT(c, "First Strike");
else if (c.getName().equals("Joraga Bard"))
ally_BoostUntilEOT(c, "Vigilance");
else if (c.getName().equals("Seascape Aerialist"))
ally_BoostUntilEOT(c, "Flying");
else if (c.getName().equals("Ondu Cleric"))
ally_Ondu_Cleric(c);
else if (c.getName().equals("Kazuul Warlord"))
ally_Kazuul_Warlord(c);
}
@@ -1086,6 +1095,118 @@ public class GameActionUtil
}
}
private static void ally_BoostUntilEOT(Card c, String k)
{
final Card crd = c;
final String keyword = k;
Ability ability = new Ability(c, "0")
{
public void resolve()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, crd.getController());
CardList list = new CardList(play.getCards());
list = list.getType("Ally");
final CardList allies = list;
final Command untilEOT = new Command()
{
private static final long serialVersionUID = -8434529949884582940L;
public void execute()
{
for (Card creat:allies){
if(AllZone.GameAction.isCardInPlay(creat))
{
creat.removeExtrinsicKeyword(keyword);
}
}
}
};//Command
for (Card creat:allies){
if(AllZone.GameAction.isCardInPlay(creat) )
{
creat.addExtrinsicKeyword(keyword);
}
}
AllZone.EndOfTurn.addUntil(untilEOT);
}
};
ability.setStackDescription(c.getName() + " - Ally: Ally creatures you control gain " +keyword +" until end of turn.");
if (c.getController().equals(Constant.Player.Human)){
if (showAllyDialog(c))
AllZone.Stack.add(ability);
}
else if (c.getController().equals(Constant.Player.Computer))
AllZone.Stack.add(ability);
}
private static void ally_Ondu_Cleric(Card c)
{
final Card crd = c;
Ability ability = new Ability(c, "0")
{
public void resolve()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play ,crd.getController());
CardList allies = new CardList(play.getCards());
allies = allies.getType("Ally");
PlayerLife life = AllZone.GameAction.getPlayerLife(crd.getController());
life.addLife(allies.size());
}
};
ability.setStackDescription(c.getName() + " - Ally: gain life equal to the number of allies you control.");
if (c.getController().equals(Constant.Player.Human)){
if (showAllyDialog(c))
AllZone.Stack.add(ability);
}
else if (c.getController().equals(Constant.Player.Computer))
AllZone.Stack.add(ability);
}
private static void ally_Kazuul_Warlord(Card c)
{
final Card crd = c;
Ability ability = new Ability(c, "0")
{
public void resolve()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, crd.getController());
CardList list = new CardList(play.getCards());
list = list.getType("Ally");
for (Card ally:list)
{
ally.addCounter(Counters.P1P1, 1);
}
}
};
ability.setStackDescription(c.getName() + " - Ally: put a +1/+1 counter on each Ally creature you control.");
if (c.getController().equals(Constant.Player.Human)) {
if (showAllyDialog(c))
AllZone.Stack.add(ability);
}
else if (c.getController().equals(Constant.Player.Computer))
AllZone.Stack.add(ability);
}
public static void executeDestroyCardEffects(Card c, Card destroyed)
{
if (destroyed.isCreature())

View File

@@ -65,7 +65,9 @@ private void playerDamage(PlayerLife p)
for(int j = 0; j < unblocked.size(); j++)
{
//System.out.println("Unblocked Creature: " +unblocked.get(j).getName());
if (unblocked.getCard(j).hasSecondStrike()) {
//if (unblocked.getCard(j).hasSecondStrike()) {
if (!unblocked.getCard(j).hasFirstStrike() ||
(unblocked.getCard(j).hasFirstStrike() && unblocked.getCard(j).hasDoubleStrike())) {
GameActionUtil.executePlayerCombatDamageEffects(unblocked.get(j));
}
@@ -146,7 +148,9 @@ private void playerDamage(PlayerLife p)
//this shouldn't trigger if creature has first strike, only if it also has double strike
if (blockers.get(i).hasSecondStrike())
//if (blockers.get(i).hasSecondStrike())
if (!blockers.getCard(i).hasFirstStrike() ||
(blockers.getCard(i).hasFirstStrike() && blockers.getCard(i).hasDoubleStrike()))
{
if (blockers.getCard(i).getKeyword().contains("Lifelink"))
@@ -199,7 +203,9 @@ private void playerDamage(PlayerLife p)
}
for (int i=0; i < pwBlockers.size(); i++){
//System.out.println("blocker #" + i + ": " + blockers.getCard(i).getName() +" " + blockers.getCard(i).getAttack());
if ( (pwBlockers.getCard(i).hasSecondStrike()) )
//if ( (pwBlockers.getCard(i).hasSecondStrike()) )
if ( (!pwBlockers.getCard(i).hasFirstStrike() || (pwBlockers.getCard(i).hasFirstStrike() &&
pwBlockers.getCard(i).hasDoubleStrike()) ) )
{
if (pwBlockers.getCard(i).getKeyword().contains("Lifelink"))
GameActionUtil.executeLifeLinkEffects(pwBlockers.getCard(i));

View File

@@ -74,7 +74,7 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone
});
String[] allyNames = {"Umara Raptor", "Tuktuk Grunts", "Oran-Rief Survivalist", "Nimana Sell-Sword", "Makindi Shieldmate",
"Kazandu Blademaster","Turntimber Ranger"};
"Kazandu Blademaster","Turntimber Ranger", "Highland Berserker", "Joraga Bard"};
final ArrayList<String> allyNamesList = new ArrayList<String>();
for (int i=0;i<allyNames.length;i++)