mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Honden of Cleansing Fire, Honden of Infinite Rage, Honden of Life's Web, Honden of Night's Reach, Honden of Seeing Winds added.
Conspiracy exclusion for "Shrine" creature type added.
This commit is contained in:
@@ -18,6 +18,11 @@ forest.jpg http://resources.wizards.com/magic/cards/unh/en-us/card73946.jpg
|
||||
forest1.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=2748
|
||||
forest2.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=587
|
||||
forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586
|
||||
honden_of_cleansing_fire.jpg http://www.wizards.com/global/images/magic/general/honden_of_cleansing_fire.jpg
|
||||
honden_of_infinite_rage.jpg http://www.wizards.com/global/images/magic/general/honden_of_infinite_rage.jpg
|
||||
honden_of_lifes_web.jpg http://www.wizards.com/global/images/magic/general/honden_of_lifes_web.jpg
|
||||
honden_of_seeing_winds.jpg http://www.wizards.com/global/images/magic/general/honden_of_seeing_winds.jpg
|
||||
honden_of_nights_reach.jpg http://www.wizards.com/global/images/magic/general/honden_of_nights_reach.jpg
|
||||
thoughtcutter_agent.jpg http://magic.tcgplayer.com/db/cards/16857.jpg
|
||||
singe_mind_ogre.jpg http://magic.tcgplayer.com/db/cards/17138.jpg
|
||||
chainer_dementia_master.jpg http://www.wizards.com/global/images/magic/general/chainer_dementia_master.jpg
|
||||
|
||||
@@ -1,3 +1,28 @@
|
||||
Honden of Infinite Rage
|
||||
2 R
|
||||
Legendary Enchantment Shrine
|
||||
At the beginning of your upkeep, Honden of Infinite Rage deals damage to target creature or player equal to the number of Shrines you control.
|
||||
|
||||
Honden of Night's Reach
|
||||
3 B
|
||||
Legendary Enchantment Shrine
|
||||
At the beginning of your upkeep, target opponent discards a card for each Shrine you control.
|
||||
|
||||
Honden of Cleansing Fire
|
||||
3 W
|
||||
Legendary Enchantment Shrine
|
||||
At the beginning of your upkeep, you gain 2 life for each Shrine you control.
|
||||
|
||||
Honden of Life's Web
|
||||
4 G
|
||||
Legendary Enchantment Shrine
|
||||
At the beginning of your upkeep, put a 1/1 colorless Spirit creature token into play for each Shrine you control.
|
||||
|
||||
Honden of Seeing Winds
|
||||
4 U
|
||||
Legendary Enchantment Shrine
|
||||
At the beginning of your upkeep, draw a card for each Shrine you control.
|
||||
|
||||
Singe-Mind Ogre
|
||||
2 B R
|
||||
Creature Ogre Mutant
|
||||
|
||||
@@ -3119,7 +3119,7 @@ public class CardFactory implements NewConstants {
|
||||
{
|
||||
input[0] = (String)JOptionPane.showInputDialog(null, "Which creature type?", "Pick type", JOptionPane.QUESTION_MESSAGE);
|
||||
|
||||
if (input[0].equals("Legendary") || input[0].equals("Artifact") || input[0].equals("Enchantment") || input[0].equals("Creature"))
|
||||
if (input[0].equals("Legendary") || input[0].equals("Artifact") || input[0].equals("Enchantment") || input[0].equals("Shrine") || input[0].equals("Creature"))
|
||||
input[0] = "";
|
||||
//TODO: some more input validation, case-sensitivity, etc.
|
||||
|
||||
|
||||
@@ -11,6 +11,11 @@ public class GameActionUtil
|
||||
//upkeep_Echo();
|
||||
// upkeep_CheckEmptyDeck_Lose(); //still a little buggy
|
||||
upkeep_Phyrexian_Arena();
|
||||
upkeep_Honden_of_Cleansing_Fire();
|
||||
upkeep_Honden_of_Seeing_Winds();
|
||||
upkeep_Honden_of_Lifes_Web();
|
||||
upkeep_Honden_of_Nights_Reach();
|
||||
upkeep_Honden_of_Infinite_Rage();
|
||||
upkeep_Land_Tax();
|
||||
upkeep_Greener_Pastures();
|
||||
upkeep_Squee();
|
||||
@@ -6042,6 +6047,238 @@ public class GameActionUtil
|
||||
}
|
||||
}// upkeep_Phyrexian_Arena
|
||||
|
||||
private static void upkeep_Honden_of_Seeing_Winds()
|
||||
{
|
||||
final String player = AllZone.Phase.getActivePlayer();
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(play.getCards());
|
||||
|
||||
list = list.getName("Honden of Seeing Winds");
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
// final Ability ability2 = new Ability(list.get(i), "0")
|
||||
// {
|
||||
// public void resolve() {
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
for (int j = 0; j < hondlist.size() ; j++)
|
||||
{
|
||||
AllZone.GameAction.drawCard(player);
|
||||
}//}
|
||||
// };
|
||||
// ability2.setStackDescription(list.get(i)+" - " + list.get(i).getController() + " draws a card for each Shrine he controls.");
|
||||
// AllZone.Stack.add(ability2);
|
||||
}
|
||||
|
||||
}// upkeep_Honden_of_Seeing_Winds
|
||||
|
||||
private static void upkeep_Honden_of_Cleansing_Fire()
|
||||
{
|
||||
final String player = AllZone.Phase.getActivePlayer();
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(play.getCards());
|
||||
|
||||
list = list.getName("Honden of Cleansing Fire");
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
final Ability ability = new Ability(list.get(i), "0")
|
||||
{
|
||||
public void resolve() {
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
for (int j = 0; j < hondlist.size() ; j++)
|
||||
{
|
||||
AllZone.GameAction.getPlayerLife(player).addLife(2);
|
||||
}}
|
||||
};
|
||||
ability.setStackDescription(list.get(i)+" - " + list.get(i).getController() + " gains 2 life for each Shrine he controls.");
|
||||
AllZone.Stack.add(ability);
|
||||
}
|
||||
|
||||
}// upkeep_Honden_of_Cleansing_Fire
|
||||
|
||||
private static void upkeep_Honden_of_Nights_Reach()
|
||||
{
|
||||
final String player = AllZone.Phase.getActivePlayer();
|
||||
final String opponent = AllZone.GameAction.getOpponent(player);
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(play.getCards());
|
||||
|
||||
list = list.getName("Honden of Night's Reach");
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
final Ability ability = new Ability(list.get(i), "0")
|
||||
{
|
||||
public void resolve() {
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
|
||||
for (int j = 0; j < hondlist.size() ; j++)
|
||||
{
|
||||
if(opponent.equals(Constant.Player.Human))
|
||||
AllZone.InputControl.setInput(CardFactoryUtil.input_discard());
|
||||
else
|
||||
{
|
||||
AllZone.GameAction.discardRandom(Constant.Player.Computer);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
ability.setStackDescription(list.get(i)+" - " + AllZone.GameAction.getOpponent(list.get(i).getController()) + " discards a card for each Shrine "+ list.get(i).getController() + " controls.");
|
||||
AllZone.Stack.add(ability);
|
||||
}
|
||||
}
|
||||
|
||||
// upkeep_Honden_of_Nights_Reach()
|
||||
|
||||
private static void upkeep_Honden_of_Infinite_Rage()
|
||||
{
|
||||
final String controller = AllZone.Phase.getActivePlayer();
|
||||
//final String opponent = AllZone.GameAction.getOpponent(player);
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, controller);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(play.getCards());
|
||||
|
||||
list = list.getName("Honden of Infinite Rage");
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, controller);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
|
||||
final Card card = list.get(i);
|
||||
final Ability ability = new Ability(list.get(i), "0")
|
||||
{
|
||||
|
||||
|
||||
|
||||
public void resolve()
|
||||
{
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, controller);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
if(controller.equals("Human"))
|
||||
{
|
||||
String opp = AllZone.GameAction.getOpponent(controller);
|
||||
PlayerZone oppPlay = AllZone.getZone(Constant.Zone.Play, opp);
|
||||
|
||||
String[] choices = { "Yes", "No, target a creature instead" };
|
||||
|
||||
Object q = AllZone.Display.getChoiceOptional("Select computer as target?", choices);
|
||||
if (q.equals("Yes"))
|
||||
AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(hondlist.size());
|
||||
else
|
||||
{
|
||||
CardList cards = new CardList(oppPlay.getCards());
|
||||
CardList oppCreatures = new CardList();
|
||||
for (int i=0;i<cards.size();i++)
|
||||
{
|
||||
if (cards.get(i).isPlaneswalker() || cards.get(i).isCreature())
|
||||
{
|
||||
oppCreatures.add(cards.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (oppCreatures.size() > 0)
|
||||
{
|
||||
|
||||
Object o = AllZone.Display.getChoiceOptional("Pick target creature", oppCreatures.toArray());
|
||||
Card c = (Card)o;
|
||||
c.addDamage(hondlist.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Card targetc = null;
|
||||
CardList flying = CardFactoryUtil.AI_getHumanCreature("Flying", card, true);
|
||||
if(AllZone.Human_Life.getLife() > hondlist.size()*2) {
|
||||
for(int i = 0; i < flying.size(); i++){
|
||||
if(flying.get(i).getNetDefense() <= hondlist.size()){targetc = flying.get(i);}
|
||||
|
||||
}}
|
||||
if(targetc != null)
|
||||
{
|
||||
if(AllZone.GameAction.isCardInPlay(targetc))
|
||||
targetc.addDamage(hondlist.size());
|
||||
}
|
||||
else
|
||||
AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(hondlist.size());
|
||||
}
|
||||
}//resolve()
|
||||
};//SpellAbility
|
||||
|
||||
ability.setStackDescription(list.get(i) + " - Deals " + hondlist.size() + " damage to target creature or player");
|
||||
AllZone.Stack.add(ability);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}// upkeep_Honden_of_Infinite_Rage
|
||||
|
||||
|
||||
private static void upkeep_Honden_of_Lifes_Web()
|
||||
{
|
||||
final String player = AllZone.Phase.getActivePlayer();
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(play.getCards());
|
||||
|
||||
list = list.getName("Honden of Life's Web");
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
final Ability ability = new Ability(list.get(i), "0")
|
||||
{
|
||||
public void resolve() {
|
||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
||||
CardList hondlist = new CardList();
|
||||
hondlist.addAll(Play.getCards());
|
||||
hondlist = hondlist.getType("Shrine");
|
||||
for (int j = 0; j < hondlist.size() ; j++)
|
||||
{
|
||||
Card crd = new Card();
|
||||
|
||||
crd.setOwner(player);
|
||||
crd.setController(player);
|
||||
|
||||
crd.setName("Spirit");
|
||||
crd.setImageName("C 1 1 Spirit");
|
||||
crd.setManaCost("");
|
||||
crd.setToken(true);
|
||||
|
||||
crd.addType("Creature");
|
||||
crd.addType("Spirit");
|
||||
|
||||
crd.setBaseAttack(1);
|
||||
crd.setBaseDefense(1);
|
||||
|
||||
PlayerZone addplay = AllZone.getZone(Constant.Zone.Play, player);
|
||||
addplay.add(crd);
|
||||
}
|
||||
}
|
||||
};
|
||||
ability.setStackDescription(list.get(i)+" - " + list.get(i).getController() + " puts a 1/1 colorless Spirit creature token into play for each Shrine he controls.");
|
||||
AllZone.Stack.add(ability);
|
||||
}
|
||||
|
||||
}// upkeep_Honden_of_Lifes_Web
|
||||
|
||||
private static void upkeep_Seizan_Perverter_of_Truth()
|
||||
{
|
||||
final String player = AllZone.Phase.getActivePlayer();
|
||||
|
||||
Reference in New Issue
Block a user