I have done a very terrible thing with A_SpawnItem

If it's not ZDoom, it goes here.
Post Reply
User avatar
olzhas1one
Posts: 70
Joined: Sun Feb 26, 2017 6:29 am

I have done a very terrible thing with A_SpawnItem

Post by olzhas1one »

I deciced to fudge around in decorate, and I made a simple item spawning script. I replaced "stop" with "loop" and I tried it out.
It was just endlessly spawning monsters, to the point where my PC just started lagging and outright blue-screened me. (I have a very good PC btw)
Yet the engine itself was doing fine... for some reason.
After that travesty I decided not to fudge around in decorate ever again
User avatar
Trance
Posts: 1089
Joined: Mon Jan 17, 2005 6:28 am
Location: 1, Rotation: 0

Re: I have done a very terrible thing with A_SpawnItem

Post by Trance »

Well now you know what not to do. Change it back and carry on fudging.
User avatar
Matt
Posts: 9696
Joined: Sun Jan 04, 2004 5:37 pm
Preferred Pronouns: They/Them
Operating System Version (Optional): Debian Bullseye
Location: Gotham City SAR, Wyld-Lands of the Lotus People, Dominionist PetroConfederacy of Saudi Canadia
Contact:

Re: I have done a very terrible thing with A_SpawnItem

Post by Matt »

Always look at your state label and make sure between every state label and the very next "loop" after it there's at least 1 frame with 1 tic. No exceptions.

(There used to be some exceptions if you really knew what you were doing, but with countinv/anon functions/ZScript those methods are all deprecated.)
User avatar
Blox
Posts: 3728
Joined: Wed Sep 22, 2010 9:35 am
Location: Apathetic Limbo

Re: I have done a very terrible thing with A_SpawnItem

Post by Blox »

Code: Select all

actor BloodPlane : Blood
{
	radius 1
	height 1
	speed 2
	scale 1.45
	gravity 0.666
	VSpeed 0
	PROJECTILE
	-NOGRAVITY
	-NOCLIP
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetGravity(Random(7,22)*0.05)
		TNT1 A 0 A_Jump(256,"Fly","Fly2","Fly3","Fly")
	Fly:
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-1,0,1.5,momx*0.8,momy*0.8,momz*0.85,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-2,0,3,momx*0.75,momy*0.75,momz*0.8,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-3,0,5,momx*0.7,momy*0.7,momz*0.75,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-4.5,0,3.5,momx*0.65,momy*0.65,momz*0.7,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-6,0,1,momx*0.6,momy*0.6,momz*0.65,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-8,0,0,momx*0.55,momy*0.55,momz*0.6,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 1
		Loop
	Fly2:
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-1,0,1.5,momx*0.8,momy*0.8,momz*0.85,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-3,0,3,momx*0.75,momy*0.75,momz*0.8,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-6,0,1,momx*0.6,momy*0.6,momz*0.65,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-8,0,-2,momx*0.55,momy*0.55,momz*0.6,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 2
		Loop
	Fly3:
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-1,0,1.5,momx*0.8,momy*0.8,momz*0.85,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-2,0,3,momx*0.75,momy*0.75,momz*0.8,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 0 A_SpawnItemEx("NewBloodSplatter3",-3,0,5,momx*0.7,momy*0.7,momz*0.75,0,SXF_ABSOLUTEMOMENTUM)
		BLUD C 1
		Loop
	Death:
		BLUD C 0 A_PlaySound("BloodSplat",CHAN_AUTO)
		BLUD BBBBAAAA 1 A_SpawnItemEx("NewBloodSplatter2", 0, 0, 0, random(-7, 7), random(-7, 7), random(4, 9), random(-180, 180), SXF_ABSOLUTEANGLE)
		Stop
	}
}
Tons of A_SpawnItemEx is fun.
Post Reply

Return to “Off-Topic”