
//==============================================================================
//		STATUS EFFECTS
//==============================================================================

ACTOR RLVisualStatusEffect
{
	+NOTONAUTOMAP
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+NOCLIP
	States
	{
	Spawn:
		TNT1 A 0
// Checks to see if the monsterpack is being run with GunCaster.
		TNT1 A 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 2, "Sprite")
		TNT1 A 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 1, "SimpleEffect")
		Stop
	Sprite:
		TNT1 A 0
		Stop
	SimpleEffect:
		TNT1 A 0
		Stop
	}
}

//------------------------------------------------------------------------------

actor RLMonsterOnFireGiver : RLMPPowerupGiver
{
  Powerup.Duration -6
  powerup.type "RLMonsterOnFire"
}

actor PowerRLMonsterOnFire : PowerProtection // OH NO NOT burnery
{
	damagefactor "Ice", 0.75
}

//------------------------------------------------------------------------------

ACTOR RLStatusEffectMonsterFireSpawnerFull
{
  Radius 4
  Height 4
  
  +NOBLOCKMAP
  +NOGRAVITY
  +NOINTERACTION
  +NOTIMEFREEZE
  +NOTONAUTOMAP
  +NOEXPLODEFLOOR
  +CANBOUNCEWATER
   
    var int user_firedamage;
    var int user_firetimer;
  States
  {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_SetUserVar ("user_firedamage", 0)
   TNT1 A 0 A_Jump(256, "SpawnLoop")
   Goto SpawnLoop
  SpawnLoop:
   TNT1 A random(2,3)
   TNT1 A 0 A_Jump(256, "EmitFire")
   Goto EmitFire
  EmitFire:
   TNT1 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
   TNT1 A 0 A_GiveInventory ("RLStatusEffectMonsterFireGenerator", 1, AAPTR_TARGET)
   TNT1 A 0 A_JumpIfInventory("PowerRLMonsterOnFire", 1, "ExtraEffect", AAPTR_TARGET)
   Stop
   // If enabled, this fire will not give kills to the one who started the fire. fug
  ExtraEffect:
//   TNT1 A 0 A_SetUserVar ("user_firedamage", user_firedamage + 1)
//   TNT1 A 0 A_JumpIf (user_firedamage >= 20, "DealDamage")
   TNT1 A 0 A_Jump(256, "SpawnLoop")
   Goto SpawnLoop
  DealDamage:
   TNT1 A 0 A_SetUserVar ("user_firedamage", 0)
   TNT1 A 0 A_Explode ((10), 8, 1, 0, 8)
   Goto SpawnLoop
  Cease:
   TNT1 A 0
   Stop
  }
}

ACTOR RLStatusEffectMonsterFireSpawnerSimple : RLStatusEffectMonsterFireSpawnerFull
{
  States
  {
  SpawnLoop:
   TNT1 A random(6,9)
   TNT1 A 0 A_Jump(256, "EmitFire")
   Goto EmitFire
  }
}

ACTOR RLStatusEffectMonsterFlamingDeathFull : RLStatusEffectMonsterFireSpawnerFull
{
  States
  {
  Spawn:
   TNT1 A 0
   TNT1 A 0 A_SetUserVar ("user_firedamage", 0)
   TNT1 A 0 A_SetUserVar ("user_firetimer", 35 * random(2,3))
   TNT1 A 0 A_Jump(256, "SpawnLoop")
   Goto SpawnLoop
  EmitFire:
   TNT1 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
   TNT1 A 0 A_SpawnItemEx ("RLStatusEffectMonsterFire", 0,0,4, frandom(-1.0,1.0),frandom(-1.0,1.0),frandom(0.1,1.0), 0, SXF_NOCHECKPOSITION)
   TNT1 A 0 A_SetUserVar ("user_firetimer", user_firetimer-1)
   TNT1 A 0 A_JumpIf (user_firetimer <= 0, "Cease")
   TNT1 A 0 A_Jump(256, "ExtraEffect")
   Goto ExtraEffect
  }
}

ACTOR RLStatusEffectMonsterFlamingDeathSimple : RLStatusEffectMonsterFlamingDeathFull
{
  States
  {
  SpawnLoop:
   TNT1 A random(6,9)
   TNT1 A 0 A_Jump(256, "EmitFire")
   Goto EmitFire
  }
}

//------------------------------------------------------------------------------

ACTOR RLStatusEffectMonsterFireGenerator : RLMPCustomFunction
{
  States
  {
  Pickup:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx ("RLStatusEffectMonsterFire", -8,0,height/3, frandom(-1.0,1.0),frandom(-1.0,1.0),frandom(0.1,1.0), 0, SXF_NOCHECKPOSITION)
	TNT1 A 0
	Stop
  }
}

ACTOR RLStatusEffectMonsterFire
{
  +NOBLOCKMAP
  +NOGRAVITY
  +NOINTERACTION
  +NOTIMEFREEZE
  +NOTONAUTOMAP
  +FORCEXYBILLBOARD
  Radius 4
  Height 4
  RenderStyle Add
  Alpha 0.98
  XScale 2.4
  YScale 3.6
  States
  {
  Spawn:
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX AA 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX BB 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX CC 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX DD 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX EE 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX FF 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX GG 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX HH 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX II 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX JJ 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX KK 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX LL 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX MM 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX NN 1 Bright A_ScaleVelocity (1.01)
	TNT1 A 0 A_FadeTo (0, 0.2, 1)
	FRFX OO 1 Bright A_ScaleVelocity (1.01)
    Stop
  }
}

//------------------------------------------------------------------------------

ACTOR RLStatusEffectMonsterShock : RLVisualStatusEffect
{
	Renderstyle Add
	Alpha 0.99
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.7,1.6))
		TNT1 A 0 A_Jump(256,"Sprite1","Sprite2","Sprite3")
	Sprite1:
		SELY ABAB 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Sprite2:
		SELY CDCD 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Sprite3:
		SELY EFEF 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Main:
		"####" "#" 1 A_SetScale(ScaleX + frandom(0.01,0.02))
		"####" "#" 0 A_FadeTo(0, frandom(0.3,0.6), 1)
		Loop
	}
}

ACTOR RLStatusEffectMonsterShockSimple : RLStatusEffectMonsterShock
{
	States
	{
	Main:
		"####" "#" 0
		Stop
	}
}

ACTOR RLStatusEffectMonsterBlueShock : RLVisualStatusEffect
{
	Renderstyle Add
	Alpha 0.99
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.7,1.6))
		TNT1 A 0 A_Jump(256,"Sprite1","Sprite2","Sprite3")
	Sprite1:
		SELB ABAB 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Sprite2:
		SELB CDCD 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Sprite3:
		SELB EFEF 1 Bright
		"####" "#" 0 A_Jump(256,"Main")
	Main:
		"####" "#" 1 A_SetScale(ScaleX + frandom(0.01,0.02))
		"####" "#" 0 A_FadeTo(0, frandom(0.3,0.6), 1)
		Loop
	}
}

ACTOR RLStatusEffectMonsterBlueShockSimple : RLStatusEffectMonsterBlueShock
{
	States
	{
	Main:
		"####" "#" 0
		Stop
	}
}
