Actor Marauder
{
//Creator: Dr. Sticky
//Origin: Complex Doom Invasion
//Sprite: MARD
//Title: "Marauder"
Monster
Health 10000
Radius 20
Height 56
Mass 1000
Speed 14
FastSpeed 21
PainChance 12
MaxStepHeight 32
MaxDropOffHeight 32
SeeSound "Marauder/See"
PainSound "Marauder/Pain"
DeathSound "Marauder/Death"
ActiveSound "Marauder/Idle"
Species "SpecOps"
DamageFactor "Hell", 0.0
DamageFactor "Legendary", 0.5
DamageFactor "BFGSplash", 0.25
DamageFactor "PDTBFG", 0.2
DamageFactor "PDTBFGTracer", 0.2
DamageFactor "MechStep", 0.0
DamageFactor "Pierce", 0.25
DamageFactor "MarinePierce", 0.25
DamageFactor "Kaboom", 0.2
DamageFactor "MarineKaboom", 0.2
DamageFactor "Legendary", 0.2
DamageFactor "BFGSplash", 0.25
DamageFactor "PDTBFG", 0.05
DamageFactor "PDTBFGTracer", 0.05
DamageFactor "PlayerDevBall", 0.15
DamageFactor "PlayerDevTracer", 0.15
DamageFactor 0.45
DropItem "LegendaryRune" 30 1
DropItem "LegendaryRune" 35 1
DropItem "HellfireUltrasphere" 60 1
DropItem "DemonicChalice", 90, 1
DropItem "SkullOfPower", 90, 1
DropItem "ArmorSphere", 96 1
DropItem "BossLifeEssence" 200 25
DropItem "BossArmorBonusMax" 200 1
DropItem "ExplosiveSSG" 40 1
DropItem "NewCell" 256 20
DropItem "NewCellPack" 250
DropItem "BFG10K " 200
DropItem "Railgun " 184 1
Obituary "The Marauder proved that %o was nothing but an usurper."
Tag "\c[W8]Marauder\c-"
+BOSS
+BOSSDEATH
+NOFEAR
+MISSILEMORE
+MISSILEEVENMORE
+DONTRIP
+NOTIMEFREEZE
+FLOORCLIP
+QUICKTORETALIATE
+NORADIUSDMG
+DONTHARMSPECIES
+DROPOFF
var int user_music;
var int user_delay;
var int user_missile;
States
{
  Spawn:
    TNT1 A 0 A_JumpIfTargetInLOS("StrafingShield")
	MARD A 3 A_Look
	Loop
  See:
    TNT1 A 0 A_JumpIf(user_music == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,2116)
	TNT1 A 0 A_SetUserVar("user_music",1)
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
    MARD AABB 1 A_Chase
    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
    MARD CCDD 1 A_Chase
    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Jump(48,"SeeShield")
	Loop
  SeeShield:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_JumpIfTargetInLOS("StrafingShield")
    MARS AABB 1 A_Chase
    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
    MARS CCDD 1 A_Chase
    TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Jump(48,"See")
	Loop
  Strafing:
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	MARD AABB 3 A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	MARD CCDD 3 A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_Jump(48,"SeeShield")
	Goto See
  StrafingShield:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	MARS AABB 3 A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
	TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
	MARS CCDD 3 A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_Jump(48,"See")
	Goto SeeShield
  Missile:
	TNT1 A 0 
	TNT1 A 0 A_Jump(29,"ChargedAttack")
	TNT1 A 0 A_Jump(64,2)
	TNT1 A 0 A_JumpIfCloser(300,"ExplosiveSSG")
	TNT1 A 0 A_Jump(32,"Apparition")
	TNT1 A 0 A_Jump(100,"ExplosiveSSG","ChargedAttack")
  Normal:
	TNT1 A 0
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 0 A_SetUserVar("user_missile",0)
  NormalGo:
	MARD AAUU 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	MARD W 3 Fast Bright A_GiveInventory("MarauderAttack",1)
	TNT1 A 0 A_CPosRefire
	TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
	TNT1 A 0 A_JumpIf(user_missile >= 6,"NormalEnd")
	TNT1 A 0 A_JumpIf(user_missile >= 3,1)
	Loop
	TNT1 A 0 A_Jump(128,"ChargedAttack","ExplosiveSSG","Dodge","Dodge")
	Loop
  NormalEnd:
	TNT1 A 0 A_Jump(224,"ChargedAttack","ExplosiveSSG","Dodge","Dodge")
	Goto See
  ExplosiveSSG:
	TNT1 A 0 A_JumpIfCloser(550,1)
	Goto Missile
	MARD AAEEE 3 Fast A_GiveInventory("SpecOpsStrafing",1)
    TNT1 A 0 A_PlayWeaponSound("ExpSSG/Fire")
    TNT1 AAAAAAAA 0 A_CustomMissile("HitlerExplosiveTracer",random(36,39),0,random(8,-8),CMF_OFFSETPITCH,random(-2,2))
    TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
	MARD F 5 Fast Bright A_CustomBulletAttack(13.8,9.6,10,random(2,4)*6,"HellBulletPuff")
	MARD EEEE 3 Fast A_GiveInventory("SpecOpsStrafing",1)
    TNT1 AA 0 A_SpawnItemEx("OrangeShellCasing",12,6,30,random(2,6),0,random(1,3),random(-80,-90),128)
	MARD EEEE 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_CPosRefire
	TNT1 A 0 A_Jump(144,"ExplosiveSSG","Missile","Dodge","Dodge")
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  ChargedAttack:
	MARD UU 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_PlayWeaponSound("Marauder/Eyes")
	TNT1 A 0 A_SetUserVar("user_missile",0)
	MARD ZZZZZZ 3 Fast Bright A_GiveInventory("MarauderEyes",1)
	TNT1 A 0 A_JumpIfCloser(700,1)
	Goto ChargedAttackGo
  ChargedAttackFly:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_Stop
	TNT1 A 0 ThrustThingZ(0,40,0,1)
	TNT1 A 0 A_PlayWeaponSound("Marauder/Attack")
	MARD WWWWWWWWWWWWWWWWWWWW 1 Fast Bright A_GiveInventory("MarauderJump",1)
  ChargedAttackFlyCheck:
	TNT1 A 0 A_JumpIf(user_delay >= 105,"ChargedAttackLand")
	TNT1 A 0 A_SetUserVar("user_delay",user_delay+1)
	TNT1 A 0 A_Explode(3,256)
	TNT1 A 0 A_SpawnItemEx("MarauderGhost")
	MARD Z 1 Fast Bright A_CheckFloor("ChargedAttackLand")
	Loop
  ChargedAttackLand:
	TNT1 A 0 A_CustomMissile("MarauderBomb",32,0,0,CMF_AIMDIRECTION)
	TNT1 A 0 Radius_Quake(175,8,512,1024,0)
	MARD Z 1 Fast Bright A_SpawnItemEx("GreenBossExplosionEffect")
	TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
	TNT1 A 0 A_JumpIf(user_missile >= 3,2)
	TNT1 A 0 A_Jump(155,"ChargedAttackFly")
	TNT1 A 0 A_Jump(192,"Normal","Dodge","Dodge")
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  ChargedAttackGo:
	MARD ZZZZZZ 3 Fast Bright A_GiveInventory("MarauderEyes",1)
	TNT1 A 0 A_CustomMissile("DEradicationBFGProjectile",60,32,0)
	MARD WWWWWWWWWWWWWWWW 3 Fast Bright A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_CPosRefire
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  Apparition:
	TNT1 A 0 A_Jump(128,"ApparitionSeeker")
	MARD AAAA 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_PlayWeaponSound("Marauder/Dog")
	MARD UUUUUUUUUUUUUUUUUUUUUU 3 Fast Bright A_GiveInventory("LegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,-100,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,100,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,-60,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,60,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,-20,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_CustomMissile("FLegendaryApparition",0,20,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_UnSetInvulnerable
	MARD WWWWW 3 Fast Bright A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  ApparitionSeeker:
	MARD AAAA 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	MARD AAAA 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_PlayWeaponSound("Marauder/Dog")
	MARD UUUUUUUUUUUUUUUUUUUUUU 3 Fast Bright A_GiveInventory("LegZombieStrafing",1)
	TNT1 A 0 A_CustomMissile("LegendaryApparitionSeeker",0,0,0)
	TNT1 A 0 A_UnSetInvulnerable
	MARD WWWWW 3 Fast Bright A_GiveInventory("SpecOpsStrafing",1)
	MARD UUUUU 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_CustomMissile("LegendaryApparitionSeeker",0,0,0)
	MARD WWWWW 3 Fast Bright A_GiveInventory("SpecOpsStrafing",1)
	MARD UUUUU 3 Fast A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_CustomMissile("LegendaryApparitionSeeker",0,0,0)
	MARD WWWWW 3 Fast Bright A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  Dodge:
	MARD A 15 Fast A_GiveInventory("MarauderDodge",1)
	TNT1 A 0 A_Jump(192,"Normal","Dodge")
	TNT1 A 0 A_Jump(96,"SeeShield")
	Goto See
  Pain:
    MARD G 2
    MARD G 2 A_Pain
	TNT1 A 0 A_Jump(192,"Missile")
	TNT1 A 0 A_Jump(96,"SeeShield")
    Goto See
  Death:
	MARD G 11 A_ScreamAndUnblock
	MARD H 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	MARD HHHIII 4
	MARD J 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	MARD K 6 A_SpawnItem("BodyCrash",0,0,0,0)
	MARD LM 6
	MARD N -1
	Stop
}
}

Actor MarauderAttack : CustomInventory
{
Inventory.PickupMessage ""
Inventory.PickupSound ""
-COUNTITEM
+INVENTORY.AUTOACTIVATE
States
{
  Pickup:
	TNT1 A 1 A_FaceTarget
	TNT1 A 1 A_PlayWeaponSound("Marauder/Attack")
	TNT1 A 1 A_GiveInventory("SpecOpsStrafing",1)
	TNT1 A 1 A_Jump(256,1,2,3,4)
	Stop
	TNT1 A 1 A_GiveInventory("MarauderAttack1",1)
	Stop
	TNT1 A 1 A_GiveInventory("MarauderAttack2",1)
	Stop
	TNT1 A 1 A_GiveInventory("MarauderAttack3",1)
	Stop
	TNT1 A 1 A_GiveInventory("MarauderAttack4",1)
	Stop
}
}

Actor MarauderAttack1 : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_CustomMissile("DKDart",32,20,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,-20,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,-10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,0,0,CMF_AIMOFFSET)
	Stop
}
}

