3 # Assumed initial state:
4 # nats POGO, 1..5, $MAXNOC-1
10 # all wilderness, rest sea
11 # owned sectors have 1m 1c
12 # units 5 cs #0..4, 5 f1 #0..4, 5 sup #0..4, all in 1,-1 owned by 3
21 my $INT_MAX = 0x7fffffff;
22 my $INT_MIN = -$INT_MAX - 1;
57 my ($ef, $id, $key, @rest) = @_;
58 my $args = join(' ', @rest);
59 print "edit $ef2edit{$ef} $id $key $args\n";
63 my ($ef, $id, @rest) = @_;
64 print "edit $ef2edit{$ef} $id\n";
76 my ($x, $y) = split /,/, $id;
82 my ($ef, $id, $key, $lob, $upb) = @_;
83 edit($ef, $id, $key, $lob);
84 $id = next_id($ef, $id);
85 edit($ef, $id, $key, $lob - 1)
87 $id = next_id($ef, $id);
88 edit($ef, $id, $key, $upb);
89 $id = next_id($ef, $id);
90 edit($ef, $id, $key, $upb + 1)
95 my ($ef, $id, @rest) = @_;
97 edit_int1($ef, $id, @$it);
102 my ($id, $key, $val) = @_;
103 print "setres $key $id $val\n";
107 my ($id, $key, $val) = @_;
108 print "setsect $key $id $val\n";
112 my ($id, $key, $val) = @_;
113 print "give $key $id $val\n";
117 my ($id1, $id2) = @_;
118 print "swaps $id1 $id2\ny\n";
124 edit('sect', '0,0', '@', 0);
125 setres('0,0', '@', 0);
126 setsect('0,0', '@', 0);
129 # own oldown che_target
130 for my $key ('o', 'O', 'X') {
131 edit('sect', '1,7', $key, 0);
132 edit('sect', '1,7', $key, -1);
133 edit('sect', '3,7', $key, $MAXNOC - 1);
134 edit('sect', '3,7', $key, $MAXNOC);
136 edit('sect', '5,7', 'o', 2);
137 for my $key ('ow', 'ol') {
138 setsect('7,7', $key, 0);
139 setsect('7,7', $key, -1);
140 setsect('9,7', $key, $MAXNOC - 1);
141 setsect('9,7', $key, $MAXNOC);
143 setsect('11,7', 'ow', 2);
146 edit('sect', '1,7', 'L', '1,-7');
147 edit('sect', '3,-7', 'L', '3,-7', 'L', '1,0');
149 # effic mobil iron gmin fertil oil uran work loyalty che pstage ptime
150 # fallout avail mines road rail defense
153 my ($key, $lob, $upb) = @$it;
154 edit_int1('sect', '1,1', $key, $lob, $upb);
155 my $rkey = $edit2setres{$key};
158 setres('2,2', $rkey, $lob);
159 setres('4,2', $rkey, $lob - 1);
160 setres('6,2', $rkey, $upb);
161 setres('8,2', $rkey, $upb + 1);
163 my $skey = $edit2setsect{$key};
165 setsect('1,3', $skey, $INT_MIN);
166 setsect('3:7,3', $skey, 1);
167 setsect('5,3', $skey, $INT_MAX);
168 setsect('7,3', $skey, -1);
194 edit('sect', '2,4', 'D', '4,4');
195 edit('sect', '4,4', 'D', '4,4');
198 for my $key ('s', 'S') {
199 edit('sect', '6,4', $key, '+');
200 edit('sect', '6,4', $key, '+');
201 edit('sect', '8,4', $key, '+');
202 edit('sect', '8,4', $key, ',');
206 edit('sect', '1,5', 'm', 1, 'a', 1);
209 iedit('sect', '3,5', 'm 2', 'a 1');
210 iedit('sect', '5,5', ' ');
213 give('2,6', 'l', $INT_MIN);
214 give('4:8,6', 'c', 1);
215 give('6,6', 'c', $INT_MAX);
216 give('8,6', 'c', -1);
219 swaps('-2,2', '2,-2');
221 ## Ship, plane, land unit
223 for my $ef ('ship', 'plane', 'land') {
225 edit($ef, 0, '@', 0);
227 edit($ef, 0, 'O', 0);
228 edit($ef, 0, 'O', -1);
229 edit($ef, 1, 'O', $MAXNOC - 1);
230 edit($ef, 1, 'O', $MAXNOC);
231 edit($ef, 2, 'O', 2);
233 edit($ef, 3, 'U', 5, 'U', 3);
234 edit($ef, 0, 'U', 0, 'U', -1);
236 my $key = $ef eq 'plane' ? 'l' : 'L';
237 edit($ef, 2, $key, '3,-1');
238 edit($ef, 3, $key, '1,-1');
241 # ship: effic mobil tech pstage ptime milit
242 edit_int('ship', 2, (
251 # plane: effic mobil range tech
252 edit_int('plane', 2, (
259 # land: effic mobil tech harden retreat milit
260 edit_int('land', 2, (
272 edit($ef, 2, $key, '~');
273 edit($ef, 3, $key, 'a');
275 unit_group('ship', 'F');
276 unit_group('plane', 'w');
277 unit_group('land', 'a');
280 for my $ef ('ship', 'land') {
281 edit($ef, 2, 'R', '""');
282 edit($ef, 3, 'R', 'jj');
283 # Take care to have only valid bits set in final state
284 edit($ef, 2, 'W', 0, 'W', 1);
285 edit($ef, 3, 'W', 513, 'W', 1030, 'W', 2);
289 # Take care to have only valid bits set in final state
290 edit('plane', 2, 'f', 4);
294 my ($ef, $skey, $pkey) = @_;
295 edit($ef, 2, $skey, -1, $skey, 9999);
296 edit($ef, 3, $skey, 3);
297 edit($ef, 4, $skey, 4, $pkey, 4);
299 unit_carrier('plane', 's', 'y');
300 unit_carrier('land', 'S', 'Y');
303 iedit('ship', 0, 'M 2', 'm 1', 'f 1');
304 iedit('ship', 0, 'R n', 'R ""');
305 iedit('plane', 0, 'm 2', 'y -1');
306 iedit('land', 0, 'M 2', 'Y -1');
311 edit('nat', 0, '@', 0);
313 # btus reserve timeused money
317 ['m', 0, 2147483647],
319 ['M', -2147483648, 2147483647],
323 # Take care to use ones that won't receive further telegrams
324 edit('nat', 6, 't', -1);
325 edit('nat', 7, 't', 65536);
327 # tlev rlev elev hlev
328 for my $key ('T', 'R', 'E', 'H') {
329 edit('nat', 1, $key, 3.14);
330 edit('nat', 2, $key, 100);
331 edit('nat', 3, $key, -1);
335 edit('nat', 1, 'n', 'POGO');
336 edit('nat', 2, 'n', '2');
337 edit('nat', 3, 'n', 'drei');
340 edit('nat', 1, 'r', 1);
341 edit('nat', 2, 'r', '012345678901234567890123456789');
343 # xcap,ycap xorg,yorg
344 for my $key ('c', 'o') {
345 edit('nat', 1, $key, '0,0');
346 edit('nat', 2, $key, '2,0');
350 # Refs to nats with status 0 are invalid, take care to use
351 # unreferenced ones for that
352 edit('nat', 6, 's', 0);
353 edit('nat', 7, 's', -1);
354 edit('nat', 4, 's', $STAT_GOD);
355 edit('nat', 5, 's', $STAT_GOD + 1);
358 iedit('nat', 5, 'b 640', 'T 1');
360 ## Epilog: read telegrams (they're not in xdump)
361 for my $cnum (0, 1, 2, 3, 4, 5, 98) {
362 print "read $cnum\n";