actor DragonPrince 27044
{
	Obituary "%o stood no chance against the Demi-God Burai."
	Scale 1.33
	Health 9500
	PainChance 0
	Speed 9
	Radius 20
	Height 90
	Mass 0x7fffffff
	Damage 0
	SeeSound "archwizard/see"
	DeathSound "archwizard/die"
	ActiveSound "archwizard/act"
	PainSound "archwizard/pain"
	Bloodcolor "Purple"
	MeleeRange 72
	MinMissileChance 64
	DropItem "AccessoryRandomSpawner" 16
	DamageFactor "Deathblow", 0
	var int user_tele;
	var int user_deathfx;
	const int aw_tele = 24;
	const int aw_death_count = 13;
	Bloodtype "EtherealBloodPurple"
	MONSTER
	+NoBloodDecals
	+MISSILEMORE
	+QUICKTORETALIATE
	-NORADIUSDMG
	+NOICEDEATH
	+BOSSDEATH
	+BOSS
	+NODAMAGETHRUST
	+DONTHARMSPECIES
	+NOTARGET
	+DONTMORPH
	+NOPAIN
	Tag "Burai the Dragon Prince"
	Species "Cyberdemon"
	States
	{
	Spawn:
		BRAI A 0
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(WOC_MONSTERSCRIPT, 0, 9500, 110, WOC_STAT|WOC_BOSS|WOC_MAXLEVEL)
	Idle:
		BRAI A 10 A_Look
		Loop
	StandStill:
		BRAI AAAA 4 A_Chase
		TNT1 A 0 A_Jump(128, "Idle")
	See:
		BRAI AAABBBCCCDDD 2 A_Chase
		BRAI A 0 A_Jump (32, "Teleport")
		Loop
	Pain:
		TNT1 A 0 A_JumpIfInventory("ArchWizardShieldCooldown", 1, "CD")
		TNT1 A 0 A_Jump(128, "Shield")
	CD:
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 1)
		BRAI A 4 A_Pain
		Goto See
	Shield:
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 1)
		TNT1 A 0 A_JumpIfInventory("ArchWizardShielded", 1, "Skip")
		TNT1 A 0 A_PlaySound("archwizard/shield")
		BRAI C 7 Bright
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 0)
		TNT1 A 0 A_SpawnItemEx("ArchWizardBlastFX", 16, 0, 48)
		TNT1 A 0 A_GiveInventory("ArchWizardShielded", 1)
		BRAI DD 4 A_FaceTarget
		Goto See
	Skip:
		BRAI A 1
		Goto See
	Teleport:
		BRAI A 0 A_UnSetshootable
		BRAI A 0 A_FaceTarget
		BRAI A 1 A_PlaySound("misc/teleport")
		BRAI A 1 A_Stop
		BRAI A 1 A_SetTranslucent(0.90)
		BRAI A 1 A_SetTranslucent(0.80)
		BRAI A 1 A_SetTranslucent(0.70)
		BRAI A 1 A_SetTranslucent(0.60)
		BRAI A 1 A_SetTranslucent(0.50)
		BRAI A 1 A_SetTranslucent(0.40)
		BRAI A 1 A_SetTranslucent(0.30)
		BRAI A 1 A_SetTranslucent(0.20)
		BRAI A 1 A_SetTranslucent(0.10)
		TNT1 A 0 A_SetUserVar("user_tele", 0)
	TeleportLoop:
		TNT1 A 0 A_JumpIf(user_tele == aw_tele, "TeleportEnd")
		TNT1 AA 0 A_Wander
		TNT1 A 2 A_Wander
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 8)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 20)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 32)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 44)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 56)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 68)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 40, 80)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 38, 92)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 34, 96)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 28, 100)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 22, 104)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 16, 108)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 12, 110)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, 0, 110)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 8)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 20)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 32)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 44)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 56)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 68)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -40, 80)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -38, 92)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -34, 96)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -28, 100)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -22, 104)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -16, 108)
		TNT1 A 0 A_SpawnItemEx("ArchWizardTeleportFX", 32, -12, 110)
		TNT1 A 0 A_SetUserVar("user_tele", user_tele + 1)
		Loop
	TeleportEnd:
		BRAI A 1 A_PlaySound("misc/teleport")
		BRAI A 1 A_SetTranslucent(0.10)
		BRAI A 1 A_SetTranslucent(0.20)
		BRAI A 1 A_SetTranslucent(0.30)
		BRAI A 1 A_SetTranslucent(0.40)
		BRAI A 1 A_SetTranslucent(0.50)
		BRAI A 1 A_SetTranslucent(0.60)
		BRAI A 1 A_SetTranslucent(0.70)
		BRAI A 1 A_SetTranslucent(0.80)
		BRAI A 1 A_SetTranslucent(0.90)
		BRAI A 1 A_SetTranslucent(1.0)
		BRAI A 0 A_SetShootable
		BRAI A 0 A_FaceTarget
		BRAI A 1 A_Stop
		Goto See
	Melee:
	Missile:
		TNT1 A 0 A_Jump (224, "Fire1", "Fire2", "Fire3", "Fire4")
	Goto TeleportDecide
	Fire1:
		BRAI DDDD 4 A_FaceTarget
		BRAJ C 8 Bright A_CustomMissile ("PillarOfFlameMeteor", 48, 0, 0, 0)
		BRAJ D 4 A_FaceTarget
		BRAJ C 8 Bright A_CustomMissile ("PillarOfFlameMeteor", 48, 0, 0, 4)
		BRAJ D 4 A_FaceTarget
		BRAJ C 8 Bright A_CustomMissile ("PillarOfFlameMeteor", 48, 0, 0, -4)
		BRAJ D 4 A_FaceTarget
		TNT1 A 0 A_Jump(128, "More")
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 0)
		Goto See
	More:
		BRAJ C 8 Bright A_CustomMissile ("PillarOfFlameMeteor", 48, 0, 0, 0)
		BRAJ D 4 A_FaceTarget
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 0)
		Goto See
	Fire2:
		TNT1 A 0 A_JumpIfCloser(320, "ContinueSteal")
	Goto Offense
	ContinueSteal:
		BRAJ DD 4 A_FaceTarget
		TNT1 A 0 A_PlaySound("archwizard/steal")
		TNT1 A 0 A_SpawnItemEx("SorcSpark1", 0, 0, 80, 0, 0, 2, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		BRAJ CC 2 Bright A_SpawnItemEx("SorcSpark1", 0, 0, 80, 0, 0, 2, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("SorcSpark1", 0, 0, 80, 0, 0, 2, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		BRAJ D 2 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("SorcSpark1", 0, 0, 80, 0, 0, 2, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		BRAJ D 2 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("SorcSpark1", 0, 0, 80, 0, 0, 2, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		BRAJ D 2 A_FaceTarget
	Offense:
		TNT1 A 0 A_Jump(256, "Fire1", "Fire3", "Fire4")
		Goto Fire1
	Fire3:
		BRAJ DDDD 4 A_FaceTarget
		BRAJ C 8 Bright
		BRAJ C 0 A_CustomMissile ("BlizzardMark", 48, 0, 0, 0)
		BRAJ D 4 A_FaceTarget
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 0)
		Goto See
	Fire4:
		BRAJ DDDD 4 A_FaceTarget
		BRAJ C 8 Bright
		BRAJ C 9 Bright A_CustomMissile("LightningSurgeMissile", 0, 0)
		BRAJ D 4 A_FaceTarget
		TNT1 A 0 //A_ChangeFlag("NOPAIN" 0)
		Goto See
	TeleportDecide:
		TNT1 A 0 A_JumpIfInventory("ArchWizardShielded", 1, "Offense")
		Goto Teleport
	Death: 
		TNT1 A 0 ACS_ExecuteAlways(WOC_MONSTERXPSCRIPT, 0, 3000)
		SORC H 0 A_CustomMissile("SorcBall1Projectile", 100, 0, 0 + random(-30, 30), CMF_AIMDIRECTION)
		SORC H 0 A_CustomMissile("SorcBall2Projectile", 100, 0, 120 + random(-30, 30), CMF_AIMDIRECTION)
		SORC H 0 A_CustomMissile("SorcBall3Projectile", 100, 0, 240 + random(-30, 30), CMF_AIMDIRECTION)
		TNT1 A 0 A_GiveInventory("RemoveOrbs", 1)
	DeathLoop:
		TNT1 A 0 A_JumpIf(user_deathfx > aw_death_count, "DeathCont")
		BRAI E 1 A_SpawnItemEx ("KaZap", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
		BRAI E 1 A_SpawnItemEx ("KaBoom", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
		BRAI E 1 A_SpawnItemEx ("KaGas", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
		TNT1 A 0 A_SetUserVar("user_deathfx", user_deathfx + 1)
		Loop
	DeathCont:
		BRAI E 4 A_SpawnItem ("ArchWSkeleton")
		BRAI F 4 A_Scream
		BRAI G 4
		BRAI H 4 A_NoBlocking
		BRAI IJ 4
		BRAI K -1 A_BossDeath
		Stop
	}
}

Actor ArchWizardShielded : MON_Boolean { }
Actor RemoveOrbs : MON_Boolean { }

Actor ArchWizardShielder : MON_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SetReflectiveInvulnerable
		Stop
	}
}

Actor ArchWizardStealFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Translation "0:255=%[0.00,0.00,0.00]:[1.39,0.77,1.65]"
	Renderstyle Add
	Alpha 0
	States {
		Spawn:
			SPFX AAAAA 1 Bright A_FadeIn(0.2)
			SPFX AAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
		Stop
	}
}

Actor ArchWizardStealFXSpawner : MON_Activator {
	States {
		Pickup:
			TNT1 A 0 A_PlaySound("archwizard/stealfx")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ArchWizardStealFX", random(-32, 32), random(-32, 32), random(0, 8), 0, 0, random(2,8), 0, 129, 0) 
		Stop
	}
}

Actor ArchWizardUnShielder : MON_Activator {
	States {
		Pickup:
			TNT1 A 0 A_UnSetReflectiveInvulnerable
		Stop
	}
}

ACTOR ArchWSkeleton
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    SKLD A 32
    SKLD BCDEFGH 3
    SKLD I -1
    stop
  }
}

