// Modify the powers. Add them cool effects.

addHook("PlayerThink", function(player)
	if player.mo and player.mo.valid
		if player.mo.skin == "dark"
		or player.mo.skin == "xkz"
			if player.powers[pw_invulnerability]
				local d94xkzinvulsparkling = P_SpawnMobjFromMobj(player.mo, P_RandomRange(-player.mo.radius/FRACUNIT, player.mo.radius/FRACUNIT)*FRACUNIT, P_RandomRange(-player.mo.radius/FRACUNIT, player.mo.radius/FRACUNIT)*FRACUNIT, P_RandomRange(-player.mo.height/FRACUNIT, player.mo.height/FRACUNIT)*FRACUNIT*P_MobjFlip(player.mo), MT_BOXSPARKLE)
				d94xkzinvulsparkling.target = player.mo
				d94xkzinvulsparkling.tics = 5
				d94xkzinvulsparkling.frame = $|FF_FULLBRIGHT
				d94xkzinvulsparkling.scale = player.mo.scale*3
				d94xkzinvulsparkling.destscale = player.mo.scale
				d94xkzinvulsparkling.momx = P_RandomRange(-6, 6)*FRACUNIT
				d94xkzinvulsparkling.momy = P_RandomRange(-6, 6)*FRACUNIT
				d94xkzinvulsparkling.momz = P_RandomRange(-6, 6)*FRACUNIT
				d94xkzinvulsparkling.blendmode = AST_ADD
			end
			if player.powers[pw_sneakers]
			and (leveltime % 30) == 0
				local d94xkzsneakersghost = P_SpawnGhostMobj(player.mo)
				d94xkzsneakersghost.colorized = true
				d94xkzsneakersghost.scale = player.mo.scale*2
				d94xkzsneakersghost.destscale = player.mo.scale
				d94xkzsneakersghost.momx = player.mo.momx/2
				d94xkzsneakersghost.momy = player.mo.momy/2
				d94xkzsneakersghost.momz = player.mo.momz/2
				d94xkzsneakersghost.destscale = -1
			end
		end
	end
end)

addHook("MobjSpawn", function(mobj)
	if mobj and mobj.valid
	and mobj.target and mobj.target.valid
		if mobj.target.skin == "dark"
		or mobj.target.skin == "xkz"
			mobj.state = S_SMALLFIREBAR1
		end
		mobj.d94xkzfireballspawnangle = mobj.angle
	end
end, MT_FIREBALL)

addHook("MobjThinker", function(mobj)
	if mobj and mobj.valid
	and mobj.target and mobj.target.valid
		if mobj.target.skin == "dark"
		or mobj.target.skin == "xkz"
			if mobj.d94xkzfireballspawnangle
				if mobj.d94xkzfireballspawnangle == mobj.angle
					P_InstaThrust(mobj, mobj.d94xkzfireballspawnangle, 15*mobj.scale)
					if P_MobjFlip(mobj) == 1
						if mobj.momz > -15*mobj.scale
							mobj.momz = $-mobj.scale/2
						else
							mobj.momz = -15*mobj.scale
						end
					else
						if mobj.momz < 15*mobj.scale
							mobj.momz = $+mobj.scale/2
						else
							mobj.momz = 15*mobj.scale
						end
					end
				elseif not mobj.d94xkzfireballdead
					mobj.color = SKINCOLOR_KETCHUP
					mobj.colorized = true
					mobj.state = S_CACOFIRE_EXPLODE1
					mobj.d94xkzfireballdead = true
				end
			else
				P_RemoveMobj(mobj)
			end
		end
	end
end, MT_FIREBALL)