//Level 6 armor: 0% > 20%
actor Alien : SemiHighArmorClass
{
Player.ScoreIcon "ALIEMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "IsFromMM2"
player.soundclass "alienc"
Player.ViewHeight 63
player.forwardmove 0.75, 0.75
player.sidemove 0.73, 0.73
player.jumpz 14
player.displayname "Alien"
player.startitem "AlienTechnologyBoss"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "UltimateAttackItem3", 1
player.startitem "UltSoundWatcherSpawn3"
States
{
Spawn:
ALIE A 0
ALIE B 1
ALIE A 1
Goto Spawn+2

See:
ALIE BCDE 5
goto Spawn+1

Missile:
ALIE FFFFFGGGG 1
goto Spawn+1

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
ALIE AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
//ALIE H 0 A_TakeInventory("TimeStoppedFlag",999)
ALIE HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
WeaponGetM:
ClassDeath:
TNT1 A 0 A_SpawnItemEx("HologramDevice",0,0,40,0,0,1)
TNT1 A 0 A_SpawnItemEx("DeadAlien",0,0,0,0,0,2,0,SXF_TRANSFERTRANSLATION)
ALIE Z 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait

ClassIceDeath:
ALIE A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
}
}

actor DeadAlien
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
-NOEXPLODEFLOOR
+NOINTERACTION
renderstyle translucent
alpha 1.0
scale 2.5
reactiontime 35
States
{
Spawn:
ALIE H 0
ALIE HZHZHZHZHZHZHZHZ 1
ALIE H 0 A_PlaySoundEx("weapon/aliendisappear","Body")
goto loopit

loopit:
ALIE H 1 A_SetScale(scalex+0.1,scaley-0.1)
ALIE H 0 A_FadeOut(0.028)
ALIE Z 1 A_Countdown
loop

Death:
TNT1 A 0
stop
}
}

actor HologramDevice
{
PROJECTILE
gravity 1.5
+HEXENBOUNCE
-NOGRAVITY
bouncecount 3
bouncefactor 0.7
scale 2.5
radius 8
height 12
States
{
Spawn:
HGDV AB 2
loop
Death:
MMFX F 0 A_ChangeFlag("NOGRAVITY",1)
MMFX F 0 A_PlaySoundEx("misc/metdie","Body")
MMFX FGHI 2
stop
}
}

Actor AlienOPPleaseNerf : PowerProtection
{
	Powerup.Duration 0x7FFFFFFF
	DamageFactor "MetalBlade", 0.0
	DamageFactor "AirShooter", 0.0
	DamageFactor "QuickBoomerang", 0.0
	DamageFactor "CrashBomb", 0.0
	DamageFactor "TimeStopper", 0.0
	DamageFactor "AtomicFire1", 0.0
	DamageFactor "AtomicFire2", 0.0
	DamageFactor "AtomicFire3", 0.0
	DamageFactor "LeafShield", 0.0
}

Actor AlienHealThing : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_JumpIf(CheckClass("Alien"),"Success")
		Goto Nope
		Success:
		TNT1 A 0 A_GiveInventory("MM2HealSound_CI",1)
		TNT1 A 0 HealThing(100)
		Nope: TNT1 A 0
		Stop
	}
}

