gen-card.pl some improvements for Planeswalker and split cards.

This commit is contained in:
LevelX2 2017-06-29 17:55:29 +02:00
parent 667d596f43
commit c2d2ab2148
3 changed files with 101 additions and 7 deletions

View file

@ -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=]
}

66
Utils/cardSplitClass.tmpl Normal file
View file

@ -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);
}
}

View file

@ -90,7 +90,7 @@ $raritiesConversion{'Bonus'} = 'BONUS';
# Get card name
my $cardName = $ARGV[0];
if(!$cardName) {
if (!$cardName) {
print 'Enter a card name: ';
$cardName = <STDIN>;
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>.+?<\/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') {