Difference between revisions of "User:CommanderC/stab-bonus.pl"

From CrawlWiki
Jump to: navigation, search
(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...")
 
 
Line 34: Line 34:
  
 
sub do_table {
 
sub do_table {
    my $weapon = shift;
+
     print <<'EOL';
 
 
     print <<"EOL";
 
 
{| class="prettytable" style="border:none; margin:0; padding:0;"
 
{| class="prettytable" style="border:none; margin:0; padding:0;"
 
|-
 
|-
 
! rowspan=2 | Stabbing skill
 
! rowspan=2 | Stabbing skill
! colspan=6 | $weapon
+
! 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 1
 
! Tier 2
 
! Tier 2
Line 48: Line 56:
 
|-
 
|-
 
EOL
 
EOL
 +
  for (1..27) {
 +
        print "| $_\n";
 +
        for my $weapon ("Short Blades", "Long Blades", "Others") {
 +
    my @b = stab_bonus($_, $weapon);
  
    for (1..27) {
+
    for (@b) {
my @b = stab_bonus($_, $weapon);
+
printf "| %+.1f%%\n", $_;
print "| $_\n";
+
    }
for (@b) {
 
    printf "| %+.1f%%\n", $_;
 
 
}
 
}
 
print "|-\n";
 
print "|-\n";
 
     }
 
     }
    print "|}\n\n";
+
    print "|}\n";
 
}
 
}
  
do_table("Short Blades");
+
do_table;
do_table("Long Blades");
 
do_table("Others");
 
 
</nowiki>
 
</nowiki>
 
</pre>
 
</pre>

Latest revision as of 23:11, 14 March 2013


#!/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;