home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: vmsnet.sources.games
- Path: uunet!stanford.edu!agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!rpi!usenet.coe.montana.edu!news.u.washington.edu!raven.alaska.edu!acad2.alaska.edu!asdmf
- From: asdmf@acad2.alaska.edu
- Subject: Vmsnetrek 20/47
- Message-ID: <1992Nov13.134657.1@acad2.alaska.edu>
- Lines: 428
- Sender: news@raven.alaska.edu (USENET News System)
- Nntp-Posting-Host: acad2.alaska.edu
- Organization: University of Alaska
- Date: Fri, 13 Nov 1992 17:46:57 GMT
- Xref: uunet vmsnet.sources.games:506
-
- -+-+-+-+-+-+-+-+ START OF PART 20 -+-+-+-+-+-+-+-+
- X`009 teamstring`091players`091me->p_whodead`093.p_team`093);
- X`009W_WriteText(w, 50, 80, textColor, buf, strlen(buf), W_RegularFont);
- X`009break;
- X case KPROVIDENCE:
- X`009sprintf(buf, "You were removed from existence by divine mercy.");
- X`009W_WriteText(w, 50, 80, textColor, buf, strlen(buf), W_RegularFont);
- X`009break;
- X case KBADBIN:
- X`009sprintf(buf, "Your netrek executable didn't verify correctly.");
- X`009W_WriteText(w, 50, 80, textColor, buf, strlen(buf), W_RegularFont);
- X`009sprintf(buf, "(could be an old copy or illegal cyborg)");
- X`009W_WriteText(w, 50, 100, textColor, buf, strlen(buf), W_RegularFont);
- X`009break;
- X default:
- X`009sprintf(buf, "You were killed by something unknown to this game?");
- X`009W_WriteText(w, 50, 80, textColor, buf, strlen(buf), W_RegularFont);
- X`009break;
- X `125
- X /* First we check for promotions: */
- X if (promoted) `123
- X`009sprintf(buf, "Congratulations! You have been promoted to %s",`032
- X`009 ranks`091mystats->st_rank`093.name);
- X`009W_WriteText(w, 50, 100, W_Yellow, buf, strlen(buf), W_BoldFont);
- X`009promoted=0;
- X `125
- X w = oldw;`009`009/* ATM-death */
- X while (W_EventsPending()) `123
- X`009W_NextEvent(&event);
- X `125
- X longjmp(env, 0);
- X`125
- $ CALL UNPACK DEATH.C;1 1780069542
- $ create/nolog 'f'
- X/* defaults.c
- X *`032
- X * Kevin P. Smith 6/11/89
- X */
- X#include "copyright2.h"
- X#include <stdio.h>
- X
- Xstruct stringlist `123
- X char *string;
- X char *value;
- X struct stringlist *next;
- X`125;
- X
- Xstruct stringlist *defaults=NULL;
- X
- Xchar *getenv();
- Xchar *strdup();
- X
- XinitDefaults(deffile)
- Xchar *deffile;`009`009/* As opposed to defile? */
- X`123
- X FILE *fp;
- X char file`091100`093;
- X char *home;
- X char *v;
- X struct stringlist *new;
- X
- X if (!deffile) `123
- X`009deffile=file;
- X`009home=getenv("HOME");
- X`009if (home) `123
- X#ifdef VMS /* vms doesn't use that extra / */
- X`009 sprintf(file, "%s.xtrekrc", home);
- X#else
- X`009 sprintf(file, "%s/.xtrekrc", home);
- X#endif
- X`009`125 else `123
- X`009 strcpy(file, ".xtrekrc");
- X`009`125
- X `125
- X fp=fopen(deffile, "r");
- X if (!fp) return;
- X while (fgets(file, 99, fp)) `123
- X`009if (*file=='#') continue;
- X`009if (*file!=0)`032
- X`009 file`091strlen(file)-1`093=0;
- X`009v=file;
- X`009while (*v!=':' && *v!=0) `123
- X`009 v++;
- X`009`125
- X`009if (*v==0) continue;
- X`009*v=0;
- X`009v++;
- X`009while (*v==' ' `124`124 *v=='\t') `123
- X`009 v++;
- X`009`125
- X`009if (*v!=0) `123
- X`009 new=(struct stringlist *) malloc(sizeof(struct stringlist));
- X`009 new->next=defaults;
- X`009 new->string=strdup(file);
- X`009 new->value=strdup(v);
- X`009 defaults=new;
- X`009`125
- X `125
- X fclose(fp);
- X`125
- X
- Xchar *strdup(str)
- Xchar *str;
- X`123
- X char *s;
- X
- X s=(char *) malloc(strlen(str)+1);
- X strcpy(s,str);
- X return(s);
- X`125
- X
- Xchar *getdefault(str)
- Xchar *str;
- X`123
- X struct stringlist *sl;
- X
- X sl=defaults;
- X while (sl!=NULL) `123
- X`009if (strcmpi(sl->string, str)==0) `123
- X`009 return(sl->value);
- X`009`125
- X`009sl=sl->next;
- X `125
- X return(NULL);
- X`125
- X
- Xstrcmpi(str1, str2)`032
- Xchar *str1, *str2;
- X`123
- X for(;;) `123
- X`009if (*str1<='z' && *str1>='a') *str1+='A'-'a';
- X`009if (*str2<='z' && *str2>='a') *str2+='A'-'a';
- X`009if (*str1 != *str2) return(*str2 - *str1);
- X`009if (*str1==0 `124`124 *str2==0) return(0);
- X`009str1++;
- X`009str2++;
- X `125
- X`125
- X
- XbooleanDefault(def, preferred)
- Xchar *def;
- Xint preferred;
- X`123
- X char *str;
- X
- X str=getdefault(def);
- X if (str==NULL) return(preferred);
- X if (strcmpi(str,"on")==0) `123
- X`009return(1);
- X `125 else `123
- X`009return(0);
- X `125
- X`125
- $ CALL UNPACK DEFAULTS.C;1 1061105372
- $ create/nolog 'f'
- X/*
- X * defs.h
- X */
- X#include "copyright.h"
- X
- X#define MAXPLAYER 20
- X#define TESTERS 4`009/* Priveledged slots for robots and game 'testers' */
- X#define MAXPLANETS 40
- X#define MAXTORP 8
- X#define MAXPLASMA 1
- X#define PKEY 128
- X#define WINSIDE 500 /* Size of strategic and tactical windows */
- X#define BORDER 4 /* border width for option windows */
- X#define PSEUDOSIZE 16
- X#define CLOAK_PHASES 7 /* number of drawing phases in a cloak engage/diseng
- Vage */
- X#define NUMRANKS 9
- X
- X/* These are configuration definitions */
- X
- X#define GWIDTH 100000 /* galaxy is 100000 spaces on a side */
- X#define WARP1 20`009/* warp one will move 20 spaces per update */
- X#define SCALE 40`009/* Window will be one pixel for 20 spaces */
- X#define EXPDIST 350`009/* At this range a torp will explode */
- X#define DETDIST 1600`009/* At this range a player can detonate a torp (was 3
- VK)*/
- X#define PHASEDIST 6000`009/* At this range a player can do damage with phase
- Vrs */
- X#define ENTORBDIST 900`009/* At this range a player can orbit a planet */
- X#define ORBDIST 800`009/* A player will orbit at this radius */
- X#define ORBSPEED 2`009/* This is the fastest a person can go into orbit */
- X#define PFIREDIST 1500`009/* At this range a planet will shoot at a player *
- V/
- X#define UPDATE 100000`009/* Update time is 100000 micro-seconds */
- X#define AUTOQUIT 60`009/* auto logout in 60 secs */
- X#define VACANT -1 /* indicates vacant port on a starbase */
- X#define DOCKDIST 600
- X#define DOCKSPEED 2 /* If base is moving, there will be some
- X`009`009`009 finesse involved to dock */
- X#define NUMPORTS 4
- X#define SBFUELMIN 10000 /* If starbase's fuel is less than this, it will n
- Vot
- X`009`009`009 refuel docked vessels */
- X#define TRACTDIST 6000 /* maximum effective tractor beam range */
- X#define TRACTEHEAT 5 /* ammount tractor beams heat engines */
- X#define TRACTCOST 20`009 /* fuel cost of activated tractor beam */
- X
- X/* These are memory sections */
- X#define PLAYER 1
- X#define MAXMESSAGE 50
- X#define MAXREVIEWMESSAGE 20
- X
- X#define rosette(x) ((((x) + 8) / 16) & 15)
- X/* #define rosette(x) ((((x) + 256/VIEWS/2) / (256/VIEWS) + VIEWS) % VIEWS
- V) */
- X/* (((x + 8) / 16 + 16) % 16) */
- X
- X/* These are the teams */
- X/* Note that I used bit types for these mostly for messages and
- X war status. This was probably a mistake. It meant that Ed
- X had to add the 'remap' area to map these (which are used throughout
- X the code as the proper team variable) into a nice four team deep
- X array for his color stuff. Oh well.
- X*/
- X#define NOBODY 0x0
- X#define IND 0x0
- X#define FED 0x1
- X#define ROM 0x2
- X#define KLI 0x4
- X#define ORI 0x8
- X#define ALLTEAM (FED`124ROM`124KLI`124ORI)
- X#define MAXTEAM (ORI)
- X#define NUMTEAM 4
- X/*
- X** These are random configuration variables
- X*/
- X#define VICTORY 3`009/* Number of systems needed to conquer the galaxy */
- X#define WARNTIME 30`009/* Number of updates to have a warning on the screen
- V */
- X#define MESSTIME 30`009/* Number of updates to have a message on the screen
- V */
- X
- X#define TARG_PLAYER`0090x1`009/* Flags for gettarget */
- X#define TARG_PLANET`0090x2
- X#define TARG_CLOAK`0090x4`009/* Include cloaked ships in search */
- X#define TARG_SELF`0090x8
- X
- X/* Data files to make the game play across daemon restarts. */
- X
- X#define GLOBAL`009`009"/usr/games/lib/xtrekII/.global"
- X#define SCORES`009`009"/usr/games/lib/xtrekII/.scores"
- X#define PLFILE`009`009"/usr/games/lib/xtrekII/.planets"
- X#define MOTD`009`009"/usr/games/lib/xtrekII/.motd"
- X#define DAEMON`009`009"/usr/games/lib/xtrekII/daemonII"
- X#define ROBOT`009`009"/usr/games/lib/xtrekII/robotII"
- X#define LOGFILENAME "/usr/games/lib/xtrekII/logfile"
- X#define PLAYERFILE`009"/usr/games/lib/xtrekII/.players"
- X
- X
- X/* Other stuff that Ed added */
- X
- X#define ABS(a)`009`009`009/* abs(a) */ (((a) < 0) ? -(a) : (a))
- X#define MAX(a,b)`009`009((a) > (b) ? (a) : (b))
- X
- X#define myPlasmaTorp(t)`009`009(me->p_no == (t)->pt_owner)
- X#define myTorp(t)`009`009(me->p_no == (t)->t_owner)
- X#define friendlyPlasmaTorp(t)`009((!(me->p_team & (t)->pt_war)) `124`124 (my
- VPlasmaTorp(t)))
- X#define friendlyTorp(t)`009`009((!(me->p_team & (t)->t_war)) `124`124 (myTor
- Vp(t)))
- X#define myPhaser(p)`009`009(&phasers`091me->p_no`093 == (p))
- X#define friendlyPhaser(p)`009(me->p_team == players`091(p) - phasers`093.p_t
- Veam)
- X#define myPlayer(p)`009`009(me == (p))
- X#define myPlanet(p)`009`009(me->p_team == (p)->pl_owner)
- X#define friendlyPlayer(p)`009((!(me->p_team & \
- X`009`009`009`009 ((p)->p_swar `124 (p)->p_hostile))) && \
- X`009`009`009`009 (!((p)->p_team & \
- X`009`009`009`009 (me->p_swar `124 me->p_hostile))))
- X#define isAlive(p)`009`009((p)->p_status == PALIVE)
- X#define friendlyPlanet(p)`009((p)->pl_info & me->p_team && \
- X`009`009`009 !((p)->pl_owner & (me->p_swar `124 me->p_hostile)))
- X
- X#define torpColor(t)`009`009\
- X`009(myTorp(t) ? myColor : shipCol`091remap`091players`091(t)->t_owner`093.p
- V_team`093`093)
- X#define plasmatorpColor(t)`009`009\
- X`009(myPlasmaTorp(t) ? myColor : shipCol`091remap`091players`091(t)->pt_owne
- Vr`093.p_team`093`093)
- X#define phaserColor(p)`009`009\
- X`009(myPhaser(p) ? myColor : shipCol`091remap`091players`091(p) - phasers`09
- V3.p_team`093`093)
- X/*`032
- X * Cloaking phase (and not the cloaking flag) is the factor in determining`0
- V32
- X * the color of the ship. Color 0 is white (same as 'myColor' used to be).
- X */
- X#define playerColor(p)`009`009\
- X`009(myPlayer(p) ? myColor : shipCol`091remap`091(p)->p_team`093`093)
- X#define planetColor(p)`009`009\
- X`009(((p)->pl_info & me->p_team) ? shipCol`091remap`091(p)->pl_owner`093`093
- V : unColor)
- X
- X#define planetFont(p)`009`009\
- X`009(myPlanet(p) ? W_BoldFont : friendlyPlanet(p) ? W_UnderlineFont \
- X`009 : W_RegularFont)
- X#define shipFont(p)`009`009\
- X`009(myPlayer(p) ? W_BoldFont : friendlyPlayer(p) ? W_UnderlineFont \
- X`009 : W_RegularFont)
- X#define bombingRating(p)`009\
- X`009((float) (p)->p_stats.st_tarmsbomb * status->timeprod / \
- X`009 ((float) (p)->p_stats.st_tticks * status->armsbomb))
- X#define planetRating(p)`009`009\
- X`009((float) (p)->p_stats.st_tplanets * status->timeprod / \
- X`009 ((float) (p)->p_stats.st_tticks * status->planets))
- X#define offenseRating(p)`009\
- X`009((float) (p)->p_stats.st_tkills * status->timeprod / \
- X`009 ((float) (p)->p_stats.st_tticks * status->kills))
- X#define defenseRating(p)`009\
- X`009((float) (p)->p_stats.st_tticks * status->losses / \
- X`009 ((p)->p_stats.st_tlosses!=0 ? \
- X`009 ((float) (p)->p_stats.st_tlosses * status->timeprod) : \
- X`009 (status->timeprod)))
- X
- X#ifdef VMS
- Xtypedef int boolean;
- X#define FALSE (0)
- X#define TRUE (1)
- X#else
- Xtypedef enum `123FALSE=0, TRUE`125 boolean;
- X#endif
- X
- X#define sendTorpReq(dir) sendShortPacket(CP_TORP, dir)
- X#define sendPhaserReq(dir) sendShortPacket(CP_PHASER, dir)
- X#define sendSpeedReq(speed) sendShortPacket(CP_SPEED, speed)
- X#define sendDirReq(dir) sendShortPacket(CP_DIRECTION, dir)
- X#define sendShieldReq(state) sendShortPacket(CP_SHIELD, state)
- X#define sendOrbitReq(state) sendShortPacket(CP_ORBIT, state)
- X#define sendRepairReq(state) sendShortPacket(CP_REPAIR, state)
- X#define sendBeamReq(state) sendShortPacket(CP_BEAM, state)
- X#define sendCopilotReq(state) sendShortPacket(CP_COPILOT, state)
- X#define sendDetonateReq() sendShortPacket(CP_DET_TORPS, 0)
- X#define sendCloakReq(state) sendShortPacket(CP_CLOAK, state)
- X#define sendBombReq(state) sendShortPacket(CP_BOMB, state)
- X#define sendPractrReq() sendShortPacket(CP_PRACTR, 0)
- X#define sendWarReq(mask) sendShortPacket(CP_WAR, mask)
- X#define sendRefitReq(ship) sendShortPacket(CP_REFIT, ship)
- X#define sendPlasmaReq(dir) sendShortPacket(CP_PLASMA, dir)
- X#define sendPlaylockReq(pnum) sendShortPacket(CP_PLAYLOCK, pnum)
- X#define sendPlanlockReq(pnum) sendShortPacket(CP_PLANLOCK, pnum)
- X#define sendCoupReq() sendShortPacket(CP_COUP, 0)
- X#define sendQuitReq() sendShortPacket(CP_QUIT, 0)
- X#define sendByeReq() sendShortPacket(CP_BYE, 0)
- X#define sendDockingReq(state) sendShortPacket(CP_DOCKPERM, state)
- X#define sendResetStatsReq(verify) sendShortPacket(CP_RESETSTATS, verify)
- X#define sendScanReq(who) sendShortPacket(CP_SCAN, who)`009`009/* ATM */
- X
- X/* This macro allows us to time things based upon # frames / sec.
- X */
- X#define ticks(x) ((x)*200000/timerDelay)
- X
- Xchar *getdefault();
- X
- X/*
- X * UDP control stuff
- X */
- X#ifdef GATEWAY
- X# define UDP_NUMOPTS`00911
- X# define UDP_GW`009`009UDP_NUMOPTS-1
- X#else
- X# define UDP_NUMOPTS`00910
- X#endif
- X#define UDP_CURRENT`0090
- X#define UDP_STATUS`0091
- X#define UDP_DROPPED`0092
- X#define UDP_SEQUENCE 3
- X#define UDP_SEND`0094
- X#define UDP_RECV`0095
- X#define UDP_DEBUG 6
- X#define UDP_FORCE_RESET`0097
- X#define UDP_UPDATE_ALL`0098
- X#define UDP_DONE`0099
- X#define COMM_TCP`0090
- X#define COMM_UDP`0091
- X#define COMM_VERIFY`0092
- X#define COMM_UPDATE`0093
- X#define COMM_MODE`0094`009/* put this one last */
- X#define SWITCH_TCP_OK`0090
- X#define SWITCH_UDP_OK`0091
- X#define SWITCH_DENIED`0092
- X#define SWITCH_VERIFY`0093
- X#define CONNMODE_PORT`0090
- X#define CONNMODE_PACKET`0091
- X#define STAT_CONNECTED`0090
- X#define STAT_SWITCH_UDP`0091
- X#define STAT_SWITCH_TCP`0092
- X#define STAT_VERIFY_UDP`0093
- X#define MODE_TCP`0090
- X#define MODE_SIMPLE`0091
- X#define MODE_FAT`0092
- X#define MODE_DOUBLE`0093`009/* put this one last */
- X
- X#define UDP_RECENT_INTR`009300
- X#define UDP_UPDATE_WAIT`0095`009/* 5 second wait */
- X
- X/* client version of UDPDIAG */
- X/* (change these to "#define UDPDIAG(x) <return>" for smaller & faster code)
- V */
- X#define UDPDIAG(x)`009`123 if (udpDebug) `123 printf("UDP: "); printf x; `12
- V5`125
- X#define V_UDPDIAG(x)`009`123 if (udpDebug > 1) `123 printf("UDP: "); printf
- V x; `125`125
- X
- $ CALL UNPACK DEFS.H;1 1883171664
- $ create/nolog 'f'
- Xvmsnetrek.exe : colors.obj, coup.obj, data.obj, death.obj, defaults.obj, det
- Vonate.obj, dmessage.obj, enter.obj, findslot.obj, -
- X`009getname.obj, getship.obj, inform.obj, input.obj, interface.obj, main.obj
- V, newwin.obj, option.obj, orbit.obj, -
- X`009planetlist.obj, planets.obj, playerlist.obj, ranklist.obj, redraw.obj, r
- Veserved.obj, sintab.obj, smessage.obj, -
- X`009socket.obj, stats.obj, util.obj, war.obj, warning.obj, x11window.obj, VM
- VSutils.obj, udpopt.obj, scan.obj
- X`009link /executable=vmsnetrek.exe COLORS, COUP, DATA, DEATH, DEFAULTS, DETO
- VNATE, -
- X`009DMESSAGE, ENTER, FINDSLOT, -
- X`009GETNAME, GETSHIP, INFORM, INPUT, -
- X`009INTERFACE, MAIN, NEWWIN, OPTION, -
- X`009ORBIT, PLANETLIST, PLANETS, -
- X`009PLAYERLIST.obj, RANKLIST.obj, REDRAW.obj, -
- X`009RESERVED.obj, SINTAB.obj, SMESSAGE.obj, SOCKET.obj, scan.obj, -
- X`009STATS.obj, UTIL.obj, WAR.obj, WARNING.obj, X11WINDOW.obj, VMSutils.obj,
- +-+-+-+-+-+-+-+- END OF PART 20 +-+-+-+-+-+-+-+-
-