abTgtPTPump
 Posted: 26 Jun 2009, 02:10
Posted: 26 Jun 2009, 02:10Permanents with the ability - 
{manacost/tap cost}: Target creature gets +p/+t until end of turn.
Flowstone Overseer
2 R R R
Creature Beast
no text
4/4
abTgtPTPump R R:+/-1
Ghost Warden
1 W
Creature Spirit
no text
1/1
abTgtPTPump T:+1/+1
Nantuko Disciple
3 G
Creature Insect Druid
no text
2/2
abTgtPTPump G T:+2/+2
			{manacost/tap cost}: Target creature gets +p/+t until end of turn.
Flowstone Overseer
2 R R R
Creature Beast
no text
4/4
abTgtPTPump R R:+/-1
Ghost Warden
1 W
Creature Spirit
no text
1/1
abTgtPTPump T:+1/+1
Nantuko Disciple
3 G
Creature Insect Druid
no text
2/2
abTgtPTPump G T:+2/+2
- Code: Select all
- private final int shouldAbTgtPTPumpCard(Card c)
 {
 ArrayList<String> a = c.getKeyword();
 for (int i = 0; i < a.size(); i++)
 if (a.get(i).toString().startsWith("abTgtPTPump"))
 return i;
 
 return -1;
 }
- Code: Select all
- while (shouldAbTgtPTPumpCard(card) != -1)
 {
 int n = shouldAbTgtPTPumpCard(card);
 if (n != -1)
 {
 String parse = card.getKeyword().get(n).toString();
 card.removeIntrinsicKeyword(parse);
 
 String k[] = parse.split(":");
 String pt[] = k[1].split("/");
 
 final int attack[] = new int[1];
 final int defense[] = new int[1];
 
 attack[0] = Integer.parseInt(pt[0].replace("+", ""));
 defense[0] = Integer.parseInt(pt[1].replace("+", ""));
 String tmpCost = k[0].substring(10);
 boolean tapCost = false;
 boolean tapOnlyCost = false;
 
 if (tmpCost.contains("T"))
 {
 tapCost = true;
 tmpCost = tmpCost.replace("T", "");
 tmpCost = tmpCost.trim();
 if (tmpCost.length() == 0)
 tapOnlyCost = true;
 }
 
 final String manaCost = tmpCost;
 
 String tmpDesc = new String();
 tmpDesc = "Target creature gets ";
 if (attack[0] > 0)
 tmpDesc = tmpDesc + "+" + attack[0];
 else
 tmpDesc = tmpDesc + attack[0];
 tmpDesc = tmpDesc + "/";
 if (defense[0] > 0)
 tmpDesc = tmpDesc + "+" + defense[0];
 else
 tmpDesc = tmpDesc + defense[0];
 tmpDesc = tmpDesc + " until end of turn.";
 final String Desc = tmpDesc;
 
 if (!tapCost)
 {
 final SpellAbility ability = new Ability_Activated(card, manaCost)
 {
 private static final long serialVersionUID = -845173064437485113L;
 
 public boolean canPlay()
 {
 if (CardFactoryUtil.canUseAbility(card) && AllZone.GameAction.isCardInPlay(card) &&
 !card.isFaceDown())
 return true;
 else
 return false;
 }
 public boolean canPlayAI()
 {
 CardList list = getAttackers();
 if (list.isEmpty())
 return false;
 else
 {
 if (list.get(0).getNetDefense() + defense[0] < 1)
 return false;
 Random r = new Random();
 if (r.nextFloat() <= Math.pow(.6667, card.getAbilityUsed()))
 {
 setTargetCard(list.get(0));
 return true;
 }
 else
 return false;
 }
 }//canPlayAI
 public CardList getAttackers()
 {
 Card[] c = ComputerUtil.getAttackers().getAttackers();
 CardList list = new CardList(c);
 
 return list;
 }//getAttacker
 public void resolve()
 {
 if (AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()))
 {
 final Card[] creature = new Card[1];
 
 creature[0] = getTargetCard();
 creature[0].addTempAttackBoost(attack[0]);
 creature[0].addTempDefenseBoost(defense[0]);
 
 card.setAbilityUsed(card.getAbilityUsed()+1);
 
 final Command EOT = new Command()
 {
 private static final long serialVersionUID = 122944434978198700L;
 public void execute()
 {
 if (AllZone.GameAction.isCardInPlay(creature[0]))
 {
 creature[0].addTempAttackBoost(-attack[0]);
 creature[0].addTempDefenseBoost(-defense[0]);
 }
 }
 };//EOT
 AllZone.EndOfTurn.addUntil(EOT);
 }
 }//resolve
 };//ability
 ability.setDescription(manaCost+": "+Desc);
 ability.setStackDescription(Desc);
 ability.setBeforePayMana(CardFactoryUtil.input_targetCreature(ability));
 card.addSpellAbility(ability);
 }//!tapCost
 
 if (tapOnlyCost)
 {
 final SpellAbility ability = new Ability_Tap(card)
 {
 private static final long serialVersionUID = 6723777240105966031L;
 
 public boolean canPlay()
 {
 boolean sick = true;
 if (!card.hasSickness() || !card.isCreature())
 sick = false;
 if (card.isUntapped() && CardFactoryUtil.canUseAbility(card) &&
 AllZone.GameAction.isCardInPlay(card) && !sick && !card.isFaceDown())
 return true;
 else
 return false;
 }//canPlay
 public boolean canPlayAI()
 {
 CardList list = getAttackers();
 if (list.isEmpty())
 return false;
 else
 if (list.get(0).getNetDefense() + defense[0] < 1)
 return false;
 if (CardFactoryUtil.AI_doesCreatureAttack(card))
 return false;
 setTargetCard(list.get(0));
 return true;
 }//canPlayAI
 public CardList getAttackers()
 {
 Card[] c = ComputerUtil.getAttackers().getAttackers();
 CardList list = new CardList(c);
 list.remove(card);
 return list;
 }
 public void resolve()
 {
 if (AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()))
 {
 final Card[] creature = new Card[1];
 
 creature[0] = getTargetCard();
 creature[0].addTempAttackBoost(attack[0]);
 creature[0].addTempDefenseBoost(defense[0]);
 
 final Command EOT = new Command()
 {
 private static final long serialVersionUID = -852905560563053752L;
 public void execute()
 {
 if (AllZone.GameAction.isCardInPlay(creature[0]))
 {
 creature[0].addTempAttackBoost(-attack[0]);
 creature[0].addTempDefenseBoost(-defense[0]);
 }
 }
 };//EOT
 AllZone.EndOfTurn.addUntil(EOT);
 }
 }//resolve
 };//ability
 ability.setDescription("tap: "+Desc);
 ability.setStackDescription(Desc);
 ability.setBeforePayMana(CardFactoryUtil.input_targetCreature_NoCost_TapAbility((Ability_Tap)ability));
 card.addSpellAbility(ability);
 }//tapOnlyCost
 
 if (!tapOnlyCost && tapCost)
 {
 final SpellAbility ability = new Ability_Tap(card, manaCost)
 {
 private static final long serialVersionUID = 2749576299299014851L;
 
 public boolean canPlay()
 {
 boolean sick = true;
 if (!card.hasSickness() || !card.isCreature())
 sick = false;
 if (card.isUntapped() && CardFactoryUtil.canUseAbility(card) &&
 AllZone.GameAction.isCardInPlay(card) && !sick && !card.isFaceDown())
 return true;
 else
 return false;
 }//canPlay
 public boolean canPlayAI()
 {
 CardList list = getAttackers();
 if (list.isEmpty())
 return false;
 else
 if (list.get(0).getNetDefense() + defense[0] < 1)
 return false;
 if (CardFactoryUtil.AI_doesCreatureAttack(card))
 return false;
 setTargetCard(list.get(0));
 return true;
 }//canPlayAI
 public CardList getAttackers()
 {
 Card[] c = ComputerUtil.getAttackers().getAttackers();
 CardList list = new CardList(c);
 list.remove(card);
 return list;
 }//getAttackers
 public void resolve()
 {
 if (AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()))
 {
 final Card[] creature = new Card[1];
 
 creature[0] = getTargetCard();
 creature[0].addTempAttackBoost(attack[0]);
 creature[0].addTempDefenseBoost(defense[0]);
 
 final Command EOT = new Command()
 {
 private static final long serialVersionUID = 8179097336678296338L;
 public void execute()
 {
 if (AllZone.GameAction.isCardInPlay(creature[0]))
 {
 creature[0].addTempAttackBoost(-attack[0]);
 creature[0].addTempDefenseBoost(-defense[0]);
 }
 }
 };//EOT
 AllZone.EndOfTurn.addUntil(EOT);
 }
 }//resolve
 };//ability
 ability.setDescription(manaCost+ ", tap: "+Desc);
 ability.setStackDescription(Desc);
 ability.setBeforePayMana(CardFactoryUtil.input_targetCreature(ability));
 card.addSpellAbility(ability);
 }//!tapCost
 }
 }//while

 
 

 
    
  
 