// ------------------------------------------------------------
//   Inventory flags
// ------------------------------------------------------------

actor HasChecked : InventoryFlag {}
actor DontKill : InventoryFlag {}


// ------------------------------------------------------------
//   Killer Barrel
// ------------------------------------------------------------

ACTOR KillerBarrel : ExplosiveBarrel replaces ExplosiveBarrel
{
	damagefactor "Thermal", 1.2
	damagefactor "Balefire", 0.1
	Health 60
	Radius 20
	Height 40
	Speed 1
	Mass 150
	MissileType "BaleBall"
	PainChance 20
	ReactionTime 31
	MeleeRange 56
	MONSTER
	-ismonster
	-countkill
	+ghost
	+FLOORCLIP
	+AMBUSH
	+NOBLOOD
	+FIXMAPTHINGPOS
	PainSound "barrel/pain"
	DeathSound "world/barrelx"
	Obituary "%o was mutated by an evil barrel."
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("HasChecked",1,"Spawn_Check")
		BAR1 A 1 ACS_ExecuteAlways(558,0,0,2)
	Spawn_Check:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		goto Spawn_Monster
	Spawn_Innocent:
		TNT1 A 0 A_ChangeFlag("ismonster",0)
		TNT1 A 0 A_ChangeFlag("countkill",0)
		TNT1 A 0 A_ChangeFlag("nopain",1)
		BAR1 AB 10
		loop
	Spawn_Monster:
		TNT1 A 0 A_ChangeFlag("ismonster",1)
		TNT1 A 0 A_ChangeFlag("countkill",1)
		TNT1 A 0 A_ChangeFlag("nopain",0)
		BAR1 AB 10 A_Look
		loop
	See:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		BAR1 A 3 A_Jump (60, 12)
		BAR1 BABAB 3 A_Chase
		BAR1 A 3 A_Jump (60, 3)
		BAR1 BABAB 3 A_Chase
		BAR1 B 2 A_PlaySound ("barrel/walk")
		goto See
	FastSee:
		BAR1 AB 6 A_FastChase
		goto See
	Missile:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		BAR1 A 0 A_PlaySound ("misc/bloodchunks")
		BEXP B 8 BRIGHT A_FaceTarget
		BAR1 A 4 BRIGHT A_MissileAttack
		Goto See
	Melee:
		TNT1 A 0 A_JumpIfInventory("DontKill",1,"Spawn_Innocent")
		TNT1 A 0 A_GiveInventory("DontKill",1)
		BEXP B 0 A_Die
	Pain:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		BAR1 A 5 A_Pain
		BAR1 B 5
		Goto See
	Death:
		BEXP C 2 BRIGHT A_Die
		TNT1 AAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("HugeWallChunk", 0, 0, 0, random(6,32),random(-12,12),random(8,20),random(0,360),160)
		TNT1 AAAAA 0 A_SpawnItemEx ("HDSmoke", random(-6,6),random(-6,6),random(12,32), 0,0,0, 0,160)
		TNT1 AAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("BigWallChunk", 0, 0, 0, random(6,26),random(-6,6),random(4,18),random(0,360),160)
	Death2:
		BEXP C 6 BRIGHT A_Scream
		BEXP D 8 BRIGHT A_Explode
		BEXP E 8 BRIGHT A_NoBlocking
		TNT1 A 0 A_JumpIfInventory("DontKill",1,3)
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,8)
		TNT1 A -1
		Stop
	Raise:
		TNT1 A 0 A_ChangeFlag("ismonster",1)
		TNT1 A 0 A_ChangeFlag("countkill",1)
		BEXP E 1 bright A_TakeInventory("DontKill",999)
		BEXP EDCAB 6 BRIGHT
		Goto See
	}
}
actor AlwaysKillerBarrel : KillerBarrel 23008
{
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("HasChecked",1)
		goto Spawn_Monster
	}
}


// ------------------------------------------------------------
//   Killer Fire Can
// ------------------------------------------------------------

ACTOR BarrelFlame
{
	damagetype "Thermal"
	PROJECTILE
	Renderstyle add
	Decal "RevenantScorch"
	Alpha 0.7
	Radius 6
	Height 9
	Scale 0.3
	Speed 6
	Damage 3
	SeeSound "misc/firecrkl"
	States
	{
	Spawn:
		FIRE ABABCDCD 3 BRIGHT
	Death:
		FIRE EFEFGH 4 BRIGHT
		Stop
	}
}

