- exported RR's enemies

This commit is contained in:
Christoph Oelckers 2022-12-15 10:35:40 +01:00
parent 779026162d
commit aae2c2dc3c
6 changed files with 425 additions and 228 deletions

View file

@ -57,15 +57,12 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
}
auto sectp = act->sector();
switch (act->spr.picnum)
if (!act->isPlayer())
{
default:
default_case:
if (!badguy(act) || commonEnemySetup(act, actj))
CallInitialize(act);
break;
case RTILE_APLAYER:
}
else
{
act->spr.scale = DVector2(0, 0);
int j = ud.coop;
@ -75,222 +72,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
ChangeActorStat(act, STAT_MISC);
else
ChangeActorStat(act, STAT_PLAYER);
break;
}
/* animate
case RTILE_SBMOVE:
if (!isRRRA())
t->shade = -127;
break;
*/
// this is not really nice...
case RTILE_BIKERB:
case RTILE_BIKERBV2:
case RTILE_BIKER:
case RTILE_MAKEOUT:
case RTILE_CHEERB:
case RTILE_CHEER:
case RTILE_COOTPLAY:
case RTILE_BILLYPLAY:
case RTILE_MINIONBOAT:
case RTILE_HULKBOAT:
case RTILE_CHEERBOAT:
case RTILE_ROCK:
case RTILE_ROCK2:
case RTILE_MAMACLOUD:
case RTILE_MAMA:
if (isRRRA()) goto rrra_badguy2;
else goto default_case;
case RTILE_SBSWIPE:
case RTILE_CHEERSTAYPUT:
if (isRRRA()) goto rrra_stayput;
else goto default_case;
case RTILE_SBMOVE:
if (isRRRA()) goto default_case;
[[fallthrough]];
case RTILE_BUBBASTAND:
case RTILE_HULKSTAYPUT:
rrra_stayput:
act->actorstayput = act->sector();
[[fallthrough]];
case RTILE_BOULDER:
case RTILE_BOULDER1:
case RTILE_TORNADO:
case RTILE_DOGRUN:
case RTILE_LTH:
case RTILE_HULK:
case RTILE_DRONE:
case RTILE_VIXEN:
rrra_badguy2:
act->spr.scale = DVector2(0.625, 0.625);
// Note: All inappropriate tiles have already been weeded out by the outer switch block so this does not need game type checks anymore.
switch (act->spr.picnum)
{
case RTILE_VIXEN:
if (act->spr.pal == 34)
{
act->spr.scale = DVector2(0.34375, 0.328125);
}
else
{
act->spr.scale = DVector2(0.34375, 0.3125);
}
act->setClipDistFromTile();
break;
case RTILE_HULKHANG:
case RTILE_HULKHANGDEAD:
case RTILE_HULKJUMP:
case RTILE_HULK:
case RTILE_HULKSTAYPUT:
act->spr.scale = DVector2(0.5, 0.5);
act->setClipDistFromTile();
break;
case RTILE_COOTPLAY:
act->spr.scale = DVector2(0.375, 0.28125);
act->setClipDistFromTile();
act->clipdist *= 4;
break;
case RTILE_DRONE:
act->spr.scale = DVector2(0.21875, 0.109375);
act->clipdist = 32;
break;
case RTILE_SBSWIPE:
case RTILE_BILLYPLAY:
case RTILE_BUBBASTAND:
act->spr.scale = DVector2(0.390625, 0.328125);
act->setClipDistFromTile();
break;
case RTILE_DOGRUN:
act->spr.scale = DVector2(0.25, 0.25);
act->setClipDistFromTile();
break;
case RTILE_MAMACLOUD:
act->spr.scale = DVector2(1, 1);
act->spr.cstat = CSTAT_SPRITE_TRANSLUCENT;
act->spr.cstat |= CSTAT_SPRITE_TRANS_FLIP;
act->spr.pos.X += krandf(128) - 64;
act->spr.pos.Y += krandf(128) - 64;
act->spr.pos.Z += krandf(8) - 4;
break;
case RTILE_MAMA:
if (actj && isrespawncontroller(actj))
act->spr.pal = actj->spr.pal;
if (act->spr.pal == 30)
{
act->spr.scale = DVector2(0.40625, 0.40625);
act->clipdist = 18.75;
}
else if (act->spr.pal == 31)
{
act->spr.scale = DVector2(0.5625, 0.5625);
act->clipdist = 25;
}
else if (act->spr.pal == 32)
{
act->spr.scale = DVector2(0.78125, 0.78125);
act->clipdist = 25;
}
else
{
act->spr.scale = DVector2(0.78125, 0.78125);
act->clipdist = 25;
}
break;
case RTILE_BIKERB:
act->spr.scale = DVector2(0.4375, 0.34375);
act->clipdist = 18;
break;
case RTILE_BIKERBV2:
act->spr.scale = DVector2(0.4375, 0.34375);
act->clipdist = 18;
break;
case RTILE_BIKER:
act->spr.scale = DVector2(0.4375, 0.34375);
act->setClipDistFromTile();
break;
case RTILE_CHEERB:
act->spr.scale = DVector2(0.4375, 0.34375);
act->clipdist = 18;
break;
case RTILE_CHEER:
case RTILE_CHEERSTAYPUT:
act->spr.scale = DVector2(0.34375, 0.3125);
act->setClipDistFromTile();
break;
case RTILE_MAKEOUT:
act->spr.scale = DVector2(0.40625, 0.40625);
act->setClipDistFromTile();
break;
case RTILE_MINIONBOAT:
act->spr.scale = DVector2(0.25, 0.25);
act->setClipDistFromTile();
break;
case RTILE_HULKBOAT:
act->spr.scale = DVector2(0.75, 0.75);
act->setClipDistFromTile();
break;
case RTILE_CHEERBOAT:
act->spr.scale = DVector2(0.5, 0.5);
act->setClipDistFromTile();
break;
case RTILE_TORNADO:
act->spr.scale = DVector2(1, 2);
act->setClipDistFromTile();
act->clipdist *= 0.25;
act->spr.cstat = CSTAT_SPRITE_TRANSLUCENT;
break;
case RTILE_LTH:
act->spr.scale = DVector2(0.375, 0.34375);
act->setClipDistFromTile();
break;
case RTILE_ROCK:
case RTILE_ROCK2:
act->spr.scale = DVector2(1, 1);
act->setClipDistFromTile();
break;
case RTILE_SBMOVE:
act->spr.scale = DVector2(0.75, 0.75);
act->setClipDistFromTile();
break;
default:
break;
}
if (actj) act->spr.lotag = 0;
if ((act->spr.lotag > ud.player_skill) || ud.monsters_off == 1)
{
act->spr.scale = DVector2(0, 0);
ChangeActorStat(act, STAT_MISC);
break;
}
else
{
makeitfall(act);
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
if (actj)
{
act->timetosleep = 0;
CallPlayFTASound(act);
ChangeActorStat(act, STAT_ACTOR);
act->spr.shade = actj->spr.shade;
}
else ChangeActorStat(act, STAT_ZOMBIEACTOR);
}
break;
}
return act;
}

