How to make a invasion map?

Discuss all aspects related to modding Zandronum here.
Post Reply
Camo Yoshi
Forum Regular
Posts: 129
Joined: Wed Jun 13, 2012 7:08 pm
Location: Bainbridge Island, WA
Contact:

How to make a invasion map?

#1

Post by Camo Yoshi » 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.
50+GB of WADs and counting: http://camoy.sdf.org/wads/

Ask your doctor if Zandrama is right for you. Side effects include butthurt, loss of sleep, loss of ego, embarrassment, and social withdrawal.

User avatar
ibm5155
Addicted to Zandronum
Posts: 1641
Joined: Tue Jun 05, 2012 9:32 pm
Location: Somewhere, over the rainbow

RE: How to make a invasion map?

#2

Post by ibm5155 » Sat Sep 29, 2012 12:08 am

sorry i really don´t remember how to, but it have on doom builder 2, skulltag doom in hexen format (i think) the invasion monsters, they got some simple arguments like
how many of them will be spawed, what round´ll start and what´ll end.

User avatar
UnTrustable
Forum Regular
Posts: 250
Joined: Sun Jun 10, 2012 9:04 pm

RE: How to make a invasion map?

#3

Post by UnTrustable » Sat Sep 29, 2012 3:50 am

Back in 2007 i learned it this way. It gives you alot oversight what does do what, if you know what i mean.
Sure there are ways to shorten these scripts into smaller pieces of codes.
I have no idea what Doom Builder 2 has onboard or can do things for you automaticly..?
I'm here to discuss this in the old DoomBuilder. (DB1)

In XWE, SlumpEd or Slade3
Make a lump named: CMPGNINF and write in it:

Code: Select all

{
mapname = YOURMAP1
gamemode = invasion
wavelimit = 5
}
Make a lump named: MAPINFO and write in it:

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 xxxxxxxx
In DoomBuilder's (Skulltag in Hexen format) Scripts:

Code: 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);
}

++++++++++++++++++++++++++++++++++++++++++++++++++


But now-a-days i do it this way since i left the Skulltag system.
DoomBuilder (ZDoom in Hexen format)

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;
}
You can always seperate the 10 seconds countdown into its own Script.
I just thought things would be easier to understand to put the countdown into the same script.
I hope this will give you a head start. Good luck !
Last edited by UnTrustable on Sat Sep 29, 2012 4:04 am, edited 1 time in total.

Camo Yoshi
Forum Regular
Posts: 129
Joined: Wed Jun 13, 2012 7:08 pm
Location: Bainbridge Island, WA
Contact:

RE: How to make a invasion map?

#4

Post by Camo Yoshi » Sat Sep 29, 2012 4:54 am

Thanks, I'll try this once I have some more time on my hands and see how it'll work.
50+GB of WADs and counting: http://camoy.sdf.org/wads/

Ask your doctor if Zandrama is right for you. Side effects include butthurt, loss of sleep, loss of ego, embarrassment, and social withdrawal.

Post Reply