Actor ArchWizardExp1 : BaseExplosionDamage {
	DamageType "ArcaneArchWizard"
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode (32 + ACS_ExecuteWithResult(WOC_MONSTERSCALE, 7, TARGET, 0), 128, 0)
		Stop
	}
}

ACTOR ArchWHomingBall : MageStaffFX2
{
  Speed 16
  SeeSound "MageStaffFire"
  DeathSound "MageStaffExplode"
  DamageType "ArcaneArchWizard"
  Damage (random(15, 30) + ACS_ExecuteWithResult(WOC_MONSTERSCALE, 5, TARGET, 0))
  +NODAMAGETHRUST
  States
  {
  Spawn:
    BSBS A 0 Bright Light(DISCIPLEBALL)
    BSBS A 0 Bright Light(DISCIPLEBALL) A_PlaySoundEx ("archwizard/ballfly", "SoundSlot6", 1) 
    BSBS A 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
    BSBS A 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
    BSBS B 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
    BSBS B 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
    BSBS C 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
    BSBS C 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
    BSBS D 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
    BSBS D 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
    Loop
  Death:
    BSBS E 0 Bright Light(DISCIPLEBALL) A_StopSoundEx ("SoundSlot6")
    BSBS E 0 Bright Light(DISCIPLEBALL) A_SetTranslucent (1, 1) 
    BSBS E 3 Bright Light(DISCIPLEBALL) A_SpawnItem("ArchWizardExp1")
    BSBS FGHIJKLM 3 Bright
    Stop
  }
}

