#!/usr/bin/perl
use strict;
use warnings;
sub stab_weapon {
my $skill = shift;
my $weapon = shift;
my $tier = shift;
my $tier_penalty = 0;
my $result = 1;
$tier_penalty = 2 if ($weapon eq 'Long Blades');
if ($weapon ne 'Others') {
$result *= 1 + $skill/(($tier+$tier_penalty)*10);
}
$result *= 1 + $skill/($tier*12);
$result--;
$result *= 100;
return $result;
}
sub stab_bonus {
my $skill = shift;
my $weapon = shift;
my @result;
for (1,2,4,6) {
push @result, stab_weapon($skill, $weapon, $_);
}
return @result;
}
sub do_table {
print <<'EOL';
{| class="prettytable" style="border:none; margin:0; padding:0;"
|-
! rowspan=2 | Stabbing skill
! colspan=4 | Short Blades
! colspan=4 | Long Blades
! colspan=4 | Others
|-
! Tier 1
! Tier 2
! Tier 3
! Tier 4
! Tier 1
! Tier 2
! Tier 3
! Tier 4
! Tier 1
! Tier 2
! Tier 3
! Tier 4
|-
EOL
for (1..27) {
print "| $_\n";
for my $weapon ("Short Blades", "Long Blades", "Others") {
my @b = stab_bonus($_, $weapon);
for (@b) {
printf "| %+.1f%%\n", $_;
}
}
print "|-\n";
}
print "|}\n";
}
do_table;