Mercurial > hg > batmud > misc
view nun/tasks/findreqs.pl @ 357:b5959a81c3f5 misc
Cleanup.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 27 Jun 2018 15:02:21 +0300 |
parents | 102ac4f0bd22 |
children | 362bd68d5686 |
line wrap: on
line source
#!/usr/bin/perl -w use strict; use warnings; my %taskList = (); my %taskNames = (); my @tmpList = (); my $wasFound = 0; my $n; my $nline = 0; ### Process and parse input logfile while (defined(my $line = <STDIN>)) { $nline++; chomp($line); if ($line =~ /^New holy task '(.+)' is now available to you\.$/) { push(@tmpList, $1); $wasFound = 1; $n = 0; } elsif ($line =~ /^You now have '(.+)' at ([0-9]+)\% without special bonuses\.$/ && $wasFound) { my $tmpName = lc($1); my $tmpPercentage = $2; $n = 10; for my $taskName (@tmpList) { my $lcName = lc($taskName); if (defined($taskList{$lcName}{$tmpName})) { if ($tmpPercentage < $taskList{$lcName}{$tmpName}) { $taskList{$lcName}{$tmpName} = $tmpPercentage; } } else { $taskList{$lcName}{$tmpName} = $tmpPercentage; $taskNames{$lcName} = $taskName; } } } if ($n++ >= 6) { $wasFound = 0; for my $taskName (@tmpList) { my $lcName = lc($taskName); if (!defined($taskList{$lcName})) { $taskList{$lcName} = {}; $taskNames{$lcName} = $taskName; } } @tmpList = (); } } sub print_separator() { print "|------------------------------------------------------------------------|\n"; } sub print_line($$$) { my ($task, $skill, $perc) = @_; printf "| %-36s | %-25s | %3d |\n", $task, $skill, $perc; } ### Print out the results $n = 0; if ($#ARGV >= 0) { if ($ARGV[0] eq "-tasks") { for my $taskName (sort keys %taskList) { print $taskNames{$taskName}."\n"; } } elsif ($ARGV[0] eq "-dump") { for my $taskName (sort keys %taskList) { my @list = map { $_."=".$taskList{$taskName}{$_} } sort keys %{$taskList{$taskName}}; print $taskNames{$taskName}."|".join("|", @list)."\n"; } } } else { my $separator = 0; print ",------------------------------------------------------------------------.\n"; print "| Task name | Skill/spell | Min |\n"; print "+--------------------------------------+---------------------------+-----+\n"; for my $taskName (sort keys %taskList) { my $nreqs = scalar keys(%{$taskList{$taskName}}); if ($nreqs == 0) { # No requirement data for task print_separator() if ($separator); printf "| %-36s | %-31s |\n", $taskName, "UNKNOWN or no requirements"; print_separator(); $separator = 1; } elsif ($nreqs == 1) { for my $skillName (sort keys %{$taskList{$taskName}}) { print_line($taskNames{$taskName}, $skillName, $taskList{$taskName}{$skillName}); } $separator = 1; } else { print_separator() if ($separator); printf "| %-70s |\n", $taskNames{$taskName}; for my $skillName (sort keys %{$taskList{$taskName}}) { print_line("", $skillName, $taskList{$taskName}{$skillName}); } print_separator(); $separator = 0; } $n++; } print "|-----------------+--------------------+---------------------------+-----'\n"; printf "| %3d tasks total |\n", $n; print "`-----------------'\n"; }