mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
add Steal Artifact (from original base Alpha)
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -4528,6 +4528,7 @@ res/cardsfolder/staunch_defenders.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/steadfast_guard.txt -text svneol=native#text/plain
|
res/cardsfolder/steadfast_guard.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/steadfastness.txt -text svneol=native#text/plain
|
res/cardsfolder/steadfastness.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/steady_progress.txt -text svneol=native#text/plain
|
res/cardsfolder/steady_progress.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/steal_artifact.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/steam_blast.txt -text svneol=native#text/plain
|
res/cardsfolder/steam_blast.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/steam_frigate.txt -text svneol=native#text/plain
|
res/cardsfolder/steam_frigate.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/steam_spitter.txt -text svneol=native#text/plain
|
res/cardsfolder/steam_spitter.txt -text svneol=native#text/plain
|
||||||
|
|||||||
9
res/cardsfolder/steal_artifact.txt
Normal file
9
res/cardsfolder/steal_artifact.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Steal Artifact
|
||||||
|
ManaCost:2 U U
|
||||||
|
Types:Enchantment Aura
|
||||||
|
Text:You control enchanted artifact.
|
||||||
|
K:Enchant artifact
|
||||||
|
K:enControlArtifact
|
||||||
|
SVar:Rarity:Uncommon
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/steal_artifact.jpg
|
||||||
|
End
|
||||||
@@ -34,6 +34,16 @@ class CardFactory_Auras {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int shouldControlArtifact(Card c) {
|
||||||
|
ArrayList<String> a = c.getKeyword();
|
||||||
|
for (int i = 0; i < a.size(); i++) {
|
||||||
|
if (a.get(i).toString().startsWith("enControlArtifact")) return i;
|
||||||
|
//if(a.get(i).toString().startsWith("enControlLand")) return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
public static Card getCard(final Card card, String cardName, Player owner) {
|
public static Card getCard(final Card card, String cardName, Player owner) {
|
||||||
|
|
||||||
Command standardUnenchant = new Command() {
|
Command standardUnenchant = new Command() {
|
||||||
@@ -2413,6 +2423,150 @@ class CardFactory_Auras {
|
|||||||
}// SpellAbility spell
|
}// SpellAbility spell
|
||||||
}// enControlCreature
|
}// enControlCreature
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For Control Magic type of auras (targeting Land, Artifact, Enchantment)
|
||||||
|
*/
|
||||||
|
if (shouldControlArtifact(card) != -1) {
|
||||||
|
int n = shouldControlArtifact(card);
|
||||||
|
if (n != -1) {
|
||||||
|
String parse = card.getKeyword().get(n).toString();
|
||||||
|
card.removeIntrinsicKeyword(parse);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* I borrowed this code from Control Magic aura code
|
||||||
|
*/
|
||||||
|
final SpellAbility spell = new Spell(card) {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlayAI() {
|
||||||
|
|
||||||
|
if(!super.canPlayAI()) return false;
|
||||||
|
|
||||||
|
CardList tgts = CardFactoryUtil.AI_getHumanArtifact(card, true);
|
||||||
|
CardListUtil.sortAttack(tgts);
|
||||||
|
CardListUtil.sortFlying(tgts);
|
||||||
|
|
||||||
|
if (tgts.isEmpty()) return false;
|
||||||
|
|
||||||
|
else {
|
||||||
|
setTargetCard(tgts.get(0));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}//canPlayAI()
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resolve() {
|
||||||
|
PlayerZone play = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
|
||||||
|
play.add(card);
|
||||||
|
|
||||||
|
Card c = getTargetCard();
|
||||||
|
|
||||||
|
if (AllZone.GameAction.isCardInPlay(c)
|
||||||
|
&& CardFactoryUtil.canTarget(card, c)) card.enchantCard(c);
|
||||||
|
|
||||||
|
}//resolve()
|
||||||
|
};//SpellAbility
|
||||||
|
card.clearSpellAbility();
|
||||||
|
card.addSpellAbility(spell);
|
||||||
|
|
||||||
|
Command onEnchant = new Command() {
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
if(card.isEnchanting()) {
|
||||||
|
Card crd = card.getEnchanting().get(0);
|
||||||
|
//set summoning sickness
|
||||||
|
if(crd.getKeyword().contains("Haste")) {
|
||||||
|
crd.setSickness(false);
|
||||||
|
} else {
|
||||||
|
crd.setSickness(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(false);
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(false);
|
||||||
|
|
||||||
|
PlayerZone from = AllZone.getZone(crd);
|
||||||
|
from.remove(crd);
|
||||||
|
|
||||||
|
crd.setController(card.getController());
|
||||||
|
|
||||||
|
PlayerZone to = AllZone.getZone(Constant.Zone.Battlefield, card.getController());
|
||||||
|
to.add(crd);
|
||||||
|
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(true);
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(true);
|
||||||
|
}
|
||||||
|
}//execute()
|
||||||
|
};//Command
|
||||||
|
|
||||||
|
Command onUnEnchant = new Command() {
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
if(card.isEnchanting()) {
|
||||||
|
Card crd = card.getEnchanting().get(0);
|
||||||
|
if(AllZone.GameAction.isCardInPlay(crd)) {
|
||||||
|
if(crd.getKeyword().contains("Haste")) {
|
||||||
|
crd.setSickness(false);
|
||||||
|
} else {
|
||||||
|
crd.setSickness(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(false);
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(false);
|
||||||
|
|
||||||
|
PlayerZone from = AllZone.getZone(crd);
|
||||||
|
from.remove(crd);
|
||||||
|
|
||||||
|
AllZone.Combat.removeFromCombat(crd);
|
||||||
|
|
||||||
|
Player opp = crd.getController().getOpponent();
|
||||||
|
crd.setController(opp);
|
||||||
|
|
||||||
|
PlayerZone to = AllZone.getZone(Constant.Zone.Battlefield, opp);
|
||||||
|
to.add(crd);
|
||||||
|
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Human_Battlefield).setTriggers(true);
|
||||||
|
((PlayerZone_ComesIntoPlay) AllZone.Computer_Battlefield).setTriggers(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}//execute()
|
||||||
|
};//Command
|
||||||
|
|
||||||
|
Command onLeavesPlay = new Command() {
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
if(card.isEnchanting()) {
|
||||||
|
Card crd = card.getEnchanting().get(0);
|
||||||
|
card.unEnchantCard(crd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};//Command
|
||||||
|
|
||||||
|
Input runtime = new Input() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showMessage() {
|
||||||
|
CardList perms = AllZoneUtil.getCardsInPlay();
|
||||||
|
perms = perms.filter(new CardListFilter() {
|
||||||
|
public boolean addCard(Card c) {
|
||||||
|
return c.isArtifact() && CardFactoryUtil.canTarget(card, c);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
stopSetNext(CardFactoryUtil.input_targetSpecific(spell, perms, "Select target artifact", true, false));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
card.setSVar("PlayMain1", "TRUE");
|
||||||
|
|
||||||
|
card.addEnchantCommand(onEnchant);
|
||||||
|
card.addUnEnchantCommand(onUnEnchant);
|
||||||
|
card.addLeavesPlayCommand(onLeavesPlay);
|
||||||
|
|
||||||
|
spell.setBeforePayMana(runtime);
|
||||||
|
}// SpellAbility spell
|
||||||
|
}// enControlCreature
|
||||||
|
|
||||||
return card;
|
return card;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user