//ENEMIES
actor spectre_spawner : RandomSpawner replaces spectre {
	DropItem "msxstealthdemon" 255, 7
	DropItem "HeavyCloseGrunt" 255, 3
}


actor msxstealthdemon {
  Health 65
  PainChance 100
  Speed 22
  Radius 30
  Height 56
  Mass 400
  Monster
  +FLOORCLIP -FASTER -FASTMELEE
  +STEALTH
  RenderStyle Normal
  SeeSound "demon/sight"
  AttackSound "demon/melee"
  PainSound "demon/pain"
  DeathSound "demon/death"
  ActiveSound "demon/active"
  Obituary "%o was surprised by a stealth demon"
  States
  {
  Spawn:
    SAR2 AB 10 A_Look
    Loop
  See:
    SAR2 AABBCCDD 2 A_Chase
    Loop
  Melee:
    SAR2 E 6 A_FaceTarget
	SAR2 FG 2 A_FaceTarget
	SAR2 G 6 A_CustomMissile ("msxDemonBit", 20, 0, 0, 0, 0)
    Goto See
  Pain:
    SAR2 H 2
    SAR2 H 2 A_Pain
    Goto See
  Death:
    SAR2 I 8
    SAR2 J 8 A_Scream
    SAR2 K 4
    SAR2 L 4 A_NoBlocking
    SAR2 M 4
    SAR2 N -1
    Stop
  Raise:
    SAR2 N 5
    SAR2 MLKJI 5
    Goto See
  }
}



actor msxDemonBit{
	radius 5
	height 5
	speed 20
	DamageType StrongMelee
	damage (random(38,38))
	//deathsound "sfx/fleshhit"
	PROJECTILE
	states{
		spawn:
			TNT1 AAA 1
			stop
		death:
			TNT1 A 1
			stop
	}
}


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor msxRevenant : Revenant replaces Revenant{
	scale 0.85
	health 150
	speed 14
	painchance 80
	MeleeThreshold 12
	+DONTHARMCLASS
    +DONTHARMSPECIES
	states{
	  Melee:
		SKEL G 0 A_FaceTarget
		SKEL G 5 A_SkelWhoosh
		SKEL H 5 A_FaceTarget
		SKEL I 5 A_CustomMeleeAttack (30, "enemy/meleehit"," " , "StrongMelee")
		goto See
	  Missile:  
		TNT1 A 0 A_Jump(64,"SeekMissile1","SeekMissile2")
		SKEL J 3 bright A_FaceTarget
		TNT1 A 0 A_CustomMissile ("rev_normMissile", 45, 15, 0, 0, 0) 
		TNT1 A 0 A_CustomMissile ("rev_normMissile", 45, -15, 0, 0, 0) 
		SKEL J 3 bright A_FaceTarget 
		SKEL K 6 A_FaceTarget
		SKEL K 12 A_FaceTarget
		goto See
	  SeekMissile1:
		SKEL J 3 bright A_FaceTarget
		TNT1 A 0 A_CustomMissile ("rev_seekMissile", 45, 15, 10, 0, 0) 
		TNT1 A 0 A_CustomMissile ("rev_normMissile", 45, -15, 0, 0, 0) 
		SKEL J 3 bright A_FaceTarget 
		SKEL K 6 A_FaceTarget
		SKEL K 12 A_FaceTarget
		goto See
	  SeekMissile2:
		SKEL J 3 bright A_FaceTarget
		TNT1 A 0 A_CustomMissile ("rev_normMissile", 45, 15, 0, 0, 0) 
		TNT1 A 0 A_CustomMissile ("rev_seekMissile", 45, -15, -10, 0, 0) 
		SKEL J 3 bright A_FaceTarget 
		SKEL K 6 A_FaceTarget
		SKEL K 12 A_FaceTarget
		goto See
		
		
	}
}


actor rev_normMissile {
	Radius 4
	Height 4
	Speed 26
	Damage (random(12,16))
	PROJECTILE
	+NOGRAVITY
	Scale 0.75
	SeeSound "skeleton/attack"
	
	States	{
		Spawn:
			TNT1 A 0
			FATB AB 1 bright A_SpawnItemEx("rev_normMisTrail",50,0,3, 0,frandom(-0.6,0.6), frandom(-0.6,0.6))
			Loop
		Death:
			TNT1 A 0 A_PlaySound("sfx/psmallexplo")
			TNT1 A 0 A_Explode(8, 32, 0)
			TNT1 A 0 A_SpawnItemEx("RevMisBoom", 0, 0, 0, 0, 0, 0, 0, 0)
			TNT1 AAAA 0 A_SpawnItemEx ("msxgen_smoke3", 0,0,0, frandom(-0.6,0.6),frandom(-0.6,0.6), frandom(-0.6,0.6), 0, 0)
			Stop
	}
}


