ACTOR Vessel //You've heard of the Legendary Vessel, now get ready for....
{
//Creator: Fluffy
//Origin: Nexus Infinity
//Sprite: LMWZ
//Title: "Vessel"
obituary "%o was taken away by a Vessel."
health 2000
radius 20
height 56
Mass 1000
speed 8
PainChance 80
DropItem "HellionRegen" 255 1
DropItem "BossLifeEssence" 210
DropItem "BossArmorBonusMax" 210
DropItem "HellStaff" 128
DropItem "DustMana" 256 30
SEESOUND "Vessel/sight"
painsound "Vessel/pain"
deathsound "Vessel/death"
activesound "Vessel/active"
Species "Nobles"
missiletype VesselBall
Tag "\c[j7]Vessel\c-"
var int user_terror;
var int user_terrormode;
var int user_terrortoken;
MONSTER
+FLOORCLIP
+FLOORHUGGER
//+STEALTH
+LOOKALLAROUND
+NOFEAR
+DONTHURTSPECIES
+QUICKTORETALIATE
states
{
  Spawn:
	LMWZ E 20 A_Look
	LMWZ F 20 A_Look
	loop
  Idle:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	//TNT1 A 0 A_Changeflag(NODROPOFF,0)
  IdleLoop:
	LMWZ E 20 A_Look
	LMWZ F 20 A_Look
	loop
  UniversalFailSafe:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_Changeflag(FLOAT,0)
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	//TNT1 A 0 A_Changeflag(NODROPOFF,0)
  See:
	TNT1 A 0 A_JumpIf(user_terrormode == 1,"TerrorEnd")
	TNT1 A 0 A_Warp(AAPTR_DEFAULT,0,0,0,0,WARPF_TESTONLY,1)
	Goto ChaseFast
	LMWZ EEEFFF 3 A_VileChase
	TNT1 A 0 A_Jump(15,"chasefast")
	TNT1 A 0 A_Jump(80,"Teleport")
	goto see+1
  ChaseFast:
	TNT1 A 0 A_Changeflag(NOCLIP,1)
	//TNT1 A 0 A_Changeflag(NODROPOFF,1)
  ChaseFastBegin:
	LMWZ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 0 A_Chase("","",CHF_FASTCHASE)
	LMWZ E 1 A_Chase("Missile2","",CHF_FASTCHASE)
	Loop
  Teleport:
    LMWZ E 1 A_UnSetShootable
	LMWZ EEEEEEEEEE 1  A_FadeOut(0.1,0)
	LMWZ E 2 
	LMWZ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 0 A_Wander
	LMWZ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 0 A_Wander
    LMWZ E 1 A_PlayWeaponSound("Vessel/tele")
	LMWZ EEEEEEEEEE 1 A_FadeIn(0.1)
    LMWZ E 1 A_SetShootable
    Goto See
  Missile:
	TNT1 A 0 A_JumpIf(user_terrormode == 1,"TerrorEnd")
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	//TNT1 A 0 A_Changeflag(NODROPOFF,0)
	TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_JumpIf(user_terrortoken >= 1,2)
	TNT1 A 0 A_Jump(30,"TerrorBegin")
	TNT1 A 0 A_Jump(100,"HellstaffAttack","Summon")
  VesselBall:
	LMWZ E 35
	LMWZ EFG 5 BRIGHT A_FaceTarget
	LMWZ H 10 BRIGHT A_CustomMissile("VesselBall",65,0)
	LMWZ G 5
	goto See
  Summon:
	LMWZ EFGH 5
	TNT1 A 0 A_PlaySound("brain/spit")
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_Changeflag(NOPAIN,1)
	LMWZ HHHHHHHHHHHHHH 6 A_SpawnItemEx("Red2huBossDeathFlame",0,0,20,random(-3,3),random(-3,3),random(-3,3))
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("SummonerVessel",0,0,0,0,0,0,0,32,80)
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_Changeflag(NOPAIN,0)
	LMWZ HGFE 5
	Goto see
  HellstaffAttack:
	LMWZ E 35
	LMWZ EFG 5 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	Goto see
  Missile2:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_JumpIf(user_terrortoken >= 1,2)
	TNT1 A 0 A_Jump(30,"TerrorBegin")
	TNT1 A 0 A_Jump(100,"HellstaffAttack2")
	LMWZ E 35
	LMWZ EFG 5 BRIGHT A_FaceTarget
	LMWZ H 10 BRIGHT A_CustomMissile("VesselBall",65,0)
	LMWZ G 5
	goto UniversalFailSafe
  HellstaffAttack2:
	LMWZ E 35
	LMWZ EFG 5 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	LMWZ H 1 BRIGHT A_FaceTarget
	LMWZ H 5 BRIGHT A_CustomMissile("CBElemHellStaffBall1",65,0)
	Goto UniversalFailSafe
  TerrorBegin:
	TNT1 A 0 A_Changeflag(NOPAIN,1)
	TNT1 A 0 A_Changeflag(NOCLIP,1)
	//TNT1 A 0 A_Changeflag(NODROPOFF,1)
	TNT1 A 0 A_SetUserVar("user_terror",0)
	TNT1 A 0 A_PlayWeaponSound("Vessel/tele")
	LMWZ E 1 A_UnSetShootable
	LMWZ EEEEEEEEEE 1  A_FadeOut(0.1,0)
	LMWZ E 2
  TerrorSeek:
	TNT1 A 0 A_JumpIf(user_terror >= 100, "TerrorChase")
	TNT1 A 0 A_SetUserVar("user_terror", user_terror+1)
	LMWZ EEFFEEFF 1 A_Wander
	Loop
  TerrorChase:
	LMWZ EEFFEEFF 1 A_Chase("","")
	TNT1 A 0 A_JumpIfCloser(600,1)
	Goto TerrorChase
	TNT1 A 0 A_JumpIfTargetInLOS("TerrorAttack",40,JLOSF_TARGETLOS)
	Loop
  TerrorAttack:
	TNT1 A 0 A_SetUserVar("user_terror",0)
	TNT1 A 0 A_SetUserVar("user_terrormode",1)
	TNT1 A 0 A_Changeflag(FLOAT,1)
	LMWZ H 1 A_FaceTarget
	LMWZ HHHHHHHHHH 1 A_FadeIn(0.1)
	LMWZ H 1 A_FaceTarget
  TerrorAttackLoop:
	TNT1 A 0 A_PlaySound("Vessel/scream",7)
	TNT1 A 0 A_JumpIf(user_terror >= 40, "TerrorEnd")
	TNT1 A 0 A_SetUserVar("user_terror", user_terror+1)
	LMWZ H 1 A_SkullAttack(25)
	TNT1 A 0 A_JumpIfCloser(100,"TerrorHit")
	Goto TerrorAttackLoop+1
  TerrorHit:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_RadiusGive("VesselFuckery",120,RGF_PLAYERS|RGF_CORPSES)
	TNT1 A 0 A_VileAttack("NULL",random(100,135),0,120,2,"None")
  TerrorEnd:
	LMWZ HHHHHHHHHH 1  A_FadeOut(0.1,0)
	LMWZ E 2
	LMWZ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_Wander
	LMWZ EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_Wander
	TNT1 A 0 A_SetUserVar("user_terrormode",0)
	TNT1 A 0 A_SetUserVar("user_terrortoken",1)
	LMWZ E 1 A_PlayWeaponSound("Vessel/tele")
	LMWZ EEEEEEEEEE 1 A_FadeIn(0.1)
    LMWZ E 1 A_SetShootable
	TNT1 A 0 A_Changeflag(NOPAIN,0)
    Goto UniversalFailSafe
  Heal:
    TNT1 A 0 A_Jump(96,"HealClones")
    LMWZ E 1
    Goto See
  HealClones:
    LMWZ EEEEE 3 A_SpawnItemEx("VesselHealClone",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    Goto See
  Pain:
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	//TNT1 A 0 A_Changeflag(NODROPOFF,0)
	TNT1 A 0 A_Changeflag(FLOAT,0)
	LMWZ I 3
	LMWZ I 5 A_Pain
	TNT1 A 0 A_Jump(35,"Teleport")
	Goto See
  Death:
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	//TNT1 A 0 A_Changeflag(NODROPOFF,0)
	TNT1 A 0 A_Changeflag(FLOAT,0)
	LMWZ J 6 A_Scream
	TNT1 A 0 A_SpawnItemEx("GibbedGenerator",0,0,4)
	LMWZ K 6 A_NoBlocking
	TNT1 A 0 A_SpawnItemEx("GibbedGenerator",0,0,4)
	LMWZ LMNO 6
	LMWZ P -1
	Stop
  }
}

actor VesselBall
{
  spawnid 177
  radius 6
  height 8
  speed 27
  damage 15
  renderstyle Add
  seesound "baron/attack"
  deathsound "eltimp/explode"
  PROJECTILE
  +NOGRAVITY
  +RANDOMIZE
  Decal BaronScorch
  states
  {
  Spawn:
    LMBW AB 4 bright
    loop
  Death:
    LMBW CDE 6 bright
    stop
  }
}

Actor VesselHealClone
{
Health 20
Radius 20
Height 80
Speed 28
Mass 1000
PainChance 4
DamageFactor "Legendary", 0.0
DamageFactor "LegendaryPlayer", 0.0
MONSTER 
RenderStyle Add
Alpha 0.8
+NOTIMEFREEZE
+FLOORCLIP
+QUICKTORETALIATE
+NOICEDEATH
+NODROPOFF
+DONTGIB
+NOTARGET
+NORADIUSDMG
+NOFEAR
+NOCLIP
+LOOKALLAROUND
var int user_timer;
States
{
  Spawn:
    TNT1 A 0 A_JumpIf(user_timer >= 70,"Death")
	TNT1 A 0 A_SetUserVar(user_timer,user_timer+1)
    LMWZ E 2 A_VileChase
	Loop
  Heal:
    LMWZ E 1
	Goto Spawn
  Death:
    LMWZ EEEEEEEE 1 A_FadeOut(0.1)
	Stop
	}
}

Actor VesselFuckery : CustomInventory
{  
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE
inventory.amount 1
inventory.maxamount 0
States
	{
	Pickup:
		TNT1 A 25 A_SetBlend("Black",1.0,80)
		TNT1 A 10
		//TNT1 A 0 A_PlaySound("BFlan/Slash",7,1.0,0,0.5)
		//TNT1 A 0 Thing_Damage(0,random(100,135),0)
		TNT1 A 1
		Stop
	}
}

ACTOR SummonerVessel
{
Radius 24
Height 8
Speed 17
Monster
-SHOOTABLE
-COUNTKILL
-SOLID
var int user_limit;
States
{
   Spawn:
    TNT1 A 0
	TNT1 A 0 A_SetAngle(random(0,359))
	TNT1 A 1 A_Recoil(-40)
	TNT1 A 0 A_JumpIf(user_limit > 3,"Death")
	TNT1 A 0 A_SetUserVar("user_limit",user_limit+1)
	TNT1 A 1 A_Recoil(-4)
	TNT1 A 2 A_Jump(48,"Death")
    Goto Spawn+3
   Death:
    TNT1 A 0 A_Jump(40,"Ghorul")
    TNT1 A 5 A_SpawnItemEx("VesselGhoul")
	TNT1 A 1 A_Fall
	Stop
   Ghorul:
    TNT1 A 5 A_SpawnItemEx("VesselGhorul")
	TNT1 A 1 A_Fall
	Stop
	}
}

Actor VesselGhoul : HEMGhoul
{
Tag "\c[m9]Ghoul\c-"
-COUNTKILL
+DONTHARMSPECIES
+DONTHURTSPECIES
Dropitem ""
Species "Nobles"
States
 {
   Spawn:
	 TNT1 A 0 A_GiveInventory("GHOULS",1)
	 TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
     GHOL NMLKJIH 3
   Spawn.Real:
   Idle:
	 GHOL A 10 A_Look
	 Loop
  }
}

Actor VesselGhorul : Ghorul
{
Tag "\c[m9]Ghorul\c-"
-COUNTKILL
+DONTHARMSPECIES
+DONTHURTSPECIES
Dropitem ""
Species "Nobles"
States
 {
   Spawn:
	 TNT1 A 0 A_GiveInventory("GHOUL",1)
	 TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	 KAKJ NMLKJIH 3
   Spawn.Real:
   Idle:
	 KAKJ A 1
	 KAKJ A 1 A_Look
	 Loop
  }
}
