A_ThrowGibs
Jump to navigation
Jump to search
void A_ThrowGibs (class<Actor> cls, bool down)
Details
This function can be used to spawn and throw multiple instances of the specified actor class.
The down parameter makes it apply negative Z velocity to the spawned actors.
Implementing into your mod
Add this function to your project.
The advised place to put it in would be some base class for your monsters, for example.
Note: the default values here are purely arbitrary, you should put the ones that are going to be common in your mod. Example actor provided though.
void A_ThrowGibs(class<Actor> cls = "DNGibs", bool down = false)
{
int gibscount = random(8, 16);
for (int i = 0; i < gibscount; i++)
{
//
Actor gibs = Spawn(cls, pos);
gibs.vel = (frandom(-8,8), frandom(-8,8), frandom(0,down?-1:16));
}
}
Examples
The following actor shows a random animated flying flesh sprite.
class DNGibs : Actor
{
override void Tick()
{
Super.Tick();
if (ceilingz==pos.z || floorz==pos.z)
Destroy();
}
Default
{
+NOCLIP;
}
States
{
Spawn:
TNT1 A 0;
TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5");
stop;
Spawn1:
DGI1 ABCD 2;
loop;
Spawn2:
DGI2 ABCD 2;
loop;
Spawn3:
DGI3 ABCD 2;
loop;
Spawn4:
DGI4 ABCD 2;
loop;
Spawn5:
DGI5 ABCD 2;
loop;
}
}
Then, in the actor that you want to be explosive, use the function like this:
XDeath:
TNT1 A 0 A_ThrowGibs;
stop;