actor rev_normMisTrail {
	scale 0.15
	alpha 1.0
	renderstyle add
	+NOTELEPORT
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
		spawn:
			TNT1 A 3
			TNT1 A 0 A_Jump(255,"smoek1","smoek2","smoek3","smoek4","smoek5","smoek6")
		smoek1:
			RMNS A 2 bright A_Fadeout(0.1)
			loop
		smoek2:
			RMNS B 2 bright A_Fadeout(0.1)
			loop
		smoek3:
			RMNS C 2 bright A_Fadeout(0.1)
			loop
		smoek4:
			RMNS D 2 bright A_Fadeout(0.1)
			loop
		smoek5:
			RMNS E 2 bright A_Fadeout(0.1)
			loop
		smoek6:
			RMNS F 2 bright A_Fadeout(0.1)
			loop
	}
}



actor rev_seekMissile {
	Health 25
	Radius 10
	Height 10
	mass 200
	Speed 15
	Damage (random(22,26))
	PROJECTILE
	+RANDOMIZE
	+SEEKERMISSILE
	Scale 0.9
	SeeSound "skeleton/attack"
	
	States{
		Spawn:
			TNT1 A 0
			FATB AB 1 bright A_SpawnItemEx("rev_seekMisTrail", -10,0,5, 0,frandom(-0.8,0.8), frandom(-0.8,0.8))
			TNT1 A 0 A_SeekerMissile (4,8)
			Loop
		Death:
			TNT1 A 0 A_PlaySound("sfx/psmallexplo")
			TNT1 A 0 A_Explode(20, 48, 0)
			TNT1 A 0 A_SpawnItemEx("RevMisBoom", 0, 0, 0, 0, 0, 0, 0, 0)
			TNT1 AAAA 0 A_SpawnItemEx ("msxgen_smoke3", 0,0,0, frandom(-0.6,0.6),frandom(-0.6,0.6), frandom(-0.6,0.6), 0, 0)
			Stop
	}
}


actor rev_seekMisTrail {
	scale 0.25
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PFNM ABCDE 1 bright
			PFNM FGHIJKL 1 bright A_FadeOut(0.1)
			stop
	}
}


actor RevMisSmoke : RevenantTracerSmoke replaces RevenantTracerSmoke {
	states{
	spawn:
		BAL1 CCDE 3
		Stop
	}
}

actor RevMisBoom {
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	states{
	spawn:
		SX02 ABCDEFGHIJKLMNOPQRSTU 1 bright
		stop
	}

}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor mancubus : fatso replaces fatso {
	health 350
	speed 10
	damagefactor fatball, 0
	states{
		spawn:
			MANC A 2 A_Look
			loop
		See:
			MANC AABBCCDDEEFF 4 A_Chase
			loop
		Missile:
			TNT1 A 0 A_Jump(64,"AngledShot")
			MANC G 12 A_FatRaise
			TNT1 A 0 A_CustomMissile ("fatshot_rail", 32, 0)
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, 20, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, -20, 0, CMF_AIMOFFSET)
			MANC H 4 bright A_FaceTarget 
			MANC IG 2 A_FaceTarget
			goto See
		AngledShot:
			MANC G 16 A_FatRaise
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, 20, 6, 0)
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, -20, -6, 0)
			MANC H 3 bright A_FaceTarget 
			MANC IG 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, 20, -2, 0)
			TNT1 A 0 A_CustomMissile ("msxFatShot", 28, -20, 2, 0)
			MANC H 3 bright A_FaceTarget
			MANC IG 2 A_FaceTarget
			goto see
		Pain:
			MANC J 3
			MANC J 3 A_Pain
			goto See
		Death:
			MANC K 6 A_Scream
			MANC L 6 A_NoBlocking
			MANC MNOPQRS 4
			MANC T -1 A_BossDeath
			stop
		Raise:
			MANC RQPONMLK 5
			goto See

	}
}

