- moved all Duke enemy definitions to a subfolder and split up mech.zs.

This commit is contained in:
Christoph Oelckers 2022-12-31 09:24:43 +01:00
parent fd7a4e050a
commit 6ba100391e
22 changed files with 374 additions and 269 deletions

View file

@ -115,16 +115,6 @@ version "4.10"
#include "zscript/games/duke/actors/batteryammo.zs"
#include "zscript/games/duke/actors/sixpak.zs"
#include "zscript/games/duke/actors/atomichealth.zs"
#include "zscript/games/duke/actors/pigcop.zs"
#include "zscript/games/duke/actors/liztroop.zs"
#include "zscript/games/duke/actors/lizman.zs"
#include "zscript/games/duke/actors/octabrain.zs"
#include "zscript/games/duke/actors/commander.zs"
#include "zscript/games/duke/actors/mech.zs"
#include "zscript/games/duke/actors/boss1.zs"
#include "zscript/games/duke/actors/boss2.zs"
#include "zscript/games/duke/actors/boss3.zs"
#include "zscript/games/duke/actors/boss4.zs"
#include "zscript/games/duke/actors/boss5.zs"
#include "zscript/games/duke/actors/females.zs"
@ -159,6 +149,25 @@ version "4.10"
#include "zscript/games/duke/actors/nwinter.zs"
#include "zscript/games/duke/actors/dukeenemies/enemy_common.zs"
#include "zscript/games/duke/actors/dukeenemies/boss1.zs"
#include "zscript/games/duke/actors/dukeenemies/boss2.zs"
#include "zscript/games/duke/actors/dukeenemies/boss3.zs"
#include "zscript/games/duke/actors/dukeenemies/boss4.zs"
#include "zscript/games/duke/actors/dukeenemies/cannon.zs"
#include "zscript/games/duke/actors/dukeenemies/commander.zs"
#include "zscript/games/duke/actors/dukeenemies/drone.zs"
#include "zscript/games/duke/actors/dukeenemies/egg.zs"
#include "zscript/games/duke/actors/dukeenemies/lizman.zs"
#include "zscript/games/duke/actors/dukeenemies/liztroop.zs"
#include "zscript/games/duke/actors/dukeenemies/newbeast.zs"
#include "zscript/games/duke/actors/dukeenemies/octabrain.zs"
#include "zscript/games/duke/actors/dukeenemies/pigcop.zs"
#include "zscript/games/duke/actors/dukeenemies/rotategun.zs"
#include "zscript/games/duke/actors/dukeenemies/shark.zs"
#include "zscript/games/duke/actors/dukeenemies/tank.zs"
#include "zscript/games/duke/actors/dukeenemies/turret.zs"
#include "zscript/games/duke/actors/dukeweapons/melee.zs"
#include "zscript/games/duke/actors/dukeweapons/hitscan.zs"
#include "zscript/games/duke/actors/dukeweapons/projectiles.zs"

View file

@ -1,16 +1,17 @@
class DukeBoss1 : DukeActor
class DukeBossBase : DukeActor
{
const PIGCOPSTRENGTH = 100;
default
{
pic "BOSS1";
+INTERNAL_BADGUY;
+KILLCOUNT;
+NODAMAGEPUSH;
+BOSS;
+ALTHITSCANDIRECTION;
+DONTENTERWATER;
}
override void Initialize()
{
let owner = self.ownerActor;
@ -29,10 +30,27 @@ class DukeBoss1 : DukeActor
}
}
}
class DukeBoss1 : DukeBossBase
{
const BOSS1STRENGTH = 4500;
const BOSS1PALSTRENGTH = 1000;
default
{
pic "BOSS1";
+DONTENTERWATER;
Strength BOSS1STRENGTH;
}
override void PlayFTASound()
{
Duke.PlaySound("BOS1_RECOG");
}
}
@ -41,17 +59,12 @@ class DukeBoss1Stayput : DukeBoss1
default
{
pic "BOSS1STAYPUT";
+BADGUYSTAYPUT;
}
override void PlayFTASound()
{
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -1,5 +1,8 @@
class DukeBoss2 : DukeBoss1
class DukeBoss2 : DukeBossBase
{
const BOSS2STRENGTH = 4500;
const BOSS2PALSTRENGTH = 1000;
default
{
pic "BOSS2";
@ -8,14 +11,23 @@ class DukeBoss2 : DukeBoss1
+SPECIALINIT;
+ST3CONFINED;
+DONTENTERWATER;
Strength BOSS2STRENGTH;
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
override void PlayFTASound()
{
if (self.pal == 1)
Duke.PlaySound("BOS2_RECOG");
else Duke.PlaySound("WHIPYOURASS");
}
}
@ -24,12 +36,7 @@ class DukeBoss2Stayput : DukeBoss2
default
{
pic "BOSS2STAYPUT";
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
+BADGUYSTAYPUT;
}
}

View file

@ -1,10 +1,14 @@
class DukeBoss3 : DukeBoss1
class DukeBoss3 : DukeBossBase
{
const BOSS3STRENGTH = 4500;
const BOSS3PALSTRENGTH = 1000;
default
{
pic "BOSS3";
-ALTHITSCANDIRECTION;
-DONTENTERWATER;
Strength BOSS3STRENGTH;
}
override void PlayFTASound()
@ -13,6 +17,8 @@ class DukeBoss3 : DukeBoss1
Duke.PlaySound("BOS3_RECOG");
else Duke.PlaySound("RIPHEADNECK");
}
}
@ -21,13 +27,8 @@ class DukeBoss3Stayput : DukeBoss3
default
{
pic "BOSS3STAYPUT";
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
+BADGUYSTAYPUT;
}
}

