//Taz Mania Flickies

//Replacement
addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.state = S_FLICK_1
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_16)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_01)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_12
	mo.state = mo.info.spawnstate
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_02)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_03)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_04)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_15
	mo.state = mo.info.spawnstate
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_05)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_06)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_07)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_08)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_15
	mo.state = mo.info.spawnstate
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_09)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_10)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_15
	mo.state = mo.info.spawnstate
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_11)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_12)

addHook("MobjSpawn", function(mo)
	mo.type = MT_FLICKY_16
	mo.state = S_FLICK_1
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	local coolor = P_RandomRange(1, 8)
	if coolor == 2
	or coolor == 3 
	or coolor == 4 then
		mo.color = SKINCOLOR_SALMON
	elseif coolor == 1 then
		mo.color = SKINCOLOR_YELLOW
	elseif coolor == 5 then
		mo.color = SKINCOLOR_GREEN
	else
		mo.color = SKINCOLOR_WAVE
	end
end, MT_FLICKY_13)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*12
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	if P_RandomChance(FRACUNIT/4) == true
		mo.type = MT_FLICKY_16
		mo.state = S_FLICK_1
		local coolor = P_RandomRange(1, 8)
		if coolor == 2
		or coolor == 3 
		or coolor == 4 then
			mo.color = SKINCOLOR_SALMON
		elseif coolor == 1 then
			mo.color = SKINCOLOR_YELLOW
		elseif coolor == 5 then
			mo.color = SKINCOLOR_GREEN
		else
			mo.color = SKINCOLOR_WAVE
		end
	end
end, MT_FLICKY_14)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_FLICKY_15)

addHook("MobjSpawn", function(mo)
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
end, MT_SECRETFLICKY_01)

addHook("MobjSpawn", function(mo)
	mo.type = MT_SECRETFLICY_01
	mo.state = mo.info.spawnstate
	mo.flags = $|MF_SPECIAL
	mo.flags = $&~MF_NOCLIPTHING
	mo.radius = FRACUNIT*32
	mo.shadowscale = FRACUNIT/8
end, MT_SECRETFLICKY_02)


//Last Dinner :P
addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local quil0 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil0.color = s.color
		quil0.momz = P_RandomRange(3, 5)*FRACUNIT
		quil0.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil0.momy = P_RandomRange(-3, 3)*FRACUNIT
		local quil2 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil2.color = s.color
		quil2.momz = P_RandomRange(3, 5)*FRACUNIT
		quil2.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil2.momy = P_RandomRange(-3, 3)*FRACUNIT
		local quil3 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil3.color = s.color
		quil3.momz = P_RandomRange(3, 5)*FRACUNIT
		quil3.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil3.momy = P_RandomRange(-3, 3)*FRACUNIT
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_16)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local dust = P_SpawnMobj(t.x, t.y, t.z+30*FRACUNIT, MT_DUST)
		dust.colorized = true
		dust.color = SKINCOLOR_SKY
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_04)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local dust = P_SpawnMobj(t.x, t.y, t.z+30*FRACUNIT, MT_DUST)
		dust.colorized = true
		dust.color = SKINCOLOR_SKY
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_08)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local dust = P_SpawnMobj(t.x, t.y, t.z+30*FRACUNIT, MT_DUST)
		dust.colorized = true
		dust.color = SKINCOLOR_SKY
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_12)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local quil0 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil0.color = SKINCOLOR_BONE
		quil0.momz = P_RandomRange(3, 5)*FRACUNIT
		quil0.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil0.momy = P_RandomRange(-3, 3)*FRACUNIT
		local quil2 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil2.color = SKINCOLOR_BONE
		quil2.momz = P_RandomRange(3, 5)*FRACUNIT
		quil2.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil2.momy = P_RandomRange(-3, 3)*FRACUNIT
		local quil3 = P_SpawnMobj(t.x, t.y, t.z, MT_TMQUIL)
		quil3.color = SKINCOLOR_BONE
		quil3.momz = P_RandomRange(3, 5)*FRACUNIT
		quil3.momx = P_RandomRange(-3, 3)*FRACUNIT
		quil3.momy = P_RandomRange(-3, 3)*FRACUNIT
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_14)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local dust = P_SpawnMobj(t.x, t.y, t.z+30*FRACUNIT, MT_DUST)
		dust.colorized = true
		dust.color = SKINCOLOR_SKY
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_FLICKY_15)

addHook("TouchSpecial", function(s,t)
	if t.state == S_TAZBITE
	or t.state == S_TAZBITEG then
		local dust = P_SpawnMobj(t.x, t.y, t.z+30*FRACUNIT, MT_DUST)
		dust.colorized = true
		dust.color = SKINCOLOR_APPLE
		P_RemoveMobj(s)
		if not S_IdPlaying(sfx_taste)
			S_StartSound(t, sfx_taste)
		end
	end
return true
end, MT_SECRETFLICKY_01)