actor fatshot_rail : doomimpball{
  Speed 21
  FastSpeed 21
  Damage 0
  SeeSound " "
  DeathSound " "
  States{
	  Spawn:
		TNT1 A 2
		loop
	  Death:
		TNT1 A 1 
		stop
  }
}

actor msxFatShot : FatShot {
	Speed 20
	scale 0.47
	Damage (random(10,16))
	renderstyle add
	damagetype fatball
	states{
		spawn:
			FBAL A 2 bright A_SpawnItemEx ("fatball_flame", 0,0,0, 0,0,0, 0, 0)
			TNT1 AA 0 A_SpawnItemEx ("msxgen_smoke3", -8,0,0, 0,frandom(-0.5,0.5), frandom(-0.6,0.6), 0, 0)
			TNT1 A 0 A_Explode(12, 58, 0)
			FBAL B 2 bright A_SpawnItemEx ("fatball_flame", 0,0,0, 0,0,0, 0, 0)
			TNT1 AA 0 A_SpawnItemEx ("msxgen_smoke3", -8,0,0, 0,frandom(-0.5,0.5), frandom(-0.6,0.6), 0, 0)
			TNT1 A 0 A_Explode(12, 58, 0)
			FBAL C 2 bright A_SpawnItemEx ("fatball_flame", 0,0,0, 0,0,0, 0, 0)
			TNT1 AA 0 A_SpawnItemEx ("msxgen_smoke3", -8,0,0, 0,frandom(-0.5,0.5), frandom(-0.6,0.6), 0, 0)
			TNT1 A 0 A_Explode(12, 58, 0)
			FBAL D 2 bright A_SpawnItemEx ("fatball_flame", 0,0,0, 0,0,0, 0, 0)
			TNT1 AA 0 A_SpawnItemEx ("msxgen_smoke3", -8,0,0, 0,frandom(-0.5,0.5), frandom(-0.6,0.6), 0, 0)
			TNT1 A 0 A_Explode(12, 58, 0)
			loop
		death:
			TNT1 A 0 A_PlaySound("sfx/bfballexplo", CHAN_AUTO)
			TNT1 A 0 A_Explode(24, 84, 0)
			TNT1 A 0 A_SpawnItemEx ("fatball_endflame", 0,0,0, 0,0,0, 0, 0)
			TNT1 AAAAAAAA 0  A_SpawnItemEx ("msxgen_smoke2", 0,0,0, random(-3,3),frandom(-3,3), frandom(-3,3), random(1,360), 0)
			stop
	}
}

actor fatball_flame{
	scale 0.65
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	states{
		spawn:
			FX58 ABCDEFG 1 bright
			FX58 HIJKLMNOPQ 1 bright A_FadeOut(0.08)
			stop
	}
}

actor fatball_endflame{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	states{
		spawn:
			FRME ABCDEFGHI 1 bright
			FRME JKLMNOPQRS 1 bright A_FadeOut(0.08)
			stop	
	}
}


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor msxCyberdemon : Cyberdemon replaces Cyberdemon {
	Obituary "%o couldn't stand a chance against the Cyberdemon"
	painchance 20
	painchance "SpidMaster_Bullet",0
	health 2700
	speed 26
	scale 1.1
	+MISSILEEVENMORE
	states{
		Missile:
			CYBR EEEEE 2 A_FaceTarget
		NormBall:
			CYBR E 1 A_FaceTarget
					
			TNT1 A 0 A_PlaySound("enemy/cybcannonfire", CHAN_VOICE)
			CYBR F 3 bright A_CustomMissile ("cyberBall", 60, -20, 0)
			CYBR E 3 A_FaceTarget
			
			TNT1 A 0 A_PlaySound("enemy/cybcannonfire", CHAN_VOICE)
			CYBR F 3 bright A_CustomMissile ("cyberBall", 60, -20, random(-12,12))
			CYBR E 3 A_FaceTarget
			
			TNT1 A 0 A_PlaySound("enemy/cybcannonfire", CHAN_VOICE)
			CYBR F 3 bright A_CustomMissile ("cyberBall", 60, -20, random(-12,12))
			CYBR E 3 A_FaceTarget
			
			TNT1 A 0 A_Jump(24, "SeekMissile")
			TNT1 A 0 A_Jump(64, "see")
			loop
		SeekMissile:
			CYBR EEEEEE 2 A_FaceTarget
			//TNT1 A 0 A_PlaySound("enemy/cybcannonfire", CHAN_AUTO)
			CYBR F 3 bright A_CustomMissile ("cyberSeekRocket", 60, -20)
			CYBR E 4 A_FaceTarget
			goto See
	}
}

