//WEAPON BY MEGAVILE & SERPERIOR
//GRAPHICAL HELP BY SERPERIOR
actor BlazingTorchWepC : BaseMM8BDMWep
{
dropitem "BlazingTorchWepCDropped"
Weapon.AmmoUse 6
Weapon.AmmoGive 28
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_BLAZINGTORCH"
Obituary "$OB_BLAZINGTORCH"
Tag "$TAG_BLAZINGTORCH"
weapon.ammotype "BlazingTorchAmmo"
inventory.icon "BTORICON"
States
{
SpawnLoop:
11WP F 1
loop
Ready:
BZTR A 0 ACS_ExecuteAlways(998,0,DYE_BLAZINGTORCH)
BZTR A 1 A_WeaponReady
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BZTR A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BZTR A 1 A_Raise
Loop
Fire:
BZTR A 0 A_JumpIfNoAmmo("NoAmmo")
BZTR A 0 A_PlaySoundEx("weapon/firestorm","Weapon")
BZTR A 0 A_FireCustomMissile("Fireballone",0,1,8,0)
BZTR B 5
BZTR C 7
BZTR CB 2
BZTR BBA 7
BZTR A 10 A_WeaponReady
Goto Ready+1
NoAmmo:
BZTR A 1 ACS_Execute(979,0)
Goto Ready+1
ReadyC:
Goto Ready+1
}
}

actor BlazingTorchAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 30
+INVENTORY.IGNORESKILL
}

actor BlazingTorchSpawner
{
PROJECTILE
+NOINTERACTION
+NOCLIP
Damage(0)
Height 1
Radius 1
Speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("Fireballone",20)
stop
}
}

actor Fireballone
{
PROJECTILE
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
scale 2.5
+RIPPER
-NOGRAVITY
+HEXENBOUNCE
+NOEXPLODEFLOOR
bouncefactor 1.0
wallbouncefactor 1.0
Speed 32
Radius 15
Height 5
gravity 1.7
Damage (3)
States
{
Spawn:
11TR A 0
TNT1 A 0 ThrustThingZ(0, 70, 0,0)
11TR AAAAA 1 A_SpawnItemEx("BlazingTorchFX2", -8, Random(-22, 22), random(-20, 20),0,0,5)
Goto Collapse
Collapse:
TNT1 A 0 A_Stop
TNT1 A 1 A_SpawnItemEx("Fireballtwo")
TNT1 A 0 A_PlaySoundEx("weapon/solarblaze","Weapon")
stop
XDeath:
TNT1 A 1
stop
Death:
TNT1 A 1
stop
}
}

actor Fireballtwo
{
PROJECTILE
+NOGRAVITY
+HEXENBOUNCE
+RIPPER
+NOEXPLODEFLOOR
bouncefactor 1.0
wallbouncefactor 1.0
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
scale 2.5
Speed 0
Radius 15
Height 5
gravity 1.7
Damage (3)
States
{
Spawn:
11TR BCDE 1 A_SpawnItemEx("BlazingTorchFX2", -8, Random(-22, 22), random(-20, 20),0,0,5)
TNT1 A 0 A_PlaySoundEx("weapon/firestorm","Weapon")
11TR E 0
11TR BAFGHIJKM 1 A_SpawnItemEx("BlazingTorchFX2", -8, Random(-22, 22), random(-20, 20),0,0,5)
TNT1 A 0 A_PlaySoundEx("weapon/atomicfire","Weapon")
TNT1 A 0 A_SpawnItemEx("FireballThree",0,0,0,30,0,-36)
11TR N 1
stop
}
}

actor FireballThree
{
PROJECTILE
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
scale 2.0
+RIPPER
+HEXENBOUNCE
-BOUNCEONFLOORS
bouncefactor 1.0
wallbouncefactor 1.0
Speed 4
Radius 12
Height 12
gravity 1.7
Damage (6)
reactiontime 80
States
{
Spawn:
TNT1 A 0 A_Explode(5, 32, 0)
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX1")
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX2",random(-10,10),random(-10,10),random(-10,10),0,0,10)
11TR AB 1
TNT1 A 0 A_Explode(5, 32, 0)
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX1")
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX2",random(-10,10),random(-10,10),random(-10,10),0,0,10)
11TR CD 1
TNT1 A 0 A_Explode(5, 32, 0)
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX1")
TNT1 A 0 A_SpawnItemEx("BlazingTorchFX2",random(-10,10),random(-10,10),random(-10,10),0,0,10)
11TR CB 1
loop
XDeath:
Death:
TNT1 A 0 A_SpawnItemEx("TorchWaveWepSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 0 A_PlaySoundEx("weapon/drillexplode", "Weapon")
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor TorchWaveWepSpawner
{
PROJECTILE
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
Scale 2.0
+FLOORHUGGER
Speed 0
Damage (0)
+ripper
+THRUGHOST
Radius 32
Height 32
States
{
Spawn:
TNT1 A 0 
TNT1 A 1 
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,15,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,30,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,45,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,60,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,75,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,90,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,105,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,120,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,135,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,150,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,165,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,180,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,195,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,210,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,225,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,240,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,255,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,270,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,285,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,300,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,315,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,330,SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("TorchwaveWep",0,0,0,10,0,0,345,SXF_NOCHECKPOSITION)
stop
}
}

actor TorchwaveWep
{
PROJECTILE
+FLOORHUGGER
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
Scale 2.0
Speed 0
+RIPPER
+THRUGHOST
Damage (0)
Radius 32
Height 32
States
{
Spawn:
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
TNT1 A 0 A_SpawnItemEx("TorchFlareWep",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
TNT1 A 3
stop
XDeath:
TNT1 A 1
stop
Death:
TNT1 A 1
stop
}
}

actor TorchFlareWep
{
PROJECTILE
damagetype "BlazingTorch"
Obituary "$OB_BLAZINGTORCH"
Scale 2.5
Speed 0
Damage (3)
+THRUGHOST
+RIPPER
Radius 9
Height 48
//RenderStyle "Translucent"
alpha 0.55
States
{
Spawn:
11TO AA 0
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
11TO ABCDEFGHIJK 1
stop
XDeath:
TNT1 A 1
stop
Death:
TNT1 A 1
stop
}
}

actor BlazingTorchFX1
{
scale 2.5
+CLIENTSIDEONLY
+MISSILE
+DONTSPLASH
Gravity 0
Damage (0)
height 0
radius 0
States
{
Spawn:
11TR O 1 A_Fadeout(0.20)
wait
}
}

actor BlazingTorchFX2
{
scale 2.5
+CLIENTSIDEONLY
+MISSILE
+DONTSPLASH
Gravity 0
Damage (0)
height 0
radius 0
States
{
Spawn:
11TR PQRPQRPQRPQRPQR 2 A_Fadeout
stop
}
}

actor BlazingTorchProtect : PowerProtection
{
Powerup.Duration 3
DamageFactor "BlazingTorch", 0.0
}