add Yosei, the Morning Star (from Champions of Kamigawa)

This commit is contained in:
jendave
2011-08-06 14:08:56 +00:00
parent 206456bbd1
commit d7fcd4f93f
5 changed files with 130 additions and 3 deletions

1
.gitattributes vendored
View File

@@ -5715,6 +5715,7 @@ res/cardsfolder/yellow_scarves_troops.txt -text svneol=native#text/plain
res/cardsfolder/yoked_plowbeast.txt -text svneol=native#text/plain res/cardsfolder/yoked_plowbeast.txt -text svneol=native#text/plain
res/cardsfolder/yomiji_who_bars_the_way.txt -text svneol=native#text/plain res/cardsfolder/yomiji_who_bars_the_way.txt -text svneol=native#text/plain
res/cardsfolder/yore_tiller_nephilim.txt -text svneol=native#text/plain res/cardsfolder/yore_tiller_nephilim.txt -text svneol=native#text/plain
res/cardsfolder/yosei_the_morning_star.txt -text svneol=native#text/plain
res/cardsfolder/yotian_soldier.txt -text svneol=native#text/plain res/cardsfolder/yotian_soldier.txt -text svneol=native#text/plain
res/cardsfolder/young_wei_recruits.txt -text svneol=native#text/plain res/cardsfolder/young_wei_recruits.txt -text svneol=native#text/plain
res/cardsfolder/youthful_knight.txt -text svneol=native#text/plain res/cardsfolder/youthful_knight.txt -text svneol=native#text/plain

View File

@@ -0,0 +1,10 @@
Name:Yosei, the Morning Star
ManaCost:4 W W
Types:Legendary Creature Dragon Spirit
Text:When CARDNAME is put into a graveyard from the battlefield, target player skips his or her next untap step. Tap up to five target permanents that player controls.
PT:5/5
K:Flying
SVar:RemAIDeck:True
SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/yosei_the_morning_star.jpg
End

View File

@@ -13421,6 +13421,101 @@ public class CardFactory_Creatures {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Yosei, the Morning Star")) {
final CardList targetPerms = new CardList();
final SpellAbility ability = new Ability(card, "0") {
@Override
public void resolve() {
Player p = getTargetPlayer();
if(p.canTarget(card)) {
p.setSkipNextUntap(true);
for(Card c:targetPerms) {
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) {
c.tap();
}
}
}
targetPerms.clear();
}//resolve()
};
final Input targetInput = new Input() {
private static final long serialVersionUID = -8727869672234802473L;
@Override
public void showMessage() {
if(targetPerms.size() == 5) done();
AllZone.Display.showMessage("Select up to 5 target permanents. Selected ("+targetPerms.size()+") so far. Click OK when done.");
ButtonUtil.enableOnlyOK();
}
@Override
public void selectButtonOK() {
done();
}
private void done() {
//here, we add the ability to the stack since it's triggered.
StringBuilder sb = new StringBuilder();
sb.append(card.getName()).append(" - tap up to 5 permanents target player controls. Target player skips his or her next untap step.");
ability.setStackDescription(sb.toString());
AllZone.Stack.add(ability);
stop();
}
@Override
public void selectCard(Card c, PlayerZone zone) {
if(zone.is(Constant.Zone.Battlefield, ability.getTargetPlayer()) && !targetPerms.contains(c)) {
if(CardFactoryUtil.canTarget(card, c)) {
targetPerms.add(c);
}
}
showMessage();
}
};//Input
final Input playerInput = new Input() {
private static final long serialVersionUID = 4765535692144126496L;
@Override
public void showMessage() {
AllZone.Display.showMessage(card.getName()+" - Select target player");
ButtonUtil.enableOnlyCancel();
}
@Override
public void selectPlayer(Player p) {
if(p.canTarget(card)) {
ability.setTargetPlayer(p);
stopSetNext(targetInput);
}
}
@Override
public void selectButtonCancel() { stop(); }
};
Command destroy = new Command() {
private static final long serialVersionUID = -3868616119471172026L;
public void execute() {
Player player = card.getController();
CardList list = CardFactoryUtil.AI_getHumanCreature(card, true);
if(player.equals(AllZone.HumanPlayer)) AllZone.InputControl.setInput(playerInput);
else if(list.size() != 0) {
Card target = CardFactoryUtil.AI_getBestCreature(list);
ability.setTargetCard(target);
AllZone.Stack.add(ability);
}
}//execute()
};
card.addDestroyCommand(destroy);
}
//*************** END ************ END **************************
if(hasKeyword(card, "Level up") != -1 && hasKeyword(card, "maxLevel") != -1) if(hasKeyword(card, "Level up") != -1 && hasKeyword(card, "maxLevel") != -1)
{ {
int n = hasKeyword(card, "Level up"); int n = hasKeyword(card, "Level up");

View File

@@ -4,9 +4,23 @@ import java.util.ArrayList;
public class PhaseUtil { public class PhaseUtil {
// ******* UNTAP PHASE ***** // ******* UNTAP PHASE *****
private static boolean skipUntap(Player p) {
if(p.skipNextUntap()) {
p.setSkipNextUntap(false);
return true;
}
else return false;
}
public static void handleUntap(){ public static void handleUntap(){
Player turn = AllZone.Phase.getPlayerTurn(); Player turn = AllZone.Phase.getPlayerTurn();
if (skipUntap(turn)){
AllZone.Phase.setNeedToNextPhase(true);
return;
}
PlayerZone p = AllZone.getZone(Constant.Zone.Battlefield, turn); PlayerZone p = AllZone.getZone(Constant.Zone.Battlefield, turn);
Card[] c = p.getCards(); Card[] c = p.getCards();
@@ -56,9 +70,7 @@ public class PhaseUtil {
} }
} }
CardList allp = new CardList(); CardList allp = AllZoneUtil.getCardsInPlay();
allp.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer).getCards());
allp.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer).getCards());
for(Card ca : allp) { for(Card ca : allp) {
if (ca.hasStartOfKeyword("Permanents don't untap during their controllers' untap steps")) { if (ca.hasStartOfKeyword("Permanents don't untap during their controllers' untap steps")) {

View File

@@ -21,6 +21,7 @@ public abstract class Player extends MyObservable{
protected String loseCondition = ""; protected String loseCondition = "";
protected int nTurns = 0; protected int nTurns = 0;
protected boolean skipNextUntap = false;
protected Card lastDrawnCard; protected Card lastDrawnCard;
protected int numDrawnThisTurn = 0; protected int numDrawnThisTurn = 0;
@@ -644,6 +645,14 @@ public abstract class Player extends MyObservable{
return old; return old;
} }
public boolean skipNextUntap() {
return skipNextUntap;
}
public void setSkipNextUntap(boolean b) {
skipNextUntap = b;
}
public CardList getSlowtripList() { public CardList getSlowtripList() {
return slowtripList; return slowtripList;
} }