actor cyberBall {
	speed 30
	alpha 1.0
	renderstyle NORMAL
	scale 0.6
	damage (random(68,74))
	PROJECTILE
	+GHOST
	+THRUGHOST
	+DONTHARMCLASS
	+DONTHARMSPECIES
	DeathSound "sfx/explosion2"
	states{
		spawn:
			TNT1 A 0
			CYBL AA 1 bright A_SpawnItemEx("cyber_BallTrailSpawner",0,0,0, 0,0,0) 
			CYBL BB 1 bright A_SpawnItemEx("cyber_BallTrailSpawner",0,0,0, 0,0,0) 
			loop
		death:
			TNT1 A 0
			TNT1 A 0 A_Explode(25, 170, 0)
			TNT1 A 0 A_Quake (3, 35, 0, 192)
			TNT1 A 0 A_SpawnItemEx("cyberBallBoom1",0,0,-20, 0,0,0) 
			TNT1 AAA 0 A_SpawnItemEx("cyberBallBoom2",0,random(-2,2),random(-2,2), 0,frandom(-4.4,4.4),frandom(-1.4,1.4),random(180,360)) 
			TNT1 AAAAAAAA 0 A_SpawnItemEx("cyberBallBoomFire",0,0,0, frandom(-3.4,3.4),frandom(-3.4,3.4),frandom(-3.4,2.8),random(180,360)) 
			TNT1 A 20
			stop
	}
}


actor cyber_BallTrailSpawner {
	+NOINTERACTION
	states{
		spawn:
			TNT1 A 0 
			TNT1 A 0 //A_SpawnItemEx("cyberRcktFireTrail2",-10,0,0, 0,0,0) 
			TNT1 AA 0 A_SpawnItemEx("cyberBallFireTrail",-10,0,0, 0,frandom(-1.5,1.5),frandom(-1.5,1.5)) 
			stop
	}
}

actor cyberBallFireTrail {
	scale 0.35
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PFNM ABCDEFGHIJKL 1 bright A_FadeOut(0.08)
			stop
	}
}

actor cyberBallBoom1 {
	scale 0.8
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			NKXP BCDEFGHIJKLMNOPQRSTUV 1 bright
			stop
	}
}

actor cyberBallBoom2 {
	scale 1.0
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			FX58 ABCDEFGHIJKLMNOPQ 1 bright
			stop
	}
}


actor cyberBallBoomFire{
	scale 1.25
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PFNM ABCDEFGHIJKL 1 bright A_FadeOut(0.02)
		sfade:
			PFNM L 1 bright A_FadeOut(0.1)
			loop
	}
}

//
actor cyberSeekRocket {
	Health 180
	Radius 15
	Height 15
	mass 400
	Speed 18
	scale 1.1
	Damage (random(120,135))
	painchance 255
	PROJECTILE
	+RANDOMIZE
	+SEEKERMISSILE
	+GHOST
	+SHOOTABLE
	-NOBLOCKMAP
	+THRUGHOST
	+NOBLOOD
	Scale 1.0
	SeeSound "enemy/cybcannonfire"
	DeathSound "sfx/explosion1"
	States{
		Spawn:
			TNT1 A 0
			MISL A 1 bright A_SpawnItemEx("cyber_RcktTrailSpawner", -10,0,6, 0,0,0)
			TNT1 A 0 A_SeekerMissile (3,6,SMF_PRECISE)
			Loop
		Death:
			TNT1 A 0 A_Explode(60, 200, 0)
			TNT1 A 0 A_Quake (5, 35, 0, 224)
			TNT1 A 0 A_SpawnItemEx("cyberRocketBoomFlash", 0, 0, 0, 0, 0, 0, 0, 0)
			TNT1 A 0 A_SpawnItemEx("cyberRocketBoom1", 0, 0, 0, 0, 0, 0, 0, 0)
			TNT1 AA 0 A_SpawnItemEx("cyberRocketBoom2", 0, 0, 0, 0, frandom(-2.4,2.4), frandom(-2.4,2.4), 0, 0)
			TNT1 AAAAAAAA 0 A_SpawnItemEx("cyberRocketBoomFire",0,0,0, frandom(-3.4,3.4),frandom(-3.4,3.4),frandom(-3.4,2.8),random(180,360)) 
			TNT1 AAAAAAAA 0  A_SpawnItemEx ("msxgen_smoke2", 0,0,0, random(-3,3),random(-3,3), random(-3,3), random(180,360), 0)
			//TNT1 AAAA 0 A_SpawnItemEx ("msxgen_smoke3", 0,0,0, frandom(-0.6,0.6),frandom(-0.6,0.6), frandom(-0.6,0.6), 0, 0)
			TNT1 A 20
			Stop
		Pain:
			MISL A 1 A_Recoil(20)
			goto spawn
	}
}

actor cyber_RcktTrailSpawner {
	+NOINTERACTION
	states{
		spawn:
			TNT1 A 0 
			TNT1 A 0 A_SpawnItemEx("cyberRcktTrailFlare",0,0,1, 0,0,0) 
			TNT1 A 0 A_SpawnItemEx("cyberRcktFireTrail2",0,0,0, 0,0,0) 
			TNT1 AAAA 0 A_SpawnItemEx("cyberRcktFireTrail1",0,0,0, 0,frandom(-1.8,1.8),frandom(-1.8,1.8))
			TNT1 AAAA 0 A_SpawnItemEx ("msxgen_smoke", -15,0,0, 0,frandom(-0.9,0.9), frandom(-0.9,0.9), 0, 0)
			stop
	}
}

actor cyberRcktTrailFlare {
	scale 0.6
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			TNT1 A 0
			SPRK C 1 bright
			stop
	}
}

actor cyberRcktFireTrail1 : cyberBallFireTrail {
	scale 0.25
}

actor cyberRcktFireTrail2 {
	scale 0.3
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PFRE ABCDEFGHIJKL 1 bright A_FadeOut(0.02)
			stop
	}
}

actor cyberRocketBoomFlash {
	scale 1.2
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
		spawn:
			BFSH A 3 bright
			stop
	}

}

actor cyberRocketBoom1 {
	scale 1.2
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
		spawn:
			SX06 ABCDEFGHIJKLMNOPQRSTUVWX 1 bright
			stop
	}
}

actor cyberRocketBoom2 {
	scale 1.2
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
		spawn:
			SX04 ABCDEFGHIJKLMNOPQ 1 bright
			stop
	}
}

actor cyberRocketBoomFire : cyberBallBoomFire {
	scale 1.4
}


/////////////////////////////////////
actor msxRocket : Rocket {
	Speed 26
	damage (random(80,90))
	-ROCKETTRAIL
	+FORCEXYBILLBOARD

	states{
		Spawn:
			MISL A 2 bright A_SpawnItemEx ("msxgen_smoke", 0,0,0, 0,frandom(-0.9,0.9), frandom(-0.9,0.9), 0, 0)
			loop
		Death:
			TNT1 A 0 A_PlaySound("sfx/sboom1",CHAN_AUTO)
			TNT1 A 0 A_Explode(90,164)
			TNT1 A 0 A_SpawnItemEx ("msxRocketBoom", 0,0,0, 0,0,0, 0, 0)
			TNT1 AAAAAAAA 0  A_SpawnItemEx ("msxgen_smoke2", 0,0,0, random(-3,3),frandom(-3,3), frandom(-3,3), random(1,360), 0)
			stop
	}
}

actor msxRocketBoom {
	scale 1.25
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
		spawn:
			SX07 ABCDEFGHIJKLMNOP 1 bright
			stop
	}
}

actor msxgen_smoke {
	scale 0.15
	alpha 0.5
	renderstyle translucent
	+NOTELEPORT
	+FLOORCLIP
	+NOGRAVITY
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(255, "s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24")
		s1:
			SMK5 A 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s2:
			SMK5 B 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s3:
			SMK5 C 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s4:
			SMK5 D 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s5:
			SMK5 E 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s6:
			SMK5 F 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s7:
			SMK5 G 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s8:
			SMK5 H 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s9:
			SMK5 I 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s10:
			SMK5 J 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s11:
			SMK5 K 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s12:
			SMK5 L 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s13:
			SMK5 M 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s14:
			SMK5 N 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s15:
			SMK5 O 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s16:
			SMK5 P 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s17:
			SMK5 Q 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s18:
			SMK5 R 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s19:
			SMK5 S 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s20:
			SMK5 T 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s21:
			SMK5 U 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s22:
			SMK5 V 4 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s23:
			SMK5 W 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
		s24:
			SMK5 X 3 A_ScaleVelocity(0.9)
			TNT1 A 0 A_FadeOut(0.05)
			loop
			
	}
}

actor msxgen_smoke2 : msxgen_smoke {
	scale 0.52
	alpha 0.6
}

actor msxgen_smoke3 : msxgen_smoke {
	scale 0.25
	alpha 0.6
}

actor msxgen_smoke4 : msxgen_smoke {
	scale 0.65
	alpha 0.6
}


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


actor msxSpiderMastermind : SpiderMastermind replaces SpiderMastermind  {
  Obituary "%o has fallen to the might of the SpiderMastermind"
  Health 3200 
  Radius 100 
  Height 100 
  Mass 2000 
  Speed 12 
  PainChance 60 
  translation "112:127=168:191", "192:207=16:31"
  Monster
  +FloorClip
  +Boss
  +MissileEvenMore
  +NoRadiusDmg
  SeeSound "enemy/demsit" 
  PainSound "spider/pain" 
  DeathSound "enemy/demdth" 
  ActiveSound "spider/active" 
  States 
  {
  Spawn: 
    DEMO AB 10 A_Look 
    Loop 
  See: 
    DEMO A 3 A_Metal 
    DEMO ABB 3 A_Chase 
    DEMO C 3 A_Metal 
    DEMO CDD 3 A_Chase 
    DEMO E 3 A_Metal 
    DEMO EFF 3 A_Chase 
    Loop 
  Missile:
	TNT1 A 0 A_JumpIfCloser(1000,"CloseAttack")
  LongAttack:
	TNT1 A 0 A_Jump(24,"SuperAttack") 
  
	DEMO G 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("enemy/smastercannon")
	TNT1 A 0 A_CustomMissile ("spidboss_canshot", 25, 18, random(-1,1),CMF_OFFSETPITCH , frandom(-0.4,0.4))	
	TNT1 A 0 A_CustomMissile ("spidboss_canshot", 25, -12,  random(-1,1),CMF_OFFSETPITCH , frandom(-0.4,0.4))	
	DEMO H 2 bright A_FaceTarget
	DEMO G 1 A_MonsterRefire(40, "see")
	goto missile
  CloseAttack:
	DEMO G 1 A_FaceTarget
	TNT1 A 0 A_PlaySound("enemy/smastercannon")
	TNT1 A 0 A_CustomMissile ("spidboss_canshot", 25, 18, random(-11,11),CMF_OFFSETPITCH , random(-3,3))	
	TNT1 A 0 A_CustomMissile ("spidboss_canshot", 25, -12,  random(-11,11),CMF_OFFSETPITCH , random(-3,3))	
	DEMO H 1 bright A_FaceTarget
	DEMO G 1 A_MonsterRefire(40, "see")
	goto Missile
  
  SuperAttack:
	DEMO TTT 2 A_FaceTarget
	TNT1 A 0 A_PlaySound("enemy/smastersupers", CHAN_VOICE)
	DEMO U 4 A_CustomMissile ("spidboss_supershot", 43, 4, 0)	
	DEMO T 8 A_FaceTarget
	goto Missile
   
  Pain: 
    DEMO I 3 
    DEMO I 3 A_Pain 
    Goto See 
  Death: 
    DEMO J 20 Bright A_Scream 
    DEMO K 10 Bright A_NoBlocking 
    DEMO LMNOPQR 10 Bright
    DEMO S 30 
    DEMO S -1 A_BossDeath 
    Stop 
   } 
}

actor spidboss_canshot : fastprojectile{
	radius 3
	height 3
	speed 50
	renderstyle add
	scale 0.06
	alpha 1.0
	Damage (random(10,14))
	damagetype SpidMaster_Bullet
	PROJECTILE
	SeeSound " "
	+FORCEXYBILLBOARD
	+BLOODSPLATTER
	MissileType "spidboss_canshotTrail"
	MissileHeight 8
	states{
		spawn:
			TNT1 A 0
			PRJ1 A 1 bright //A_SpawnItemEx("spidboss_canshotTrail",0,0,0, 0,0,0) 
			loop
		death:
		crash:
			TNT1 A 1 A_SpawnItemEx("pistol_impactB",0,0,0, 0,0,0) 
			stop
		xdeath:
			TNT1 A 1
			stop
	}
}

