tests/torpedo: New; exercises torpedo command
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 14 Feb 2015 17:20:01 +0000 (18:20 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 2 Mar 2015 07:20:52 +0000 (08:20 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
Make.mk
tests/torpedo-test [new file with mode: 0755]
tests/torpedo/01-torpedo-1 [new file with mode: 0644]
tests/torpedo/99-POGO [new file with mode: 0644]
tests/torpedo/final.xdump [new file with mode: 0644]
tests/torpedo/journal.log [new file with mode: 0644]
tests/torpedo/server.log [new file with mode: 0644]
tests/torpedo/setup-POGO [new file with mode: 0644]

diff --git a/Make.mk b/Make.mk
index e0af8b472d6c1c08c172ff092e99b2c5057bfd87..3468f54b579a4363da6ae8156b12f19cad296d1b 100644 (file)
--- a/Make.mk
+++ b/Make.mk
@@ -27,7 +27,7 @@
 #   Make.mk: The real Makefile, included by GNUmakefile
 #
 #   Known contributors to this file:
-#      Markus Armbruster, 2005-2014
+#      Markus Armbruster, 2005-2015
 #
 
 # This makefile was inspired by `Recursive Make Considered Harmful',
@@ -264,6 +264,7 @@ ifeq ($(empthread),LWP)
        $(srcdir)/tests/build-test $(srcdir)
        $(srcdir)/tests/navi-march-test $(srcdir)
        $(srcdir)/tests/fire-test $(srcdir)
+       $(srcdir)/tests/torpedo-test $(srcdir)
        $(srcdir)/tests/bridgefall-test $(srcdir)
        $(srcdir)/tests/retreat-test $(srcdir)
 else
@@ -272,6 +273,7 @@ else
        @echo "$(srcdir)/tests/build-test SKIPPED"
        @echo "$(srcdir)/tests/navi-march-test SKIPPED"
        @echo "$(srcdir)/tests/fire-test SKIPPED"
+       @echo "$(srcdir)/tests/torpedo-test SKIPPED"
        @echo "$(srcdir)/tests/bridgefall-test SKIPPED"
        @echo "$(srcdir)/tests/retreat-test SKIPPED"
 endif
diff --git a/tests/torpedo-test b/tests/torpedo-test
new file mode 100755 (executable)
index 0000000..1690bab
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+# Torpedo test for Empire
+
+if [ $# -ne 1 ]
+then echo "Usage: $0 SRCDIR" >&2; exit 1
+fi
+
+srcdir="$1"
+
+. "$srcdir"/tests/test-common.sh
+
+create_sandbox
+cat >>$econfig <<EOF
+WORLD_X 32
+WORLD_Y 16
+EOF
+
+begin_test "$srcdir"/tests/torpedo/setup-POGO
+feed_dir "$srcdir"/tests/torpedo
+end_test
+
+cmp_logs_xdump
diff --git a/tests/torpedo/01-torpedo-1 b/tests/torpedo/01-torpedo-1
new file mode 100644 (file)
index 0000000..c1751a3
--- /dev/null
@@ -0,0 +1,76 @@
+|| no torpedo launched
+| ship doesn't exist
+torp 666 50
+| foreign ship
+torp 31 50
+| ship lacks capability torp
+torp 1 50
+| no guns
+torp 2 50
+| not enough shells
+torp 3 50
+| no military
+torp 4 50
+| inefficient
+torp 5 50
+| no mobility
+torp 6 50
+| target doesn't exist
+torp 0 666
+torp 0 19
+| targeting self
+torp 0 0
+| ship lacks capability sub-torp
+torp 7 45
+|
+|| torpedo launched at nothing (shells consumed)
+| out of range
+torp 11 40
+| blocked by land
+torp 11 41
+| odd: torpedo sighted anyway
+| both
+torp 11 42
+|
+|| torpedo launched at helpless target
+| range 0, surface to submarine, vis>5, 90% chance
+torp 0 45
+| range 1, submarine to surface, vis 5, 45% chance
+torp 10 50
+torp 10 51
+torp 10 52
+torp 10 53
+| range 1, surface to surface, vis>5, 45% chance
+torp 15 55
+torp 15 56
+torp 15 57
+torp 15 58
+| likewise, to submarine
+torp 15 60
+torp 15 61
+torp 15 62
+torp 15 63
+| range 2, submarine to submarine, vis 3, 36% chance
+torp 11 65
+torp 11 66
+torp 11 67
+torp 11 68
+|
+|| torpedo launched at armed target
+| lone pt, dd#60/af#61/bb#65 and maybe dd#66/sb#67 (50% chance) defend,
+| pt sunk before launch
+torp 20 70
+| odd: af defends with torpedo
+| odd: fort and hat and allied dd do nothing
+| 4pt, same defense, half damage, #3 sinks target
+torp 21/22/23/24 70
+| odd: command fails
+| lone sb, af#61 and maybe dd#66 (50% chance) defend
+torp 25 75
+| 4sb, same defense, half damage, #3 sinks target
+torp 26/27/28/29 75
+| odd: command fails
+| submarine at own ship
+torp 10 16
+| surface at own ship
+torp 15 16
diff --git a/tests/torpedo/99-POGO b/tests/torpedo/99-POGO
new file mode 100644 (file)
index 0000000..bfd0e04
--- /dev/null
@@ -0,0 +1,7 @@
+ship *
+carg *
+miss s * ?mission#0 q
+read 0
+read 1
+read 2
+read 3
diff --git a/tests/torpedo/final.xdump b/tests/torpedo/final.xdump
new file mode 100644 (file)
index 0000000..ac55b9b
--- /dev/null
@@ -0,0 +1,117 @@
+config sect
+owner xloc yloc des effic mobil off loyal terr0 terr1 terr2 terr3 dterr xdist ydist avail elev work coastal newdes min gold fert ocontent uran oldown civil milit shell gun petrol iron dust bar food oil lcm hcm uw rad c_dist m_dist s_dist g_dist p_dist i_dist d_dist b_dist f_dist o_dist l_dist h_dist u_dist r_dist c_del m_del s_del g_del p_del i_del d_del b_del f_del o_del l_del h_del u_del r_del mines pstage ptime che che_target fallout access road rail dfense
+1 0 0 5 100 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 -1 1 24 100 0 0 0 0 0 0 0 0 -1 1 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 0 2 24 100 0 0 0 0 0 0 0 0 0 2 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 -1 3 24 100 0 0 0 0 0 0 0 0 -1 3 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+2 0 4 12 100 0 0 0 0 0 0 0 0 0 4 0 0 0 1 12 0 0 0 0 0 2 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+2 -1 5 24 100 0 0 0 0 0 0 0 0 -1 5 0 0 0 1 24 0 0 0 0 0 2 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+2 0 6 19 100 0 0 0 0 0 0 0 0 0 6 0 0 0 1 19 0 0 0 0 0 2 100 10 40 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 0 -4 24 100 0 0 0 0 0 0 0 0 0 -4 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 -1 -3 24 100 0 0 0 0 0 0 0 0 -1 -3 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 0 -2 24 100 0 0 0 0 0 0 0 0 0 -2 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+1 -1 -1 24 100 0 0 0 0 0 0 0 0 -1 -1 0 0 0 1 24 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
+/config
+config ship
+uid owner xloc yloc type effic mobil off tech opx opy mission radius fleet civil milit shell gun petrol iron dust bar food oil lcm hcm uw rad pstage ptime access name xbuilt ybuilt builder rflags rpath
+0 1 2 0 24 60 -5 0 220 2 0 none 1 "" 0 1 0 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+1 1 2 0 10 60 1 0 220 2 0 interdiction 3 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+2 1 2 0 24 60 1 0 220 2 0 interdiction 1 "" 0 1 3 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+3 1 2 0 24 60 1 0 220 2 0 interdiction 1 "" 0 1 2 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+4 1 2 0 24 60 1 0 220 2 0 interdiction 1 "" 0 0 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+5 1 2 0 24 59 1 0 220 2 0 interdiction 1 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+6 1 2 0 24 60 0 0 220 2 0 interdiction 1 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+7 1 2 0 9 60 1 0 220 2 0 interdiction 0 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+10 1 2 0 18 100 87 0 60 2 0 none 1 "" 0 1 21 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+11 1 2 0 25 100 99 0 260 2 0 none 2 "" 0 1 15 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+15 1 2 0 24 100 91 0 220 2 0 none 1 "" 0 1 9 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+16 1 2 0 24 56 71 0 220 2 0 interdiction 1 "" 0 1 21 2 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+20 0 2 6 9 0 -1 0 220 2 6 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+21 1 2 6 9 25 -1 0 220 2 6 none 0 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+22 1 2 6 9 21 -1 0 220 2 6 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+23 1 2 6 9 63 -1 0 220 2 6 none 0 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+24 1 2 6 9 100 1 0 220 2 6 interdiction 0 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+25 1 2 6 18 25 -4 0 220 2 6 none 1 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+26 1 2 6 18 64 -4 0 220 2 6 none 1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+27 1 2 6 18 60 -4 0 220 2 6 none 1 "" 0 1 0 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+28 1 2 6 18 87 -4 0 220 2 6 none 1 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+29 1 2 6 18 100 1 0 220 2 6 interdiction 1 "" 0 1 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+40 2 12 0 6 100 127 0 0 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+41 2 -2 0 6 100 127 0 0 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+42 2 -12 0 6 100 127 0 0 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+45 2 2 0 18 64 81 0 60 0 0 none 0 "" 0 3 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+50 2 4 0 9 100 127 0 40 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+51 2 4 0 9 42 54 0 40 0 0 none 0 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+52 2 4 0 9 100 127 0 40 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+53 2 4 0 9 100 127 0 40 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+55 2 4 0 9 42 53 0 40 0 0 none 0 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+56 2 4 0 9 100 127 0 40 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+57 2 4 0 9 100 127 0 40 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+58 2 4 0 9 30 38 0 40 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+60 2 4 0 18 44 56 0 60 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+61 2 4 0 18 100 127 0 60 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+62 2 4 0 18 47 60 0 60 0 0 none 0 "" 0 3 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+63 2 4 0 18 100 127 0 60 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+65 2 6 0 18 100 127 0 60 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+66 0 6 0 18 0 11 0 60 0 0 none 0 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+67 2 6 0 18 36 46 0 60 0 0 none 0 "" 0 2 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+68 2 6 0 18 100 127 0 60 0 0 none 0 "" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+70 0 2 6 17 0 12 0 70 0 0 none 0 "" 0 2 3 1 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+71 2 2 6 24 100 95 0 220 0 0 none 0 "" 0 20 16 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+72 2 2 6 18 100 127 0 70 0 0 none 0 "" 0 20 1 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+75 0 2 6 13 0 23 0 70 0 0 none 0 "" 0 4 4 2 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+76 2 6 6 17 100 127 0 100 0 0 none 0 "" 0 20 30 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+77 2 6 6 18 100 119 0 100 0 0 none 0 "" 0 20 33 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+78 2 8 6 17 100 127 0 70 0 0 none 0 "" 0 20 40 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+79 2 -2 6 25 100 127 0 260 0 0 none 0 "" 0 20 40 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+80 3 2 6 17 100 127 0 70 0 0 none 0 "" 0 20 40 4 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 4 2 () ""
+99 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 "" 0 0 0 () ""
+/config
+config plane
+uid owner xloc yloc type effic mobil off tech opx opy mission radius wing range harden ship land flags access theta
+/config
+config land
+uid owner xloc yloc type effic mobil off tech opx opy mission radius army ship harden retreat rflags rpath civil milit shell gun petrol iron dust bar food oil lcm hcm uw rad pstage ptime land access
+0 2 0 6 13 100 0 0 100 0 0 none 0 "" -1 0 42 () "" 0 10 80 1 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
+49 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
+/config
+config nuke
+uid owner xloc yloc type effic mobil off tech opx opy mission radius stockpile plane
+/config
+config news
+actor action victim times duration time
+2 13 0 5 0 0
+2 52 1 5 0 0
+1 52 2 3 0 0
+1 13 0 2 0 0
+/config
+config trade
+uid owner type unitid price maxbidder markettime xloc yloc
+/config
+config nat
+cnum stat flags cname passwd ip hostname userid xcap ycap xorg yorg update tgms ann timeused btu access milreserve money login logout newstim annotim tech research education happiness relations(0) relations(1) relations(2) relations(3) relations(4) relations(5) relations(6) relations(7) relations(8) relations(9) relations(10) relations(11) relations(12) relations(13) relations(14) relations(15) relations(16) relations(17) relations(18) relations(19) relations(20) relations(21) relations(22) relations(23) relations(24) relations(25) relations(26) relations(27) relations(28) relations(29) relations(30) relations(31) relations(32) relations(33) relations(34) relations(35) relations(36) relations(37) relations(38) relations(39) relations(40) relations(41) relations(42) relations(43) relations(44) relations(45) relations(46) relations(47) relations(48) relations(49) relations(50) relations(51) relations(52) relations(53) relations(54) relations(55) relations(56) relations(57) relations(58) relations(59) relations(60) relations(61) relations(62) relations(63) relations(64) relations(65) relations(66) relations(67) relations(68) relations(69) relations(70) relations(71) relations(72) relations(73) relations(74) relations(75) relations(76) relations(77) relations(78) relations(79) relations(80) relations(81) relations(82) relations(83) relations(84) relations(85) relations(86) relations(87) relations(88) relations(89) relations(90) relations(91) relations(92) relations(93) relations(94) relations(95) relations(96) relations(97) relations(98) contacts(0) contacts(1) contacts(2) contacts(3) contacts(4) contacts(5) contacts(6) contacts(7) contacts(8) contacts(9) contacts(10) contacts(11) contacts(12) contacts(13) contacts(14) contacts(15) contacts(16) contacts(17) contacts(18) contacts(19) contacts(20) contacts(21) contacts(22) contacts(23) contacts(24) contacts(25) contacts(26) contacts(27) contacts(28) contacts(29) contacts(30) contacts(31) contacts(32) contacts(33) contacts(34) contacts(35) contacts(36) contacts(37) contacts(38) contacts(39) contacts(40) contacts(41) contacts(42) contacts(43) contacts(44) contacts(45) contacts(46) contacts(47) contacts(48) contacts(49) contacts(50) contacts(51) contacts(52) contacts(53) contacts(54) contacts(55) contacts(56) contacts(57) contacts(58) contacts(59) contacts(60) contacts(61) contacts(62) contacts(63) contacts(64) contacts(65) contacts(66) contacts(67) contacts(68) contacts(69) contacts(70) contacts(71) contacts(72) contacts(73) contacts(74) contacts(75) contacts(76) contacts(77) contacts(78) contacts(79) contacts(80) contacts(81) contacts(82) contacts(83) contacts(84) contacts(85) contacts(86) contacts(87) contacts(88) contacts(89) contacts(90) contacts(91) contacts(92) contacts(93) contacts(94) contacts(95) contacts(96) contacts(97) contacts(98) rejects(0) rejects(1) rejects(2) rejects(3) rejects(4) rejects(5) rejects(6) rejects(7) rejects(8) rejects(9) rejects(10) rejects(11) rejects(12) rejects(13) rejects(14) rejects(15) rejects(16) rejects(17) rejects(18) rejects(19) rejects(20) rejects(21) rejects(22) rejects(23) rejects(24) rejects(25) rejects(26) rejects(27) rejects(28) rejects(29) rejects(30) rejects(31) rejects(32) rejects(33) rejects(34) rejects(35) rejects(36) rejects(37) rejects(38) rejects(39) rejects(40) rejects(41) rejects(42) rejects(43) rejects(44) rejects(45) rejects(46) rejects(47) rejects(48) rejects(49) rejects(50) rejects(51) rejects(52) rejects(53) rejects(54) rejects(55) rejects(56) rejects(57) rejects(58) rejects(59) rejects(60) rejects(61) rejects(62) rejects(63) rejects(64) rejects(65) rejects(66) rejects(67) rejects(68) rejects(69) rejects(70) rejects(71) rejects(72) rejects(73) rejects(74) rejects(75) rejects(76) rejects(77) rejects(78) rejects(79) rejects(80) rejects(81) rejects(82) rejects(83) rejects(84) rejects(85) rejects(86) rejects(87) rejects(88) rejects(89) rejects(90) rejects(91) rejects(92) rejects(93) rejects(94) rejects(95) rejects(96) rejects(97) rejects(98)
+0 deity (flash beep coastwatch sonar techlists) "POGO" "peter" "127.0.0.1" "" "tester" 0 0 0 0 0 0 0 255 638 0 0 123456789 0 0 0 0 0.00000 0.00000 0.00000 0.00000 neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
+1 active (flash beep coastwatch sonar techlists) "1" "1" "127.0.0.1" "" "tester" 0 0 0 0 0 0 0 255 526 0 0 25000 0 0 0 0 100.000 0.00000 0.00000 0.00000 neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
+2 active (flash beep coastwatch sonar techlists) "2" "2" "" "" "" 0 0 0 0 0 1 0 255 640 0 0 25000 0 0 0 0 100.000 0.00000 0.00000 0.00000 neutral neutral neutral allied neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
+3 active (flash beep coastwatch sonar techlists) "3" "3" "" "" "" 0 0 0 0 0 0 0 255 640 0 0 25000 0 0 0 0 100.000 0.00000 0.00000 0.00000 neutral at-war allied neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral neutral 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () ()
+/config
+config loan
+uid loaner loanee status irate ldur amtpaid amtdue lastpay duedate
+/config
+config commodity
+uid owner type amount price maxbidder markettime xbuy ybuy xsell ysell
+/config
+config lost
+timestamp owner type id x y
+0 2 1 66 6 0
+0 1 1 20 2 6
+0 2 1 70 2 6
+0 2 1 75 2 6
+/config
+config realm
+cnum realm xl xh yl yh
+/config
+config game
+upd_disable down turn tick rt
+0 0 1 0 0
+/config
diff --git a/tests/torpedo/journal.log b/tests/torpedo/journal.log
new file mode 100644 (file)
index 0000000..1d2e4ff
--- /dev/null
@@ -0,0 +1,592 @@
+      Main startup
+      Main prng MT19937 1
+     Conn0 output Conn0 2 Empire server ready
+     Conn0 input user tester
+     Conn0 output Conn0 0 hello tester
+     Conn0 input coun red
+     Conn0 output Conn0 10 country red does not exist
+     Conn0 output Conn0 3 so long...
+     Conn1 output Conn1 2 Empire server ready
+     Conn1 input user tester
+     Conn1 output Conn1 0 hello tester
+     Conn1 input coun 1
+     Conn1 output Conn1 0 country name 1
+     Conn1 input pass 1
+     Conn1 output Conn1 0 password ok
+     Conn1 input play
+     Conn1 login 1 127.0.0.1 tester
+    Play#1 output Play#1 2 2
+    Play#1 output Play#1 1
+    Play#1 output Play#1 1 ***          Server configured for testing          ***
+    Play#1 output Play#1 1 *** If you see this in a game, it is misconfigured! ***
+    Play#1 output Play#1 6 0 640
+    Play#1 input torp 666 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 6 0 637
+    Play#1 input torp 31 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 6 0 634
+    Play#1 input torp 1 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship # 1: A lc   light cruiser can't fire torpedoes!
+    Play#1 output Play#1 6 0 631
+    Play#1 input torp 2 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship #2 has insufficient armament
+    Play#1 output Play#1 6 0 628
+    Play#1 input torp 3 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship #3 has insufficient armament
+    Play#1 output Play#1 6 0 625
+    Play#1 input torp 4 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship #4 has insufficient crew
+    Play#1 output Play#1 6 0 622
+    Play#1 input torp 5 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship #5 torpedo tubes inoperative.
+    Play#1 output Play#1 6 0 619
+    Play#1 input torp 6 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 0 ships are eligible to torpedo
+    Play#1 output Play#1 1 Ship #6 has insufficient mobility
+    Play#1 output Play#1 6 0 616
+    Play#1 input torp 0 666
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 command failed
+    Play#1 output Play#1 6 0 613
+    Play#1 input torp 0 19
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 command failed
+    Play#1 output Play#1 6 0 610
+    Play#1 input torp 0 0
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Shooting yourself, eh?  How strange...
+    Play#1 output Play#1 6 0 607
+    Play#1 input torp 7 45
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 You can't torpedo a submarine!
+    Play#1 output Play#1 6 0 604
+    Play#1 input torp 11 40
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Out of range
+    Play#1 output Play#1 6 0 601
+    Play#1 input torp 11 41
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 36%
+    Play#1 output Play#1 1 BOOM!... Torpedo slams into land before reaching target.
+    Play#1 output Play#1 6 0 598
+    Play#1 input torp 11 42
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... BOOM!... Torpedo slams into land before reaching target.
+    Play#1 output Play#1 6 0 595
+    Play#1 input torp 0 45
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit sub for 46 damage.
+    Play#1 output Play#1 6 0 592
+    Play#1 input torp 10 50
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 589
+    Play#1 input torp 10 51
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit pt   patrol boat (#51) for 64 damage.
+    Play#1 output Play#1 6 0 586
+    Play#1 input torp 10 52
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 583
+    Play#1 input torp 10 53
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 580
+    Play#1 input torp 15 55
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit pt   patrol boat (#55) for 64 damage.
+    Play#1 output Play#1 6 0 577
+    Play#1 input torp 15 56
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 574
+    Play#1 input torp 15 57
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 571
+    Play#1 input torp 15 58
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit pt   patrol boat (#58) for 77 damage.
+    Play#1 output Play#1 6 0 568
+    Play#1 input torp 15 60
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit sub for 70 damage.
+    Play#1 output Play#1 6 0 565
+    Play#1 input torp 15 61
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 562
+    Play#1 input torp 15 62
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit sub for 67 damage.
+    Play#1 output Play#1 6 0 559
+    Play#1 input torp 15 63
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 45%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 556
+    Play#1 input torp 11 65
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 36%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 553
+    Play#1 input torp 11 66
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 36%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit sub for 114 damage.
+    Play#1 output Play#1 1 sub sunk!
+    Play#1 output Play#1 6 0 550
+    Play#1 input torp 11 67
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 36%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit sub for 81 damage.
+    Play#1 output Play#1 6 0 547
+    Play#1 input torp 11 68
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 36%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 6 0 544
+    Play#1 input torp 20 70
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 37 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#20) takes 32
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     pt   patrol boat (#20) takes 45
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 85 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#20) takes 74
+    Play#1 output Play#1 1     pt   patrol boat (#20) sunk!
+    Play#1 output Play#1 6 0 541
+    Play#1 input torp 21/22/23/24 70
+    Play#1 command torpedo
+    Play#1 output Play#1 1 4 ships are eligible to torpedo
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 18 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#21) takes 15
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     pt   patrol boat (#21) takes 43
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 45 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#21) takes 39
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 20 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#21) takes 17
+    Play#1 output Play#1 1 Effective torpedo range is 0.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit dd   destroyer (#70) for 94 damage.
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     pt   patrol boat (#22) takes 39
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 41 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#22) takes 35
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 18 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#22) takes 15
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     pt   patrol boat (#22) takes 36
+    Play#1 output Play#1 1 Effective torpedo range is 0.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit dd   destroyer (#70) for 61 damage.
+    Play#1 output Play#1 1 Starting our attack run...
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 Missed!
+    Play#1 output Play#1 1 \007Kaboom!!! Incoming shells!
+    Play#1 output Play#1 1 \007BLAM! 43 damage!
+    Play#1 output Play#1 1     pt   patrol boat (#23) takes 37
+    Play#1 output Play#1 1 Effective torpedo range is 0.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit dd   destroyer (#70) for 81 damage.
+    Play#1 output Play#1 1 dd   destroyer (#70) sunk!
+    Play#1 output Play#1 1 command failed
+    Play#1 output Play#1 6 0 538
+    Play#1 input torp 25 75
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 96%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit bb   battleship (#75) for 64 damage.
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     sb   submarine (#25) takes 64
+    Play#1 output Play#1 1
+    Play#1 output Play#1 1 CAPTAIN!  !!Depth charges!!...
+    Play#1 output Play#1 1 click...WHAM!  40 damage!
+    Play#1 output Play#1 1     sb   submarine (#25) takes 29
+    Play#1 output Play#1 6 0 535
+    Play#1 input torp 26/27/28/29 75
+    Play#1 command torpedo
+    Play#1 output Play#1 1 4 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 96%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit bb   battleship (#75) for 79 damage.
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     sb   submarine (#26) takes 25
+    Play#1 output Play#1 1
+    Play#1 output Play#1 1 CAPTAIN!  !!Depth charges!!...
+    Play#1 output Play#1 1 click...WHAM!  19 damage!
+    Play#1 output Play#1 1     sb   submarine (#26) takes 14
+    Play#1 output Play#1 1 Effective torpedo range is 3.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 96%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit bb   battleship (#75) for 60 damage.
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1     sb   submarine (#27) takes 40
+    Play#1 output Play#1 1 Effective torpedo range is 2.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 96%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit bb   battleship (#75) for 73 damage.
+    Play#1 output Play#1 1 bb   battleship (#75) sunk!
+    Play#1 output Play#1 1 Captain! Torpedoes sighted!
+    Play#1 output Play#1 1 Missed!
+    Play#1 output Play#1 1
+    Play#1 output Play#1 1 CAPTAIN!  !!Depth charges!!...
+    Play#1 output Play#1 1 click...WHAM!  18 damage!
+    Play#1 output Play#1 1     sb   submarine (#28) takes 13
+    Play#1 output Play#1 1 command failed
+    Play#1 output Play#1 6 0 532
+    Play#1 input torp 10 16
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 BOOM!...
+    Play#1 output Play#1 1 Torpedo hit af   asw frigate (#16) for 67 damage.
+    Play#1 output Play#1 1     af   asw frigate (#16) takes 44
+    Play#1 output Play#1 1 You have a new telegram waiting ...
+    Play#1 output Play#1 6 0 529
+    Play#1 input torp 15 16
+    Play#1 command torpedo
+    Play#1 output Play#1 1 1 ships are eligible to torpedo
+    Play#1 output Play#1 1 Effective torpedo range is 1.0
+    Play#1 output Play#1 1 Whooosh... Hitchance = 90%
+    Play#1 output Play#1 1 Missed
+    Play#1 output Play#1 1 You have a new telegram waiting ...
+    Play#1 output Play#1 6 0 526
+    Play#1 input ctld
+    Play#1 output Play#1 1 Bye-bye
+    Play#1 logout 1
+    Play#1 output Play#1 3 so long...
+     Conn2 output Conn2 2 Empire server ready
+     Conn2 input user tester
+     Conn2 output Conn2 0 hello tester
+     Conn2 input coun POGO
+     Conn2 output Conn2 0 country name POGO
+     Conn2 input pass peter
+     Conn2 output Conn2 0 password ok
+     Conn2 input play
+     Conn2 login 0 127.0.0.1 tester
+    Play#0 output Play#0 2 2
+    Play#0 output Play#0 1
+    Play#0 output Play#0 1 ***          Server configured for testing          ***
+    Play#0 output Play#0 1 *** If you see this in a game, it is misconfigured! ***
+    Play#0 output Play#0 6 0 640
+    Play#0 input ship *
+    Play#0 command ship
+    Play#0 output Play#0 1 own shp#     ship type       x,y   fl   eff civ mil  uw  fd pn he xl ln mob tech
+    Play#0 output Play#0 1   1    0 af   asw frigate    2,0        60%   0   1   0   0  0  0  0  0  -5  220
+    Play#0 output Play#0 1   1    1 lc   light cruis    2,0        60%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1    2 af   asw frigate    2,0        60%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1    3 af   asw frigate    2,0        60%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1    4 af   asw frigate    2,0        60%   0   0   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1    5 af   asw frigate    2,0        59%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1    6 af   asw frigate    2,0        60%   0   1   0   0  0  0  0  0   0  220
+    Play#0 output Play#0 1   1    7 pt   patrol boat    2,0        60%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1   10 sb   submarine      2,0       100%   0   1   0   0  0  0  0  0  87   60
+    Play#0 output Play#0 1   1   11 na   nuc attack     2,0       100%   0   1   0   0  0  0  0  0  99  260
+    Play#0 output Play#0 1   1   15 af   asw frigate    2,0       100%   0   1   0   0  0  0  0  0  91  220
+    Play#0 output Play#0 1   1   16 af   asw frigate    2,0        56%   0   1   0   0  0  0  0  0  71  220
+    Play#0 output Play#0 1   1   21 pt   patrol boat    2,6        25%   0   1   0   0  0  0  0  0  -1  220
+    Play#0 output Play#0 1   1   22 pt   patrol boat    2,6        21%   0   0   0   0  0  0  0  0  -1  220
+    Play#0 output Play#0 1   1   23 pt   patrol boat    2,6        63%   0   1   0   0  0  0  0  0  -1  220
+    Play#0 output Play#0 1   1   24 pt   patrol boat    2,6       100%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   1   25 sb   submarine      2,6        25%   0   0   0   0  0  0  0  0  -4  220
+    Play#0 output Play#0 1   1   26 sb   submarine      2,6        64%   0   1   0   0  0  0  0  0  -4  220
+    Play#0 output Play#0 1   1   27 sb   submarine      2,6        60%   0   1   0   0  0  0  0  0  -4  220
+    Play#0 output Play#0 1   1   28 sb   submarine      2,6        87%   0   0   0   0  0  0  0  0  -4  220
+    Play#0 output Play#0 1   1   29 sb   submarine      2,6       100%   0   1   0   0  0  0  0  0   1  220
+    Play#0 output Play#0 1   2   40 frg  frigate       12,0       100%   0   5   0   0  0  0  0  0 127    0
+    Play#0 output Play#0 1   2   41 frg  frigate       -2,0       100%   0   5   0   0  0  0  0  0 127    0
+    Play#0 output Play#0 1   2   42 frg  frigate      -12,0       100%   0   5   0   0  0  0  0  0 127    0
+    Play#0 output Play#0 1   2   45 sb   submarine      2,0        64%   0   3   0   0  0  0  0  0  81   60
+    Play#0 output Play#0 1   2   50 pt   patrol boat    4,0       100%   0   2   0   0  0  0  0  0 127   40
+    Play#0 output Play#0 1   2   51 pt   patrol boat    4,0        42%   0   1   0   0  0  0  0  0  54   40
+    Play#0 output Play#0 1   2   52 pt   patrol boat    4,0       100%   0   2   0   0  0  0  0  0 127   40
+    Play#0 output Play#0 1   2   53 pt   patrol boat    4,0       100%   0   2   0   0  0  0  0  0 127   40
+    Play#0 output Play#0 1   2   55 pt   patrol boat    4,0        42%   0   1   0   0  0  0  0  0  53   40
+    Play#0 output Play#0 1   2   56 pt   patrol boat    4,0       100%   0   2   0   0  0  0  0  0 127   40
+    Play#0 output Play#0 1   2   57 pt   patrol boat    4,0       100%   0   2   0   0  0  0  0  0 127   40
+    Play#0 output Play#0 1   2   58 pt   patrol boat    4,0        30%   0   0   0   0  0  0  0  0  38   40
+    Play#0 output Play#0 1   2   60 sb   submarine      4,0        44%   0   2   0   0  0  0  0  0  56   60
+    Play#0 output Play#0 1   2   61 sb   submarine      4,0       100%   0   5   0   0  0  0  0  0 127   60
+    Play#0 output Play#0 1   2   62 sb   submarine      4,0        47%   0   3   0   0  0  0  0  0  60   60
+    Play#0 output Play#0 1   2   63 sb   submarine      4,0       100%   0   5   0   0  0  0  0  0 127   60
+    Play#0 output Play#0 1   2   65 sb   submarine      6,0       100%   0   5   0   0  0  0  0  0 127   60
+    Play#0 output Play#0 1   2   67 sb   submarine      6,0        36%   0   2   0   0  0  0  0  0  46   60
+    Play#0 output Play#0 1   2   68 sb   submarine      6,0       100%   0   5   0   0  0  0  0  0 127   60
+    Play#0 output Play#0 1   2   71 af   asw frigate    2,6       100%   0  20   0   0  0  0  0  0  95  220
+    Play#0 output Play#0 1   2   72 sb   submarine      2,6       100%   0  20   0   0  0  0  0  0 127   70
+    Play#0 output Play#0 1   2   76 dd   destroyer      6,6       100%   0  20   0   0  0  0  0  0 127  100
+    Play#0 output Play#0 1   2   77 sb   submarine      6,6       100%   0  20   0   0  0  0  0  0 119  100
+    Play#0 output Play#0 1   2   78 dd   destroyer      8,6       100%   0  20   0   0  0  0  0  0 127   70
+    Play#0 output Play#0 1   2   79 na   nuc attack    -2,6       100%   0  20   0   0  0  0  0  0 127  260
+    Play#0 output Play#0 1   3   80 dd   destroyer      2,6       100%   0  20   0   0  0  0  0  0 127   70
+    Play#0 output Play#0 1 47 ships
+    Play#0 output Play#0 6 0 640
+    Play#0 input carg *
+    Play#0 command cargo
+    Play#0 output Play#0 1 shp#         x,y   flt eff  civ mil  uw  sh gun pet irn dst bar oil lcm hcm rad
+    Play#0 output Play#0 1    0 af      2,0       60%   0   1   0   0   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    1 lc      2,0       60%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    2 af      2,0       60%   0   1   0   3   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    3 af      2,0       60%   0   1   0   2   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    4 af      2,0       60%   0   0   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    5 af      2,0       59%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    6 af      2,0       60%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1    7 pt      2,0       60%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   10 sb      2,0      100%   0   1   0  21   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   11 na      2,0      100%   0   1   0  15   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   15 af      2,0      100%   0   1   0   9   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   16 af      2,0       56%   0   1   0  21   2   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   21 pt      2,6       25%   0   1   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   22 pt      2,6       21%   0   0   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   23 pt      2,6       63%   0   1   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   24 pt      2,6      100%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   25 sb      2,6       25%   0   0   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   26 sb      2,6       64%   0   1   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   27 sb      2,6       60%   0   1   0   0   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   28 sb      2,6       87%   0   0   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   29 sb      2,6      100%   0   1   0   3   1   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   40 frg    12,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   41 frg    -2,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   42 frg   -12,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   45 sb      2,0       64%   0   3   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   50 pt      4,0      100%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   51 pt      4,0       42%   0   1   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   52 pt      4,0      100%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   53 pt      4,0      100%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   55 pt      4,0       42%   0   1   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   56 pt      4,0      100%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   57 pt      4,0      100%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   58 pt      4,0       30%   0   0   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   60 sb      4,0       44%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   61 sb      4,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   62 sb      4,0       47%   0   3   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   63 sb      4,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   65 sb      6,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   67 sb      6,0       36%   0   2   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   68 sb      6,0      100%   0   5   0   0   0   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   71 af      2,6      100%   0  20   0  16   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   72 sb      2,6      100%   0  20   0   1   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   76 dd      6,6      100%   0  20   0  30   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   77 sb      6,6      100%   0  20   0  33   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   78 dd      8,6      100%   0  20   0  40   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   79 na     -2,6      100%   0  20   0  40   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1   80 dd      2,6      100%   0  20   0  40   4   0   0   0   0   0   0   0   0
+    Play#0 output Play#0 1 47 ships
+    Play#0 output Play#0 6 0 640
+    Play#0 input miss s * ?mission#0 q
+    Play#0 command mission
+    Play#0 output Play#0 1 Thing                        x,y     op-sect  rad mission
+    Play#0 output Play#0 1 lc   light cruiser (#1)      2,0       2,0      3 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#2)        2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#3)        2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#4)        2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#5)        2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#6)        2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 pt   patrol boat (#7)        2,0       2,0      0 is on an interdiction mission
+    Play#0 output Play#0 1 af   asw frigate (#16)       2,0       2,0      1 is on an interdiction mission
+    Play#0 output Play#0 1 pt   patrol boat (#24)       2,6       2,6      0 is on an interdiction mission
+    Play#0 output Play#0 1 sb   submarine (#29)         2,6       2,6      1 is on an interdiction mission
+    Play#0 output Play#0 6 0 638
+    Play#0 input read 0
+    Play#0 command read
+    Play#0 output Play#0 1 No telegrams for you at the moment...
+    Play#0 output Play#0 6 0 638
+    Play#0 input read 1
+    Play#0 command read
+    Play#0 output Play#0 1
+    Play#0 output Play#0 1 > BULLETIN from POGO, (#0)  dated Thu Jan  1 00:00:00 1970
+    Play#0 output Play#0 1 sub in 2,0 torpedoed af   asw frigate (#16) for 67 damage.
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by af   asw frigate (#16)
+    Play#0 output Play#0 6 0 638
+    Play#0 input read 2
+    Play#0 command read
+    Play#0 output Play#0 1
+    Play#0 output Play#0 1 > BULLETIN from POGO, (#0)  dated Thu Jan  1 00:00:00 1970
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by frg  frigate (#41)
+    Play#0 output Play#0 1 af   asw frigate (#0) in 2,0 torpedoed sb   submarine (#45) for 46 damage.
+    Play#0 output Play#0 1     sb   submarine (#45) takes 36
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by pt   patrol boat (#50)
+    Play#0 output Play#0 1 sub in 2,0 torpedoed pt   patrol boat (#51) for 64 damage.
+    Play#0 output Play#0 1     pt   patrol boat (#51) takes 58
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by pt   patrol boat (#52)
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by pt   patrol boat (#53)
+    Play#0 output Play#0 1 af   asw frigate (#15) in 2,0 torpedoed pt   patrol boat (#55) for 64 damage.
+    Play#0 output Play#0 1     pt   patrol boat (#55) takes 58
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by pt   patrol boat (#56)
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by pt   patrol boat (#57)
+    Play#0 output Play#0 1 af   asw frigate (#15) in 2,0 torpedoed pt   patrol boat (#58) for 77 damage.
+    Play#0 output Play#0 1     pt   patrol boat (#58) takes 70
+    Play#0 output Play#0 1 af   asw frigate (#15) in 2,0 torpedoed sb   submarine (#60) for 70 damage.
+    Play#0 output Play#0 1     sb   submarine (#60) takes 56
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by sb   submarine (#61)
+    Play#0 output Play#0 1 af   asw frigate (#15) in 2,0 torpedoed sb   submarine (#62) for 67 damage.
+    Play#0 output Play#0 1     sb   submarine (#62) takes 53
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by sb   submarine (#63)
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by sb   submarine (#65)
+    Play#0 output Play#0 1 sub in 2,0 torpedoed sb   submarine (#66) for 114 damage.
+    Play#0 output Play#0 1     sb   submarine (#66) takes 91
+    Play#0 output Play#0 1     sb   submarine (#66) sunk!
+    Play#0 output Play#0 1 sub in 2,0 torpedoed sb   submarine (#67) for 81 damage.
+    Play#0 output Play#0 1     sb   submarine (#67) takes 64
+    Play#0 output Play#0 1 Torpedo sighted @ 2,0 by sb   submarine (#68)
+    Play#0 output Play#0 1 dd   destroyer (#70) fired at pt   patrol boat (#20)
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed pt   patrol boat (#20)
+    Play#0 output Play#0 1 bb   battleship (#75) fired at pt   patrol boat (#20)
+    Play#0 output Play#0 1 dd   destroyer (#70) fired at pt   patrol boat (#21)
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed pt   patrol boat (#21)
+    Play#0 output Play#0 1 bb   battleship (#75) fired at pt   patrol boat (#21)
+    Play#0 output Play#0 1 dd   destroyer (#76) fired at pt   patrol boat (#21)
+    Play#0 output Play#0 1 pt   patrol boat (#21) in 2,6 torpedoed dd   destroyer (#70) for 94 damage.
+    Play#0 output Play#0 1     dd   destroyer (#70) takes 64
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed pt   patrol boat (#22)
+    Play#0 output Play#0 1 bb   battleship (#75) fired at pt   patrol boat (#22)
+    Play#0 output Play#0 1 dd   destroyer (#76) fired at pt   patrol boat (#22)
+    Play#0 output Play#0 1 sb   submarine (#77) @ 6,6 torpedoed pt   patrol boat (#22)
+    Play#0 output Play#0 1 pt   patrol boat (#22) in 2,6 torpedoed dd   destroyer (#70) for 61 damage.
+    Play#0 output Play#0 1     dd   destroyer (#70) takes 42
+    Play#0 output Play#0 1 af   asw frigate (#71) missed pt   patrol boat (#23) with a torpedo at 2,6
+    Play#0 output Play#0 1 bb   battleship (#75) fired at pt   patrol boat (#23)
+    Play#0 output Play#0 1 pt   patrol boat (#23) in 2,6 torpedoed dd   destroyer (#70) for 81 damage.
+    Play#0 output Play#0 1     dd   destroyer (#70) takes 55
+    Play#0 output Play#0 1     dd   destroyer (#70) sunk!
+    Play#0 output Play#0 1 sub in 2,6 torpedoed bb   battleship (#75) for 64 damage.
+    Play#0 output Play#0 1     bb   battleship (#75) takes 32
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed sub
+    Play#0 output Play#0 1 dd   destroyer (#76) depth charged sub
+    Play#0 output Play#0 1 sub in 2,6 torpedoed bb   battleship (#75) for 79 damage.
+    Play#0 output Play#0 1     bb   battleship (#75) takes 40
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed sub
+    Play#0 output Play#0 1 dd   destroyer (#76) depth charged sub
+    Play#0 output Play#0 1 sub in 2,6 torpedoed bb   battleship (#75) for 60 damage.
+    Play#0 output Play#0 1     bb   battleship (#75) takes 30
+    Play#0 output Play#0 1 af   asw frigate (#71) @ 2,6 torpedoed sub
+    Play#0 output Play#0 1 sub in 2,6 torpedoed bb   battleship (#75) for 73 damage.
+    Play#0 output Play#0 1     bb   battleship (#75) takes 37
+    Play#0 output Play#0 1     bb   battleship (#75) sunk!
+    Play#0 output Play#0 1 af   asw frigate (#71) missed sub with a torpedo at 2,6
+    Play#0 output Play#0 1 dd   destroyer (#76) depth charged sub
+    Play#0 output Play#0 6 0 638
+    Play#0 input read 3
+    Play#0 command read
+    Play#0 output Play#0 1 No telegrams for 3 at the moment...
+    Play#0 output Play#0 6 0 638
+    Play#0 input ctld
+    Play#0 output Play#0 1 Bye-bye
+    Play#0 logout 0
+    Play#0 output Play#0 3 so long...
+      Main shutdown
diff --git a/tests/torpedo/server.log b/tests/torpedo/server.log
new file mode 100644 (file)
index 0000000..1a97800
--- /dev/null
@@ -0,0 +1,17 @@
+------------------------------------------------------
+Empire server (pid 42) started
+Configured for testing
+Update schedule read
+No update scheduled
+Listening on 127.0.0.1
+Connect from 127.0.0.1
+Connect from 127.0.0.1
+tester@127.0.0.1 using country #1
+tester@127.0.0.1 logged in as country #1
+tester@127.0.0.1 logged out, country #1
+Connect from 127.0.0.1
+tester@127.0.0.1 using country #0
+tester@127.0.0.1 logged in as country #0
+tester@127.0.0.1 logged out, country #0
+Shutdown commencing (cleaning up threads.)
+Server shutting down on signal 15
diff --git a/tests/torpedo/setup-POGO b/tests/torpedo/setup-POGO
new file mode 100644 (file)
index 0000000..08e1e5c
--- /dev/null
@@ -0,0 +1,91 @@
+|| create land
+desi -1:0,-4:6 +
+give c * ?des#. 100
+|| country#1
+add 1 1 1 p
+desi 0,0 c
+edit c 1 c 0,0 s 4 b 650 M 25000 T 100
+edit l * ?des#. o 1 O 1
+|| country#2
+add 2 2 2 p
+edit c 2 s 4 b 640 M 25000 T 100
+desi 0,4 h
+desi 0,6 f
+give g 0,6 1
+give s 0,6 40
+give m 0,6 10
+edit l -1:0,4:6 o 2 O 2
+buil l 0,6 hat
+edit u 0 e 100 m 10 g 1 s 80
+|| country#3
+add 3 3 3 p
+edit c 3 s 4 b 640 M 25000 T 100
+|| finishing touches to land
+edit l * ?des#.&eff=0 e 100
+|| relations
+decl a 2 3
+decl a 3 2
+decl w 1 3
+|| prototype ship
+build s 0,4 frg
+edit s 0 E 100
+|| target ships
+| frg far away, behind land, far away behind land
+edit s 0 U 40 E 100 M 127 m 5 L 12,0
+edit s 40 U 41 L -2,0 U 42 L -12,0
+| in 2,0: sb
+edit s 40 U 45 t sb L 2,0
+| in 4,0: pt, sb
+edit s 40 U 50 t pt L 4,0 U 51 U 52 U 53 U 55 U 56 U 57 U 58
+edit s 40 U 60 t sb L 4,0 U 61 U 62 U 63
+| in 6,0: sb
+edit s 40 U 65 t sb L 6,0 U 66 U 67 U 68
+| in 2,6 dd/af/sb/bb fully armed, except sb only 1s
+edit s 40 U 70 t dd L 2,6 m 20 g 4 s 40
+edit s 70 U 71 t af
+edit s 70 U 72 t sb s 1
+edit s 70 U 75 t bb g 12
+| in 6,6 dd/sb, 2,6 is fractional range 50%
+edit s 70 U 76 t dd L 6,6 T 100
+edit s 76 U 77 t sb
+| in 8,6 dd, 2,6 is out of range
+edit s 70 U 78 L 8,6
+| in -2,6 na behind land
+edit s 70 U 79 t na L -2,6
+| in 2,6 allied dd
+edit s 70 U 80 O 3
+|| attacking ships
+| surface ship that has just enough of everything
+edit s 0 O 1 t af L 2,0 E 60 M 1 m 1 g 1 s 3
+| lacks capability torp
+edit s 0 U 1 t lc
+| no guns
+edit s 0 U 2 g 0
+| not enough shells
+edit s 0 U 3 s 2
+| no military
+edit s 0 U 4 m 0
+| 59% efficient
+edit s 0 U 5 E 59
+| no mobility
+edit s 0 U 6 M 0
+| lacks capability sub-torp
+edit s 0 U 7 t pt
+| submarines that have plenty of everything
+edit s 0 U 10 t sb E 100 M 127 g 4 s 36 T 60 U 11 t na
+| surface ships that have plenty of everything
+edit s 10 U 15 t af U 16
+| several pt in 2,6
+edit s 0 U 20 t pt L 2,6 E 100 U 21 U 22 U 23 U 24
+| several sb in 2,6
+edit s 20 U 25 t sb U 26 U 27 U 28 U 29
+| missions for torpedo to clear
+miss s * ?own=1 int .
+|| show initial state here to help maintainers
+map *
+cens * ?own#0
+comm * ?own#0
+ship *
+carg *
+land *
+lcarg *