actor AlienTechnologyBoss : VCBaseWeapon 
{
+WEAPON.NOAUTOAIM
Obituary "$OB_ALIEN1"
weapon.ammotype1 "Base28Ammo"
weapon.ammouse 2
weapon.Ammotype2 "BaseAltfireAmmo"
States
{
Ready:
TNT1 A 0
ALIH A 0 A_JumpIfInventory("AlienLevel",6,"Ready.MaxLevel")
ALIH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ALIH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ALIH A 0 A_GiveInventory("Base28Ammo",1)
goto Ready

Ready.MaxLevel:
ALIH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ALIH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,2)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
ALIH A 0 A_GiveInventory("Base28Ammo",1)
ALIH A 0 A_GiveInventory("BaseAltfireAmmo",2)
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
ALIH A 1 A_Lower
Loop

Select:
TNT1 A 0 A_GiveInventory("AlienOPPleaseNerf",1)
TNT1 A 0 A_SpawnItemEx("AlienLevelWatcher")
TNT1 A 0 A_GunFlash
TNT1 A 0 ACS_ExecuteAlways(991,0,2755)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
ALIH A 1 A_Raise
Loop

Fire: //Thanks to CCBM for these offsets
ALIH A 0 A_JumpIfInventory("AlienLevel",6,"Fire3")
ALIH A 0 A_JumpIfInventory("AlienLevel",3,"Fire2")
ALIH B 1 Offset(0,35)
ALIH B 1 Offset(0,39)
ALIH B 0 A_PlaySoundEx("weapon/alienshot","Weapon")
ALIH B 0 A_FireCustomMissile("AlienShot",0,1,0,16)
ALIH DDDC 1
ALIH C 1 Offset(0,39)
ALIH G 1 Offset(0,35)
ALIH A 4 A_WeaponReady(WRF_NOFIRE)
Goto Ready

Fire2:
ALIH B 1 Offset(0,35) A_GiveInventory("AlienShootFlag",1)
ALIH B 1 Offset(0,39)
ALIH B 0 A_PlaySoundEx("weapon/dragonbreath","Weapon")
ALIH B 0 A_FireCustomMissile("AlienFlame",0,1,0,16)
ALIH HI 2
ALIH C 1 Offset(0,39)
ALIH G 1 Offset(0,35)
ALIH A 10 A_WeaponReady(WRF_NOFIRE)
Goto Ready

Fire3:
ALIH A 0 A_GiveInventory("AlienBoobeamFlag",1)
ALIH B 1 Offset(0,35)
ALIH B 1 Offset(0,39)
ALIH B 0 A_PlaySoundEx("misc/devilfire","Weapon")
ALIH B 0 A_FireCustomMissile("ConvergingAlienBoobeamShot",0,0,0,0)
ALIH B 0 A_FireCustomMissile("AlienBoobeamShot2",0,1,0,20)
ALIH EF 1
ALIH C 1 Offset(0,39)
ALIH G 1 Offset(0,35)
ALIH A 4 A_WeaponReady(WRF_NOFIRE)
Goto Ready

Altfire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_JumpIfInventory("AlienLevel",6,"Altfire2")
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
TNT1 A 0 A_GiveInventory("AlienDripAnim",1)
ALIH A 1 Offset(0,44) A_GiveInventory("AlienCharge",2)
ALIH A 0 A_Refire

AltRelease:
ALIH B 0 A_GiveInventory("AlienAltfireHandler")
ALIH BCBCBCBCBC 2
goto Ready

Altfire2:
ALIH B 1 Offset(0,35)
ALIH B 1 Offset(0,39)
ALIH B 0 A_FireCustomMissile("AlienPicoShot",0,0,0,20)
ALIH B 0 A_PlaySoundEx("misc/sharktorpedo","Body")
ALIH B 0 A_PlaySoundEx("weapon/mm2shot","Weapon")
ALIH B 0 A_GiveInventory("AlienAltAmmoTaker")
ALIH JK 1
ALIH C 2 Offset(0,39)
ALIH G 2 Offset(0,35)
ALIH A 10 A_WeaponReady(WRF_NOFIRE)
goto Ready

UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,128)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_GiveInventory("UltBuildCooldownGiver",1)
TNT1 A 0 A_TakeInventory("UltAttackFlag",999)
ALIH B 0 A_SpawnItemEx("AlienDozerStart",24,0,20,0,0,100)
ALIH BCBCBCBCBCBCBC 1 A_TakeInventory("MediumUltimateAmmo",999)
goto Ready

Flash:
TNT1 A 1 A_GiveInventory("AlienAmmoHandler",1)
TNT1 A 0 A_JumpIfInventory("IsUnderwater",1,3)
TNT1 A 0 A_SetGravity(0.5)
TNT1 A 0 A_Jump(256,2)
TNT1 A 0 A_SetGravity(0.25)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
loop
}
}

actor AlienLevel : Ammo
{
	inventory.amount 1
	inventory.maxamount 7
	+INVENTORY.IGNORESKILL
}

actor AlienCharge : Ammo
{
	inventory.amount 1
	inventory.maxamount 120
	+INVENTORY.IGNORESKILL
}

actor AlienShot
{
damagetype "Alien"
PROJECTILE
Obituary "$OB_ALIEN1"
scale 2.5
speed 50
damage(15)
radius 8
height 8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
6ULT X 1
goto Spawn+2
}
}

actor AlienFlame
{
PROJECTILE
Obituary "$OB_ALIEN2"
scale 2.5
speed 50
+RIPPER
damagetype "AlienBreath"
damage(9)
radius 20
height 20
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MECF AB 3
goto Spawn+2
Death:
TNT1 A 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
stop
}
}

actor AlienDragonHead : BaseShieldWarper
{
RenderStyle "Translucent"
Alpha 0.6
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ACS_NamedExecuteAlways("core_shieldwarper", 0, 1)
TNT1 A 0 A_Jump(256, "Shield")
Goto Shield

Shield:
MECF C 0 A_JumpIfInTargetInventory("AlienLevel",6,"Death")
MECF C 0 A_JumpIfInTargetInventory("AlienShootFlag",1,"Open")
MECF C 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
loop

Open:
MECF D 0 A_JumpIfInTargetInventory("AlienLevel",6,"Death")
MECF DDD 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
MECF D 0 A_JumpIfInTargetInventory("AlienLevel",6,"Death")
MECF DDD 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
MECF D 0 A_JumpIfInTargetInventory("AlienLevel",6,"Death")
MECF DDD 1 A_Warp(AAPTR_TARGET, 0, 0, 32, 0, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
goto Shield

Death:
TNT1 A 0
stop
}
}

Actor AlienShootFlag : Powerup
{
	Powerup.Duration 6
}

Actor AlienBoobeamFlag : Powerup
{
	Powerup.Duration 3
}

