Actor MCM_Bool : Inventory {
	inventory.maxamount 1
}

Actor MCM_Monster {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("MCM Give Monster TID")
			TNT1 A 35 A_Jump(256, "Idle")
		Wait
	}
}

Actor MCM_BehaviorToggle : MCM_Bool { }
Actor MCM_IgnoreToggle : MCM_Bool { }
Actor MCM_HealthSet : MCM_Bool { }

Actor MCM_Activator : CustomInventory {
	inventory.maxamount 1
	+AUTOACTIVATE
	+ALWAYSPICKUP
}

Actor MCM_MakeNoPain : MCM_Activator {
	States {
		Pickup:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
		Stop
	}
}

Actor MCM_MaxHealth : Inventory {
	inventory.maxamount 0x7FFFFFFF
}

Actor BaseExplosionDamage
{
	Speed 0
	Height 4
	Radius 4
	Damage (0)
	+MISSILE
	+DONTBLAST
	+NOBLOCKMAP
	+NOGRAVITY
	+THRUACTORS
	+DONTSPLASH
	-TELESTOMP
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1
		Stop
	}
}

Actor SmokeFX {
	+MISSILE
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	+NOBLOCKMAP
	Damage 0
	Radius 2 
	Height 2
	BounceCount 3
	Speed 4
	renderstyle translucent
	scale 0.8
	alpha 0.5
	+clientsideonly
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 1
			SMOK ABCDEFGHIJKLNOPQ 2 A_FadeOut(0.02)
		Stop
	}
}

actor RedMagicSparkFX {
    Scale 0.35
	Alpha 0.925
	RenderStyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
    States {
		Spawn:
			OGLP C 1 Bright
		SpawnLoop:
			TNT1 A 0 A_FadeTo(0, 0.035, 1)
			OGLP C 1 Bright A_SetScale(scalex - 0.015, scaley - 0.015)
		Loop
    }
}

ACTOR Barbtrail
{   
   Radius 0
   Height 1
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.75
   +FORCEXYBILLBOARD
   +CLIENTSIDEONLY
   States
   {
   Spawn:
      TNT1 A 1 Bright
      SSFX ABCDEFG 2 Bright
      Stop 
   }
}

ACTOR RedPuff
{   
   Radius 0
   Height 1
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.85
   +CLIENTSIDEONLY
   States
   {
   Spawn:
      TNT1 A 3
      RPUF ABCDE 3 Bright
      Stop 
   }
}

Actor SoulUseEffect
{
	+NoInteraction
	+CLIENTSIDEONLY
	Radius 1
	Height 1
	RenderStyle Add
	Alpha 0.01
	Scale 0.6
	States
	{
	Spawn:
		TNT1 A 1
		SPFX AAAAA 1 Bright A_FadeIn(0.2)
		SPFX AAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
		Stop
	}
}

Actor SoulEffectSpawner {
	Height 1
	Radius 1
	+NoInteraction
	+CLIENTSIDEONLY
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		TNT1 A 0 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0)
		TNT1 A 1 A_SpawnItemEx("SoulUseEffect", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		Stop
	}        
}

Actor DarkHealEffectSpawner : SoulEffectSpawner {
	Translation "80:111=32:47", "5:5=47:47"
}

Actor DissipationEffect {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	States {
		Spawn:
			MNSX ABCDEFGH 4
			MNSX IJKLMNOPQ 3 A_FadeOut(0.075)
		Stop
	}
}