// TGF Pity Shield Monitor - "Ported" by MIDIMan
// Use with LUA_TBOX

local function TGF_GiveShield(actor, var1, var2)
	if not (actor and actor.valid) then return end
	P_TGFMonitorGiveAbility(actor, A_GiveShield, var1, var2)
end

freeslot(
	"SPR_TBXB",
	"MT_TGFBOX_SHIELD",
	"S_TGFBOX_SHIELD_IDLE",
	"S_TGFBOX_SHIELD_BREAK"
)

addHook("MobjFuse", function(mobj)
	if not (mobj and mobj.valid) then return end
	
	P_TGFMonitorFuseThink(mobj)
	return true
end, MT_TGFBOX_SHIELD)

// If the monitor has been destroyed by a player's projectile, still play the death sound
addHook("TouchSpecial", P_TGFMonitorTouchSpecial, MT_TGFBOX_SHIELD)
addHook("MobjDeath", P_TGFMonitorDeath, MT_TGFBOX_SHIELD)

mobjinfo[MT_TGFBOX_SHIELD] = {
	//$Name TGF Pity Shield
	//$Sprite TBXBA0
	//$Category Monitors
	//$Flags4Text Big Explosion
	doomednum = 513,
	spawnstate = S_TGFBOX_SHIELD_IDLE,
	spawnhealth = 1,
	painstate = S_TGFBOX_SHIELD_IDLE,
	deathstate = S_TGFBOX_SHIELD_BREAK,
	deathsound = sfx_pop,
	radius = 28*FRACUNIT,
	height = 52*FRACUNIT,
	flags = MF_SPECIAL|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE
}

states[S_TGFBOX_SHIELD_IDLE] =	{SPR_TBXB,	A|FF_ANIMATE,	-1,	nil,			5,			1,	S_TGFBOX_SHIELD_IDLE}
states[S_TGFBOX_SHIELD_BREAK] =	{SPR_TBXX,	A,				0,	TGF_GiveShield,	SH_PITY,	0,	S_TGFBOX_CHOOSEEXPLOSION}
