I tried achieving the same thing by having a bunch of dummy actors run over lines to activate them but this is way too inconsistent. Works maybe 20% off the time. There's gotta be a better way, right?
Edit:
Just to clarify what I'm trying to do. I found a hacky solution that kinda works but there are some issues. Main issue is its triggering things I don't want it to trigger like Exit Level buttons, teleporters, etc.
Edit2:
I tried adding A_RearrangePointers(AAPTR_NULL, AAPTR_NULL, AAPTR_NULL, PTROP_NOSAFEGUARDS) to make teleporters not trigger on the player at least but it still does somehow. How do the teleporters know to teleport the player if it's not done with pointers? Or am I misunderstanding how A_RearrangePointers works?
This is what I got so far:
Code: Select all
script "SetLineActivationProjectileImpact" (void)
{
for(int i = 0; i < 65536; i++)
{
SetLineActivation (i, GetLineActivation(i)|SPAC_Impact);
}
}
Code: Select all
ACTOR Telekinesis : Weapon
{
Weapon.SlotNumber 0
Tag "Telekinesis"
+NoAlert
States
{
Ready:
PUNG A 1 A_WeaponReady
Loop
Deselect:
PUNG A 1 A_Lower
Loop
Select:
PUNG A 1 A_Raise
TNT1 A 0 ACS_NamedExecute("SetLineActivationProjectileImpact",0)
Loop
Fire:
PUNG B 1
PUNG C 1 A_SpawnItemEx("LineImpacter",0,0,0,200,0,0,0,0,0,8000)
PUNG D 1
PUNG C 1
PUNG B 1 A_ReFire
Goto Ready
}
}
ACTOR LineImpacter
{
Radius 250
Height 500
Scale 41.0
Projectile
+FLOORHUGGER
+NOCLIP
States
{
Spawn:
BAL1 A 1 Bright A_RearrangePointers(AAPTR_NULL, AAPTR_NULL, AAPTR_NULL, PTROP_NOSAFEGUARDS)
BAL1 B 1 Bright A_ChangeFlag("NOCLIP", false)
Loop
Death:
BAL1 A 1 Bright A_JumpIf(TID>8025, "DeathFinal")
BAL1 B 1 Bright A_SpawnItemEx("LineImpacter",0,0,0,200,0,0,0,0,0,TID+1)
DeathFinal:
TNT1 A 0
Stop
}
}