[ACS] Zandronum 3.1 - How to spawn Particles?

Discuss all aspects related to modding Zandronum here.
Post Reply
IstoleyourToast
Registered just to make one post
Posts: 1
Joined: Wed Sep 18, 2024 6:24 am

[ACS] Zandronum 3.1 - How to spawn Particles?

#1

Post by IstoleyourToast » Mon Sep 23, 2024 3:09 pm

Hello, sorry this is my first post on this forum so I don't know whether this is the right place to ask.
So I am having a bit of problem with getting particles in Zandronum. I want to make a particle effect similar to the Eviternity Portal effect and I am having a problem as particles are not showing at all.
From some research online I have concluded that there is no "SpawnParticle" function (I am not sure), neither in Decorate nor in ACS.
So, please anyone help me. I will be extremely grateful for even the slightest help.

If there is an alternative to this then can someone either explain to me or link a mod or mapset where it has been used.

Thank You.

User avatar
arkore
Forum Regular
Posts: 189
Joined: Mon Dec 17, 2012 8:01 pm

[ACS] Re: Zandronum 3.1 - How to spawn Particles?

#2

Post by arkore » Thu Nov 07, 2024 10:25 pm

LAGTEST.wad
This test wad has particles. You can open/inspect it using Slade.

That wad uses ACS to spawn the particles (in Slade click SCRIPTS file), but most particle spawners are done in DECORATE.
ACS:

Code: Select all

SpawnProjectile(999, "Particle2", Random(0,359), Random(5,10), Random(5,10), 0, 0);
DECORATE:

Code: Select all

TNT1 A 1 A_SpawnItemEx("Particle1", 0, 0, 0, frandom(-19, 19), frandom(-19, 19), frandom(-19, 19), random(0, 359))
You can see the parameters for these functions at zdoom.org/wiki. E.g. https://zdoom.org/wiki/A_SpawnItemEx and https://zdoom.org/wiki/SpawnProjectile

GLDEFS:

Code: Select all

flickerlight PULSEEXPLOSION { color 1.0 0.8 0.0 size 56 secondarySize 96 chance 0.25 }
flickerlight PULSEEXPLOSION2 { color 1.0 0.7 0.2 size 80 secondarySize 112 chance 0.25 }
flickerlight PULSEEXPLOSION3 { color 0.5 0.15 0.0 size 80 secondarySize 112 chance 0.25 }

object PulseExplosion {
	frame TNT1A { light PULSEEXPLOSION }
	frame TNT1B { light PULSEEXPLOSION2 }
	frame TNT1C { light PULSEEXPLOSION3 }
}
Here's an example of Explosion in DECORATE:

Code: Select all

ACTOR PulseExplosion {
	+NOGRAVITY
	+NOBLOCKMAP
	+NOTELEPORT
	+NOCLIP
	+BRIGHT
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx("PulseExplode")
			TNT1 AA 0 A_SpawnItemEx("PulseExplodeSpark", 0, 0, 0, frandom(-19, 19), frandom(-19, 19), frandom(-19, 19), random(0, 359))
			TNT1 A 5 A_SpawnItemEx("PulseExplodeSpark2", 0, 0, 0, frandom(-9, 9), frandom(-9, 9), frandom(-9, 9), random(0, 359))
			TNT1 AAAAA 0 A_SpawnItemEx("PulseExplodeSpark", 0, 0, 0, frandom(-16, 16), frandom(-16, 16), frandom(-16, 16), random(0, 359))
			TNT1 AA 0 A_SpawnItemEx("PulseExplodeSpark2", 0, 0, 0, frandom(-6, 6), frandom(-6, 6), frandom(-6, 6), random(0, 359))
			TNT1 AAA 0 A_SpawnItemEx("PulseExplodeSmoke", 0, 0, 0, 0, frandom(-3, 3), 0, random(0, 359))
			TNT1 B 5 A_SpawnItemEx("PulseExplodeFlare2")
			TNT1 C 5
			Stop
	}
}
If you want the explosion to be continuous, then change "Stop" to "Loop".

Example particles

Code: Select all

ACTOR Particle1 {
	Height 0
	Radius 0
	Mass 0
	Damage 0
	+THRUACTORS
	+NOTELEPORT
	+DONTSPLASH
	+DOOMBOUNCE
	+CLIENTSIDEONLY
	+MISSILE
	+NOBLOCKMAP
	+FORCEXYBILLBOARD
	RENDERSTYLE ADD
	BounceFactor 0.5
	Gravity 0.4
	Scale 0.02
	States {
		Spawn:
			SPKR A 2 Bright A_FadeOut(0.01)
			Loop
	}
}
ACTOR Particle2 : Particle1 {
	BounceFactor 0.6
	Gravity 0.2
	States {
		Spawn:
			SPKG A 2 Bright A_FadeOut(0.01)
			Loop
	}
}


ACTOR Particle3 : Particle2 {
	States {
		Spawn:
			SPKB A 2 Bright A_FadeOut(0.01)
			Loop
	}
}
Last edited by arkore on Sun Nov 24, 2024 6:55 pm, edited 1 time in total.

User avatar
arkore
Forum Regular
Posts: 189
Joined: Mon Dec 17, 2012 8:01 pm

[ACS] Re: Zandronum 3.1 - How to spawn Particles?

#3

Post by arkore » Sat Nov 23, 2024 6:37 pm

Edit:

GLDEFS:

Code: Select all

flickerlight PULSEEXPLOSION { color 1.0 0.8 0.0 size 56 secondarySize 96 chance 0.25 }
flickerlight PULSEEXPLOSION2 { color 1.0 0.7 0.2 size 80 secondarySize 112 chance 0.25 }
flickerlight PULSEEXPLOSION3 { color 0.5 0.15 0.0 size 80 secondarySize 112 chance 0.25 }

object PulseExplosion {
	frame TNT1A { light PULSEEXPLOSION }
	frame TNT1B { light PULSEEXPLOSION2 }
	frame TNT1C { light PULSEEXPLOSION3 }
}

Post Reply