Advertisement
KujiUn

PTU Move Reader

Mar 15th, 2014
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.40 KB | None | 0 0
  1. use strict;
  2. use warnings;
  3.  
  4. open FILIN, "<RawMoveList.txt" or die $!;
  5. open FILOUT, ">ProcessedMoveList.txt" or die $!;
  6.  
  7. my $effectwrite = 0;
  8. my $firsttime = 1;
  9.  
  10. print FILOUT " ||~ Name ||~ Freq ||~ AC ||~ Type ||||~ Damage ||~ Range ||~ Special Effect ||~ Contest ||\n";
  11. my %data = ();
  12.  
  13. sub outputMove {
  14.     $data{DB} = "-" unless $data{DB};
  15.     $data{AC} = "None" unless $data{AC};
  16.     $data{Range} = "See Effect" unless $data{Range};
  17.     $data{Class} = "[[image img/A.png]]" if $data{Class} eq "Physical";
  18.     $data{Class} = "[[image img/S.png]]" if $data{Class} eq "Special";
  19.     $data{Class} = "[[image img/N.png]]" if $data{Class} eq "Status";
  20.     $data{Contest} = $data{ContestType} . " - " . $data{ContestEffect};
  21.    
  22.     my $spacer = " || ";
  23.    
  24.     my $outline = "||~ ";
  25.     $outline .= ($data{Move} . $spacer);
  26.     $outline .= ($data{Frequency} . $spacer);
  27.     $outline .= ($data{AC} . $spacer);
  28.     $outline .= ($data{Type} . $spacer);
  29.     $outline .= ($data{DB} . $spacer);
  30.     $outline .= ($data{Class} . $spacer);
  31.     $outline .= ($data{Range} . $spacer);
  32.     $outline .= ($data{Effect} . $spacer);
  33.     $outline .= ($data{Contest} . $spacer);
  34.     chop $outline;
  35.     $outline .= "\n";
  36.    
  37.     print FILOUT $outline;
  38.    
  39.     %data = ();
  40. }
  41.  
  42. sub extract {
  43.     my $l = $_[0];
  44.     my $filter = $_[1];
  45.    
  46.     return 0 unless $l =~ m/^$filter: /;
  47.    
  48.     $l =~ s/^$filter: //;
  49.     $filter =~ s/ //;
  50.     $data{$filter} = $l;
  51.     return 1;
  52. }
  53.  
  54. while (my $line = <FILIN>) {
  55.     chomp $line;
  56.     next unless ($line);
  57.     next if ($line =~ m/Moves$/ and not $effectwrite);
  58.     next if ($line =~ m/^\d{3}$/ );
  59.    
  60.     if ($firsttime) {
  61.         $firsttime = 0;
  62.     } elsif ($line =~ m/^Move: /) {
  63.         outputMove();
  64.     }
  65.     if ($effectwrite) {
  66.         if ($line =~ m/^Contest Type: /) {
  67.             $effectwrite = 0;
  68.         } else {
  69.             $data{Effect} .= " $line";
  70.             next;
  71.         }
  72.     }
  73.    
  74.     if ($line =~ m/^Damage Base/) {
  75.         $line =~ s/Damage Base/DB/;
  76.         $data{DB} = $line;
  77.         next;
  78.     }
  79.    
  80.     $effectwrite = 1 if ($line =~ m/^Effect: /);
  81.    
  82.     if ($line =~ m/^Special: /) {
  83.         $line =~ s/Special: //;
  84.         $data{Effect} .= " //$line//";
  85.         next;
  86.     }
  87.    
  88.     $effectwrite = 1 if ($line =~ m/^Range: / and $line =~ m/Set-Up/);
  89.    
  90.     extract($line, "Move") or
  91.     extract($line, "Type") or
  92.     extract($line, "Frequency") or
  93.     extract($line, "AC") or
  94.     extract($line, "Class") or
  95.     extract($line, "Range") or
  96.     extract($line, "Effect") or
  97.     extract($line, "Contest Type") or
  98.     extract($line, "Contest Effect");
  99. }
  100.  
  101. outputMove();
  102.  
  103. close FILIN;
  104. close FILOUT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement