Linedef action on "explosion"?

Is there any way to trigger a linedef action when a projectile explodes within its vicinity? I know that you can do an action when a linedef that's part of a wall is shot, but I wanna know if it can be done with *only* an explosive projectile, like a rocket. If not, then I have other ways to do what I wanna do, but this seems the most obvious way.

Share this post


Link to post

No, not really.

The work around usually consists in using invisible things placed along the linedef that will take damage. For instance, it's how Strife handled it, with forcefield guard actors and degnin ore.

Share this post


Link to post

Yeah, that's what I figured... so I figured I'd just place a custom thing that only takes damage of a custom type and ignores all other damage types, then has an action for when it's activated ('killed'). Thanks again Gez, you're always helpful. :D

Share this post


Link to post

Yeah, it worked pretty well... I created a new DECORATE Thing and put it in the middle of closed walls...

actor BombDoorActivator 10400
{
	Height 128
	Radius 64
	Health 1
	DamageFactor Slash, 0
	DamageFactor Magic, 0
	DamageFactor Boom, 100
	+SHOOTABLE
	+NEVERRESPAWN
	+DONTMORPH
	+DONTRIP
	+NOTELEFRAG
	+NEVERFAST
	+NOINFIGHTING
	+NOTARGET
	+NOTIMEFREEZE
	+NOFEAR
	+NOTARGETSWITCH
	+NOTELEOTHER
	+NOICEDEATH
	+NOBLOOD
	+NOVERTICALMELEERANGE
	States
	{
	Spawn:
		TNTA A 1
		Loop
	Death:
		TNT1 A 1
		Stop
	}
}
Then, I use Thing action 194 to "remove" the wall. It only works with the designated weapon. The large radius and tall height give it the ability to be blown up from either side of the wall, and at any point of the wall's height (since the blastable walls are only ever 128 units tall).

Share this post


Link to post

How about this...

actor ExplodingWall 20001
{
health 1
radius 1
height 1
DamageFactor Slash, 0
DamageFactor Magic, 0
DamageFactor Boom, 100
+nogravity
+shootable
states
{
Spawn:
TNT1 A -1
stop
Death:
TNT1 A 0 ACS_ExecuteAlways(600, 0)
stop
}
}

actor ExplodingWall2 : ExplodingWall 20002
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(601, 0)
stop
}
}

actor ExplodingWall3 : ExplodingWall 20003
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(602, 0)
stop
}
}

actor ExplodingWall4 : ExplodingWall 20004
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(603, 0)
stop
}
}

actor ExplodingWall5 : ExplodingWall 20005
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(604, 0)
stop
}
}

actor ExplodingWall6 : ExplodingWall 20006
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(605, 0)
stop
}
}

actor ExplodingWall7 : ExplodingWall 20007
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(606, 0)
stop
}
}

actor ExplodingWall8 : ExplodingWall 20008
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(607, 0)
stop
}
}

actor ExplodingWall9 : ExplodingWall 20009
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(608, 0)
stop
}
}

actor ExplodingWall10 : ExplodingWall 20010
{
states
{
Death:
TNT1 A 0 ACS_ExecuteAlways(609, 0)
stop
}
}

Share this post


Link to post

Why do you need so many? Since all you need for them to do is to run a script when they die; it's simpler to just put special 226 (ACS_ExecuteAlways) on them in the map editor. That way, you can use the same actor for whatever script number.

Share this post


Link to post

I took a short video of it working... shot it with my cellphone camera so it's not the prettiest presentation but it gets the job done.

http://youtu.be/PdfYF3EAti4

I expanded the BombDoorActivator Actor's Death state to include a mess of A_TossGib calls, then put a bunch of JUNK* sprites into the wad. Works pretty well, eh? No ACS required this time around. :)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now