Actor MarauderAttack2 : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_CustomMissile("DKDart",52,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",42,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",22,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",12,0,0,CMF_AIMOFFSET)
	Stop
}
}

Actor MarauderAttack3 : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_CustomMissile("DKDart",52,20,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",42,10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",22,-10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",12,-20,0,CMF_AIMOFFSET)
	Stop
}
}

Actor MarauderAttack4 : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_CustomMissile("DKDart",52,-20,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",42,-10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",32,0,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",22,10,0,CMF_AIMOFFSET)
	TNT1 A 1 A_CustomMissile("DKDart",12,20,0,CMF_AIMOFFSET)
	Stop
}
}

Actor MarauderDodge : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_FaceTarget
	TNT1 A 1 A_Jump(128,2)
	TNT1 A 1 A_GiveInventory("AIJumping",1)
	TNT1 A 1 A_Jump(256,1,3,5,7)
	Stop
	TNT1 A 1 ThrustThing(angle*256/360+192,15,0,0)
	TNT1 A 1 A_Recoil(15)
	Stop
	TNT1 A 1 ThrustThing(angle*256/360+192,15,0,0)
	TNT1 A 1 A_Recoil(-15)
	Stop
	TNT1 A 1 ThrustThing(angle*256/360+64,15,0,0)
	TNT1 A 1 A_Recoil(15)
	Stop
	TNT1 A 1 ThrustThing(angle*256/360+64,15,0,0)
	TNT1 A 1 A_Recoil(-15)
	Stop
}
}