View file

@ -1,10 +1,16 @@
class DukeBoss4 : DukeBoss1
class DukeBoss4 : DukeBossBase
{
const BOSS4STRENGTH = 6000;
const BOSS4PALSTRENGTH = 1000;
default
{
pic "BOSS4";
-ALTHITSCANDIRECTION;
-DONTENTERWATER;
Strength BOSS4STRENGTH;
}
override void PlayFTASound()
@ -21,15 +27,9 @@ class DukeBoss4Stayput : DukeBoss4
default
{
pic "BOSS4STAYPUT";
+BADGUYSTAYPUT;
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -0,0 +1,35 @@
class DukeCannonball: DukeActor
{
const CANNONBALLSTRENGTH = 400;
default
{
pic "CANNONBALL";
Strength CANNONBALLSTRENGTH;
}
}
class DukeCannonballs : DukeActor // (1818)
{
const CANNONBALLSSTRENGTH = 10;
default
{
pic "CANNONBALLS";
Strength CANNONBALLSSTRENGTH;
}
}
class DukeCannon : DukeActor // (1810)
{
const CANNONSTRENGTH = 400;
default
{
+BADGUY
Strength CANNONSTRENGTH;
pic "CANNON";
}
}

View file

@ -1,5 +1,8 @@
class DukeCommander : DukeActor
{
const COMMANDERSTRENGTH = 350;
const CAPTSPINNINGPLAYER = -11;
default
{
pic "COMMANDER";
@ -14,12 +17,16 @@ class DukeCommander : DukeActor
falladjustz 0;
floating_floordist 8;
floating_ceilingdist 80;
Strength COMMANDERSTRENGTH;
}
override void PlayFTASound()
{
self.PlayActorSound("COMM_RECOG");
}
}
class DukeCommanderStayput: DukeCommander
@ -27,11 +34,7 @@ class DukeCommanderStayput: DukeCommander
default
{
pic "COMMANDERSTAYPUT";
+BADGUYSTAYPUT;
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -0,0 +1,27 @@
class DukeDrone : DukeActor
{
const DRONESTRENGTH = 150;
default
{
pic "DRONE";
Strength DRONESTRENGTH;
+INTERNAL_BADGUY;
+KILLCOUNT;
+NOWATERDIP;
+FLOATING;
+QUICKALTERANG;
+NOJIBS;
+NOHITJIBS;
falladjustz 0;
floating_floordist 30;
floating_ceilingdist 50;
}
override void PlayFTASound()
{
self.PlayActorSound("DRON_RECOG");
}
}

View file

@ -0,0 +1,29 @@
class DukeEgg : DukeActor
{
default
{
pic "EGG";
Strength TOUGH;
}
override void Initialize()
{
if (ud.monsters_off == 1)
{
self.scale = (0, 0);
self.ChangeStat(STAT_MISC);
}
else
{
self.bINTERNAL_BADGUY = true; // the egg needs this flag, but it should not run through the monster init code.
self.clipdist = 6;
self.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip();
self.ChangeStat(STAT_ZOMBIEACTOR);
}
}
}

View file

@ -0,0 +1,4 @@
extend class DukeActor
{
}

View file

@ -47,17 +47,12 @@ class DukeLizManStayput : DukeLizMan
default
{
pic "LIZMANSTAYPUT";
+BADGUYSTAYPUT;
}
override void PlayFTASound()
{
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -13,7 +13,7 @@ class DukeLizTrooper : DukeActor
override void Initialize()
{
if (pal == 0) pal = 22;
if (self.pal == 0 || self.pal == 2) self.pal = 22;
}
override void PlayFTASound()
@ -27,7 +27,9 @@ class DukeLizTrooperToilet : DukeLizTrooper
default
{
pic "LIZTROOPONTOILET";
StartAction "none";
}
}
class DukeLizTrooperSitting : DukeLizTrooper
@ -35,7 +37,9 @@ class DukeLizTrooperSitting : DukeLizTrooper
default
{
pic "LIZTROOPJUSTSIT";
StartAction "none";
}
}
class DukeLizTrooperShoot : DukeLizTrooper
@ -75,16 +79,12 @@ class DukeLizTrooperStayput : DukeLizTrooper
default
{
pic "LIZTROOPSTAYPUT";
+BADGUYSTAYPUT;
}
override void PlayFTASound()
{
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -0,0 +1,80 @@
class DukeNewBeast : DukeActor
{
const NEWBEASTSTRENGTH = 300;
const NEWBEASTSCRATCHAMOUNT = -22;
default
{
pic "NEWBEAST";
Strength NEWBEASTSTRENGTH;
+BADGUY;
+KILLCOUNT;
+GREENSLIMEFOOD;
+GREENBLOOD;
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
class DukeNewBeastStayput : DukeNewBeast
{
default
{
pic "NEWBEASTSTAYPUT";
+BADGUYSTAYPUT;
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
class DukeNewBeastHang : DukeNewBeast
{
default
{
pic "NEWBEASTHANG";
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
class DukeNewBeastHangDead : DukeNewBeast // (4671)
{
default
{
pic "NEWBEASTHANGDEAD";
-KILLCOUNT;
Strength TOUGH;
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
class DukeNewBeastJump : DukeNewBeast // (4690)
{
default
{
pic "NEWBEASTJUMP";
}
}

View file

@ -1,18 +1,24 @@
class DukeOctabrain : DukeActor
{
const OCTASTRENGTH = 175;
const OCTASCRATCHINGPLAYER = -11;
default
{
pic "OCTABRAIN";
Strength OCTASTRENGTH;
+INTERNAL_BADGUY;
+KILLCOUNT;
+NOWATERDIP;
falladjustz 0;
}
override void PlayFTASound()
{
self.PlayActorSound("OCTA_RECOG");
}
}
class DukeOctabrainStayput: DukeOctabrain
@ -21,11 +27,9 @@ class DukeOctabrainStayput: DukeOctabrain
{
pic "OCTABRAINSTAYPUT";
+DONTDIVEALIVE;
+BADGUYSTAYPUT;
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
}
}

View file

@ -19,15 +19,11 @@ class DukePigCopStayput: DukePigCop
default
{
pic "PIGCOPSTAYPUT";
}
override void initialize()
{
super.initialize();
self.actorstayput = self.sector; // make this a flag once everything has been exported.
+BADGUYSTAYPUT;
}
}
class DukePigCopDive : DukePigCopStayput
{
default
@ -39,3 +35,4 @@ class DukePigCopDive : DukePigCopStayput
{
}
}

View file

@ -0,0 +1,29 @@
class DukeRotateGun : DukeActor
{
const ROTTURRETSTRENGTH = 40;
default
{
pic "ROTATEGUN";
Strength ROTTURRETSTRENGTH;
+INTERNAL_BADGUY;
+KILLCOUNT;
+NODAMAGEPUSH;
+NORADIUSPUSH;
+SHOOTCENTERED;
+NOVERTICALMOVE;
+MOVE_NOPLAYERINTERACT;
+NOHITJIBS;
sparkoffset -8;
aimoffset 32;
shootzoffset 0;
}
override void Initialize()
{
self.vel.Z = 0;
}
}

View file

@ -0,0 +1,23 @@
class DukeShark : DukeActor
{
const SHARKSTRENGTH = 35;
const SHARKBITESTRENGTH = -9;
default
{
pic "SHARK";
+INTERNAL_BADGUY;
+DONTDIVEALIVE;
+FLOATING;
Strength SHARKSTRENGTH;
}
override void Initialize()
{
// override some defaults.
self.scale = (0.9375, 0.9375);
self.clipdist = 10;
}
}

View file

@ -0,0 +1,17 @@
class DukeTank : DukeActor
{
const TANKSTRENGTH = 500;
meta class<DukeActor> spawntype;
property spawntype: spawntype;
default
{
pic "TANK";
Strength TANKSTRENGTH;
+BADGUY;
+KILLCOUNT;
+NODAMAGEPUSH;
+NORADIUSPUSH;
DukeTank.SpawnType "DukePigCop";
}
}

View file

@ -0,0 +1,26 @@
class DukeTurret : DukeActor
{
const TURRETSTRENGTH = 30;
default
{
pic "ORGANTIC";
Strength TURRETSTRENGTH;
+INTERNAL_BADGUY;
+KILLCOUNT;
+NOVERTICALMOVE;
+NOHITJIBS;
aimoffset 32;
}
override void PlayFTASound()
{
self.PlayActorSound("TURR_RECOG");
}
override void Initialize()
{
self.cstat |= CSTAT_SPRITE_YCENTER;
}
}

View file

@ -274,46 +274,6 @@ class RedneckUfoLight : DukeActor
}
}
class DukeNewBeast : DukeActor
{
default
{
pic "NEWBEAST";
+BADGUY;
+KILLCOUNT;
+GREENSLIMEFOOD;
+GREENBLOOD;
}
}
class DukeNewBeastStayput : DukeNewBeast
{
default
{
pic "NEWBEASTSTAYPUT";
+BADGUYSTAYPUT;
}
}
class DukeNewBeastHang : DukeNewBeast
{
default
{
pic "NEWBEASTHANG";
}
}
class DukeTank : DukeActor
{
default
{
pic "TANK";
+BADGUY;
+KILLCOUNT;
+NODAMAGEPUSH;
+NORADIUSPUSH;
}
}
class DukeFoodObject6: DukeActor
{
@ -636,14 +596,6 @@ class DukeFem6Pad: DukeActor
}
}
class DukeCannonball: DukeActor
{
default
{
pic "CANNONBALL";
}
}
class DukeSpaceShuttle : DukeActor // (487)
{
default
@ -908,22 +860,6 @@ class DukeDevastatorBlast : DukeActor // (1642)
}
}
class DukeCannonballs : DukeActor // (1818)
{
default
{
pic "CANNONBALLS";
}
}
class DukeCannon : DukeActor // (1810)
{
default
{
pic "CANNON";
}
}
class DukeHotMeat : DukeActor // (4427)
{
default
@ -940,19 +876,3 @@ class DukeLavaBubble : DukeActor // (4340)
}
}
class DukeNewBeastHangDead : DukeNewBeast // (4671)
{
default
{
pic "NEWBEASTHANGDEAD";
}
}
class DukeNewBeastJump : DukeNewBeast // (4690)
{
default
{
pic "NEWBEASTJUMP";
}
}

View file

@ -417,28 +417,3 @@ class DukeGreenSlime : DukeActor
}
}
}
class DukeEgg : DukeActor
{
default
{
pic "EGG";
}
override void Initialize()
{
if (ud.monsters_off == 1)
{
self.scale = (0, 0);
self.ChangeStat(STAT_MISC);
}
else
{
self.bINTERNAL_BADGUY = true; // the egg needs this flag, but it should not run through the monster init code.
self.clipdist = 6;
self.cstat = CSTAT_SPRITE_BLOCK_ALL | randomXFlip();
self.ChangeStat(STAT_ZOMBIEACTOR);
}
}
}

View file

@ -1,89 +0,0 @@
class DukeDrone : DukeActor
{
default
{
pic "DRONE";
+INTERNAL_BADGUY;
+KILLCOUNT;
+NOWATERDIP;
+FLOATING;
+QUICKALTERANG;
+NOJIBS;
+NOHITJIBS;
falladjustz 0;
floating_floordist 30;
floating_ceilingdist 50;
}
override void PlayFTASound()
{
self.PlayActorSound("DRON_RECOG");
}
}
class DukeTurret : DukeActor
{
default
{
pic "ORGANTIC";
+INTERNAL_BADGUY;
+KILLCOUNT;
+NOVERTICALMOVE;
+NOHITJIBS;
aimoffset 32;
}
override void PlayFTASound()
{
self.PlayActorSound("TURR_RECOG");
}
override void Initialize()
{
self.cstat |= CSTAT_SPRITE_YCENTER;
}
}
class DukeRotateGun : DukeActor
{
default
{
pic "ROTATEGUN";
+INTERNAL_BADGUY;
+KILLCOUNT;
+NODAMAGEPUSH;
+NORADIUSPUSH;
+SHOOTCENTERED;
+NOVERTICALMOVE;
+MOVE_NOPLAYERINTERACT;
+NOHITJIBS;
sparkoffset -8;
aimoffset 32;
shootzoffset 0;
}
override void Initialize()
{
self.vel.Z = 0;
}
}
class DukeShark : DukeActor
{
default
{
pic "SHARK";
+INTERNAL_BADGUY;
+DONTDIVEALIVE;
+FLOATING;
}
override void Initialize()
{
// override some defaults.
self.scale = (0.9375, 0.9375);
self.clipdist = 10;
}
}