From aae2c2dc3c4f16f2306a633679fe824fb2387f05 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 15 Dec 2022 10:35:40 +0100 Subject: [PATCH] - exported RR's enemies --- source/games/duke/src/spawn_r.cpp | 225 +--------- .../redneck.redneck/rmapinfo.spawnclasses | 13 +- .../redneck.ridesagain/rmapinfo.spawnclasses | 18 + .../filter/redneck/rmapinfo.spawnclasses | 11 + wadsrc/static/zscript.txt | 1 + .../games/duke/actors/redneckenemies.zs | 385 ++++++++++++++++++ 6 files changed, 425 insertions(+), 228 deletions(-) create mode 100644 wadsrc/static/zscript/games/duke/actors/redneckenemies.zs diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp index 1ea67047c..a02a58ebd 100644 --- a/source/games/duke/src/spawn_r.cpp +++ b/source/games/duke/src/spawn_r.cpp @@ -57,15 +57,12 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* } 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* 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; } diff --git a/wadsrc/static/filter/redneck.redneck/rmapinfo.spawnclasses b/wadsrc/static/filter/redneck.redneck/rmapinfo.spawnclasses index 73d708a80..47de8f0dc 100644 --- a/wadsrc/static/filter/redneck.redneck/rmapinfo.spawnclasses +++ b/wadsrc/static/filter/redneck.redneck/rmapinfo.spawnclasses @@ -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 diff --git a/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses b/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses index ed2071378..307d60e03 100644 --- a/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses +++ b/wadsrc/static/filter/redneck.ridesagain/rmapinfo.spawnclasses @@ -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 diff --git a/wadsrc/static/filter/redneck/rmapinfo.spawnclasses b/wadsrc/static/filter/redneck/rmapinfo.spawnclasses index 7c2d66014..8756e23c3 100644 --- a/wadsrc/static/filter/redneck/rmapinfo.spawnclasses +++ b/wadsrc/static/filter/redneck/rmapinfo.spawnclasses @@ -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 + } diff --git a/wadsrc/static/zscript.txt b/wadsrc/static/zscript.txt index ea07e912c..dcedf55bc 100644 --- a/wadsrc/static/zscript.txt +++ b/wadsrc/static/zscript.txt @@ -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" diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs new file mode 100644 index 000000000..42f3c7901 --- /dev/null +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies.zs @@ -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"; + } +}