actor AlienDripper1
{
PROJECTILE
+FLOORHUGGER
+THRUACTORS
+NOEXPLODEFLOOR
+DONTREFLECT
+NOTARGETSWITCH
reactiontime 9
Speed 50
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SpawnItemEx("AlienDripStart",0,-80,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",0,-40,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",0,0,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",0,40,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",0,80,10,0,0,100,0,1)

TNT1 A 0 A_SpawnItemEx("AlienDripStart",-50,-80,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",-50,-40,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",-50,0,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",-50,40,10,0,0,100,0,1)
TNT1 A 0 A_SpawnItemEx("AlienDripStart",-50,80,10,0,0,100,0,1)


TNT1 A 1 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor AlienDripper2 : AlienDripper1
{
reactiontime 18
}

actor AlienDripper3 : AlienDripper1
{
reactiontime 27
}

actor AlienDripper4 : AlienDripper1
{
reactiontime 36
}

actor AlienDripper5 : AlienDripper1
{
reactiontime 45
}

actor AlienDripStart
{
PROJECTILE
+THRUACTORS
+SKYEXPLODE
+NOCLIP
+DONTREFLECT
+NOTARGETSWITCH
Damage(0)
Height 1
Radius 1
Speed 15
damagetype "AlienDrip"
States
{
Spawn:
TNT1 A 0
TNT1 AA 1 A_CheckCeiling("Death")
Death:
TNT1 A 1 A_SpawnItemEx("AlienClassDrip",0,0,-17,0,0,-4,0,1)
stop
}
}

actor AlienClassDrip
{
PROJECTILE
Obituary "$OB_ALIEN4"
scale 2.5
speed 50
damagetype "AlienDrip"
damage(8)
radius 16
height 16
-NOGRAVITY
+DONTREFLECT
+NOTARGETSWITCH
gravity 2.0//3.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
ACID D 1
goto Spawn+2
Death:
TNT1 A 0 A_CheckFloor("Death2")
stop
Death2:
ACID E 0 A_PlaySoundEx("weapon/aliendrip","Body")
ACID EF 3
stop
XDeath:
ACID E 0 A_PlaySoundEx("weapon/aliendriphit","Body")
ACID EF 2
stop
}
}

actor AlienAltfireHandler : CustomInventory
{
States
{
Pickup:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_JumpIfInventory("AlienCharge",120,"Pickup5")
TNT1 A 0 A_JumpIfInventory("AlienCharge",90,"Pickup4")
TNT1 A 0 A_JumpIfInventory("AlienCharge",60,"Pickup3")
TNT1 A 0 A_JumpIfInventory("AlienCharge",30,"Pickup2")
TNT1 A 0 A_SpawnItemEx("AlienDripper1",12,0,0,100,0,0)
goto Finish

Pickup2:
TNT1 A 0 A_SpawnItemEx("AlienDripper2",12,0,0,100,0,0)
goto Finish

Pickup3:
TNT1 A 0 A_SpawnItemEx("AlienDripper3",12,0,0,100,0,0)
goto Finish

Pickup4:
TNT1 A 0 A_SpawnItemEx("AlienDripper4",12,0,0,100,0,0)
goto Finish

Pickup5:
TNT1 A 0 A_SpawnItemEx("AlienDripper5",12,0,0,100,0,0)
goto Finish

Finish:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
TNT1 A 0 A_TakeInventory("AlienCharge",999)
stop
}
}

actor AlienChemicalColor : PowerUp
{
powerup.colormap 1, 0.215, 0.294
powerup.duration 0x7fffffff
}

actor AlienDripWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 170
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("AlienDripCancel",1,"Death")
TNT1 A 0 A_SpawnItemEx("AlienDripFX",random(16,32),0,random(24,36),0,0,random(-1,0),random(0,359),0,128)
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("AlienChemicalColor",1)
TNT1 A 0 A_TakeFromTarget("AlienDebuffFlag",1)
stop
}
}

Actor AlienDripCancel : Powerup
{
	Powerup.Duration 3
}

actor AlienDebuffFlag : inventory
{
	inventory.amount 1
	inventory.maxamount 1
}

actor BoobeamActiveFlag : inventory
{
	inventory.amount 1
	inventory.maxamount 1
}

actor AlienDripFX : OilDripper
{
scale 1.5
alpha 0.8
States
{
Spawn:
TNT1 A 0 A_JumpIf(z-floorz<=0, "Death")
ACID D 1
loop
Death:
ACID EF 2
stop
}
}

actor AlienLevelUpFX1 : BasicClientSide
{
translation "4:4=106:106"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
MGF9 A 20
MGF9 AAAAAAAAAA 1 A_FadeOut(0.1)
stop
}
}

actor AlienLevelUpFX2 : AlienLevelUpFX1
{
translation "4:4=[0,148,0]:[0,148,0]"
}

actor AlienLevelGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("AlienLevel",6,"Nope")
TNT1 A 0 A_GiveInventory("AlienLevel",1)
TNT1 AAAAAAAA 0 A_SpawnItemEx("AlienLevelUpFX1",random(32,48),0,random(48,64),random(0,1),0,frandom(0.1,4),random(0,359))
TNT1 AAAAAAAA 0 A_SpawnItemEx("AlienLevelUpFX2",random(32,48),0,random(48,64),random(0,2),0,frandom(0.1,4),random(0,359))
TNT1 A 0 A_PlaySoundEx("weapon/alienlevelup","Auto")
stop

Nope:
TNT1 A 0
stop
}
}

actor AlienDragonGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("AlienDragonHead",0,0,32)
stop
}
}

actor AlienBoobeamGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("AlienProtection",1)
TNT1 A 0 A_SpawnItemEx("AlienBoobeam1",0,-48,60)
TNT1 A 0 A_SpawnItemEx("AlienBoobeam2",0,-48,10)
TNT1 A 0 A_SpawnItemEx("AlienBoobeam3",0,48,60)
TNT1 A 0 A_SpawnItemEx("AlienBoobeam4",0,48,10)
stop
}
}

actor AlienBoobeam1 : BaseShieldWarper
{
meleerange -48
mass 60
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ACS_NamedExecuteAlways("core_shieldwarper", 0, 1)
TNT1 A 0 A_Jump(256, "Shield")
Goto Shield

Shield:
BBEA A 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA A 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA A 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA A 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA B 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA B 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA B 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA B 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA C 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA C 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA C 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA C 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA D 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA D 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
BBEA D 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
BBEA D 0 A_JumpIfInTargetInventory("AlienBoobeamFlag",1,"Shoot")
loop

Shoot:
BBEA EEFFEE 1 A_Warp(AAPTR_TARGET,0,meleerange,mass,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
goto Shield

Death:
TNT1 A 0
stop
}
}

actor AlienBoobeam2 : AlienBoobeam1
{
meleerange -48
mass 10
}

actor AlienBoobeam3 : AlienBoobeam1
{
meleerange 48
mass 60
}

actor AlienBoobeam4 : AlienBoobeam1
{
meleerange 48
mass 10
}

actor AlienBoobeamShot
{
Obituary "$OB_ALIEN3"
PROJECTILE
+THRUSPECIES
+DONTREFLECT
+NOTARGETSWITCH
damagetype "Boobeam"
Speed 0
Damage (6)
radius 12
height 12
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BBEA Q 0 A_GiveToTarget("TargetMarker", 1)
BBEA Q 0 ACS_NamedExecuteAlways("core_aimattargetcursor", 0, CallACS("core_gettarget")+PLN_TARGETPOINT_OFFSET, 0)
TNT1 A 1 A_Stop
BBEA Q 0 A_GiveToTarget("TargetMarker", 1)
BBEA Q 1 ACS_NamedExecuteAlways("core_aimattargetcursor", 0, CallACS("core_gettarget")+PLN_TARGETPOINT_OFFSET, 0)
BBEA Q 0 A_ChangeVelocity(Cos(pitch)*44, 0, -sin(pitch)*44,CVF_RELATIVE)
loopit:
BBEA Q 1
loop
}
}

actor AlienBoobeamShot2 : AlienBoobeamShot
{
Speed 60
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BBEA QQQQQQQQQQQQQQQQQQQQQQQQ 1
stop
}
}

actor ConvergingAlienBoobeamShot
{
PROJECTILE
Height 0
Radius 0
+NOINTERACTION
+NOCLIP
+DONTREFLECT
+NOTARGETSWITCH
speed 0
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("TargetMarker", 1)
TNT1 A 1 A_GiveTotarget("BoobeamPickup",1)
stop
}
}

actor BoobeamPickup : CustomInventory
{
States
{
Pickup:
BLIZ D 0 A_PlaySoundEx("weapon/mm2shot","Body")
BLIZ D 0 A_FireCustomMissile("AlienBoobeamShooter",0,0,-48,-2)
BLIZ D 0 A_FireCustomMissile("AlienBoobeamShooter",0,0,-48,48)
BLIZ D 0 A_FireCustomMissile("AlienBoobeamShooter",0,0,48,-2)
BLIZ D 0 A_FireCustomMissile("AlienBoobeamShooter",0,0,48,48)
stop
}
}

