diff --git a/Utils/cardClass.tmpl b/Utils/cardClass.tmpl index c77350bfa2..27c2518e07 100644 --- a/Utils/cardClass.tmpl +++ b/Utils/cardClass.tmpl @@ -29,7 +29,11 @@ package mage.cards.[=$cardNameFirstLetter=]; import java.util.UUID;[= if ($power || $power eq 0) { - $OUT .= "\nimport mage.MageInt;" + if ($planeswalker) { + $OUT .= "\nimport mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;" + }else { + $OUT .= "\nimport mage.MageInt;" + } } =][=$abilitiesImports=] import mage.cards.CardImpl; @@ -46,8 +50,12 @@ public class [=$className=] extends CardImpl { super(ownerId, setInfo, new CardType[]{[=$type=]}, "[=$manaCost=]"); [=$subType=][=$colors=][= if ($power || $power eq 0) { - $OUT .= "\n this.power = new MageInt($power);"; - $OUT .= "\n this.toughness = new MageInt($toughness);"; + if ($planeswalker) { + $OUT .= "\n this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility($power));"; + } else { + $OUT .= "\n this.power = new MageInt($power);"; + $OUT .= "\n this.toughness = new MageInt($toughness);"; + } } =][=$abilities=] } diff --git a/Utils/cardSplitClass.tmpl b/Utils/cardSplitClass.tmpl new file mode 100644 index 0000000000..0a1568733f --- /dev/null +++ b/Utils/cardSplitClass.tmpl @@ -0,0 +1,66 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.[=$cardNameFirstLetter=]; + +import java.util.UUID;[= +if ($power || $power eq 0) { + $OUT .= "\nimport mage.MageInt;" +} +=][=$abilitiesImports=] +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; + +/** + * + * @author [=$author=] + */ +public class [=$className=] extends SplitCard { + + public [=$className=](UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{[=$type=]}, "[=$manaCost=]"); + [=$subType=][=$colors=][= + + // super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{3}{R}", "{2}{U}", SpellAbilityType.SPLIT_AFTERMATH); + +if ($power || $power eq 0) { + $OUT .= "\n this.power = new MageInt($power);"; + $OUT .= "\n this.toughness = new MageInt($toughness);"; +} +=][=$abilities=] + } + + public [=$className=](final [=$className=] card) { + super(card); + } + + @Override + public [=$className=] copy() { + return new [=$className=](this); + } +} diff --git a/Utils/gen-card.pl b/Utils/gen-card.pl index 42dff27594..6fe02e2421 100755 --- a/Utils/gen-card.pl +++ b/Utils/gen-card.pl @@ -90,7 +90,7 @@ $raritiesConversion{'Bonus'} = 'BONUS'; # Get card name my $cardName = $ARGV[0]; -if(!$cardName) { +if (!$cardName) { print 'Enter a card name: '; $cardName = ; chomp $cardName; @@ -107,6 +107,18 @@ if (!exists $cards{$cardName}) { die "Card name doesn't exist: $cardName\n"; } +my $cardTemplate = 'cardClass.tmpl'; +my $splitDelimiter = '//'; +my $splitSpell = 'false'; + +# Remove the // from name of split cards +if (index($cardName, $splitDelimiter) != -1) { + $cardName =~ s/$splitDelimiter/""/g; + $cardTemplate = 'cardSplitClass.tmpl'; + $splitSpell = 'true'; +} + + # Check if card is already implemented my $fileName = "../Mage.Sets/src/mage/cards/".lc(substr($cardName, 0, 1))."/".toCamelCase($cardName).".java"; if(-e $fileName) { @@ -164,18 +176,24 @@ foreach my $setName (keys %{$cards{$cardName}}) { # Generate the the card my $result; -my $template = Text::Template->new(TYPE => 'FILE', SOURCE => 'cardClass.tmpl', DELIMITERS => [ '[=', '=]' ]); +my $template = Text::Template->new(TYPE => 'FILE', SOURCE => $cardTemplate, DELIMITERS => [ '[=', '=]' ]); $vars{'author'} = $author; $vars{'manaCost'} = fixCost($card[4]); $vars{'power'} = $card[6]; $vars{'toughness'} = $card[7]; my @types; +$vars{'planeswalker'} = 'false'; $vars{'subType'} = ''; +my $cardAbilities = $card[8]; my $type = $card[5]; while ($type =~ m/([a-zA-Z]+)( )*/g) { if (exists($cardTypes{$1})) { - push(@types, $cardTypes{$1}); + push(@types, $cardTypes{$1}); + if ($cardTypes{$1} eq $cardTypes{'Planeswalker'}) { + $vars{'planeswalker'} = 'true'; + $cardAbilities = $card[7]; + } } else { if (@types) { $vars{'subType'} .= "\n this.subtype.add(\"$1\");"; @@ -190,7 +208,8 @@ $vars{'type'} = join(', ', @types); $vars{'abilitiesImports'} = ''; $vars{'abilities'} = ''; -my @abilities = split('\$', $card[8]); + +my @abilities = split('\$', $cardAbilities); foreach my $ability (@abilities) { $ability =~ s/ .+?<\/i>//g; @@ -206,6 +225,7 @@ foreach my $ability (@abilities) { $kw = $kk; } } + if ($keywords{$kw}) { $vars{'abilities'} .= "\n // " . ucfirst($kwUnchanged); if ($keywords{$kw} eq 'instance') {