Actor MarauderEyes : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_SpawnItemEx("MarauderCirclePadEffect")
	TNT1 A 1 A_GiveInventory("SpecOpsStrafing",1)
	Stop
}
}

Actor MarauderJump : MarauderAttack
{
States
{
  Pickup:
	TNT1 A 1 A_Recoil(-2)
	TNT1 A 1 A_SpawnItemEx("MarauderGhost")
	Stop
}
}


Actor MarauderGhost : LFGhost 
{
Scale 1.0
Alpha 0.75
States
{
  Spawn:
    TNT1 A 0
  Fly:
	MARD Z 2 A_FadeOut(0.18)
    Loop
}
}

Actor MarauderBomb
{
Projectile
Speed 0
Damage 0
+NOCLIP
DamageType "Hell"
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_Explode(192,512)
    Stop
}
}

Actor LegendaryApparitionSeeker
{
Projectile
Radius 16
Height 16
Speed 40
Damage 50
Damagetype "FiendFire"
RenderStyle Add
Scale 1.1
Alpha 0.7
SeeSound "LegFiend/Sight"
DeathSound "LegFiend/Melee"
+FLOORHUGGER
+NOTIMEFREEZE
+SEEKERMISSILE
States
{
  Spawn:
	TNT1 A 0
	LARP AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
  Fly:
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
    LARP AABB 2 Bright A_SeekerMissile(30,30)
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
    TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
    LARP CCDD 2 Bright A_SeekerMissile(30,30)
    Loop
  Death:
	LARP EEEFFFGGGG 2 A_FadeOut(0.1)
    Stop
}
}

