How to make a invasion map?
Posted: Sat Sep 29, 2012 12:02 am
I wasn't really able to find any good info regarding this, could someone point me in the right direction on a tutorial of sorts? Much appreciated.
Leading the way in newschool multiplayer Doom online
https://zandronum.com/forum/
Code: Select all
{
mapname = YOURMAP1
gamemode = invasion
wavelimit = 5
}
Code: Select all
clearepisodes
episode YOURMAP1
name "Your Invasion"
episode MAP01
name "Doom 2 : Hell On Earth"
map YOURMAP1 "Mission : X"
next YOURMAP2
sky1 stsky9 0.3 // just an example :)
music xxxxxxxxCode: Select all
#include "zcommon.acs"
Script 1 OPEN // MAP BEHAVIOR DURING WAVES
{
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 1) Delay(35*1); // After wave 1
ACS_Execute(50, 0);
while (GetInvasionWave() != 1 || GetInvasionState() != IS_COUNTDOWN) Delay(35*1); // Going to wave 2
ACS_Execute(51, 0);
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 2) Delay(35*1); // After wave 2
ACS_Execute(52, 0);
while (GetInvasionWave() != 2 || GetInvasionState() != IS_COUNTDOWN) Delay(35*1); // Going to wave 3
ACS_Execute(53, 0);
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 3) Delay(35*1); // After wave 3
ACS_Execute(54, 0);
while (GetInvasionWave() != 3 || GetInvasionState() != IS_COUNTDOWN) Delay(35*1); // Going to wave 4
ACS_Execute(55, 0);
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 4) Delay(15*1); // After wave 4
ACS_Execute(56, 0);
while (GetInvasionWave() != 4 || GetInvasionState() != IS_COUNTDOWN) Delay(35*1); // Going to wave 5
ACS_Execute(57, 0);
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 5) Delay(15*1); // After wave 5
ACS_Execute(58, 0);
}Code: Select all
#include "zcommon.acs"
Int Wave = 1;
Int WellDone = 0; // WellDone prevents this script to go on continuesly running to the next waves...
Script 10 OPEN
{
If (Wave == 1 && WellDone == 0)
{
// Wave 1
WellDone = 1;
Acs_Execute (50, 0, 0, 0, 0);
Delay(10);
}
If (Wave == 2 && WellDone == 0)
{
// Wave 2
WellDone = 1;
Acs_Execute (51, 0, 0, 0, 0);
Delay(10);
}
If (Wave == 3 && WellDone == 0)
{
// Wave 3
WellDone = 1;
Acs_Execute (52, 0, 0, 0, 0);
Delay(10);
}
If (Wave == 4 && WellDone == 0)
{
// Wave 4
WellDone = 1;
Acs_Execute (53, 0, 0, 0, 0);
Delay(10);
}
If (Wave == 5 && WellDone == 0)
{
// Wave 5
WellDone = 1;
Acs_Execute (54, 0, 0, 0, 0);
Delay(10);
}
Delay(35);
Restart;
}
Script 50 (void) // Wave 1
{
Delay(245);
SetFont("BIGFONT");
HudMessage(s:"Starting in 10..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 9..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 8..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 7..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 6..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 5..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 4..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 3..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 2..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
HudMessage(s:"Starting in 1..."; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 1.0, 0.05, 1.0);
Delay (35);
SpawnSpot ("BaronOfHell", 1, 999);
Delay(20);
ACS_Execute(299, 0, 0, 0, 0); // start monster counter
}
Script 299 (void) // Monsters counter - Experimental. Normally Skulltag does the monster counting in invasion mode...
{
SetFont("BIGFONT");
HudMessageBold(s: "Monsters left: ", d:ThingCount(0, 999);
HUDMSG_PLAIN, 0, CR_Red, -0.0, -0.75, 1.0, 0.03, 0);
If ( (ThingCount(0, 999)) == 0 )
{
SetFont("BIGFONT");
HudMessage(s:"Well Done...!"; HUDMSG_PLAIN, 1, CR_RED, 0.5, 0.5, 2.5, 0.05, 1.0);
Delay(10);
Wave = Wave + 1;
WellDone = 0;
Delay(10);
Acs_Terminate (299, 0);
}
Delay(const:35);
Restart;
}