I'm trying to set up an option regulated by CVARS that lets the player what kind of monster spawns he'll get in his playthrough. For example, CVAR = 0 means default spawns, CVAR = 1 means various zombie-type monsters replaced with other lesser monsters (to reduce ammo availability) and CVAR = 2 means randomized monsters.
So after setting it up in menudef and CVARINFO, here's a short example of what I've attempted:
ZSCRIPT:
Code: Select all
class CustomZombieman : Actor Replaces Zombieman
{
override void PostBeginPlay()
{
super.PostBeginPlay();
actor replacer;
if(monsterspawns==0) replacer = spawn("PossessedSpawner",pos,ALLOW_REPLACE);
else if(monsterspawns==1) replacer = spawn("LessZombiemen",pos,ALLOW_REPLACE);
else if(monsterspawns==2) replacer = spawn("Tier1Mob",pos,ALLOW_REPLACE);
if(replacer)
{
replacer.angle = angle;
replacer.special = special;
}
destroy();
}
}
Code: Select all
Actor PossessedSpawner : BasicWeaponPickup
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_Jump(1, "RocketGuy")
TNT1 A 0 A_Jump(2, "Major")
TNT1 A 0 A_Jump(10, "RiotShieldGuy")
TNT1 A 0 A_Jump(5, "ChainsawZombie")
TNT1 A 0 A_Jump(5, "MinigunGuy")
RifleZombie:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("RifleZombie",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
MinigunGuy:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("MinigunGuy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
ChainsawZombie:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("ChainsawZombie",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
Major:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("Major",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
RiotShieldGuy:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("RiotShieldGuy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
RocketGuy:
TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
TNT1 A 0 A_SpawnItemEx ("RocketGuy",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
Stop
}
}
Code: Select all
Actor LessZombiemen : Randomspawner
{
dropitem "PossessedSpawner"
dropitem "Imp"
dropitem "FleshSpawn"
}
Code: Select all
Actor Tier1Mob : RandomSpawner
{
dropitem "PossessedSpawner"
dropitem "PossessedSpawner"
dropitem "PossessedSpawner"
dropitem "ImpSpawner"
dropitem "ImpSpawner"
dropitem "FleshSpawn"
dropitem "FleshSpawn"
dropitem "BullDemon"
dropitem "Tier2Mob"
}