2327 lines
71 KiB
C
2327 lines
71 KiB
C
|
/***************************************************************************/
|
||
|
/* */
|
||
|
/* */
|
||
|
/* Raven 3D Engine */
|
||
|
/* Copyright (C) 1996 by Softdisk Publishing */
|
||
|
/* */
|
||
|
/* Original Design: */
|
||
|
/* John Carmack of id Software */
|
||
|
/* */
|
||
|
/* Enhancements by: */
|
||
|
/* Robert Morgan of Channel 7............................Main Engine Code */
|
||
|
/* Todd Lewis of Softdisk Publishing......Tools,Utilities,Special Effects */
|
||
|
/* John Bianca of Softdisk Publishing..............Low-level Optimization */
|
||
|
/* Carlos Hasan..........................................Music/Sound Code */
|
||
|
/* */
|
||
|
/* */
|
||
|
/***************************************************************************/
|
||
|
|
||
|
#include <STDLIB.H>
|
||
|
#include "d_global.h"
|
||
|
#include "r_refdef.h"
|
||
|
#include "d_font.h"
|
||
|
#include "protos.h"
|
||
|
#include "audio.h"
|
||
|
#include "d_ints.h"
|
||
|
#include "d_disk.h"
|
||
|
#include "d_misc.h"
|
||
|
|
||
|
|
||
|
/**** VARIABLES ****/
|
||
|
|
||
|
#define MAXSTARTLOCATIONS 8
|
||
|
|
||
|
extern int slumps[S_END-S_START+1];
|
||
|
extern int startlocations[MAXSTARTLOCATIONS][2];
|
||
|
extern SoundCard SC;
|
||
|
extern int bloodcount, metalcount;
|
||
|
|
||
|
|
||
|
/**** FUNCTIONS ****/
|
||
|
|
||
|
void DemandLoadMonster(int lump, int num)
|
||
|
{
|
||
|
int i, j, l, count, top, bottom;
|
||
|
scalepic_t *pic;
|
||
|
byte *collumn;
|
||
|
|
||
|
if (lumpmain[lump]!=0)
|
||
|
return; // already loaded
|
||
|
for (l=0;l<num;l++)
|
||
|
{
|
||
|
CA_CacheLump(lump+l);
|
||
|
pic=lumpmain[lump+l];
|
||
|
for (i=0;i<pic->width;i++)
|
||
|
if (pic->collumnofs[i])
|
||
|
{
|
||
|
collumn=(byte *)pic+pic->collumnofs[i];
|
||
|
top=*(collumn+1);
|
||
|
bottom=*(collumn);
|
||
|
count=bottom-top+1;
|
||
|
collumn+=2;
|
||
|
for (j=0;j<count;j++,collumn++)
|
||
|
if (*collumn==255)
|
||
|
*collumn=0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
scaleobj_t *SpawnSprite(int value, fixed_t x, fixed_t y, fixed_t z,fixed_t zadj,int angle,int angle2,boolean active,int spawnid)
|
||
|
{
|
||
|
scaleobj_t *sprite_p=0, *s;
|
||
|
doorobj_t *door_p;
|
||
|
elevobj_t *elevator_p;
|
||
|
spawnarea_t *sa;
|
||
|
int x1, y1, mapspot, maxheight, i, j;
|
||
|
|
||
|
x1=x>>FRACTILESHIFT;
|
||
|
y1=y>>FRACTILESHIFT;
|
||
|
mapspot=y1*MAPCOLS+x1;
|
||
|
angle&=ANGLES;
|
||
|
|
||
|
switch (value)
|
||
|
{
|
||
|
case S_BLOODSPLAT:
|
||
|
if (!SC.violence) break;
|
||
|
if (bloodcount>200)
|
||
|
{
|
||
|
for (s=firstscaleobj.next; s!=&lastscaleobj;s=s->next)
|
||
|
if (s->type==S_BLOODSPLAT)
|
||
|
{
|
||
|
RF_RemoveSprite(s);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
bloodcount++;
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((7+MS_RndT()&15)<<FRACBITS);
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->angle=MS_RndT()*4;
|
||
|
sprite_p->moveSpeed=15-(MS_RndT()&7);
|
||
|
sprite_p->angle2=(MS_RndT()&63)+32;
|
||
|
sprite_p->basepic=slumps[value-S_START]+(MS_RndT()%10);
|
||
|
sprite_p->type=S_BLOODSPLAT;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->movesize=FRACUNIT;
|
||
|
sprite_p->scale=1;
|
||
|
break;
|
||
|
/* case S_GREENBLOOD:
|
||
|
if (!SC.violence) break;
|
||
|
if (bloodcount>100)
|
||
|
{
|
||
|
for (s=firstscaleobj.next; s!=&lastscaleobj;s=s->next)
|
||
|
if (s->type==S_BLOODSPLAT)
|
||
|
{
|
||
|
RF_RemoveSprite(s);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
bloodcount++;
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((7+MS_RndT()&15)<<FRACBITS);
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->angle=MS_RndT()*4;
|
||
|
sprite_p->moveSpeed=15-(MS_RndT()&7);
|
||
|
sprite_p->angle2=(MS_RndT()&63)+32;
|
||
|
sprite_p->basepic=slumps[value-S_START]+(MS_RndT()%10);
|
||
|
sprite_p->type=S_BLOODSPLAT;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->movesize=FRACUNIT;
|
||
|
break; */
|
||
|
|
||
|
/* ammo */
|
||
|
case S_BULLET1: // autopistol
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=500;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=35;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET2: // vulcan cannon
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=500;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=40;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET3: // flamer
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=90;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=96;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=30;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->specialtype=st_noclip;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET4: // spread gun
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=4<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=112;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET7: // psyborg #1
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=72;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=30;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->maxmove=2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET9: // lizard #2
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=90;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->rotate=rt_four;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET10: // specimen #2
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=50;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->animation=1 + (0<<1) + (3<<5) + (5<<9);
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=3<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=500;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=35;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET11: // mooman #2
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=500;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=10;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET12: // dominatrix #2
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=2<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=300;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=45;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET16: // red
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->animation=1 + (0<<1) + (3<<5) + (5<<9);
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=3<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=30;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=30;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_BULLET17: // blue gun
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=64;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=100;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=75;
|
||
|
sprite_p->type=S_BULLET17;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->scale=1;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
|
||
|
/* sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=20;
|
||
|
sprite_p->maxmove=17;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->animation=1 + (0<<1) + (3<<5) + (3<<9);
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=5<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=5;
|
||
|
sprite_p->damage=1;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->specialtype=st_transparent;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break; */
|
||
|
case S_BULLET18: // green
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->animation=1 + (0<<1) + (3<<5) + (5<<9);
|
||
|
sprite_p->moveSpeed=50;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=5<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=300;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=400;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
break;
|
||
|
|
||
|
case S_EXPLODE:
|
||
|
case S_SMALLEXPLODE:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->animation=0 + (0<<1) + (4<<5) + ((2+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=z;
|
||
|
if (MS_RndT()&1) sprite_p->basepic=slumps[S_EXPLODE-S_START];
|
||
|
else sprite_p->basepic=slumps[S_EXPLODE2-S_START];
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=512;
|
||
|
sprite_p->type=S_EXPLODE;
|
||
|
sprite_p->specialtype=st_noclip;
|
||
|
break;
|
||
|
|
||
|
case S_WALLPUFF:
|
||
|
sprite_p=RF_GetSprite ();
|
||
|
sprite_p->animation=0 + (0<<1) + (5<<5) + ((2+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=100;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->type=S_WALLPUFF;
|
||
|
sprite_p->specialtype=st_transparent;
|
||
|
break;
|
||
|
case S_GREENPUFF:
|
||
|
sprite_p=RF_GetSprite ();
|
||
|
sprite_p->animation=0 + (0<<1) + (4<<5) + ((2+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=150;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->type=S_WALLPUFF;
|
||
|
sprite_p->specialtype=st_transparent;
|
||
|
break;
|
||
|
|
||
|
case S_PLASMAWALLPUFF:
|
||
|
sprite_p=RF_GetSprite ();
|
||
|
sprite_p->animation=0 + (0<<1) + (4<<5) + ((5+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->heat=600;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->type=S_PLASMAWALLPUFF;
|
||
|
sprite_p->specialtype=st_transparent;
|
||
|
break;
|
||
|
case S_ARROWPUFF:
|
||
|
sprite_p=RF_GetSprite ();
|
||
|
sprite_p->animation=0 + (0<<1) + (4<<5) + ((3+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=z;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=512;
|
||
|
sprite_p->type=S_EXPLODE;
|
||
|
sprite_p->specialtype=st_noclip;
|
||
|
SoundEffect(SN_EXPLODE1+(MS_RndT()&1),15,x,y);
|
||
|
break;
|
||
|
|
||
|
case S_MONSTERBULLET1:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=500;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=60;
|
||
|
sprite_p->type=S_MONSTERBULLET1;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON1_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET2:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=90;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=96;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=S_MONSTERBULLET2;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON2_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET3:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=60;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=60;
|
||
|
sprite_p->type=S_MONSTERBULLET3;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->animation=1 + (0<<1) + (3<<5) + (2<<9);
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON3_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET4:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=80;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=75;
|
||
|
sprite_p->type=S_MONSTERBULLET4;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->scale=1;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
SoundEffect(SN_MON4_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET5:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=80;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=S_MONSTERBULLET5;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON5_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET6:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=70;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=100;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=150;
|
||
|
sprite_p->type=S_MONSTERBULLET6;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->scale=2;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
SoundEffect(SN_MON6_FIRE,7,x,y);
|
||
|
break;
|
||
|
|
||
|
case S_MONSTERBULLET7:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->maxmove=2;
|
||
|
sprite_p->moveSpeed=128;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=0;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=60;
|
||
|
sprite_p->type=S_MONSTERBULLET7;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON7_FIRE,7,x,y);
|
||
|
break;
|
||
|
|
||
|
case S_MONSTERBULLET8:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=90;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=96;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=S_MONSTERBULLET8;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->specialtype=st_noclip;
|
||
|
SoundEffect(SN_MON8_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET9:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=500;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=60;
|
||
|
sprite_p->type=S_MONSTERBULLET9;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON9_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET10:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=128;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=20;
|
||
|
sprite_p->maxmove=2;
|
||
|
sprite_p->type=S_MONSTERBULLET10;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON10_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET11:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=S_MONSTERBULLET11;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON11_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET12:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=70;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=40;
|
||
|
sprite_p->type=S_MONSTERBULLET12;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON12_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET13:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=S_MONSTERBULLET13;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON13_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET14:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=100;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=40;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=S_MONSTERBULLET14;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON14_FIRE,7,x,y);
|
||
|
break;
|
||
|
case S_MONSTERBULLET15:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->maxmove=4;
|
||
|
sprite_p->moveSpeed=128;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=75;
|
||
|
sprite_p->type=S_MONSTERBULLET15;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
SoundEffect(SN_MON15_FIRE,7,x,y);
|
||
|
break;
|
||
|
|
||
|
case S_GRENADEBULLET:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=64;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[S_BULLET3-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=96;
|
||
|
sprite_p->startspot=-1;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=value;
|
||
|
if (spawnid==playernum) sprite_p->spawnid=200+spawnid;
|
||
|
else sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
break;
|
||
|
|
||
|
case S_MINEBULLET:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=128;
|
||
|
sprite_p->maxmove=2;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=8<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->heat=112;
|
||
|
sprite_p->startspot=-1;
|
||
|
sprite_p->damage=50;
|
||
|
sprite_p->type=value;
|
||
|
if (spawnid==playernum) sprite_p->spawnid=200+spawnid;
|
||
|
else sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
break;
|
||
|
case S_HANDBULLET: // hand weapon attack
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=72;
|
||
|
sprite_p->maxmove=2;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->damage=100;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_SOULBULLET: // soul stealer attack
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=72;
|
||
|
sprite_p->maxmove=4;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->movesize=1<<FRACBITS;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=-1;
|
||
|
sprite_p->damage=250;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
break;
|
||
|
case S_METALPARTS:
|
||
|
if (metalcount>100)
|
||
|
{
|
||
|
for (s=firstscaleobj.next; s!=&lastscaleobj;s=s->next)
|
||
|
if (s->type==S_METALPARTS)
|
||
|
{
|
||
|
RF_RemoveSprite(s);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
metalcount++;
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x+((-15+MS_RndT()&31)<<FRACBITS);
|
||
|
sprite_p->y=y+((-15+MS_RndT()&31)<<FRACBITS);
|
||
|
sprite_p->z=z+((-32+MS_RndT()&63)<<FRACBITS);
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->angle=MS_RndT()*4;
|
||
|
sprite_p->moveSpeed=10+(MS_RndT()&15);
|
||
|
sprite_p->angle2=(MS_RndT()&63)+32;
|
||
|
sprite_p->basepic=CA_GetNamedNum("METALPARTS")+(MS_RndT()&3);
|
||
|
sprite_p->type=S_METALPARTS;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->movesize=FRACUNIT;
|
||
|
sprite_p->damage=100;
|
||
|
break;
|
||
|
|
||
|
case S_WARP:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->animation=0 + (0<<1) + (8<<5) + (6<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->specialtype=st_maxlight;
|
||
|
SoundEffect(SN_WARP,0,x,y);
|
||
|
break;
|
||
|
case S_PROXMINE:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=1;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("proxmine");
|
||
|
sprite_p->intelligence=6;
|
||
|
sprite_p->type=S_PROXMINE;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->actiontime=timecount+105;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_TIMEMINE:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=1;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("timemine");
|
||
|
sprite_p->intelligence=6;
|
||
|
sprite_p->type=S_TIMEMINE;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->actiontime=timecount+(2*70);
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_INSTAWALL:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=1;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->animation=1 + (0<<1) + (4<<5) + (16<<9);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("instaanim");
|
||
|
sprite_p->intelligence=6;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->actiontime=timecount+(45*70);
|
||
|
sprite_p->specialtype=st_transparent;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
mapsprites[mapspot]=64;
|
||
|
break;
|
||
|
case S_DECOY:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=1;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum(charnames[spawnid]);
|
||
|
sprite_p->scale=1;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->intelligence=6;
|
||
|
sprite_p->type=S_PROXMINE;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->actiontime=timecount+(2*70);
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_CLONE:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=10<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum(charnames[spawnid]);
|
||
|
sprite_p->scale=1;
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=24<<FRACBITS;
|
||
|
sprite_p->intelligence=7;
|
||
|
sprite_p->hitpoints=700;
|
||
|
sprite_p->type=S_CLONE;
|
||
|
sprite_p->height=54<<FRACBITS;
|
||
|
sprite_p->bullet=S_MONSTERBULLET8;
|
||
|
mapsprites[mapspot]=1;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
case S_GRENADE:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->moveSpeed=50;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=zadj;
|
||
|
sprite_p->z=z+zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("grenadeshot");
|
||
|
sprite_p->movesize=10<<FRACBITS;
|
||
|
sprite_p->hitpoints=1;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->startspot=mapspot;
|
||
|
sprite_p->type=S_GRENADE;
|
||
|
sprite_p->spawnid=spawnid;
|
||
|
sprite_p->angle2=angle2;
|
||
|
sprite_p->rotate=rt_four;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
|
||
|
case S_MINEPUFF:
|
||
|
sprite_p=RF_GetSprite ();
|
||
|
sprite_p->animation=0 + (0<<1) + (4<<5) + ((5+(MS_RndT()&7))<<9) + ANIM_SELFDEST;
|
||
|
sprite_p->x=x+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->y=y+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->z=z+((-3+MS_RndT()&7)<<FRACBITS);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->heat=600;
|
||
|
sprite_p->active=true;
|
||
|
sprite_p->type=S_MINEPUFF;
|
||
|
sprite_p->specialtype=st_noclip;
|
||
|
break;
|
||
|
|
||
|
/* monsters ********************************************************/
|
||
|
case S_MONSTER1_NS: // kman
|
||
|
case S_MONSTER1:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER1_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("kman");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=80;
|
||
|
sprite_p->type=S_MONSTER1;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=160;
|
||
|
sprite_p->bullet=S_MONSTERBULLET1;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER2_NS: // kfem
|
||
|
case S_MONSTER2:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER2_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("kfem");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=110;
|
||
|
sprite_p->type=S_MONSTER2;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=220;
|
||
|
sprite_p->bullet=S_MONSTERBULLET2;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER3_NS: // kprob
|
||
|
case S_MONSTER3:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER3_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=7<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=25<<FRACBITS;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("kprob");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->hitpoints=150;
|
||
|
sprite_p->type=S_MONSTER3;
|
||
|
sprite_p->height=20<<FRACBITS;
|
||
|
sprite_p->score=300;
|
||
|
sprite_p->bullet=S_MONSTERBULLET3;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER4_NS: // kbot
|
||
|
case S_MONSTER4:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER4_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("kbot");
|
||
|
DemandLoadMonster(sprite_p->basepic,48);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->hitpoints=350;
|
||
|
sprite_p->type=S_MONSTER4;
|
||
|
sprite_p->height=45<<FRACBITS;
|
||
|
sprite_p->score=700;
|
||
|
sprite_p->bullet=S_MONSTERBULLET4;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER5_NS: // kboss
|
||
|
case S_MONSTER5:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER5_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=6<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("kboss");
|
||
|
DemandLoadMonster(sprite_p->basepic,48);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=49<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->hitpoints=10000;
|
||
|
sprite_p->type=S_MONSTER5;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=30000;
|
||
|
sprite_p->bullet=S_MONSTERBULLET5;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER6_NS: // pboss
|
||
|
case S_MONSTER6:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER6_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=7<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("pboss");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=5000;
|
||
|
sprite_p->type=S_MONSTER6;
|
||
|
sprite_p->height=120<<FRACBITS;
|
||
|
sprite_p->score=15000;
|
||
|
sprite_p->bullet=S_MONSTERBULLET6;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER7_NS: // pst
|
||
|
case S_MONSTER7:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER7_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("pst");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=150;
|
||
|
sprite_p->type=S_MONSTER7;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=300;
|
||
|
sprite_p->bullet=S_MONSTERBULLET7;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
|
||
|
case S_MONSTER8_NS: // guard
|
||
|
case S_MONSTER8:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER8_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("guard");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=5;
|
||
|
sprite_p->hitpoints=350;
|
||
|
sprite_p->type=S_MONSTER8;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=700;
|
||
|
sprite_p->bullet=S_MONSTERBULLET8;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER9_NS: // trooper
|
||
|
case S_MONSTER9:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER9_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("trooper");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=5;
|
||
|
sprite_p->heat=24;
|
||
|
sprite_p->hitpoints=80;
|
||
|
sprite_p->type=S_MONSTER9;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=160;
|
||
|
sprite_p->bullet=S_MONSTERBULLET9;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER10_NS: // prisoner
|
||
|
case S_MONSTER10:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER10_NS) sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("prisoner");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=8;
|
||
|
sprite_p->heat=16;
|
||
|
sprite_p->hitpoints=20;
|
||
|
sprite_p->type=S_MONSTER10;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=40;
|
||
|
sprite_p->bullet=S_MONSTERBULLET10;
|
||
|
sprite_p->scale=1;
|
||
|
sprite_p->enraged=10;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER11_NS: // big guard
|
||
|
case S_MONSTER11:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER11_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=3<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("bigguard");
|
||
|
DemandLoadMonster(sprite_p->basepic,48);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=31<<FRACBITS;
|
||
|
sprite_p->intelligence=9;
|
||
|
sprite_p->heat=300;
|
||
|
sprite_p->hitpoints=1200;
|
||
|
sprite_p->score=10000;
|
||
|
sprite_p->type=S_MONSTER11;
|
||
|
sprite_p->height=128<<FRACBITS;
|
||
|
sprite_p->bullet=S_MONSTERBULLET11;
|
||
|
sprite_p->deathevent=255;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
|
||
|
case S_MONSTER12_NS: // pss
|
||
|
case S_MONSTER12:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER12_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("pss");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=90;
|
||
|
sprite_p->type=S_MONSTER12;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=180;
|
||
|
sprite_p->bullet=S_MONSTERBULLET12;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER13_NS: // kwiz
|
||
|
case S_MONSTER13:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER13_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("wiz");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=300;
|
||
|
sprite_p->type=S_MONSTER13;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=600;
|
||
|
sprite_p->bullet=S_MONSTERBULLET13;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER14_NS: // veek
|
||
|
case S_MONSTER14:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER14_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=4<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("veek");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=350;
|
||
|
sprite_p->type=S_MONSTER14;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=700;
|
||
|
sprite_p->bullet=S_MONSTERBULLET14;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
case S_MONSTER15_NS: // tboss
|
||
|
case S_MONSTER15:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
if (value==S_MONSTER15_NS)
|
||
|
sprite_p->nofalling=1;
|
||
|
sprite_p->moveSpeed=7<<FRACBITS;
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=active;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->rotate=rt_eight;
|
||
|
sprite_p->basepic=CA_GetNamedNum("tboss");
|
||
|
DemandLoadMonster(sprite_p->basepic,56);
|
||
|
sprite_p->startpic=sprite_p->basepic;
|
||
|
sprite_p->movesize=26<<FRACBITS;
|
||
|
sprite_p->intelligence=10;
|
||
|
sprite_p->heat=8;
|
||
|
sprite_p->hitpoints=3000;
|
||
|
sprite_p->type=S_MONSTER15;
|
||
|
sprite_p->height=59<<FRACBITS;
|
||
|
sprite_p->score=15000;
|
||
|
sprite_p->bullet=S_MONSTERBULLET15;
|
||
|
mapsprites[mapspot]=1;
|
||
|
break;
|
||
|
|
||
|
|
||
|
/* bonus item *********************************************************/
|
||
|
case S_BONUSITEM:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->angle=angle;
|
||
|
sprite_p->active=false;
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("randitem");
|
||
|
sprite_p->type=S_BONUSITEM;
|
||
|
mapsprites[mapspot]=SM_BONUSITEM;
|
||
|
break;
|
||
|
|
||
|
|
||
|
/* items **************************************************************/
|
||
|
case S_ITEM2:
|
||
|
case S_ITEM3:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(20<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM8:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(39<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM10:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(33<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM11:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(73<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM12:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(35<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM13:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(65<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM20:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(91<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM23:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(121<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM30:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(40<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM31:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(39<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM32:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(36<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM33:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(51<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM34:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->zadj=RF_GetCeilingZ(x,y)-(49<<FRACBITS) - RF_GetFloorZ(x,y);
|
||
|
sprite_p->z=RF_GetFloorZ(x,y)+sprite_p->zadj;
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_ITEM1:
|
||
|
case S_ITEM4:
|
||
|
case S_ITEM5:
|
||
|
case S_ITEM6:
|
||
|
case S_ITEM7:
|
||
|
case S_ITEM9:
|
||
|
case S_ITEM14:
|
||
|
case S_ITEM15:
|
||
|
case S_ITEM16:
|
||
|
case S_ITEM17:
|
||
|
case S_ITEM18:
|
||
|
case S_ITEM19:
|
||
|
case S_ITEM21:
|
||
|
case S_ITEM22:
|
||
|
case S_ITEM24:
|
||
|
case S_ITEM25:
|
||
|
case S_ITEM26:
|
||
|
case S_ITEM27:
|
||
|
case S_ITEM28:
|
||
|
case S_ITEM29:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("miscobj") + (value - S_ITEM1);
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->height=48<<FRACBITS;
|
||
|
mapsprites[mapspot]=2;
|
||
|
break;
|
||
|
|
||
|
case S_WEAPON0:
|
||
|
case S_WEAPON1:
|
||
|
case S_WEAPON2:
|
||
|
case S_WEAPON3:
|
||
|
case S_WEAPON4:
|
||
|
case S_WEAPON5:
|
||
|
case S_WEAPON6:
|
||
|
case S_WEAPON7:
|
||
|
case S_WEAPON8:
|
||
|
case S_WEAPON9:
|
||
|
case S_WEAPON10:
|
||
|
case S_WEAPON11:
|
||
|
case S_WEAPON12:
|
||
|
case S_WEAPON13:
|
||
|
case S_WEAPON14:
|
||
|
case S_WEAPON15:
|
||
|
case S_WEAPON16:
|
||
|
case S_WEAPON17:
|
||
|
case S_WEAPON18:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("weapons")+value-S_WEAPON0;
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=value - S_WEAPON0 + SM_WEAPON0;
|
||
|
break;
|
||
|
|
||
|
case S_MEDPAK1:
|
||
|
case S_MEDPAK2:
|
||
|
case S_MEDPAK3:
|
||
|
case S_MEDPAK4:
|
||
|
case S_ENERGY:
|
||
|
case S_BALLISTIC:
|
||
|
case S_PLASMA:
|
||
|
case S_SHIELD1:
|
||
|
case S_SHIELD2:
|
||
|
case S_SHIELD3:
|
||
|
case S_SHIELD4:
|
||
|
case S_IPROXMINE:
|
||
|
case S_ITIMEMINE:
|
||
|
case S_IREVERSO:
|
||
|
case S_IGRENADE:
|
||
|
case S_IDECOY:
|
||
|
case S_IINSTAWALL:
|
||
|
case S_ICLONE:
|
||
|
case S_IHOLO:
|
||
|
case S_IINVIS:
|
||
|
case S_IJAMMER:
|
||
|
case S_ISTEALER:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("medtube1") + (value-S_MEDPAK1)*4;
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->animation=1 + (0<<1) + (4<<5) + (10<<9);
|
||
|
mapsprites[mapspot]=(value-S_MEDPAK1) + SM_MEDPAK1;
|
||
|
if (netmode && !gameloading)
|
||
|
NetSendSpawn(value,x,y,z,zadj,angle,angle2,active,spawnid);
|
||
|
break;
|
||
|
|
||
|
case S_AMMOBOX:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("ammobox");
|
||
|
sprite_p->type=S_AMMOBOX;
|
||
|
mapsprites[mapspot]=SM_AMMOBOX;
|
||
|
break;
|
||
|
case S_MEDBOX:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("autodoc");
|
||
|
sprite_p->type=S_MEDBOX;
|
||
|
mapsprites[mapspot]=SM_MEDBOX;
|
||
|
break;
|
||
|
case S_GOODIEBOX:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("toolchest");
|
||
|
sprite_p->type=S_GOODIEBOX;
|
||
|
mapsprites[mapspot]=SM_GOODIEBOX;
|
||
|
break;
|
||
|
|
||
|
|
||
|
case S_GENERATOR:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=slumps[value-S_START];
|
||
|
sprite_p->type=value;
|
||
|
sprite_p->animation=1 + (0<<1) + (4<<5) + (10<<9);
|
||
|
break;
|
||
|
|
||
|
case S_DEADMONSTER1:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("kman") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER1;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER2:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("kfem") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER2;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER3:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("kprob") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER3;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER4:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("kbot") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER4;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER5:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("kboss") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER5;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
case S_DEADMONSTER6:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("pboss") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER6;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER7:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("pst") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER7;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
case S_DEADMONSTER8:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("guard") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER8;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER9:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("trooper") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER9;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER10:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("prisoner") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER10;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER11:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("bigguard") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER11;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
case S_DEADMONSTER12:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("pss") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER12;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER13:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("wiz") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER13;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER14:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("veek") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER14;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_DEADMONSTER15:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("tboss") + 55;
|
||
|
DemandLoadMonster(sprite_p->basepic,1);
|
||
|
sprite_p->type=S_DEADMONSTER15;
|
||
|
sprite_p->scale=1;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
/* primary/secondary ****************************************************/
|
||
|
case S_PRIMARY1:
|
||
|
case S_PRIMARY2:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("primary") + primaries[(value-S_PRIMARY1)*2];
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=(value-S_PRIMARY1)+SM_PRIMARY1;
|
||
|
sprite_p->score=primaries[(value-S_PRIMARY1)*2 + 1];
|
||
|
break;
|
||
|
case S_SECONDARY1:
|
||
|
case S_SECONDARY2:
|
||
|
case S_SECONDARY3:
|
||
|
case S_SECONDARY4:
|
||
|
case S_SECONDARY5:
|
||
|
case S_SECONDARY6:
|
||
|
case S_SECONDARY7:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("secondary") + secondaries[(value-S_SECONDARY1)*2];
|
||
|
sprite_p->type=value;
|
||
|
mapsprites[mapspot]=(value-S_SECONDARY1)+SM_SECONDARY1;
|
||
|
sprite_p->score=secondaries[(value-S_SECONDARY1)*2 + 1];
|
||
|
break;
|
||
|
|
||
|
/* players **************************************************************/
|
||
|
case S_PLAYER: // player
|
||
|
startlocations[0][0]=x1;
|
||
|
startlocations[0][1]=y1;
|
||
|
if (player.x==-1 && ((netmode && greedcom->consoleplayer==0) || !netmode))
|
||
|
{
|
||
|
player.x=x;
|
||
|
player.y=y;
|
||
|
player.z=RF_GetFloorZ(player.x,player.y)+player.height;
|
||
|
player.mapspot=mapspot;
|
||
|
player.angle=NORTH;
|
||
|
}
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_NETPLAYER2:
|
||
|
case S_NETPLAYER3:
|
||
|
case S_NETPLAYER4:
|
||
|
case S_NETPLAYER5:
|
||
|
case S_NETPLAYER6:
|
||
|
case S_NETPLAYER7:
|
||
|
case S_NETPLAYER8:
|
||
|
if (floorpic[mapspot]==0 || ceilingpic[mapspot]==0) MS_Error("Invalid start %i at %i,%i",value,x1,y1);
|
||
|
startlocations[value-1][0]=x1;
|
||
|
startlocations[value-1][1]=y1;
|
||
|
if (netmode && greedcom->consoleplayer==value-1 && player.x==-1)
|
||
|
{
|
||
|
player.x=x;
|
||
|
player.y=y;
|
||
|
player.z=RF_GetFloorZ(player.x,player.y)+player.height;
|
||
|
player.mapspot=mapspot;
|
||
|
player.angle=NORTH;
|
||
|
}
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
/* doors *************************************************************/
|
||
|
case S_VDOOR1: // vertical door 1
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->pic=CA_GetNamedNum("door_1") - walllump;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR1: // horizontal door 1
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_1") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR2: // vertical door 2
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
// door_p->transparent=true;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_2") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR2: // horizontal door 2
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
// door_p->transparent=true;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_2") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR3: // vertical door 3
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_3") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR3: // horizontal door 3
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_3") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR4: // vertical door 4
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_4") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR4: // horizontal door 4
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_4") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR5: // vertical door 5
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->pic=CA_GetNamedNum("door_5") - walllump;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR5: // horizontal door 5
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_5") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR6: // vertical door 6
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->pic=CA_GetNamedNum("door_6") - walllump;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR6: // horizontal door 6
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_6") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_VDOOR7: // vertical door 7
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-MAPCOLS]&FL_DOOR) door_p->orientation=dr_vertical2;
|
||
|
else door_p->orientation=dr_vertical;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->pic=CA_GetNamedNum("door_7") - walllump;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_HDOOR7: // horizontal door 7
|
||
|
door_p=RF_GetDoor(x1,y1);
|
||
|
if (mapflags[mapspot-1]&FL_DOOR) door_p->orientation=dr_horizontal2;
|
||
|
else door_p->orientation=dr_horizontal;
|
||
|
door_p->doorBumpable=true;
|
||
|
door_p->doorSize=64;
|
||
|
door_p->position=door_p->doorSize*FRACUNIT;
|
||
|
door_p->doorTimer=player.timecount;
|
||
|
door_p->pic=CA_GetNamedNum("door_7") - walllump;
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
/* elevators ***********************************************************/
|
||
|
case S_ELEVATOR: // normal elevator
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->elevUp=true;
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
mapsprites[mapspot]=0;
|
||
|
maxheight=floorheight[mapspot];
|
||
|
for(i=y1-1;i<=y1+1;i++)
|
||
|
for(j=x1-1;j<=x1+1;j++)
|
||
|
{
|
||
|
mapspot=i*MAPCOLS+j;
|
||
|
if (floorheight[mapspot]>maxheight)
|
||
|
maxheight=floorheight[mapspot];
|
||
|
}
|
||
|
elevator_p->ceiling=maxheight;
|
||
|
elevator_p->position=maxheight;
|
||
|
elevator_p->type=E_NORMAL;
|
||
|
elevator_p->elevTimer=player.timecount;
|
||
|
elevator_p->speed=8;
|
||
|
floorheight[elevator_p->mapspot]=maxheight;
|
||
|
break;
|
||
|
case S_PAUSEDELEVATOR: // these don't move yet
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
mapsprites[mapspot]=0;
|
||
|
maxheight=floorheight[mapspot];
|
||
|
for(i=y1-1;i<=y1+1;i++)
|
||
|
for(j=x1-1;j<=x1+1;j++)
|
||
|
{
|
||
|
mapspot=i*MAPCOLS+j;
|
||
|
if (floorheight[mapspot]>maxheight)
|
||
|
maxheight=floorheight[mapspot];
|
||
|
}
|
||
|
elevator_p->ceiling=maxheight;
|
||
|
elevator_p->position=maxheight;
|
||
|
elevator_p->type=E_NORMAL;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
elevator_p->speed=8;
|
||
|
floorheight[elevator_p->mapspot]=maxheight;
|
||
|
break;
|
||
|
case S_SWAPSWITCH:
|
||
|
mapsprites[mapspot]=SM_SWAPSWITCH;
|
||
|
break;
|
||
|
case S_ELEVATORLOW:
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->position=floorheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
mapsprites[mapspot]=0;
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
elevator_p->type=E_SWAP;
|
||
|
elevator_p->speed=8;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
break;
|
||
|
case S_ELEVATORHIGH:
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
mapsprites[mapspot]=0;
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
floorheight[mapspot]=elevator_p->position;
|
||
|
elevator_p->type=E_SWAP;
|
||
|
elevator_p->speed=8;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
break;
|
||
|
case S_ELEVATOR3M: // 3 min elevator
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->elevDown=true;
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
floorheight[mapspot]=ceilingheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->type=E_TIMED;
|
||
|
elevator_p->elevTimer=12600;
|
||
|
elevator_p->speed=8;
|
||
|
mapsprites[mapspot]=SM_ELEVATOR;
|
||
|
break;
|
||
|
case S_ELEVATOR6M: // 6 min elevator
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->elevDown=true;
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
floorheight[mapspot]=ceilingheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->type=E_TIMED;
|
||
|
elevator_p->elevTimer=25200;
|
||
|
elevator_p->speed=8;
|
||
|
mapsprites[mapspot]=SM_ELEVATOR;
|
||
|
break;
|
||
|
case S_ELEVATOR15M: // 15 min elevator
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->elevDown=true;
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
floorheight[mapspot]=ceilingheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->type=E_TIMED;
|
||
|
elevator_p->elevTimer=63000;
|
||
|
elevator_p->speed=8;
|
||
|
mapsprites[mapspot]=SM_ELEVATOR;
|
||
|
break;
|
||
|
|
||
|
case S_TRIGGER1: // trigger 1
|
||
|
mapsprites[mapspot]=SM_SWITCHDOWN;
|
||
|
break;
|
||
|
case S_TRIGGERD1: // trigger door 1
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->type=E_SWITCHDOWN;
|
||
|
elevator_p->speed=8;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
mapsprites[mapspot]=SM_ELEVATOR;
|
||
|
floorheight[mapspot]=elevator_p->position;
|
||
|
break;
|
||
|
case S_TRIGGER2: // trigger 2
|
||
|
mapsprites[mapspot]=SM_SWITCHDOWN2;
|
||
|
break;
|
||
|
case S_TRIGGERD2: // trigger door 2
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->type=E_SWITCHDOWN2;
|
||
|
elevator_p->speed=8;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
mapsprites[mapspot]=SM_ELEVATOR;
|
||
|
floorheight[mapspot]=elevator_p->position;
|
||
|
break;
|
||
|
case S_STRIGGER:
|
||
|
mapsprites[mapspot]=SM_STRIGGER;
|
||
|
break;
|
||
|
case S_SDOOR:
|
||
|
elevator_p=RF_GetElevator();
|
||
|
elevator_p->floor=floorheight[mapspot];
|
||
|
elevator_p->mapspot=mapspot;
|
||
|
elevator_p->ceiling=ceilingheight[mapspot];
|
||
|
elevator_p->position=ceilingheight[mapspot];
|
||
|
elevator_p->type=E_SECRET;
|
||
|
elevator_p->elevTimer=0x70000000;
|
||
|
elevator_p->speed=8;
|
||
|
mapsprites[mapspot]=0;
|
||
|
floorheight[mapspot]=ceilingheight[mapspot];
|
||
|
break;
|
||
|
|
||
|
/* warps ***************************************************************/
|
||
|
case S_WARP1: // warp 1
|
||
|
mapsprites[mapspot]=SM_WARP1; // mapsprites>128 => ignore (clear movement)
|
||
|
break;
|
||
|
case S_WARP2: // warp 2
|
||
|
mapsprites[mapspot]=SM_WARP2;
|
||
|
break;
|
||
|
case S_WARP3: // warp 3
|
||
|
mapsprites[mapspot]=SM_WARP3;
|
||
|
break;
|
||
|
|
||
|
/* misc ****************************************************************/
|
||
|
|
||
|
case S_SOLID:
|
||
|
break;
|
||
|
|
||
|
/* generators *********************************************************/
|
||
|
|
||
|
case S_GENERATOR1:
|
||
|
case S_GENERATOR2:
|
||
|
sa=RF_GetSpawnArea();
|
||
|
sa->mapx=(x1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapy=(y1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapspot=mapspot;
|
||
|
sa->time=player.timecount + ((MS_RndT()&15)<<6);
|
||
|
sa->type=value-S_GENERATOR1;
|
||
|
SpawnSprite(S_GENERATOR,(fixed_t)(x1*MAPSIZE+32)<<FRACBITS,(fixed_t)(y1*MAPCOLS+32)<<FRACBITS,0,0,MS_RndT()*4,0,false,0);
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
case S_SPAWN1:
|
||
|
case S_SPAWN2:
|
||
|
case S_SPAWN3:
|
||
|
case S_SPAWN4:
|
||
|
case S_SPAWN5:
|
||
|
case S_SPAWN6:
|
||
|
case S_SPAWN7:
|
||
|
case S_SPAWN8:
|
||
|
case S_SPAWN9:
|
||
|
case S_SPAWN10:
|
||
|
case S_SPAWN11:
|
||
|
case S_SPAWN12:
|
||
|
case S_SPAWN13:
|
||
|
case S_SPAWN14:
|
||
|
case S_SPAWN15:
|
||
|
if (!nospawn)
|
||
|
{
|
||
|
sa=RF_GetSpawnArea();
|
||
|
sa->mapx=(x1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapy=(y1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapspot=mapspot;
|
||
|
sa->time=player.timecount + ((MS_RndT()&15)<<6);
|
||
|
sa->type=value - S_SPAWN1 + 10;
|
||
|
}
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
case S_SPAWN8_NS:
|
||
|
case S_SPAWN9_NS:
|
||
|
if (!nospawn)
|
||
|
{
|
||
|
sa=RF_GetSpawnArea();
|
||
|
sa->mapx=(x1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapy=(y1<<FRACTILESHIFT) + (32<<FRACBITS);
|
||
|
sa->mapspot=mapspot;
|
||
|
sa->time=player.timecount + ((MS_RndT()&15)<<6);
|
||
|
sa->type=value - S_SPAWN8_NS + 100;
|
||
|
}
|
||
|
mapsprites[mapspot]=0;
|
||
|
break;
|
||
|
|
||
|
|
||
|
case S_EXIT:
|
||
|
sprite_p=RF_GetSprite();
|
||
|
sprite_p->x=x;
|
||
|
sprite_p->y=y;
|
||
|
sprite_p->z=RF_GetFloorZ(x,y);
|
||
|
sprite_p->basepic=CA_GetNamedNum("exitwarp");
|
||
|
sprite_p->type=S_EXIT;
|
||
|
sprite_p->animation=1 + (0<<1) + (8<<5) + (5<<9);
|
||
|
mapsprites[mapspot]=SM_EXIT;
|
||
|
exitexists=true;
|
||
|
exitx=x1;
|
||
|
exity=y1;
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
if (midgetmode && sprite_p)
|
||
|
sprite_p->scale++;
|
||
|
return sprite_p;
|
||
|
}
|