Actor FLegendaryApparition : LegendaryApparitionSeeker
{
Damage 55
+HEXENBOUNCE
-SEEKERMISSILE
BounceFactor 1.5
BounceCount 3
States
{
  Spawn:
	TNT1 A 0
	LARP AAAA 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
  Fly:
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
    LARP AABB 2 Bright
	TNT1 A 0 A_SpawnItem("LHellionSmokeSpawner",0,0,0,0)
    TNT1 A 0 A_SpawnItem("HeavyFleshStep",0,0,0,0)
    LARP CCDD 2 Bright
    Loop
}
}

Actor MarauderCirclePadEffect : GreenCirclePadEffect
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetUserVar("user_radius",24)
	TNT1 A 0 A_SetUserVar("user_speed",8)
    Goto Effect
}            
}

Actor DEradicationBFGProjectile : EradicationBFGProjectile
{
Damage 150
-FOILINVUL
-MTHRUSPECIES
DamageType "Hell"
States
{
  Spawn:
	TNT1 A 1 A_Explode(32,256,0,0,32) 
	Loop
  Death:
	RB4L AAAAAA 1 Bright A_SetScale(ScaleX+0.1,ScaleY+0.1)
	RB4L AAAAAA 1 Bright A_SetScale(ScaleX-0.15,ScaleY-0.15)
	TNT1 A 0 Radius_Quake(8,28,0,10,0)
	TNT1 A 0 A_Explode(96,512)
	TNT1 A 0 A_Explode(192,384,0)
	TNT1 A 0 A_Explode(784,256,0)
    TNT1 A 0 A_SpawnItemEx("EradicationBFGProjectileExplosion",0,0,0)
    TNT1 AAAAAA 0 A_SpawnItemEx("EradicationBFGProjectilSmoke",0,0,0,frandom(-6,6),frandom(-6,6),frandom(-6,6))
	TNT1 AAAAAAAAA 1 A_SpawnItemEx("RedHugeExplosionKaboom",0,0,0,frandom(-12,12),frandom(-12,12),frandom(-12,12))
	TNT1 A 50
	Stop
}
}