From 82d04756be14e91d32abe2da21a369cf227ac7d9 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 14 Dec 2022 16:24:31 +0100 Subject: [PATCH] - exported a few of Duke's decorations --- source/games/duke/src/flags_r.cpp | 24 +----- source/games/duke/src/premap_r.cpp | 9 -- source/games/duke/src/spawn_d.cpp | 22 ----- source/games/duke/src/spawn_r.cpp | 21 ----- .../filter/dukelike/rmapinfo.spawnclasses | 12 ++- wadsrc/static/zscript.txt | 1 + .../zscript/games/duke/actors/dukedecos.zs | 82 +++++++++++++++++++ 7 files changed, 97 insertions(+), 74 deletions(-) create mode 100644 wadsrc/static/zscript/games/duke/actors/dukedecos.zs diff --git a/source/games/duke/src/flags_r.cpp b/source/games/duke/src/flags_r.cpp index 02e0e2394..03bf60642 100644 --- a/source/games/duke/src/flags_r.cpp +++ b/source/games/duke/src/flags_r.cpp @@ -135,30 +135,13 @@ void initactorflags_r() setflag(SFLAG_TRIGGER_IFHITSECTOR, { RTILE_EXPLOSION2, RTILE_EXPLOSION3 }); setflag(SFLAG_MOVEFTA_MAKESTANDABLE, { - RTILE_RUBBERCAN, - RTILE_EXPLODINGBARREL, - RTILE_WOODENHORSE, - RTILE_HORSEONSIDE, RTILE_CANWITHSOMETHING, - RTILE_FIREBARREL, - RTILE_FIREVASE, - RTILE_NUKEBARREL, - RTILE_NUKEBARRELDENTED, - RTILE_NUKEBARRELLEAKED }); // non-STAT_ACTOR classes that need CON support. For compatibility this must be explicitly enabled. setflag(SFLAG3_FORCERUNCON, { RTILE_EXPLODINGBARREL, - RTILE_WOODENHORSE, - RTILE_HORSEONSIDE, - RTILE_FIREBARREL, - RTILE_FIREVASE, - RTILE_NUKEBARREL, - RTILE_NUKEBARRELDENTED, - RTILE_NUKEBARRELLEAKED, RTILE_TOILETWATER, - RTILE_RUBBERCAN, RTILE_STEAM, RTILE_CEILINGSTEAM, RTILE_SHOTSPARK1, @@ -180,7 +163,6 @@ void initactorflags_r() setflag(SFLAG_NOFLOORFIRE, { RTILE_TREE1, RTILE_TREE2 }); setflag(SFLAG_HITRADIUS_FLAG1, { RTILE_BOX, RTILE_TREE1, RTILE_TREE2, RTILE_TIRE }); setflag(SFLAG_HITRADIUS_FLAG2, { RTILE_QUEBALL, RTILE_STRIPEBALL, RTILE_BOWLINGPIN, RTILE_DUKELYINGDEAD }); - setflag(SFLAG_CHECKSLEEP, { RTILE_RUBBERCAN, RTILE_EXPLODINGBARREL, RTILE_WOODENHORSE, RTILE_HORSEONSIDE, RTILE_CANWITHSOMETHING, RTILE_FIREBARREL, RTILE_NUKEBARREL, RTILE_NUKEBARRELDENTED, RTILE_NUKEBARRELLEAKED }); setflag(SFLAG_NOTELEPORT, { RTILE_TRANSPORTERSTAR, RTILE_TRANSPORTERBEAM, RTILE_BULLETHOLE, RTILE_WATERSPLASH2, RTILE_BURNING, RTILE_FIRE, RTILE_MUD }); setflag(SFLAG_SE24_NOCARRY, { RTILE_BULLETHOLE, RTILE_BOLT1, RTILE_BOLT2, RTILE_BOLT3, RTILE_BOLT4, RTILE_CRANE, RTILE_CRANE1, RTILE_CRANE2, RTILE_BARBROKE }); setflag(SFLAG_SE24_REMOVE, { RTILE_BLOODPOOL, RTILE_PUKE, RTILE_FOOTPRINTS, RTILE_FOOTPRINTS2, RTILE_FOOTPRINTS3 }); @@ -188,12 +170,12 @@ void initactorflags_r() setflag(SFLAG2_EXPLOSIVE, {RTILE_RPG, RTILE_RADIUSEXPLOSION, RTILE_SEENINE, RTILE_OOZFILTER }); if (isRRRA()) setflag(SFLAG2_EXPLOSIVE, { RTILE_RPG2 }); setflag(SFLAG2_BRIGHTEXPLODE, { RTILE_SEENINE, RTILE_OOZFILTER }); - setflag(SFLAG2_DOUBLEDMGTHRUST, { RTILE_RADIUSEXPLOSION, RTILE_RPG, RTILE_HYDRENT, RTILE_DYNAMITE, RTILE_SEENINE, RTILE_OOZFILTER, RTILE_EXPLODINGBARREL, RTILE_POWDERKEG }); + setflag(SFLAG2_DOUBLEDMGTHRUST, { RTILE_RADIUSEXPLOSION, RTILE_RPG, RTILE_HYDRENT, RTILE_DYNAMITE, RTILE_SEENINE, RTILE_OOZFILTER, RTILE_POWDERKEG }); if (isRRRA()) setflag(SFLAG2_DOUBLEDMGTHRUST, { RTILE_RPG2 }); - setflag(SFLAG2_BREAKMIRRORS, { RTILE_RADIUSEXPLOSION, RTILE_RPG, RTILE_HYDRENT, RTILE_DYNAMITE, RTILE_SEENINE, RTILE_OOZFILTER, RTILE_EXPLODINGBARREL, RTILE_POWDERKEG }); + setflag(SFLAG2_BREAKMIRRORS, { RTILE_RADIUSEXPLOSION, RTILE_RPG, RTILE_HYDRENT, RTILE_DYNAMITE, RTILE_SEENINE, RTILE_OOZFILTER, RTILE_POWDERKEG }); if (isRRRA()) setflag(SFLAG2_BREAKMIRRORS, { RTILE_RPG2 }); setflag(SFLAG2_CAMERA, { RTILE_CAMERA1 }); - setflag(SFLAG2_GREENBLOOD, { RTILE_OOZFILTER, RTILE_NUKEBARREL }); + setflag(SFLAG2_GREENBLOOD, { RTILE_OOZFILTER }); setflag(SFLAG2_ALWAYSROTATE1, { RTILE_RAT, RTILE_CAMERA1, RTILE_CHAIR3 }); setflag(SFLAG2_ALWAYSROTATE2, { RTILE_RPG }); setflag(SFLAG2_DIENOW, { RTILE_RADIUSEXPLOSION }); diff --git a/source/games/duke/src/premap_r.cpp b/source/games/duke/src/premap_r.cpp index 84b6a7cae..81c8c2014 100644 --- a/source/games/duke/src/premap_r.cpp +++ b/source/games/duke/src/premap_r.cpp @@ -81,9 +81,6 @@ static void cachespritenum(DDukeActor* actor) case RTILE_FORCERIPPLE: maxc = 9; break; - case RTILE_RUBBERCAN: - maxc = 2; - break; case RTILE_TOILETWATER: maxc = 4; break; @@ -263,12 +260,6 @@ static void cachespritenum(DDukeActor* actor) case RTILE_DRONE: maxc = 6; break; - case RTILE_EXPLODINGBARREL: - maxc = 3; - break; - case RTILE_NUKEBARREL: - maxc = 5; - break; case RTILE_VIXEN: maxc = 214; for (j = actor->spr.picnum; j < actor->spr.picnum + maxc; j++) diff --git a/source/games/duke/src/spawn_d.cpp b/source/games/duke/src/spawn_d.cpp index 2443660be..e1ecc0a11 100644 --- a/source/games/duke/src/spawn_d.cpp +++ b/source/games/duke/src/spawn_d.cpp @@ -197,28 +197,6 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray* case DTILE_CEILINGSTEAM: ChangeActorStat(act, STAT_STANDABLE); break; - - case DTILE_RUBBERCAN: - act->spr.extra = 0; - [[fallthrough]]; - case DTILE_EXPLODINGBARREL: - case DTILE_HORSEONSIDE: - case DTILE_FIREBARREL: - case DTILE_NUKEBARREL: - case DTILE_FIREVASE: - case DTILE_NUKEBARRELDENTED: - case DTILE_NUKEBARRELLEAKED: - case DTILE_WOODENHORSE: - - if (actj) - act->spr.scale = DVector2(0.5, 0.5); - act->clipdist = 18; - makeitfall(act); - if (actj) act->SetOwner(actj); - else act->SetOwner(act); - act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip(); - ChangeActorStat(act, STAT_ZOMBIEACTOR); - break; } return act; } diff --git a/source/games/duke/src/spawn_r.cpp b/source/games/duke/src/spawn_r.cpp index 508b572f1..aa64d4476 100644 --- a/source/games/duke/src/spawn_r.cpp +++ b/source/games/duke/src/spawn_r.cpp @@ -529,27 +529,6 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray* ChangeActorStat(act, STAT_STANDABLE); break; - case RTILE_RUBBERCAN: - act->spr.extra = 0; - [[fallthrough]]; - case RTILE_EXPLODINGBARREL: - case RTILE_HORSEONSIDE: - case RTILE_FIREBARREL: - case RTILE_NUKEBARREL: - case RTILE_FIREVASE: - case RTILE_NUKEBARRELDENTED: - case RTILE_NUKEBARRELLEAKED: - case RTILE_WOODENHORSE: - - if (actj) - act->spr.scale = DVector2(0.5, 0.5); - act->clipdist = 18; - makeitfall(act); - if (actj) act->SetOwner(actj); - else act->SetOwner(act); - act->spr.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip(); - ChangeActorStat(act, STAT_ZOMBIEACTOR); - break; case RTILE_RRTILE63: act->spr.cstat |= CSTAT_SPRITE_INVISIBLE; act->spr.scale = DVector2(REPEAT_SCALE, REPEAT_SCALE); diff --git a/wadsrc/static/filter/dukelike/rmapinfo.spawnclasses b/wadsrc/static/filter/dukelike/rmapinfo.spawnclasses index c2063c800..2fa7562b9 100644 --- a/wadsrc/static/filter/dukelike/rmapinfo.spawnclasses +++ b/wadsrc/static/filter/dukelike/rmapinfo.spawnclasses @@ -296,6 +296,15 @@ spawnclasses 603 = DukeNaked 1294 = DukePodFemale 1324 = DukeBloodyPole + 1238 = DukeExplodingBarrel + 1026 = DukeHorseOnSide + 1248 = DukeFireBarrel + 1227 = DukeNukeBarrel + 1390 = DukeFireVase + 1228 = DukeNukeBarrelDented + 1229 = DukeNukeBarrelLeaked + 904 = DukeWoodenHorse + 1062 = DukeRubberCan @@ -335,6 +344,7 @@ spawnclasses 1880 = DukeDrone 2420 = DukeTurret 2360 = DukeRotateGun - 675 = DukeEgg + + } diff --git a/wadsrc/static/zscript.txt b/wadsrc/static/zscript.txt index 81ce3af1e..b33b717fd 100644 --- a/wadsrc/static/zscript.txt +++ b/wadsrc/static/zscript.txt @@ -109,6 +109,7 @@ version "4.10" #include "zscript/games/duke/actors/waterbubble.zs" #include "zscript/games/duke/actors/smallsmoke.zs" #include "zscript/games/duke/actors/steam.zs" +#include "zscript/games/duke/actors/dukedecos.zs" #include "zscript/games/duke/actors/dukeitems.zs" #include "zscript/games/duke/actors/batteryammo.zs" diff --git a/wadsrc/static/zscript/games/duke/actors/dukedecos.zs b/wadsrc/static/zscript/games/duke/actors/dukedecos.zs new file mode 100644 index 000000000..4f957800f --- /dev/null +++ b/wadsrc/static/zscript/games/duke/actors/dukedecos.zs @@ -0,0 +1,82 @@ + +class DukeExplodingBarrel : DukeActor +{ + default + { + pic "EXPLODINGBARREL"; + } + + override void Initialize() + { + if (!self.mapSpawned) + self.scale = (0.5, 0.5); + self.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip(); + self.clipdist = 18; + self.ChangeStat(STAT_ZOMBIEACTOR); + } +} + +class DukeHorseOnSide : DukeExplodingBarrel +{ + default + { + pic "HORSEONSIDE"; + } +} + +class DukeFireBarrel : DukeExplodingBarrel +{ + default + { + pic "FIREBARREL"; + } +} +class DukeNukeBarrel : DukeExplodingBarrel +{ + default + { + pic "NUKEBARREL"; + } +} +class DukeFireVase : DukeExplodingBarrel +{ + default + { + pic "FIREVASE"; + } +} +class DukeNukeBarrelDented : DukeExplodingBarrel +{ + default + { + pic "NUKEBARRELDENTED"; + } +} +class DukeNukeBarrelLeaked : DukeExplodingBarrel +{ + default + { + pic "DTILE_NUKEBARRELLEAKED"; + } +} +class DukeWoodenHorse : DukeExplodingBarrel +{ + default + { + pic "WOODENHORSE"; + } +} + +class DukeRubberCan : DukeExplodingBarrel +{ + default + { + pic "RUBBERCAN"; + } + + override void Initialize() + { + super.Initialize(); + self.extra = 0; + } +}