actor BlueVentFire 
{
	Speed 50
	Radius 6
	Height 10
	PROJECTILE
	+thruspecies
	+painless
	+bright
	species "player"
	damage (9)
	Scale 0.50
	Renderstyle Add
	Alpha 0.96
	decal CAFlameDecal
	projectilekickback 250
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally

		TNT1 A 1
		TNT1 A 0 a_scalevelocity (0.50)
		TNT1 A 0 a_jump (190,"PainfulFlame")
		VBX1 ABC 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_gravity
		goto FallOff
	PainfulFlame:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("PAINLESS",0)
		VBX1 ABC 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_gravity
		goto FallOff
	FallOff:
		VBX1 ABC 1 A_SpawnItemEx("BlueVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1),0,SXF_NOCHECKPOSITION,120)
		TNT1 A 0 A_SpawnItemEx("BlueVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("NOINTERACTION",1)
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_scalevelocity (0.90)
		TNT1 A 0 a_fadeout (0.10)
		TNT1 AA 0 A_SpawnItemEx("BlueVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		VBX1 BC 1 A_SpawnItemEx("BlueVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 0 a_scalevelocity (0.10)
	FadingOut:	
		VBX1 C 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_fadeout (0.20)
		Loop
	Crash:
	Xdeath:
		TNT1 A 0 A_SpawnItemEx("BlueVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_fadeout (0.30)
		TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx("BlueVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-3,3),frandom(-3,3),frandom(-4,-4))
		TNT1 A 0 a_playsound ("BlastMaster/BlueFireHit",0)
		VBX1 DEFGHIJ 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		VBX1 J 1 a_fadeout (0.20)
		wait
	}
}


ACTOR BlueVentEmber1
{
	Projectile
	+NOBLOCKMAP
	speed 10
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	Renderstyle Add
	Alpha 0.90
	Scale 0.40
	Mass 5
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A random (1,2)
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally
		VBX1 A 1 Bright A_FadeOut(0.1)
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally
		VBX1 B 1 Bright A_FadeOut(0.1)
		VBX1 C 1 Bright A_FadeOut(0.1)
	fade:
		VBX1 C 2 Bright A_FadeOut(0.1)
		loop
	}
}

ACTOR BlueVentEmber2 : BlueVentEmber1
{
	Scale 0.25
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A random (1,2)
		VBX1 A 1 Bright A_FadeOut(0.1)
		loop
	}
}


//============================================================================
//============================================================================
//============================================================================
//YELLOW MACHINE GUN
//============================================================================
//============================================================================
//============================================================================

actor YellowVentBullet : FastProjectile
{
	Speed 150
	Radius 7
	Height 10
	PROJECTILE
	+thruspecies
	species "player"
	damage (12)
	Scale 0.60
	MissileType "YellowVentTrail"
	Renderstyle Add
	Alpha 0.99
	MissileHeight 8
	decal CADecal
	ProjectileKickback 300
	States
	{
	Spawn:
		VBX2 A 1 Bright
		Loop
	Death:
		TNT1 A 1
		TNT1 A 0 a_playsound ("blastmaster/ricochet",CHAN_VOICE,0.5,0,1.5)
		TNT1 AAA 0 a_spawnitemex ("CABulletSpark",4,0,0,Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,0,SXF_NOCHECKPOSITION)			BPK1 A 1 
		BPK1 A 1 A_SetScale (scalex * frandom(1.20,1.40),scaley * frandom(1.20,1.40))
		BPK1 A 1 A_SetScale (scalex * frandom(0.70,0.80),scaley * frandom(0.70,0.80))
		BPK1 A 1 A_SetScale (scalex * frandom(0.20,0.40),scaley * frandom(0.20,0.40))
		Stop
	xdeath:
		TNT1 A 1
		TNT1 A 0 a_playsound ("blastmaster/puffhit",CHAN_VOICE,0.70,0,1.2)
		TNT1 A 0 a_setscale (0.90,0.90)
		MNSP ABCD 1
		Stop
	}
}



ACTOR YellowVentTrail
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	Radius 1
	Height 1
	Renderstyle Add
	Alpha 0.40
	Scale 0.40
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		VBX2 A 1
		VBX2 A 1 A_SetScale(0.30)
		VBX2 A 1 A_SetScale(0.20)
		VBX2 A 1 A_SetScale(0.10)
		Stop
	}
}


ACTOR YellowCAPuff : CAPuff
{
	scale 0.60
	Renderstyle Add
	Alpha 0.99
	ProjectileKickback 300

}


//============================================================================
//============================================================================
//============================================================================
//RED GRENADE
//============================================================================
//============================================================================
//============================================================================




