#!/usr/bin/perl -w
+# This is part of ypp-sc-tools, a set of third-party tools for assisting
+# players of Yohoho Puzzle Pirates.
+#
+# Copyright (C) 2009 Ian Jackson <ijackson@chiark.greenend.org.uk>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Yohoho and Puzzle Pirates are probably trademarks of Three Rings and
+# are used without permission. This program is not endorsed or
+# sponsored by Three Rings.
+
use strict qw(vars);
use IO::Handle;
use POSIX;
price <swill> <grog> <fine> [<shot>]
Each of which may appear only once, except \`have' which may appear
-more than once which case we calculate the differences and the profit
-for each one.
-
-If <shot> is not specified at all, relevant information about shot is
-not reported. For have and want, missing entries count as zero.
+more than once which case we calculate the financial implications
+at each stage.
+Missing entries count as zero (and zeroes are not displayed in the output).
In price, \`x' means the commodity is unavailable.
+
+The intended use is that at the start of the pillage you run:
+ ypp-restock-rum have ... want ...
+to check that stocks are sufficient, or perhaps:
+ ypp-restock-rum have ... want ... price ...
+if you want to stock up some more. At the end of the pillage,
+run the same thing again with some extra parameters:
+ ypp-restock-rum have .. want ... have ... price ...
+and it will tell you how you did and what the restock should be like.
END
;
our (@have,@want,@price);
sub parse_args () {
- @ARGV or badusage("need some information to go on");
+ if (!@ARGV) {
+ print STDERR <<END or die $!;
+
+ypp-restock-rum is part of ypp-sc-tools Copyright (C) 2009 Ian Jackson
+This program comes with ABSOLUTELY NO WARRANTY; this is free software,
+and you are welcome to redistribute it under certain conditions.
+For details, read the top of the ypp-restock-rum file.
+END
+ badusage("need some information to go on");
+ }
while (@ARGV) {
$_ = shift @ARGV;
if (m/^have$/) {
parse_info(1,0,1, @{ $have[@have] }, 'have');
} elsif (m/^want$/) {
parse_info(1,0,0, @want, 'want');
- } elsif (m/^price$/) {
+ } elsif (m/^prices?$|^costs?$/) {
parse_info(0,1e7,0, @price, 'price');
} else {
badusage("unknown information argument \`$_'");
sub compute_stock_values() {
return unless @have;
print @have>1 ? <<END
- Rum Rum Shot Shot total Profit Profit
- equiv. value stocks value value this leg total
+
+ _____Rum_____ ___Shot___ total _____Profit___
+ fine equiv. value qty value value per leg total
END
: <<END
Rum Rum Shot Shot total
$last_value= $total_value;
print "\n";
}
- print @have>1 ? <<END
- fine poe units poe poe delta-poe poe
-END
-: <<END
- fine poe units poe poe
-END
-;
+ print "\n" if @have>1;
print "\n";
}