home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / vmsnet.sources.games / vmsnetrek / part21 < prev    next >
Text File  |  1992-11-14  |  15KB  |  568 lines

  1. Newsgroups: vmsnet.sources.games
  2. 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
  3. From: asdmf@acad2.alaska.edu
  4. Subject: Vmsnetrek 21/47
  5. Message-ID: <1992Nov13.135301.1@acad2.alaska.edu>
  6. Lines: 555
  7. Sender: news@raven.alaska.edu (USENET News System)
  8. Nntp-Posting-Host: acad2.alaska.edu
  9. Organization: University of Alaska
  10. Date: Fri, 13 Nov 1992 17:53:01 GMT
  11. Xref: uunet vmsnet.sources.games:507
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 21 -+-+-+-+-+-+-+-+
  14. V udpopt.obj, -
  15. X`009xlibshr/lib, dwtlibshr/lib, sys$library:ucx$ipc.olb/lib
  16. X`009vmsnetrek :== "$''f$environment("DEFAULT")'netrek.exe"
  17. X
  18. Xcolors.obj : colors.c
  19. X`009cc /optimize  COLORS.C
  20. Xcoup.obj : coup.c
  21. X`009cc /optimize  COUP.C
  22. Xdata.obj : data.c
  23. X`009cc /optimize  DATA.C
  24. Xdeath.obj : death.c
  25. X`009cc /optimize  DEATH.C
  26. Xdefaults.obj : defaults.c
  27. X`009cc /optimize  DEFAULTS.C
  28. Xdetonate.obj : detonate.c
  29. X`009cc /optimize  DETONATE.C
  30. Xdmessage.obj : dmessage.c
  31. X`009cc /optimize  DMESSAGE.C
  32. Xenter.obj : enter.c
  33. X`009cc /optimize  ENTER.C
  34. Xfindslot.obj : findslot.c
  35. X`009cc /optimize  FINDSLOT.C
  36. Xgetname.obj : getname.c
  37. X`009cc /optimize  GETNAME.C
  38. Xgetship.obj : getship.c
  39. X`009cc /optimize  GETSHIP.C
  40. Xinform.obj : inform.c
  41. X`009cc /optimize  INFORM.C
  42. Xinput.obj : input.c
  43. X`009cc /optimize  INPUT.C
  44. Xinterface.obj : interface.c
  45. X`009cc /optimize  INTERFACE.C
  46. Xmain.obj : main.c
  47. X`009cc /optimize  MAIN.C
  48. Xnewwin.obj : newwin.c
  49. X`009cc /optimize  NEWWIN.C
  50. Xoption.obj : option.c
  51. X`009cc /optimize  OPTION.C
  52. Xorbit.obj : orbit.c
  53. X`009cc /optimize  ORBIT.C
  54. Xplanetlist.obj : planetlist.c
  55. X`009cc /optimize  PLANETLIST.C
  56. Xplanets.obj : planets.c
  57. X`009cc /optimize  PLANETS.C
  58. Xplayerlist.obj : playerlist.c
  59. X`009cc /optimize  PLAYERLIST.C
  60. Xranklist.obj : ranklist.c
  61. X`009cc /optimize  RANKLIST.C
  62. Xredraw.obj : redraw.c
  63. X`009cc /optimize  REDRAW.C
  64. Xreserved.obj : reserved.c
  65. X`009cc /optimize  RESERVED.C
  66. Xsintab.obj : sintab.c
  67. X`009cc /optimize  SINTAB.C
  68. Xsmessage.obj : smessage.c
  69. X`009cc /optimize  SMESSAGE.C
  70. Xsocket.obj : socket.c
  71. X`009cc /optimize  SOCKET.C
  72. Xstats.obj : stats.c
  73. X`009cc /optimize  STATS.C
  74. Xutil.obj : util.c
  75. X`009cc /optimize  UTIL.C
  76. Xwar.obj : war.c
  77. X`009cc /optimize  WAR.C
  78. Xwarning.obj : warning.c
  79. X`009cc /optimize  WARNING.C
  80. Xx11window.obj : x11window.c
  81. X`009cc /optimize  X11WINDOW.C
  82. XVMSutils.obj : VMSutils.c
  83. X`009cc /optimize VMSutils.c
  84. Xudpopt.obj : udpopt.c
  85. X`009cc /optimize udpopt.c
  86. Xscan.obj : scan.c
  87. X`009cc /optimize scan.c
  88. X
  89. X
  90. Xlibs :`032
  91. X`009library/create/share xlibshr  sys$library:decw$xlibshr
  92. X`009library/create/share dwtlibshr sys$library:decw$dwtlibshr
  93. X
  94. Xdisplay :
  95. X`009set display /create /node=kingfisher /screen=0 /trans=tcpip
  96. X
  97. Xdefines :
  98. X`009define/job sys sys$common:`091syslib`093
  99. X`009define/job x11 DECW$INCLUDE
  100. X`009define/job netinet sys$common:`091syslib`093`009
  101. X
  102. X
  103. Xclean :
  104. X`009if f$search("*.obj") .nes. "" then delete *.obj.*
  105. $ CALL UNPACK DESCRIP.MMS;1 792357143
  106. $ create/nolog 'f'
  107. X/*
  108. X * detonate.c
  109. X */
  110. X#include "copyright.h"
  111. X
  112. X#include <stdio.h>
  113. X#include <types.h>
  114. X#include "Wlib.h"
  115. X#include "defs.h"
  116. X#include "struct.h"
  117. X#include "data.h"
  118. X
  119. X/* Detonate torp */
  120. X
  121. X/*
  122. X** Detonating torps have become a difficult part of the game.  Players
  123. X** quickly learned that detonating their own torps when the cloud was
  124. X** around another player, caused that player to die very quickly.  I
  125. X** removed that feature because it lead to people not having to shoot
  126. X** well to collect kills.  Now when players detonate their own torps,
  127. X** the torps just vanish and become available for future firing.
  128. X*/
  129. X
  130. Xdetmine()
  131. X`123
  132. X    register int i;
  133. X
  134. X    for (i = 0; i < MAXTORP; i++) `123
  135. X`009if (torps`091i + (me->p_no * MAXTORP)`093.t_status == TMOVE) `123
  136. X`009    sendDetMineReq(i + (me->p_no * MAXTORP));
  137. X`009`125
  138. X    `125
  139. X`125
  140. X
  141. $ CALL UNPACK DETONATE.C;1 1261782327
  142. $ create/nolog 'f'
  143. X/*
  144. X * dmessage.c`032
  145. X *
  146. X * for the client of a socket based protocol.
  147. X */
  148. X#include "copyright.h"
  149. X
  150. X#include <stdio.h>
  151. X#include <math.h>
  152. X#include "Wlib.h"
  153. X#include "defs.h"
  154. X#include "struct.h"
  155. X#include "data.h"
  156. X
  157. Xdmessage(message,flags,from,to)
  158. Xchar *message;
  159. Xunsigned char flags, from, to;
  160. X`123
  161. X    register int len;
  162. X    W_Color color;
  163. X
  164. X    to = to;`009/* make compiler shut up */
  165. X    len = strlen(message);
  166. X    if (from==255) `123
  167. X`009/* From God */
  168. X`009color=textColor;
  169. X    `125 else `123
  170. X`009color=playerColor(&(players`091from`093));
  171. X    `125
  172. X    /* Kludge stuff for report kills...`032
  173. X     */
  174. X    if ((strncmp(message, "GOD->ALL", 8)==0 &&`032
  175. X`009  (instr(message, "was kill") `124`124
  176. X`009  instr(message, "killed by"))) `124`124`032
  177. X`009  (*message!=' ' && instr(message, "We are being attacked"))) `123
  178. X`009W_WriteText(messwk, 0, 0, color, message, len, 0);
  179. X`009if (!reportKills) return;
  180. X`009W_WriteText(reviewWin, 0, 0, color, message, len, 0);
  181. X`009return;
  182. X    `125
  183. X    switch(flags & (MTEAM`124MINDIV`124MALL)) `123
  184. X    case MTEAM:
  185. X`009W_WriteText(messwt, 0, 0, color, message, len, 0);
  186. X`009if (msgBeep) W_Beep();`009`009/* ATM - message beep */
  187. X`009break;
  188. X    case MINDIV:
  189. X`009W_WriteText(messwi, 0, 0, color, message, len, 0);
  190. X`009if (msgBeep) W_Beep();`009`009/* ATM - message beep */
  191. X`009break;
  192. X    default:
  193. X`009W_WriteText(messwa, 0, 0, color, message, len, 0);
  194. X`009break;
  195. X    `125
  196. X    W_WriteText(reviewWin, 0, 0, color, message, len, 0);
  197. X`125
  198. X
  199. Xinstr(string1, string2)
  200. Xchar *string1, *string2;
  201. X`123
  202. X    char *s;
  203. X    int length;
  204. X
  205. X    length=strlen(string2);
  206. X    for (s=string1; *s!=0; s++) `123
  207. X`009if (*s == *string2 && strncmp(s, string2, length)==0) return(1);
  208. X    `125
  209. X    return(0);
  210. X`125
  211. $ CALL UNPACK DMESSAGE.C;1 1517218106
  212. $ create/nolog 'f'
  213. X/*
  214. X * enter.c
  215. X *
  216. X * This version modified to work as the client in a socket based protocol.
  217. X */
  218. X#include "copyright.h"
  219. X
  220. X#include <stdio.h>
  221. X#include <types.h>
  222. X#include <errno.h>
  223. X#ifndef VMS `032
  224. X/* we don't have this file in VMS 5.4 */
  225. X#include <pwd.h>
  226. X#endif
  227. X#include <string.h>
  228. X#include <ctype.h>
  229. X#include "Wlib.h"
  230. X#include "defs.h"
  231. X#include "struct.h"
  232. X#include "data.h"
  233. X
  234. X/* Enter the game */
  235. X
  236. Xlong random();
  237. X
  238. Xenter()
  239. X`123
  240. X    drawTstats();
  241. X    delay = 0;
  242. X`125
  243. X
  244. X/* Doesn't really openmem, but it will
  245. X * set some stuff up...
  246. X */
  247. Xopenmem()
  248. X`123
  249. X    int i;
  250. X
  251. X    players = universe.players;
  252. X    torps = universe.torps;
  253. X    plasmatorps = universe.plasmatorps;
  254. X    status = universe.status;
  255. X    planets = universe.planets;
  256. X    phasers = universe.phasers;
  257. X    mctl = universe.mctl;
  258. X    messages = universe.messages;
  259. X    for (i=0; i<MAXPLAYER; i++) `123
  260. X`009players`091i`093.p_status = PFREE;
  261. X`009players`091i`093.p_cloakphase = 0;
  262. X`009players`091i`093.p_no = i;
  263. X`009players`091i`093.p_ntorp = 0;
  264. X`009players`091i`093.p_explode = 1;
  265. X`009players`091i`093.p_stats.st_tticks = 1;
  266. X    `125
  267. X    mctl->mc_current=0;
  268. X    status->time=1;
  269. X    status->timeprod=1;
  270. X    status->kills=1;
  271. X    status->losses=1;
  272. X    status->time=1;
  273. X    status->planets=1;
  274. X    status->armsbomb=1;
  275. X    for (i=0; i<MAXPLAYER*MAXTORP; i++) `123
  276. X`009torps`091i`093.t_status=TFREE;
  277. X`009torps`091i`093.t_no=i;
  278. X`009torps`091i`093.t_owner=(i / MAXTORP);
  279. X    `125
  280. X    for (i=0; i<MAXPLAYER; i++) `123
  281. X`009phasers`091i`093.ph_status=PHFREE;
  282. X    `125
  283. X    for (i=0; i<MAXPLAYER*MAXPLASMA; i++) `123
  284. X`009plasmatorps`091i`093.pt_status=PTFREE;
  285. X`009plasmatorps`091i`093.pt_no=i;
  286. X`009plasmatorps`091i`093.pt_owner=(i / MAXPLASMA);
  287. X    `125
  288. X    for (i=0; i<MAXPLANETS; i++) `123
  289. X`009planets`091i`093.pl_no=i;
  290. X    `125
  291. X`125
  292. X
  293. XdrawTstats()
  294. X`123
  295. X    char buf`091BUFSIZ`093;
  296. X
  297. X    sprintf(buf, "Flags        Warp Dam Shd Torps  Kills Armies   Fuel  Wtem
  298. Vp Etemp");
  299. X    W_WriteText(tstatw, 50, 5, textColor, buf, strlen(buf), W_RegularFont);
  300. X    sprintf(buf,
  301. X`009    "Maximum:      %2d  %3d %3d               %3d   %6d   %3d   %3d",
  302. X`009    me->p_ship.s_maxspeed, me->p_ship.s_maxdamage,
  303. X`009    me->p_ship.s_maxshield, me->p_ship.s_maxarmies,`032
  304. X`009    me->p_ship.s_maxfuel, me->p_ship.s_maxwpntemp/10,`032
  305. X`009    me->p_ship.s_maxegntemp/10);
  306. X    W_WriteText(tstatw, 50, 27, textColor, buf, strlen(buf), W_RegularFont);
  307. X`125
  308. $ CALL UNPACK ENTER.C;1 930207090
  309. $ create/nolog 'f'
  310. X/*`032
  311. X * findslot.c
  312. X *
  313. X * Kevin Smith 03/23/88
  314. X *
  315. X */
  316. X#include "copyright2.h"
  317. X
  318. X#include <stdio.h>
  319. X#include <types.h>
  320. X#include <errno.h>
  321. X#ifndef VMS /* vms doesn't have this file */
  322. X#include <pwd.h>
  323. X#endif
  324. X#include <string.h>
  325. X#include <ctype.h>
  326. X#include "Wlib.h"
  327. X#include "defs.h"
  328. X#include "struct.h"
  329. X#include "data.h"
  330. X
  331. X#define WAITWIDTH 180
  332. X#define WAITHEIGHT 60
  333. X#define WAITTITLE 15`009/* height of title for wait window */
  334. X
  335. Xfindslot()
  336. X`123
  337. X    int oldcount= -1;
  338. X    W_Window waitWin, qwin, countWin;
  339. X    W_Event event;
  340. X
  341. X
  342. X    /* Wait for some kind of indication about in/not in */
  343. X    while (queuePos==-1) `123
  344. X`009socketPause();
  345. X`009if (isServerDead()) `123
  346. X`009    printf("Augh!  Ghostbusted!\n");
  347. X`009    exit(0);
  348. X`009`125
  349. X       `009readFromServer();
  350. X      `032
  351. X`009if (me!=NULL) `123
  352. X`009    /* We are in! */
  353. X`009    return(me->p_no);
  354. X`009`125
  355. X    `125
  356. X
  357. X   `032
  358. X    /* We have to wait.  Make appropriate windows, etc... */
  359. X    waitWin=W_MakeWindow("wait", 0,0,WAITWIDTH, WAITHEIGHT,NULL,2,foreColor)
  360. V;
  361. X    countWin=W_MakeWindow("count",WAITWIDTH/2,WAITTITLE,WAITWIDTH/2,
  362. X`009WAITHEIGHT-WAITTITLE, waitWin, 1, foreColor);
  363. X    qwin=W_MakeWindow("waitquit",0,WAITTITLE, WAITWIDTH/2,WAITHEIGHT-WAITTIT
  364. VLE,
  365. X`009waitWin, 1, foreColor);
  366. X    W_MapWindow(waitWin);
  367. X    W_MapWindow(countWin);
  368. X    W_MapWindow(qwin);
  369. X    for (;;) `123
  370. X`009socketPause();
  371. X`009readFromServer();
  372. X`009if (isServerDead()) `123
  373. X`009    printf("We've been ghostbusted!\n");
  374. X`009    exit(0);
  375. X`009`125
  376. X`009while (W_EventsPending()) `123
  377. X`009    W_NextEvent(&event);
  378. X`009    switch((int) event.type) `123
  379. X`009`009case W_EV_BUTTON:
  380. X`009`009case W_EV_KEY:
  381. X`009`009    if (event.Window==qwin) `123
  382. X`009`009`009printf("OK, bye!\n");
  383. X`009`009`009exit(0);
  384. X`009`009    `125
  385. X`009`009    break;
  386. X`009`009case W_EV_EXPOSE:
  387. X`009`009    if (event.Window == waitWin) `123
  388. X`009`009`009mapWaitWin(waitWin);
  389. X`009`009    `125 else if (event.Window == qwin) `123
  390. X`009`009`009mapWaitQuit(qwin);
  391. X`009`009    `125 else if (event.Window == countWin) `123
  392. X`009`009`009mapWaitCount(countWin, queuePos);
  393. X`009`009    `125
  394. X`009`009    break;
  395. X`009`009default:
  396. X`009`009    break;
  397. X`009    `125
  398. X`009`125
  399. X`009if (queuePos != oldcount) `123
  400. X`009    mapWaitCount(countWin, queuePos);
  401. X`009    oldcount=queuePos;
  402. X`009`125
  403. X`009if (me!=NULL) `123
  404. X`009    W_DestroyWindow(waitWin);
  405. X`009    return(me->p_no);
  406. X`009`125
  407. X    `125
  408. X`125
  409. X       `032
  410. XmapWaitWin(waitWin)
  411. XW_Window waitWin;
  412. X`123
  413. X    /*char *s = "Xtrek:  Game is full.";*/
  414. X    char s`09180`093;
  415. X
  416. X    if (netaddrstr == NULL)
  417. X`009sprintf(s, "%s is full", serverName);
  418. X    else
  419. X`009sprintf(s, "%s is full", netaddrstr);
  420. X    W_WriteText(waitWin, 15, 5, textColor, s, strlen(s), W_RegularFont);
  421. X`125
  422. X
  423. XmapWaitQuit(qwin)
  424. XW_Window qwin;
  425. X`123
  426. X    char *s = "Quit";
  427. X
  428. X    W_WriteText(qwin, 10, 15, textColor, s, strlen(s), W_RegularFont);
  429. X`125
  430. X
  431. XmapWaitCount(countWin, count)
  432. XW_Window countWin;
  433. Xunsigned int count;
  434. X`123
  435. X    char *s = "Wait Queue";
  436. X    char buf`09110`093;
  437. X   `032
  438. X    W_WriteText(countWin, 5, 10, textColor, s, strlen(s), W_RegularFont);
  439. X    sprintf(buf, "%d    ", count);
  440. X    if (count==-1) strcpy(buf, "?");
  441. X    W_WriteText(countWin, 5, 25, textColor, buf, strlen(buf), W_RegularFont)
  442. V;
  443. X`125
  444. X
  445. $ CALL UNPACK FINDSLOT.C;1 443236952
  446. $ create/nolog 'f'
  447. X/*`032
  448. X * getname.c
  449. X *
  450. X * Kevin P. Smith 09/28/88
  451. X *
  452. X */
  453. X#include "copyright2.h"
  454. X
  455. X#include <stdio.h>
  456. X#include <types.h>
  457. X#include <stat.h>
  458. X#include <file.h>
  459. X#include <errno.h>
  460. X#ifdef VMS
  461. X#include <stdlib.h>
  462. X#else
  463. X#include <pwd.h>
  464. X#include <string.h>
  465. X#endif
  466. X#include <ctype.h>
  467. X#include "Wlib.h"
  468. X#include "defs.h"
  469. X#include "struct.h"
  470. X#include "data.h"
  471. Xlong time();
  472. X
  473. Xstatic char tempname`09116`093;
  474. Xstatic char password1`09116`093;
  475. Xstatic char password2`09116`093;
  476. Xstatic int state;
  477. X
  478. X#ifdef VMS
  479. X#include "vmsutils.h"
  480. X/* VMS does not use the same utilities as unix to get a passwd */
  481. X/* create our own passwd struct to avoid changing too much */
  482. Xstatic struct passwd *passwd;
  483. X#else /* unix */
  484. Xstatic struct passwd *passwd;
  485. X#endif
  486. X
  487. X
  488. X#define ST_GETNAME 0
  489. X#define ST_GETPASS 1
  490. X#define ST_MAKEPASS1 2
  491. X#define ST_MAKEPASS2 3
  492. X#define ST_DONE 4
  493. X
  494. X
  495. X#ifdef VMS  /* added f to avoid name collision */
  496. Xgetnamef(defname)
  497. X#else
  498. Xgetname(defname)
  499. X#endif
  500. Xchar *defname;
  501. X/* Let person identify themselves from w */
  502. X`123
  503. X    W_Event event;
  504. X    char ch;
  505. X    int secondsLeft=99;
  506. X    char tempstr`09140`093;
  507. X    long lasttime;
  508. X    int j;
  509. X    extern struct passwd *getpwuid();
  510. X
  511. X    passwd=getpwuid(getuid());
  512. X    bzero(mystats, sizeof(struct stats)); `032
  513. X    mystats->st_tticks=1;
  514. X    for (j=0; j<95; j++) `123
  515. X`009mystats->st_keymap`091j`093=j+32;
  516. X    `125
  517. X    mystats->st_keymap`09195`093=0;
  518. X    mystats->st_flags=ST_MAPMODE+ST_NAMEMODE+ST_SHOWSHIELDS+
  519. X`009ST_KEEPPEACE+ST_SHOWLOCAL*2+ST_SHOWGLOBAL*2;
  520. X    lasttime = time(NULL);
  521. X    tempname`0910`093='\0';
  522. X    password1`0910`093='\0';
  523. X    password2`0910`093='\0';
  524. X    state=ST_GETNAME;
  525. X    displayStartup(defname);
  526. X    for (;;) `123
  527. X`009if (isServerDead()) `123
  528. X`009    printf("Ack!  We've been ghostbusted!\n");
  529. X`009    exit(0);
  530. X`009`125
  531. X`009if (lasttime != time(NULL)) `123
  532. X`009    lasttime++;
  533. X`009    secondsLeft--;
  534. X`009    sprintf(tempstr, "Seconds to go: %d ", secondsLeft);
  535. X`009    W_WriteText(w, 150, 400, textColor, tempstr, strlen(tempstr),
  536. X`009`009W_BoldFont);
  537. X`009    if (secondsLeft==0) `123
  538. X`009`009me->p_status = PFREE;
  539. X`009`009printf("Auto-Quit\n");
  540. X`009`009exit(0);
  541. X`009    `125
  542. X`009`125
  543. X`009if (state==ST_DONE) `123
  544. X`009    W_ClearWindow(w);
  545. X`009    return;
  546. X`009`125
  547. X`009readFromServer();`009/* Just in case it wants to say something */
  548. X`009if (!W_EventsPending()) continue;
  549. X`009W_NextEvent(&event);
  550. X`009if (event.Window != w) continue;
  551. X`009switch ((int) event.type) `123
  552. X`009case W_EV_EXPOSE:
  553. X`009    displayStartup(defname);
  554. X`009    break;
  555. X`009case W_EV_KEY:
  556. X`009    ch = event.key;
  557. X`009    if (ch==10) ch=13;
  558. X`009    if (ch==4 && state==ST_GETNAME && *tempname=='\0') exit(0);
  559. X`009    if (ch<32 && ch!=21 && ch!=13 && ch!=8) break;
  560. X`009    switch(state) `123
  561. X`009    case ST_GETNAME:
  562. X`009`009if (ch == 13) `123
  563. X`009`009    if (*tempname == '\0') `123
  564. X`009`009`009strcpy(tempname, defname);
  565. X`009`009    `125
  566. X`009`009    loaddude();
  567. +-+-+-+-+-+-+-+-  END  OF PART 21 +-+-+-+-+-+-+-+-
  568.