actor RedGrenade
{
	+notimefreeze
	projectile
	+floorclip
	+bloodlessimpact
	+thruspecies
	+forcepain
	+bright
	species "player"
	DeathSound "BlastMaster/VentExplosion"
	damage (200)
	Radius 8
	height 8
	Renderstyle Add
	Alpha 0.99
	scale 1
	speed 50
	decal scorch
	ProjectileKickback 500

	var int user_GrenadeFlight;
	states
	{
	spawn:
		VBX3 A 1
		TNT1 A 0 a_jumpif (user_GrenadeFlight >= 9, "Falling")
		TNT1 A 0 A_SpawnItemEx("VentTrail1")
		TNT1 A 0 a_setuservar("user_GrenadeFlight", user_GrenadeFlight+1)
		loop
	Falling:
		VBX3 A 1 a_changeflag ("NOGRAVITY",0)
	FallingLoop:
		VBX3 A 1
		TNT1 A 0 A_SpawnItemEx("VentTrail1")
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_explode (100,120,0,0,20)
		VBX3 B 3 a_setscale (0.70,0.70)
		VBX3 C 2 a_setscale (0.90,0.90)
		VBX3 D 1 a_setscale (1.20,1.20)
		VBX3 D 1 a_setscale (1.00,1.00)
		VBX3 E 2 a_setscale (1.20,1.20)
		VBX3 F 2 a_setscale (1.30,1.30)
		VBX3 F 2 a_setscale (1.40,1.40)
		VBX3 F 2 a_setscale (1.50,1.50)
		Stop
	}
}

Actor SuperRedGrenade : RedGrenade
{
	damage (250)
	states
	{
	Spawn:
		VBX3 A 1
		TNT1 A 0 a_spawnitemex ("BlastMasterFlamer",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,0,160)
		TNT1 A 0 A_SpawnItemEx("VentTrail1")
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_explode (150,120,0,0,70)
		VBX3 B 3 a_setscale (0.70,0.70)
		VBX3 C 2 a_setscale (0.90,0.90)
		VBX3 D 1 a_setscale (1.20,1.20)
		VBX3 D 1 a_setscale (1.00,1.00)
		VBX3 E 2 a_setscale (1.20,1.20)
		VBX3 F 2 a_setscale (1.30,1.30)
		VBX3 F 2 a_setscale (1.40,1.40)
		VBX3 F 2 a_setscale (1.50,1.50)
		Stop
	}
}


ACTOR Venttrail1
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	Radius 1
	Height 1
	Renderstyle Add
	Alpha 0.60
	Scale 0.60
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		VBX3 AAA 1
		VBX3 A 1 A_SetScale(0.40)
		VBX3 A 1 A_SetScale(0.20)
		VBX3 A 1 A_SetScale(0.10)
		Stop
	}
}


//============================================================================
//============================================================================
//============================================================================
//OVERHEAT FLAMES
//============================================================================
//============================================================================
//============================================================================



