
// ------------------------------------------------------------
//   Lost Soul
// ------------------------------------------------------------

ACTOR FireDancer : LostSoul replaces LostSoul
{
	damagetype "Thermal"
	Obituary "%o lost %p soul to rock and roll."
	ActiveSound ""
	+NOBLOOD
	+FLOATBOB
	+PUSHABLE
	-FLOORCLIP
	Renderstyle add
	Scale 0.6
	Radius 12
	Height 26
	Speed 8
	Damage 3
	Health 70
	Alpha 1.0
	States
	{
	Spawn:
		SKUL A 0
		SKUL A 0 A_LowGravity
		SKUL AAABBB 4 BRIGHT A_Look
		SKUL A 0 A_Jump(12,1)
		Loop
//		TNT1 A 0 A_Jump(200,"Spawn")
		SKUL A 1 BRIGHT A_PlaySound ("skull/melee")
		Loop
	See:
		TNT1 A 0 A_GiveInventory ("Shell", 1)
		SKUL A 0 A_NoGravity
		SKUL B 0 ThrustThingZ(0, random(4,12), random(0,1), 1)
		SKUL ABAB 3 BRIGHT A_Chase
		SKUL A 0 A_Jump(244,4)
		TNT1 A 0 A_JumpIfTargetInLOS(2)
		SKUL A 0 A_PlaySound ("skull/melee")
		SKUL B 0 ThrustThingZ(0, random(4,12), random(0,1), 1)
		SKUL AB 2 BRIGHT A_FastChase
		Goto See+2
	Missile:
		SKUL ABABAB 2 BRIGHT A_FaceTarget
		SKUL C 2 BRIGHT A_SkullAttack
			//intentional fall-through
	Fly:
		SKUL C 1 BRIGHT A_SpawnItemEx ("DrunkImpBallTail", 4,0,8, 6,0,1, 0,160)
		SKUL C 0 BRIGHT ThrustThingZ(0, random(1,4), random(0,1), 1)
		SKUL D 2 BRIGHT
		SKUL D 1 BRIGHT A_SpawnItemEx ("DrunkImpBallTail", 4,0,8, 6,0,1, 0,160)
		SKUL C 2 BRIGHT
		SKUL C 0 BRIGHT ThrustThingZ(0, random(1,4), random(0,1), 1)
		SKUL C 0 BRIGHT A_GiveInventory ("Clip", 1)
		SKUL C 0 BRIGHT A_JumpIfInventory ("Clip", 4, 1)
		loop
		SKUL C 2 BRIGHT A_TakeInventory ("Clip", 999)
		SKUL D 2 BRIGHT A_SpawnItemEx ("DrunkImpBallTail", 4,0,8, 6,0,1, 0,160)
		SKUL CD 2 BRIGHT A_FastChase
		SKUL C 4 BRIGHT A_Stop
		goto see
	Pain:
		SKUL E 3 bright A_Stop
		SKUL E 3 bright A_Pain
		goto See
	Death:
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,10)
		SKUL E 3 BRIGHT A_SpawnItemEx ("tempshieldpuff", 0,0,0, velx,vely,velz, 0,40)
		SKUL F 3
		SKUL G 3 BRIGHT A_NoBlocking
		SKUL H 3 BRIGHT A_Scream
		SKUL HHH 0 A_SpawnItemEx ("HDSmoke", randoM(-2,2),random(-2,2),random(4,8), 0,0,0, 0,160)
		SKUL HHHHHHHHH 0 A_SpawnItemEx ("BigWallChunk", random(-4,4),random(-4,4),random(2,14), random(-14,14),random(-14,14),random(-4,18), random(0,360),160)
		SKUL I 5 BRIGHT A_Explode (8, 96, 1)
		SKUL J 2 BRIGHT
		SKUL JJJJ 1 BRIGHT A_FadeOut (0.2)
		TNT1 A 0 A_Stop
		TNT1 A -1 A_Gravity
		Stop
	Raise:
		TNT1 A 0
		SKUL JJJJ 2 bright A_FadeIn (0.2)
		SKUL IHGFE 4
		goto See
	}
}
actor DisappearingFireDancer : FireDancer
{
	states
	{
	Death:
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,10)
		SKUL E 3 BRIGHT A_SpawnItemEx ("tempshieldpuff", 0,0,0, velx,vely,velz, 0,40)
		SKUL F 3 BRIGHT
		SKUL G 3 BRIGHT A_NoBlocking
		SKUL H 3 BRIGHT A_Scream
		SKUL HHH 0 A_SpawnItemEx ("HDSmoke", randoM(-2,2),random(-2,2),random(4,8), 0,0,0, random(0,360),160)
		SKUL HHHHHHHHH 0 A_SpawnItemEx ("BigWallChunk", random(-4,4),random(-4,4),random(2,14), random(-14,14),random(-14,14),random(-4,18), random(0,360),160)
		SKUL I 5 BRIGHT A_Explode (8, 96, 1)
		SKUL J 2 BRIGHT
		SKUL JJJJJ 1 BRIGHT A_FadeOut (0.2)
		Stop
	}
}