ACTOR BarrelFlame2
{
	damagetype "Thermal"
	+ismonster
	Renderstyle add
	SeeSound "misc/firecrkl"
	Alpha 0.8
	Radius 6
	Height 9
	Scale 0.8
	Speed 6
	states
	{
	spawn:
		FIRE A 0
		FIRE A 0 A_SetGravity (0.3)
		FIRE ABABABABAB 3 bright A_Chase
	death:
		FIRE E 0 A_FaceTarget
		FIRE AB 3 A_CustomMissile ("HeckFire", 56, 0, random(-20, 20))
		stop
	}
}

ACTOR KillerFireCan replaces BurningBarrel
{
	damagefactor "Thermal", 0.4
	Health 70
	Radius 20
	Height 40
	DeathHeight 0
	Speed 2
	Mass 150
	MissileType "BarrelFlame"
	MissileHeight 30
	MeleeRange 72
	PainChance 40
	MONSTER
	-ismonster
	-countkill
	+FLOORCLIP
	+AMBUSH
	+NOBLOOD
	+lookallaround
	PainSound "barrel/pain"
	DeathSound "world/barrelx"
	Obituary "%o was burned by a demonic garbage can that was on fire."
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("HasChecked",1,"Spawn_Check")
		FCAN A 1 ACS_ExecuteAlways(558,0,0,2)
	Spawn_Check:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		goto Spawn_Monster
	Spawn_Innocent:
		TNT1 A 0 A_ChangeFlag("ismonster",0)
		TNT1 A 0 A_ChangeFlag("countkill",0)
		TNT1 A 0 A_ChangeFlag("nopain",1)
		FCAN AB 10 bright
		loop
	Spawn_Monster:
		TNT1 A 0 A_ChangeFlag("ismonster",1)
		TNT1 A 0 A_ChangeFlag("countkill",1)
		TNT1 A 0 A_ChangeFlag("nopain",0)
		FCAN AB 10 bright A_Look
		loop
	See:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		FCAN A 3 BRIGHT A_Jump (140, 3)
		FCAN BABAB 3 BRIGHT
		FCAN A 3 BRIGHT
		FCAN B 2 BRIGHT A_PlaySound ("barrel/walk")
		FCAN AAAAAABBBBB 1 BRIGHT A_Chase
		Loop
	Missile:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		FCAN ABAB 4 BRIGHT A_FaceTarget
		FCAN A 0 BRIGHT A_JumpIfCloser(256, "Melee")
		FCAN ABABAB 2 BRIGHT
		FCAN B 6 BRIGHT A_SpawnItem ("BarrelFlame2", 1, 36, 1, 0)
		FCAN ABABABABAB 6 BRIGHT
		Goto See
	Melee:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		FCAN AB 4 BRIGHT A_MissileAttack
		FCAN B 0 A_CPosRefire
		Goto Missile+4
	Pain:
		TNT1 A 0 A_JumpIfInventory ("DontKill",1,"Spawn_Innocent")
		FCAN A 4 BRIGHT A_Pain
		FCAN B 4 BRIGHT
		Goto See
	Death:
		BEXP C 2 BRIGHT A_Die
		TNT1 AAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("HugeWallChunk", 0, 0, 0, random(6,32),random(-12,12),random(8,20),random(0,360),160)
		TNT1 AAAAA 0 A_SpawnItemEx ("HDSmoke", random(-6,6),random(-6,6),random(12,32), 0,0,0, 0,160)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("BigWallChunk", 0, 0, 0, random(6,26),random(-6,6),random(4,18),random(0,360),160)
	Death2:
		BEXP C 6 BRIGHT A_Scream
		BEXP D 8 BRIGHT A_Explode
		BEXP E 8 BRIGHT A_NoBlocking
		TNT1 A 0 A_JumpIfInventory("DontKill",1,3)
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,9)
		TNT1 A -1
		Stop
	Raise:
		TNT1 A 0 A_ChangeFlag("countkill",1)
		TNT1 A 0 A_ChangeFlag("ismonster",1)
		BEXP E 1 bright A_TakeInventory("DontKill",999)
		BEXP EDC 6 BRIGHT
		FCAN AB 6 BRIGHT
		Goto See
	}
}
actor AlwaysKillerFireCan : KillerFireCan 23009
{
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("HasChecked",1)
		goto Spawn_Monster
	}
}
