mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
add Yosei, the Morning Star (from Champions of Kamigawa)
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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/yomiji_who_bars_the_way.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/young_wei_recruits.txt -text svneol=native#text/plain
|
||||
res/cardsfolder/youthful_knight.txt -text svneol=native#text/plain
|
||||
|
||||
10
res/cardsfolder/yosei_the_morning_star.txt
Normal file
10
res/cardsfolder/yosei_the_morning_star.txt
Normal 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
|
||||
@@ -13420,6 +13420,101 @@ public class CardFactory_Creatures {
|
||||
card.addComesIntoPlayCommand(intoPlay);
|
||||
}//*************** 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)
|
||||
{
|
||||
|
||||
@@ -4,9 +4,23 @@ import java.util.ArrayList;
|
||||
|
||||
public class PhaseUtil {
|
||||
// ******* UNTAP PHASE *****
|
||||
private static boolean skipUntap(Player p) {
|
||||
if(p.skipNextUntap()) {
|
||||
p.setSkipNextUntap(false);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
public static void handleUntap(){
|
||||
|
||||
Player turn = AllZone.Phase.getPlayerTurn();
|
||||
|
||||
if (skipUntap(turn)){
|
||||
AllZone.Phase.setNeedToNextPhase(true);
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerZone p = AllZone.getZone(Constant.Zone.Battlefield, turn);
|
||||
Card[] c = p.getCards();
|
||||
|
||||
@@ -56,9 +70,7 @@ public class PhaseUtil {
|
||||
}
|
||||
}
|
||||
|
||||
CardList allp = new CardList();
|
||||
allp.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer).getCards());
|
||||
allp.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer).getCards());
|
||||
CardList allp = AllZoneUtil.getCardsInPlay();
|
||||
|
||||
for(Card ca : allp) {
|
||||
if (ca.hasStartOfKeyword("Permanents don't untap during their controllers' untap steps")) {
|
||||
|
||||
@@ -21,6 +21,7 @@ public abstract class Player extends MyObservable{
|
||||
protected String loseCondition = "";
|
||||
|
||||
protected int nTurns = 0;
|
||||
protected boolean skipNextUntap = false;
|
||||
|
||||
protected Card lastDrawnCard;
|
||||
protected int numDrawnThisTurn = 0;
|
||||
@@ -644,6 +645,14 @@ public abstract class Player extends MyObservable{
|
||||
return old;
|
||||
}
|
||||
|
||||
public boolean skipNextUntap() {
|
||||
return skipNextUntap;
|
||||
}
|
||||
|
||||
public void setSkipNextUntap(boolean b) {
|
||||
skipNextUntap = b;
|
||||
}
|
||||
|
||||
public CardList getSlowtripList() {
|
||||
return slowtripList;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user