actor AstroCrushBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_8B"
dropitem "CopyVisionWepCDropped"
Weapon.AmmoUse 28
Weapon.AmmoGive 28
Weapon.AmmoUse2 56
Weapon.AmmoGive2 0
Obituary "$OB_ASTROCRUSH"
Inventory.Pickupmessage "AAAAAAASTRO CRUSH"
weapon.ammotype "OvercomingShynessAmmo"
weapon.ammotype2 "TellahRecallsMeteoAmmo"
States
{
Spawn:
C_08 B 1
loop
Ready:
AHUG A 0 ACS_ExecuteAlways(998,0,DYE_ASTROMAN)
AHUG A 0 A_GunFlash
AHUG A 0 A_JumpIfInventory("TellahRecallsMeteoAmmo",56,"Ready2")
//AHUG A 0 A_SetTranslucent(1.0,0)
AHUG A 4 A_WeaponReady(WRF_NOSECONDARY)
AHUG A 0 A_GiveInventory("OvercomingShynessAmmo",1)
AHUG A 0 A_GiveInventory("TellahRecallsMeteoAmmo",1)
Goto Ready+2
Ready2:
//AHUG A 0 A_SetTranslucent(1.0,0)
AHUG A 4 A_WeaponReady
AHUG A 0 A_GiveInventory("OvercomingShynessAmmo",1)
loop
Deselect:
AHUG AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
AHUG A 1 A_Lower
Loop
Select:
AHUG AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
AHUG A 1 A_Raise
Loop
Fire:
AHUG A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
AHUG A 0 A_JumpIfInventory("OvercomingShynessAmmo",28,"Fire2")
AHUG B 0 A_GiveInventory("OvercomingShynessAmmo",2)
AHUG B 0 A_GiveInventory("TellahRecallsMeteoAmmo",2)
AHUG B 2 A_GiveInventory("AstroMain_CI",1)
AHUG B 2 A_GiveInventory("CBM_TargetMarker",1)
AHUG CC 4
AHUG A 0
goto Ready+2
Fire2:
AHUG B 0 A_GiveInventory("TellahRecallsMeteoAmmo",2)
AHUG B 0 A_GiveInventory("AstroMain_CI",1)
AHUG B 2 A_GiveInventory("AstroMain2_CI",1)
AHUG B 2 A_GiveInventory("CBM_TargetMarker",1)
AHUG CC 4
AHUG A 0
goto Ready+2
Altfire:
AHUG B 0 A_JumpIfNoAmmo("NoAmmo")
Meteors:
AHUG B 0 A_TakeInventory("TellahRecallsMeteoAmmo",56,1)
AHUG B 0 A_GiveInventory("SelfStoppedTF",1)
AHUG B 0 A_GiveInventory("VivifyFlag1",1)
AHUG BCDEF 3
TNT1 A 0 A_GiveInventory("AstroAlt_CI",1)
TNT1 A 30
AHUG F 0 A_GiveInventory("SelfStoppedUnfreeze",1)
AHUG F 0 A_TakeInventory("VivifyFlag1")
AHUG FEDC 3
AHUG B 2
AHUG A 2 Offset(-40,62)
AHUG A 2 Offset(-20,47)
AHUG A 2 Offset(-10,39)
Goto Ready+2
NoAmmo:
AHUG A 0
Goto Ready+2

Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_GiveInventory("AstroM_FlashState_P")
loop
}
}

actor OvercomingShynessAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor TellahRecallsMeteoAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor AstroM_StaminaFlag : Inventory
{
inventory.amount 1
inventory.maxamount 500
}

actor AstroFlight : OnceC{}

actor AstroFlightItem : BasicClassItem
{
inventory.pickupmessage "Oh, how did you find me? I feel so embarrassed!"
inventory.icon "AstIcon"
Tag "Astro Hover Toggle"
states
{
Spawn:
AHUG Z 1
loop
Use:
TNT1 A 0 A_PlaySoundEx("item/ItemUseMM9","SoundSlot7")
TNT1 A 0 A_JumpIfInventory("AstroFlight",1,"Take")
TNT1 A 0 A_GiveInventory("AstroFlight",1)
fail
Take:
TNT1 A 0 A_TakeInventory("AstroFlight",999)
fail
}
}

actor AstroM_FlashState_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"NoFlight")
TNT1 A 0 A_JumpIfInventory("SelfStoppedTFFlag",1,"YesFlightStop")//StayLocked
TNT1 A 0 A_JumpIfInventory("AstroFlight",1,"FlightCheck")
goto NoFlight
YesFlightStop://Astro using Altfire
TNT1 A 0 A_Stop
goto MaybeFlightYes
FlightCheck:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(107,0)==1,"MaybeFlight")
TNT1 A 0 A_JumpIf(z-floorz>=160,"NoFlight")
YesFlight:
TNT1 A 1 SetPlayerProperty(0,1,3)
goto RechargeCheck

MaybeFlight:
TNT1 A 0 A_JumpIf(z-floorz>=160,4)
TNT1 A 0 A_GiveInventory("PowerStaminaFlagDeplete")
TNT1 A 0 A_TakeInventory("AstroM_StaminaFlag",10)//20
TNT1 A 0 A_JumpIfInventory("AstroM_StaminaFlag",1,"MaybeFlightYes")
TNT1 A 1 SetPlayerProperty(0,0,3)
stop
MaybeFlightYes:
TNT1 A 1 SetPlayerProperty(0,1,3)
stop

NoFlight:
//TNT1 A 0 A_JumpIfInventory("PlayerPropertyFlight",1,"RechargeCheck")
TNT1 A 1 SetPlayerProperty(0,0,3)
goto RechargeCheck
RechargeCheck:
TNT1 A 0 A_JumpIfInventory("AstroM_StaminaFlag",0,"No")
TNT1 A 0 A_JumpIf(z-floorz==0,"Recharge")
TNT1 A 0 A_GiveInventory("AstroM_StaminaFlag",1)
stop
Recharge:
TNT1 A 0 A_GiveInventory("AstroM_StaminaFlag",4)
stop
No:
TNT1 A 0
stop
}
}


actor CopyVision_Astro
{
translation "192:192=229:229", "198:198=128:128", "0:8=128:128", "247:247=128:128"
PROJECTILE
obituary "$OB_COPYVISION"
DamageType "AstroM_Shot"
+DONTBLAST
+RIPPER
+NOGRAVITY
+THRUGHOST
+DONTREFLECT
+BRIGHT
/*
-NOBLOCKMAP
-SHOOTABLE
+DONTRIP
health 99990
mass 0x7ffffffff
painchance 256
*/
reactiontime 18
damage(0)
Radius 12
Height 42
speed 0.01
scale 2.5
States
{
Spawn:
ASTM G 0 
ASTM G 0 ACS_ExecuteAlways(989,0,ACS_ExecuteWithResult(257)+100,32)
ASTM G 1 A_PlaySoundEx("weapon/copyvision","weapon")
TNT1 A 1
ASTM G 1
TNT1 A 1
ASTM G 1
TNT1 A 1
goto Shoot
Shooting:
ASTM G 1 A_JumpIfInTargetInventory("PowerRage_ST",1,4)
TNT1 A 1
ASTM G 1
TNT1 A 1
ASTM G 1
TNT1 A 1
Shoot:
ASTM G 1 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
TNT1 A 1
ASTM G 1
TNT1 A 1
ASTM G 1 ACS_ExecuteAlways(989,0,ACS_ExecuteWithResult(257)+100,32)
TNT1 A 1
ASTM G 0 A_PlaySoundEx("weapon/mbuster","Weapon")
ASTM G 0 A_SpawnItemEx("CopyShotClone",cos(-pitch)*8,0,32+(sin(-pitch)*8),cos(-pitch)*26,0,sin(-pitch)*26,0,1,0)
ASTM G 0 A_Countdown
ASTM G 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
goto Shooting

Death:
TNT1 A 6
Stop
}
}

actor CopyVision_Astro2 : CopyVision_Astro
{
reactiontime 1
States
{
Spawn:
ASTM G 1
TNT1 A 1
ASTM G 1
TNT1 A 1
ASTM G 1
TNT1 A 1
goto Shoot
}
}

actor CopyVision_AstroB : CopyVision_Astro   { translation "192:192=205:205","198:198=74:74","0:8=74:74","247:247=74:74"}
actor CopyVision_Astro2B : CopyVision_Astro2 { translation "192:192=205:205","198:198=74:74","0:8=74:74","247:247=74:74"}
actor CopyVision_AstroR : CopyVision_Astro   { translation "192:192=171:171","198:198=41:41","0:8=41:41","247:247=41:41"}
actor CopyVision_Astro2R : CopyVision_Astro2 { translation "192:192=171:171","198:198=41:41","0:8=41:41","247:247=41:41"}
actor CopyVision_AstroO : CopyVision_Astro   { translation "192:192=104:104","198:198=128:128","0:8=128:128","247:247=128:128"}
actor CopyVision_Astro2O : CopyVision_Astro2 { translation "192:192=104:104","198:198=128:128","0:8=128:128","247:247=128:128"}
actor CopyVision_AstroP : CopyVision_Astro   { translation "192:192=229:229","198:198=232:232","0:8=232:232","247:247=232:232"}
actor CopyVision_Astro2P : CopyVision_Astro2 { translation "192:192=229:229","198:198=232:232","0:8=232:232","247:247=232:232"}


actor CopyShot_Astro
{
Translation "198:198=128:128"
PROJECTILE
Obituary "$OB_ASTROSHOT"
DamageType "AstroM_Shot"
+FORCEXYBILLBOARD
+BRIGHT
Damage (100)
radius 5
height 5
Speed 26
scale 2.5
States
{
Spawn:
AHUG GHI 2 A_SpawnItemEx("CopyShot_AstroFX",0,0,0,0,0,0,0,1)
loop
Death:
TNT1 A 0 
stop
}
}


actor CopyShot_AstroB : CopyShot_Astro{translation "198:198=74:74"}
actor CopyShot_AstroR : CopyShot_Astro{translation "198:198=41:41"}
actor CopyShot_AstroO : CopyShot_Astro{translation "198:198=128:128"}
actor CopyShot_AstroP : CopyShot_Astro{translation "198:198=232:232"}

actor CopyShot_AstroFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
TNT1 A 2
AHUG JKLM 2
stop
}
}

actor CopyShotClone : CopyShot_Astro
{
obituary "$OB_COPYVISION"
DamageType "AstroM_CloneShot"
Damage (80)
States
{
Spawn:
TNT1 A 1
Spawn2:
AHUG GHI 2 A_SpawnItemEx("CopyShot_AstroFX",0,0,0,0,0,0,0,1)
loop
}
}

actor AstroCrushSpawnerB : BasicHelper
{
Translation "198:198=128:128"
ReactionTime 10
States
{
Spawn:
TNT1 A 0
TNT1 AA 1 A_SpawnItemEx("AstroCrushB",random(300,-300),random(256,-256),320,0,0,random(-20,-22),0,1)
TNT1 A 1 A_CountDown
loop
}
}

actor AstroCrushSpawnerBB : AstroCrushSpawnerB{Translation"198:198=74:74"}
actor AstroCrushSpawnerBR : AstroCrushSpawnerB{Translation"198:198=41:41"}
actor AstroCrushSpawnerBO : AstroCrushSpawnerB{Translation"198:198=128:128"}
actor AstroCrushSpawnerBP : AstroCrushSpawnerB{Translation"198:198=232:232"}

actor AstroCrushB
{
PROJECTILE
Damagetype "AstroM_Meteor"
Obituary "$OB_ASTROCRUSH"//Astro Crash
+RIPPER
+NOINTERACTION
+DONTBLAST
+DONTREFLECT
+BRIGHT
Reactiontime 40
Damage (60)
Radius 24
Height 12
Speed 1
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0
AHUG NNNOOOPPP 1 A_JumpIf(ceilingz-z>13,"Spawn2")
AHUG N 0 A_JumpIf(momz==0,"Death")
AHUG N 0 A_CountDown
Goto Spawn+2
Spawn2:
AHUG N 0 A_ChangeFlag("RIPPER",0)
AHUG N 0 A_ChangeFlag("NOINTERACTION",0)
AHUG NOP 3
AHUG N 0 A_JumpIf(momz==0,"Death")
AHUG N 0 A_CountDown
Goto Spawn2+2
Death:
TNT1 A 0 A_PlaySoundEx("weapon/AstroM_ACrush","Weapon")//weapon/AstroACrush
TNT1 A 0 A_Explode(320,160,0)//240 128//
TNT1 A 0 A_SpawnItemEx("AstroM_CrusherFX",0,0,0,0,0,0,0,1+32)
TNT1 A 2
stop
}
}
actor AstroM_CrusherFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
Scale 3.0
States
{
Spawn:
AHUG Q 0
AHUG QRSTUV 2
stop
}
}

actor AstroMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("CopyShot_Astro",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("CopyShot_AstroB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("CopyShot_AstroR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("CopyShot_AstroO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("CopyShot_AstroP",0,0,0,0)
goto Done
}
}

actor AstroMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("CopyVision_Astro",0,1,0,-30)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("CopyVision_AstroB",0,1,0,-30)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("CopyVision_AstroR",0,1,0,-30)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("CopyVision_AstroO",0,1,0,-30)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("CopyVision_AstroP",0,1,0,-30)
goto Done
Done:
TNT1 A 0 A_TakeInventory("OvercomingShynessAmmo",6)
stop
}
}

actor AstroAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("AstroCrushSpawnerB",0,1,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("AstroCrushSpawnerBB",0,1,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("AstroCrushSpawnerBR",0,1,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("AstroCrushSpawnerBO",0,1,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("AstroCrushSpawnerBP",0,1,0,0)
goto Done
}
}