actor AlienBoobeamShooter
{
PROJECTILE
Height 0
Radius 0
+NOINTERACTION
+NOCLIP
+DONTREFLECT
+NOTARGETSWITCH
speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("core_aimattargetcursor", 0, CallACS("core_gettarget")+PLN_TARGETPOINT_OFFSET, 0)
TNT1 A 1 A_CustomMissile("AlienBoobeamShot",0,0,0,CMF_AIMDIRECTION,-pitch)
stop
}
}

actor AlienDozerStart
{
Radius 8
Height 8
scale 2.5
PROJECTILE
+DONTBLAST
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("AlienDozerTeleport", 0, 0, 0, momx, momy, -36, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)
stop
}
}

actor AlienDozerTeleport
{
translation "192:192=[255,228,172]:[255,228,172]", "198:198=[255,164,64]:[255,164,64]"
Radius 8
Height 8
scale 2.5
+NOCLIP
PROJECTILE
-DONTBLAST
+SKYEXPLODE
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TFOG D 9
TFOG D 0 A_ChangeFlag("NOCLIP", 0)
TFOG DDDDDDDDDD 1 A_CheckFloor("Next")
Goto Next
Next:
TFOG D 0 //A_ChangeFlag(NOGRAVITY, false)
Goto Death
Death:
TFOG EF 2 A_Stop
TNT1 A 0 A_SpawnItemEx("AlienDozer",0,0,0,12,0,0,0,SXF_NOCHECKPOSITION,0) 
stop
}
}

actor AlienDozer
{
PROJECTILE
+NOEXPLODEFLOOR
+STEPMISSILE
maxstepheight 15
+BOUNCEONCEILINGS
BounceCount 1
Obituary "$OB_ALIEN5"
damagetype "AlienDozer"
scale 2.5
-NOGRAVITY
radius 150
height 150
speed 40
damage(1000)
+DONTBLAST
+THRUACTORS
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
ADOZ A 0 A_PlaySoundEx("misc/dozer","Body")
ADOZ A 0 A_GiveToTarget("WindUltCooldown")
ADOZ AABBAABB 1 A_Explode(1000,192,0,0,192)
loop
Death:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_PlaySoundEx("weapon/dozerexplode","Body")
TNT1 A 0 A_FadeOut(0.04)
TNT1 AAAAAAAA 0 A_SpawnItemEx("NapalmExplodeFX",random(-200,00),0,random(0,250),0,0,0,random(0,359),1)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
ADOZ A 7 A_Explode(40,192,0,0,64)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",25,"StopIt")
loop
StopIt:
TNT1 A 0
stop
}
}

actor AlienAltAmmoTaker : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
stop
}
}

actor AlienPicoShot
{
+HITTRACER
damagetype "Alien"
PROJECTILE
Obituary "$OB_ALIEN6"
scale 2.5
speed 45
damage(10)
radius 16
height 16
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
APPK DE 3
goto Spawn+2
Death:
MMFX BCDE 2
stop
Crash:
XDeath:
MRCR A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "TeamCheck", AAPTR_TRACER)
stop
TeamCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "LightCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "WilyCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "CossackCheck", AAPTR_TARGET)
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "KingCheck", AAPTR_TARGET)
goto PicoSpawn
LightCheck:
MRCR A 0 A_JumpIfInventory("LightTeamFlag", 1, "Failed", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "PicoSpawn")
wait
WilyCheck:
MRCR A 0 A_JumpIfInventory("WilyTeamFlag", 1, "Failed", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "PicoSpawn")
wait
CossackCheck:
MRCR A 0 A_JumpIfInventory("CossackTeamFlag", 1, "Failed", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "PicoSpawn")
wait
KingCheck:
MRCR A 0 A_JumpIfInventory("KingTeamFlag", 1, "Failed", AAPTR_TRACER)
MRCR A 1 A_JumpIf(true, "PicoSpawn")
wait
PicoSpawn:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_ChangeFlag("NOCLIP",1)
TNT1 A 0 A_PlaySoundEx("weapon/alienpico","Body")
TNT1 A 0 A_SpawnItemEx("AlienHomingPico",random(48,80),0,random(32,48),0,0,0,random(0,359))
TNT1 AAAAA 1 A_Warp(AAPTR_TRACER,0,0,18,180,WARPF_COPYINTERPOLATION)
TNT1 A 0 A_PlaySoundEx("weapon/alienpico","Body")
TNT1 A 0 A_SpawnItemEx("AlienHomingPico",random(48,80),0,random(32,48),0,0,0,random(0,359))
TNT1 AAAAA 1 A_Warp(AAPTR_TRACER,0,0,18,180,WARPF_COPYINTERPOLATION)
TNT1 A 0 A_PlaySoundEx("weapon/alienpico","Body")
TNT1 A 0 A_SpawnItemEx("AlienHomingPico",random(48,80),0,random(32,48),0,0,0,random(0,359))
TNT1 AAAAA 1 A_Warp(AAPTR_TRACER,0,0,18,180,WARPF_COPYINTERPOLATION)
stop
Failed:
TNT1 A 0
stop
}
}

