From 513de38723e5519ac84a1d337d4e5f9f0ea1d111 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 May 2023 12:18:47 +0200 Subject: [PATCH] - pass the spawner to Initialize as an explicit parameter. Using ownerActor is not robust, for some actors this will have unwanted side effects. --- source/games/duke/src/duke3d.h | 2 +- source/games/duke/src/game.cpp | 6 +- source/games/duke/src/spawn.cpp | 8 +- .../zscript/games/duke/actors/controllers.zs | 6 +- .../games/duke/actors/dukecstuff/bloodpool.zs | 2 +- .../duke/actors/dukecstuff/bloodsplats.zs | 4 +- .../games/duke/actors/dukecstuff/bolt.zs | 2 +- .../games/duke/actors/dukecstuff/cactus.zs | 2 +- .../actors/dukecstuff/canwithsomething.zs | 2 +- .../games/duke/actors/dukecstuff/crack.zs | 2 +- .../games/duke/actors/dukecstuff/crane.zs | 2 +- .../duke/actors/dukecstuff/destructibles.zs | 20 ++--- .../games/duke/actors/dukecstuff/doorshock.zs | 2 +- .../duke/actors/dukecstuff/ducktarget.zs | 2 +- .../games/duke/actors/dukecstuff/dukemisc.zs | 22 ++--- .../games/duke/actors/dukecstuff/fireext.zs | 2 +- .../duke/actors/dukecstuff/flammables.zs | 2 +- .../duke/actors/dukecstuff/forcesphere.zs | 2 +- .../duke/actors/dukecstuff/frameeffect.zs | 6 +- .../duke/actors/dukecstuff/greenslime.zs | 2 +- .../games/duke/actors/dukecstuff/helicopt.zs | 2 +- .../games/duke/actors/dukecstuff/jibs.zs | 10 +-- .../duke/actors/dukecstuff/nukebutton.zs | 2 +- .../games/duke/actors/dukecstuff/ooz.zs | 2 +- .../games/duke/actors/dukecstuff/oozfilter.zs | 2 +- .../games/duke/actors/dukecstuff/paper.zs | 2 +- .../games/duke/actors/dukecstuff/queball.zs | 2 +- .../games/duke/actors/dukecstuff/rat.zs | 6 +- .../games/duke/actors/dukecstuff/reactor.zs | 2 +- .../games/duke/actors/dukecstuff/recon.zs | 26 +++--- .../games/duke/actors/dukecstuff/shell.zs | 21 +++-- .../games/duke/actors/dukecstuff/toilet.zs | 2 +- .../games/duke/actors/dukecstuff/tongue.zs | 6 +- .../games/duke/actors/dukecstuff/trash.zs | 2 +- .../duke/actors/dukecstuff/viewscreen.zs | 4 +- .../games/duke/actors/dukecstuff/waterdrip.zs | 7 +- .../duke/actors/dukecstuff/waterfountain.zs | 4 +- .../duke/actors/dukecstuff/watersplash.zs | 17 ++-- .../games/duke/actors/dukeenemies/boss1.zs | 7 +- .../games/duke/actors/dukeenemies/egg.zs | 2 +- .../games/duke/actors/dukeenemies/liztroop.zs | 2 +- .../duke/actors/dukeenemies/rotategun.zs | 2 +- .../games/duke/actors/dukeenemies/shark.zs | 2 +- .../games/duke/actors/dukeenemies/turret.zs | 2 +- .../games/duke/actors/dukestuff/blimp.zs | 2 +- .../games/duke/actors/dukestuff/effects.zs | 54 +++++------- .../games/duke/actors/dukestuff/females.zs | 18 +++- .../games/duke/actors/dukestuff/fire.zs | 2 +- .../games/duke/actors/dukestuff/items.zs | 18 ++-- .../games/duke/actors/dukestuff/player.zs | 23 +++-- .../games/duke/actors/dukestuff/rubbercan.zs | 2 +- .../games/duke/actors/dukestuff/stuff.zs | 23 +++-- .../duke/actors/dukeweapons/heavyhbomb.zs | 2 +- .../games/duke/actors/dukeweapons/mortar.zs | 2 +- .../duke/actors/dukeweapons/projectilebase.zs | 6 +- .../games/duke/actors/dukeweapons/shrinker.zs | 7 +- .../games/duke/actors/dukeweapons/tripbomb.zs | 11 ++- .../games/duke/actors/genericdestructible.zs | 2 +- .../zscript/games/duke/actors/masterswitch.zs | 2 +- .../duke/actors/redneckcstuff/airplane.zs | 2 +- .../duke/actors/redneckcstuff/balloons.zs | 2 +- .../duke/actors/redneckcstuff/bowling.zs | 10 +-- .../duke/actors/redneckcstuff/chickenplant.zs | 16 ++-- .../duke/actors/redneckcstuff/emptybike.zs | 4 +- .../actors/redneckcstuff/gamblingmachine.zs | 2 +- .../duke/actors/redneckcstuff/lumberblade.zs | 4 +- .../games/duke/actors/redneckcstuff/piano.zs | 2 +- .../duke/actors/redneckcstuff/pigback.zs | 2 +- .../duke/actors/redneckcstuff/redneckmisc.zs | 4 +- .../duke/actors/redneckcstuff/rrteleport.zs | 2 +- .../duke/actors/redneckenemies/billyray.zs | 2 +- .../games/duke/actors/redneckenemies/bubba.zs | 2 +- .../games/duke/actors/redneckenemies/coot.zs | 2 +- .../games/duke/actors/redneckenemies/cow.zs | 2 +- .../duke/actors/redneckenemies/destructo.zs | 4 +- .../games/duke/actors/redneckenemies/dog.zs | 2 +- .../games/duke/actors/redneckenemies/hen.zs | 2 +- .../games/duke/actors/redneckenemies/hulk.zs | 2 +- .../duke/actors/redneckenemies/minion.zs | 2 +- .../duke/actors/redneckenemies/mosquito.zs | 2 +- .../games/duke/actors/redneckenemies/pig.zs | 2 +- .../duke/actors/redneckenemies/sheriff.zs | 2 +- .../duke/actors/redneckenemies/shitboss.zs | 2 +- .../duke/actors/redneckenemies/tornado.zs | 2 +- .../games/duke/actors/redneckenemies/vixen.zs | 2 +- .../duke/actors/redneckstuff/ambient_rr.zs | 2 +- .../games/duke/actors/redneckstuff/items.zs | 88 +++++++++---------- .../games/duke/actors/redneckstuff/stuff.zs | 2 +- .../duke/actors/redneckweapons/boatcannon.zs | 4 +- .../duke/actors/redneckweapons/crossbow.zs | 2 +- .../games/duke/actors/respawncontroller.zs | 2 +- .../games/duke/actors/respawnmarker.zs | 4 +- .../games/duke/actors/rrraenemies/biker.zs | 2 +- .../games/duke/actors/rrraenemies/bikerb.zs | 2 +- .../games/duke/actors/rrraenemies/bikerbv2.zs | 2 +- .../duke/actors/rrraenemies/bubbaelvis.zs | 2 +- .../games/duke/actors/rrraenemies/cheer.zs | 2 +- .../games/duke/actors/rrraenemies/cheerb.zs | 2 +- .../duke/actors/rrraenemies/cheerboat.zs | 2 +- .../duke/actors/rrraenemies/cootbillyplay.zs | 4 +- .../games/duke/actors/rrraenemies/hulkboat.zs | 2 +- .../games/duke/actors/rrraenemies/makeout.zs | 2 +- .../games/duke/actors/rrraenemies/mama.zs | 4 +- .../duke/actors/rrraenemies/minionboat.zs | 2 +- .../games/duke/actors/rrraenemies/rabbit.zs | 2 +- .../duke/actors/rrraenemies/rabbitspawner.zs | 2 +- .../games/duke/actors/soundcontroller.zs | 2 +- .../zscript/games/duke/actors/touchplate.zs | 2 +- .../games/duke/actors/worldtour/firefly.zs | 4 +- .../duke/actors/worldtour/flamethrower.zs | 17 ++-- wadsrc/static/zscript/games/duke/dukeactor.zs | 11 ++- 111 files changed, 328 insertions(+), 334 deletions(-) diff --git a/source/games/duke/src/duke3d.h b/source/games/duke/src/duke3d.h index 024876a2d..bf6bf1a8a 100644 --- a/source/games/duke/src/duke3d.h +++ b/source/games/duke/src/duke3d.h @@ -97,7 +97,7 @@ struct Dispatcher extern Dispatcher fi; -void CallInitialize(DDukeActor* actor); +void CallInitialize(DDukeActor* actor, DDukeActor* spawner); void CallTick(DDukeActor* actor); bool CallOperate(DDukeActor* actor, int plnum); void CallAction(DDukeActor* actor); diff --git a/source/games/duke/src/game.cpp b/source/games/duke/src/game.cpp index e48fd4365..d0b72d34f 100644 --- a/source/games/duke/src/game.cpp +++ b/source/games/duke/src/game.cpp @@ -597,12 +597,12 @@ int LookupAI(PClass* cls, FName name) -void CallInitialize(DDukeActor* actor) +void CallInitialize(DDukeActor* actor, DDukeActor* spawner) { IFVIRTUALPTR(actor, DDukeActor, Initialize) { - VMValue val = actor; - VMCall(func, &val, 1, nullptr, 0); + VMValue val[] = { actor, spawner }; + VMCall(func, val, 2, nullptr, 0); } } diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index eb2f5eeb3..70db89fb7 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -846,12 +846,8 @@ DDukeActor* spawninit(DDukeActor* actj, DDukeActor* act, TArray* ac } commonEnemySetup(act, actj); } - else if (!(act->flags3 & SFLAG3_SIMPLEINIT)) - { - act->ownerActor = actj; - } - CallInitialize(act); + CallInitialize(act, actj); } else { @@ -863,7 +859,7 @@ DDukeActor* spawninit(DDukeActor* actj, DDukeActor* act, TArray* ac ChangeActorStat(act, STAT_MISC); else ChangeActorStat(act, STAT_PLAYER); - //CallInitialize(act); + CallInitialize(act, nullptr); } return act; } diff --git a/wadsrc/static/zscript/games/duke/actors/controllers.zs b/wadsrc/static/zscript/games/duke/actors/controllers.zs index 17508e0d7..e7d25ac26 100644 --- a/wadsrc/static/zscript/games/duke/actors/controllers.zs +++ b/wadsrc/static/zscript/games/duke/actors/controllers.zs @@ -1,7 +1,7 @@ class DukeActivator : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.ChangeStat(STAT_ACTIVATOR); @@ -59,7 +59,7 @@ class DukeActivator : DukeActor class DukeLocator : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.ChangeStat(STAT_LOCATOR); @@ -68,7 +68,7 @@ class DukeLocator : DukeActor class DukeActivatorLocked : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; if (!isRR()) self.sector.lotag |= 16384; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodpool.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodpool.zs index e76fd5591..e153a37d4 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodpool.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodpool.zs @@ -26,7 +26,7 @@ class DukeBloodPool : DukeActor } } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!checkLocationForFloorSprite(6.75)) return; SetPalette(); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodsplats.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodsplats.zs index b22ae777d..14f926825 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodsplats.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bloodsplats.zs @@ -6,13 +6,13 @@ class DukeBloodSplat1 : DukeActor +SE24_REMOVE; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_ALIGNMENT_WALL; self.scale.X = 0.109375 + random(0, 7) * REPEAT_SCALE; self.scale.Y = 0.109375 + random(0, 7) * REPEAT_SCALE; self.pos.Z -= 16; - if (!self.mapSpawned && self.ownerActor && self.ownerActor.pal == 6) + if (spawner && spawner.pal == 6) self.pal = 6; self.insertspriteq(); self.ChangeStat(STAT_MISC); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bolt.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bolt.zs index a01bc72d4..d5963946e 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/bolt.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/bolt.zs @@ -6,7 +6,7 @@ class DukeBolt1 : DukeActor spritesetindex 0; +SE24_NOCARRY; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.temp_pos.XY = self.scale; self.yint = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/cactus.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/cactus.zs index e516acdc9..3222016a2 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/cactus.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/cactus.zs @@ -6,7 +6,7 @@ class DukeCactusBroke : DukeActor pic "CACTUSBROKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/canwithsomething.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/canwithsomething.zs index 2f3b80010..cc4d4a810 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/canwithsomething.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/canwithsomething.zs @@ -8,7 +8,7 @@ class DukeCanWithSomething : DukeActor +MOVEFTA_MAKESTANDABLE; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) self.scale = (0.5, 0.5); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/crack.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/crack.zs index 6fa471895..7ba1f6de3 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/crack.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/crack.zs @@ -7,7 +7,7 @@ class DukeCrack : DukeActor +NOFALLER; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= (self.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) ? CSTAT_SPRITE_BLOCK : (CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_ALIGNMENT_WALL); self.extra = 1; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/crane.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/crane.zs index d55242c6d..242e99458 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/crane.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/crane.zs @@ -28,7 +28,7 @@ class DukeCrane : DukeActor // //--------------------------------------------------------------------------- - override void Initialize() + override void Initialize(DukeActor spawner) { let sect = self.sector; self.cstat |= CSTAT_SPRITE_BLOCK_ALL | CSTAT_SPRITE_ONE_SIDE; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/destructibles.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/destructibles.zs index fb0e0e6d8..c1e139589 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/destructibles.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/destructibles.zs @@ -28,7 +28,7 @@ class DukeHangLight : DukeGenericPole2 pic "HANGLIGHT"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.clipdist = 8; self.cstat |= CSTAT_SPRITE_BLOCK_ALL; @@ -45,7 +45,7 @@ class DukeBottle10 : DukeActor pic "BOTTLE10"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -68,7 +68,7 @@ class DukeVase : DukeActor pic "VASE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -91,7 +91,7 @@ class DukeFanSprite : DukeActor spriteset "FANSPRITE", "FANSPRITEBROKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -119,7 +119,7 @@ class DukeSatellite : DukeActor pic "SATELITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -176,7 +176,7 @@ class DukeFetus : DukeActor spriteset "FETUS", "FETUSBROKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -259,7 +259,7 @@ class DukeHydrant : DukeActor +BREAKMIRRORS; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -283,7 +283,7 @@ class DukePipe1 : DukeActor spriteset "PIPE1", "PIPE1B"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -349,7 +349,7 @@ class DukeSpaceMarine : DukeActor +HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.extra = 20; @@ -394,7 +394,7 @@ class DukeMonk : DukeSpaceMarine -HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/doorshock.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/doorshock.zs index 71eca82be..d6a8ac06d 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/doorshock.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/doorshock.zs @@ -5,7 +5,7 @@ class DukeDoorShock : DukeActor pic "DOORSHOCK"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.shade = -12; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/ducktarget.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/ducktarget.zs index e0792af6a..c2c2c5616 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/ducktarget.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/ducktarget.zs @@ -6,7 +6,7 @@ class DukeLetter : DukeActor +NOFALLER; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.ChangeStat(STAT_ACTOR); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/dukemisc.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/dukemisc.zs index d38735209..f53967651 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/dukemisc.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/dukemisc.zs @@ -6,7 +6,7 @@ class DukePlug : DukeActor pic "PLUG"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.lotag = 9999; self.ChangeStat(STAT_STANDABLE); @@ -28,7 +28,7 @@ class DukeFemMag : DukeActor pic "FEMMAG1"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat &= ~CSTAT_SPRITE_BLOCK_ALL; self.ChangeStat(STAT_DEFAULT); @@ -42,7 +42,7 @@ class DukeTag : DukeActor pic "DUKETAG"; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal) { @@ -60,7 +60,7 @@ class DukeMaskWall : DukeActor pic "MASKWALL1"; } - override void Initialize() + override void Initialize(DukeActor spawner) { let j = self.cstat & (CSTAT_SPRITE_ALIGNMENT_MASK | CSTAT_SPRITE_XFLIP | CSTAT_SPRITE_YFLIP); self.cstat = j | CSTAT_SPRITE_BLOCK; @@ -76,7 +76,7 @@ class DukeFootprints : DukeActor +SE24_REMOVE; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) { @@ -114,7 +114,7 @@ class DukeBulletHole : DukeActor +NOTELEPORT; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_ALIGNMENT_WALL | randomFlip(); self.insertspriteq(); @@ -136,7 +136,7 @@ class DukeGenericPole : DukeActor pic "GENERICPOLE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal != 0) { @@ -154,12 +154,12 @@ class DukeCameraPole : DukeGenericPole pic "CAMERAPOLE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (gs.camerashitable) self.cstat = CSTAT_SPRITE_BLOCK_ALL; else self.cstat = 0; self.extra = 1; - super.Initialize(); + super.Initialize(spawner); } } @@ -170,7 +170,7 @@ class DukeNeon : DukeActor pic "NEON1"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.ChangeStat(STAT_MISC); @@ -290,7 +290,7 @@ class DukeNaturalLightning : DukeActor +FULLBRIGHT; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat &= ~CSTAT_SPRITE_BLOCK_ALL; self.cstat |= CSTAT_SPRITE_INVISIBLE; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/fireext.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/fireext.zs index 82a7e3b11..19989cb55 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/fireext.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/fireext.zs @@ -7,7 +7,7 @@ class DukeFireext : DukeActor +EXPLOSIVE; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_BLOCK_ALL; self.extra = gs.impact_damage << 2; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/flammables.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/flammables.zs index 0da148da4..4125c869a 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/flammables.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/flammables.zs @@ -6,7 +6,7 @@ class DukeFlammable : DukeActor +HITRADIUS_CHECKHITONLY; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_BLOCK_ALL; // Make it hitable self.extra = 1; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/forcesphere.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/forcesphere.zs index 0dcf9666f..1ab8dd1c6 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/forcesphere.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/forcesphere.zs @@ -7,7 +7,7 @@ class DukeForceSphere : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.mapSpawned) { diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/frameeffect.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/frameeffect.zs index 315daeef5..445d12c39 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/frameeffect.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/frameeffect.zs @@ -6,11 +6,11 @@ class DukeFrameEffect : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { - if (!self.mapSpawned && self.ownerActor) + if (spawner) { - self.scale = self.ownerActor.scale; + self.scale = spawner.scale; } else { diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs index c0df9bd91..817e57029 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/greenslime.zs @@ -12,7 +12,7 @@ class DukeGreenSlime : DukeActor sparkoffset -3; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.625, 0.625); self.clipdist = 20; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/helicopt.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/helicopt.zs index 58a2e21cf..356623e13 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/helicopt.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/helicopt.zs @@ -5,7 +5,7 @@ class DukeCar : DukeActor pic "DUKECAR"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.extra = 1; self.clipdist = 32; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/jibs.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/jibs.zs index 1d031566d..72a9a35b8 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/jibs.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/jibs.zs @@ -217,7 +217,7 @@ class DukeJibs2 : DukeJibs1 pic "JIBS2"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale *= 0.25; // only Duke needs this. } @@ -262,7 +262,7 @@ class DukeJibs6 : DukeJibs1 spritesetindex 1; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (isRR()) self.scale *= 0.5; // only RR needs this. self.setSpriteSetImage(1); @@ -561,7 +561,7 @@ class RedneckRabbitJibA : DukeJibs1 pic "RABBITJIBA"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.Scale = (0.28125, 0.28125); } @@ -574,7 +574,7 @@ class RedneckRabbitJibB : DukeJibs1 pic "RABBITJIBB"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.Scale = (0.5625, 0.5625); } @@ -587,7 +587,7 @@ class RedneckRabbitJibC : DukeJibs1 pic "RABBITJIBC"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.Scale = (0.84375, 0.84375); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/nukebutton.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/nukebutton.zs index b40626f32..85a779fae 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/nukebutton.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/nukebutton.zs @@ -6,7 +6,7 @@ class DukeNukeButton : DukeActor spriteset "NUKEBUTTON", "NUKEBUTTON1", "NUKEBUTTON2", "NUKEBUTTON3"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.ChangeStat(STAT_MISC); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/ooz.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/ooz.zs index 34d9c1f0d..cfb29c18a 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/ooz.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/ooz.zs @@ -5,7 +5,7 @@ class DukeOoz : DukeActor pic "OOZ"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.shade = -12; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/oozfilter.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/oozfilter.zs index 72693ff21..25f2cd5c5 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/oozfilter.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/oozfilter.zs @@ -11,7 +11,7 @@ class DukeOozFilter : DukeActor +GREENBLOOD; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.shade = -16; if (self.scale.X <= 0.125) diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/paper.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/paper.zs index 87f1bea7e..48f33c77b 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/paper.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/paper.zs @@ -6,7 +6,7 @@ class DukeMoney : DukeActor spriteset "MONEY", "MONEY1"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.125, 0.125); self.counter = random(0, 2047); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/queball.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/queball.zs index 2c7fb3d2c..74bdf34cf 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/queball.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/queball.zs @@ -12,7 +12,7 @@ class DukeQueball : DukeActor +HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.clipdist = 2; self.cstat = CSTAT_SPRITE_BLOCK_HITSCAN; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/rat.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/rat.zs index 51efc37de..9d55f2964 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/rat.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/rat.zs @@ -9,7 +9,7 @@ class DukeRat : DukeActor +ALWAYSROTATE1; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) self.lotag = 0; @@ -17,11 +17,11 @@ class DukeRat : DukeActor self.angle = frandom(0, 360); self.cstat = 0; - if (!self.mapSpawned && self.ownerActor) + if (spawner) { self.timetosleep = 0; self.ChangeStat(STAT_ACTOR); - if (isRR()) self.shade = self.ownerActor.shade; + if (isRR()) self.shade = spawner.shade; } else self.ChangeStat(STAT_ZOMBIEACTOR); self. clipdist = 10; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/reactor.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/reactor.zs index a0f17960a..9281cd1f1 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/reactor.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/reactor.zs @@ -6,7 +6,7 @@ class DukeReactor : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { self.extra = gs.impact_damage; self.cstat |= CSTAT_SPRITE_BLOCK_ALL; // Make it hitable diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs index 7df4729a4..5afce7d5f 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/recon.zs @@ -23,7 +23,7 @@ class DukeRecon : DukeActor int shift; class spawntype; - override void initialize() + override void Initialize(DukeActor spawner) { self.temp_data[0] = 0; self.extra = 130; @@ -246,7 +246,7 @@ class RedneckUFO1 : DukeRecon -NOFLOORPAL; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.ChangeStat(STAT_ZOMBIEACTOR); @@ -276,9 +276,9 @@ class RedneckUFO2 : RedneckUFO1 Pic "UFO2"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); SpawnType = "RedneckCoot"; } } @@ -290,9 +290,9 @@ class RedneckUFO3 : RedneckUFO1 Pic "UFO3"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); SpawnType = "RedneckCow"; } } @@ -304,9 +304,9 @@ class RedneckUFO4 : RedneckUFO1 Pic "UFO4"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); SpawnType = "RedneckPig"; } } @@ -318,9 +318,9 @@ class RedneckUFO5 : RedneckUFO1 Pic "UFO5"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); SpawnType = "RedneckBillyRay"; } } @@ -332,9 +332,9 @@ class RedneckUFORRRA : RedneckUFO1 Pic "UFO1_RRRA"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); if (ud.ufospawnsminion) SpawnType = "RedneckMinion"; } } @@ -345,7 +345,7 @@ class RedneckUfoSpawnerToggle : DukeActor { statnum STAT_MISC; } - override void Initialize() + override void Initialize(DukeActor spawner) { //case RRTILE8192: self.scale = (0, 0); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/shell.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/shell.zs index 90b4ab8fb..7d3006873 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/shell.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/shell.zs @@ -6,16 +6,15 @@ class DukeShell : DukeActor spriteset "SHELL", "SHELL1"; } - void initshell(bool isshell, double direction) + void initshell(DukeActor spawner, bool isshell, double direction) { - let Owner = self.OwnerActor; - if (Owner && !self.mapSpawned) + if (spawner) { double ang; - if (Owner.isPlayer()) + if (spawner.isPlayer()) { - let plr = Owner.GetPlayer(); + let plr = spawner.GetPlayer(); let pactor = plr.actor; ang = pactor.angle - Raze.BAngToDegree * (random(8, 71)); //Fine tune @@ -26,10 +25,10 @@ class DukeShell : DukeActor else { ang = self.angle; - self.pos.Z = Owner.pos.Z - gs.playerheight + 3; + self.pos.Z = spawner.pos.Z - gs.playerheight + 3; } - self.pos.XY = Owner.pos.XY + ang.ToVector() * 8; + self.pos.XY = spawner.pos.XY + ang.ToVector() * 8; self.opos = self.pos; if (direction > 0) @@ -51,9 +50,9 @@ class DukeShell : DukeActor self.ChangeStat(STAT_MISC); } - override void Initialize() + override void Initialize(DukeActor spawner) { - initshell(true, -1.25); + initshell(spawner, true, -1.25); } override void Tick() @@ -114,9 +113,9 @@ class DukeShell : DukeActor class NamShell : DukeShell { - override void Initialize() + override void Initialize(DukeActor spawner) { - initshell(true, 1.875); + initshell(spawner, true, 1.875); } } diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/toilet.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/toilet.zs index 92791ffea..60565f610 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/toilet.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/toilet.zs @@ -7,7 +7,7 @@ class DukeStall : DukeActor precacheclass "DukeToiletWater"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.OwnerActor = self; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/tongue.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/tongue.zs index c92098863..7a0cf1542 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/tongue.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/tongue.zs @@ -6,10 +6,10 @@ class DukeTongue : DukeActor pic "TONGUE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - if (self.ownerActor && !self.mapSpawned) - self.angle = self.ownerActor.angle; + if (spawner) + self.angle = spawner.angle; self.pos.Z -= gs.playerheight; self.vel.Z = 1 - frandom(0, 2); self.vel.X = 4 - frandom(0, 8); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/trash.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/trash.zs index 624773563..843ba035d 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/trash.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/trash.zs @@ -5,7 +5,7 @@ class DukeTrash : DukeActor pic "TRASH"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.Scale = (0.375, 0.375); self.angle = frandom(0, 360); diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/viewscreen.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/viewscreen.zs index 90cbfc94c..4ffdd9986 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/viewscreen.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/viewscreen.zs @@ -9,7 +9,7 @@ class DukeViewscreen : DukeActor const VIEWSCR_DIST = 1024; // was originally 2048, was increased to 8192 by EDuke32 and RedNukem, but with high resolutions the resulting 512 map units are still too low. - override void Initialize() + override void Initialize(DukeActor spawner) { self.ownerActor = self; self.lotag = 1; @@ -100,7 +100,7 @@ class DukeCamera : DukeActor +ALWAYSROTATE1; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (gs.camerashitable) self.cstat = CSTAT_SPRITE_BLOCK_ALL; else self.cstat = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterdrip.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterdrip.zs index dfda72ce8..dec596db5 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterdrip.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterdrip.zs @@ -5,13 +5,12 @@ class DukeWaterDrip : DukeActor pic "WATERDRIP"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (!self.mapSpawned && owner && (owner.statnum == STAT_PLAYER || owner.statnum == STAT_ACTOR)) + if (spawner && (spawner.statnum == STAT_PLAYER || spawner.statnum == STAT_ACTOR)) { self.shade = 32; - if (owner.pal != 1) + if (spawner.pal != 1) { self.pal = 2; self.pos.Z -= 18; diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterfountain.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterfountain.zs index 9ab7e614c..29b7a47d4 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterfountain.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/waterfountain.zs @@ -14,7 +14,7 @@ class DukeWaterFountain : DukeActor // //--------------------------------------------------------------------------- - override void Initialize() + override void Initialize(DukeActor spawner) { self.setSpritesetImage(0); self.lotag = 1; @@ -101,7 +101,7 @@ class DukeWaterFountainBroke : DukeActor pic "WATERFOUNTAINBROKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.ChangeStat(STAT_STANDABLE); } diff --git a/wadsrc/static/zscript/games/duke/actors/dukecstuff/watersplash.zs b/wadsrc/static/zscript/games/duke/actors/dukecstuff/watersplash.zs index a3363f66c..8fddd0c48 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukecstuff/watersplash.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukecstuff/watersplash.zs @@ -6,13 +6,12 @@ class DukeWatersplash : DukeActor +NOTELEPORT; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let Owner = self.ownerActor; let sectp = self.sector; - if (Owner && !self.mapSpawned) + if (spawner) { - self.SetPosition(Owner.pos); + self.SetPosition(spawner.pos); double s = 0.125 + random(0, 7) * REPEAT_SCALE; self.scale = (s, s); } @@ -24,16 +23,16 @@ class DukeWatersplash : DukeActor self.shade = -16; self.cstat |= CSTAT_SPRITE_YCENTER; - if (Owner) + if (spawner) { double c, f; [c, f] = self.sector.getSlopes(self.pos.XY); - if (Owner.sector.lotag == ST_2_UNDERWATER) + if (spawner.sector.lotag == ST_2_UNDERWATER) { self.pos.Z = c + 16; self.cstat |= CSTAT_SPRITE_YFLIP; } - else if (Owner.sector.lotag == ST_1_ABOVE_WATER) + else if (spawner.sector.lotag == ST_1_ABOVE_WATER) self.pos.Z = f; } @@ -85,9 +84,9 @@ class RedneckMudSplash : DukeWatersplash +NOTELEPORT; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); self.cstat |= CSTAT_SPRITE_BLOCK_ALL; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs index 152f32fc2..ac9fdbb70 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/boss1.zs @@ -12,11 +12,10 @@ class DukeBossBase : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner && owner is 'DukeRespawnController') - self.pal = owner.pal; + if (spawner && spawner is 'DukeRespawnController') + self.pal = spawner.pal; if (self.pal != 0 && (!isWorldTour() || !(currentLevel.gameflags & MapRecord.LEVEL_WT_BOSSSPAWN) || self.pal != 22)) { diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/egg.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/egg.zs index d3202cbe5..58a36f882 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/egg.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/egg.zs @@ -10,7 +10,7 @@ class DukeEgg : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.monsters_off == 1) { diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs index acbe0e638..6417011cd 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/liztroop.zs @@ -17,7 +17,7 @@ class DukeLizTrooper : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.pal == 0 || self.pal == 2) self.pal = 22; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/rotategun.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/rotategun.zs index cb37d4166..158c085a8 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/rotategun.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/rotategun.zs @@ -22,7 +22,7 @@ class DukeRotateGun : DukeActor shootzoffset 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.vel.Z = 0; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/shark.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/shark.zs index 086cf3921..00f2c5b9d 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/shark.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/shark.zs @@ -13,7 +13,7 @@ class DukeShark : DukeActor Strength SHARKSTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { // override some defaults. self.scale = (0.9375, 0.9375); diff --git a/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs b/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs index 86f5ce14e..ddae733b0 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeenemies/turret.zs @@ -19,7 +19,7 @@ class DukeTurret : DukeActor self.PlayActorSound("TURR_RECOG"); } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_YCENTER; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/blimp.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/blimp.zs index 111cabb83..398d0e35c 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/blimp.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/blimp.zs @@ -10,7 +10,7 @@ class DukeBlimp : DukeActor +SPAWNWEAPONDEBRIS; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 32; diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/effects.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/effects.zs index b1f966a45..833f62edb 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/effects.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/effects.zs @@ -9,7 +9,7 @@ class DukeToiletWater : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.shade = -16; self.changeStat(STAT_STANDABLE); @@ -40,13 +40,11 @@ class DukeExplosion2 : DukeActor return false; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - - if (owner && owner != self) + if (spawner && spawner != self) { - self.Angle = owner.Angle; + self.Angle = spawner.Angle; self.cstat = randomXFlip(); double c,f; @@ -90,9 +88,9 @@ class RedneckExplosion3 : DukeExplosion2 pic "EXPLOSION3"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); self.scale = (2, 2); } @@ -119,7 +117,7 @@ class DukeFloorFlame : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.shade = -127; self.ChangeStat(STAT_STANDABLE); @@ -162,27 +160,26 @@ class DukeTransporterStar : DukeActor //StartAction "TRANSFOWARD"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner == nullptr || owner == self) + if (spawner == nullptr || spawner == self) { scale = (0, 0); return; } - if (owner.statnum == STAT_PROJECTILE) + if (spawner.statnum == STAT_PROJECTILE) { self.scale = (0.125, 0.125); } else { self.scale = (0.75, 1); - if (owner.statnum == STAT_PLAYER || owner.badguy()) + if (spawner.statnum == STAT_PLAYER || spawner.badguy()) self.pos.Z -= 32; } self.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT; - self.angle = owner.angle; + self.angle = spawner.angle; self.vel.X = 8; self.DoMove(CLIPMASK0); @@ -209,19 +206,18 @@ class DukeTransporterBeam : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner == nullptr || owner == self) + if (spawner == nullptr || spawner == self) { scale = (0, 0); return; } self.scale = (0.484375, REPEAT_SCALE); - self.pos.Z = owner.sector.floorz - gs.playerheight; + self.pos.Z = spawner.sector.floorz - gs.playerheight; self.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_TRANSLUCENT; - self.angle = owner.angle; + self.angle = spawner.angle; self.vel.X = 8; self.DoMove(CLIPMASK0); @@ -266,7 +262,7 @@ class DukeSteam : DukeSteamBase pic "STEAM"; } - override void Initialize() + override void Initialize(DukeActor spawner) { let owner = self.ownerActor; @@ -297,13 +293,11 @@ class DukeSmallSmoke : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - - if (owner && owner != self) + if (spawner && spawner != self) { - self.Angle = owner.Angle; + self.Angle = spawner.Angle; self.cstat = randomXFlip(); double c,f; @@ -332,10 +326,10 @@ class DukeBlood : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.pos.Z -= 26; - if (!mapSpawned && self.ownerActor && self.ownerActor.pal == 6) + if (spawner && spawner.pal == 6) self.pal = 6; self.scale = (0.25, 0.25); temp_pos.Z = 72 * REPEAT_SCALE; @@ -345,9 +339,9 @@ class DukeBlood : DukeActor class RedneckBlood : DukeBlood { - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); self.scale = (0.0625, 0.0625); temp_pos.Z = 48 * REPEAT_SCALE; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/females.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/females.zs index ff22c306c..f9718e12c 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/females.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/females.zs @@ -20,6 +20,15 @@ class DukeFemBase : DukeActor const FREEZEANIM2 = 64; + override void Initialize(DukeActor spawner) + { + self.yint = self.hitag; + self.hitag = -1; + self.cstat |= CSTAT_SPRITE_BLOCK_ALL; + self.clipdist = 8; + self.ChangeStat(STAT_ZOMBIEACTOR); + } + } @@ -33,7 +42,7 @@ class DukeBloodyPole : DukeFemBase StartAction 'none'; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 8; @@ -172,7 +181,12 @@ class DukePodFemale : DukeFemBase DukeFemBase.femflags GROWSCRAP | FREEZEANIM2 | KILLME; } - + override void Initialize(DukeActor spawner) + { + Super.Initialize(spawner); + self.extra <<= 1; + } + } class DukeFem6Pad: DukeActor diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/fire.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/fire.zs index 2d85ed6ce..eafacfce2 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/fire.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/fire.zs @@ -11,7 +11,7 @@ class DukeBurning : DukeActor Strength WEAK; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) { diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/items.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/items.zs index 5e2209cc4..b65ba8549 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/items.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/items.zs @@ -16,9 +16,9 @@ class DukeItemBase : DukeActor - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup(); + commonItemSetup(spawner); } @@ -103,7 +103,7 @@ class DukeAccessCard : DukeItemBase pic "ACCESSCARD"; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode > 1 && ud.coop != 1) { @@ -131,9 +131,9 @@ class DukeAmmo : DukeItemBase pic "AMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.25, 0.25)); + commonItemSetup(spawner, (0.25, 0.25)); } } @@ -194,9 +194,9 @@ class DukeBatteryAmmo : DukeItemBase pic "BATTERYAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup(); + commonItemSetup(spawner); } } @@ -268,9 +268,9 @@ class DukeAtomicHealth : DukeItemBase +NOFLOORPAL; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup(); + commonItemSetup(spawner); self.cstat |= CSTAT_SPRITE_YCENTER; } diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/player.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/player.zs index b2eaf0e74..fcfc2e32c 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/player.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/player.zs @@ -16,11 +16,11 @@ class DukePlayerOnWater : DukeActor +ALWAYSROTATE1; } - override void Initialize() + override void Initialize(DukeActor spawner) { - if (!mapSpawned && self.ownerActor) + if (spawner) { - self.scale = self.ownerActor.scale; + self.scale = spawner.scale; self.vel.Z = 0.5; if (self.sector.lotag != ST_2_UNDERWATER) self.cstat |= CSTAT_SPRITE_INVISIBLE; @@ -30,9 +30,9 @@ class DukePlayerOnWater : DukeActor override void OnHit(DukeActor proj) { - // propagate the hit to its owner. - let owner = self.ownerActor; - if (owner && self != owner) owner.OnHit(proj); + // propagate the hit to its Owner. + let Owner = self.OwnerActor; + if (Owner && self != Owner) Owner.OnHit(proj); } } @@ -46,14 +46,13 @@ class DukePlayerLyingDead : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner && owner.isPlayer()) + if (spawner && spawner.isPlayer()) { - self.scale = owner.scale; - self.shade = owner.shade; - self.pal = owner.GetPlayer().palookup; + self.scale = spawner.scale; + self.shade = spawner.shade; + self.pal = spawner.GetPlayer().palookup; } self.vel.X = 292 / 16.; self.vel.Z = 360 / 256.; diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/rubbercan.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/rubbercan.zs index 09df4efa0..9001ec8ce 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/rubbercan.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/rubbercan.zs @@ -9,7 +9,7 @@ class DukeRubberCan : DukeActor +MOVEFTA_MAKESTANDABLE; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) self.scale = (0.5, 0.5); diff --git a/wadsrc/static/zscript/games/duke/actors/dukestuff/stuff.zs b/wadsrc/static/zscript/games/duke/actors/dukestuff/stuff.zs index 28a71b387..470eb5255 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukestuff/stuff.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukestuff/stuff.zs @@ -7,7 +7,7 @@ class DukeSimpleItem : DukeActor +MOVEFTA_MAKESTANDABLE; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned) self.scale = (0.5, 0.5); @@ -82,7 +82,7 @@ class DukeWaterbubbleMaker : DukeSimpleItem Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.hitag = 0; self.cstat |= CSTAT_SPRITE_INVISIBLE; @@ -109,13 +109,12 @@ class DukeWaterBubble : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner && owner.isPlayer()) + if (spawner && spawner.isPlayer()) self.pos.Z -= 16; - if (owner != self) - self.angle = owner.angle; + if (spawner && spawner != self) + self.angle = spawner.angle; self.scale = (0.0625, 0.0625); self.ChangeStat(STAT_MISC); @@ -225,7 +224,7 @@ class DukeFeces : DukeActor +BROWNBLOOD; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!mapSpawned) self.scale = (REPEAT_SCALE, REPEAT_SCALE); @@ -248,7 +247,7 @@ class DukeStatue : DukeActor +HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.clipdist = 32; self.cstat |= CSTAT_SPRITE_BLOCK_ALL; @@ -293,7 +292,7 @@ class DukeMike : DukeActor pic "MIKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.yint = self.hitag; self.ChangeStat(STAT_ACTOR); @@ -346,7 +345,7 @@ class DukeWaterdripSplash : DukeActor pic "WATERDRIPSPLASH"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.375, 0.375); self.ChangeStat(STAT_STANDABLE); @@ -367,7 +366,7 @@ class DukeSeriousSam : DukeActor statnum STAT_ZOMBIEACTOR; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.extra = 150; diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/heavyhbomb.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/heavyhbomb.zs index 1f39fd44b..bfbaa2ca4 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/heavyhbomb.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/heavyhbomb.zs @@ -12,7 +12,7 @@ class DukePipeBomb : DukeActor // do not add anything here! } - override void Initialize() + override void Initialize(DukeActor spawner) { // This is only for placed items, not for armed weapons! if (self.mapSpawned) diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/mortar.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/mortar.zs index 15b15fc56..26fe35a51 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/mortar.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/mortar.zs @@ -189,7 +189,7 @@ class DukeBounceMine : DukeMortar Strength BOUNCEMINE_WEAPON_STRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { // This is only for placed items, not for armed weapons! // Although this can be shot, it doesn't really work for that. diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/projectilebase.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/projectilebase.zs index 4e67c02c7..43576dfe7 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/projectilebase.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/projectilebase.zs @@ -43,7 +43,7 @@ class DukeProjectile : DukeActor property SpawnSound: SpawnSound; - override void Initialize() + override void Initialize(DukeActor spawner) { // do not call the parent's function here. } @@ -364,13 +364,13 @@ class DukeCoolExplosion1 : DukeProjectile // octabrain shot. Strength COOL_EXPLOSION_STRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!bSIMPLEINIT) { // looks like this case is never used anywhere. self.cstat = CSTAT_SPRITE_YCENTER | self.randomXFlip(); - self.angle = self.ownerActor.angle; + if (spawner) self.angle = spawner.angle; self.shade = -64; double c, f; diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/shrinker.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/shrinker.zs index dd2f152f4..ffe97ff03 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/shrinker.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/shrinker.zs @@ -99,12 +99,11 @@ class DukeShrinkerExplosion : DukeActor +FORCERUNCON; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner != self) + if (spawner != self) { - self.Angle = owner.Angle; + self.Angle = spawner.Angle; self.cstat = CSTAT_SPRITE_YCENTER | randomXFlip(); double c,f; [c, f] = self.sector.getSlopes(self.pos.XY); diff --git a/wadsrc/static/zscript/games/duke/actors/dukeweapons/tripbomb.zs b/wadsrc/static/zscript/games/duke/actors/dukeweapons/tripbomb.zs index 94fabde01..a96dfdce4 100644 --- a/wadsrc/static/zscript/games/duke/actors/dukeweapons/tripbomb.zs +++ b/wadsrc/static/zscript/games/duke/actors/dukeweapons/tripbomb.zs @@ -26,7 +26,7 @@ class DukeTripBomb : DukeActor +NOTELEPORT; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.0625, 0.078125); ud.bomb_tag = (ud.bomb_tag + 1) & 32767; @@ -204,9 +204,9 @@ class DukeTripBomb : DukeActor // the map-spawned and player-spawned trip bombs are different so let's spawn two distinct types for them. class DukeTripBombPlaced : DukeTripBomb { - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); self.ownerActor = self; self.vel.X = 1; @@ -238,7 +238,7 @@ class DukeLaserLine : DukeActor +NOFLOORPAL; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.5, 0.09375); @@ -251,8 +251,7 @@ class DukeLaserLine : DukeActor self.scale = (0, 0); } - let owner = self.ownerActor; - if (owner) self.angle = owner.temp_angle + 90; + if (spawner) self.angle = spawner.temp_angle + 90; self.ChangeStat(STAT_MISC); } diff --git a/wadsrc/static/zscript/games/duke/actors/genericdestructible.zs b/wadsrc/static/zscript/games/duke/actors/genericdestructible.zs index 22375442e..ad5188d8f 100644 --- a/wadsrc/static/zscript/games/duke/actors/genericdestructible.zs +++ b/wadsrc/static/zscript/games/duke/actors/genericdestructible.zs @@ -22,7 +22,7 @@ class DukeGenericDestructible : DukeActor virtual bool DestroyAction() { return false; } // for customized subclasses - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.inittype & f_solid) self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.SetBroken(false); diff --git a/wadsrc/static/zscript/games/duke/actors/masterswitch.zs b/wadsrc/static/zscript/games/duke/actors/masterswitch.zs index 5178c3e56..31e13eead 100644 --- a/wadsrc/static/zscript/games/duke/actors/masterswitch.zs +++ b/wadsrc/static/zscript/games/duke/actors/masterswitch.zs @@ -1,6 +1,6 @@ class DukeMasterSwitch : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.yint = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/airplane.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/airplane.zs index a974abb9b..6438a15a8 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/airplane.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/airplane.zs @@ -5,7 +5,7 @@ class RedneckAirplane : DukeActor pic "AIRPLANE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.extra = self.lotag; self.cstat |= CSTAT_SPRITE_BLOCK_ALL; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/balloons.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/balloons.zs index 89328213e..3b563c560 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/balloons.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/balloons.zs @@ -6,7 +6,7 @@ class RedneckBalloons1 : DukeActor Spriteset "BALLOONS1", "BALLOONS1BROKE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.Scale = (0.5, 0.5); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/bowling.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/bowling.zs index a50aa70d5..5d454ad92 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/bowling.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/bowling.zs @@ -11,7 +11,7 @@ class RedneckBowlingPin : DukeActor meta int behavior; property behavior: behavior; - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_BLOCK_ALL; self.clipdist = 12; @@ -129,9 +129,9 @@ class RedneckHenstand : RedneckBowlingPin -HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { - Super.Initialize(); + Super.Initialize(spawner); self.scale.Y = 234375; } @@ -160,7 +160,7 @@ class RedneckBowlingBall : RedneckBowlingPin -HITRADIUSCHECK; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.clipdist = 16; self.scale = (0.171875, 0.140625); @@ -247,7 +247,7 @@ class RedneckBowlingBall : RedneckBowlingPin class RedneckBowlingController : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.clipdist = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/chickenplant.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/chickenplant.zs index 1a5293cb3..a0ed5a784 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/chickenplant.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/chickenplant.zs @@ -6,7 +6,7 @@ class RedneckChickenSpawner1 : DukeActor pic "CHICKENASPAWN"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.clipdist = 0; @@ -188,7 +188,7 @@ class RedneckChickenA : DukeActor spriteset "CHICKENA", "CHICKENB", "CHICKENC"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_BLOCK_ALL; self.vel.X = 2; @@ -260,7 +260,7 @@ class RedneckChickenLoaf : DukeActor pic "CHICKENLOAF"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_BLOCK_ALL; self.vel.X = 2; @@ -307,7 +307,7 @@ class RedneckRoastedChicken : RedneckChickenLoaf pic "ROASTEDCHICKEN"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.vel.X = 1; self.Scale = (0.203125, 0.203125); @@ -323,7 +323,7 @@ class RedneckChickenNugget : RedneckChickenLoaf pic "CHICKENNUGGET"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.vel.X = 1; self.Scale = (0.125, 0.09375); @@ -339,7 +339,7 @@ class RedneckBonelessChicken : RedneckChickenLoaf pic "BONELESSCHICKEN"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.vel.X = 2; self.Scale = (0.265625, 0.1875); @@ -355,7 +355,7 @@ class RedneckChickenHead : DukeActor pic "CHICKENHEAD"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.vel.X = 0; self.Scale = (0.203125, 0.15625); @@ -391,7 +391,7 @@ class RedneckChickenplantButton : DukeActor spriteset "CHICKENPLANTBUTTON", "CHICKENPLANTBUTTONON"; } - override void Initialize() + override void Initialize(DukeActor spawner) { ud.chickenplant = 1; } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/emptybike.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/emptybike.zs index 250c3a49c..b3bb991c9 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/emptybike.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/emptybike.zs @@ -7,7 +7,7 @@ class RedneckEmptyBike : DukeActor +ALWAYSROTATE2; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal == 1) { @@ -57,7 +57,7 @@ class RedneckEmptyBoat : DukeActor falladjustz 6; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal == 1) { diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/gamblingmachine.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/gamblingmachine.zs index 3f5c2868b..123f0341b 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/gamblingmachine.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/gamblingmachine.zs @@ -12,7 +12,7 @@ class RedneckGamblingMachine : DukeActor meta Sound winsound; property winsound: winsound; - override void Initialize() + override void Initialize(DukeActor spawner) { self.lotag = 1; self.clipdist = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/lumberblade.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/lumberblade.zs index 2c9f00605..eeb9d8568 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/lumberblade.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/lumberblade.zs @@ -6,7 +6,7 @@ class RedneckLumberBlade : DukeActor spriteset "LUMBERBLADE1", "LUMBERBLADE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.ChangeStat(STAT_LUMBERMILL); self.extra = 0; @@ -67,7 +67,7 @@ Class RedneckKegHolder : DukeActor pic "KEGHOLDER"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.ChangeStat(STAT_LUMBERMILL); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/piano.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/piano.zs index b95836452..0ee5f89db 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/piano.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/piano.zs @@ -5,7 +5,7 @@ class RedneckPiano : DukeActor spriteset "PIANO", "PIANOBUST"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.lotag = 5; self.clipdist = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/pigback.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/pigback.zs index 3a9484977..c0f734e49 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/pigback.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/pigback.zs @@ -6,7 +6,7 @@ class RedneckPigDisplay : DukeActor spriteset "PIGBACK", "PIGBACK1", "PIGBACK2", "PIGBACK3", "PIGBACK4"; } - override void Initialize() + override void Initialize(DukeActor spawner) { cstat = 0; self.scale = (0.25, 0.25); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/redneckmisc.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/redneckmisc.zs index e9e65183c..c53172af8 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/redneckmisc.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/redneckmisc.zs @@ -20,7 +20,7 @@ class RedneckMusicNotes : DukeActor pic "MUSICNOTES"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.lotag = -1; self.clipdist = 0; @@ -41,7 +41,7 @@ class RedneckJoe9000 : DukeActor pic "JOE9000"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.lotag = 1; self.clipdist = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/rrteleport.zs b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/rrteleport.zs index dd30a9654..25db32355 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckcstuff/rrteleport.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckcstuff/rrteleport.zs @@ -6,7 +6,7 @@ class RedneckTeleportDest : DukeActor pic "RRTELEPORTDEST"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self. Scale = (1, 1); self.clipdist = 16; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs index da158b761..c45be754e 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/billyray.zs @@ -18,7 +18,7 @@ class RedneckBillyRay : DukeActor else self.PlayActorSound("FART1"); } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.390625, 0.328125); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/bubba.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/bubba.zs index 10b52fc7c..7157e4378 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/bubba.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/bubba.zs @@ -7,7 +7,7 @@ class RedneckBubbaStand : DukeActor Strength 100; } - override void initialize() + override void Initialize(DukeActor spawner) { self.actorstayput = self.sector; // make this a flag once everything has been exported. self.scale = (0.390625, 0.328125); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs index b4eea33c2..636618da1 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/coot.zs @@ -20,7 +20,7 @@ class RedneckCoot : DukeActor self.PlayActorSound("CT_GET"); } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.375, 0.28125); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/cow.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/cow.zs index 07c912b5c..b46ef6e01 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/cow.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/cow.zs @@ -10,7 +10,7 @@ class RedneckCow : DukeActor Strength COWSTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.5, 0.5); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/destructo.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/destructo.zs index 4ac647c0c..2e3c2d174 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/destructo.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/destructo.zs @@ -9,7 +9,7 @@ class RedneckDestructo : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { // do NOT run the default init code for this one. } @@ -29,7 +29,7 @@ class RedneckDestroyTags : DukeActor pic "DESTROYTAGS"; +DESTRUCTOIMMUNE; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat |= CSTAT_SPRITE_INVISIBLE; self.scale = (REPEAT_SCALE, REPEAT_SCALE); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/dog.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/dog.zs index 1b0a15a5b..666feec5f 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/dog.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/dog.zs @@ -7,7 +7,7 @@ class RedneckDog : DukeActor +KILLCOUNT; Strength 200; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.25, 0.25); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/hen.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/hen.zs index e01c5a279..900ca9f8b 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/hen.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/hen.zs @@ -11,7 +11,7 @@ class RedneckHen : DukeActor Strength HEN_TOUGHER_STRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.pal == 35) { diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/hulk.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/hulk.zs index b05e83f31..0d92a6fa5 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/hulk.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/hulk.zs @@ -19,7 +19,7 @@ class RedneckHulk : DukeActor Strength HULKSTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.5, 0.5); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs index 58cbfd305..dc14d431d 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/minion.zs @@ -14,7 +14,7 @@ class RedneckMinion : DukeActor +TRANSFERPALTOJIBS; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.25, 0.25); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/mosquito.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/mosquito.zs index 4a151fd9f..135ff5992 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/mosquito.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/mosquito.zs @@ -18,7 +18,7 @@ class RedneckMosquito : DukeActor floating_ceilingdist 50; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.21875, 0.109375); self.clipdist = 32; diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/pig.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/pig.zs index cd94b844c..6b18e92de 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/pig.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/pig.zs @@ -10,7 +10,7 @@ class RedneckPig : DukeActor Strength PIGSTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.25, 0.25);; self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/sheriff.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/sheriff.zs index f8fef0eb1..3c03c81bf 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/sheriff.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/sheriff.zs @@ -9,7 +9,7 @@ class RedneckSheriff : DukeActor +KILLCOUNT; Strength LTHSTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.375, 0.34375); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/shitboss.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/shitboss.zs index 85bc77cd1..8d1f06ef0 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/shitboss.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/shitboss.zs @@ -15,7 +15,7 @@ class RedneckShitBoss : DukeActor Strength 2500; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.75, 0.75); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/tornado.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/tornado.zs index b42bd81dc..f16af8aa9 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/tornado.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/tornado.zs @@ -8,7 +8,7 @@ class RedneckTornado : DukeActor +NOHITSCANHIT; Strength MEGASTRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (1, 2); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckenemies/vixen.zs b/wadsrc/static/zscript/games/duke/actors/redneckenemies/vixen.zs index 67e303034..8a17e6e9a 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckenemies/vixen.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckenemies/vixen.zs @@ -21,7 +21,7 @@ class RedneckVixen : DukeActor } - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.pal == 34) { diff --git a/wadsrc/static/zscript/games/duke/actors/redneckstuff/ambient_rr.zs b/wadsrc/static/zscript/games/duke/actors/redneckstuff/ambient_rr.zs index 129a8880d..d4529cf68 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckstuff/ambient_rr.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckstuff/ambient_rr.zs @@ -14,7 +14,7 @@ class RedneckSoundFX : DukeActor } // this actor needs to start on STAT_DEFAULT. - override void Initialize() + override void Initialize(DukeActor spawner) { self.ChangeStat(STAT_ZOMBIEACTOR); } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckstuff/items.zs b/wadsrc/static/zscript/games/duke/actors/redneckstuff/items.zs index ec3378a19..45662b4e0 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckstuff/items.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckstuff/items.zs @@ -28,9 +28,9 @@ class RedneckMoonshine : DukeItemBase pic "STEROIDS"; +INVENTORY; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.203125, 0.140625)); + commonItemSetup(spawner, (0.203125, 0.140625)); } } class RedneckHipWader : DukeItemBase @@ -48,9 +48,9 @@ class RedneckCowpie : DukeItemBase pic "COWPIE"; +INVENTORY; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.125, 0.09375)); + commonItemSetup(spawner, (0.125, 0.09375)); } } class RedneckBeer : DukeItemBase @@ -59,9 +59,9 @@ class RedneckBeer : DukeItemBase { pic "BEER"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.078125, 0.0625)); + commonItemSetup(spawner, (0.078125, 0.0625)); } } class RedneckSnorkel : DukeItemBase @@ -72,16 +72,16 @@ class RedneckSnorkel : DukeItemBase +INVENTORY; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.296875, 0.25)); + commonItemSetup(spawner, (0.296875, 0.25)); } } class RedneckDoorkey : DukeAccessCard { - override void Initialize() + override void Initialize(DukeActor spawner) { - super.Initialize(); + super.Initialize(spawner); self.Scale = (0.171875, 0.1875); } } @@ -92,9 +92,9 @@ class RedneckAmmo : DukeItemBase pic "AMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.140625, 0.140625)); + commonItemSetup(spawner, (0.140625, 0.140625)); } } @@ -111,9 +111,9 @@ class RedneckSawAmmo : DukeItemBase { pic "SAWAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.1875, 0.109375)); + commonItemSetup(spawner, (0.1875, 0.109375)); } } class RedneckShotgunammo : DukeItemBase @@ -122,9 +122,9 @@ class RedneckShotgunammo : DukeItemBase { pic "SHOTGUNAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.28125, 0.265625)); + commonItemSetup(spawner, (0.28125, 0.265625)); if (isRRRA()) self.cstat = CSTAT_SPRITE_BLOCK_HITSCAN; } } @@ -136,9 +136,9 @@ class RedneckRifleAmmo : DukeItemBase pic "BATTERYAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.234375, 0.234375)); + commonItemSetup(spawner, (0.234375, 0.234375)); } } class RedneckBlaster : DukeItemBase @@ -148,9 +148,9 @@ class RedneckBlaster : DukeItemBase pic "ALIENBLASTERSPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.28125, 0.265625)); + commonItemSetup(spawner, (0.28125, 0.265625)); } } class RedneckBlasterammo : DukeItemBase @@ -160,9 +160,9 @@ class RedneckBlasterammo : DukeItemBase pic "DEVISTATORAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.15625, 0.140625)); + commonItemSetup(spawner, (0.15625, 0.140625)); } } @@ -174,9 +174,9 @@ class RedneckBowlingBallsprite : DukeItemBase strength BOWLINGBALL_WEAPON_STRENGTH; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.171875, 0.171875), -1, true); + commonItemSetup(spawner, (0.171875, 0.171875), -1, true); } } class RedneckDynamiteAmmo : DukeItemBase @@ -192,9 +192,9 @@ class RedneckCrossbow : DukeItemBase { pic "CROSSBOWSPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.25, 0.21875)); + commonItemSetup(spawner, (0.25, 0.21875)); } } class RedneckShotgun : DukeItemBase @@ -211,9 +211,9 @@ class RedneckRipsaw : DukeItemBase pic "RIPSAWSPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.34375, 0.203125)); + commonItemSetup(spawner, (0.34375, 0.203125)); } } class RedneckTitgun : DukeItemBase @@ -223,9 +223,9 @@ class RedneckTitgun : DukeItemBase pic "TITSPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.265625, 0.25)); + commonItemSetup(spawner, (0.265625, 0.25)); } } class RedneckPorkRinds : DukeItemBase @@ -235,9 +235,9 @@ class RedneckPorkRinds : DukeItemBase pic "SIXPAK"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.203125, 0.140625)); + commonItemSetup(spawner, (0.203125, 0.140625)); if (isRRRA()) self.cstat = CSTAT_SPRITE_BLOCK_HITSCAN; } } @@ -251,9 +251,9 @@ class RedneckGoogooCluster : DukeItemBase +NOFLOORPAL; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.125, 0.125)); + commonItemSetup(spawner, (0.125, 0.125)); self.cstat |= CSTAT_SPRITE_YCENTER; } @@ -270,9 +270,9 @@ class RedneckWhiskey : DukeItemBase pic "FIRSTAID"; +INVENTORY; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.125, 0.125)); + commonItemSetup(spawner, (0.125, 0.125)); } } class RedneckRevolver : DukeItemBase @@ -281,9 +281,9 @@ class RedneckRevolver : DukeItemBase { pic "FIRSTGUNSPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup(((0.25, 0.25))); + commonItemSetup(spawner, ((0.25, 0.25))); } } class RedneckPowderKeg : DukeItemBase @@ -337,9 +337,9 @@ class RedneckMotoAmmo : DukeItemBase { pic "MOTOAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.359375, 0.359375)); + commonItemSetup(spawner, (0.359375, 0.359375)); } } class RedneckBoatAmmo : DukeItemBase @@ -348,9 +348,9 @@ class RedneckBoatAmmo : DukeItemBase { pic "BOATAMMO"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.359375, 0.359375)); + commonItemSetup(spawner, (0.359375, 0.359375)); } } class RedneckChickenArrows : DukeItemBase @@ -360,8 +360,8 @@ class RedneckChickenArrows : DukeItemBase pic "RPG2SPRITE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { - commonItemSetup((0.34375, 0.3125)); + commonItemSetup(spawner, (0.34375, 0.3125)); } } diff --git a/wadsrc/static/zscript/games/duke/actors/redneckstuff/stuff.zs b/wadsrc/static/zscript/games/duke/actors/redneckstuff/stuff.zs index 6b3ee61d6..2ac25cf48 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckstuff/stuff.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckstuff/stuff.zs @@ -6,7 +6,7 @@ class RedneckRock : DukeActor +INTERNAL_BADGUY; Strength 200; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (1, 1); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/redneckweapons/boatcannon.zs b/wadsrc/static/zscript/games/duke/actors/redneckweapons/boatcannon.zs index 8b8bcdf31..2924c1b17 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckweapons/boatcannon.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckweapons/boatcannon.zs @@ -15,13 +15,13 @@ class RedneckBoatGrenade : RedneckDynamiteArrow // RRRA only DukeProjectile.SpawnSound "MORTAR"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.extra = 10; self.vel.Z = -10; self.vel.X *= 2; - super.Initialize(); + super.Initialize(spawner); } override bool premoveeffect() diff --git a/wadsrc/static/zscript/games/duke/actors/redneckweapons/crossbow.zs b/wadsrc/static/zscript/games/duke/actors/redneckweapons/crossbow.zs index 16bc12ea3..ec64a7e4d 100644 --- a/wadsrc/static/zscript/games/duke/actors/redneckweapons/crossbow.zs +++ b/wadsrc/static/zscript/games/duke/actors/redneckweapons/crossbow.zs @@ -51,7 +51,7 @@ class RedneckChickenArrow : RedneckDynamiteArrow DukeProjectile.SpawnSound "CHICKENBOW_FIRE"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.hitag = 0; self.lotsofstuff("RedneckFeather", random(1, 4)); diff --git a/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs b/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs index 717a665f6..ceffd216d 100644 --- a/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs +++ b/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs @@ -1,6 +1,6 @@ class DukeRespawnController : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal == 1) { diff --git a/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs b/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs index 93a7fd6c5..b91e85a77 100644 --- a/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs +++ b/wadsrc/static/zscript/games/duke/actors/respawnmarker.zs @@ -8,7 +8,7 @@ class DukeRespawnMarker : DukeActor +NOFLOORPAL; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (!self.mapSpawned && ownerActor != null) self.pos.Z = ownerActor.floorZ; self.scale = (0.375, 0.375); @@ -45,7 +45,7 @@ class RedneckRespawnMarker : DukeRespawnMarker "RESPAWNMARKER8", "RESPAWNMARKER9", "RESPAWNMARKER10", "RESPAWNMARKER11", "RESPAWNMARKER12", "RESPAWNMARKER13", "RESPAWNMARKER14"; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.125, 0.125); } diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/biker.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/biker.zs index d8921f1f7..988d54422 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/biker.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/biker.zs @@ -9,7 +9,7 @@ class RedneckBiker : DukeActor +LOOKALLAROUND; Strength 150; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.4375, 0.34375); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerb.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerb.zs index 80c34b29f..79cf79446 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerb.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerb.zs @@ -10,7 +10,7 @@ class RedneckBikerB : DukeActor gravityfactor 0.25; Strength 300; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.4375, 0.34375); self.clipdist = 18; diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerbv2.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerbv2.zs index 9c02eba03..09992c7b1 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerbv2.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bikerbv2.zs @@ -11,7 +11,7 @@ class RedneckBikerBV2 : DukeActor gravityfactor 0.125; Strength 200; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.4375, 0.34375); self.clipdist = 18; diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bubbaelvis.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bubbaelvis.zs index f602b7470..5ec263e7e 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/bubbaelvis.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/bubbaelvis.zs @@ -10,7 +10,7 @@ class RedneckBubbaelvis : RedneckBubbaStand Strength 100; } - override void initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.390625, 0.328125); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheer.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheer.zs index adb7e8c27..6213cd230 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheer.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheer.zs @@ -11,7 +11,7 @@ class RedneckCheerleader : DukeActor jumptoplayer_factor 1.6; Strength 200; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.3125, 0.3125); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerb.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerb.zs index 100d4a933..82c06edd3 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerb.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerb.zs @@ -10,7 +10,7 @@ class RedneckCheerleaderB : DukeActor gravityfactor 0.25; Strength 150; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.4375, 0.34375); self.clipdist = 18; diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerboat.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerboat.zs index ad640d2fb..aad8d9719 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerboat.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cheerboat.zs @@ -11,7 +11,7 @@ class RedneckCheerBoat : DukeActor landmovefactor 0.5; Strength 200; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.5, 0.5); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cootbillyplay.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cootbillyplay.zs index 5e7c3f9df..86e8fb162 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/cootbillyplay.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/cootbillyplay.zs @@ -8,7 +8,7 @@ class RedneckCootplay : DukeActor +NORADIUSPUSH; Strength 10000; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.375, 0.28128); self.setClipDistFromTile(); @@ -27,7 +27,7 @@ class RedneckBillyPlay : DukeActor +NORADIUSPUSH; Strength 10000; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.390625, 0.328125); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/hulkboat.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/hulkboat.zs index aabda40b1..8eeb36656 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/hulkboat.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/hulkboat.zs @@ -11,7 +11,7 @@ class RedneckHulkBoat : DukeActor landmovefactor 0.5; Strength 300; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.75, 0.75); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/makeout.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/makeout.zs index e14fb8959..bbfef9f18 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/makeout.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/makeout.zs @@ -8,7 +8,7 @@ class RedneckMakeout : DukeActor +LOOKALLAROUND; Strength 150; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.40625, 0.40625); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/mama.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/mama.zs index f17aba69e..9a1c08173 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/mama.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/mama.zs @@ -6,7 +6,7 @@ class RedneckMamaCloud : DukeActor Strength 10000; +NORADIUSPUSH; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (1, 1); self.cstat = CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_TRANS_FLIP; @@ -32,7 +32,7 @@ class RedneckMama : DukeActor Strength 2000; } - override void Initialize() + override void Initialize(DukeActor spawner) { if (self.pal == 30) { diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/minionboat.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/minionboat.zs index 1e31f5fc1..bba910d01 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/minionboat.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/minionboat.zs @@ -11,7 +11,7 @@ class RedneckMinionBoat : DukeActor landmovefactor 0.5; Strength 150; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.25, 0.25); self.setClipDistFromTile(); diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbit.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbit.zs index 7fb32c4a5..71f44ebb2 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbit.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbit.zs @@ -9,7 +9,7 @@ class RedneckRabbit : DukeActor Strength 50; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.28125, 0.28125); } diff --git a/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbitspawner.zs b/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbitspawner.zs index 19b84f827..c515bc8c6 100644 --- a/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbitspawner.zs +++ b/wadsrc/static/zscript/games/duke/actors/rrraenemies/rabbitspawner.zs @@ -1,6 +1,6 @@ class RedneckRabbitSpawner : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { self.cstat = CSTAT_SPRITE_INVISIBLE; self.extra = 0; diff --git a/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs b/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs index 5208f506e..47e8f2743 100644 --- a/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs +++ b/wadsrc/static/zscript/games/duke/actors/soundcontroller.zs @@ -2,7 +2,7 @@ class DukeSoundController : DukeActor { - override void Initialize() + override void Initialize(DukeActor spawner) { if (ud.multimode < 2 && self.pal == 1) { diff --git a/wadsrc/static/zscript/games/duke/actors/touchplate.zs b/wadsrc/static/zscript/games/duke/actors/touchplate.zs index 641c0753b..b52cff334 100644 --- a/wadsrc/static/zscript/games/duke/actors/touchplate.zs +++ b/wadsrc/static/zscript/games/duke/actors/touchplate.zs @@ -18,7 +18,7 @@ class DukeTouchPlate : DukeActor return true; } - override void Initialize() + override void Initialize(DukeActor spawner) { let sectp = self.sector; self.temp_pos.Z = sectp.floorz; diff --git a/wadsrc/static/zscript/games/duke/actors/worldtour/firefly.zs b/wadsrc/static/zscript/games/duke/actors/worldtour/firefly.zs index 36c2496a8..774b76d1a 100644 --- a/wadsrc/static/zscript/games/duke/actors/worldtour/firefly.zs +++ b/wadsrc/static/zscript/games/duke/actors/worldtour/firefly.zs @@ -28,7 +28,7 @@ class DukeFireflyFlyingEffect : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.scale = (0.25, 0.25); self.ChangeStat(STAT_MISC); @@ -105,7 +105,7 @@ class DukeFirefly : DukeLizTrooper // recycles part of the Liztrooper code and d return true; } - override void Initialize() + override void Initialize(DukeActor spawner) { } diff --git a/wadsrc/static/zscript/games/duke/actors/worldtour/flamethrower.zs b/wadsrc/static/zscript/games/duke/actors/worldtour/flamethrower.zs index 83ae77b1f..af68f9984 100644 --- a/wadsrc/static/zscript/games/duke/actors/worldtour/flamethrower.zs +++ b/wadsrc/static/zscript/games/duke/actors/worldtour/flamethrower.zs @@ -276,11 +276,11 @@ class DukeOnFire : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { - if (!self.mapspawned) + if (spawner) { - self.Angle = self.ownerActor.Angle; + self.Angle = spawner.Angle; self.shade = -64; self.cstat = randomXFlip(); @@ -330,7 +330,7 @@ class DukeWhispySmoke : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { self.pos.X += frandom(-8, 8); self.pos.Y += frandom(-8, 8); @@ -371,10 +371,9 @@ class DukeLavaPoolBubble : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { - let owner = self.ownerActor; - if (owner.scale.X < 0.46875) + if (spawner.scale.X < 0.46875) { self.scale = (0, 0); return; @@ -403,7 +402,7 @@ class DukeLavaPool : DukeActor Strength 0; } - override void Initialize() + override void Initialize(DukeActor spawner) { bool away = self.isAwayFromWall(6.75); @@ -423,7 +422,7 @@ class DukeLavaPool : DukeActor double c, f; [c, f] = self.sector.getslopes(self.pos.XY); self.pos.Z = f - 0.78125; - if (self != self.ownerActor) + if (!self.mapSpawned) self.scale = (REPEAT_SCALE, REPEAT_SCALE); } diff --git a/wadsrc/static/zscript/games/duke/dukeactor.zs b/wadsrc/static/zscript/games/duke/dukeactor.zs index 84781f13a..d753c7d22 100644 --- a/wadsrc/static/zscript/games/duke/dukeactor.zs +++ b/wadsrc/static/zscript/games/duke/dukeactor.zs @@ -412,7 +412,7 @@ class DukeActor : CoreActor native - virtual void Initialize() + virtual void Initialize(DukeActor spawner) { if (!self.bSIMPLEINIT && !self.badguy() && self.scripted()) { @@ -424,17 +424,16 @@ class DukeActor : CoreActor native } self.clipdist = 10; - if (self.ownerActor != null) self.angle = self.ownerActor.angle; + if (spawner != null) self.angle = spawner.angle; self.ownerActor = self; self.ChangeStat(STAT_ACTOR); } } - void commonItemSetup(Vector2 scale = (0.5, 0.5), int usefloorshade = -1, bool noinitialmove = false) + void commonItemSetup(DukeActor spawner, Vector2 scale = (0.5, 0.5), int usefloorshade = -1, bool noinitialmove = false) { - let owner = self.ownerActor; - if (owner != self) + if (spawner && spawner != self) { self.lotag = 0; if (!noinitialmove) @@ -463,7 +462,7 @@ class DukeActor : CoreActor native self.shade = -17; self.scale = scale; - if (owner != self) self.ChangeStat(STAT_ACTOR); + if (spawner && spawner != self) self.ChangeStat(STAT_ACTOR); else { self.ChangeStat(STAT_ZOMBIEACTOR);