2010-10-05, 08:04 PM
Devil Wrote:Shield Mastery
"100% increased physical and magical defense"
Does Shield Mastery double the total wdef/mdef now? Or only the mere shield and is it still useless?
Venom
"Venom's effects do not stack"
Doesn't Venom stack 3 times anymore? Then Venom has become a very weak skill... :o 140% per second... that's a mere 10k dmg / sec...
Anyway, GL with the BB skill tables! :+)
Shield Mastery multiplies total defense, and the description says Venom does not stack. I don't have a 4th job Thief in KMS to test it, but I'd be willing to bet it doesn't.
Instead of getting work done, I just wasted a good 2 hours improving my script and adding range/notes functionality. Posting shortly.
Edit: Updated. My script, if anyone's curious:
Code:
[noparse]
#!usr/bin/perl
#Converts a skill data file to a formatted BBcode table.
#skill data format:
#
#!Class Name
#Skill ID Skill Name Skill Description Max Level Skill Detail Formula Notes Range
#1001003 Iron Body Temporarily increases your weapon defense. 20 MP %s; Weapon def. +%s for %s seconds 6+2*u(x/5), 10*x, 100+10*x
#@
use warnings;
use strict;
use POSIX qw(ceil floor);
die "Usage: perl $0 file" unless (@ARGV);
my $file = shift(@ARGV);
open (FILE, $file);
while (<FILE>)
{
next unless (/^[0-9\!\@]/);
# clean excel data a bit
chomp;
tr/"//d;
if (/^!([^\t]+)/) { print "[spoiler=\"", $1, "\"]\n\n"; }
elsif (/@/) { print "[\/spoiler]\n\n"; }
else { printTable(); }
}
close $file;
sub calc #(@f,$lvl) converts functions in skill strings to ones that perl can evaluate
{
my ($f, $lvl) = @_;
$f =~ s/x/$lvl/;
$f =~ s/d/floor/;
$f =~ s/u/ceil/;
return eval($f);
}
sub rangeURL #($range) gets a display URL for the given coordinates
{
my ($ltx, $lty, $rbx, $rby) = split(/, /, shift(@_));
my $rangeURL = sprintf('http://www.southperry.net/maplerange.php?ltx=%s<y=%s&rbx=%s&rby=%s&size=1024', $ltx, $lty, $rbx, $rby);
my $nameRange;
if ($ltx == 0) { $nameRange = abs($rbx); }
else { $nameRange = abs($ltx); }
return '[url=.$rangeURL.]'.$nameRange.'% Range[/url]';
}
sub printTable #prints table for each line of data
{
my @data = split /\t/;
my ($id, $name, $desc, $maxlvl, $detail, $formula, $notes, $range) = @data;
my @formula = split(/, /, $formula);
$desc =~ s/\\n/\n/ while ($desc =~ /\\n/);
if ($notes) { $notes =~ s/\\n/\n/ while ($notes =~ /\\n/); }
my $is4th = (($id/10000)%10 == 2?1:0);
print '[img]http://www.happychinchilla.info/Southperry/skills/', $id, '.png[/img][b][u]', $name, '[/u][/b]', "\n",
'[b]Description[/b] ', $desc, "\n",
'[b]Max Level:[/b] ', $maxlvl, "\n";
if ($range) { print rangeURL($range), "\n"; }
if ($notes) { print '[b]Notes:[/b] ', $notes, "\n"; }
print "\n", '[table=autonum=1]';
for (my $i = 1; $i <= $maxlvl + 2*$is4th; $i++)
{
my @fvalues;
foreach (@formula) {push(@fvalues, calc($_, $i)); }
my $lvldetail = sprintf($detail, @fvalues);
if ($i == $maxlvl) { print '[b]', $lvldetail, '[/b]'; }
else { print "$lvldetail"; }
if ($i != $maxlvl+2*$is4th) { print "\n"; }
}
print "[\/table]\n\n";
}
[/noparse]I'm pasting all the data into an Excel file and saving it as a tab-delimited text file to parse.


