mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-29 04:50:42 +00:00
- moveexplosions
This commit is contained in:
parent
242f78de13
commit
4c99eae4f6
7 changed files with 983 additions and 1197 deletions
|
@ -265,7 +265,7 @@ void clearcamera(player_struct* ps)
|
|||
updatesector(ps->posx, ps->posy, &ps->cursectnum);
|
||||
setpal(ps);
|
||||
|
||||
int k = headspritestat[1];
|
||||
int k = headspritestat[STAT_ACTOR];
|
||||
while (k >= 0)
|
||||
{
|
||||
if (sprite[k].picnum == CAMERA1)
|
||||
|
@ -2070,4 +2070,546 @@ void camera(int i)
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// taken out of moveexplosion
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void forcesphere(int i)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
int l = s->xrepeat;
|
||||
if (t[1] > 0)
|
||||
{
|
||||
t[1]--;
|
||||
if (t[1] == 0)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (hittype[s->owner].temp_data[1] == 0)
|
||||
{
|
||||
if (t[0] < 64)
|
||||
{
|
||||
t[0]++;
|
||||
l += 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (t[0] > 64)
|
||||
{
|
||||
t[0]--;
|
||||
l -= 3;
|
||||
}
|
||||
|
||||
s->x = sprite[s->owner].x;
|
||||
s->y = sprite[s->owner].y;
|
||||
s->z = sprite[s->owner].z;
|
||||
s->ang += hittype[s->owner].temp_data[0];
|
||||
|
||||
if (l > 64) l = 64;
|
||||
else if (l < 1) l = 1;
|
||||
|
||||
s->xrepeat = l;
|
||||
s->yrepeat = l;
|
||||
s->shade = (l >> 1) - 48;
|
||||
|
||||
for (int j = t[0]; j > 0; j--)
|
||||
ssp(i, CLIPMASK0);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void watersplash2(int i)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
t[0]++;
|
||||
if (t[0] == 1)
|
||||
{
|
||||
if (sector[sect].lotag != 1 && sector[sect].lotag != 2)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
if (!S_CheckSoundPlaying(ITEM_SPLASH))
|
||||
spritesound(ITEM_SPLASH, i);
|
||||
}
|
||||
if (t[0] == 3)
|
||||
{
|
||||
t[0] = 0;
|
||||
t[1]++;
|
||||
}
|
||||
if (t[1] == 5)
|
||||
deletesprite(i);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void frameeffect1(int i)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
if (s->owner >= 0)
|
||||
{
|
||||
t[0]++;
|
||||
|
||||
if (t[0] > 7)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
else if (t[0] > 4)
|
||||
s->cstat |= 512 + 2;
|
||||
else if (t[0] > 2)
|
||||
s->cstat |= 2;
|
||||
s->xoffset = sprite[s->owner].xoffset;
|
||||
s->yoffset = sprite[s->owner].yoffset;
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool money(int i, int BLOODPOOL)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
s->xvel = (krand() & 7) + (sintable[hittype[i].temp_data[0] & 2047] >> 9);
|
||||
hittype[i].temp_data[0] += (krand() & 63);
|
||||
if ((hittype[i].temp_data[0] & 2047) > 512 && (hittype[i].temp_data[0] & 2047) < 1596)
|
||||
{
|
||||
if (sector[sect].lotag == 2)
|
||||
{
|
||||
if (s->zvel < 64)
|
||||
s->zvel += (gc >> 5) + (krand() & 7);
|
||||
}
|
||||
else
|
||||
if (s->zvel < 144)
|
||||
s->zvel += (gc >> 5) + (krand() & 7);
|
||||
}
|
||||
|
||||
ssp(i, CLIPMASK0);
|
||||
|
||||
if ((krand() & 3) == 0)
|
||||
setsprite(i, s->x, s->y, s->z);
|
||||
|
||||
if (s->sectnum == -1)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
int l = getflorzofslope(s->sectnum, s->x, s->y);
|
||||
|
||||
if (s->z > l)
|
||||
{
|
||||
s->z = l;
|
||||
|
||||
insertspriteq(i);
|
||||
sprite[i].picnum++;
|
||||
|
||||
int j = headspritestat[STAT_MISC];
|
||||
while (j >= 0)
|
||||
{
|
||||
if (sprite[j].picnum == BLOODPOOL)
|
||||
if (ldist(s, &sprite[j]) < 348)
|
||||
{
|
||||
s->pal = 2;
|
||||
break;
|
||||
}
|
||||
j = nextspritestat[j];
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool jibs(int i, int JIBS6, bool timeout, bool callsetsprite, bool floorcheck, bool zcheck1, bool zcheck2)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
if (s->xvel > 0) s->xvel--;
|
||||
else s->xvel = 0;
|
||||
|
||||
if (timeout)
|
||||
{
|
||||
if (t[5] < 30 * 10)
|
||||
t[5]++;
|
||||
else
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (s->zvel > 1024 && s->zvel < 1280)
|
||||
{
|
||||
setsprite(i, s->x, s->y, s->z);
|
||||
sect = s->sectnum;
|
||||
}
|
||||
|
||||
if (callsetsprite) setsprite(i, s->x, s->y, s->z);
|
||||
|
||||
int l = getflorzofslope(sect, s->x, s->y);
|
||||
int x = getceilzofslope(sect, s->x, s->y);
|
||||
if (x == l || sect < 0 || sect >= MAXSECTORS)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (s->z < l - (2 << 8))
|
||||
{
|
||||
if (t[1] < 2) t[1]++;
|
||||
else if (sector[sect].lotag != 2)
|
||||
{
|
||||
t[1] = 0;
|
||||
if (zcheck1)
|
||||
{
|
||||
if (t[0] > 6) t[0] = 0;
|
||||
else t[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (t[0] > 2)
|
||||
t[0] = 0;
|
||||
else t[0]++;
|
||||
}
|
||||
}
|
||||
|
||||
if (s->zvel < 6144)
|
||||
{
|
||||
if (sector[sect].lotag == 2)
|
||||
{
|
||||
if (s->zvel < 1024)
|
||||
s->zvel += 48;
|
||||
else s->zvel = 1024;
|
||||
}
|
||||
else s->zvel += gc - 50;
|
||||
}
|
||||
|
||||
s->x += (s->xvel * sintable[(s->ang + 512) & 2047]) >> 14;
|
||||
s->y += (s->xvel * sintable[s->ang & 2047]) >> 14;
|
||||
s->z += s->zvel;
|
||||
|
||||
if (floorcheck && s->z >= sector[s->sectnum].floorz)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (zcheck2)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
if (t[2] == 0)
|
||||
{
|
||||
if (s->sectnum == -1)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
if ((sector[s->sectnum].floorstat & 2))
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
t[2]++;
|
||||
}
|
||||
l = getflorzofslope(s->sectnum, s->x, s->y);
|
||||
|
||||
s->z = l - (2 << 8);
|
||||
s->xvel = 0;
|
||||
|
||||
if (s->picnum == JIBS6)
|
||||
{
|
||||
t[1]++;
|
||||
if ((t[1] & 3) == 0 && t[0] < 7)
|
||||
t[0]++;
|
||||
if (t[1] > 20)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else { s->picnum = JIBS6; t[0] = 0; t[1] = 0; }
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool bloodpool(int i, bool puke, int TIRE)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
if (t[0] == 0)
|
||||
{
|
||||
t[0] = 1;
|
||||
if (sector[sect].floorstat & 2)
|
||||
{
|
||||
deletesprite(i);
|
||||
return false;
|
||||
}
|
||||
else insertspriteq(i);
|
||||
}
|
||||
|
||||
makeitfall(i);
|
||||
|
||||
int x;
|
||||
int p = findplayer(s, &x);
|
||||
|
||||
s->z = hittype[i].floorz - (FOURSLEIGHT);
|
||||
|
||||
if (t[2] < 32)
|
||||
{
|
||||
t[2]++;
|
||||
if (hittype[i].picnum == TIRE)
|
||||
{
|
||||
if (s->xrepeat < 64 && s->yrepeat < 64)
|
||||
{
|
||||
s->xrepeat += krand() & 3;
|
||||
s->yrepeat += krand() & 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s->xrepeat < 32 && s->yrepeat < 32)
|
||||
{
|
||||
s->xrepeat += krand() & 3;
|
||||
s->yrepeat += krand() & 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (x < 844 && s->xrepeat > 6 && s->yrepeat > 6)
|
||||
{
|
||||
if (s->pal == 0 && (krand() & 255) < 16 && !puke)
|
||||
{
|
||||
if (ps[p].boot_amount > 0)
|
||||
ps[p].boot_amount--;
|
||||
else
|
||||
{
|
||||
if (!S_CheckSoundPlaying(DUKE_LONGTERM_PAIN))
|
||||
spritesound(DUKE_LONGTERM_PAIN, ps[p].i);
|
||||
sprite[ps[p].i].extra--;
|
||||
SetPlayerPal(&ps[p], PalEntry(32, 16, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
if (t[1] == 1) return false;
|
||||
t[1] = 1;
|
||||
|
||||
if (hittype[i].picnum == TIRE)
|
||||
ps[p].footprintcount = 10;
|
||||
else ps[p].footprintcount = 3;
|
||||
|
||||
ps[p].footprintpal = s->pal;
|
||||
ps[p].footprintshade = s->shade;
|
||||
|
||||
if (t[2] == 32)
|
||||
{
|
||||
s->xrepeat -= 6;
|
||||
s->yrepeat -= 6;
|
||||
}
|
||||
}
|
||||
else t[1] = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void shell(int i, bool morecheck)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
ssp(i, CLIPMASK0);
|
||||
|
||||
if (sect < 0 || morecheck)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sector[sect].lotag == 2)
|
||||
{
|
||||
t[1]++;
|
||||
if (t[1] > 8)
|
||||
{
|
||||
t[1] = 0;
|
||||
t[0]++;
|
||||
t[0] &= 3;
|
||||
}
|
||||
if (s->zvel < 128) s->zvel += (gc / 13); // 8
|
||||
else s->zvel -= 64;
|
||||
if (s->xvel > 0)
|
||||
s->xvel -= 4;
|
||||
else s->xvel = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
t[1]++;
|
||||
if (t[1] > 3)
|
||||
{
|
||||
t[1] = 0;
|
||||
t[0]++;
|
||||
t[0] &= 3;
|
||||
}
|
||||
if (s->zvel < 512) s->zvel += (gc / 3); // 52;
|
||||
if (s->xvel > 0)
|
||||
s->xvel--;
|
||||
else
|
||||
{
|
||||
deletesprite(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void glasspieces(int i)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
makeitfall(i);
|
||||
|
||||
if (s->zvel > 4096) s->zvel = 4096;
|
||||
if (sect < 0)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
|
||||
if (s->z == hittype[i].floorz - (FOURSLEIGHT) && t[0] < 3)
|
||||
{
|
||||
s->zvel = -((3 - t[0]) << 8) - (krand() & 511);
|
||||
if (sector[sect].lotag == 2)
|
||||
s->zvel >>= 1;
|
||||
s->xrepeat >>= 1;
|
||||
s->yrepeat >>= 1;
|
||||
if (rnd(96))
|
||||
setsprite(i, s->x, s->y, s->z);
|
||||
t[0]++;//Number of bounces
|
||||
}
|
||||
else if (t[0] == 3)
|
||||
{
|
||||
deletesprite(i);
|
||||
return;
|
||||
}
|
||||
|
||||
if (s->xvel > 0)
|
||||
{
|
||||
s->xvel -= 2;
|
||||
s->cstat = ((s->xvel & 3) << 2);
|
||||
}
|
||||
else s->xvel = 0;
|
||||
|
||||
ssp(i, CLIPMASK0);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void scrap(int i, int SCRAP1, int SCRAP6)
|
||||
{
|
||||
spritetype* s = &sprite[i];
|
||||
int sect = s->sectnum;
|
||||
auto t = &hittype[i].temp_data[0];
|
||||
|
||||
if (s->xvel > 0)
|
||||
s->xvel--;
|
||||
else s->xvel = 0;
|
||||
|
||||
if (s->zvel > 1024 && s->zvel < 1280)
|
||||
{
|
||||
setsprite(i, s->x, s->y, s->z);
|
||||
sect = s->sectnum;
|
||||
}
|
||||
|
||||
if (s->z < sector[sect].floorz - (2 << 8))
|
||||
{
|
||||
if (t[1] < 1) t[1]++;
|
||||
else
|
||||
{
|
||||
t[1] = 0;
|
||||
|
||||
if (s->picnum < SCRAP6 + 8)
|
||||
{
|
||||
if (t[0] > 6)
|
||||
t[0] = 0;
|
||||
else t[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (t[0] > 2)
|
||||
t[0] = 0;
|
||||
else t[0]++;
|
||||
}
|
||||
}
|
||||
if (s->zvel < 4096) s->zvel += gc - 50;
|
||||
s->x += (s->xvel * sintable[(s->ang + 512) & 2047]) >> 14;
|
||||
s->y += (s->xvel * sintable[s->ang & 2047]) >> 14;
|
||||
s->z += s->zvel;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (s->picnum == SCRAP1 && s->yvel > 0)
|
||||
{
|
||||
int j = spawn(i, s->yvel);
|
||||
setsprite(j, s->x, s->y, s->z);
|
||||
getglobalz(j);
|
||||
sprite[j].hitag = sprite[j].lotag = 0;
|
||||
}
|
||||
deletesprite(i);
|
||||
}
|
||||
}
|
||||
|
||||
END_DUKE_NS
|
||||
|
|
|
@ -336,6 +336,7 @@ ACTOR_INLINE int A_CheckEnemyTile(int const tileNum)
|
|||
}
|
||||
|
||||
int ssp(short i, unsigned int cliptype); //The set sprite function
|
||||
void insertspriteq(int i);
|
||||
|
||||
ACTOR_INLINE int A_SetSprite(int const spriteNum, uint32_t cliptype)
|
||||
{
|
||||
|
@ -396,6 +397,15 @@ void recon(int i, int explosion, int firelaser, int attacksnd, int painsnd, int
|
|||
void ooz(int i);
|
||||
void reactor(int i, int REACTOR, int REACTOR2, int REACTORBURNT, int REACTOR2BURNT);
|
||||
void camera(int i);
|
||||
void forcesphere(int i);
|
||||
void watersplash2(int i);
|
||||
void frameeffect1(int i);
|
||||
bool money(int i, int BLOODPOOL);
|
||||
bool jibs(int i, int JIBS6, bool timeout, bool callsetsprite, bool floorcheck, bool zcheck1, bool zcheck2);
|
||||
bool bloodpool(int i, bool puke, int TIRE);
|
||||
void shell(int i, bool morecheck);
|
||||
void glasspieces(int i);
|
||||
void scrap(int i, int SCRAP1, int SCRAP6);
|
||||
|
||||
void respawn_rrra(int i, int j);
|
||||
|
||||
|
|
|
@ -3154,5 +3154,191 @@ void moveactors_d(void)
|
|||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void moveexplosions_d(void) // STATNUM 5
|
||||
{
|
||||
int nexti, sect, p;
|
||||
int x, * t;
|
||||
spritetype* s;
|
||||
|
||||
|
||||
for (int i = headspritestat[STAT_MISC]; i >= 0; i = nexti)
|
||||
{
|
||||
nexti = nextspritestat[i];
|
||||
|
||||
t = &hittype[i].temp_data[0];
|
||||
s = &sprite[i];
|
||||
sect = s->sectnum;
|
||||
|
||||
if (sect < 0 || s->xrepeat == 0)
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
hittype[i].bposx = s->x;
|
||||
hittype[i].bposy = s->y;
|
||||
hittype[i].bposz = s->z;
|
||||
|
||||
switch (s->picnum)
|
||||
{
|
||||
case NEON1:
|
||||
case NEON2:
|
||||
case NEON3:
|
||||
case NEON4:
|
||||
case NEON5:
|
||||
case NEON6:
|
||||
|
||||
if ((global_random / (s->lotag + 1) & 31) > 4) s->shade = -127;
|
||||
else s->shade = 127;
|
||||
continue;
|
||||
|
||||
case BLOODSPLAT1:
|
||||
case BLOODSPLAT2:
|
||||
case BLOODSPLAT3:
|
||||
case BLOODSPLAT4:
|
||||
|
||||
if (t[0] == 7 * 26) continue;
|
||||
s->z += 16 + (krand() & 15);
|
||||
t[0]++;
|
||||
if ((t[0] % 9) == 0) s->yrepeat++;
|
||||
continue;
|
||||
|
||||
case NUKEBUTTON:
|
||||
case NUKEBUTTON + 1:
|
||||
case NUKEBUTTON + 2:
|
||||
case NUKEBUTTON + 3:
|
||||
|
||||
if (t[0])
|
||||
{
|
||||
t[0]++;
|
||||
if (t[0] == 8) s->picnum = NUKEBUTTON + 1;
|
||||
else if (t[0] == 16)
|
||||
{
|
||||
s->picnum = NUKEBUTTON + 2;
|
||||
ps[sprite[s->owner].yvel].fist_incs = 1;
|
||||
}
|
||||
if (ps[sprite[s->owner].yvel].fist_incs == 26)
|
||||
s->picnum = NUKEBUTTON + 3;
|
||||
}
|
||||
continue;
|
||||
|
||||
case FORCESPHERE:
|
||||
forcesphere(i);
|
||||
continue;
|
||||
case WATERSPLASH2:
|
||||
watersplash2(i);
|
||||
continue;
|
||||
|
||||
case FRAMEEFFECT1:
|
||||
frameeffect1(i);
|
||||
continue;
|
||||
case INNERJAW:
|
||||
case INNERJAW + 1:
|
||||
|
||||
p = findplayer(s, &x);
|
||||
if (x < 512)
|
||||
{
|
||||
SetPlayerPal(&ps[p], PalEntry(32, 32, 0, 0));
|
||||
sprite[ps[p].i].extra -= 4;
|
||||
}
|
||||
|
||||
case FIRELASER:
|
||||
if (s->extra != 999)
|
||||
s->extra = 999;
|
||||
else
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case TONGUE:
|
||||
deletesprite(i);
|
||||
continue;
|
||||
case MONEY + 1:
|
||||
case MAIL + 1:
|
||||
case PAPER + 1:
|
||||
hittype[i].floorz = s->z = getflorzofslope(s->sectnum, s->x, s->y);
|
||||
break;
|
||||
case MONEY:
|
||||
case MAIL:
|
||||
case PAPER:
|
||||
money(i, BLOODPOOL);
|
||||
|
||||
break;
|
||||
|
||||
case JIBS1:
|
||||
case JIBS2:
|
||||
case JIBS3:
|
||||
case JIBS4:
|
||||
case JIBS5:
|
||||
case JIBS6:
|
||||
case HEADJIB1:
|
||||
case ARMJIB1:
|
||||
case LEGJIB1:
|
||||
case LIZMANHEAD1:
|
||||
case LIZMANARM1:
|
||||
case LIZMANLEG1:
|
||||
case DUKETORSO:
|
||||
case DUKEGUN:
|
||||
case DUKELEG:
|
||||
jibs(i, JIBS6, true, false, false, s->picnum == DUKELEG || s->picnum == DUKETORSO || s->picnum == DUKEGUN, false);
|
||||
|
||||
continue;
|
||||
case BLOODPOOL:
|
||||
case PUKE:
|
||||
bloodpool(i, s->picnum == PUKE, TIRE);
|
||||
|
||||
continue;
|
||||
|
||||
case LAVAPOOL:
|
||||
case ONFIRE:
|
||||
case BURNEDCORPSE:
|
||||
case LAVAPOOLBUBBLE:
|
||||
case WHISPYSMOKE:
|
||||
if (!isWorldTour())
|
||||
continue;
|
||||
|
||||
case BURNING:
|
||||
case BURNING2:
|
||||
case FECES:
|
||||
case WATERBUBBLE:
|
||||
case SMALLSMOKE:
|
||||
case EXPLOSION2:
|
||||
case SHRINKEREXPLOSION:
|
||||
case EXPLOSION2BOT:
|
||||
case BLOOD:
|
||||
case LASERSITE:
|
||||
case FORCERIPPLE:
|
||||
case TRANSPORTERSTAR:
|
||||
case TRANSPORTERBEAM:
|
||||
p = findplayer(s, &x);
|
||||
execute(i, p, x);
|
||||
continue;
|
||||
|
||||
case SHELL:
|
||||
case SHOTGUNSHELL:
|
||||
shell(i, (sector[sect].floorz + (24 << 8)) < s->z);
|
||||
continue;
|
||||
|
||||
case GLASSPIECES:
|
||||
case GLASSPIECES + 1:
|
||||
case GLASSPIECES + 2:
|
||||
glasspieces(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s->picnum >= SCRAP6 && s->picnum <= SCRAP5 + 3)
|
||||
{
|
||||
scrap(i, SCRAP1, SCRAP6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
END_DUKE_NS
|
||||
|
|
|
@ -2969,6 +2969,7 @@ static int henstand(int i)
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
@ -3253,5 +3254,244 @@ void moveactors_r(void)
|
|||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void moveexplosions_r(void) // STATNUM 5
|
||||
{
|
||||
int nexti, sect, p;
|
||||
int x, * t;
|
||||
spritetype* s;
|
||||
|
||||
|
||||
for (int i = headspritestat[STAT_MISC]; i >= 0; i = nexti)
|
||||
{
|
||||
nexti = nextspritestat[i];
|
||||
|
||||
t = &hittype[i].temp_data[0];
|
||||
s = &sprite[i];
|
||||
sect = s->sectnum;
|
||||
|
||||
if (sect < 0 || s->xrepeat == 0)
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
hittype[i].bposx = s->x;
|
||||
hittype[i].bposy = s->y;
|
||||
hittype[i].bposz = s->z;
|
||||
|
||||
switch (s->picnum)
|
||||
{
|
||||
case SHOTGUNSPRITE:
|
||||
if (sector[s->sectnum].lotag == 800)
|
||||
if (s->z >= sector[s->sectnum].floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case NEON1:
|
||||
case NEON2:
|
||||
case NEON3:
|
||||
case NEON4:
|
||||
case NEON5:
|
||||
case NEON6:
|
||||
|
||||
if ((global_random / (s->lotag + 1) & 31) > 4) s->shade = -127;
|
||||
else s->shade = 127;
|
||||
continue;
|
||||
|
||||
case BLOODSPLAT1:
|
||||
case BLOODSPLAT2:
|
||||
case BLOODSPLAT3:
|
||||
case BLOODSPLAT4:
|
||||
|
||||
if (t[0] == 7 * 26) continue;
|
||||
s->z += 16 + (krand() & 15);
|
||||
t[0]++;
|
||||
if ((t[0] % 9) == 0) s->yrepeat++;
|
||||
continue;
|
||||
|
||||
|
||||
case FORCESPHERE:
|
||||
forcesphere(i);
|
||||
continue;
|
||||
|
||||
case MUD:
|
||||
|
||||
t[0]++;
|
||||
if (t[0] == 1)
|
||||
{
|
||||
if (sector[sect].floorpicnum != 3073)
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
if (S_CheckSoundPlaying(22))
|
||||
spritesound(22, i);
|
||||
}
|
||||
if (t[0] == 3)
|
||||
{
|
||||
t[0] = 0;
|
||||
t[1]++;
|
||||
}
|
||||
if (t[1] == 5)
|
||||
deletesprite(i);
|
||||
continue;
|
||||
|
||||
case WATERSPLASH2:
|
||||
watersplash2(i);
|
||||
continue;
|
||||
|
||||
case FRAMEEFFECT1:
|
||||
frameeffect1(i);
|
||||
continue;
|
||||
case INNERJAW:
|
||||
case INNERJAW + 1:
|
||||
|
||||
p = findplayer(s, &x);
|
||||
if (x < 512)
|
||||
{
|
||||
SetPlayerPal(&ps[p], PalEntry(32, 32, 0, 0));
|
||||
sprite[ps[p].i].extra -= 4;
|
||||
}
|
||||
|
||||
case COOLEXPLOSION1:
|
||||
case FIRELASER:
|
||||
case OWHIP:
|
||||
case UWHIP:
|
||||
if (s->extra != 999)
|
||||
s->extra = 999;
|
||||
else
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case TONGUE:
|
||||
deletesprite(i);
|
||||
continue;
|
||||
case MONEY + 1:
|
||||
hittype[i].floorz = s->z = getflorzofslope(s->sectnum, s->x, s->y);
|
||||
if (sector[s->sectnum].lotag == 800)
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case MONEY:
|
||||
if (!money(i, BLOODPOOL)) continue;
|
||||
|
||||
if (sector[s->sectnum].lotag == 800)
|
||||
if (s->z >= sector[s->sectnum].floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RRTILE2460:
|
||||
case RRTILE2465:
|
||||
case BIKEJIBA:
|
||||
case BIKEJIBB:
|
||||
case BIKEJIBC:
|
||||
case BIKERJIBA:
|
||||
case BIKERJIBB:
|
||||
case BIKERJIBC:
|
||||
case BIKERJIBD:
|
||||
case CHEERJIBA:
|
||||
case CHEERJIBB:
|
||||
case CHEERJIBC:
|
||||
case CHEERJIBD:
|
||||
case FBOATJIBA:
|
||||
case FBOATJIBB:
|
||||
case RABBITJIBA:
|
||||
case RABBITJIBB:
|
||||
case RABBITJIBC:
|
||||
case MAMAJIBA:
|
||||
case MAMAJIBB:
|
||||
if (!isRRRA()) break;
|
||||
|
||||
case BILLYJIBA:
|
||||
case BILLYJIBB:
|
||||
case HULKJIBA:
|
||||
case HULKJIBB:
|
||||
case HULKJIBC:
|
||||
case MINJIBA:
|
||||
case MINJIBB:
|
||||
case MINJIBC:
|
||||
case COOTJIBA:
|
||||
case COOTJIBB:
|
||||
case COOTJIBC:
|
||||
case JIBS1:
|
||||
case JIBS2:
|
||||
case JIBS3:
|
||||
case JIBS4:
|
||||
case JIBS5:
|
||||
case JIBS6:
|
||||
case DUKETORSO:
|
||||
case DUKEGUN:
|
||||
case DUKELEG:
|
||||
if (!jibs(i, JIBS6, false, true, true, s->picnum == DUKELEG || s->picnum == DUKETORSO || s->picnum == DUKEGUN,
|
||||
isRRRA() && (s->picnum == RRTILE2465 || s->picnum == RRTILE2560))) continue;
|
||||
|
||||
if (sector[s->sectnum].lotag == 800)
|
||||
if (s->z >= sector[s->sectnum].floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
|
||||
case BLOODPOOL:
|
||||
if (!bloodpool(i, false, TIRE)) continue;
|
||||
|
||||
if (sector[s->sectnum].lotag == 800)
|
||||
if (s->z >= sector[s->sectnum].floorz - (8 << 8))
|
||||
{
|
||||
deletesprite(i);
|
||||
}
|
||||
continue;
|
||||
|
||||
case BURNING:
|
||||
case WATERBUBBLE:
|
||||
case SMALLSMOKE:
|
||||
case EXPLOSION2:
|
||||
case EXPLOSION3:
|
||||
case BLOOD:
|
||||
case FORCERIPPLE:
|
||||
case TRANSPORTERSTAR:
|
||||
case TRANSPORTERBEAM:
|
||||
p = findplayer(s, &x);
|
||||
execute(i, p, x);
|
||||
continue;
|
||||
|
||||
case SHELL:
|
||||
case SHOTGUNSHELL:
|
||||
shell(i, false);
|
||||
continue;
|
||||
|
||||
case GLASSPIECES:
|
||||
case GLASSPIECES + 1:
|
||||
case GLASSPIECES + 2:
|
||||
case POPCORN:
|
||||
glasspieces(i);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (s->picnum >= SCRAP6 && s->picnum <= SCRAP5 + 3)
|
||||
{
|
||||
scrap(i, SCRAP1, SCRAP6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
END_DUKE_NS
|
||||
|
|
|
@ -389,664 +389,6 @@ static void Proj_BounceOffWall(spritetype *s, int j)
|
|||
}
|
||||
|
||||
|
||||
ACTOR_STATIC void G_MoveMisc(void) // STATNUM 5
|
||||
{
|
||||
int spriteNum = headspritestat[STAT_MISC];
|
||||
|
||||
while (spriteNum >= 0)
|
||||
{
|
||||
int const nextSprite = nextspritestat[spriteNum];
|
||||
int32_t playerDist;
|
||||
int32_t *const pData = actor[spriteNum].t_data;
|
||||
spritetype *const pSprite = &sprite[spriteNum];
|
||||
int sectNum = pSprite->sectnum; // XXX: not const
|
||||
int switchPic;
|
||||
|
||||
if (sectNum < 0 || pSprite->xrepeat == 0)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
Bmemcpy(&actor[spriteNum].bpos, pSprite, sizeof(vec3_t));
|
||||
|
||||
switchPic = pSprite->picnum;
|
||||
|
||||
if (!RR && pSprite->picnum > TILE_NUKEBUTTON && pSprite->picnum <= TILE_NUKEBUTTON+3)
|
||||
switchPic = TILE_NUKEBUTTON;
|
||||
|
||||
if (pSprite->picnum > TILE_GLASSPIECES && pSprite->picnum <= TILE_GLASSPIECES+2)
|
||||
switchPic = TILE_GLASSPIECES;
|
||||
|
||||
if (pSprite->picnum == TILE_INNERJAW+1)
|
||||
switchPic--;
|
||||
|
||||
if ((pSprite->picnum == TILE_MONEY+1) || (!RR && (pSprite->picnum == TILE_MAIL+1 || pSprite->picnum == TILE_PAPER+1)))
|
||||
{
|
||||
actor[spriteNum].floorz = pSprite->z = getflorzofslope(pSprite->sectnum,pSprite->x,pSprite->y);
|
||||
if (RR && sector[pSprite->sectnum].lotag == 800)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
else switch (DYNAMICTILEMAP(switchPic))
|
||||
{
|
||||
//case APLAYER__STATIC: pSprite->cstat = 32768; goto next_sprite;
|
||||
|
||||
case SHOTGUNSPRITE__STATIC:
|
||||
if (!RR) break;
|
||||
if (sector[pSprite->sectnum].lotag == 800 && pSprite->z >= sector[pSprite->sectnum].floorz - ZOFFSET3)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
break;
|
||||
|
||||
case NEON1__STATIC:
|
||||
case NEON2__STATIC:
|
||||
case NEON3__STATIC:
|
||||
case NEON4__STATIC:
|
||||
case NEON5__STATIC:
|
||||
case NEON6__STATIC:
|
||||
pSprite->shade = ((tabledivide32_noinline(g_globalRandom, pSprite->lotag + 1) & 31) > 4) ? -127 : 127;
|
||||
goto next_sprite;
|
||||
|
||||
case BLOODSPLAT1__STATIC:
|
||||
case BLOODSPLAT2__STATIC:
|
||||
case BLOODSPLAT3__STATIC:
|
||||
case BLOODSPLAT4__STATIC:
|
||||
if (pData[0] == 7 * GAMETICSPERSEC)
|
||||
goto next_sprite;
|
||||
|
||||
pSprite->z += 16 + (krand2() & 15);
|
||||
|
||||
if ((++pData[0] % 9) == 0)
|
||||
pSprite->yrepeat++;
|
||||
|
||||
|
||||
goto next_sprite;
|
||||
|
||||
case NUKEBUTTON__STATIC:
|
||||
// case TILE_NUKEBUTTON+1:
|
||||
// case TILE_NUKEBUTTON+2:
|
||||
// case TILE_NUKEBUTTON+3:
|
||||
|
||||
if (RR) break;
|
||||
|
||||
if (pData[0])
|
||||
{
|
||||
pData[0]++;
|
||||
if (pData[0] == 8)
|
||||
pSprite->picnum = TILE_NUKEBUTTON + 1;
|
||||
else if (pData[0] == 16)
|
||||
{
|
||||
pSprite->picnum = TILE_NUKEBUTTON + 2;
|
||||
g_player[P_Get(pSprite->owner)].ps->fist_incs = 1;
|
||||
}
|
||||
if (g_player[P_Get(pSprite->owner)].ps->fist_incs == GAMETICSPERSEC)
|
||||
pSprite->picnum = TILE_NUKEBUTTON + 3;
|
||||
}
|
||||
goto next_sprite;
|
||||
|
||||
case FORCESPHERE__STATIC:
|
||||
{
|
||||
int forceRepeat = pSprite->xrepeat;
|
||||
if (pData[1] > 0)
|
||||
{
|
||||
pData[1]--;
|
||||
if (pData[1] == 0)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
if (actor[pSprite->owner].t_data[1] == 0)
|
||||
{
|
||||
if (pData[0] < 64)
|
||||
{
|
||||
pData[0]++;
|
||||
forceRepeat += 3;
|
||||
}
|
||||
}
|
||||
else if (pData[0] > 64)
|
||||
{
|
||||
pData[0]--;
|
||||
forceRepeat -= 3;
|
||||
}
|
||||
|
||||
*(vec3_t *)pSprite = *(vec3_t *)&sprite[pSprite->owner];
|
||||
pSprite->ang += actor[pSprite->owner].t_data[0];
|
||||
|
||||
forceRepeat = clamp2(forceRepeat, 1, 64);
|
||||
pSprite->xrepeat = forceRepeat;
|
||||
pSprite->yrepeat = forceRepeat;
|
||||
pSprite->shade = (forceRepeat >> 1) - 48;
|
||||
|
||||
for (bsize_t j = pData[0]; j > 0; j--)
|
||||
A_SetSprite(spriteNum, CLIPMASK0);
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
case MUD__STATICRR:
|
||||
pData[0]++;
|
||||
if (pData[0] == 1)
|
||||
{
|
||||
if (sector[sectNum].floorpicnum != TILE_RRTILE3073)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
if (!S_CheckSoundPlaying(spriteNum,ITEM_SPLASH))
|
||||
A_PlaySound(ITEM_SPLASH,spriteNum);
|
||||
}
|
||||
if (pData[0] == 3)
|
||||
{
|
||||
pData[0] = 0;
|
||||
pData[1]++; // WATERSPLASH_T2
|
||||
}
|
||||
if (pData[1] == 5)
|
||||
A_DeleteSprite(spriteNum);
|
||||
goto next_sprite;
|
||||
|
||||
case WATERSPLASH2__STATIC:
|
||||
pData[0]++;
|
||||
if (pData[0] == 1)
|
||||
{
|
||||
if (sector[sectNum].lotag != ST_1_ABOVE_WATER && sector[sectNum].lotag != ST_2_UNDERWATER)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
/*
|
||||
else
|
||||
{
|
||||
l = getflorzofslope(sect,s->x,s->y)-s->z;
|
||||
if( l > ZOFFSET2 ) KILLIT(i);
|
||||
}
|
||||
else
|
||||
*/
|
||||
if (!S_CheckSoundPlaying(spriteNum,ITEM_SPLASH))
|
||||
A_PlaySound(ITEM_SPLASH,spriteNum);
|
||||
}
|
||||
if (pData[0] == 3)
|
||||
{
|
||||
pData[0] = 0;
|
||||
pData[1]++; // WATERSPLASH_T2
|
||||
}
|
||||
if (pData[1] == 5)
|
||||
A_DeleteSprite(spriteNum);
|
||||
goto next_sprite;
|
||||
case FRAMEEFFECT1__STATIC:
|
||||
|
||||
if (pSprite->owner >= 0)
|
||||
{
|
||||
pData[0]++;
|
||||
|
||||
if (pData[0] > 7)
|
||||
{
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
else if (pData[0] > 4)
|
||||
pSprite->cstat |= 512 + 2;
|
||||
else if (pData[0] > 2)
|
||||
pSprite->cstat |= 2;
|
||||
pSprite->xoffset = sprite[pSprite->owner].xoffset;
|
||||
pSprite->yoffset = sprite[pSprite->owner].yoffset;
|
||||
}
|
||||
goto next_sprite;
|
||||
case INNERJAW__STATIC:
|
||||
{
|
||||
// case TILE_INNERJAW+1:
|
||||
int32_t playerDist, playerNum = A_FindPlayer(pSprite,&playerDist);
|
||||
|
||||
if (playerDist < 512)
|
||||
{
|
||||
P_PalFrom(g_player[playerNum].ps, 32, 32,0,0);
|
||||
sprite[g_player[playerNum].ps->i].extra -= 4;
|
||||
}
|
||||
}
|
||||
fallthrough__;
|
||||
case COOLEXPLOSION1__STATIC:
|
||||
if (!RR && switchPic == TILE_COOLEXPLOSION1)
|
||||
break;
|
||||
fallthrough__;
|
||||
case OWHIP__STATICRR:
|
||||
case UWHIP__STATICRR:
|
||||
case FIRELASER__STATIC:
|
||||
if (pSprite->extra != 999)
|
||||
pSprite->extra = 999;
|
||||
else DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
break;
|
||||
case TONGUE__STATIC:
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
case MONEY__STATIC:
|
||||
case MAIL__STATIC:
|
||||
case PAPER__STATIC:
|
||||
{
|
||||
if (RR && (switchPic == TILE_MAIL || switchPic == TILE_PAPER))
|
||||
break;
|
||||
pSprite->xvel = (krand2()&7)+(sintable[T1(spriteNum)&2047]>>9);
|
||||
T1(spriteNum) += (krand2()&63);
|
||||
if ((T1(spriteNum)&2047) > 512 && (T1(spriteNum)&2047) < 1596)
|
||||
{
|
||||
if (sector[sectNum].lotag == ST_2_UNDERWATER)
|
||||
{
|
||||
if (pSprite->zvel < 64)
|
||||
pSprite->zvel += (g_spriteGravity>>5)+(krand2()&7);
|
||||
}
|
||||
else if (pSprite->zvel < 144)
|
||||
pSprite->zvel += (g_spriteGravity>>5)+(krand2()&7);
|
||||
}
|
||||
|
||||
A_SetSprite(spriteNum, CLIPMASK0);
|
||||
|
||||
if ((krand2()&3) == 0)
|
||||
setsprite(spriteNum, (vec3_t *) pSprite);
|
||||
|
||||
if (pSprite->sectnum == -1)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
int const floorZ = getflorzofslope(pSprite->sectnum, pSprite->x, pSprite->y);
|
||||
|
||||
if (pSprite->z > floorZ)
|
||||
{
|
||||
pSprite->z = floorZ;
|
||||
A_AddToDeleteQueue(spriteNum);
|
||||
PN(spriteNum)++;
|
||||
|
||||
for (bssize_t SPRITES_OF(STAT_MISC, j))
|
||||
{
|
||||
if (sprite[j].picnum == TILE_BLOODPOOL && ldist(pSprite, &sprite[j]) < 348)
|
||||
{
|
||||
pSprite->pal = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (RR && sector[pSprite->sectnum].lotag == 800 && pSprite->z >= sector[pSprite->sectnum].floorz - ZOFFSET3)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case HEADJIB1__STATIC:
|
||||
case ARMJIB1__STATIC:
|
||||
case LEGJIB1__STATIC:
|
||||
case LIZMANHEAD1__STATIC:
|
||||
case LIZMANARM1__STATIC:
|
||||
case LIZMANLEG1__STATIC:
|
||||
if (RR) break;
|
||||
goto jib_code;
|
||||
case RRTILE2460__STATICRR:
|
||||
case RRTILE2465__STATICRR:
|
||||
case BIKEJIBA__STATICRR:
|
||||
case BIKEJIBB__STATICRR:
|
||||
case BIKEJIBC__STATICRR:
|
||||
case BIKERJIBA__STATICRR:
|
||||
case BIKERJIBB__STATICRR:
|
||||
case BIKERJIBC__STATICRR:
|
||||
case BIKERJIBD__STATICRR:
|
||||
case CHEERJIBA__STATICRR:
|
||||
case CHEERJIBB__STATICRR:
|
||||
case CHEERJIBC__STATICRR:
|
||||
case CHEERJIBD__STATICRR:
|
||||
case FBOATJIBA__STATICRR:
|
||||
case FBOATJIBB__STATICRR:
|
||||
case RABBITJIBA__STATICRR:
|
||||
case RABBITJIBB__STATICRR:
|
||||
case RABBITJIBC__STATICRR:
|
||||
case MAMAJIBA__STATICRR:
|
||||
case MAMAJIBB__STATICRR:
|
||||
if (!RRRA) break;
|
||||
goto jib_code;
|
||||
case JIBS1__STATIC:
|
||||
case JIBS2__STATIC:
|
||||
case JIBS3__STATIC:
|
||||
case JIBS4__STATIC:
|
||||
case JIBS5__STATIC:
|
||||
case JIBS6__STATIC:
|
||||
case DUKETORSO__STATIC:
|
||||
case DUKEGUN__STATIC:
|
||||
case DUKELEG__STATIC:
|
||||
case BILLYJIBA__STATICRR:
|
||||
case BILLYJIBB__STATICRR:
|
||||
case HULKJIBA__STATICRR:
|
||||
case HULKJIBB__STATICRR:
|
||||
case HULKJIBC__STATICRR:
|
||||
case MINJIBA__STATICRR:
|
||||
case MINJIBB__STATICRR:
|
||||
case MINJIBC__STATICRR:
|
||||
case COOTJIBA__STATICRR:
|
||||
case COOTJIBB__STATICRR:
|
||||
case COOTJIBC__STATICRR:
|
||||
jib_code:
|
||||
{
|
||||
pSprite->xvel = (pSprite->xvel > 0) ? pSprite->xvel - 1 : 0;
|
||||
|
||||
if (!RR)
|
||||
{
|
||||
if (pData[5] < (30*10))
|
||||
pData[5]++;
|
||||
else
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
|
||||
if (pSprite->zvel > 1024 && pSprite->zvel < 1280)
|
||||
{
|
||||
setsprite(spriteNum, (vec3_t *) pSprite);
|
||||
sectNum = pSprite->sectnum;
|
||||
}
|
||||
|
||||
if (RR)
|
||||
setsprite(spriteNum, (vec3_t * ) pSprite);
|
||||
|
||||
int32_t floorZ, ceilZ;
|
||||
getzsofslope(sectNum, pSprite->x, pSprite->y, &ceilZ, &floorZ);
|
||||
|
||||
if (ceilZ == floorZ || sectNum < 0 || sectNum >= MAXSECTORS)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
if (pSprite->z < floorZ-(2<<8))
|
||||
{
|
||||
if (pData[1] < 2) pData[1]++;
|
||||
else if (sector[sectNum].lotag != ST_2_UNDERWATER)
|
||||
{
|
||||
pData[1] = 0;
|
||||
|
||||
if (pSprite->picnum == TILE_DUKELEG || pSprite->picnum == TILE_DUKETORSO || pSprite->picnum == TILE_DUKEGUN)
|
||||
{
|
||||
pData[0] = (pData[0] > 6) ? 0 : pData[0] + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
pData[0] = (pData[0] > 2) ? 0 : pData[0] + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (pSprite->zvel < 6144)
|
||||
{
|
||||
if (sector[sectNum].lotag == ST_2_UNDERWATER)
|
||||
{
|
||||
if (pSprite->zvel < 1024)
|
||||
pSprite->zvel += 48;
|
||||
else pSprite->zvel = 1024;
|
||||
}
|
||||
else pSprite->zvel += g_spriteGravity-50;
|
||||
}
|
||||
|
||||
pSprite->x += (pSprite->xvel*sintable[(pSprite->ang+512)&2047])>>14;
|
||||
pSprite->y += (pSprite->xvel*sintable[pSprite->ang&2047])>>14;
|
||||
pSprite->z += pSprite->zvel;
|
||||
|
||||
if (RR && pSprite->z >= sector[pSprite->sectnum].floorz)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RRRA || (pSprite->picnum == TILE_RRTILE2465 || pSprite->picnum == TILE_RRTILE2560))
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
if (pData[2] == 0)
|
||||
{
|
||||
if (pSprite->sectnum == -1)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
if ((sector[pSprite->sectnum].floorstat&2))
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
pData[2]++;
|
||||
}
|
||||
|
||||
floorZ = getflorzofslope(pSprite->sectnum, pSprite->x, pSprite->y);
|
||||
pSprite->z = floorZ - (2 << 8);
|
||||
pSprite->xvel = 0;
|
||||
|
||||
if (pSprite->picnum == TILE_JIBS6)
|
||||
{
|
||||
pData[1]++;
|
||||
|
||||
if ((pData[1]&3) == 0 && pData[0] < 7)
|
||||
pData[0]++;
|
||||
|
||||
if (pData[1] > 20)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
pSprite->picnum = TILE_JIBS6;
|
||||
pData[0] = 0;
|
||||
pData[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (RR && sector[pSprite->sectnum].lotag == 800 && pSprite->z >= sector[pSprite->sectnum].floorz - ZOFFSET3)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
case PUKE__STATIC:
|
||||
if (RR) break;
|
||||
fallthrough__;
|
||||
case BLOODPOOL__STATIC:
|
||||
{
|
||||
if (pData[0] == 0)
|
||||
{
|
||||
pData[0] = 1;
|
||||
if (sector[sectNum].floorstat&2)
|
||||
{
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
else A_AddToDeleteQueue(spriteNum);
|
||||
}
|
||||
|
||||
A_Fall(spriteNum);
|
||||
|
||||
int32_t playerDist;
|
||||
int const playerNum = A_FindPlayer(pSprite, &playerDist);
|
||||
pSprite->z = actor[spriteNum].floorz - ZOFFSET;
|
||||
|
||||
DukePlayer_t *const pPlayer = g_player[playerNum].ps;
|
||||
|
||||
if (pData[2] < 32)
|
||||
{
|
||||
pData[2]++;
|
||||
|
||||
if (actor[spriteNum].picnum == TILE_TIRE)
|
||||
{
|
||||
if (pSprite->xrepeat < 64 && pSprite->yrepeat < 64)
|
||||
{
|
||||
pSprite->xrepeat += krand2()&3;
|
||||
pSprite->yrepeat += krand2()&3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pSprite->xrepeat < 32 && pSprite->yrepeat < 32)
|
||||
{
|
||||
pSprite->xrepeat += krand2()&3;
|
||||
pSprite->yrepeat += krand2()&3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (playerDist < 844 && pSprite->xrepeat > 6 && pSprite->yrepeat > 6)
|
||||
{
|
||||
if (pSprite->pal == 0 && (krand2()&255) < 16 && (RR || pSprite->picnum != TILE_PUKE))
|
||||
{
|
||||
if (pPlayer->inv_amount[GET_BOOTS] > 0)
|
||||
pPlayer->inv_amount[GET_BOOTS]--;
|
||||
else
|
||||
{
|
||||
if (!A_CheckSoundPlaying(pPlayer->i,DUKE_LONGTERM_PAIN))
|
||||
A_PlaySound(DUKE_LONGTERM_PAIN,pPlayer->i);
|
||||
|
||||
sprite[pPlayer->i].extra --;
|
||||
|
||||
P_PalFrom(pPlayer, 32, 16,0,0);
|
||||
}
|
||||
}
|
||||
|
||||
if (pData[1] == 1) goto next_sprite;
|
||||
|
||||
pData[1] = 1;
|
||||
|
||||
pPlayer->footprintcount = (actor[spriteNum].picnum == TILE_TIRE) ? 10 : 3;
|
||||
pPlayer->footprintpal = pSprite->pal;
|
||||
pPlayer->footprintshade = pSprite->shade;
|
||||
|
||||
if (pData[2] == 32)
|
||||
{
|
||||
pSprite->xrepeat -= 6;
|
||||
pSprite->yrepeat -= 6;
|
||||
}
|
||||
}
|
||||
else pData[1] = 0;
|
||||
|
||||
if (RR && sector[pSprite->sectnum].lotag == 800 && pSprite->z >= sector[pSprite->sectnum].floorz - ZOFFSET3)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
case BURNING2__STATIC:
|
||||
case FECES__STATIC:
|
||||
case SHRINKEREXPLOSION__STATIC:
|
||||
case EXPLOSION2BOT__STATIC:
|
||||
case LASERSITE__STATIC:
|
||||
if (RR) break;
|
||||
fallthrough__;
|
||||
case BURNING__STATIC:
|
||||
case WATERBUBBLE__STATIC:
|
||||
case SMALLSMOKE__STATIC:
|
||||
case EXPLOSION2__STATIC:
|
||||
case EXPLOSION3__STATICRR:
|
||||
case BLOOD__STATIC:
|
||||
case FORCERIPPLE__STATIC:
|
||||
case TRANSPORTERSTAR__STATIC:
|
||||
case TRANSPORTERBEAM__STATIC:
|
||||
{
|
||||
if (!G_HaveActor(sprite[spriteNum].picnum))
|
||||
goto next_sprite;
|
||||
int const playerNum = A_FindPlayer(pSprite, &playerDist);
|
||||
A_Execute(spriteNum, playerNum, playerDist);
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
|
||||
case SHELL__STATIC:
|
||||
case SHOTGUNSHELL__STATIC:
|
||||
|
||||
A_SetSprite(spriteNum,CLIPMASK0);
|
||||
|
||||
if (sectNum < 0 || (!RR && (sector[sectNum].floorz + (24<<8)) < pSprite->z))
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
if (sector[sectNum].lotag == ST_2_UNDERWATER)
|
||||
{
|
||||
pData[1]++;
|
||||
if (pData[1] > 8)
|
||||
{
|
||||
pData[1] = 0;
|
||||
pData[0]++;
|
||||
pData[0] &= 3;
|
||||
}
|
||||
if (pSprite->zvel < 128) pSprite->zvel += (g_spriteGravity/13); // 8
|
||||
else pSprite->zvel -= 64;
|
||||
if (pSprite->xvel > 0)
|
||||
pSprite->xvel -= 4;
|
||||
else pSprite->xvel = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pData[1]++;
|
||||
if (pData[1] > 3)
|
||||
{
|
||||
pData[1] = 0;
|
||||
pData[0]++;
|
||||
pData[0] &= 3;
|
||||
}
|
||||
if (pSprite->zvel < 512) pSprite->zvel += (g_spriteGravity/3); // 52;
|
||||
if (pSprite->xvel > 0)
|
||||
pSprite->xvel --;
|
||||
else
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
|
||||
goto next_sprite;
|
||||
|
||||
case GLASSPIECES__STATIC:
|
||||
case POPCORN__STATICRR:
|
||||
// case TILE_GLASSPIECES+1:
|
||||
// case TILE_GLASSPIECES+2:
|
||||
|
||||
A_Fall(spriteNum);
|
||||
|
||||
if (pSprite->zvel > 4096) pSprite->zvel = 4096;
|
||||
if (sectNum < 0)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
if (pSprite->z == actor[spriteNum].floorz-(ZOFFSET) && pData[0] < 3)
|
||||
{
|
||||
pSprite->zvel = -((3-pData[0])<<8)-(krand2()&511);
|
||||
if (sector[sectNum].lotag == ST_2_UNDERWATER)
|
||||
pSprite->zvel >>= 1;
|
||||
pSprite->xrepeat >>= 1;
|
||||
pSprite->yrepeat >>= 1;
|
||||
if (rnd(96))
|
||||
setsprite(spriteNum,(vec3_t *)pSprite);
|
||||
pData[0]++;//Number of bounces
|
||||
}
|
||||
else if (pData[0] == 3)
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
|
||||
if (pSprite->xvel > 0)
|
||||
{
|
||||
pSprite->xvel -= 2;
|
||||
pSprite->cstat = ((pSprite->xvel&3)<<2);
|
||||
}
|
||||
else pSprite->xvel = 0;
|
||||
|
||||
A_SetSprite(spriteNum,CLIPMASK0);
|
||||
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
if (PN(spriteNum) >= TILE_SCRAP6 && PN(spriteNum) <= TILE_SCRAP5+3)
|
||||
{
|
||||
if (pSprite->xvel > 0)
|
||||
pSprite->xvel--;
|
||||
else pSprite->xvel = 0;
|
||||
|
||||
if (pSprite->zvel > 1024 && pSprite->zvel < 1280)
|
||||
{
|
||||
setsprite(spriteNum,(vec3_t *)pSprite);
|
||||
sectNum = pSprite->sectnum;
|
||||
}
|
||||
|
||||
if (pSprite->z < sector[sectNum].floorz-(2<<8))
|
||||
{
|
||||
if (pData[1] < 1) pData[1]++;
|
||||
else
|
||||
{
|
||||
pData[1] = 0;
|
||||
|
||||
if (pSprite->picnum < TILE_SCRAP6 + 8)
|
||||
pData[0] = (pData[0] > 6) ? 0 : pData[0] + 1;
|
||||
else
|
||||
pData[0] = (pData[0] > 2) ? 0 : pData[0] + 1;
|
||||
}
|
||||
if (pSprite->zvel < 4096)
|
||||
pSprite->zvel += g_spriteGravity - 50;
|
||||
pSprite->x += (pSprite->xvel*sintable[(pSprite->ang+512)&2047])>>14;
|
||||
pSprite->y += (pSprite->xvel*sintable[pSprite->ang&2047])>>14;
|
||||
pSprite->z += pSprite->zvel;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pSprite->picnum == TILE_SCRAP1 && pSprite->yvel > 0 && pSprite->yvel < MAXUSERTILES)
|
||||
{
|
||||
int32_t j = A_Spawn(spriteNum, pSprite->yvel);
|
||||
|
||||
setsprite(j,(vec3_t *)pSprite);
|
||||
A_GetZLimits(j);
|
||||
sprite[j].hitag = sprite[j].lotag = 0;
|
||||
}
|
||||
|
||||
DELETE_SPRITE_AND_CONTINUE(spriteNum);
|
||||
}
|
||||
goto next_sprite;
|
||||
}
|
||||
|
||||
next_sprite:
|
||||
spriteNum = nextSprite;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// i: SE spritenum
|
||||
static void HandleSE31(int spriteNum, int setFloorZ, int spriteZ, int SEdir, int zDifference)
|
||||
{
|
||||
|
@ -3969,6 +3311,7 @@ void movestandables_d();
|
|||
void moveweapons_d();
|
||||
void movetransports_d(void);
|
||||
void moveactors_d();
|
||||
void moveexplosions_d();
|
||||
|
||||
void movefta_r(void);
|
||||
void moveplayers();
|
||||
|
@ -3979,6 +3322,7 @@ void moveweapons_r();
|
|||
void movetransports_r(void);
|
||||
void moveactors_r();
|
||||
void thunder();
|
||||
void moveexplosions_r();
|
||||
|
||||
void G_MoveWorld_d(void)
|
||||
{
|
||||
|
@ -3991,7 +3335,7 @@ void G_MoveWorld_d(void)
|
|||
|
||||
moveplayers(); //ST 10
|
||||
movefallers_d(); //ST 12
|
||||
G_MoveMisc(); //ST 5
|
||||
moveexplosions_d(); //ST 5
|
||||
|
||||
const double actorsTime = timerGetHiTicks();
|
||||
|
||||
|
@ -4027,7 +3371,7 @@ void G_MoveWorld_r(void)
|
|||
moveplayers(); //ST 10
|
||||
movefallers_r(); //ST 12
|
||||
if (!DEER)
|
||||
G_MoveMisc(); //ST 5
|
||||
moveexplosions_r(); //ST 5
|
||||
|
||||
const double actorsTime = timerGetHiTicks();
|
||||
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
//-------------------------------------------------------------------------
|
||||
/*
|
||||
Copyright (C) 1996, 2003 - 3D Realms Entertainment
|
||||
Copyright (C) 2000, 2003 - Matt Saettler (EDuke Enhancements)
|
||||
Copyright (C) 2017-2019 - Nuke.YKT
|
||||
Copyright (C) 2020 - Christoph Oelckers
|
||||
|
||||
This file is part of Enhanced Duke Nukem 3D version 1.5 - Atomic Edition
|
||||
|
||||
Duke Nukem 3D is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Original Source: 1996 - Todd Replogle
|
||||
Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
|
||||
|
||||
EDuke enhancements integrated: 04/13/2003 - Matt Saettler
|
||||
|
||||
Note: EDuke source was in transition. Changes are in-progress in the
|
||||
source as it is released.
|
||||
|
||||
This file is a combination of code from the following sources:
|
||||
- EDuke 2 by Matt Saettler
|
||||
- JFDuke by Jonathon Fowler (jf@jonof.id.au),
|
||||
- DukeGDX and RedneckGDX by Alexander Makarov-[M210] (m210-2007@mail.ru)
|
||||
- Redneck Rampage reconstructed source by Nuke.YKT
|
||||
|
||||
Note:
|
||||
Most of this code follows DukeGDX and RedneckGDX because for Java it had
|
||||
to undo all the macro hackery that make the Duke source extremely hard to read.
|
||||
The other code bases were mainly used to add missing feature support (e.g. WW2GI)
|
||||
and verify correctness.
|
||||
|
||||
*/
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
#include "ns.h"
|
||||
#include "global.h"
|
||||
#include "names.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool ceilingspace(int sectnum)
|
||||
{
|
||||
if ((sector[sectnum].ceilingstat & 1) && sector[sectnum].ceilingpal == 0)
|
||||
{
|
||||
switch (sector[sectnum].ceilingpicnum)
|
||||
{
|
||||
case MOONSKY1:
|
||||
case BIGORBIT1:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool floorspace(int sectnum)
|
||||
{
|
||||
if ((sector[sectnum].floorstat & 1) && sector[sectnum].ceilingpal == 0)
|
||||
{
|
||||
switch (sector[sectnum].floorpicnum)
|
||||
{
|
||||
case MOONSKY1:
|
||||
case BIGORBIT1:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool ifsquished(int i, int p)
|
||||
{
|
||||
return false; // this function is a no-op in RR's source.
|
||||
}
|
||||
|
||||
|
||||
END_RR_NS
|
|
@ -1,430 +0,0 @@
|
|||
//-------------------------------------------------------------------------
|
||||
/*
|
||||
Copyright (C) 1996, 2003 - 3D Realms Entertainment
|
||||
|
||||
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
||||
|
||||
Duke Nukem 3D is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Original Source: 1996 - Todd Replogle
|
||||
Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
|
||||
*/
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
enum
|
||||
{
|
||||
GRID = 0,
|
||||
SECTOREFFECTOR = 1,
|
||||
ACTIVATOR = 2,
|
||||
TOUCHPLATE = 3,
|
||||
ACTIVATORLOCKED = 4,
|
||||
MUSICANDSFX = 5,
|
||||
LOCATORS = 6,
|
||||
CYCLER = 7,
|
||||
MASTERSWITCH = 8,
|
||||
RESPAWN = 9,
|
||||
GPSPEED = 10,
|
||||
JAILDOOR = 11,
|
||||
LNRDTAG = 15,
|
||||
SIGN1 = 16,
|
||||
SIGN2 = 17,
|
||||
TORCH = 18,
|
||||
FIRSTGUNSPRITE = 21,
|
||||
RIFLESPRITE = 22,
|
||||
CROSSBOWSPRITE = 23,
|
||||
TEATGUN = 24,
|
||||
BUZSAWSPRITE = 25,
|
||||
DYNAMITE = 26,
|
||||
POWDERKEGSPRITE = 27,
|
||||
SHOTGUNSPRITE = 28,
|
||||
ALIENARMGUN = 29,
|
||||
HEALTHBOX = 30,
|
||||
AMMOBOX = 31,
|
||||
TEATAMMO = 32,
|
||||
INVENTORYBOX = 33,
|
||||
DOORKEYS = 34,
|
||||
LIGHTNIN = 35,
|
||||
DESTRUCTO = 36,
|
||||
JAILSOUND = 38,
|
||||
AMMO = 40,
|
||||
RIFLEAMMO = 41,
|
||||
ALIENBLASTERAMMO = 42,
|
||||
BLADEAMMO = 43,
|
||||
HBOMBAMMO = 47,
|
||||
SHOTGUNAMMO = 49,
|
||||
BEER = 51,
|
||||
PORKBALLS = 52,
|
||||
WHISKEY = 53,
|
||||
MOONSHINE = 55,
|
||||
SNORKLE = 56,
|
||||
COWPIE = 57,
|
||||
DOORKEY = 60,
|
||||
BOOTS = 61,
|
||||
MINECARTKILLER = 67,
|
||||
SHADESECTOR = 68,
|
||||
SOUNDFX = 71,
|
||||
MULTISWITCH = 98,
|
||||
DOORSHOCK = 120,
|
||||
FLOORSLIME = 132,
|
||||
BIGFORCE = 135,
|
||||
SCREENBREAK6 = 164,
|
||||
SCREENBREAK7 = 165,
|
||||
SCREENBREAK8 = 166,
|
||||
FANSPRITEWORK = 210,
|
||||
FANSPRITE = 211,
|
||||
FANSPRITEBROKE = 215,
|
||||
GRATE1 = 234,
|
||||
BGRATE1 = 235,
|
||||
WATERDRIP = 239,
|
||||
WATERBUBBLE = 240,
|
||||
WATERBUBBLEMAKER = 241,
|
||||
W_FORCEFIELD = 242,
|
||||
LIGHTSWITCH2 = 250,
|
||||
UFOBEAM = 252,
|
||||
BOULDER = 256,
|
||||
BOULDER1 = 264,
|
||||
BOWLLINE = 280,
|
||||
CHICKENA = 285,
|
||||
CHICKENC = 286,
|
||||
HEADCHK = 287,
|
||||
FEATHERCHK = 288,
|
||||
LOAF = 289,
|
||||
NUGGETS = 290,
|
||||
PACKEDCHK = 291,
|
||||
BONELESSCHK = 292,
|
||||
JIBSCHK = 293,
|
||||
BIGFNTCURSOR = 512,
|
||||
SMALLFNTCURSOR = 513,
|
||||
STARTALPHANUM = 514,
|
||||
ENDALPHANUM = 607,
|
||||
BIGALPHANUM = 632,
|
||||
BIGPERIOD = 694,
|
||||
BIGCOMMA = 695,
|
||||
BIGX = 696,
|
||||
BIGQ = 697,
|
||||
BIGSEMI = 698,
|
||||
BIGCOLIN = 699,
|
||||
THREEBYFIVE = 702,
|
||||
BIGAPPOS = 714,
|
||||
MINIFONT = 718,
|
||||
RESPAWNMARKERRED = 866,
|
||||
|
||||
MOONSKY1 = 1022,
|
||||
MOONSKY2 = 1023,
|
||||
MOONSKY3 = 1024,
|
||||
MOONSKY4 = 1025,
|
||||
BIGORBIT1 = 1026,
|
||||
BIGORBIT2 = 1027,
|
||||
BIGORBIT3 = 1028,
|
||||
BIGORBIT4 = 1029,
|
||||
BIGORBIT5 =1030,
|
||||
WATERTILE2 = 1045,
|
||||
GLASS = 1056,
|
||||
GLASS2 = 1057,
|
||||
CRACK1 = 1075,
|
||||
CRACK2 = 1076,
|
||||
CRACK3 = 1077,
|
||||
CRACK4 = 1078,
|
||||
FOOTPRINTS = 1079,
|
||||
MIRROR = 1089,
|
||||
WATERFOUNTAIN = 1092,
|
||||
REACTOR = 1107,
|
||||
REACTORBURNT = 1108,
|
||||
REACTORSPARK = 1109,
|
||||
BOLT1 = 1127,
|
||||
|
||||
|
||||
CAMERA1 = 1134,
|
||||
FOOTPRINTS2 = 1144,
|
||||
FOOTPRINTS3 = 1145,
|
||||
FOOTPRINTS4 = 1146,
|
||||
SLIME = 1161,
|
||||
QUEBALL = 1184,
|
||||
STRIPEBALL = 1185,
|
||||
POCKET = 1186,
|
||||
NEON1 = 1200,
|
||||
NEON2 = 1201,
|
||||
BOUNCEMINE = 1204,
|
||||
BULLETHOLE = 1212,
|
||||
TIRE = 1230,
|
||||
NEON3 = 1241,
|
||||
NEON4 = 1242,
|
||||
NEON5 = 1243,
|
||||
GLASSPIECES = 1256,
|
||||
NEON6 = 1264,
|
||||
OOZFILTER = 1273,
|
||||
FLOORPLASMA = 1276,
|
||||
BOTTLE12 = 1282,
|
||||
BOTTLE13 = 1283,
|
||||
BOTTLE14 = 1284,
|
||||
BOTTLE15 = 1285,
|
||||
BOTTLE16 = 1286,
|
||||
BOTTLE17 = 1287,
|
||||
BOTTLE18 = 1288,
|
||||
VENDMACHINE = 1291,
|
||||
VENDMACHINEBROKE = 1293,
|
||||
COLAMACHINE = 1294,
|
||||
COLAMACHINEBROKE = 1296,
|
||||
CRANE = 1299,
|
||||
BLOODPOOL = 1303,
|
||||
CANWITHSOMETHING = 1309,
|
||||
FEATHERS = 1310,
|
||||
BANNER = 1313,
|
||||
SEENINE = 1324,
|
||||
SEENINEDEAD = 1325,
|
||||
STEAM = 1327,
|
||||
CEILINGSTEAM = 1332,
|
||||
TRANSPORTERBEAM = 1338,
|
||||
RAT = 1344,
|
||||
TRASH = 1346,
|
||||
WATERSPLASH2 = 1383,
|
||||
BLOOD = 1391,
|
||||
TRANSPORTERSTAR = 1398,
|
||||
ALIENBLAST = 1409,
|
||||
TONGUE = 1414,
|
||||
MORTER = 1416,
|
||||
MUD = 1420,
|
||||
RADIUSEXPLOSION = 1426,
|
||||
FORCERIPPLE = 1427,
|
||||
INNERJAW = 1439,
|
||||
EXPLOSION2 = 1441,
|
||||
EXPLOSION3 = 1442,
|
||||
JIBS1 = 1463,
|
||||
JIBS2 = 1468,
|
||||
JIBS3 = 1473,
|
||||
JIBS4 = 1478,
|
||||
JIBS5 = 1483,
|
||||
BURNING = 1494,
|
||||
FIRE = 1495,
|
||||
JIBS6 = 1515,
|
||||
BLOODSPLAT1 = 1525,
|
||||
BLOODSPLAT3 = 1526,
|
||||
BLOODSPLAT2 = 1527,
|
||||
BLOODSPLAT4 = 1528,
|
||||
OOZ = 1529,
|
||||
WALLBLOOD1 = 1530,
|
||||
WALLBLOOD2 = 1531,
|
||||
WALLBLOOD3 = 1532,
|
||||
WALLBLOOD4 = 1533,
|
||||
WALLBLOOD5 = 1534,
|
||||
WALLBLOOD6 = 1535,
|
||||
WALLBLOOD7 = 1536,
|
||||
WALLBLOOD8 = 1537,
|
||||
OOZ2 = 1538,
|
||||
BURNING2 = 1539,
|
||||
FIRE2 = 1540,
|
||||
SMALLSMOKE = 1554,
|
||||
SMALLSMOKEMAKER = 1555,
|
||||
SCRAP6 = 1595,
|
||||
SCRAP1 = 1605,
|
||||
SCRAP2 = 1609,
|
||||
SCRAP3 = 1613,
|
||||
SCRAP4 = 1617,
|
||||
SCRAP5 = 1621,
|
||||
F1HELP = 1633,
|
||||
MENUSCREEN = 1641,
|
||||
MENUBAR = 1642,
|
||||
KILLSICON = 1643,
|
||||
WHISHKEY_ICON = 1645,
|
||||
EMPTY_ICON = 1646,
|
||||
BOTTOMSTATUSBAR = 1647,
|
||||
BOOT_ICON = 1648,
|
||||
FRAGBAR = 1650,
|
||||
COWPIE_ICON = 1652,
|
||||
SNORKLE_ICON = 1653,
|
||||
MOONSHINE_ICON = 1654,
|
||||
BEER_ICON = 1655,
|
||||
ACCESS_ICON = 1656,
|
||||
DIGITALNUM = 1657,
|
||||
SLIDEBAR = 1674,
|
||||
WINDOWBORDER1 = 1679,
|
||||
TEXTBOX = 1680,
|
||||
WINDOWBORDER2 = 1681,
|
||||
INGAMELNRDTHREEDEE = 1684,
|
||||
TENSCREEN = 1685,
|
||||
NEWCROSSHAIR = 1689,
|
||||
CROSSHAIR = 1692,
|
||||
SHELL = 1702,
|
||||
SHOTGUNSHELL = 1704,
|
||||
FORCESPHERE = 1759,
|
||||
SHOTSPARK1 = 1764,
|
||||
CROSSBOW = 1774,
|
||||
TORNADO = 1930,
|
||||
TIKILAMP = 1990,
|
||||
POPCORN = 2021,
|
||||
TESLACON = 2056,
|
||||
TESLABALL = 2094,
|
||||
DILDO = 2095,
|
||||
TESLA = 2097,
|
||||
HURTRAIL = 2221,
|
||||
LOCKSWITCH1 = 2224,
|
||||
REACTOR2 = 2239,
|
||||
REACTOR2SPARK = 2243,
|
||||
REACTOR2BURNT = 2247,
|
||||
EXPLOSION2BOT = 2272,
|
||||
SELECTDIR = 2444,
|
||||
VIEWBORDER = 2520,
|
||||
ORDERING = 2531,
|
||||
TEXTSTORY = 2541,
|
||||
LOADSCREEN = 2542,
|
||||
STARSKY2 = 2577,
|
||||
SPINNINGNUKEICON = 896,
|
||||
TOILETPAPER = 2864,
|
||||
BUSTAWIN5A = 2878,
|
||||
BUSTAWIN5B = 2879,
|
||||
BUSTAWIN4A = 2898,
|
||||
BUSTAWIN4B = 2899,
|
||||
FRAMEEFFECT1 = 2999,
|
||||
|
||||
LOAFTILE = 3120,
|
||||
NUGGETTILE = 3122,
|
||||
BROASTEDTILE = 3123,
|
||||
BONELESSTILE = 3124,
|
||||
HEAD1TILE = 3132,
|
||||
HEAD2TILE = 3133,
|
||||
CHICKENATILE = 3190,
|
||||
CHICKENBTILE = 3191,
|
||||
CHICKENCTILE = 3192,
|
||||
|
||||
NEWPISTOL = 3328,
|
||||
NEWPISTOLCOCK = 3336,
|
||||
NEWCROWBAR = 3340,
|
||||
CROWBAR = NEWCROWBAR,
|
||||
NEWSHOTGUN = 3350,
|
||||
SHOTGUN = NEWSHOTGUN,
|
||||
NEWDYNAMITE = 3360,
|
||||
RIFLE = 3380,
|
||||
CIRCLESTUCK = 3388,
|
||||
SHITBALL = 3390,
|
||||
BUZSAW = 3395,
|
||||
CIRCLESAW = 3400,
|
||||
LUMBERBLADE = 3411,
|
||||
FIRELASER = 3420,
|
||||
BOWLINGBALL = 3430,
|
||||
BOWLINGBALLSPRITE = 3437,
|
||||
OWHIP = 3471,
|
||||
UWHIP = 3475,
|
||||
BACKGROUND = 3822,
|
||||
APLAYERTOP = 3840,
|
||||
APLAYER = 3845,
|
||||
PLAYERONWATER = 3860,
|
||||
LNYDLADDER = 3975,
|
||||
LNRDLYINGDEAD = 3998,
|
||||
LNRDGUN = 4041,
|
||||
LNRDTORSO = 4046,
|
||||
LNRLEG = 4055,
|
||||
DOGATTACK = 4060,
|
||||
BILLYWALK = 4096,
|
||||
BILLYDIE = 4137,
|
||||
BILLYCOCK = 4147,
|
||||
BILLYRAY = 4162,
|
||||
BILLYSHOOT = 4162,
|
||||
BILLYRAYSTAYPUT = 4163,
|
||||
BILLYBUT = 4188,
|
||||
BILLYSCRATCH = 4191,
|
||||
BILLYSNIFF = 4195,
|
||||
BILLYWOUND = 4202,
|
||||
BILLYGORE = 4228,
|
||||
BILLYJIBA = 4235,
|
||||
BILLYJIBB = 4244,
|
||||
DOGRUN = 4260,
|
||||
DOGDIE = 4295,
|
||||
DOGDEAD = 4303,
|
||||
DOGBARK = 4305,
|
||||
LTH = 4352,
|
||||
LTHSTRAFE = 4395,
|
||||
LTHLOAD = 4430,
|
||||
LTHDIE = 4456,
|
||||
BUBBASCRATCH = 4464,
|
||||
BUBBANOSE = 4476,
|
||||
BUBBAPISS = 4487,
|
||||
BUBBASTAND = 4504,
|
||||
BUBBAOUCH = 4506,
|
||||
BUBBADIE = 4513,
|
||||
BUBBADEAD = 4523,
|
||||
HULK = 4649,
|
||||
HULKSTAYPUT = 4650,
|
||||
HULKA = 4651,
|
||||
HULKB = 4652,
|
||||
HULKC = 4653,
|
||||
HULKJIBA = 4748,
|
||||
HULKJIBB = 4753,
|
||||
HULKJIBC = 4758,
|
||||
SBSWIPE = 4770,
|
||||
SBPAIN = 4810,
|
||||
SBDIE = 4820,
|
||||
HEN = 4861,
|
||||
HENSTAYPUT = 4862,
|
||||
HENSTAND = 4897,
|
||||
MOSQUITO = 4916,
|
||||
PIG = 4945,
|
||||
PIGSTAYPUT = 4946,
|
||||
PIGEAT = 4983,
|
||||
SBMOVE = 5015,
|
||||
SBSPIT = 5050,
|
||||
SBDIP = 5085,
|
||||
MINION = 5120,
|
||||
MINIONSTAYPUT = 5121,
|
||||
UFO1 = 5270,
|
||||
UFO2 = 5274,
|
||||
UFO3 = 5278,
|
||||
UFO4 = 5282,
|
||||
UFO5 = 5286,
|
||||
MINJIBA = 5290,
|
||||
MINJIBB = 5295,
|
||||
MINJIBC = 5300,
|
||||
COW = 5317,
|
||||
COOT = 5376,
|
||||
COOTSTAYPUT = 5377,
|
||||
COOTSHOOT = 5411,
|
||||
COOTDIE = 5437,
|
||||
COOTDUCK = 5481,
|
||||
COOTPAIN = 5548,
|
||||
COOTTRANS = 5568,
|
||||
COOTGETUP = 5579,
|
||||
ECLAIRHEALTH = 5595,
|
||||
COOTJIBA = 5602,
|
||||
COOTJIBB = 5607,
|
||||
COOTJIBC = 5616,
|
||||
VIXEN = 5635,
|
||||
VIXENPAIN = 5675,
|
||||
VIXENDIE = 5710,
|
||||
VIXENSHOOT = 5720,
|
||||
VIXENWDN = 5740,
|
||||
VIXENWUP = 5775,
|
||||
VIXENKICK = 5805,
|
||||
VIXENTELE = 5845,
|
||||
VIXENTEAT = 5851,
|
||||
|
||||
//RA
|
||||
AIRPLANE = 8450,
|
||||
SWAMPBUGGY = 7233,
|
||||
MOTORCYCLE = 7220,
|
||||
CHIKENCROSSBOW = 1781,
|
||||
BIKERSTAND = 5995,
|
||||
BIKERRIDE = 5890,
|
||||
BIKERRIDEDAISY = 6401,
|
||||
MINIONAIRBOAT = 7192,
|
||||
HULKAIRBOAT = 7199,
|
||||
DAISYMAE = 6658,
|
||||
DAISYAIRBOAT = 7206,
|
||||
MINIONUFO = 5260,
|
||||
JACKOLOPE = 7280,
|
||||
BANJOCOOTER = 7030,
|
||||
GUITARBILLY = 7035,
|
||||
MAMAJACKOLOPE = 8705,
|
||||
|
||||
};
|
Loading…
Reference in a new issue