// ------------------------------------------------------------
//   Spectre
// ------------------------------------------------------------

ACTOR NinjaPirate replaces Spectre
{
	monster
	damagefactor "Balefire", 0.3
	+faster +fastmelee
	seesound ""
	attacksound "demon/melee"
	painsound "demon/pain"
	deathsound "demon/death"
	activesound "demon/active"
	health 170
	painchance 200
	height 56
	radius 20
	meleerange 40
	meleethreshold 512
	maxdropoffheight 48
	maxstepheight 48
	speed 12
	mass 300
	damage 8
	obituary "%o was skewered by a ninja pirate."
	hitobituary "%o was eaten by a ninja pirate."
	States
	{
	Spawn:
		TNT1 A 0 A_JumpIfInventory("Reloading",1,"SpawnUnCloak")
	Spawn2:
		SARG AB 10 A_Look
		loop
	SpawnUncloak:
		SARG GGG 0 A_SpawnItemEx("HDSmoke",random(-1,1),random(-1,1),random(-1,1),velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION,0)
		SARG G 0 A_ChangeFlag("frightened",0)
		SARG G 0 A_ChangeFlag("solid",1)
		SARG G 0 A_TakeInventory("Reloading",999)
		SARG G 0 A_ChangeFlag("nopain",0)
		SARG G 0 A_ChangeFlag("shadow",0)
		SARG G 0 A_ChangeFlag("notarget",0)
		SARG B 0 A_SetTranslucent (0,0)
		SARG B 2 A_SetTranslucent (0.2)
		SARG B 2 A_SetTranslucent (0.4)
		SARG B 2 A_SetTranslucent (0.6)
		SARG B 2 A_SetTranslucent (0.8)
		SARG B 2 A_SetTranslucent (1)
		goto Spawn2
	See:
		TNT1 A 0 A_JumpIfInventory("Reloading",1,"SeeCloaked")
		TNT1 A 0 A_ChangeFlag("nopain",0)
		goto SeeRunnin
	SeeCloaked:
		TNT1 A 0 HealThing(2)
		TNT1 A 0 A_JumpIfHealthLower(120,"SeeCloakedFlee")
		goto SeeCloakedChase
	SeeCloakedFlee:
		TNT1 A 0 A_ChangeFlag("frightened",1)
		TNT1 AAAAA 0 A_Chase("","",CHF_NOPLAYACTIVE|CHF_NIGHTMAREFAST)
		TNT1 A 2
		goto SeeCloaked2
	SeeCloakedChase:
		TNT1 A 0 A_ChangeFlag("frightened",0)
		TNT1 A 0 A_Chase("Melee","",CHF_NOPLAYACTIVE|CHF_NIGHTMAREFAST)
		TNT1 A 0 A_Jump(22,"Flicker1","Flicker2","Flicker3","Flicker4")
		goto SeeCloaked2
	SeeCloaked2:
		TNT1 A 0 A_JumpIfInTargetLOS("SeeCloaked")
		TNT1 A 0 A_JumpIfHealthLower(90,"SeeCloaked")
		TNT1 A 0 A_Jump(8,"Uncloak")
		goto SeeCloaked
	Flicker1:
		SARG A 2
		goto SeeCloaked2
	Flicker2:
		SARG B 2
		goto SeeCloaked2
	Flicker3:
		SARG C 2
		goto SeeCloaked2
	Flicker4:
		SARG D 2
		goto SeeCloaked2
	SeeRunnin:
		SARG AABBCCDD 2 A_Chase("Melee","Missile",CHF_NIGHTMAREFAST)
		TNT1 A 0 HealThing(random(4,8))
		goto See
	Uncloak:
		SARG GGG 0 A_SpawnItemEx("HDSmoke",random(-1,1),random(-1,1),random(-1,1),velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION,0)
		SARG G 0 A_ChangeFlag("frightened",0)
		SARG G 0 A_ChangeFlag("solid",1)
		SARG G 0 A_TakeInventory("Reloading",999)
		SARG G 0 A_ChangeFlag("nopain",0)
		SARG G 0 A_ChangeFlag("shadow",0)
		SARG G 0 A_ChangeFlag("notarget",0)
		SARG G 0 A_SetTranslucent (0,0)
		SARG G 1 A_SetTranslucent (0.2)
		SARG G 1 A_SetTranslucent (0.4)
		SARG G 1 A_SetTranslucent (0.6)
		SARG G 1 A_SetTranslucent (0.8)
		SARG G 0 A_SetTranslucent (1)
		goto See
	Missile:
		SARG G 0 A_JumpIfInventory("Reloading",1,"Uncloak")
		SARG GGE 4 A_FaceTarget
		SARG F 6 BRIGHT A_CustomMissile ("BaleBall", 32, 0, 0)
		SARG E 5
		SARG E 4
		Goto See
	Melee:
		SARG G 0 A_JumpIfInventory("Reloading",1,"Uncloak")
		SARG EF 6 A_FaceTarget
		SARG GGGGG 0 A_CustomMeleeAttack (random(1,3)*6, "", "", "SmallArms2", true)
		SARG G 12
		goto See
	Pain:
		SARG G 1 A_ChangeFlag("nopain",1)
		SARG G 0 A_Jump(48,"DeadRinger")
		SARG G 3 A_Pain
		SARG G 0 A_JumpIfHealthLower(110,"Cloak")
		SARG G 4
		goto See
	DeadRinger:
		SARG G 0 A_Scream
		SARG G 0 A_SpawnItemEx("DeadRingerNinjaPirate",0,0,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION,0)
		goto Cloak
	Cloak:
		SARG GGG 0 A_SpawnItemEx("HDSmoke",random(-1,1),random(-1,1),random(-1,1),velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION,0)
		SARG G 0 A_ChangeFlag("nopain",1)
		SARG G 0 A_ChangeFlag("frightened",1)
		SARG G 0 A_ChangeFlag("solid",0)
		SARG G 0 A_ChangeFlag("notarget",1)
		SARG G 0 A_ChangeFlag("shadow",1)
		SARG G 0 A_GiveInventory("Reloading",1)
		SARG G 1 A_SetTranslucent (0.8)
		SARG G 1 A_SetTranslucent (0.6)
		SARG G 1 A_SetTranslucent (0.4)
		SARG G 1 A_SetTranslucent (0.2)
		SARG G 1 A_SetTranslucent (0.2,2)
		goto see
	Death:
		SARG GGG 0 A_SpawnItemEx("HDSmoke",random(-1,1),random(-1,1),random(-1,1),velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,14)
		TNT1 A 0 A_SetTranslucent(1)
		SARG I 8 A_SpawnItemEx ("tempshield", 0,0,0, velx,vely,velz, 0,40)
		SARG J 8 A_Scream
		SARG K 4 A_SpawnItemEx ("tempshield2", 0,0,0, velx,vely,velz, 0,40)
		SARG L 4 A_NoBlocking
		SARG M 4
		SARG N -1
		stop
	Raise:
		SARG NMLKJI 6
		goto See
	}
}
actor DeadRingerNinjaPirate
{
	-solid
	states
	{
	spawn:
		TNT1 A 0 A_SetTranslucent(1)
		SARG J 8
		SARG KLM 4
		SARG N 350
		SARG N 20 A_FadeOut(0.1)
		wait
	}
}