Revilution wrote:
Then probably this is a undefined behavior of the engine, a bug or glitch probably, because i never saw such hacky way to do beams that isn't via Arctangent's ACS tracer or via A_RailAttack.
While it is a little unusual, Striker's Goldeneye TC uses it extensively
PP7 Code:
Code: Select all
ACTOR PP7 : DoomWeapon Replaces Pistol
{
Decal BulletChip
Weapon.SelectionOrder 1900
Weapon.AmmoUse 1
Weapon.AmmoGive1 7
Weapon.AmmoGive2 14
Weapon.AmmoType "PP7Clip"
Weapon.AmmoType2 "9mmBullets"
Weapon.UpSound "misc/w_pkup"
Weapon.SisterWeapon "PP7Paintball"
Obituary "%o was capped by %k's PP7."
+WEAPON.WIMPY_WEAPON
//+WEAPON.ALLOW_WITH_RESPAWN_INVUL
+WEAPON.AMMO_OPTIONAL
+WEAPON.NOAUTOFIRE
Inventory.Pickupmessage "PP7"
Radius 20
Height 16
Attacksound "weapons/pistol"
States
{
Ready:
PP7G A 0 A_WeaponReady
// goto ReloadCheck
PP7G AA 1 A_WeaponReady
PP7G A 0 A_TakeInventory("PP7Accuracy", 1)
goto Ready+1
ReloadCheck:
PP7G A 0 A_JumpIfInventory("PP7Clip",7,2)
PP7G A 0 A_JumpIfInventory("9mmBullets",1,"ReloadStart")
PP7G A 0
goto Ready+1
ReloadStart:
PP7R A 0 A_PlayWeaponSound("WeaponReload")
PP7R A 0 A_TakeInventory("PP7Accuracy", 2)
PP7R ABCDEFG 1
TNT1 A 5
goto ReloadAmmo
ReloadAmmo:
TNT1 A 0 A_TakeInventory("9mmBullets",1)
TNT1 A 0 A_GiveInventory("PP7Clip",1)
TNT1 A 0 A_JumpIfInventory("PP7Clip",7,"ReloadDone")
TNT1 A 0 A_JumpIfInventory("9mmBullets",1,"ReloadAmmo")
goto ReloadDone
ReloadDone:
TNT1 A 5
PP7R GFEDCBA 1
goto Ready+1
Deselect:
PP7G A 1 A_Lower
TNT1 A 0 A_Lower
Loop
Select:
PP7G A 1 A_Raise
TNT1 A 0 A_Raise
Loop
Fire:
PP7G A 0 A_JumpIfNoAmmo("ReloadCheck")
PP7G B 0 BRIGHT A_Gunflash
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 8, "FireAccuracy8")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 7, "FireAccuracy7")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 6, "FireAccuracy6")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 5, "FireAccuracy5")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 4, "FireAccuracy4")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 3, "FireAccuracy3")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 2, "FireAccuracy2")
PP7G B 0 A_JumpIfInventory("PP7Accuracy", 1, "FireAccuracy1")
goto FireAccuracy0
FireAccuracy0:
PP7G B 1 BRIGHT A_FireBullets (0, 0, -1, 6, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy1:
PP7G B 1 BRIGHT A_FireBullets (1, 0.5, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy2:
PP7G B 1 BRIGHT A_FireBullets (1, 1, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy3:
PP7G B 1 BRIGHT A_FireBullets (1.5, 1, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy4:
PP7G B 1 BRIGHT A_FireBullets (1.8, 1.5, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy5:
PP7G B 1 BRIGHT A_FireBullets (2, 1.5, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy6:
PP7G B 1 BRIGHT A_FireBullets (2, 2, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy7:
PP7G B 1 BRIGHT A_FireBullets (2.5, 2, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireAccuracy8:
PP7G B 1 BRIGHT A_FireBullets (3, 3, -1, 5, "BulletPuff")
PP7G B 0 A_GiveInventory("PP7Accuracy", 1)
goto FireDone
FireDone:
PP7G B 0 BRIGHT A_FireCustomMissile ("BulletCasing", Random(-40, -50), 0, 1, 7, 0)
PP7G CD 1
PP7G E 1 A_WeaponReady(WRF_NOBOB)
PP7G F 2 A_WeaponReady(WRF_NOBOB)
PP7G G 1 A_WeaponReady(WRF_NOBOB)
PP7G G 0 A_TakeInventory("PP7Accuracy", 1)
PP7G G 1 A_WeaponReady(WRF_NOBOB)
PP7G G 0 A_TakeInventory("PP7Accuracy", 1)
PP7G A 3 A_WeaponReady
PP7G A 0 A_ReFire
Goto Ready+1
AltFire:
TNT1 A 0
goto ReloadCheck
Flash:
TNT1 A 2 Bright A_Light1
TNT1 A 0 Bright A_Light0
stop
Spawn:
PIST A -1
Stop
}
}
Bulletpuff Code:
Code: Select all
actor BulletSpark Replaces BulletPuff
{
spawnid 131
renderstyle Add
alpha 0.9
+NOBLOCKMAP
+NOGRAVITY
-ALLOWPARTICLES
+DONTSPLASH
+FORCEXYBILLBOARD
Scale 0.17
states
{
Spawn:
SPRK A 0
SPRK A 0 A_SpawnItemEx("BulletSmoke", 0, 0, 0, 0, 0, 0, 0, 128, 0)
SPRK A 0 A_SpawnItemEx("BulletHeat", 0, 0, 0, 0, 0, 0, 0, 128, 64)
SPRK A 0 A_SpawnItemEx("Ricochet", 0, 0, 0, 0, 0, 0, 0, 128, 168)
SPRK AAA 0 A_SpawnItemEx("Debris1", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
SPRK AAA 0 A_SpawnItemEx("Debris2", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
SPRK AAA 0 A_SpawnItemEx("Debris3", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
SPRK AAA 0 A_SpawnItemEx("Debris4", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
SPRK A 0 A_SpawnItemEx("Debris5", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
SPRK A 0 A_Jump(127, "Spawn2", "Spawn3", "Spawn4")
SPRK ABCDE 1 bright
stop
Spawn2:
SPR2 ABCDE 1 bright
stop
Spawn3:
SPR3 ABCDE 1 bright
stop
Spawn4:
SPR4 ABCDE 1 bright
stop
Melee:
PUFF CD 4
stop
}
}