actor spidboss_canshotTrail {
	scale 0.04
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PRJ1 B 1 bright A_FadeOut(0.3)
			loop
	}
}


actor spidboss_supershot : fastprojectile {
	radius 3
	height 3
	speed 40
	renderstyle add
	scale 0.5
	Damage (random(26,32))
	PROJECTILE
	SeeSound " "
	DeathSound "plasma/bighit2"
	+FORCEXYBILLBOARD
	MissileType "spidboss_sshotTrailSpawner"
	MissileHeight 8
	states{
		spawn:
			TNT1 A 0
			RBLL ABCDEF 1 bright //A_SpawnItemEx("spidboss_sshotTrailSpawner",0,0,0, 0,0,0) 
			loop
		death:
			TNT1 A 0 A_Explode(148, 320, 0)
			TNT1 A 0 A_Quake (5, 35, 0, 386)
			TNT1 A 0 A_SpawnItemEx("sboss_SShotBoomFlash",0,0,0, 0,0,0) 
			TNT1 AAAAAA 0 A_SpawnItemEx("sboss_SShotBoom1",0,0,30, random(-5,5),random(-8,8),random(0,7)) 
			TNT1 AA 0 A_SpawnItemEx("sboss_SShotBoom2",0,0,0, 0,0,0)
			TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("sboss_SShotBoomSmoke",0,0,0, random(-4,4),random(-4,4), random(-4,4), random(180,360), 0)
			TNT1 A 20
			stop
	}
}

actor spidboss_sshotTrailSpawner {
	+NOINTERACTION
	states{
		spawn:
			TNT1 A 0 
			TNT1 A 0 A_SpawnItemEx("sboss_SShotTrailCore",-3,0,0, 0,0,0) 
			TNT1 A 0 A_SpawnItemEx("sboss_SShotTrail1",-7,0,0, 0,frandom(-0.5,0.5),frandom(-0.5,0.5)) 
			TNT1 A 0 A_SpawnItemEx("sboss_SShotTrail2",-7,0,0, 0,frandom(-2.5,2.5),frandom(-2.5,2.5)) 
			stop
	}
}

actor sboss_SShotTrailCore {
	scale 0.7
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			TNT1 A 0
			TGBL A 1 bright A_FadeOut(0.02)
			stop
	}
}

actor sboss_SShotTrail1 {
	scale 0.25
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			RMNS ABCDEFGHIJKLMNOPQ 1 bright A_FadeOut(0.02)
			stop
	}
}

actor sboss_SShotTrail2 {
	scale 0.5
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			PLSR ABCDEFGHIJKLMNO 1 bright A_FadeOut(0.06)
			stop
	}
}


actor sboss_SShotBoomFlash {
	scale 0.8
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			RPFL A 1 A_FadeOut(0.05)
			loop
	}
}

actor sboss_SShotBoom1 {
	scale 1.6
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			RPEX ABCDEFGHIJKLMNOPQRSTU 1 bright
			stop
	}
}

actor sboss_SShotBoom2 {
	scale 2.0
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	states{
		spawn:
			BPLO ABCDEFG 2 bright
			stop
	}
}

actor sboss_SShotBoomSmoke : sboss_SShotTrail2{
	scale 2.8
	states{
		spawn:
			PLSR ABCDEFGHIJKLMNO 2 bright
			stop
	}
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor msxPainElemental : PainElemental replaces PainElemental {
	Obituary "%o has discovered that the Pain Elemental is dangerous"
	health 200
	speed 10
	damagefactor "LostSoulBit",0
	states {
		Missile:
			TNT1 A 0 A_Jump(216,"FlameAttack")
		SpawnLostSoul:
			PAIN D 5 A_FaceTarget
			PAIN E 5 A_FaceTarget
			
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			PAIN F 2 Bright A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("paine_SummonFire",24,0,24, 0,frandom(-3.8,3.8),frandom(-3.8,3.8))
			
			PAIN F 1 Bright A_PainAttack
			Goto See
		FlameAttack:
			TNT1 A 0 A_JumpIfCloser(650,"FlameCloseAttack")
			PAIN D 3 A_FaceTarget
			PAIN E 4 bright A_FaceTarget		
			PAIN FFFFFFF 2 bright A_CustomMissile ("Kabro_FireBall", 24, 0, frandom(-0.5,0.5), CMF_OFFSETPITCH, frandom(-0.5,0.5))
			goto see
		FlameCloseAttack:
			PAIN DD 3 A_FaceTarget
			PAIN E 4 bright A_FaceTarget
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, -9, 0, 0)
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, -6, 0, 0)
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, -3, 0, 0)
			
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, 9, 0, 0)
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, 6, 0, 0)
			TNT1 A 0 A_CustomMissile ("Kabro_FireBall", 24, 0, 3, 0, 0)
			
			PAIN F 9 bright A_CustomMissile ("Kabro_FireBall", 24, 0, 0, 0, 0)
			goto see
	}
}

