User:CommanderC/stab-bonus.pl

From CrawlWiki
< User:CommanderC
Revision as of 20:15, 14 March 2013 by CommanderC (talk | contribs) (Created page with "<pre> <nowiki> #!/usr/bin/perl use strict; use warnings; sub stab_weapon { my $skill = shift; my $weapon = shift; my $tier = shift; my $tier_penalty = 0; my...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

#!/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 {
    my $weapon = shift;

    print <<"EOL";
{| class="prettytable" style="border:none; margin:0; padding:0;"
|-
! rowspan=2 | Stabbing skill
! colspan=6 | $weapon
|-
! Tier 1
! Tier 2
! Tier 3
! Tier 4
|-
EOL

    for (1..27) {
	my @b = stab_bonus($_, $weapon);
	print "| $_\n";
	for (@b) {
	    printf "| %+.1f%%\n", $_;
	}
	print "|-\n";
    }
     print "|}\n\n";
}

do_table("Short Blades");
do_table("Long Blades");
do_table("Others");