changeset 216:f121fb47c65f misc

Implement support for gathering skill information. Only 'grapple' is supported at the moment, tho.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 05 Aug 2011 22:27:16 +0300
parents e0a4ddf06d79
children 138a3143a1fd
files log2template.pl
diffstat 1 files changed, 36 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/log2template.pl	Sun Jul 31 06:05:28 2011 +0300
+++ b/log2template.pl	Fri Aug 05 22:27:16 2011 +0300
@@ -170,6 +170,7 @@
 my %monsters = ();
 my %aligns = ();
 my %spells = ();
+my %skills = ();
 my %races = ();
 my %ids = ();
 
@@ -526,6 +527,9 @@
     # Error, reset parsing state
     set_state(0, $s);
   }
+  elsif ($s =~ /^([A-Za-z][A-Za-z\ -]+?) starts grappling [A-Z][a-z]+\.$/) {
+    $skills{$1}{$line} = "grapple";
+  }
 }
 
 
@@ -720,9 +724,39 @@
     print $$mob{"area"};
   }
 
+
+print "\n";
+
+  # Skills
+  my $hasskills = 0;
+  if (defined($skills{$mname}) && length($mname) >= 4) {
+    my $maxdist = length($mname) * 150 * length($mname);
+    my $mindist = length($mname) * -5 * length($mname);
+    my %mskills = ();
+    foreach my $sline (sort { $a <=> $b } keys %{$skills{$mname}}) {
+      my $offs = $sline - $mline;
+#      print STDERR "TEST $mname @ $offs vs $mindist...$maxdist : '".$skills{$mname}{$sline}."'\n";
+      if ($offs < $maxdist && $offs > $mindist) {
+        print STDERR "SPELL $mname \@ $offs / $mindist...$maxdist : '".$skills{$mname}{$sline}."'\n" if ($opt_debug);
+        $mskills{$skills{$mname}{$sline}} = 1;
+        $hasskills++;
+      }
+    }
+    my $n = 1;
+    foreach my $skill (sort { $a cmp $b } keys %mskills) {
+      print "| skill".($n < 2 ? "" : $n)." = $skill\n";
+      $n++;
+    }
+  }
+
+unless ($hasskills > 0) {
+print "| skill = 
+| skill# = 
+";
+}
+
+
   print "
-| skill = 
-| skill# = 
 | exp = ";
 
   if (defined($$mob{"exp"})) {