//Bosses
addHook("BossDeath",function(m)
	m.destscale = 0
	m.flags = $&~MF_NOGRAVITY
	return true
end,MT_EGGMOBILE3)

addHook("MobjSpawn",function(m)
	if gamemap == 09 then
		m.state = S_ALIENMISSILE
	end
end,MT_TORPEDO)
addHook("MobjSpawn",function(m)
	if gamemap == 09 then
		m.state = S_ALIENMISSILE
	end
end,MT_TORPEDO2)

addHook("MobjSpawn",function(m)
	m.spritexscale = FRACUNIT/10*9
	m.spritexscale = FRACUNIT/10*9
end,MT_EGGMOBILE3)
addHook("MobjSpawn",function(m)
	m.spritexscale = FRACUNIT/10*9
	m.spritexscale = FRACUNIT/10*9
end,MT_FAKEMOBILE)
addHook("MobjSpawn",function(m)
	m.spritexscale = FRACUNIT/2*3
	m.spritexscale = FRACUNIT/2*3
end,MT_FANG)

//
addHook("MobjSpawn", function(m)
m.fuse = TICRATE/30
end,MT_METALSONIC_RACE)
addHook("MobjFuse", function(mo)
	if mo.color != SKINCOLOR_FOREST then
	mo.color = SKINCOLOR_FOREST
	return true
	end
end,MT_METALSONIC_RACE)
addHook("MobjSpawn", function(mo)
mo.fuse = TICRATE/30
end, MT_METALSONIC_BATTLE)
addHook("MobjFuse", function(mo)
	if mo.color != SKINCOLOR_FOREST then
		mo.color = SKINCOLOR_FOREST
	return true
	end
end,MT_METALSONIC_BATTLE)

//Final Boss
addHook("MobjSpawn", function(m)
m.huggin = 0
end,MT_ROSY)
addHook("MobjThinker", function(s)
	if multiplayer then return end
	if not s.target then return end
	if s.target.skin != "taz" then return end
	if s.state == S_ROSY_HUG then
		if s.gameova then
			if s.target.player.lives != 0 then
				s.target.player.lives = 0
			end
			s.sprite = SPR_TWAF
			s.frame = A
			s.target.player.pflags = $|PF_FULLSTASIS
			s.target.player.playerstate = PST_DEAD
			s.target.sprite = SPR_TWAT
			s.target.frame = A
			s.target.tics = -1
		elseif s.huggin < 50 then
			local fuz = P_SpawnMobj(s.x, s.y, s.z+5*FRACUNIT, MT_SMOKE)
			fuz.momx = P_RandomRange(-1, 1)*FRACUNIT
			fuz.momy = P_RandomRange(-1, 1)*FRACUNIT
			fuz.momz = P_RandomRange(1, 2)*FRACUNIT
			fuz.scale = FRACUNIT*4
			s.huggin = $+1
			s.target.player.tossdelay = 0
		elseif s.target.player.rings != 0 
		or s.target.player.lives != 1 
		or s.huggin < 100 then
			S_StopMusic(s.target.player)
			s.sprite = SPR_TWAF
			s.frame = A
			s.target.player.pflags = $|PF_FULLSTASIS
			s.huggin = $+1
			s.target.player.thatwasall = true
			s.target.sprite = SPR_TWAT
			s.target.frame = A
			s.target.tics = -1
			if not s.target.player.tossdelay then
				local hrt = P_SpawnMobj(s.x, s.y, s.z+40*FRACUNIT, MT_TMHRT)
				hrt.momx = P_RandomRange(-1, 1)*FRACUNIT/4
				hrt.momy = P_RandomRange(-1, 1)*FRACUNIT/4
				hrt.momz = FRACUNIT
				s.target.player.tossdelay = TICRATE/2
			end
			if s.target.player.powers[pw_shield] then
				s.target.player.powers[pw_shield] = SH_NONE
				s.target.player.tossdelay = 0
			end
			if s.target.player.lives != 1 then
				s.target.player.lives = $-1
			end
			if s.target.player.rings >= 10 then
				s.target.player.rings = $-($/10)
			elseif s.target.player.rings != 0 then
				s.target.player.rings = $-1
			end
		else
			s.gameova = true
			s.target.player.pflags = $|PF_FULLSTASIS
			s.target.sprite = SPR_TWAT
			s.target.frame = A
			s.target.tics = -1
			S_StartSound(s, sfx_twaf)
		end
	elseif s.huggin != 0 then
		s.huggin = 0
	end
end,MT_ROSY)