// Rat Disease
ACTOR RatDisease {
	+MISSILE
	+DONTSPLASH
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	+NOTELEPORT
	+FORCEXYBILLBOARD
	+THRUACTORS
	+NOINTERACTION
	RenderStyle Normal
	Scale 0.2
	States
	{
	Spawn:
		SMKE ABCDEFGHIJKL 2 Bright A_FadeOut
		Stop
	}
}

ACTOR RatDiseaseSpawner {
	+CLIENTSIDEONLY
	+NOGRAVITY
	+NOBLOCKMAP
	+NOTELEPORT
	+DONTSPLASH
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("RatDisease",random(15,-15),random(15,-15),random(12,64),0,0,random(1,3),0,128,0)
		TNT1 A 1
		Stop
	}
}

// original name InfernalistResurrect
Actor RatDiseaseItem : CustomInventory {
	+NOTIMEFREEZE
	+INVENTORY.ALWAYSPICKUP
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.IGNORESKILL
	Inventory.Amount 1
	Inventory.MaxAmount 1
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	Pickup:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("SC_RAT_EFFECTS", 0, 0, 0)
		Stop
	}
}

Actor RatDiseaseCheck : Inventory { Inventory.MaxAmount 1 }

Actor RatDiseaseExplosion {
	Projectile
	+FORCERADIUSDMG
	+DONTHARMSPECIES
	+DONTHARMCLASS
	States
	{
	Spawn:
	Death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("darkthunder/fire",1)
		TNT1 A 0 A_CustomMissile("RatDiseaseThunderStrike",0,0,0,CMF_AIMDIRECTION)
		stop
	}
}

ACTOR RatDiseaseThunderStrike {
	obituary "$OB_RATLIGHTING"
	renderstyle Add
	scale 2.0
	height 60
	radius 3
	speed 0
	PROJECTILE
	+FLOORHUGGER
	+NOCLIP
	states
	{
	Spawn:
		BZ08 A 1 bright
	Death:
		BZ08 ABCB 2 bright
		BZ08 C 1 bright
		stop
	}
}

Actor BerserkExplosion : RatDiseaseExplosion {
	States
	{
	Spawn:
	Death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("darkthunder/fire",1)
		TNT1 A 0 A_CustomMissile("BerserkThunderStrike",0,0,0,CMF_AIMDIRECTION)
		stop
	}
}

ACTOR BerserkThunderStrike : RatDiseaseThunderStrike {
	obituary "$OB_BERSERKLIGHTING"
	states
	{
	Spawn:
		BZ08 A 1 bright
	Death:
		BZ08 ABCB 2 bright
		BZ08 C 1 bright
		stop
	}
}

ACTOR BerserkSmoke : RatDisease {
	+NOINTERACTION
	RenderStyle Add
	Scale 0.2
	States {
	Spawn:
		TNT1 A 0 Bright
		BRK1 ABCDEFGHIJKL 1 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR BerserkSmokeSpawner : RatDiseaseSpawner {
	-NOTIMEFREEZE
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("BerserkSmoke",0,0,0,0,0,random(1,3),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 1
		Stop	
	}
}

Actor IronCurtainExplosion : RatDiseaseExplosion {
	States
	{
	Spawn:
	Death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("darkthunder/fire",1)
		TNT1 A 0 A_CustomMissile("IronCurtainThunderStrike",0,0,0,CMF_AIMDIRECTION)
		stop
	}
}

ACTOR IronCurtainThunderStrike : RatDiseaseThunderStrike {
	obituary "$OB_IRONCURTAINLIGHTING"
	states
	{
	Spawn:
		IZ08 A 1 bright
	Death:
		IZ08 ABCB 2 bright
		IZ08 C 1 bright
		stop
	}
}

ACTOR IronCurtainSmoke : RatDisease {
	+NOINTERACTION
	RenderStyle Add
	Scale 0.2
	States {
	Spawn:
		TNT1 A 0 Bright
		IRN1 ABCDEFGHIJKL 1 Bright A_FadeOut(0.1,1)
		Stop
	}
}

ACTOR IronCurtainSmokeSpawner : RatDiseaseSpawner {
	-NOTIMEFREEZE
	States {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("IronCurtainSmoke",0,0,0,0,0,random(1,3),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 1
		Stop	
	}
}

// Effect particle
actor SpawnInvulnerabilityFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
	Spawn:
		TNT1 A 0
		TNT1 AA 0 A_SpawnItemEx ("SpawnInvulnerabilityFX2",
			random (-16, 16), random (-16, 16), random (20, 30), 0, 0, random (2, 6))
		stop
	}
}

actor SpawnInvulnerabilityFX2 : SpawnInvulnerabilityFX {
	RenderStyle Add
	Alpha 0.1
	Scale 0.2
	States {
	Spawn:
		PTCL ABCABC 1 A_FadeIn (0.1)
		goto Idle
	Idle:
		PTCL ABC 1 bright A_FadeOut (0.1)
		loop
	}
}

// =============================================================================
actor TimeGunBoostFX : SpawnInvulnerabilityFX {
	States {
	Spawn:
		TNT1 A 0
		TNT1 AA 0 A_SpawnItemEx ("TimeGunBoostFX2",
			random (-16, 16), random (-16, 16), random (20, 30), 0, 0, random (2, 6))
		stop
	}
}

actor TimeGunBoostFX2 : SpawnInvulnerabilityFX2 {
	Translation "1:31=146:159"
}

// =============================================================================
actor TimeGunSlowFX : SpawnInvulnerabilityFX {
	States {
	Spawn:
		TNT1 A 0
		TNT1 AA 0 A_SpawnItemEx ("TimeGunSlowFX2",
			random (-16, 16), random (-16, 16), random (20, 30), 0, 0, random (2, 6))
		stop
	}
}

actor TimeGunSlowFX2 : SpawnInvulnerabilityFX2 {
	Translation "1:31=203:213"
}