actor AlienHomingPico : AlienPicoShot
{
-HITTRACER
+THRUACTORS
speed 15
+DOOMBOUNCE
-BOUNCEONACTORS
bouncecount 10
bouncefactor 1.0
wallbouncefactor 1.0
reactiontime 3
+SEEKERMISSILE
+LOOKALLAROUND
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("PicoPieceLeft",300,0,0,-20,0,0,90)
TNT1 A 14 A_SpawnItemEx("PicoPieceRight",300,0,0,-20,0,0,-90)
TNT1 A 0 A_PlaySoundEx("weapon/adapterreturn","Body")
TNT1 A 0 A_ChangeFlag("THRUACTORS",0)
APPK ABCD 2

loopit:
APPK DDDDDDD 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_PRECISE, 256, 10)
APPK D 0 A_Recoil(-15)
APPK DEDEDE 3 A_PlaySoundEx("weapon/alienpico","Body")
APPK DEDEDEDEDEDE 3 A_Stop
APPK D 0 A_Countdown
loop

Crash:
XDeath:
Death:
MMFX BCDE 2
stop
}
}

actor PicoPieceLeft : BasicClientSide
{
renderstyle translucent
alpha 0.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
APPK FFFFFFFFFF 1 A_FadeIn(0.1)
APPK F 4
stop
}
}

actor PicoPieceRight : PicoPieceLeft
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
APPK GGGGGGGGGG 1 A_FadeIn(0.1)
APPK G 4
stop
}
}

actor AlienAmmoHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("AlienDripAnim",1,"Nope")
TNT1 A 0 A_JumpIfInventory("AlienLevel",6,"Nope")
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
stop

Nope:
TNT1 A 0
stop
}
}

Actor AlienDripAnim : Powerup
{
	Powerup.Duration 21
}

actor AlienLevelWatcher
{
scale 2.5
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
renderstyle none
States
{
Spawn:
TNT1 A 0
TNT1 A 3

loopit:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
COMM A 1 A_JumpIfInTargetInventory("AlienLevel",3,"Dragon")
loop

Dragon:
TNT1 A 0 A_GiveToTarget("AlienDragonGiver")

Waiting:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
ICEM A 1 A_JumpIfInTargetInventory("AlienLevel",6,"Boobeam")
loop

Boobeam:
GUTS A 0 A_GiveToTarget("AlienBoobeamGiver")

Waiting2:
GUTS A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop

Death:
TNT1 A 0
stop
}
}

actor AlienAfterBurn : TurboAfterBurn
{
Obituary "$OB_ALIEN2"
damagetype "AlienBurning"
}

actor AlienProtection : PowerProtection
{
Powerup.Duration 0x7FFFFFFD
DamageFactor "Normal", 0.80
}