View file

@ -1,10 +1,11 @@
spawnclasses
{
5260 = "RedneckUfo1"
5274 = "RedneckUfo2"
5278 = "RedneckUfo3"
5282 = "RedneckUfo4"
5286 = "RedneckUfo5"
{
5015 = RedneckShitBoss
5260 = RedneckUfo1
5274 = RedneckUfo2
5278 = RedneckUfo3
5282 = RedneckUfo4
5286 = RedneckUfo5
2654 = DukeGenericDestructible, "*RRTILE2654", "", "GLASS_BREAKING", spawnglass
2656 = DukeGenericDestructible, "*RRTILE2656", "", "GLASS_BREAKING", spawnglass
3172 = DukeGenericDestructible, "*RRTILE3172", "", "GLASS_BREAKING", spawnglass

View file

@ -167,6 +167,24 @@ spawnclasses
// stuff below uses CON
7280 = RedneckRabbit
5890 = RedneckBikerB
5891 = RedneckBikerBV2
6225 = RedneckMakeout
6401 = RedneckCheerleaderB
6658 = RedneckCheerleader
7030 = RedneckCootplay
7035 = RedneckBillyPlay
7192 = RedneckMinionBoat
7199 = RedneckHulkBoat
7206 = RedneckCheerBoat
8035 = RedneckRock
8036 = RedneckRock2
8663 = RedneckMamaCloud
8705 = RedneckMama
4770 = RedneckSBSwipe
6659 = RedneckCheerStayput
78 = RedneckMotoAmmo
8460 = RedneckBoatAmmo

View file

@ -342,5 +342,16 @@ spawnclasses
4249 = RedneckBillyRaySniper
5120 = RedneckMinion
5121 = RedneckMinionStayput
4504 = RedneckBubbaStand
4649 = RedneckHulk
4650 = RedneckHulkStayput
256 = RedneckBoulder
264 = RedneckBoulder1
1930 = RedneckTornado
4260 = RedneckDog
4352 = RedneckSheriff
4916 = RedneckMosquito
5635 = RedneckVixen
}

View file

@ -136,6 +136,7 @@ version "4.10"
#include "zscript/games/duke/actors/powderkeg.zs"
#include "zscript/games/duke/actors/redneckmisc.zs"
#include "zscript/games/duke/actors/redneckitems.zs"
#include "zscript/games/duke/actors/redneckenemies.zs"
#include "zscript/games/duke/actors/emptybike.zs"
#include "zscript/games/duke/actors/rrteleport.zs"
#include "zscript/games/duke/actors/bowling.zs"

View file

@ -0,0 +1,385 @@
class RedneckBikerBV2 : DukeActor
{
default
{
pic "BIKERBV2";
}
override void Initialize()
{
self.scale = (0.4375, 0.34375);
self.clipdist = 18;
}
}
class RedneckBikerB : DukeActor
{
default
{
pic "BIKERB";
}
override void Initialize()
{
self.scale = (0.4375, 0.34375);
self.clipdist = 18;
}
}
class RedneckBiker : DukeActor
{
default
{
pic "BIKER";
}
override void Initialize()
{
self.scale = (0.4375, 0.34375);
self.setClipDistFromTile();
}
}
class RedneckMakeout : DukeActor
{
default
{
pic "MAKEOUT";
}
override void Initialize()
{
self.scale = (0.40625, 0.40625);
self.setClipDistFromTile();
}
}
class RedneckCheerleaderB : DukeActor
{
default
{
pic "CHEERB";
}
override void Initialize()
{
self.scale = (0.4375, 0.34375);
self.clipdist = 18;
}
}
class RedneckCheerleader : DukeActor
{
default
{
pic "CHEER";
}
override void Initialize()
{
self.scale = (0.34375, 0.3125);
self.setClipDistFromTile();
}
}
class RedneckCootplay : DukeActor
{
default
{
pic "COOTPLAY";
}
override void Initialize()
{
self.scale = (0.375, 0.28128);
self.setClipDistFromTile();
self.clipdist *= 4;
}
}
class RedneckBillyPlay : DukeActor
{
default
{
pic "BILLYPLAY";
}
override void Initialize()
{
self.scale = (0.390625, 0.328125);
self.setClipDistFromTile();
}
}
class RedneckMinionBoat : DukeActor
{
default
{
pic "MINIONBOAT";
}
override void Initialize()
{
self.scale = (0.25, 0.25);
self.setClipDistFromTile();
}
}
class RedneckHulkBoat : DukeActor
{
default
{
pic "HULKBOAT";
}
override void Initialize()
{
self.scale = (0.75, 0.75);
self.setClipDistFromTile();
}
}
class RedneckCheerBoat : DukeActor
{
default
{
pic "CHEERBOAT";
}
override void Initialize()
{
self.scale = (0.5, 0.5);
self.setClipDistFromTile();
}
}
class RedneckRock : DukeActor
{
default
{
pic "ROCK";
}
override void Initialize()
{
self.scale = (1, 1);
self.setClipDistFromTile();
}
}
class RedneckRock2 : RedneckRock
{
default
{
pic "ROCK2";
}
}
class RedneckMamaCloud : DukeActor
{
default
{
pic "MAMACLOUD";
}
override void Initialize()
{
self.scale = (1, 1);
self.cstat = CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP;
self.pos.X += frandom(-64, 64);
self.pos.Y += frandom(-64, 64);
self.pos.Z += frandom(-4, 4);
}
}
class RedneckMama : DukeActor
{
default
{
pic "MAMA";
}
override void Initialize()
{
if (self.pal == 30)
{
self.scale = (0.40625, 0.40625);
self.clipdist = 18.75;
}
else if (self.pal == 31)
{
self.scale = (0.5625, 0.5625);
self.clipdist = 25;
}
else if (self.pal == 32)
{
self.scale = (0.78125, 0.78125);
self.clipdist = 25;
}
else
{
self.scale = (0.78125, 0.78125);
self.clipdist = 25;
}
}
}
class RedneckSBSwipe : DukeActor
{
default
{
pic "SBSWIPE";
}
override void initialize()
{
self.actorstayput = self.sector; // make this a flag once everything has been exported.
self.scale = (0.390625, 0.328125);
self.setClipDistFromTile();
}
}
class RedneckCheerStayput : RedneckCheerleader
{
default
{
pic "CHEERSTAYPUT";
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}
class RedneckShitBoss : DukeActor
{
default
{
pic "SBMOVE";
}
override void Initialize()
{
self.scale = (0.75, 0.75);
self.setClipDistFromTile();
}
override bool animate(tspritetype t)
{
t.shade = -127;
return false;
}
}
class RedneckBubbaStand : DukeActor
{
default
{
pic "BUBBASTAND";
}
override void initialize()
{
self.actorstayput = self.sector; // make this a flag once everything has been exported.
self.scale = (0.390625, 0.328125);
self.setClipDistFromTile();
}
}
class RedneckHulk : DukeActor
{
default
{
pic "HULK";
}
override void Initialize()
{
self.scale = (0.5, 0.5);
self.setClipDistFromTile();
}
}
class RedneckHulkStayput : RedneckHulk
{
default
{
pic "HULKSTAYPUT";
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}
class RedneckBoulder : DukeActor
{
default
{
pic "BOULDER";
}
}
class RedneckBoulder1 : DukeActor
{
default
{
pic "BOULDER1";
}
}
class RedneckTornado : DukeActor
{
default
{
pic "TORNADO";
}
override void Initialize()
{
self.scale = (1, 2);
self.setClipDistFromTile();
self.clipdist *= 0.25;
self.cstat = CSTAT_SPRITE_TRANSLUCENT;
}
}
class RedneckDog : DukeActor
{
default
{
pic "DOGRUN";
}
override void Initialize()
{
self.scale = (0.25, 0.25);
self.setClipDistFromTile();
}
}
class RedneckSheriff : DukeActor
{
default
{
pic "LTH";
}
override void Initialize()
{
self.scale = (0.375, 0.34375);
self.setClipDistFromTile();
}
}
class RedneckMosquito : DukeActor
{
default
{
pic "DRONE";
}
override void Initialize()
{
self.scale = (0.21875, 0.109375);
self.clipdist = 32;
}
}
class RedneckVixen : DukeActor
{
default
{
pic "VIXEN";
}
}