games-request@tekred.TEK.COM (07/10/87)
Submitted by: "Stanley T. Shebs" <shebs%orion@cs.utah.edu> Comp.sources.games: Volume 1, Issue 87 Archive-name: xconq/Part07 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 7 (of 7)." # Contents: 1800.u Makefile Xdefaults config.h greek.c napoleon.c # order.c side.h ww2.u xmap.c # Wrapped by billr@tekred on Thu Jul 9 17:45:52 1987 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 1800.u -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"1800.u\" else echo shar: Extracting \"1800.u\" \(6011 characters\) sed "s/^X//" >1800.u <<'END_OF_1800.u' Xbegin 644 1800.onx XM&````/`'$``!````?@#X#P``"P`!`!``__\````````````````````````` XM```````````````````````````````````````````````````````````` XM`````/]__W_4Z@`````````````!@0`````!`0`````````````````````` XM```````````````````````````````````````````````````````````` XM``````````````````````````````````````````!551`(```````````` XM```````````````````````````````````````````````````````````` XM````````B8#__P`````````````````````````````````````````````` XM````````````````````````````````````````````@V"!0*UI```````` XM``````)!`````(*"````(`!``'``<`!0`'``8``````````````````````` XM```$`````,`````````````````````````````````````````````````` XM`````````````````````"``$`@````````````````````````````````` XM```````````````````````````````````````````````"4`/````````` XM```````````````````````````````````````````````````````````` XM``````````````````````"%4(%`5K<`````````````!"'_#P``?'P```!0 XM`$``0`!``%``$``0``````````````````````````0``.``P``````````` XM````(`````````````````````````!````````````````````````````` XM=548&``````````````````````````````````````````````````````` XM`````````````````````````%0%`\`````````````````````````````` XM```````````````````````````````````````````````````````````` XM`(E(@4"]W0`````````````($0```````````%``0`!P`&``<`!P`'`````` XM````````````````````!```^`-`$`````!````````4```````````````` XM`````````.`("`````````````````````````#X@#@\```````````````` XM```````````````````````````````````````````````````````````` XM`````5$#P``````````````````````````````````````````````````` XM````````````````````````````````````````D42!0'=W```````````` XM`!`)`_\``!`0@`$`4`!``!``0`!``$``4``````````````````````````. XM``#X`\`[`````.`$``````X!````````````````````````0`Q0```````` XM`````````````````/W3.#P````````````````````````````````````` XM``````````````````````````````````````````!4"0/````````````` XM```````````````````````````````````````````````````````````` XM``````````````````"A0H%`W=T`````````````(`4`````*"A@!@`@`$`` XM<`!P`$``<``@``````````````````````````X``.P&P#P`````0`X````` XMK@````````````````````````#T"6`"````````````````````````S\<X XM/``````````````````````````````````````````````````````````` XM`````````````````````"!%`\`````````````````````````````````` XM`````````````````````````````````````````````````````````,%! XM@4"W=@````````````!``_P_``#'QQ@8```````````````````````````` XM``````````````"`/\`!_`?`;@````#T!0````!^"``````````````````` XM`````$0^0`P```````````````````````!7?SP\```````````````````` XM```````````````````````````````````````````````````````````` XM11,#P``````````````````````````````````````````````````````` XM````````````````````````````````````_W__?_W;```````````&8(`! XM````````Q",``````````````````````````````````````````(`S^'_L XM!O!/`````$X$`````'0%````````````````````````3@A`"``````````` XM`````````````(,^?#P````````````````````````````````````````` XM``````````````````````````````````````"0`0/````````````````` XM```````````````````````````````````````````````````````````` XM``````````````#!08%`5G<``````````+9M__\/_````0%$(@`````````` XM````````````````````````````````OC/X?QP'_`\`````1!\`````]$,` XM``````````````````````!$?T`(````````````````````````55U\?@`` XM```````````````````````````````````````````````````````````` XM`````````````````,_]`\`````````````````````````````````````` XM`````````````````````````````````````````````````````*%"@4#O XMO0``````````_G]``P````""@D0B```````````````````````````````` XM``````````"J/O`'^`/Z'P````#V!0````"@*P`````````````````````` XM`/\+?$\````````````````````````J^'Q^```````````````````````` XM``````````````````````````````````````````````````````````,# XMP``````````````````````````````````````````````````````````` XM````````````````````````````````D42!0+;K``````````#^?R`%_N<` XM`'Q\1"(``````````````````````````````````````````/YWV`7X`_0X XM`````$1$`````*`?````````````````````````1(A`*``````````````` XM`````````%_E?GX````````````````````````````````````````````` XM```````````````````````````````````D%0/````````````````````` XM```````````````````````````````````````````````````````````` XM``````````")2(%`IFL``````````+Y_$`D```````#\/P`````````````` XM````````````````````````````JGZL`E`!8B@`````1"0``````!T````` XM``````````````````!$:/P_````````````````````````/_#^?@`````` XM```````````````````````````````````````````````````````````` XM`````````````)%(`\`````````````````````````````````````````` XM`````````````````````````````````````````````````(50@4"F:0`` XM````````OG\($?P#```0$``````````````````````````````````````` XM``````#^:\<!4`&T)`````#^'P``````'0```````````````````````/\_ XM^!\```````````````````````#UO_Y^```````````````````````````` XM````````````````````````````````````````````````````*!$#P``` XM```````````````````````````````````````````````````````````` XM````````````````````````````@V"!0*9I``````````````0A`````"@H XM`````````````````````````````````````````````/__``#@`)`4```` XM`/P/```````(````````````````````````JRH````````````````````` XM`````.@<_O\````````````````````````````````````````````````` XM```````````````````````````````%!?__```````````````````````` XM```````````````````````````````````````````````````````````` XM``````#_?_]_AF$``````````````D&/CP``Q\<````````````````````` XM`````````````````````````````.``(`$```````````````@````````` XM``````````````#^'P``````````````````````````U5___P`````````` XM```````````````````````````````````````````````````````````` XM`````````$I!__\````````````````````````````````````````````` XM``````````````````````````````````````````````````"&80`````` XM```````!@0`````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````"(?__```````````````````````````````` XM`````````````````````````````````````````````````94``!``(``P XM`$``4`!@`'``@`"0`*``L`#``-``X`#P```!$`$@`3`!0`%0`6`!<`&``9`! XMH`&P`<`!T`'@`?`!``(0`B`",`)``E`"8`)P`H`"D`*@`K`"P`+0`N`"\`(` XM`Q`#(`,P`T`#4`-@`W`#@`.0`Z`#L`/``]`#X`/P`P`$$`0@!#`$0`10!&`$ XM<`2`!)`$H`2P!,`$T`3@!/`$``40!2`%,`5`!5`%8`5P!8`%D`6@!;`%P`70 XM!>`%\`4`!A`&(`8P!D`&4`9@!G`&@`:0!J`&L`;`!M`&X`;P!@`'$`<@!S`' X80`=0!V`'<`>`!Y`'H`>P!\`'T`?@!_`' X` Xend END_OF_1800.u if test 6011 -ne `wc -c <1800.u`; then echo shar: \"1800.u\" unpacked with wrong size! fi # end of overwriting check fi if test -f Makefile -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"Makefile\" else echo shar: Extracting \"Makefile\" \(2916 characters\) sed "s/^X//" >Makefile <<'END_OF_Makefile' X# Copyright (c) 1986 Stanley T. Shebs, University of Utah. X# This program may be used, copied, modified, and redistributed freely X# for noncommercial purposes, so long as this notice remains intact. X X# RCS $Header: Makefile,v 1.5 87/06/07 20:09:32 shebs Exp $ X XSYSTEM = HPUX X XDESTDIR = /usr/games X XLIBDIR = $(DESTDIR)/lib/xconq X XMANDIR = /usr/local/man/man6 X XXFONTPATH = /usr/new/lib/X/font X X# This name sets the default period for xconq. WWII is most familiar and X# popular. X XPERIODOBJ = ww2.o X XOBJ = xconq.o init.o do.o mplay.o move.o atk.o side.o city.o unit.o order.o \ X util.o X.o input.o draw.o output.o help.o X XLIBS = -lX X XCFLAGS = -O -D$(SYSTEM) X# -DXCONQDIR="$(DESTDIR)" -DXCONQLIB="$(LIBDIR)" X Xall: xconq xconq.doc mkmap xmap X X# The standard game X Xxconq: $(OBJ) $(PERIODOBJ) X cc -o xconq $(CFLAGS) $(OBJ) $(PERIODOBJ) $(LIBS) X X# For connoiseurs X Xgxconq: $(OBJ) greek.o X cc -o gxconq $(CFLAGS) $(OBJ) greek.o $(LIBS) X Xnxconq: $(OBJ) napoleon.o X cc -o nxconq $(CFLAGS) $(OBJ) napoleon.o $(LIBS) X X# Dependencies on include files X X$(OBJ): xconq.h config.h X Xxconq.o: version.h X XX.o: bitmaps.h X Xside.o: side.h X X# Support things X Xxconq.doc: xconq.nr X nroff -ms xconq.nr >xconq.doc X Xmkmap: mkmap.c mkmap.h X cc -o mkmap $(CFLAGS) mkmap.c X Xxmap: xmap.c X cc -o xmap $(CFLAGS) xmap.c -lX X X# Installation requires programs in $(DESTDIR) and a library directory. X Xinstall: X cp xconq mkmap xmap $(DESTDIR) X cp lib/* $(LIBDIR) X cp *.onx $(XFONTPATH) X cp *.6 $(MANDIR) X Xclean: X rm -f xconq gxconq nxconq mkmap xmap *.o *.xconq X X# Pretty output for your favorite fancy printer X XTROFFER = psroff XPRINTER = 4eps X Xpaper: X $(TROFFER) -man -P$(PRINTER) *.6 X $(TROFFER) -ms -P$(PRINTER) xconq.nr X X# Local hack to put all the stuff onto a machine that does rdist via crontab. X# This is very useful in a workstation environment. X XDISTER = /n/jensen X Xrinstall: X ( netunam $(DISTER) shebs: ; \ X bsdcp -p xconq mkmap xmap xconq.doc $(DISTER)$(DESTDIR); \ X bsdcp -p lib/*.onx lib/xconq.news $(DISTER)$(LIBDIR); \ X bsdcp -p lib/*.map lib/*.scn $(DISTER)$(LIBDIR); \ X bsdcp -p *.6 $(DISTER)$(MANDIR); ) X X# How the shar files were made. This is complicated by the need to X# transmit X fonts and by the 90% compression that happens to the maps, X# reducing 200K to 20K... X Xshar: X uuencode ww2.onx <lib/ww2.onx >ww2.u X uuencode greek.onx <lib/greek.onx >greek.u X uuencode 1800.onx <lib/1800.onx >1800.u X shar ReadMe Makefile Xdefaults *.6 *.nr >shar.1 X shar [A-Za-c]*.[ch] >shar.2 X shar [d-l]*.[ch] >shar.3 X shar [m-m]*.[ch] >shar.4 X shar [n-w]*.[ch] >shar.5 X shar [x-z]*.[ch] >shar.6 X shar lib/split lib/rejoin lib/*.map lib/*.scn >preshar.7 X compress preshar.7 X uuencode preshar.7.Z <preshar.7.Z >preshar.7.u X shar *.u >shar.7 X X# Use this to take care of the details that shar doesn't. X Xunshar: X uudecode ww2.u X uudecode greek.u X uudecode 1800.u X mkdir lib X mv *.onx lib X uudecode preshar.7.u X uncompress preshar.7.Z X sh preshar.7 X END_OF_Makefile if test 2916 -ne `wc -c <Makefile`; then echo shar: \"Makefile\" unpacked with wrong size! fi # end of overwriting check fi if test -f Xdefaults -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"Xdefaults\" else echo shar: Extracting \"Xdefaults\" \(527 characters\) sed "s/^X//" >Xdefaults <<'END_OF_Xdefaults' X# This is an example of stuff to go in .Xdefaults, in particular it X# illustrates yet another way to get fonts to work right. Just include X# the full pathname of the font. This will also work if you are experimenting X# and don't want to recompile the program just to get a font from elsewhere. X Xxconq.SideName: Rockjock Xxconq.BodyFont: timrom12 Xxconq.IconFont: /u/shebs/games/xconq/lib/ww2.onx X Xnxconq.IconFont: /u/shebs/games/xconq/lib/1800.onx Xgxconq.IconFont: /u/shebs/games/xconq/lib/greek.onx X END_OF_Xdefaults if test 527 -ne `wc -c <Xdefaults`; then echo shar: \"Xdefaults\" unpacked with wrong size! fi # end of overwriting check fi if test -f config.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"config.h\" else echo shar: Extracting \"config.h\" \(4383 characters\) sed "s/^X//" >config.h <<'END_OF_config.h' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: config.h,v 1.7 87/06/07 20:09:29 shebs Exp $ */ X X/* This file has a great many things that can be fiddled with; generally, */ X/* the more interesting things to tweak are closer to the front of the file. */ X/* There are a lot of limits on statically-allocated type things as well, */ X/* some of these can be changed freely, while others have some connection to */ X/* the body of code. The second category is identified where it occurs. */ X X/* We use Unix system calls here and there. */ X X#define UNIX X X/* The game is thoroughly wired to X, but there are some token ifdefs... */ X X#define XWINDOWS X X/* The particular Unix type is defined in the Makefile. */ X X/* #define HPUX */ /* for HP 9000 series [235]00 (SYSV + BSD) */ X X/* #define BSD */ /* for Berkeley Unix everywhere */ X X/* #define SYSV */ /* Darth Vader Unix */ X X/* Little incompatibilities... */ X X#ifdef HPUX X#define index strchr X#endif HPUX X X#ifdef BSD X#endif BSD X X#ifdef SYSV X#define index strchr X#endif SYSV X X/* This is where the map generator should be (also xconq proper, but it */ X/* doesn't care where it executes from!) */ X X#ifndef XCONQDIR X#define XCONQDIR "/usr/games" X#endif X X/* This is where predefined maps and scenarios can be found. */ X X#ifndef XCONQLIB X#define XCONQLIB "/usr/games/lib/xconq" X#endif X X/* The newsfile should live in the lib directory. */ X X#define NEWSFILE "xconq.news" X X/* The name of the savefile. It should be in the current directory. */ X X#define SAVEFILE "save.xconq" X X/* This file gets the parameter listing for the period in use. */ X X#define PARMSFILE "parms.xconq" X X/* This file gets the game statistics when it's all over. */ X X#define STATSFILE "stats.xconq" X X/* The name of the map generator program. */ X X#define MAPMAKERNAME "mkmap" X X/* Absolute maximum size of the world (attempts to malloc the world failed */ X/* mysteriously). The numbers are just big enough for a map of the earth. */ X X#define MAXWIDTH 360 X X#define MAXHEIGHT 160 X X/* Default random map sizes. Adjust these to taste - 65x65 is a moderate */ X/* length game, 35x35 is short, 360x120 is L-O-N-G */ X X#define DEFAULTWIDTH 60 X X#define DEFAULTHEIGHT 35 X X/* Absolute maximum number of sides that can play. This limit can only be */ X/* extended by changing the representation of views of players. */ X X#define MAXSIDES 7 X X/* Absolute maximum number of kinds of units. (same restriction as above) */ X X#define MAXUTYPES 16 X X/* Number of units and cities that can be active at one time. Limit is */ X/* because of array usage, but also handy for keeping production reasonable. */ X X#define MAXUNITS 500 X X#define MAXCITIES 400 X X/* Number of characters allocated for names of cities. The space should */ X/* be malloced instead I guess... */ X X#define MAXCITYBUF 8000 X X/* Number of turns allowed before game is forcibly terminated. */ X X#define MAXTIME 10000 X X/* Number of messages displayed at one time. 10 is a max unless you use */ X/* tiny fonts or smaller viewing areas or screens more than 768 pixels high. */ X X#define MAXNOTES 10 X X/* All names, phrases, and messages must be able to fit in statically */ X/* alloced buffers of this size. Take heed if you fiddle with font sizes... */ X X#define BUFSIZE 120 X X/* If defined, randomly generated maps will be deleted automatically. */ X/* Otherwise, they are available, and good ones can be saved for replay. */ X X#define REMOVEMAP X X/* If defined, towns produce more slowly than cities. More realistics, */ X/* but game drags a bit. */ X X/* #define SLOWTOWNS */ X X/* If defined, players get only so many inputs per turn, counted by */ X/* keystrokes + mouse clicks. This is the default; the "-c" flag toggles. */ X X#define USECOUNTER TRUE X X/* If defined, a real-time counter is used. "-t" toggles this default. */ X X#define USETIMER FALSE X X/* If defined, a statistics file is written at the end of the game. */ X/* The numbers therein are only for serious gamers. */ X X#define STATISTICS X X/* If defined, we get access via "-D" to all kinds of extra output. */ X X#define DEBUGGING X X/* If defined, some additional hook-type features become available. */ X/* Intended for persons adding new maps, scenarios, and periods. */ X X#define EXPERIMENTING END_OF_config.h if test 4383 -ne `wc -c <config.h`; then echo shar: \"config.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f greek.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"greek.c\" else echo shar: Extracting \"greek.c\" \(3503 characters\) sed "s/^X//" >greek.c <<'END_OF_greek.c' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: greek.c,v 1.1 87/05/22 14:32:20 shebs Exp $ */ X X#include "xconq.h" X Xchar periodname[] = "Ancient Greece ca 350 BC"; X Xchar fontname[] = "greek"; X X/* Number of types of units + 1 */ X Xint numutypes = 8; X Xint assaulter = 1; X Xint ttransport = 5; X XUtype utypes[] = X{ { 'P', "peltast", X "light infantry - fast-moving but weak", X 0, 2, 1, 0, 4, 1, 4, 4, 0, X { 0, 0, 2, 1, 2, 1, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 40, 30, 50, 40, 20, 10, 10, 30 }, 1, 0, 0, X { 0, 2, 2, 2 }, { 0, 50, 10, 5 }, { 0, 20, 40, 60 }, X { 0, 0, 0, 0, 0, 0, 0, 0 }, 3, 0 }, X { 'H', "hoplite", X "heavy infantry - destructive", X 0, 1, 1, 0, 5, 2, 8, 8, 0, X { 0, 0, 2, 1, 1, 1, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 50, 40, 50, 50, 30, 20, 20, 50 }, 2, 1, 0, X { 0, 2, 2, 2 }, { 0, 70, 20, 10 }, { 0, 10, 30, 40 }, X { 0, 0, 0, 0, 0, 0, 0, 0 }, 3, 0 }, X { 'A', "archer", X "archers and slingers", X 0, 1, 1, 0, 5, 1, 10, 12, 0, X { 0, 0, 1, 0, 1, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 30, 20, 30, 30, 20, 20, 60, 30 }, 1, 0, 0, X { 0, 1, 1, 1 }, { 0, 2, 1, 1 }, { 0, 20, 40, 60 }, X { 0, 0, 0, 0, 0, 0, 0, 0 }, 5, 1 }, X { 'C', "cavalry", X "very fast and some shock effect but expensive", X 0, 4, 1, 0, 2, 1, 10, 12, 0, X { 0, 0, 4, 2, 4, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 1, 0, 0, 0, 0 }, X { 60, 30, 50, 50, 30, 20, 50, 60 }, 2, 3, 0, X { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 20, 40, 60 }, X { 0, 0, 0, 0, 0, 0, 0, 0 }, -1, 0 }, X { 'B', "bireme", X "small ship with two decks of oars", X 0, 2, 1, 0, 15, 3, 10, 12, 0, X { 2, 2, 0, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 20, 10, 20, 20, 40, 30, 10, 20 }, 1, 0, 0, X { 0, 1, 1, 1 }, { 0, 1, 1, 0 }, { 0, 20, 50, 70 }, X { 2, 2, 0, 0, 0, 0, 0, 0 }, 2, 1 }, X { 'T', "trireme", X "Three decks of oars - all-around ship", X 0, 2, 1, 0, 20, 5, 20, 22, 0, X { 2, 2, 0, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 10, 10, 10, 10, 30, 50, 10, 30 }, 1, 0, 0, X { 0, 1, 1, 1 }, { 0, 3, 2, 1 }, { 0, 10, 40, 60 }, X { 3, 3, 1, 2, 0, 0, 0, 1 }, 1, 1 }, X { 'E', "elephant", X "the tanks of the ancient world", X 0, 2, 1, 0, 4, 1, 60, 40, 0, X { 0, 0, 2, 1, 2, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 50, 50, 50, 50, 10, 10, 50 }, 2, 0, 0, X { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 20, 40, 60 }, X { 0, 0, 0, 0, 0, 0, 0, 1 }, -1, 0 }, X { 'S', "siege engine", X "good for bashing cities", X 0, 1, 1, 0, 4, 1, 30, 30, 0, X { 0, 0, 1, 0, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 10, 10, 10, 10, 10, 10, 10, 5 }, 1, 0, 0, X { 0, 1, 1, 1 }, { 0, 2, 3, 4 }, { 0, 10, 20, 30 }, X { 0, 0, 0, 0, 0, 0, 0, 0 }, -1, 0 } X}; X Xint numctypes = 4; X XCtype ctypes[] = X{ { '-', "countryside", X "nothing there", X 0, 0, 0, 0, 0, { 0, 0, 0 } }, X { '/', "camp", X "place to rest up", X 10, 2, 90, 100, 120, { 5, 5, 10 } }, X { '*', "polis", X "produces, but easily captured and may revolt", X 20, 2, 30, 400, 600, { 10, 10, 10 } }, X { '@', "megalopolis", X "large city, hard to capture", X 40, 1, 10, 2000, 3000, { 20, 20, 20 } } X}; END_OF_greek.c if test 3503 -ne `wc -c <greek.c`; then echo shar: \"greek.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f napoleon.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"napoleon.c\" else echo shar: Extracting \"napoleon.c\" \(3021 characters\) sed "s/^X//" >napoleon.c <<'END_OF_napoleon.c' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: napoleon.c,v 1.2 87/05/26 14:17:45 shebs Exp $ */ X X#include "xconq.h" X Xchar periodname[] = "Napoleonic era ca 1800"; X Xchar fontname[] = "1800"; X Xint numutypes = 7; X Xint assaulter = 0; X Xint ttransport = 3; X XUtype utypes[] = X{ { 'I', "infantry", X "the backbone of the army", X 0, 1, 1, 0, 4, 1, 4, 4, 0, X { 0, 0, 1, 1, 1, 1, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 0, 0, 1, 0, 0, 0, 0 }, X { 40, 30, 70, 20, 10, 5, 60 }, 1, 0, 0, X { 0, 2, 2, 2 }, { 0, 50, 30, 10 }, { 0, 10, 20, 30 }, X { 0, 0, 0, 0, 0, 0, 0 }, 2, 1 }, X { 'C', "cavalry", X "zips around for shock effect", X 0, 5, 1, 0, 10, 1, 10, 10, 0, X { 0, 0, 5, 2, 5, 1, 0 }, X { 0, 0, 1, 1, 0, 1, 0 }, X { 0, 0, 1, 1, 0, 1, 0 }, X { 50, 40, 70, 10, 5, 1, 20 }, 2, 1, 0, X { 0, 2, 2, 2 }, { 0, 20, 10, 5 }, { 0, 20, 40, 60 }, X { 0, 0, 0, 0, 0, 0, 0 }, 10, 1 }, X { 'A', "artillery", X "doesn't move much but pounds on infantry", X 0, 1, 1, 0, 4, 1, 10, 12, 0, X { 0, 0, 1, 1, 1, 0, 0 }, X { 0, 0, 1, 1, 1, 0, 0 }, X { 0, 0, 1, 0, 0, 0, 0 }, X { 60, 60, 30, 50, 50, 40, 10 }, 2, 0, 1, X { 0, 1, 1, 1 }, { 0, 1, 2, 2 }, { 0, 10, 20, 30 }, X { 0, 0, 0, 0, 0, 0, 0 }, 0, 0 }, X { 'T', "transport", X "ungainly boats", X 1, 2, 1, 0, 300, 2, 15, 15, 0, X { 2, 2, 0, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 1, 0, 0, 0, 0 }, X { 20, 30, 10, 20, 10, 10, 5 }, 1, 0, 0, X { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, X { 5, 2, 1, 0, 0, 0, 0 }, 0, 0 }, X { 'F', "frigate", X "fast but small ship", X 1, 6, 1, 0, 300, 3, 20, 25, 0, X { 5, 2, 0, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 50, 40, 25, 60, 50, 50, 10 }, 1, 1, 5, X { 0, 2, 1, 1 }, { 0, 30, 1, 1 }, { 0, 10, 30, 50 }, X { 1, 0, 0, 0, 0, 0, 0 }, 0, 0 }, X { 'S', "fleet", X "Ship of the line", X 1, 4, 1, 0, 400, 6, 30, 40, 0, X { 3, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 0, 0, 1, 1, 0, 0, 0 }, X { 50, 50, 30, 80, 40, 50, 10 }, 2, 1, 5, X { 0, 1, 1, 1 }, { 0, 2, 2, 2 }, { 0, 10, 30, 50 }, X { 2, 1, 0, 0, 0, 0, 0 }, 0, 0 }, X { 'B', "balloon", X "rather fragile", X 2, 5, 1, 0, 10, 1, 40, 50, 0, X { 5, 5, 5, 5, 5, 0, 0 }, X { 0, 0, 1, 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, X { 10, 10, 10, 10, 10, 10, 1 }, 1, 2, 0, X { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, X { 0, 0, 0, 0, 0, 0, 0 }, 0, 0 } X}; X Xint numctypes = 4; X XCtype ctypes[] = X{ { '-', "countryside", X "nothing there", X 0, 0, 0, 0, 0, { 0, 0, 0 } }, X { '/', "camp", X "place to rest up", X 10, 2, 90, 100, 120, { 1, 5, 10 } }, X { '*', "city", X "produces, but easily captured and may revolt", X 20, 2, 30, 400, 600, { 2, 10, 10 } }, X { '@', "capital", X "large city, hard to capture", X 40, 1, 10, 2000, 3000, { 2, 20, 20 } } X}; END_OF_napoleon.c if test 3021 -ne `wc -c <napoleon.c`; then echo shar: \"napoleon.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f order.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"order.c\" else echo shar: Extracting \"order.c\" \(2464 characters\) sed "s/^X//" >order.c <<'END_OF_order.c' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: order.c,v 1.2 87/05/22 14:51:49 shebs Exp $ */ X X#include "xconq.h" X Xchar orderchars[] = ORDERCHARS; /* characters naming kinds of orders */ Xchar *ordernames[] = ORDERNAMES; /* full names of orders */ Xchar *orderargnames[] = ORDERARGNAMES; /* name of type of order parms */ Xchar *dirnames[] = DIRNAMES; /* short names of directions */ X Xint orderargs[] = ORDERARGS; /* types of parameters for each order */ X X/* General routine to wake up a unit and all its cargo. */ X Xwake_unit(unit) XUnit *unit; X{ X Unit *carg; X X wakeup(unit); X X for (carg = unit->cargo; carg != NULL; carg = carg->nexthere) { X wakeup(carg); X } X} X X/* Wake up only the unit itself and reset the goal. */ X Xwakeup(unit) XUnit *unit; X{ X unit->orders.type = AWAKE; X unit->orders.rept = 0; X unit->goal = NORMAL; X} X X/* Give a unit sentry orders. */ X Xorder_sentry(unit, n) XUnit *unit; Xint n; X{ X unit->orders.type = SENTRY; X unit->orders.rept = n; X} X X/* Fill in the given unit with direction-moving orders. */ X Xorder_movedir(unit, dir, n) XUnit *unit; Xint dir, n; X{ X unit->orders.type = MOVEDIR; X unit->orders.parms[0] = dir; X unit->orders.rept = n; X} X X/* General routine to fill in the Move To orders. */ X Xorder_moveto(unit, x, y) XUnit *unit; Xint x, y; X{ X unit->orders.type = MOVETO; X unit->orders.parms[0] = x; X unit->orders.parms[1] = y; X /* nonsensical to repeat */ X unit->orders.rept = 1; X} X X/* Display orders in some coherent fashion. Use the information about the */ X/* types of order parameters to decide how to display them. */ X Xchar orderbuf[BUFSIZE]; X Xchar * Xorder_desig(orders) XOrder orders; X{ X char argbuf[BUFSIZE]; X X switch (orderargs[orders.type]) { X case NOARG: X sprintf(argbuf, ""); X break; X case DIR: X sprintf(argbuf, "%s ", dirnames[orders.parms[0]]); X break; X case POS: X sprintf(argbuf, "%d,%d ", orders.parms[0], orders.parms[1]); X break; X case ORIENT: X case LEADER: X case WAYPOINTS: X break; X default: X case_panic("order arg type", orderargs[orders.type]); X } X if (orders.rept > 1) X sprintf(orderbuf, "%s %s(%d)", X ordernames[orders.type], argbuf, orders.rept); X else X sprintf(orderbuf, "%s %s", X ordernames[orders.type], argbuf); X return orderbuf; X} END_OF_order.c if test 2464 -ne `wc -c <order.c`; then echo shar: \"order.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f side.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"side.h\" else echo shar: Extracting \"side.h\" \(1728 characters\) sed "s/^X//" >side.h <<'END_OF_side.h' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: side.h,v 1.2 87/05/21 17:29:58 shebs Exp $ */ X X/* Names of players' sides are assigned randomly from here if not preset */ X/* by a starting city. We go with 30 to provide variety without being */ X/* too elaborate. Tweak this file to get other sets (sports teams, science */ X/* fiction derivs, whatever) */ X X#define MAXSIDENAMES 30 X Xchar *sidenames[MAXSIDENAMES] = { X X /* Hacker language */ X/* "Wimp", "Luser", "Wizard", "Frobber", "Foo", "Bogonian", X "Tweaker", "Bozo", "Boffo", "Geek", "Gweeper", "Chomper", X "Nerd", "Bagbiter", "Barfer", "Bug", "Cretin", "Wieny", X "Daemon", "Twiddler", "Hacker", "Handwaver", "Munger", "Turkey", X "Flamer", "Wheel", "Winner", "DEC", "IBM", "Jock" X*/ X /* Contemporary nations */ X "American", "Canadian", "Mexican", "Sandinista", "Cuban", "Chilean", X "Brazilian", "Argentinian", "Spanish", "British", "French", "German", X "Italian", "Swiss", "Swedish", "Turk", "Israeli", "Arab", X "Iranian", "Indian", "Tibetan", "Mongolian", "Soviet", "Korean", X "African", "Libyan", "Indian", "Indonesian", "Australian", "Polynesian" X X /* Towns of the ancient Greeks */ X/* "Athenian", "Spartan", "Corinthian", "Theban", "Megaran", X "Miletan", "Messenian", "Syracusan", "Argive", "Ephesian", X "Lemnian", "Ambraciot", "Phokian", "Chian", "Delian", X "Geloan", "Carian", "Lokrian", "Melian", "Phliasian", X "Samian", "Thurian", "Tegean", "Dolopian", "Edonian", X "Olynthian", "Elean", "Lucanian", "Kytheran", "Skionian" X*/ X X}; END_OF_side.h if test 1728 -ne `wc -c <side.h`; then echo shar: \"side.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f ww2.u -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"ww2.u\" else echo shar: Extracting \"ww2.u\" \(6010 characters\) sed "s/^X//" >ww2.u <<'END_OF_ww2.u' Xbegin 644 ww2.onx XM&````/`'$``!````?@#X#P``"P`!`!``__\````````````````````````` XM```````````````````````````````````````````````````````````` XM`````/]__W_4Z@`````````````!@0`````!`0`````````````````````` XM```````````````````````````````````````````````````````````` XM``````````````````````````````````````````!551`(```````````` XM```````````````````````````````````````````````````````````` XM````````B8#__P`````````````````````````````````````````````` XM````````````````````````````````````````````@V"!0*UI```````` XM``````)!`````(*"`!,`(`!``'``<`!0`'``8``````````````````````` XM`,`!```````"````````0``````````````````````````````````````` XM`````````````````````"``$`@````````````````````````````````` XM```````````````````````````````````````````````"4`/````````` XM```````````````````````````````````````````````````````````` XM``````````````````````"%4(%`5K<`````````````!"'_#P``?'P`"P!0 XM`$``0`!``%``$``0````````````````````````3@$`````(`````````!@ XM````(``````````````````````````````````````````````````````` XM=548&``````````````````````````````````````````````````````` XM`````````````````````````%0%`\`````````````````````````````` XM```````````````````````````````````````````````````````````` XM`(E(@4"]W0`````````````($0`````````'`%``0`!P`&``<`!P`'`````` XM``````````````````#*`0`````$````````!G`````4```````````````` XM``````````````````````````````````````#X@#@\```````````````` XM```````````````````````````````````````````````````````````` XM`````5$#P``````````````````````````````````````````````````` XM````````````````````````````````````````D42!0'=W```````````` XM`!`)`_\``!`0``,`4`!``!``0`!``$``4````````````````````````$X' XM``!``"```````/@#8`````X!```````````````````````````````````` XM`````````````````/W3.#P````````````````````````````````````` XM``````````````````````````````````````````!4"0/````````````` XM```````````````````````````````````````````````````````````` XM``````````````````"A0H%`W=T```````````@`(`4`````*"@`!P`@`$`` XM<`!P`$``<``@````````````````````````R@4``$("````````_@=P0``` XMK@`````````````P````````````````````````````````````````S\<X XM/``````````````````````````````````````````````````````````` XM`````````````````````"!%`\`````````````````````````````````` XM`````````````````````````````````````````````````````````,%! XM@4"W=@``````````"`!``_P_``#'QX`&```````````````````````````` XM``````````````!.#\`#;"/``0````#@`&!@``!^"```````````^"L````` XM````````8`8```````````````````````!7?SP\```````````````````` XM```````````````````````````````````````````````````````````` XM11,#P``````````````````````````````````````````````````````` XM````````````````````````````````````_W__?_W;```````````(`(`! XM````````0`8``````````````````````````````````````````,IK_P_X XM'___H```````_G\``'0%``````````#\/P``````````8`#P#P`````````` XM`````````````(,^?#P````````````````````````````````````````` XM``````````````````````````````````````"0`0/````````````````` XM```````````````````````````````````````````````````````````` XM``````````````#!08%`5G<``````````!Q\__\/_````0$@!@`````````` XM````````````````````````````````?F_@?____G_P`P```&#^?P``]$,` XM`````````/P_``````````!@`/P_````````````````````````55U\?@`` XM```````````````````````````````````````````````````````````` XM`````````````````,_]`\`````````````````````````````````````` XM`````````````````````````````````````````````````````*%"@4#O XMO0``````````U%=``P````""@CX&```````````````````````````````` XM``````````#J??X__G\``/@?````.&!@``"@*P``````````^"L````````` XM`/P_^!\````````````````````````J^'Q^```````````````````````` XM``````````````````````````````````````````````````````````,# XMP``````````````````````````````````````````````````````````` XM````````````````````````````````D42!0+;K``````````!<?2`%_N<` XM`'Q\Z`\``````````````````````````````````````````'Y?_!\````` XM`````/`_<$```*`?````````````,``````````````````````````````` XM`````````%_E?GX````````````````````````````````````````````` XM```````````````````````````````````D%0/````````````````````` XM```````````````````````````````````````````````````````````` XM``````````")2(%`IFL``````````-Q7$`D````````$/``````````````` XM````````````````````````````JG4`````````````_']@`````!T````` XM````````````````````````````````````````````````/_#^?@`````` XM```````````````````````````````````````````````````````````` XM`````````````)%(`\`````````````````````````````````````````` XM`````````````````````````````````````````````````(50@4"F:0`` XM````````_O\($?P#```0$``,```````````````````````````````````` XM``````#__P````````````"`!W``````'0`````````````````````````` XM``````````````````````````#UO_Y^```````````````````````````` XM````````````````````````````````````````````````````*!$#P``` XM```````````````````````````````````````````````````````````` XM````````````````````````````@V"!0*9I``````````````0A`````"@H XM``P````````````````````````````````````````````````````````` XM```.8``````(```````````````````````````````````````````````` XM`````.@<_O\````````````````````````````````````````````````` XM```````````````````````````````%!?__```````````````````````` XM```````````````````````````````````````````````````````````` XM``````#_?_]_AF$``````````````D&/CP``Q\<`#``````````````````` XM``````````````````````````````````````````!```````@````````` XM````````````````````````````````````````````U5___P`````````` XM```````````````````````````````````````````````````````````` XM`````````$I!__\````````````````````````````````````````````` XM``````````````````````````````````````````````````"&80`````` XM```````!@0`````````````````````````````````````````````````` XM```````````````````````````````````````````````````````````` XM```````````````````````"(?__```````````````````````````````` XM`````````````````````````````````````````````````94``!``(``P XM`$``4`!@`'``@`"0`*``L`#``-``X`#P```!$`$@`3`!0`%0`6`!<`&``9`! XMH`&P`<`!T`'@`?`!``(0`B`",`)``E`"8`)P`H`"D`*@`K`"P`+0`N`"\`(` XM`Q`#(`,P`T`#4`-@`W`#@`.0`Z`#L`/``]`#X`/P`P`$$`0@!#`$0`10!&`$ XM<`2`!)`$H`2P!,`$T`3@!/`$``40!2`%,`5`!5`%8`5P!8`%D`6@!;`%P`70 XM!>`%\`4`!A`&(`8P!D`&4`9@!G`&@`:0!J`&L`;`!M`&X`;P!@`'$`<@!S`' X80`=0!V`'<`>`!Y`'H`>P!\`'T`?@!_`' X` Xend END_OF_ww2.u if test 6010 -ne `wc -c <ww2.u`; then echo shar: \"ww2.u\" unpacked with wrong size! fi # end of overwriting check fi if test -f xmap.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"xmap.c\" else echo shar: Extracting \"xmap.c\" \(4024 characters\) sed "s/^X//" >xmap.c <<'END_OF_xmap.c' X/* Copyright (c) 1987 Stanley T. Shebs, University of Utah. */ X/* This program may be used, copied, modified, and redistributed freely */ X/* for noncommercial purposes, so long as this notice remains intact. */ X X/* RCS $Header: xmap.c,v 1.3 87/06/06 20:57:03 shebs Exp $ */ X X/* This is a mini-utility to display a map in a window by itself. */ X/* It takes the map from stdin (to interface with mkmap better) and */ X/* pops a window up at a fixed location. No redraw provision or other */ X/* X fancies. */ X X#include <stdio.h> X#include <X/Xlib.h> X X#ifndef BSD X#define index strchr X#endif BSD X X#define NUMTERRS 10 X X#define TERRTYPES "#*@.+^~%,_" X X#define TERRCOLORS { "black", "maroon", "red", "sky blue", "green", \ X "sienna", "yellow", "forest green", "cyan", "white" } X Xchar *terrtypes = TERRTYPES; X Xchar *terrcolors[] = TERRCOLORS; X Xint sqcolor[NUMTERRS]; X Xchar *getenv(); X Xint width, height, greenwich, equator, scale, pxsize; X XWindow win; X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X char maptype, *display; X int i; X Color def; X X display = getenv("DISPLAY"); X if (argc > 1) { X display = argv[1]; X } X if (XOpenDisplay(display) == 0) { X fprintf(stderr, "Can't create a window on %s\n", display); X exit(1); X } X for (i = 0; i < NUMTERRS; ++i) { X XParseColor(terrcolors[i], &def); X XGetHardwareColor(&def); X sqcolor[i] = def.pixel; X } X scanf("%c %d %d %d %d %d\n", X &maptype, &width, &height, &greenwich, &equator, &scale); X ++width; X pxsize = 2; X if (width < 200 && height < 200) pxsize *= 2; X if (width < 100 && height < 100) pxsize *= 2; X X win = XCreateWindow(RootWindow, 50, 50, (width-1)*pxsize, height*pxsize, 1, X WhitePixmap, BlackPixmap); X XMapWindow(win); X XClear(win); X X if (maptype == 'M') { X display_map(); X } else if (maptype == 'R') { X display_relief(); X } else { X fprintf(stderr, "Unknown map type '%c'\n", maptype); X exit(1); X } X XFlush(); X pause(); /* Window evaporates when program exits, so keep running */ X} X X/* Display a map as seen by game players, using same colors */ X Xdisplay_map() X{ X char ch; X int x, y, color; X X for (y = height-1; y >= 0; --y) { X for (x = 0; x < width; ++x) { X scanf("%c", &ch); X color = sqcolor[index(terrtypes, ch) - (int) terrtypes]; X XPixSet(win, x*pxsize, (height-1-y)*pxsize, pxsize, pxsize, color); X } X scanf("\n"); X } X} X X/* A map may also take the form of a relief map, in which case a more */ X/* extensive color map is set up. */ X/* This routine really needs to be robustified with respect to numbers */ X/* of colors etc */ X Xdisplay_relief() X{ X int i, j, x, y, elev, water, color; X int sealevel, mtnlevel, icelevel; X int desertlevel, forestlevel, numconts, numwconts; X int contours[100], wcontours[100]; X int planes, pixels[200], scale; X Color colors[200]; X X scanf("%d %d %d %d %d %d %d\n", X &sealevel, &mtnlevel, &icelevel, &desertlevel, &forestlevel, X &numconts, &numwconts); X for (i = 0; i < numconts; ++i) X scanf("%d", &contours[i]); X scanf("\n"); X for (i = 0; i < numwconts; ++i) X scanf("%d", &wcontours[i]); X scanf("\n"); X --width; X X if (DisplayCells() < 64) { X fprintf(stderr, "Need 40 colors to draw a relief map!\n"); X exit(1); X } X XGetColorCells(0, 40, 0, &planes, pixels); X for (i = 0; i < 20; ++i) { X colors[i].pixel = pixels[i]; X colors[i].red = (10 * i) * 256; X colors[i].green = (10 * i) * 256; X colors[i].blue = (70 + (10 * i)) * 256; X } X for (i = 20; i < 40; ++i) { X colors[i].pixel = pixels[i]; X colors[i].red = (65535 / 20) * (i-20) / 2; X colors[i].green = (65535 / 20) * (20 - ((i-20)/2)); X colors[i].blue = 0; X } X XStoreColors(40, colors); X for (y = height-1; y >= 0; --y) { X for (x = 0; x < width; ++x) { X scanf("%d %d", &elev, &water); X color = 39; X if (elev <= 63) color = elev - 21; X if (elev <= 42) color = 19; X if (elev <= 40) color = elev / 2; X XPixSet(win, x*pxsize, (height-1-y)*pxsize, pxsize, pxsize, X pixels[color]); X } X } X} X X END_OF_xmap.c if test 4024 -ne `wc -c <xmap.c`; then echo shar: \"xmap.c\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 7 \(of 7\). cp /dev/null ark7isdone MISSING="" for I in 1 2 3 4 5 6 7 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 7 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0