2020-05-15 20:59:13 +00:00
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/*
|
|
|
|
Copyright (C) 1996, 2003 - 3D Realms Entertainment
|
|
|
|
Copyright (C) 2017-2019 Nuke.YKT
|
|
|
|
Copyright (C) 2020 - Christoph Oelckers
|
|
|
|
|
|
|
|
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
|
|
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include <utility>
|
|
|
|
#include "ns.h"
|
|
|
|
#include "global.h"
|
2020-06-24 19:21:02 +00:00
|
|
|
#include "sounds.h"
|
2020-07-03 21:56:14 +00:00
|
|
|
#include "names_r.h"
|
2020-10-21 17:38:53 +00:00
|
|
|
#include "dukeactor.h"
|
2020-05-15 20:59:13 +00:00
|
|
|
|
|
|
|
BEGIN_DUKE_NS
|
|
|
|
|
2021-12-04 12:02:38 +00:00
|
|
|
DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>* actors)
|
2020-05-15 20:59:13 +00:00
|
|
|
{
|
2020-11-02 17:58:23 +00:00
|
|
|
auto t = act->temp_data;
|
2021-12-21 20:57:32 +00:00
|
|
|
auto sectp = act->spr.sector();
|
2020-07-20 21:21:27 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
switch (act->spr.picnum)
|
2020-07-20 21:21:27 +00:00
|
|
|
{
|
2021-11-19 09:41:50 +00:00
|
|
|
default:
|
|
|
|
default_case:
|
|
|
|
spawninitdefault(actj, act);
|
|
|
|
break;
|
|
|
|
case BOWLINGPINSPOT:
|
|
|
|
case RRTILE281:
|
|
|
|
case BOWLINGBALLSPOT:
|
|
|
|
case RRTILE283:
|
|
|
|
case RRTILE2025:
|
|
|
|
case RRTILE2026:
|
|
|
|
case RRTILE2027:
|
|
|
|
case RRTILE2028:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = 0;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
|
|
|
act->spr.clipdist = 0;
|
|
|
|
act->spr.extra = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_BOWLING);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3410:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 107);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8450:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 64;
|
|
|
|
act->spr.yrepeat = 64;
|
|
|
|
act->spr.extra = act->spr.lotag;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 116);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case PIG + 11:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
|
|
|
act->spr.clipdist = 0;
|
|
|
|
act->spr.extra = 0;
|
|
|
|
act->spr.cstat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 121);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8487:
|
|
|
|
case RRTILE8489:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.extra = 0;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.hitag = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 117);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE7424:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 0;
|
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 11);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE7936:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
fogactive = 1;
|
|
|
|
break;
|
|
|
|
case RRTILE6144:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
ps[screenpeek].sea_sick_stat = 1;
|
|
|
|
break;
|
|
|
|
case RRTILE8448:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
|
|
|
act->spr.clipdist = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8099:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 5;
|
|
|
|
act->spr.clipdist = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 123);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8704:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
|
|
|
act->spr.clipdist = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8192:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
ufospawnsminion = 1;
|
|
|
|
break;
|
|
|
|
case RRTILE8193:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
pistonsound = 1;
|
|
|
|
break;
|
|
|
|
case RRTILE8165:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
|
|
|
act->spr.clipdist = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
act->SetOwner(act);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 115);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE8593:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
|
|
|
act->spr.clipdist = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
act->SetOwner(act);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 122);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE285:
|
|
|
|
case RRTILE286:
|
|
|
|
case RRTILE287:
|
|
|
|
case RRTILE288:
|
|
|
|
case RRTILE289:
|
|
|
|
case RRTILE290:
|
|
|
|
case RRTILE291:
|
|
|
|
case RRTILE292:
|
|
|
|
case RRTILE293:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = 0;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
|
|
act->spr.xrepeat = 0;
|
|
|
|
act->spr.yrepeat = 0;
|
|
|
|
act->spr.clipdist = 0;
|
|
|
|
act->spr.lotag = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 106);
|
2021-11-19 09:41:50 +00:00
|
|
|
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:
|
|
|
|
// impossible to do with better methods outside of redoing the entire switch/case block
|
|
|
|
if (isRRRA()) goto rrra_badguy;
|
|
|
|
else goto default_case;
|
|
|
|
|
|
|
|
case WATERSPLASH2:
|
|
|
|
case MUD:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
SetActor(act, actj->spr.pos);
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 8 + (krand() & 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else act->spr.xrepeat = act->spr.yrepeat = 16 + (krand() & 15);
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = -16;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj->spr.sector()->lotag == 2)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-22 10:57:10 +00:00
|
|
|
act->spr.z = getceilzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.y) + (16 << 8);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_YFLIP;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (actj->spr.sector()->lotag == 1)
|
2021-12-22 10:57:10 +00:00
|
|
|
act->spr.z = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.y);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (sectp->floorpicnum == FLOORSLIME ||
|
|
|
|
sectp->ceilingpicnum == FLOORSLIME)
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 7;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case NEON1:
|
|
|
|
case NEON2:
|
|
|
|
case NEON3:
|
|
|
|
case NEON4:
|
|
|
|
case NEON5:
|
|
|
|
case NEON6:
|
|
|
|
case DOMELITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum != WATERSPLASH2)
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
if (act->spr.picnum == DOMELITE)
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case JIBS1:
|
|
|
|
case JIBS2:
|
|
|
|
case JIBS3:
|
|
|
|
case JIBS4:
|
|
|
|
case JIBS5:
|
|
|
|
case JIBS6:
|
|
|
|
case DUKETORSO:
|
|
|
|
case DUKEGUN:
|
|
|
|
case DUKELEG:
|
|
|
|
case BILLYJIBA:
|
|
|
|
case BILLYJIBB:
|
|
|
|
case HULKJIBA:
|
|
|
|
case HULKJIBB:
|
|
|
|
case HULKJIBC:
|
|
|
|
case MINJIBA:
|
|
|
|
case MINJIBB:
|
|
|
|
case MINJIBC:
|
|
|
|
case COOTJIBA:
|
|
|
|
case COOTJIBB:
|
|
|
|
case COOTJIBC:
|
|
|
|
rrra_badguy:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == JIBS6)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat >>= 1;
|
|
|
|
act->spr.yrepeat >>= 1;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else if (isRRRA())
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == RABBITJIBA)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 18;
|
|
|
|
act->spr.yrepeat = 18;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.picnum == RABBITJIBB)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 36;
|
|
|
|
act->spr.yrepeat = 36;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.picnum == RABBITJIBC)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 54;
|
|
|
|
act->spr.yrepeat = 54;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
}
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case TONGUE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
|
|
|
act->spr.ang = actj->spr.ang;
|
|
|
|
act->spr.z -= PHEIGHT_RR;
|
|
|
|
act->spr.zvel = 256 - (krand() & 511);
|
|
|
|
act->spr.xvel = 64 - (krand() & 127);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 4);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case TRANSPORTERSTAR:
|
|
|
|
case TRANSPORTERBEAM:
|
2021-12-21 20:57:32 +00:00
|
|
|
spawntransporter(actj, act, act->spr.picnum == TRANSPORTERBEAM);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case FRAMEEFFECT1:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = actj->spr.xrepeat;
|
|
|
|
act->spr.yrepeat = actj->spr.yrepeat;
|
|
|
|
if (actj->spr.picnum == APLAYER)
|
2021-11-19 09:41:50 +00:00
|
|
|
t[1] = SMALLSMOKE;
|
|
|
|
else
|
2021-12-21 20:57:32 +00:00
|
|
|
t[1] = actj->spr.picnum;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case FORCESPHERE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (!actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case BLOOD:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 4;
|
|
|
|
act->spr.z -= (26 << 8);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BLOODPOOL:
|
|
|
|
if (spawnbloodpoolpart1(act)) break;
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj->spr.pal == 1)
|
|
|
|
act->spr.pal = 1;
|
|
|
|
else if (actj->spr.pal != 6 && actj->spr.picnum != NUKEBARREL && actj->spr.picnum != TIRE)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 2; // Red
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else act->spr.pal = 0; // green
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj->spr.picnum == TIRE)
|
|
|
|
act->spr.shade = 127;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_ALIGNMENT_FLOOR;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
|
|
|
|
case BLOODSPLAT1:
|
|
|
|
case BLOODSPLAT2:
|
|
|
|
case BLOODSPLAT3:
|
|
|
|
case BLOODSPLAT4:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_ALIGNMENT_WALL;
|
|
|
|
act->spr.xrepeat = 7 + (krand() & 7);
|
|
|
|
act->spr.yrepeat = 7 + (krand() & 7);
|
|
|
|
act->spr.z -= (16 << 8);
|
|
|
|
if (actj && actj->spr.pal == 6)
|
|
|
|
act->spr.pal = 6;
|
2021-11-19 09:41:50 +00:00
|
|
|
insertspriteq(act);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case HYDRENT:
|
|
|
|
case SATELITE:
|
|
|
|
case FUELPOD:
|
|
|
|
case SOLARPANNEL:
|
|
|
|
case ANTENNA:
|
|
|
|
case GRATE1:
|
|
|
|
case CHAIR1:
|
|
|
|
case CHAIR2:
|
|
|
|
case CHAIR3:
|
|
|
|
case BOTTLE1:
|
|
|
|
case BOTTLE2:
|
|
|
|
case BOTTLE3:
|
|
|
|
case BOTTLE4:
|
|
|
|
case BOTTLE5:
|
|
|
|
case BOTTLE6:
|
|
|
|
case BOTTLE7:
|
|
|
|
case BOTTLE8:
|
|
|
|
case BOTTLE10:
|
|
|
|
case BOTTLE11:
|
|
|
|
case BOTTLE12:
|
|
|
|
case BOTTLE13:
|
|
|
|
case BOTTLE14:
|
|
|
|
case BOTTLE15:
|
|
|
|
case BOTTLE16:
|
|
|
|
case BOTTLE17:
|
|
|
|
case BOTTLE18:
|
|
|
|
case BOTTLE19:
|
|
|
|
case SCALE:
|
|
|
|
case VACUUM:
|
|
|
|
case FANSPRITE:
|
|
|
|
case CACTUS:
|
|
|
|
case CACTUSBROKE:
|
|
|
|
case CAMERALIGHT:
|
|
|
|
case MOVIECAMERA:
|
|
|
|
case IVUNIT:
|
|
|
|
case POT1:
|
|
|
|
case POT2:
|
|
|
|
case POT3:
|
|
|
|
case SUSHIPLATE1:
|
|
|
|
case SUSHIPLATE2:
|
|
|
|
case SUSHIPLATE3:
|
|
|
|
case SUSHIPLATE4:
|
|
|
|
case SUSHIPLATE5:
|
|
|
|
case WAITTOBESEATED:
|
|
|
|
case VASE:
|
|
|
|
case PIPE1:
|
|
|
|
case PIPE2:
|
|
|
|
case PIPE3:
|
|
|
|
case PIPE4:
|
|
|
|
case PIPE5:
|
|
|
|
case PIPE6:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.clipdist = 32;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 0);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case FEMMAG1:
|
|
|
|
case FEMMAG2:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat &= ~CSTAT_SPRITE_BLOCK_ALL;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 0);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case MASKWALL7:
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
auto j = act->spr.cstat & (CSTAT_SPRITE_ALIGNMENT_MASK | CSTAT_SPRITE_XFLIP | CSTAT_SPRITE_YFLIP);
|
|
|
|
act->spr.cstat = j | CSTAT_SPRITE_BLOCK;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 0);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case FOOTPRINTS:
|
|
|
|
case FOOTPRINTS2:
|
|
|
|
case FOOTPRINTS3:
|
|
|
|
case FOOTPRINTS4:
|
|
|
|
initfootprint(actj, act);
|
|
|
|
break;
|
|
|
|
case FEM10:
|
|
|
|
case NAKED1:
|
|
|
|
case STATUE:
|
|
|
|
case TOUGHGAL:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.yvel = act->spr.hitag;
|
|
|
|
act->spr.hitag = -1;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case QUEBALL:
|
|
|
|
case STRIPEBALL:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == QUEBALL || act->spr.picnum == STRIPEBALL)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
|
|
|
|
act->spr.clipdist = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 32;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BOWLINGBALL:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
|
|
|
|
act->spr.clipdist = 64;
|
|
|
|
act->spr.xrepeat = 11;
|
|
|
|
act->spr.yrepeat = 9;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case HENSTAND:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 48;
|
|
|
|
act->spr.xrepeat = 21;
|
|
|
|
act->spr.yrepeat = 15;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE295:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 107);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE296:
|
|
|
|
case RRTILE297:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 64;
|
|
|
|
act->spr.yrepeat = 64;
|
|
|
|
act->spr.clipdist = 64;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 108);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3190:
|
|
|
|
case RRTILE3191:
|
|
|
|
case RRTILE3192:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 26;
|
|
|
|
act->spr.xvel = 32;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3120:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
|
|
|
act->spr.xrepeat = 12;
|
|
|
|
act->spr.yrepeat = 10;
|
|
|
|
act->spr.xvel = 32;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3122:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 2;
|
|
|
|
act->spr.xrepeat = 8;
|
|
|
|
act->spr.yrepeat = 6;
|
|
|
|
act->spr.xvel = 16;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3123:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
|
|
|
act->spr.xrepeat = 13;
|
|
|
|
act->spr.yrepeat = 13;
|
|
|
|
act->spr.xvel = 16;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3124:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
|
|
|
act->spr.xrepeat = 17;
|
|
|
|
act->spr.yrepeat = 12;
|
|
|
|
act->spr.xvel = 32;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE3132:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
|
|
|
act->spr.xrepeat = 13;
|
|
|
|
act->spr.yrepeat = 10;
|
|
|
|
act->spr.xvel = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BOWLINGPIN:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 48;
|
|
|
|
act->spr.xrepeat = 23;
|
|
|
|
act->spr.yrepeat = 23;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DUKELYINGDEAD:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj && actj->spr.picnum == APLAYER)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = actj->spr.xrepeat;
|
|
|
|
act->spr.yrepeat = actj->spr.yrepeat;
|
|
|
|
act->spr.shade = actj->spr.shade;
|
|
|
|
act->spr.pal = ps[actj->spr.yvel].palookup;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = 0;
|
|
|
|
act->spr.extra = 1;
|
|
|
|
act->spr.xvel = 292;
|
|
|
|
act->spr.zvel = 360;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case RESPAWNMARKERRED:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == RESPAWNMARKERRED)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 8;
|
|
|
|
if (actj) act->spr.z = actj->floorz;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 128;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
[[fallthrough]];
|
|
|
|
case MIKE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == MIKE)
|
|
|
|
act->spr.yvel = act->spr.hitag;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case SPOTLITE:
|
2021-12-22 10:57:10 +00:00
|
|
|
t[0] = act->spr.pos.X;
|
2021-12-21 20:57:32 +00:00
|
|
|
t[1] = act->spr.y;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BULLETHOLE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 3;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | randomFlip();
|
2021-11-19 09:41:50 +00:00
|
|
|
insertspriteq(act);
|
|
|
|
[[fallthrough]];
|
|
|
|
case MONEY:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == MONEY)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
|
|
|
act->temp_data[0] = krand() & 2047;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = randomFlip();
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 8;
|
|
|
|
act->spr.ang = krand() & 2047;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case SHELL: //From the player
|
|
|
|
case SHOTGUNSHELL:
|
2021-12-21 20:57:32 +00:00
|
|
|
initshell(actj, act, act->spr.picnum == SHELL);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RESPAWN:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 66 - 13;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case MUSICANDSFX:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode < 2 && act->spr.pal == 1)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 11);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SOUNDFX:
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 2);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case EXPLOSION2:
|
|
|
|
case EXPLOSION3:
|
|
|
|
case BURNING:
|
|
|
|
case SMALLSMOKE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.ang = actj->spr.ang;
|
|
|
|
act->spr.shade = -64;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_YCENTER | randomXFlip();
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == EXPLOSION2)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 48;
|
|
|
|
act->spr.yrepeat = 48;
|
|
|
|
act->spr.shade = -127;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.picnum == EXPLOSION3)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 128;
|
|
|
|
act->spr.yrepeat = 128;
|
|
|
|
act->spr.shade = -127;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.picnum == SMALLSMOKE)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 12;
|
|
|
|
act->spr.yrepeat = 12;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.picnum == BURNING)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 4;
|
|
|
|
act->spr.yrepeat = 4;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-22 10:57:10 +00:00
|
|
|
int x = getflorzofslopeptr(act->spr.sector(), act->spr.pos.X, act->spr.y);
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.z > x - (12 << 8))
|
|
|
|
act->spr.z = x - (12 << 8);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case PLAYERONWATER:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = actj->spr.xrepeat;
|
|
|
|
act->spr.yrepeat = actj->spr.yrepeat;
|
|
|
|
act->spr.zvel = 128;
|
|
|
|
if (act->spr.sector()->lotag != 2)
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 13);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case APLAYER:
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
int j = ud.coop;
|
|
|
|
if (j == 2) j = 0;
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode < 2 || (ud.multimode > 1 && j != act->spr.lotag))
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
else
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 10);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case WATERBUBBLE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj && actj->spr.picnum == APLAYER)
|
|
|
|
act->spr.z -= (16 << 8);
|
|
|
|
if (act->spr.picnum == WATERBUBBLE)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
|
|
|
act->spr.ang = actj->spr.ang;
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 1 + (krand() & 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 32;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case CRANE:
|
|
|
|
initcrane(actj, act, CRANEPOLE);
|
|
|
|
break;
|
|
|
|
case WATERDRIP:
|
|
|
|
initwaterdrip(actj, act);
|
|
|
|
break;
|
|
|
|
case TRASH:
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum != WATERDRIP) act->spr.ang = krand() & 2047;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 24;
|
|
|
|
act->spr.yrepeat = 24;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 6);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case PLUG:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 9999;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 6);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case TOUCHPLATE:
|
|
|
|
t[2] = sectp->floorz;
|
|
|
|
if (sectp->lotag != 1 && sectp->lotag != 2)
|
2021-12-21 20:57:32 +00:00
|
|
|
sectp->floorz = act->spr.z;
|
|
|
|
if (act->spr.pal && ud.multimode > 1)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
[[fallthrough]];
|
|
|
|
case WATERBUBBLEMAKER:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 6);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BOLT1:
|
|
|
|
case BOLT1 + 1:
|
|
|
|
case BOLT1 + 2:
|
|
|
|
case BOLT1 + 3:
|
2021-12-21 20:57:32 +00:00
|
|
|
t[0] = act->spr.xrepeat;
|
|
|
|
t[1] = act->spr.yrepeat;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case MASTERSWITCH:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == MASTERSWITCH)
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
|
|
act->spr.yvel = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 6);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
// this is not really nice...
|
|
|
|
case BIKERB:
|
|
|
|
case BIKERBV2:
|
|
|
|
case BIKER:
|
|
|
|
case MAKEOUT:
|
|
|
|
case CHEERB:
|
|
|
|
case CHEER:
|
|
|
|
case COOTPLAY:
|
|
|
|
case BILLYPLAY:
|
|
|
|
case MINIONBOAT:
|
|
|
|
case HULKBOAT:
|
|
|
|
case CHEERBOAT:
|
|
|
|
case RABBIT:
|
|
|
|
case ROCK:
|
|
|
|
case ROCK2:
|
|
|
|
case MAMACLOUD:
|
|
|
|
case MAMA:
|
|
|
|
case UFO1_RRRA:
|
|
|
|
if (isRRRA()) goto rrra_badguy2;
|
|
|
|
else goto default_case;
|
|
|
|
|
|
|
|
case UFO1_RR:
|
|
|
|
if (!isRRRA()) goto rrra_badguy2;
|
|
|
|
else goto default_case;
|
|
|
|
|
|
|
|
case SBSWIPE:
|
|
|
|
case CHEERSTAYPUT:
|
|
|
|
if (isRRRA()) goto rrra_stayput;
|
|
|
|
else goto default_case;
|
|
|
|
case SBMOVE:
|
|
|
|
if (isRRRA()) goto default_case;
|
|
|
|
[[fallthrough]];
|
|
|
|
|
|
|
|
case BILLYRAYSTAYPUT:
|
|
|
|
case BRAYSNIPER:
|
|
|
|
case BUBBASTAND:
|
|
|
|
case HULKSTAYPUT:
|
|
|
|
case HENSTAYPUT:
|
|
|
|
case PIGSTAYPUT:
|
|
|
|
case MINIONSTAYPUT:
|
|
|
|
case COOTSTAYPUT:
|
|
|
|
rrra_stayput:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->actorstayput = act->spr.sector();
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case BOULDER:
|
|
|
|
case BOULDER1:
|
|
|
|
case RAT:
|
|
|
|
case TORNADO:
|
|
|
|
case BILLYCOCK:
|
|
|
|
case BILLYRAY:
|
|
|
|
case DOGRUN:
|
|
|
|
case LTH:
|
|
|
|
case HULK:
|
|
|
|
case HEN:
|
|
|
|
case DRONE:
|
|
|
|
case PIG:
|
|
|
|
case MINION:
|
|
|
|
case UFO2:
|
|
|
|
case UFO3:
|
|
|
|
case UFO4:
|
|
|
|
case UFO5:
|
|
|
|
case COW:
|
|
|
|
case COOT:
|
|
|
|
case SHARK:
|
|
|
|
case VIXEN:
|
|
|
|
rrra_badguy2:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 40;
|
|
|
|
act->spr.yrepeat = 40;
|
2021-11-19 09:41:50 +00:00
|
|
|
// Note: All inappropriate tiles have already been weeded out by the outer switch block so this does not need game type checks anymore.
|
2021-12-21 20:57:32 +00:00
|
|
|
switch (act->spr.picnum)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
|
|
|
case VIXEN:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.pal == 34)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 22;
|
|
|
|
act->spr.yrepeat = 21;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 22;
|
|
|
|
act->spr.yrepeat = 20;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case HULKHANG:
|
|
|
|
case HULKHANGDEAD:
|
|
|
|
case HULKJUMP:
|
|
|
|
case HULK:
|
|
|
|
case HULKSTAYPUT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case COOTPLAY:
|
|
|
|
case COOT:
|
|
|
|
case COOTSTAYPUT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 24;
|
|
|
|
act->spr.yrepeat = 18;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
|
|
|
act->spr.clipdist <<= 2;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DRONE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 14;
|
|
|
|
act->spr.yrepeat = 7;
|
|
|
|
act->spr.clipdist = 128;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SBSWIPE:
|
|
|
|
case BILLYPLAY:
|
|
|
|
case BILLYCOCK:
|
|
|
|
case BILLYRAY:
|
|
|
|
case BILLYRAYSTAYPUT:
|
|
|
|
case BRAYSNIPER:
|
|
|
|
case BUBBASTAND:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 25;
|
|
|
|
act->spr.yrepeat = 21;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case COW:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case HEN:
|
|
|
|
case HENSTAYPUT:
|
|
|
|
case HENSTAND:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.pal == 35)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 42;
|
|
|
|
act->spr.yrepeat = 30;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 21;
|
|
|
|
act->spr.yrepeat = 15;
|
|
|
|
act->spr.clipdist = 64;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case MINION:
|
|
|
|
case MINIONSTAYPUT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
if (isRRRA() && ufospawnsminion)
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DOGRUN:
|
|
|
|
case PIG:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RABBIT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 18;
|
|
|
|
act->spr.yrepeat = 18;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case MAMACLOUD:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 64;
|
|
|
|
act->spr.yrepeat = 64;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_TRANSLUCENT;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_TRANS_FLIP;
|
2021-12-22 10:57:10 +00:00
|
|
|
act->spr.pos.X += (krand() & 2047) - 1024;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.y += (krand() & 2047) - 1024;
|
|
|
|
act->spr.z += (krand() & 2047) - 1024;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case MAMA:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.pal == 30)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 26;
|
|
|
|
act->spr.yrepeat = 26;
|
|
|
|
act->spr.clipdist = 75;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.pal == 31)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 36;
|
|
|
|
act->spr.yrepeat = 36;
|
|
|
|
act->spr.clipdist = 100;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else if (act->spr.pal == 32)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 50;
|
|
|
|
act->spr.yrepeat = 50;
|
|
|
|
act->spr.clipdist = 100;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 50;
|
|
|
|
act->spr.yrepeat = 50;
|
|
|
|
act->spr.clipdist = 100;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case BIKERB:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 28;
|
|
|
|
act->spr.yrepeat = 22;
|
|
|
|
act->spr.clipdist = 72;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BIKERBV2:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 28;
|
|
|
|
act->spr.yrepeat = 22;
|
|
|
|
act->spr.clipdist = 72;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BIKER:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 28;
|
|
|
|
act->spr.yrepeat = 22;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case CHEERB:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 28;
|
|
|
|
act->spr.yrepeat = 22;
|
|
|
|
act->spr.clipdist = 72;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case CHEER:
|
|
|
|
case CHEERSTAYPUT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 20;
|
|
|
|
act->spr.yrepeat = 20;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case MAKEOUT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 26;
|
|
|
|
act->spr.yrepeat = 26;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case MINIONBOAT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case HULKBOAT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 48;
|
|
|
|
act->spr.yrepeat = 48;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case CHEERBOAT:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case TORNADO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 64;
|
|
|
|
act->spr.yrepeat = 128;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
|
|
|
act->spr.clipdist >>= 2;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_TRANSLUCENT;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case LTH:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 24;
|
|
|
|
act->spr.yrepeat = 22;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case ROCK:
|
|
|
|
case ROCK2:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 64;
|
|
|
|
act->spr.yrepeat = 64;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case UFO1_RRRA:
|
|
|
|
case UFO1_RR:
|
|
|
|
case UFO2:
|
|
|
|
case UFO3:
|
|
|
|
case UFO4:
|
|
|
|
case UFO5:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
|
|
|
act->spr.extra = 50;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SBMOVE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 48;
|
|
|
|
act->spr.yrepeat = 48;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj) act->spr.lotag = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if ((act->spr.lotag > ud.player_skill) || ud.monsters_off == 1)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
makeitfall(act);
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == RAT)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.ang = krand() & 2047;
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 48;
|
|
|
|
act->spr.cstat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum != 5501)
|
2021-11-19 09:41:50 +00:00
|
|
|
if (actorfella(act))
|
|
|
|
ps[myconnectindex].max_actors_killed++;
|
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
|
|
|
act->timetosleep = 0;
|
|
|
|
check_fta_sounds_r(act);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_ACTOR);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = actj->spr.shade;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-11-26 20:52:01 +00:00
|
|
|
else ChangeActorStat(act, STAT_ZOMBIEACTOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
case LOCATORS:
|
2021-12-21 20:57:32 +00:00
|
|
|
// act->spr.xrepeat=act->spr.yrepeat=0;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_LOCATOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case ACTIVATORLOCKED:
|
|
|
|
case ACTIVATOR:
|
2021-12-21 20:57:32 +00:00
|
|
|
// act->spr.xrepeat=act->spr.yrepeat=0;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
|
|
if (act->spr.picnum == ACTIVATORLOCKED)
|
2021-11-19 09:41:50 +00:00
|
|
|
sectp->lotag ^= 16384;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_ACTIVATOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DOORSHOCK:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.shade = -12;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case OOZ:
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = -12;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
|
|
|
if (actj->spr.picnum == NUKEBARREL)
|
|
|
|
act->spr.pal = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-11-19 09:41:50 +00:00
|
|
|
|
|
|
|
getglobalz(act);
|
|
|
|
|
|
|
|
int j = (act->floorz - act->ceilingz) >> 9;
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.yrepeat = j;
|
|
|
|
act->spr.xrepeat = 25 - (j >> 1);
|
|
|
|
if(krand() & 4) act->spr.cstat |= CSTAT_SPRITE_XFLIP;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
case HEAVYHBOMB:
|
|
|
|
act->SetOwner(act);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 9;
|
|
|
|
act->spr.yvel = 4;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case REACTOR2:
|
|
|
|
case REACTOR:
|
|
|
|
case RECON:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (initreactor(actj, act, act->spr.picnum == RECON)) return act;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case RPG2SPRITE:
|
|
|
|
case MOTOAMMO:
|
|
|
|
case BOATAMMO:
|
|
|
|
if (!isRRRA()) goto default_case;
|
|
|
|
[[fallthrough]];
|
|
|
|
|
|
|
|
case ATOMICHEALTH:
|
|
|
|
case STEROIDS:
|
|
|
|
case HEATSENSOR:
|
|
|
|
case SHIELD:
|
|
|
|
case AIRTANK:
|
|
|
|
case TRIPBOMBSPRITE:
|
|
|
|
case COWPIE:
|
|
|
|
case HOLODUKE:
|
|
|
|
|
|
|
|
case FIRSTGUNSPRITE:
|
|
|
|
case CHAINGUNSPRITE:
|
|
|
|
case SHOTGUNSPRITE:
|
|
|
|
case RPGSPRITE:
|
|
|
|
case SHRINKERSPRITE:
|
|
|
|
case FREEZESPRITE:
|
|
|
|
case DEVISTATORSPRITE:
|
|
|
|
|
|
|
|
case SHOTGUNAMMO:
|
|
|
|
case FREEZEAMMO:
|
|
|
|
case HBOMBAMMO:
|
|
|
|
case CRYSTALAMMO:
|
|
|
|
case GROWAMMO:
|
|
|
|
case BATTERYAMMO:
|
|
|
|
case DEVISTATORAMMO:
|
|
|
|
case RPGAMMO:
|
|
|
|
case BOOTS:
|
|
|
|
case AMMO:
|
|
|
|
case AMMOLOTS:
|
|
|
|
case BEER:
|
|
|
|
case FIRSTAID:
|
|
|
|
case SIXPAK:
|
|
|
|
|
|
|
|
case SAWAMMO:
|
|
|
|
case BOWLINGBALLSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 0;
|
|
|
|
if (act->spr.picnum != BOWLINGBALLSPRITE)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.z -= (32 << 8);
|
|
|
|
act->spr.zvel = -(4 << 8);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.zvel = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
ssp(act, CLIPMASK0);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = randomXFlip();
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
act->SetOwner(act);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if ((ud.multimode < 2 && act->spr.pal != 0) || (act->spr.lotag > ud.player_skill))
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
|
|
|
|
case ACCESSCARD:
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == ATOMICHEALTH)
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_YCENTER;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode > 1 && ud.coop != 1 && act->spr.picnum == ACCESSCARD)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == AMMO)
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 16;
|
|
|
|
else act->spr.xrepeat = act->spr.yrepeat = 32;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = -17;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj) ChangeActorStat(act, STAT_ACTOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
else
|
|
|
|
{
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_ZOMBIEACTOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
makeitfall(act);
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
switch (act->spr.picnum)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
|
|
|
case FIRSTGUNSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SHOTGUNAMMO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 18;
|
|
|
|
act->spr.yrepeat = 17;
|
|
|
|
if (isRRRA()) act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SIXPAK:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 13;
|
|
|
|
act->spr.yrepeat = 9;
|
|
|
|
if (isRRRA()) act->spr.cstat = CSTAT_SPRITE_BLOCK_HITSCAN;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case FIRSTAID:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 8;
|
|
|
|
act->spr.yrepeat = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BEER:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 5;
|
|
|
|
act->spr.yrepeat = 4;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case AMMO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 9;
|
|
|
|
act->spr.yrepeat = 9;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case MOTOAMMO:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 23;
|
|
|
|
act->spr.yrepeat = 23;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BOATAMMO:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 16;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case COWPIE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 8;
|
|
|
|
act->spr.yrepeat = 6;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case STEROIDS:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 13;
|
|
|
|
act->spr.yrepeat = 9;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case ACCESSCARD:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 11;
|
|
|
|
act->spr.yrepeat = 12;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case HEATSENSOR:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 6;
|
|
|
|
act->spr.yrepeat = 4;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case AIRTANK:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 19;
|
|
|
|
act->spr.yrepeat = 16;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BATTERYAMMO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 15;
|
|
|
|
act->spr.yrepeat = 15;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case BOWLINGBALLSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 11;
|
|
|
|
act->spr.yrepeat = 11;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case TRIPBOMBSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 11;
|
|
|
|
act->spr.yrepeat = 11;
|
|
|
|
act->spr.yvel = 4;
|
|
|
|
act->spr.xvel = 32;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RPGSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 16;
|
|
|
|
act->spr.yrepeat = 14;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RPG2SPRITE:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 20;
|
|
|
|
act->spr.yrepeat = 20;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SHRINKERSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 22;
|
|
|
|
act->spr.yrepeat = 13;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DEVISTATORSPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 18;
|
|
|
|
act->spr.yrepeat = 17;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SAWAMMO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 12;
|
|
|
|
act->spr.yrepeat = 7;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case GROWSPRITEICON:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 10;
|
|
|
|
act->spr.yrepeat = 9;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case DEVISTATORAMMO:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 10;
|
|
|
|
act->spr.yrepeat = 9;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case ATOMICHEALTH:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 8;
|
|
|
|
act->spr.yrepeat = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case FREEZESPRITE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = 17;
|
|
|
|
act->spr.yrepeat = 16;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = act->spr.sector()->floorshade;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case WATERFOUNTAIN:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case TREE1:
|
|
|
|
case TREE2:
|
|
|
|
case TIRE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL; // Make it hitable
|
|
|
|
act->spr.extra = 1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 6);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case CAMERA1:
|
|
|
|
case CAMERA1 + 1:
|
|
|
|
case CAMERA1 + 2:
|
|
|
|
case CAMERA1 + 3:
|
|
|
|
case CAMERA1 + 4:
|
|
|
|
case CAMERAPOLE:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 1;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (gs.camerashitable) act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
else act->spr.cstat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode < 2 && act->spr.pal != 0)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else act->spr.pal = 0;
|
|
|
|
if (act->spr.picnum == CAMERAPOLE) break;
|
|
|
|
act->spr.picnum = CAMERA1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case STEAM:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.ang = actj->spr.ang;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT;
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 1;
|
|
|
|
act->spr.xvel = -8;
|
2021-11-19 09:41:50 +00:00
|
|
|
ssp(act, CLIPMASK0);
|
|
|
|
}
|
|
|
|
[[fallthrough]];
|
|
|
|
case CEILINGSTEAM:
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case SECTOREFFECTOR:
|
2021-12-04 12:02:38 +00:00
|
|
|
spawneffector(act, actors);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case SEENINE:
|
|
|
|
case OOZFILTER:
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = -16;
|
|
|
|
if (act->spr.xrepeat <= 8)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
else act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.extra = gs.impact_damage << 2;
|
2021-11-19 09:41:50 +00:00
|
|
|
act->SetOwner(act);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case CRACK1:
|
|
|
|
case CRACK2:
|
|
|
|
case CRACK3:
|
|
|
|
case CRACK4:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_ALIGNMENT_WALL;
|
|
|
|
act->spr.extra = 1;
|
|
|
|
if (ud.multimode < 2 && act->spr.pal != 0)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
act->SetOwner(act);
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xvel = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
ssp(act, CLIPMASK0);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case EMPTYBIKE:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode < 2 && act->spr.pal == 1)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 0;
|
|
|
|
act->spr.xrepeat = 18;
|
|
|
|
act->spr.yrepeat = 18;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
act->saved_ammo = 100;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.lotag = 1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_ACTOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case EMPTYBOAT:
|
|
|
|
if (!isRRRA()) goto default_case;
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.multimode < 2 && act->spr.pal == 1)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
}
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.pal = 0;
|
|
|
|
act->spr.xrepeat = 32;
|
|
|
|
act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = MulScale(act->spr.xrepeat, tileWidth(act->spr.picnum), 7);
|
2021-11-19 09:41:50 +00:00
|
|
|
act->saved_ammo = 20;
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.lotag = 1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 1);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case TOILET:
|
|
|
|
case STALL:
|
|
|
|
case RRTILE2121:
|
|
|
|
case RRTILE2122:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.lotag = 1;
|
|
|
|
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
|
|
|
act->spr.clipdist = 8;
|
2021-11-19 09:41:50 +00:00
|
|
|
act->SetOwner(act);
|
|
|
|
break;
|
|
|
|
case CANWITHSOMETHING:
|
|
|
|
case RUBBERCAN:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.extra = 0;
|
2021-11-19 09:41:50 +00:00
|
|
|
[[fallthrough]];
|
|
|
|
case EXPLODINGBARREL:
|
|
|
|
case HORSEONSIDE:
|
|
|
|
case FIREBARREL:
|
|
|
|
case NUKEBARREL:
|
|
|
|
case FIREVASE:
|
|
|
|
case NUKEBARRELDENTED:
|
|
|
|
case NUKEBARRELLEAKED:
|
|
|
|
case WOODENHORSE:
|
|
|
|
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj)
|
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 32;
|
|
|
|
act->spr.clipdist = 72;
|
2021-11-19 09:41:50 +00:00
|
|
|
makeitfall(act);
|
2021-12-21 20:57:32 +00:00
|
|
|
if (actj) act->SetOwner(actj);
|
2021-11-19 09:41:50 +00:00
|
|
|
else act->SetOwner(act);
|
|
|
|
[[fallthrough]];
|
|
|
|
|
|
|
|
case EGG:
|
2021-12-21 20:57:32 +00:00
|
|
|
if (ud.monsters_off == 1 && act->spr.picnum == EGG)
|
2021-11-19 09:41:50 +00:00
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.xrepeat = act->spr.yrepeat = 0;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_MISC);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-12-21 20:57:32 +00:00
|
|
|
if (act->spr.picnum == EGG)
|
|
|
|
act->spr.clipdist = 24;
|
|
|
|
act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip();
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_ZOMBIEACTOR);
|
2021-11-19 09:41:50 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case TOILETWATER:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.shade = -16;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, STAT_STANDABLE);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
|
|
|
case RRTILE63:
|
2021-12-21 20:57:32 +00:00
|
|
|
act->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
|
|
|
|
act->spr.xrepeat = 1;
|
|
|
|
act->spr.yrepeat = 1;
|
|
|
|
act->spr.clipdist = 1;
|
2021-11-26 20:52:01 +00:00
|
|
|
ChangeActorStat(act, 100);
|
2021-11-19 09:41:50 +00:00
|
|
|
break;
|
2020-07-20 21:21:27 +00:00
|
|
|
}
|
2021-11-19 09:41:50 +00:00
|
|
|
return act;
|
2020-05-15 20:59:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
END_DUKE_NS
|