actor paine_SummonFire {
	scale 0.65
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOTELEPORT
	deathsound "weapons/firex4"
	states{
		spawn:
			TNT1 A 0 
			TNT1 A 0 A_Scream
			PFOR ABCDE 1 bright
			PFOR FGHIJKL 1 bright A_FadeOut(0.1)
			stop
	}
}



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor msxLostSoul : LostSoul replaces LostSoul {
  Health 40
  Mass 50
  Speed 17
  Damage (random(24,32))
  bloodcolor "99 50 0"
  DamageType LostSoulBit
  damagefactor "LostSoulBit",0
}


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

actor msxBarrel : ExplosiveBarrel replaces ExplosiveBarrel {
	Health 60
	DeathSound "sfx/barrelboom"
	Obituary "%o learned that barrels explode"
	states{
	Spawn:
		BAR1 AB 6
		Loop
	Death:
		BEXP B 5 bright 
		BEXP C 6 bright 
		TNT1 A 0 A_Scream
		TNT1 A 0 A_Explode(250, 200)
		TNT1 A 0 A_Quake(4, 12, 0, 432, " ")
		TNT1 A 0 A_SpawnItemEx ("msxBarrelboomflash", 0,0,7, 0,0,0, 0, 0)
		TNT1 A 0 A_SpawnItemEx ("msxBarrelboom1", 0,0,16, 0,0,0, 0, 0)
		TNT1 A 0 A_SpawnItemEx ("msxBarrelboom3", 0,0,19, 0,0,0, 0, 0)		
		TNT1 A 0 A_SpawnItemEx ("msxBarrelboom2", 0,0,37, 0,0,0, 0, 0)		
		TNT1 A 2
		
		TNT1 AAAAAA 0 A_SpawnItemEx ("msxgen_smoke4", 0,0,15, random(-3,3),frandom(-3,3), frandom(-3,3), random(1,360), 0)
		TNT1 AAAA 0 A_SpawnItemEx ("msxgen_smoke4", 0,0,40, random(-2,2),frandom(-2,2), frandom(-2,2), random(1,360), 0)
		
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",  10,  0,0,  3.5,  0,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4", -10,  0,0, -3.5,  0,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",   0, 10,0,  0,  3.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",   0,-10,0,  0, -3.5,0,0,32)
		
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4", -10,  5,0, -3.5,  1.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",  -5, 10,0, -1.5,  3.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",   5, 10,0,  1.5,  3.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",  10,  5,0,  3.5,  1.5,0,0,32)
			
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",  10, -5,0,  3.5, -1.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",   5,-10,0,  1.5, -3.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4",  -5,-10,0, -1.5, -3.5,0,0,32)
		TNT1 A 0  A_SpawnItemEx("msxgen_smoke4", -10, -5,0, -3.5, -1.5,0,0,32)		
		
		stop
	}
}

actor msxBarrelboom1 {
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	scale 1.1
	states{
		spawn:
			SX06 ABCDEFGHIJKLMNOPQRSTUWX 1 bright
			stop
	}
}

actor msxBarrelboom2{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	scale 1.6
	states{
		spawn:
			SX01 BCDEFGHIJKLMNOPQRSTUWX 1 bright
			stop
	}
}

actor msxBarrelboom3{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	scale 1.1
	states{
		spawn:
			SX07 BCDEFGHIJKLMNOP 1 bright
			stop
	}
}

actor msxBarrelboomflash{
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle add
	scale 1
	states{
		spawn:
			BFSH A 2 bright
			stop
	}
}

