mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
update gen-card.pl to support adding multiple versions of a card to a set
This commit is contained in:
parent
f07cc4a7f2
commit
a9f9407fc2
1 changed files with 74 additions and 66 deletions
|
|
@ -5,7 +5,6 @@
|
||||||
use Text::Template;
|
use Text::Template;
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
|
|
||||||
my $authorFile = 'author.txt';
|
my $authorFile = 'author.txt';
|
||||||
my $dataFile = 'mtg-cards-data.txt';
|
my $dataFile = 'mtg-cards-data.txt';
|
||||||
my $setsFile = 'mtg-sets-data.txt';
|
my $setsFile = 'mtg-sets-data.txt';
|
||||||
|
|
@ -32,7 +31,7 @@ sub fixCost {
|
||||||
|
|
||||||
my $author;
|
my $author;
|
||||||
if (-e $authorFile) {
|
if (-e $authorFile) {
|
||||||
open (DATA, $authorFile) || die "can't open $authorFile : $!";
|
open(DATA, $authorFile) || die "can't open $authorFile : $!";
|
||||||
$author = <DATA>;
|
$author = <DATA>;
|
||||||
chomp $author;
|
chomp $author;
|
||||||
close(DATA);
|
close(DATA);
|
||||||
|
|
@ -40,32 +39,32 @@ if (-e $authorFile) {
|
||||||
$author = 'anonymous';
|
$author = 'anonymous';
|
||||||
}
|
}
|
||||||
|
|
||||||
open (DATA, $dataFile) || die "can't open $dataFile : $!";
|
open(DATA, $dataFile) || die "can't open $dataFile : $!";
|
||||||
while(my $line = <DATA>) {
|
while (my $line = <DATA>) {
|
||||||
my @data = split('\\|', $line);
|
my @data = split('\\|', $line);
|
||||||
$cards{$data[0]}{$data[1]} = \@data;
|
$cards{$data[0]}{$data[1]}{$data[2]} = \@data;
|
||||||
}
|
}
|
||||||
close(DATA);
|
close(DATA);
|
||||||
|
|
||||||
open (DATA, $setsFile) || die "can't open $setsFile : $!";
|
open(DATA, $setsFile) || die "can't open $setsFile : $!";
|
||||||
while(my $line = <DATA>) {
|
while (my $line = <DATA>) {
|
||||||
my @data = split('\\|', $line);
|
my @data = split('\\|', $line);
|
||||||
$sets{$data[0]}= $data[1];
|
$sets{$data[0]} = $data[1];
|
||||||
#print "$data[0]--$data[1]\n"
|
#print "$data[0]--$data[1]\n"
|
||||||
}
|
}
|
||||||
close(DATA);
|
close(DATA);
|
||||||
|
|
||||||
open (DATA, $knownSetsFile) || die "can't open $knownSetsFile : $!";
|
open(DATA, $knownSetsFile) || die "can't open $knownSetsFile : $!";
|
||||||
while(my $line = <DATA>) {
|
while (my $line = <DATA>) {
|
||||||
my @data = split('\\|', $line);
|
my @data = split('\\|', $line);
|
||||||
$knownSets{$data[0]}= $data[1];
|
$knownSets{$data[0]} = $data[1];
|
||||||
}
|
}
|
||||||
close(DATA);
|
close(DATA);
|
||||||
|
|
||||||
open (DATA, $keywordsFile) || die "can't open $keywordsFile : $!";
|
open(DATA, $keywordsFile) || die "can't open $keywordsFile : $!";
|
||||||
while(my $line = <DATA>) {
|
while (my $line = <DATA>) {
|
||||||
my @data = split('\\|', $line);
|
my @data = split('\\|', $line);
|
||||||
$keywords{toCamelCase($data[0])}= $data[1];
|
$keywords{toCamelCase($data[0])} = $data[1];
|
||||||
}
|
}
|
||||||
close(DATA);
|
close(DATA);
|
||||||
|
|
||||||
|
|
@ -97,12 +96,11 @@ if (!$cardName) {
|
||||||
chomp $cardName;
|
chomp $cardName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!exists $cards{$cardName}) {
|
if (!exists $cards{$cardName}) {
|
||||||
my $possible;
|
my $possible;
|
||||||
foreach $possible (sort keys (%cards)) {
|
foreach $possible (sort keys(%cards)) {
|
||||||
if ($possible =~ m/$cardName/img && $cardName =~ m/..../) {
|
if ($possible =~ m/$cardName/img && $cardName =~ m/..../) {
|
||||||
print ("Did you mean $possible?\n");
|
print("Did you mean $possible?\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
die "Card name doesn't exist: $cardName\n";
|
die "Card name doesn't exist: $cardName\n";
|
||||||
|
|
@ -116,16 +114,16 @@ my $originalName = $cardName;
|
||||||
|
|
||||||
# Remove the // from name of split cards
|
# Remove the // from name of split cards
|
||||||
if (index($cardName, $splitDelimiter) != -1) {
|
if (index($cardName, $splitDelimiter) != -1) {
|
||||||
$cardName =~ s/$splitDelimiter/$empty/g;
|
$cardName =~ s/$splitDelimiter/$empty/g;
|
||||||
$cardTemplate = 'cardSplitClass.tmpl';
|
$cardTemplate = 'cardSplitClass.tmpl';
|
||||||
$splitSpell = 'true';
|
$splitSpell = 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Check if card is already implemented
|
# Check if card is already implemented
|
||||||
my $fileName = "../Mage.Sets/src/mage/cards/".lc(substr($cardName, 0, 1))."/".toCamelCase($cardName).".java";
|
my $fileName = "../Mage.Sets/src/mage/cards/" . lc(substr($cardName, 0, 1)) . "/" . toCamelCase($cardName) . ".java";
|
||||||
if(-e $fileName) {
|
if (-e $fileName) {
|
||||||
die "$cardName is already implemented.\n$fileName\n";
|
die "$cardName is already implemented.\n$fileName\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generate lines to corresponding sets
|
# Generate lines to corresponding sets
|
||||||
|
|
@ -135,45 +133,55 @@ $vars{'cardNameFirstLetter'} = lc substr($cardName, 0, 1);
|
||||||
my @card;
|
my @card;
|
||||||
|
|
||||||
foreach my $setName (keys %{$cards{$originalName}}) {
|
foreach my $setName (keys %{$cards{$originalName}}) {
|
||||||
my $setFileName = "../Mage.Sets/src/mage/sets/".$knownSets{$setName}.".java";
|
my $keyCount = keys %{$cards{$originalName}{$setName}};
|
||||||
@card = @{${cards{$originalName}{$setName}}};
|
my $printingString;
|
||||||
my $line = " cards.add(new SetCardInfo(\"".$card[0]."\", ".$card[2].", Rarity.".$raritiesConversion{$card[3]}.", mage.cards.".$vars{'cardNameFirstLetter'}.".".$vars{'className'}.".class));\n";
|
if (($keyCount) > 1) {
|
||||||
@ARGV = ($setFileName);
|
$printingString = ", NON_FULL_USE_VARIOUS";
|
||||||
$^I = '.bak';
|
} else {
|
||||||
my $last;
|
$printingString = "";
|
||||||
my $lastName;
|
}
|
||||||
my $currName;
|
foreach my $cardNumber (sort keys %{$cards{$originalName}{$setName}}) {
|
||||||
while (<>) {
|
my $setFileName = "../Mage.Sets/src/mage/sets/" . $knownSets{$setName} . ".java";
|
||||||
if ($_ !~ m/cards.add/) {
|
@card = @{${cards {$originalName}{ $setName }{$cardNumber}}};
|
||||||
if (defined($last)) {
|
my $line = " cards.add(new SetCardInfo(\"" . $card[0] . "\", " . $card[2] . ", Rarity." . $raritiesConversion{$card[3]} . ", mage.cards." . $vars{'cardNameFirstLetter'} . "." . $vars{'className'} . ".class" . $printingString . "));\n";
|
||||||
print $last;
|
|
||||||
}
|
|
||||||
# print card line as last
|
|
||||||
if (defined($currName) && ($cardName cmp $currName) > 0) {
|
|
||||||
print $line;
|
print $line;
|
||||||
undef $currName;
|
@ARGV = ($setFileName);
|
||||||
}
|
$^I = '.bak';
|
||||||
$last = $_;
|
my $last;
|
||||||
print $last if eof;
|
my $lastName;
|
||||||
next;
|
my $currName;
|
||||||
}
|
while (<>) {
|
||||||
|
if ($_ !~ m/cards.add/) {
|
||||||
|
if (defined($last)) {
|
||||||
|
print $last;
|
||||||
|
}
|
||||||
|
# print card line as last
|
||||||
|
if (defined($currName) && ($cardName cmp $currName) > 0) {
|
||||||
|
print $line;
|
||||||
|
undef $currName;
|
||||||
|
}
|
||||||
|
$last = $_;
|
||||||
|
print $last if eof;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
($lastName) = $last =~ m/"(.*?)"/;
|
($lastName) = $last =~ m/"(.*?)"/;
|
||||||
($currName) = $_ =~ m/"(.*?)"/;
|
($currName) = $_ =~ m/"(.*?)"/;
|
||||||
print $last;
|
print $last;
|
||||||
$last = $_;
|
$last = $_;
|
||||||
# print card line as first
|
# print card line as first
|
||||||
if (!defined($lastName) && defined($currName) && ($currName cmp $cardName) > 0) {
|
if (!defined($lastName) && defined($currName) && ($currName cmp $cardName) > 0) {
|
||||||
print $line;
|
print $line;
|
||||||
}
|
}
|
||||||
# print card line in the middle
|
# print card line in the middle
|
||||||
if (defined($lastName) && defined($currName) && ($cardName cmp $lastName) > 0 && ($currName cmp $cardName) > 0) {
|
if (defined($lastName) && defined($currName) && ($cardName cmp $lastName) > -1 && ($currName cmp $cardName) > 0) {
|
||||||
print $line;
|
print $line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unlink $setFileName.".bak";
|
unlink $setFileName . ".bak";
|
||||||
print "$setFileName\n";
|
print "$setFileName\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generate the card
|
# Generate the card
|
||||||
|
|
@ -206,11 +214,11 @@ while ($type =~ m/([a-zA-Z]+)( )*/g) {
|
||||||
if (@types) {
|
if (@types) {
|
||||||
my $st = uc($1);
|
my $st = uc($1);
|
||||||
$vars{'subType'} .= "\n this.subtype.add(SubType.$st);";
|
$vars{'subType'} .= "\n this.subtype.add(SubType.$st);";
|
||||||
$vars{'hasSubTypes'} = 'true';
|
$vars{'hasSubTypes'} = 'true';
|
||||||
} else {
|
} else {
|
||||||
my $st = uc($1);
|
my $st = uc($1);
|
||||||
$vars{'subType'} .= "\n this.supertype.add(SuperType.$st);";
|
$vars{'subType'} .= "\n this.supertype.add(SuperType.$st);";
|
||||||
$vars{'hasSuperTypes'} = 'true';
|
$vars{'hasSuperTypes'} = 'true';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -220,9 +228,9 @@ $vars{'abilitiesImports'} = '';
|
||||||
$vars{'abilities'} = '';
|
$vars{'abilities'} = '';
|
||||||
|
|
||||||
my $strong = "<strong>";
|
my $strong = "<strong>";
|
||||||
$cardAbilities =~ s/$strong/$empty/g;
|
$cardAbilities =~ s/$strong/$empty/g;
|
||||||
$strong = "</strong>";
|
$strong = "</strong>";
|
||||||
$cardAbilities =~ s/$strong/$empty/g;
|
$cardAbilities =~ s/$strong/$empty/g;
|
||||||
$cardAbilities =~ s/\&/\|/g;
|
$cardAbilities =~ s/\&/\|/g;
|
||||||
|
|
||||||
my @abilities = split('\$', $cardAbilities);
|
my @abilities = split('\$', $cardAbilities);
|
||||||
|
|
@ -282,8 +290,8 @@ foreach my $ability (@abilities) {
|
||||||
if ($1 =~ m/(^.*\s.*)/g) {
|
if ($1 =~ m/(^.*\s.*)/g) {
|
||||||
$vars{'abilities'} .= "\n TargetPermanent auraTarget = new TargetPermanent(filter);";
|
$vars{'abilities'} .= "\n TargetPermanent auraTarget = new TargetPermanent(filter);";
|
||||||
} else {
|
} else {
|
||||||
$vars{'abilities'} .= "\n TargetPermanent auraTarget = new Target". toCamelCase($1) . "Permanent();";
|
$vars{'abilities'} .= "\n TargetPermanent auraTarget = new Target" . toCamelCase($1) . "Permanent();";
|
||||||
$vars{'abilitiesImports'} .= "\nimport mage.target.common.Target". toCamelCase($1) . "Permanent;";
|
$vars{'abilitiesImports'} .= "\nimport mage.target.common.Target" . toCamelCase($1) . "Permanent;";
|
||||||
}
|
}
|
||||||
$vars{'abilities'} .= "\n this.getSpellAbility().addTarget(auraTarget);";
|
$vars{'abilities'} .= "\n this.getSpellAbility().addTarget(auraTarget);";
|
||||||
$vars{'abilities'} .= "\n this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));";
|
$vars{'abilities'} .= "\n this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue