chiark / gitweb /
Use compressed _master-pixmap.txt.gz
[ypp-sc-tools.web-live.git] / ypp-restock-rum
index 96e6867..1b0a11f 100755 (executable)
@@ -1,4 +1,26 @@
 #!/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;
@@ -14,13 +36,20 @@ where <information> is
   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
 ;
 
@@ -70,14 +99,23 @@ sub parse_info ($$$\@$) {
 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 \`$_'");
@@ -196,8 +234,9 @@ sub pr1s ($) {
 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
@@ -231,13 +270,7 @@ END
        $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";
 }