Actor D3Wraith 10077
{
	Monster
	Health 150
	GibHealth 100
	Radius 19
	Height 48
	Speed 16
	Fastspeed 20
	PainChance 128
	PainChance "Avoid",128
	PainChance "Acid", 255
	Painchance "Shock", 256
	Painchance "beartrap", 255
	Painchance "fire", 256
	Mass 200
	//BloodColor "DarkGreen"
	//BloodType "Brutal_Blood","BloodSplatterReplacer","SawBlood"
	BloodType "PhantomBlood"
	+DontHurtSpecies
	+DontHarmClass
	//+AMBUSH
	//+JUMPDOWN
	//+SHADOW
	SeeSound "WRAITH/Sight"//"Shadow/active"//
	PainSound "WRAITH/Pain"//"Shadow/pain"//
	DeathSound "WRAITH/Death"//"Shadow/death"//
	ActiveSound "WRAITH/Active"//"Shadow/active"//
	MeleeDamage 5
	DamageFactor "Fire", 3.0
	DamageFactor "Use", 0.0
	DamageFactor "Stealth", 0.0
	Obituary "%o was slit open by a Phantom"
	DropItem "DemonStrengthRune" 1
	DropItem "SuperBlurSphere" 12
	RenderStyle Translucent
	Alpha 0.5
	TAG "Phantom"
	
	MeleeThreshold 192
	
	States
	{
	ReplaceVanilla:
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
		TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
		TNT1 A 0 A_SpawnItemEx ("Spectro",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS ,0, tid)
		Stop
	
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteWithResult("RADARSIGNAL",0)
		TNT1 A 0 A_JUMPIF(GETCVAR("monsterspawns")==4, "ReplaceVanilla")
	Givearmor:
		TNT1 A 0 A_JumpIf(GetCVAR("EnemyArmorValue")==true,1)
		goto look
		TNT1 A 0 A_GiveInventory("60armormed")
		TNT1 A 0 A_GiveInventory("hasmediumarmor")
		goto look		
		
		Look:
		PTMA AAAAAA 2 A_Look
		Loop
	See:
		TNT1 A 0 A_ChangeFlag("AMBUSH",1)
		TNT1 A 0 A_ChangeFlag("LOOKALLAROUND",1)
		TNT1 A 0 A_JumpIfInventory("MonsterHaveSeenPlayer",1,3)
		TNT1 A 0 A_GiveInventory("MonsterHaveSeenPlayer",1)
		TNT1 A 0 A_CheckSight("Hide")
		
		TNT1 A 0 A_TakeInventory("PhantomTeleportCooldown",1)
		TNT1 A 0 A_Jump(205,2)
		TNT1 A 0 A_CheckSight("Hide")
		PTMW AA 2 A_Chase
		PTMW BB 2 A_Chase
		PTMW CC 2 A_Chase
		PTMW DD 2 A_Chase
		TNT1 A 0 A_JumpIfintargetInventory("predatormode", 1, "Look")
		Loop
	Hide:
		PTMA AAAAAA 2 A_Look
		Loop
	Melee:
		PTMA AA 2 A_FaceTarget
		PTMA AA 2 A_FaceTarget
		PTMA FF 3 A_FaceTarget
		TNT1 A 0 A_PlayWeaponSound("D3Wraith/Attack")
		TNT1 A 0 a_checkproximity("Parried","Axeparry",80.0,1,CPXF_NOZ)
		PTMA G 6 A_CustomMeleeAttack(5,0,0,"Cut")
		Goto See
	Missile:
		//TNT1 A 0 A_JumpIfCloser(192,"See")		//Within 192 units it will attack the player
		TNT1 A 0 A_JumpIfCloser(1024,2)			//Between 192 and 1024 units it may try to teleport closer
		TNT1 A 0 A_Jump(96,"TeleportHideOut")	//Longer than 1024 units it will may try to teleport into hiding
		Goto See
		TNT1 A 0 A_Jump(112,"TeleportAttackOut")
		Goto See
	
PAIN.SYRINGE2:
	TNT1 A 0 A_CHANGEFLAG("FORCEINFIGHTING",1)
	TNT1 A 0 A_CHANGEFLAG("DOHARMSPECIES",1)
	TNT1 A 0 A_CHANGEFLAG("DONTHARMSPECIES",0)
	TNT1 A 0 A_CHANGEFLAG("DONTHARMCLASS",0)
	TNT1 A 0 A_CHANGEFLAG("NOINFIGHTSPECIES",0)
	TNT1 A 0 A_CHANGEFLAG("NOINFIGHTING",0)
	TNT1 A 0 A_CLEARTARGET
	TNT1 A 0 A_EXPLODE(1,270,XF_NOTMISSILE | XF_EXPLICITDAMAGETYPE,0,270,0,0,"bulletpuff","frenzytrigger")
	goto see
PAIN.FRENZYTRIGGER:
	TNT1 A 0 Healthing(1)
	TNT1 A 0 A_CHANGEFLAG("FORCEINFIGHTING",1)
	TNT1 A 0 A_CHANGEFLAG("DOHARMSPECIES",1)
	TNT1 A 0 A_CHANGEFLAG("DONTHARMSPECIES",0)
	TNT1 A 0 A_CHANGEFLAG("DONTHARMCLASS",0)
	TNT1 A 0 A_CHANGEFLAG("NOINFIGHTSPECIES",0)
	TNT1 A 0 A_CHANGEFLAG("NOINFIGHTING",0)
  goto See
	
	PAIN.SYRINGE1:
	TNT1 A 0 A_CHANGEFLAG("FRIENDLY",1)
	tnt1 a 0 givebody(100)
	goto pain.acid
	Pain.Shock:
	TNT1 A 0 A_spawnitem("plasmaexplosion",0,30)
	TNT1 A 0 A_giveinventory("shockcharge",10)
	TNT1 A 0 A_playsound("Sparks/Spawn", CHAN_7)
	pain.fire:	
	PAIN.ACID:
	PTMP A 15
	PTMP A 15 A_Pain
	Pain:
		TNT1 A 0 A_TakeInventory("PhantomTeleportCooldown",1)
		TNT1 A 0 A_CheckSight("Retaliate")
		TNT1 A 0 A_JumpIfInventory ("shockcharge", 1, 3)
		TNT1 A 0 A_JumpIfInventory("PhantomTeleportCooldown",1,2)
		TNT1 A 0 A_Jump(64,"TeleportAttackOut")
		PTMP A 3
		PTMP A 3 A_Pain
		TNT1 A 0 A_CHANGEFLAG("NOPAIN",0)
		TNT1 A 0 A_JumpIfInventory ("shockcharge", 1, "Shocked")
		Goto See
	Retaliate:
		TNT1 A 0 A_Pain
		PTMW AAA 1 A_Wander
		PTMW BBB 1 A_Wander
		PTMW CCC 1 A_Wander
		PTMW DDD 1 A_Wander
		Goto Look
	
	Pain.Beartrap:
		TNT1 A 0 A_giveinventory("istrapped",1)
		TNT1 A 0 a_changeflag("NOPAIN",1)
		TNT1 A 0 a_changeflag("DONTHRUST",1)
		TNT1 A 0 a_spawnitem("beartraptriggered",0,0)
		PTMP A 3 a_scream
		TNT1 A 0 
	Trapped:
		PTMA A 35 
		TNT1 A 0 a_jump(160,2)
		PTMT A 3 a_scream
		TNT1 A 0 a_checkproximity("Trapped", "beartraptriggered", 50,1)
		TNT1 A 0 A_takeinventory("istrapped",1)
		TNT1 A 0 a_changeflag("NOPAIN",0)
		TNT1 A 0 a_changeflag("DONTHRUST",0)
		goto SEE

	Parried:
		TNT1 A 0 A_JumpIfintargetInventory("isdoomguy", 1, "Parry2")
		TNT1 A 0 A_JumpIfintargetInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpifintargetInventory("UsedStamina",80,"CounterParry")
		TNT1 A 0 A_JumpifintargetInventory("UsedStamina",1980,"CounterParry")
		goto Parry2
	CounterParry:
		TNT1 A 0 A_startsound("KICKWALL",800)
		TNT1 A 0 A_givetotarget("triptoken",1)
		TNT1 A 0 A_takefromtarget("axedurability",10)
		TNT1 A 0 A_givetotarget("usedstamina",50)
		TNT1 A 0 A_CustomMissile("KnockAttack",10,0,0,0)
		goto See
	Parry2:
		TNT1 A 0 A_CHANGEFLAG("NOPAIN",1)
		TNT1 A 0 A_startsound("PARRIED",801)
		TNT1 A 0 A_givetotarget("usedstamina",20)
		TNT1 A 0 A_givetotarget("parrytoken",1)
		TNT1 A 0 A_takefromtarget("axedurability",3)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_SpawnItemex ("parryeffect", 6, 0,30,0,0,0,0, SXF_SETMASTER)	
		PTMP A 15
		PTMP A 15 A_Pain
		PTMP A 15
		goto pain.acid
	
	Shocked:
	TNT1 A 0 A_takeinventory("shockcharge",1)
	TNT1 A 0 A_spawnitem("plasmashock",0,25)
	TNT1 A 0 A_DamageSelf(2,"plasma")
	goto Pain
		
	Pain.Avoid:
	TeleportAttackOut:
		PTMA A 1 A_FaceTarget
		TNT1 A 0 A_GiveInventory("PhantomTeleportCooldown",10)
		TNT1 A 0 A_ChangeFlag("Invulnerable",1)
		TNT1 A 0 A_ChangeFlag("NonShootable",1)
		TNT1 A 0 A_ChangeFlag("Shootable",0)
		TNT1 A 0 A_ChangeFlag("NoTeleport",1)
		TNT1 A 0 A_ChangeFlag("NoRadiusDMG",1)
		//TNT1 A 0 A_ChangeFlag("DropOff",1)
		TNT1 A 0 A_UnSetShootable
		TNT1 AAAA 0 A_CustomMissile("PhantomSmoke",random(10,30),0,random(0,360),2,random(10,80))
		PTMA AAAAAAAAAA 1 A_Fadeout(0.05)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase("","")//A_ExtChase(0,0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase("","")//A_ExtChase(0,0,0,0)
	TeleportAttackIn:
		TNT1 A 10
		TNT1 AAAA 0 A_CustomMissile("PhantomSmoke",random(10,30),0,random(0,360),2,random(10,80))
		PTMA AAAAAAAAAA 1 A_Fadein(0.05)
		TNT1 A 0 A_ChangeFlag("Invulnerable",0)
		TNT1 A 0 A_ChangeFlag("NonShootable",0)
		TNT1 A 0 A_ChangeFlag("Shootable",1)
		TNT1 A 0 A_ChangeFlag("NoTeleport",0)
		TNT1 A 0 A_ChangeFlag("NoRadiusDMG",0)
		//TNT1 A 0 A_ChangeFlag("DropOff",0)
		TNT1 A 0 A_SetShootable
		PTMA AA 6 A_FaceTarget
		Goto See
	TeleportHideOut:
		PTMA A 1 A_FaceTarget
		TNT1 A 0 A_GiveInventory("PhantomTeleportCooldown",10)
		TNT1 A 0 A_ChangeFlag("Invulnerable",1)
		TNT1 A 0 A_ChangeFlag("NonShootable",1)
		TNT1 A 0 A_ChangeFlag("Shootable",0)
		TNT1 A 0 A_ChangeFlag("NoTeleport",1)
		TNT1 A 0 A_ChangeFlag("NoRadiusDMG",1)
		TNT1 A 0 A_UnSetShootable
		TNT1 AAAA 0 A_CustomMissile("PhantomSmoke",random(10,30),0,random(0,360),2,random(10,80))
		PTMA AAAAAAAAAA 1 A_Fadeout(0.05)
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
		TNT1 A 0 A_CheckSight("TeleportHideIn")
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
		TNT1 A 0 A_CheckSight("TeleportHideIn")
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
		TNT1 A 0 A_CheckSight("TeleportHideIn")
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
		TNT1 A 0 A_CheckSight("TeleportHideIn")
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
		TNT1 A 0 A_CheckSight("TeleportHideIn")
		TNT1 AAAAAAAAAAAAAAA 0 A_Wander
	TeleportHideIn:
		TNT1 A 10
		TNT1 AAAA 0 A_CustomMissile("PhantomSmoke",random(10,30),0,random(0,360),2,random(10,80))
		PTMA AAAAAAAAAA 1 A_Fadein(0.05)
		TNT1 A 0 A_ChangeFlag("Invulnerable",0)
		TNT1 A 0 A_ChangeFlag("NonShootable",0)
		TNT1 A 0 A_ChangeFlag("Shootable",1)
		TNT1 A 0 A_ChangeFlag("NoTeleport",0)
		TNT1 A 0 A_ChangeFlag("NoRadiusDMG",0)
		TNT1 A 0 A_SetShootable
		PTMA AA 6 A_FaceTarget
		Goto Hide
	
	Death.Beartrap:
		TNT1 A 0 A_checkproximity("Death","beartrapTriggered",40,1)
		TNT1 A 0 a_spawnitem("beartrap",0,0)
	Death:
		TNT1 A 0 A_Jump(256,"Death1","Death2")
		
	Death.ChainCut:
Death.ChainSaw:
		TNT1 A 0 A_SpawnItemEx("ArmorGem", 0, 0, 20, random (-1, 1), random (-1, 1), 8)	
		TNT1 A 0 A_SpawnItemEx("ArmorGem", 0, 0, 20, random (-1, 1), random (-1, 1), 8)		
	Death1:
		PTMW I 6 A_Scream
		PTMW J 5
		TNT1 A 0 A_Fall
		PTMW K 5 A_SpawnItemEx("Shadowtorso", 0, 0, 0, 1, 0, 0, 0, 128)
		PTMW LMNO 5 A_CustomMissile("PhantomBlood",16,0,random(0,180),2,random(0,180))
		PTMW P -1
		Stop	
	Death2:
		PTMD A 6 A_Scream
		PTMD BC 5
		PTMD D 5 A_Fall
		PTMD EF 5
		PTMD G -1
		Stop
		
	Death.Railgun:
	Death.Blast:
	Death.SuperPunch:
	Death.ExtremePunches:
	Death.SSG:
	XDeath:
	death.RailgunBig:
		PTMX A 8
		PTMX B 6 A_XScream
		PTMX C 6
		PTMX D 6 A_Fall
 		PTMX EF 6
		PTMX G -1
		Stop
		
	Death.Acid:
	Death.Plasma: 
	Death.Plasma2:
	Death.SHOCK:
	PBR1 A 6 A_Scream
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("Ashes1", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("Ashes2", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAA 0 A_CustomMissile ("BluePlasmaFireNonStatic", 32, 0, random (0, 360), 2, random (0, 180))
	PBR1 B 6 A_NoBlocking
	PBR1 CDEFGH 6 A_CustomMissile ("Blood", 10, 0, random (0, 360), 2, random (0, 160))
	PBR1 HHHHHHHHHHHHHHHHHHHHHH 8 A_CustomMissile ("PlasmaSmoke", 10, 0, random (0, 360), 2, random (0, 160))
	PBR1 H -1
	Stop
	
	DEATH.FIRE:
	Burn:
		BURN A 3 Bright A_PlaySound("misc/burn", CHAN_AUTO)
		BURN B 3 Bright A_Scream
		BURN C 3 Bright A_PlaySound("misc/flame", CHAN_AUTO)
		BURN D 3 Bright A_NoBlocking
		BURN EFGHIJKLMNOP 3 Bright 
		TNT1 A 0 A_Scream
		BURN Q 3 Bright A_PlaySound("misc/bodyhit", CHAN_VOICE)
		BURN RSTU 3 Bright 		
		BURN V -1
		Stop
	
	Death.SuperPlasma:
        TNT1 A 0
        TNT1 A 0 A_XScream
        TNT1 A 0 A_NoBlocking
		XBRN AA 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
        TNT1 AAAA 0 A_CustomMissile ("Brutal_Blood", 30, 0, random (0, 360), 2, random (0, 160))

	    TNT1 A 0 A_CustomMissile ("XDeathBurnedArm", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedLeg", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedSkull", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat2", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat3", 32, 0, random (0, 360), 2, random (0, 160))

		XBRN BB 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
        TNT1 A 0 A_CustomMissile ("Brutal_Blood", 30, 0, random (0, 360), 2, random (0, 160))
		XBRN CC 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
		TNT1 AAAAA 0 A_CustomMissile ("PlasmaParticleX", 48, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAA 0 A_CustomMissile ("BigPlasmaParticleX", 42, 0, random (0, 360), 2, random (0, 360))
        TNT1 A 0
        Stop
	}
}

ACTOR Shadowtorso2 replaces Shadowtorso
{
	Radius 12
	Height 15
	Speed 1
	Mass 5000
	RenderStyle "Translucent"
	alpha 0.5
	+Doombounce
	States
	{
	Spawn:
		TNT1 A 0
		PTMW QRS 5 A_CustomMissile("PhantomBlood",16,0,random(0,180),2,random(0,180))
		PTMW T 5 A_Fall
		PTMW U 5
		PTMW V -1
		Stop
	}
}

ACTOR PhantomSmoke
{
	+NOBLOCKMAP
	+NOTELEPORT
	+DONTSPLASH
	+MISSILE
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	+NOGRAVITY
	+DOOMBOUNCE
	+THRUACTORS
	BounceFactor 0.5
	Radius 0
	Height 0
	Mass 0
	Alpha 0.4
	Scale 1.0
	Renderstyle Add
	Speed 1
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.9,1.2))//Random scale
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(-1 * scaleX,scaleY)//Random X-flip
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(scaleX,-1 * scaleY)//Random Y-flip
		TNT1 A 0
		Goto Death
	Death:
		SMK9 ABCDEFGHIJKLMNOPQR 1
		Stop
	}
}

ACTOR PhantomBlood: PhantomSmoke
{
	Alpha 0.2
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale(frandom(0.15,0.25))//Random scale
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(-1 * scaleX,scaleY)//Random X-flip
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_SetScale(scaleX,-1 * scaleY)//Random Y-flip
		TNT1 A 0 A_ChangeVelocity(VelX, VelY, VelZ*0.5*(frandom(-1,1)), CVF_REPLACE)
		Goto Death
	Death:
		SMK9 CEGIKMOQR 1
		Stop
	}
}

Actor PhantomTeleportCooldown : Inventory
{
Inventory.MaxAmount 10
}



//Will teleport into hiding when player is far away
//Will teleport away when low on health
//When low on health will try to hide
//If finds a corpse when low on health- eat it to gain health