1 /*************************************************************************** 2 * TEKWAR.H - for stuff that probably all modules would like to * 3 * know about * 4 * * 5 ***************************************************************************/ 6 7 #include "common_game.h" 8 9 #define TEKWAR 10 11 #define BETA 1 12 #define DEBUG 1 13 14 #define CLKIPS 120 15 #define MSGBUFSIZE 40 16 #define DOOMGUY 999 17 #define KENSPLAYERHEIGHT 34 18 19 #define TICSPERFRAME 3 20 #define MOVEFIFOSIZ 256 21 22 #define TEKTEMPBUFSIZE 256 23 24 #define GAMECVARSGLOBAL 25 #define NETNAMES 26 27 typedef struct 28 { 29 int x, y, z; 30 } point3d; 31 32 extern int vel, svel, angvel; 33 extern int vel2, svel2, angvel2; 34 35 extern volatile int recsnddone, recsndoffs; 36 extern int recording; 37 38 extern int r_showfps; 39 40 41 #define NUMOPTIONS 8 42 #define NUMGAMEKEYS 32 43 #define MAXMOREOPTIONS 21 44 #define MAXTOGGLES 16 45 #define MAXGAMESTUFF 16 46 extern int fullscreen, xdimgame, ydimgame, bppgame; 47 extern int forcesetup; 48 extern unsigned char option[NUMOPTIONS]; 49 extern unsigned char keys[NUMGAMEKEYS]; 50 extern unsigned char moreoptions[MAXMOREOPTIONS]; 51 extern char toggles[MAXTOGGLES]; 52 extern int gamestuff[MAXGAMESTUFF]; 53 54 extern char frame2draw[MAXPLAYERS]; 55 extern int frameskipcnt[MAXPLAYERS]; 56 extern char gundmost[320]; 57 58 //Shared player variables 59 extern int posx[MAXPLAYERS], posy[MAXPLAYERS], posz[MAXPLAYERS]; 60 extern int horiz[MAXPLAYERS], zoom[MAXPLAYERS], hvel[MAXPLAYERS]; 61 extern short ang[MAXPLAYERS], cursectnum[MAXPLAYERS], ocursectnum[MAXPLAYERS]; 62 extern short playersprite[MAXPLAYERS], deaths[MAXPLAYERS]; 63 extern int lastchaingun[MAXPLAYERS]; 64 extern int health[MAXPLAYERS], score[MAXPLAYERS], saywatchit[MAXPLAYERS]; 65 extern short numbombs[MAXPLAYERS], oflags[MAXPLAYERS]; 66 extern char dimensionmode[MAXPLAYERS]; 67 extern char revolvedoorstat[MAXPLAYERS]; 68 extern short revolvedoorang[MAXPLAYERS], revolvedoorrotang[MAXPLAYERS]; 69 extern int revolvedoorx[MAXPLAYERS], revolvedoory[MAXPLAYERS]; 70 71 //Local multiplayer variables 72 extern int locselectedgun; 73 extern signed char locvel, olocvel; 74 extern short locsvel, olocsvel; // Les 09/30/95 75 extern short locangvel, olocangvel; // Les 09/30/95 76 extern short locbits, olocbits; 77 78 //Local multiplayer variables for second player 79 extern int locselectedgun2; 80 extern signed char locvel2, olocvel2; 81 extern short locsvel2, olocsvel2; // Les 09/30/95 82 extern short locangvel2, olocangvel2; // Les 09/30/95 83 extern short locbits2, olocbits2; 84 85 //Multiplayer syncing variables 86 extern signed char fsyncvel[MAXPLAYERS], osyncvel[MAXPLAYERS], syncvel[MAXPLAYERS]; 87 extern short fsyncsvel[MAXPLAYERS], osyncsvel[MAXPLAYERS], syncsvel[MAXPLAYERS]; // Les 09/30/95 88 extern short fsyncangvel[MAXPLAYERS], osyncangvel[MAXPLAYERS], syncangvel[MAXPLAYERS]; // Les 09/30/95 89 extern unsigned short fsyncbits[MAXPLAYERS], osyncbits[MAXPLAYERS], syncbits[MAXPLAYERS]; 90 91 extern char frameinterpolate, detailmode, ready2send; 92 extern int ototalclock, gotlastpacketclock, smoothratio; 93 extern int oposx[MAXPLAYERS], oposy[MAXPLAYERS], oposz[MAXPLAYERS]; 94 extern int ohoriz[MAXPLAYERS], ozoom[MAXPLAYERS]; 95 extern short oang[MAXPLAYERS]; 96 97 extern point3d osprite[MAXSPRITESONSCREEN]; 98 99 extern int movefifoplc, movefifoend; 100 extern signed char baksyncvel[MOVEFIFOSIZ][MAXPLAYERS]; 101 extern short baksyncsvel[MOVEFIFOSIZ][MAXPLAYERS]; // Les 09/30/95 102 extern short baksyncangvel[MOVEFIFOSIZ][MAXPLAYERS]; // Les 09/30/95 103 extern short baksyncbits[MOVEFIFOSIZ][MAXPLAYERS]; 104 105 //GAME.C sync state variables 106 extern short syncstat; 107 extern int syncvalplc, othersyncvalplc; 108 extern int syncvalend, othersyncvalend; 109 extern int syncvalcnt, othersyncvalcnt; 110 extern short syncval[MOVEFIFOSIZ], othersyncval[MOVEFIFOSIZ]; 111 112 extern int crctable[256]; 113 #define updatecrc16(dacrc,dadat) dacrc = (((dacrc<<8)&65535)^crctable[((((unsigned short)dacrc)>>8)&65535)^dadat]) 114 extern char playerreadyflag[MAXPLAYERS]; 115 116 //Game recording variables 117 extern int reccnt, recstat; 118 extern signed char recsyncvel[16384][2]; 119 extern short recsyncsvel[16384][2]; // Les 09/30/95 120 extern short recsyncangvel[16384][2]; // Les 09/30/95 121 extern short recsyncbits[16384][2]; 122 123 //Miscellaneous variables 124 extern char tempbuf[]; 125 extern uint8_t packetbuf[]; 126 extern char boardfilename[80]; 127 extern short screenpeek, oldmousebstatus, brightness; 128 extern short screensize, screensizeflag; 129 extern short neartagsector, neartagwall, neartagsprite; 130 extern int lockclock, neartagdist, neartaghitdist; 131 extern int masterslavetexttime; 132 extern int pageoffset, ydim16, chainnumpages; 133 extern int globhiz, globloz, globhihit, globlohit; 134 extern int stereofps, stereowidth, stereopixelwidth; 135 136 //Board animation variables 137 extern short rotatespritelist[16], rotatespritecnt; 138 extern short warpsectorlist[64], warpsectorcnt; 139 extern short xpanningsectorlist[16], xpanningsectorcnt; 140 extern short ypanningwalllist[64], ypanningwallcnt; 141 extern short floorpanninglist[64], floorpanningcnt; 142 extern short dragsectorlist[16], dragxdir[16], dragydir[16], dragsectorcnt; 143 extern int dragx1[16], dragy1[16], dragx2[16], dragy2[16], dragfloorz[16]; 144 extern short swingcnt, swingwall[32][5], swingsector[32]; 145 extern short swingangopen[32], swingangclosed[32], swingangopendir[32]; 146 extern short swingang[32], swinganginc[32]; 147 extern int swingx[32][8], swingy[32][8]; 148 extern short revolvesector[4], revolveang[4], revolvecnt; 149 extern int revolvex[4][16], revolvey[4][16]; 150 extern int revolvepivotx[4], revolvepivoty[4]; 151 extern short subwaytracksector[4][128], subwaynumsectors[4], subwaytrackcnt; 152 extern int subwaystop[4][8], subwaystopcnt[4]; 153 extern int subwaytrackx1[4], subwaytracky1[4]; 154 extern int subwaytrackx2[4], subwaytracky2[4]; 155 extern int subwayx[4], subwaygoalstop[4], subwayvel[4], subwaypausetime[4]; 156 extern short waterfountainwall[MAXPLAYERS], waterfountaincnt[MAXPLAYERS]; 157 extern short slimesoundcnt[MAXPLAYERS]; 158 159 //Variables that let you type messages to other player 160 extern char getmessage[162], getmessageleng; 161 extern int getmessagetimeoff; 162 extern char typemessage[162]; 163 extern int typemessageleng, typemode; 164 extern char scantoasc[128]; 165 extern char scantoascwithshift[128]; 166 167 //These variables are for animating x, y, or z-coordinates of sectors, 168 //walls, or sprites (They are NOT to be used for changing the [].picnum's) 169 //See the setanimation(), and getanimategoal() functions for more details. 170 #define MAXANIMATES 512 171 extern int *animateptr[MAXANIMATES], animategoal[MAXANIMATES]; 172 extern int animatevel[MAXANIMATES], animateacc[MAXANIMATES], animatecnt; 173 174 175 #define FT_FULLSCREEN 0 176 #define FT_DATALINK 1 177 178 #define MAXHEALTH 1000 179 #define MAXSTUN 1000 180 #define MAXAMMO 100 181 182 #define CLASS_NULL 0 183 #define CLASS_FCIAGENT 1 184 #define CLASS_CIVILLIAN 2 185 #define CLASS_SPIDERDROID 3 186 #define CLASS_COP 4 187 #define CLASS_MECHCOP 5 188 #define CLASS_TEKBURNOUT 6 189 #define CLASS_TEKGOON 7 190 #define CLASS_ASSASSINDROID 8 191 #define CLASS_SECURITYDROID 9 192 #define CLASS_TEKBOSS 10 193 #define CLASS_TEKLORD 11 194 195 #define MAPXT 1 196 197 struct picattribtype { 198 unsigned char numframes; 199 unsigned char animtype; 200 signed char ycenteroffset,xcenteroffset; 201 unsigned char animspeed; 202 }; 203 204 #ifdef __GNUC__ 205 # if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 206 # define TPACK __attribute__ ((packed, gcc_struct)) 207 # else 208 # define TPACK __attribute__ ((packed)) 209 # endif 210 #else 211 #define TPACK 212 #endif 213 214 #ifdef _MSC_VER 215 #pragma pack(1) 216 #endif 217 218 #ifdef __WATCOMC__ 219 #pragma pack(push,1); 220 #endif 221 222 struct TPACK spriteextension { 223 unsigned char classification; 224 signed char hitpoints; 225 unsigned short target; 226 unsigned short fxmask; 227 unsigned short aimask; 228 short basestat; 229 unsigned short basepic; 230 unsigned short standpic; 231 unsigned short walkpic; 232 unsigned short runpic; 233 unsigned short attackpic; 234 unsigned short deathpic; 235 unsigned short painpic; 236 unsigned short squatpic; 237 unsigned short morphpic; 238 unsigned short specialpic; 239 unsigned char lock; 240 unsigned char weapon; 241 short ext2; 242 }; 243 244 #ifdef _MSC_VER 245 #pragma pack() 246 #endif 247 248 #ifdef __WATCOMC__ 249 #pragma pack(pop) 250 #endif 251 252 #undef TPACK 253 254 // use this function whenever you need to verify your 255 // extension index 256 extern int seconds; 257 extern int minutes; 258 extern int hours; 259 extern int messageon; 260 extern unsigned criticalerror; 261 extern char messagebuf[MSGBUFSIZE]; 262 extern char tektempbuf[TEKTEMPBUFSIZE]; 263 extern char notininventory; 264 extern struct picattribtype *picinfoptr; 265 extern sectortype *sectptr[MAXSECTORS]; 266 extern spritetype *sprptr[MAXSPRITES]; 267 extern walltype *wallptr[MAXWALLS]; 268 extern struct spriteextension spriteXT[MAXSPRITES]; 269 extern struct spriteextension *sprXTptr[MAXSPRITES]; 270 271 // additional player arrays 272 extern int fallz[],stun[]; 273 extern int invredcards[MAXPLAYERS], invbluecards[MAXPLAYERS]; 274 extern int invaccutrak[MAXPLAYERS]; 275 extern int fireseq[MAXPLAYERS]; 276 extern short ammo1[MAXPLAYERS]; 277 extern short ammo2[MAXPLAYERS]; 278 extern short ammo3[MAXPLAYERS]; 279 extern short ammo4[MAXPLAYERS]; 280 extern short ammo5[MAXPLAYERS]; 281 extern short ammo6[MAXPLAYERS]; 282 extern short ammo7[MAXPLAYERS]; 283 extern short ammo8[MAXPLAYERS]; 284 extern int weapons[MAXPLAYERS]; 285 extern char dead[MAXPLAYERS]; 286 extern int firedonetics[MAXPLAYERS]; 287 extern int lastgun[MAXPLAYERS]; 288 extern int drawweap[MAXPLAYERS]; 289 290 extern uint32_t flags32[]; 291 292 #define TOGGLE_RETICULE 0 293 #define TOGGLE_TIME 1 294 #define TOGGLE_SCORE 2 295 #define TOGGLE_SOUND 3 296 #define TOGGLE_MUSIC 4 297 #define TOGGLE_REARVIEW 5 298 #define TOGGLE_UPRT 6 299 #define TOGGLE_GODMODE 7 300 #define TOGGLE_HEALTH 8 301 #define TOGGLE_OVERSCAN 9 302 #define TOGGLE_INVENTORY 10 303 304 #define GUN1FLAG 1 305 #define GUN2FLAG 2 306 #define GUN3FLAG 3 307 #define GUN4FLAG 4 308 #define GUN5FLAG 5 309 #define GUN6FLAG 6 310 #define GUN7FLAG 7 311 #define GUN8FLAG 8 312 313 #define BASESONG 0 314 315 #define ST_NULL 0x0000 316 #define ST_IMMEDIATE 0x0001 317 #define ST_UPDATE 0x0002 318 #define ST_NOUPDATE 0x0004 319 #define ST_UNIQUE 0x0008 320 #define ST_DELAYED 0x0010 321 #define ST_VARPITCH 0x0020 322 #define ST_BACKWARDS 0x0040 323 #define ST_AMBUPDATE 0x0060 324 #define ST_VEHUPDATE 0x0080 325 #define ST_TOGGLE 0x0100 326 327 #define MAXSOUNDS 16 328 #define TOTALSOUNDS 208 329 330 #define S_WATERFALL 0 331 #define S_ALARM 1 332 333 #define S_SEWERLOOP1 2 //sewer sounds 334 #define S_SEWERLOOP2 3 335 #define S_SEWERLOOP3 4 336 #define S_SEWERLOOP4 5 337 #define S_SEWERSPLASH1 6 338 #define S_SEWERSPLASH2 7 339 #define S_SEWERSPLASH3 8 340 #define S_SPLASH2 9 341 #define S_SPLASH3 10 342 #define S_SPLASH 11 343 344 #define S_MATRIX1 12 //matrix sounds 345 #define S_MATRIX2 13 346 #define S_MATRIX3 14 347 #define S_MATRIX4 15 348 #define S_MATRIX5 16 349 #define S_MATRIX6 17 350 #define S_MATRIX7 18 351 #define S_MATRIX8 19 352 #define S_MATRIX9 20 353 #define S_MATRIX10 21 354 #define S_MATRIX11 22 355 #define S_MATRIX12 23 356 357 #define S_WH_SWITCH 24 //warehouse 358 #define S_WH_GRINDING 25 359 #define S_WH_TRACKSTOP 26 360 #define S_WH_STEAMPRESS 27 361 #define S_WH_CLANK 28 362 #define S_WH_6 29 363 #define S_WH_7 30 364 #define S_WH_8 31 365 366 #define S_WAVES1 32 //beach and city 367 #define S_WAVES2 33 368 #define S_BIRDIES 34 369 370 #define S_STEAM 35 371 #define S_FIRELOOP 36 372 #define S_SPINNING_DOOR 37 373 374 #define S_TRUCKHORN 38 375 #define S_CITY_AMBIENCE 39 376 #define S_WIND 40 377 #define S_AMBULANCE 41 378 379 #define S_ROBOT_ACCESS 42 //matrix voices 380 #define S_ROBOT_INTRUDER 43 381 #define S_ROBOT_VIRUS 44 382 383 #define S_SUBWAY_TRACK 45 384 #define S_ALARM2 46 385 #define S_ALARM3 47 386 387 #define S_STATUS1 48 //menus and status 388 #define S_STATUS2 49 389 #define S_HEALTHMONITOR 50 390 #define S_REARMONITOR 51 391 #define S_MENUSOUND1 52 392 #define S_MENUSOUND2 53 393 #define S_BEEP 54 394 #define S_BOOP 55 395 396 #define S_MATRIXDOOR1 56 //doors 397 #define S_MATRIXDOOR2 57 398 #define S_MATRIXDOOR3 58 399 #define S_SIDEDOOR1 59 400 #define S_SIDEDOOR2 60 401 #define S_BIGSWINGOP 61 402 #define S_BIGSWINGCL 62 403 #define S_FLOOROPEN 63 404 #define S_BAYDOOR_OPEN 64 405 #define S_BAYDOOR_CLOSE 65 406 #define S_BAYDOORLOOP 66 407 #define S_UPDOWNDR2_OP 67 408 #define S_UPDOWNDR2_CL 68 409 #define S_DOORKLUNK 69 410 #define S_AIRDOOR 70 411 #define S_AIRDOOR_OPEN 71 412 #define S_AIRDOOR_CLOSE 72 413 #define S_ELEVATOR_DOOR 73 414 415 #define S_SUBSTATIONLOOP 74 //vehicles 416 #define S_SUBWAYLOOP 75 417 #define S_SUBWAYSTART 76 418 #define S_SUBWAYSTOP 77 419 #define S_TRUCKLOOP 78 420 #define S_TRUCKSTART 79 421 #define S_TRUCKSTOP 80 422 #define S_TRAMBUSLOOP 81 423 #define S_BOATLOOP 82 424 #define S_CARTLOOP 83 425 #define S_FORKLIFTLOOP 84 426 427 428 #define S_RIC1 85 //guns 429 #define S_RIC2 86 430 #define S_WEAPON1 87 431 #define S_WEAPON2 88 432 #define S_WEAPON3 89 433 434 #define S_WEAPON4 90 435 #define S_WEAPON5 91 436 #define S_WEAPON6 92 437 #define S_WEAPON7 93 438 #define S_WEAPON8 94 439 440 441 442 #define S_ENEMYGUN1 95 443 #define S_ENEMYGUN2 96 444 #define S_ENEMYGUN3 97 445 #define S_ENEMYGUN4 98 446 #define S_WITCH 99 447 #define S_PLATFORMSTART 100 448 #define S_PLATFORMSTOP 101 449 #define S_PLATFORMLOOP 102 450 #define S_FORCEFIELD1 103 451 #define S_FORCEFIELD2 104 452 #define S_AUTOGUN 105 453 #define S_AUTOGUNEXPLODE 106 454 #define S_BUSHIT 107 455 #define S_FORCEFIELDHUMLOOP 108 456 #define S_KEYCARDBLIP 109 457 #define S_PICKUP_BONUS 110 458 #define S_JUMP 111 459 #define S_GLASSBREAK1 112 460 #define S_GLASSBREAK2 113 461 #define S_EXPLODE1 114 462 #define S_EXPLODE2 115 463 #define S_SMALLGLASS1 116 464 #define S_SMALLGLASS2 117 465 #define S_GORE1 118 466 #define S_GORE2 119 467 #define S_GORE3 120 468 #define S_FLUSH 121 469 #define S_REVOLVEDOOR 122 470 #define S_PAIN1 123 471 #define S_PAIN2 124 472 #define S_SCREAM1 125 473 #define S_SCREAM2 126 474 #define S_SCREAM3 127 475 #define S_PLAYERDIE 128 476 #define S_MANDIE1 129 477 #define S_MANDIE2 130 478 #define S_MANDIE3 131 479 #define S_MANDIE4 132 480 #define S_MANDIE5 133 481 #define S_MANDIE6 134 482 #define S_MANDIE7 135 483 #define S_MANDIE8 136 484 #define S_MANDIE9 137 485 #define S_MANDIE10 138 486 #define S_GIRLDIE1 139 487 #define S_GIRLDIE2 140 488 #define S_GIRLDIE3 141 489 #define S_GIRLDIE4 142 490 #define S_GIRLDIE5 143 491 #define S_GIRLDIE6 144 492 #define S_ANDROID_DIE 145 493 #define S_MATRIX_ATTACK 146 494 #define S_MATRIX_ATTACK2 147 495 #define S_MATRIX_DIE1 148 496 #define S_MATRIX_DIE2 149 497 #define S_TRANSITION 150 498 #define S_MALE_COMEONYOU 151 499 #define S_MALE_TAKEYOUINSLEEP 152 500 #define S_MALE_YOULOSER 153 501 #define S_MALE_YOUPUNK 154 502 #define S_MALE_YOUMORON 155 503 #define S_MALE_LIKESHOOTINGDUX 156 504 #define S_MALE_SCRAPEBOTBARREL 157 505 #define S_MALE_DONTHURT 158 506 #define S_MALE_DONTSHOOT 159 507 #define S_MALE_PLEASEDONTSHOOT 160 508 #define S_MALE_DONTSHOOT2 161 509 #define S_MALE_PLEASEDONTSHOOT2 162 510 #define S_MALE_OHMYGOD 163 511 #define S_MALE_GETDOWNTAKECOVER 164 512 #define S_MALE_HESGOTGUN 165 513 #define S_MALE_IDONTBELIEVE 166 514 #define S_MALE_RUNAWAY 167 515 #define S_MALE_TAKECOVER 168 516 #define S_MALE_HESGOTGUN2 169 517 #define S_MALE_ICANTBELIEVE 170 518 #define S_MALE_CALLTHEPOLICE 171 519 #define S_MALE_HELPCALLPOLICE 172 520 #define S_MALE_HEYBACKOFF 173 521 #define S_MALE_HESGOTAGUN 174 522 #define S_FEM_RUNHEGOTGUN 175 523 #define S_FEM_RUN 176 524 #define S_FEM_EVRYRUNHEGOTGUN 177 525 #define S_FEM_CALLACOP 178 526 #define S_FEM_OHNO 179 527 #define S_FEM_MOVEHEKILLUS 180 528 #define S_FEM_HESGOTAGUN1 181 529 #define S_FEM_EEKRUN 182 530 #define S_FEM_PSYCHOGOTGUN 183 531 #define S_FEM_OHMYGOD 184 532 #define S_FEM_HURRYOUTAMYWAY 185 533 #define S_FEM_CALLAMBULANCE 186 534 #define S_DIANE_DONTSHOOTP 187 535 #define S_DIANE_HELPMEPLEASE 188 536 #define S_DIANE_OHH 189 537 #define S_DIANE_PLEASEDONTSHOOT 190 538 #define S_DIANE_DONTSHOOTP2 191 539 #define S_KATIE_DONTSHOOT 192 540 #define S_KATIE_PLEASEDONTSHOOT 193 541 #define S_MAR_THINKYOUTAKE 194 542 #define S_MAR_ISTHATALL 195 543 #define S_MAR_KISSYOURASS 196 544 #define S_GRD_WHATDOINGHERE 197 545 #define S_GRD_IDLEAVE 198 546 #define S_GRD_HANDSUP 199 547 #define S_GRD_HOLDIT 200 548 #define S_GRD_DROPIT 201 549 #define S_DIM_WANTSOMETHIS 202 550 #define S_DIM_THINOUCANTAKEME 203 551 #define S_DIM_LAUGHTER 204 552 #define S_DIM_CANTSTOPTEKLORDS 205 553 #define S_DIM_TEKRULES 206 554 #define S_HOLOGRAMDIE 207 555 556 557 #define AI_NULL 0x0000 558 #define AI_FRIEND 0x0001 559 #define AI_FOE 0x0002 560 #define AI_JUSTSHOTAT 0x0004 561 #define AI_CRITICAL 0x0008 562 #define AI_WASDRAWN 0x0010 563 #define AI_WASATTACKED 0x0020 564 #define AI_GAVEWARNING 0x0040 565 #define AI_ENCROACHMENT 0x0080 566 #define AI_DIDFLEESCREAM 0x0100 567 #define AI_DIDAMBUSHYELL 0x0200 568 #define AI_DIDHIDEPLEA 0x0400 569 #define AI_TIMETODODGE 0x0800 570 571 572 #define lm(_str_) printf(" %s...\n", _str_); 573 574 #define fillsprite(newspriteindex2,x2,y2,z2,cstat2,shade2,pal2, \ 575 clipdist2,xrepeat2,yrepeat2,xoffset2,yoffset2,picnum2,ang2, \ 576 xvel2,yvel2,zvel2,owner2,sectnum2,statnum2,lotag2,hitag2,extra2) \ 577 { \ 578 spritetype *spr2; \ 579 spr2 = &sprite[newspriteindex2]; \ 580 spr2->x = x2; spr2->y = y2; spr2->z = z2; \ 581 spr2->cstat = cstat2; spr2->shade = shade2; \ 582 spr2->pal = pal2; spr2->clipdist = clipdist2; \ 583 spr2->xrepeat = xrepeat2; spr2->yrepeat = yrepeat2; \ 584 spr2->xoffset = xoffset2; spr2->yoffset = yoffset2; \ 585 spr2->picnum = picnum2; spr2->ang = ang2; \ 586 spr2->xvel = xvel2; spr2->yvel = yvel2; spr2->zvel = zvel2; \ 587 spr2->owner = owner2; \ 588 spr2->lotag = lotag2; spr2->hitag = hitag2; spr2->extra = -1; \ 589 copybuf(&spr2->x,&osprite[newspriteindex2].x,3); \ 590 } \ 591 592 593 // b5compat.c 594 595 void overwritesprite(int thex, int they, short tilenum, signed char shade, 596 char stat, unsigned char dapalnum); 597 void permanentwritesprite(int thex, int they, short tilenum, signed char shade, 598 int cx1, int cy1, int cx2, int cy2, unsigned char dapalnum); 599 void permanentwritespritetile(int thex, int they, short tilenum, signed char shade, 600 int cx1, int cy1, int cx2, int cy2, unsigned char dapalnum); 601 void printext(int x, int y, const char *buffer, short tilenum, char invisiblecol); 602 void precache(); 603 void resettiming(); 604 void setbrightness(int32_t brightness); 605 606 // config.c 607 //int loadsetup(const char *fn); 608 //int writesetup(const char *fn); 609 610 // tekcdr.c 611 612 int cdpreinit(void); 613 void cduninit(void); 614 615 // tekchng.c 616 617 int changehealth(short snum, short deltahealth); 618 void changescore(short snum, short deltascore); 619 void tekchangefallz(short snum,int loz,int hiz); 620 void tekhealstun(short snum); 621 622 // tekgame.c 623 624 #define MAXNAMESIZE 11 625 626 extern int dbgflag; 627 extern int dbgcolumn; 628 extern FILE *dbgfp; 629 630 extern short biasthreshhold; 631 extern char biasthreshholdon; 632 extern int headbob; 633 extern char localname[MAXNAMESIZE]; 634 extern char netnames[MAXPLAYERS][MAXNAMESIZE]; 635 636 extern int32_t g_noSetup; 637 638 void checkmasterslaveswitch(); 639 void doanimations(); 640 void domovethings(); 641 void drawscreen(short snum, int dasmoothratio); 642 void getpackets(); 643 void playback(); 644 int setanimation(int *animptr, int thegoal, int thevel, int theacc); 645 646 // tekgun.c 647 648 extern short dieframe[MAXPLAYERS]; 649 extern int goreflag; 650 651 void gunstatuslistcode(void); 652 void killscore(short hs, short snum, char guntype); 653 void playerpainsound(int p); 654 void restockammo(int snum); 655 void tekanimweap(int gun,short p); 656 void tekdrawgun(int gun,short p); 657 int tekexplodebody(int i); 658 void tekfiregun(int gun,short p); 659 int tekgundamage(int gun,int x,int y,int z,int hitsprite); 660 void tekgunload(int fil); 661 void tekgunsave(int fil); 662 int tekhasweapon(int gun,short snum); 663 int validplayer(int snum); 664 665 // tekldsv.c 666 667 int loadgame(int loadno); 668 int savegame(int saveno); 669 670 // tekmap.c 671 672 void drawoverheadmap(int cposx, int cposy, int czoom, short cang); 673 674 // tekmsc.c 675 676 #define MAXLOADSAVEOPTS 5 677 #define MAXLOADSAVESIZE 12 678 #define TOTALMAPS 32 679 680 extern int activemenu; 681 extern int autocenter[MAXPLAYERS]; 682 extern char debrief; 683 extern int difficulty; 684 extern char dofadein; 685 extern char gameover; 686 extern char generalplay; 687 extern char loadsavenames[MAXLOADSAVEOPTS][MAXLOADSAVESIZE]; 688 extern const char *mapnames[TOTALMAPS]; 689 extern int mission; 690 extern int mousesensitivity; 691 extern int nochaseflag; 692 extern int noenemiesflag; 693 extern int noguardflag; 694 extern int nostalkflag; 695 extern int nostrollflag; 696 extern char rearviewdraw; 697 extern char singlemapmode; 698 699 int accessiblemap(int mn); 700 void bonusflash(); 701 int choosemap(); 702 int choosemission(); 703 void copyrightscreen(); 704 void criticalflash(); 705 void debriefing(); 706 void depositsymbol(int snum); 707 void domenu(void); 708 void domenuinput(void); 709 void fadein(int start, int end, int steps); 710 void fadeout(int start, int end, int red, int green, int blue, int steps); 711 void finishpaletteshifts(void); 712 void holyoff(); 713 void holyon(); 714 void initmenu(void); 715 void initmoreoptions(); 716 int initpaletteshifts(void); 717 void missionaccomplished(int sn); 718 int missionfailed(); 719 void newgame(const char *mapname); 720 void newmap(int mapno); 721 void nextnetlevel(); 722 void rearview(int snum); 723 void redrawbackfx(void); 724 void teksavemissioninfo(int fil); 725 void setup3dscreen(); 726 void showmessage(const char *fmt,...); 727 void tekargv(int argc,char const * const argv[]); 728 void tekgamestarted(void); 729 void tekloadmissioninfo(int fil); 730 void tekloadmoreoptions(int fil); 731 int tekprivatekeys(void); 732 void teksavemoreoptions(int fil); 733 int tekscreenfx(void); 734 void tektime(void); 735 void woundflash(); 736 737 // tekprep.c 738 739 extern int coopmode; 740 extern int startx,starty,startz; 741 extern short starta,starts; 742 extern int switchlevelsflag; 743 extern int subwaysound[4]; 744 745 void initplayersprite(short snum); 746 void netstartspot(int *x, int *y,short *sectnum); 747 void placerandompic(int picnum); 748 void prepareboard(char *daboardfilename); 749 void tekinitmultiplayers(int argc, char const * const argv[]); 750 void tekloadsetup(); 751 void teknetpickmap(void); 752 int tekpreinit(void); 753 void tekrestoreplayer(short snum); 754 void teksavesetup(void); 755 void tekview(int *x1,int *y1, int *x2,int *y2); 756 757 // teksmk.c 758 759 void smkclosemenu(); 760 void smkmenuframe(int fn); 761 void smkopenmenu(const char *name); 762 void smkplayseq(const char *name); 763 void smkshowmenu(); 764 765 // teksnd.c 766 767 extern int digiloopflag; 768 769 void initsb(char option1,char option2,int digihz,char option7a,char option7b,int val,char option7c); 770 void menusong(int insubway); 771 void musicfade(); 772 void musicoff(void); 773 int playsound(int sn, int sndx,int sndy, int loop, short type); 774 void songmastervolume(int vol); 775 void soundmastervolume(int vol); 776 void startmusic(int level); 777 void stopallsounds(); 778 void stopsound(int i); 779 void uninitsb(void); 780 void updatesounds(int snum); 781 void updatevehiclesnds(int i, int sndx, int sndy); 782 783 // tekspr.c 784 785 void analyzesprites(int dax, int day); 786 void checktouchsprite(short snum, short sectnum); 787 short floatmovesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, char cliptype); 788 short flymovesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, char cliptype); 789 short kenmovesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, char cliptype); 790 short movesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, char cliptype); 791 void playerdropitems(int snum); 792 793 // tekstat.c 794 795 #define NORMALCLIP 0 796 #define PROJECTILECLIP 1 797 #define CLIFFCLIP 2 798 799 extern uspritetype pickup; 800 801 void ambushyell(short sn, short ext); 802 void androidexplosion(int i); 803 int attachvirus(short i, int pic); 804 void blastmark(int i); 805 void bloodonwall(int wn, int x,int y,int z, short sect, short daang, int hitx, int hity, int hitz); 806 void bombexplosion(int i); 807 int damagesprite(int hitsprite, int points); 808 void dosectorflash(); 809 void forceexplosion(int i); 810 void genexplosion1(int i); 811 void genexplosion2(int i); 812 void givewarning(short i, short ext); 813 int initsprites(); 814 int initspriteXTs(); 815 int isahologram(int i); 816 int isanandroid(int i); 817 short jsdeletesprite(short spritenum); 818 short jsinsertsprite(short sect, short stat); 819 void newstatus(short sn, int seq); 820 int pickupsprite(short sn); 821 void playergunshot(int snum); 822 int playerhit(int hitsprite, int *pnum); 823 int playervirus(short pnum, int pic); 824 void sectorflash(short s); 825 void sectortriggersprites(short snum); 826 int spewblood(int sprnum, int hitz, short daang); 827 void statuslistcode(); 828 void tekstatload(int fh); 829 void tekstatsave(int fh); 830 void toss(short snum); 831 int validext(int ext); 832 833 // tektag.c 834 835 extern int headbobon; 836 extern char onelev[MAXPLAYERS]; 837 838 void checkmapsndfx(short p); 839 int krand_intercept(const char *stg); 840 void movedoors(int d); 841 void movefloordoor(int d); 842 void movesprelevs(int e); 843 void movevehicles(int v); 844 void operatesector(short dasector); 845 void operatesprite(short dasprite); 846 void setanimpic(short *pic,short tics,short frames); 847 void tagcode(); 848 void tekdoanimpic(void); 849 void tekdodelayfuncs(void); 850 void tekheadbob(void); 851 void teknewsector(short p); 852 void tekoperatesector(short dasector); 853 void tekpreptags(); 854 void teksetdelayfunc(void (*delayfunc)(short),int tics,short parm); 855 void tekswitchtrigger(short snum); 856 void tektagcode(void); 857 void tektagload(int fil); 858 void tektagsave(int fil); 859 int testneighborsectors(short sect1, short sect2); 860 void warp(int *x, int *y, int *z, short *daang, short *dasector); 861 void warpsprite(short spritenum); 862 863 // tektxt.c 864 865 extern char bypasscdcheck; 866 867 void crash(const char *s,...); 868