actor RedVentFire 
{
	Speed 70
	Radius 6
	Height 10
	PROJECTILE
	+thruspecies
	+painless
	+bright
	species "player"
	damage (13)
	Scale 0.70
	Renderstyle Add
	Alpha 0.96
	decal CAFlameDecal
	projectilekickback 500
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally

		TNT1 A 1
		TNT1 A 0 a_scalevelocity (0.50)
		TNT1 A 0 a_jump (190,"PainfulFlame")
		VBX4 ABC 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_gravity
		goto FallOff
	PainfulFlame:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("PAINLESS",0)
		VBX4 ABC 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_gravity
		goto FallOff
	FallOff:
		VBX4 ABC 1 A_SpawnItemEx("RedVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1),0,SXF_NOCHECKPOSITION,120)
		TNT1 A 0 A_SpawnItemEx("RedVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		loop
		
	Death:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("NOINTERACTION",1)
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_scalevelocity (0.90)
		TNT1 A 0 a_fadeout (0.10)
		TNT1 AA 0 A_SpawnItemEx("RedVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		VBX4 BC 1 A_SpawnItemEx("RedVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 0 a_scalevelocity (0.10)
	FadingOut:	
		VBX4 C 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		TNT1 A 0 a_fadeout (0.20)
		Loop
	Crash:
	Xdeath:
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_fadeout (0.30)
		TNT1 A 0 A_SpawnItemEx("RedVentEmber2",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx("RedVentEmber1",frandom(-2,2),frandom(-2,2),frandom(-8,-4),frandom(-3,3),frandom(-3,3),frandom(-4,-4))
		TNT1 A 0 a_playsound ("BlastMaster/BlueFireHit",0)
		VBX4 DEFGHIJ 1 A_SetScale (scalex * frandom(1.10,1.20),scaley * frandom(1.10,1.20))
		VBX4 J 1 a_fadeout (0.20)
		wait
	}
}


ACTOR RedVentEmber1
{
	Projectile
	+NOBLOCKMAP
	speed 10
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	Renderstyle Add
	Alpha 0.90
	Scale 0.60
	Mass 5
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A random (1,2)
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally
		VBX4 A 1 Bright A_FadeOut(0.1)
		TNT1 A 0 a_jump (105,2)
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally
		VBX4 B 1 Bright A_FadeOut(0.1)
		VBX4 C 1 Bright A_FadeOut(0.1)
	fade:
		VBX4 C 2 Bright A_FadeOut(0.1)
		loop
	}
}

ACTOR RedVentEmber2 : RedVentEmber1
{
	Scale 0.25
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A random (1,2)
		VBX4 A 1 Bright A_FadeOut(0.1)
		loop
	}
}


ACTOR RedVentEmber3 : RedVentEmber1
{
	scale 0.20
}

ACTOR RedVentEmber4 : RedVentEmber1
{
	scale 0.15
}


Actor YellowVentEmber1 : RedVentEmber3
{
	Alpha 0.98
	translation "0:255=%[0.10,0.14,0]:[1,0.90,0.015]" 
	scale 0.60
}	


Actor YellowVentEmber2 : RedVentEmber4
{
	Alpha 0.98
	translation "0:255=%[0.10,0.14,0]:[1,0.90,0.015]"
	scale 0.25
}


//============================================================================
//============================================================================
//============================================================================
//THE OLD BARREL BOMB
//============================================================================
//============================================================================
//============================================================================



actor OldBarrelBomb
{
	Health 99999
	Radius 10
	Height 8
	speed 10
	-solid
	+NOICEDEATH
	+thruspecies
	+bright
	Species "Player"
	mass 1200
	
	var int user_bombtimer;
	states
	{
	spawn:
		BRBM A 1
		BRBM A 1 ThrustThingZ (0,5,0,0)
		BRBM A 6 
		BRBM A 1
		goto timer
	timer:
		TNT1 A 0
		TNT1 A 0 a_jumpif (user_bombtimer >= 8, "closefuse")
		BRBM A 2
		TNT1 A 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),55,0,0,frandom(1,2))
		BRBM B 2 
		TNT1 A 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),55,0,0,frandom(1,2))
		BRBM C 2
		TNT1 A 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),55,0,0,frandom(1,2))
		BRBM D 2 
		TNT1 A 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),55,0,0,frandom(1,2))
		TNT1 A 0 a_setuservar("user_bombtimer", user_bombtimer+1)
		loop
	closefuse:
		TNT1 A 0
		TNT1 A 0 a_jumpif (user_bombtimer >= 16, "timeexplode")
		BRBM E 2 
		TNT1 AA 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),45,0,0,frandom(1,2))
		BRBM F 2
		TNT1 AA 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),45,0,0,frandom(1,2))
		BRBM G 2 
		TNT1 AA 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),45,0,0,frandom(1,2))
		BRBM H 2 
		TNT1 AA 0 A_SpawnItemEx("revenanttracersmoke",frandom(-4,4),frandom(-4,4),45,0,0,frandom(1,2))
		TNT1 A 0 a_setuservar("user_bombtimer", user_bombtimer+1)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_fall
		TNT1 A 0 a_playsound ("weapons/rocklx",0)
		BMXP A 2 bright
		TNT1 A 0 radius_quake (2,8,0,20,0)
		TNT1 A 0 a_explode (40,40,1)
		TNT1 A 0 A_radiusthrust (8000,80,0)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 135, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 225, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 315, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		BMXP B 3
		BMXP C 2 a_fadeout (0.40)
		wait
	timeexplode:
		TNT1 A 0
		TNT1 A 0 a_fall
		TNT1 A 0 a_playsound ("weapons/rocklx",0)
		BMXP A 2 bright
		TNT1 A 0 radius_quake (2,8,0,20,0)
		TNT1 A 0 a_explode (40,40,1)
		TNT1 A 0 A_radiusthrust (8000,80,0)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 135, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 225, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 315, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("OldBarrelFire", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		BMXP B 2 bright
		BMXP C 2 bright a_fadeout (0.40)
		wait
	}
}


actor OldBarrelFire
{
	projectile
	+ripper
	+thruactors
	+THRUSPECIES
	species "Player"
	Damagetype "CyclopsShell"
	speed 35
	height 10
	radius 10
	damage (1)
	+forcepain
	states
	{
	spawn:
		BAL1 A 1 Bright
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		BAL1 A 1 bright a_spawnitemex ("OldFireTrail",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		stop
	death:
		TNT1 A 2
		stop
	}
}


actor OldFireTrail
{
	renderstyle add
	alpha 0.70
	+THRUSPECIES
	+forceradiusdmg
	species "Player"
	Damagetype "CyclopsShell"
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_explode (5,30,1)
		TNT1 A 0 a_explode (15,30,0)
		MISL BCD 2
		stop
	death:
		TNT1 A 1
		stop
	}
}