ACTOR ArchWFX1 : WizardFX1
{
  speed 25
  damage (random(26, 46) + ACS_ExecuteWithResult(WOC_MONSTERSCALE, 8, TARGET, 0))
  DamageType "Arcane"
  seesound "CentaurLeaderAttack"
  +NODAMAGETHRUST
}

actor ArchWSpark
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  RenderStyle Add
  States
  {
  Spawn:
    FX11 G 1 Bright Light(DISCIPLEBALL_X2) A_FadeOut (0.1)
    loop
  }
}

Actor ArchWizardBlastFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	States {
		Spawn:
			AWF9 ABCDEFG 2
			AWF9 HIJKL 2
			AWF9 MNOP 2
		Stop
	}
}

Actor ArchWizardOrbiterTrail {
	Renderstyle Add
	Alpha 0.75
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 2
			SBS2 ABCDEFGHIJKLMNOP 1 Bright A_FadeOut(0.075)
		Stop
	}
}

Actor ArchWizardOrbiter {
	Mass 1
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOCLIP
	+NOGRAVITY
	Renderstyle Translucent
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 ACS_ExecuteAlways(950, 0, 0, 48)
		SpawnLoop:
			SBS2 A 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 B 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 C 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 D 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 E 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 F 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 G 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 H 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 I 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 J 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 K 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 L 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 M 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 N 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 O 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 P 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
		Loop
		Death:
			SBS2 "#####################" 1 A_FadeOut(0.05)
		Stop
	}
}

Actor ArchWizardOrbiterCC : ArchWizardOrbiter { 
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 ACS_ExecuteAlways(950, 0, 1, 48)
		SpawnLoop:
			SBS2 A 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 B 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 C 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 D 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 E 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 F 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 G 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 H 2 Bright A_FadeOut(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 I 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 J 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 K 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 L 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 M 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 N 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 O 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
			SBS2 P 2 Bright A_FadeIn(0.05)
			TNT1 A 0 A_SpawnItem("ArchWizardOrbiterTrail")
		Loop
	}
}

Actor ArchWizardShieldCooldown : MON_Boolean { }

Actor ArchWizardTeleportFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Height 1
	Radius 1
	States {
		Spawn:
			AWF0 HHIIHHIIJJKK 1 Bright A_FadeOut(0.05)
			AWF0 L 2 Bright
		Stop
	}
}
Actor MoonSatyrMeteorMarker {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.8
	Scale 1.15
	States {
		Spawn:
			CJFX ABCDEFGHIJK 3
		Stop
	}
}
ACTOR BuraiContract : PuzzleItem 1040
{
  Game Hexen
  PuzzleItem.Number 104
  Inventory.Icon ARTIGMB2
  Inventory.PickupMessage "Contract with Burai"
  States
  {
  Spawn:
    SPMP A -1
    Stop
  }
}
