actor DuoMeteorWepC : BaseMM8BDMWep_CBM
{
tag "$TAGC_8I2"
dropitem "DuoFistUpgrade2GiverDropped"
Weapon.AmmoUse 1
Weapon.AmmoGive 3
Weapon.SlotNumber 1
Obituary "$OB_DUOMETEOR"
Inventory.Pickupmessage "You got the Duo Meteor!"
weapon.ammotype "DuoGetReadyAmmo"
+WEAPON.CHEATNOTWEAPON
States
{
Spawn:
C_08 I 1
loop
Ready:
TNT1 A 0 ACS_ExecuteAlways(998,0,DYE_DUOC)
goto FireX
Ready2:
TNT1 A 1 A_WeaponReady
wait
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
TNT1 A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
TNT1 A 1 A_Raise
Loop
Fire:
TNT1 A 1
goto Ready2

FireX:
TNT1 A 0 A_GiveInventory("DuoMeteor",1)

TNT1 A 0 A_Stop
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_PlaySoundEx("weapon/pcharge","Weapon")
goto FireRise
FireRise:
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
TNT1 A 1 ThrustThingZ(0,10,0,0)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",20,"BallStart")
loop

BallStart:
TNT1 A 0 A_TakeInventory("DuoMeteorTimer",999)
TNT1 A 0 A_GiveInventory("DuoMeteorGo",1)
TNT1 A 0 A_GiveInventory("InvulnerableOn_Pickup",1)
goto BallStart2
BallStart2:
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
TNT1 A 1 ThrustThingZ(0,0,0,0)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",4,"Ball")
loop

Ball:
TNT1 A 0 A_TakeInventory("DuoMeteorTimer",999)
TNT1 A 0 A_GiveInventory("SelfTotallyFrozen",1)
goto Ball2
Ball2:
TNT1 A 0 A_ChangeVelocity(cos(pitch)*40,0,-sin(pitch)*40,3)
TNT1 A 0 A_SpawnItemEX("DuoMeteorMotionCheck",0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEX("DuoMeteorCollideCheck2",0,0,0,momx,momy,momz,0,9,0)//Spawn GigaFistFXLefty
TNT1 A 0 A_JumpIfInventory("DuoMeteorEnd",1,"Collide")
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",45,"TimeOut")

TNT1 A 0 A_ChangeVelocity(cos(pitch)*40,0,-sin(pitch)*40,3)
TNT1 A 0 A_SpawnItemEX("DuoMeteorMotionCheck",0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEX("DuoMeteorCollideCheck",0,0,0,momx,momy,momz,0,8,0)
TNT1 A 0 A_JumpIfInventory("DuoMeteorEnd",1,"Collide")
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",45,"TimeOut")

TNT1 A 0 A_ChangeVelocity(cos(pitch)*40,0,-sin(pitch)*40,3)
TNT1 A 0 A_SpawnItemEX("DuoMeteorMotionCheck",0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEX("DuoMeteorCollideCheck",0,0,0,momx,momy,momz,0,8,0)
TNT1 A 0 A_JumpIfInventory ("DuoMeteorEnd",1,"Collide")
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",45,"TimeOut")

TNT1 A 0 A_ChangeVelocity(cos(pitch)*40,0,-sin(pitch)*40,3)
TNT1 A 0 A_SpawnItemEX("DuoMeteorMotionCheck",0,0,0,0,0,0)
TNT1 A 1 A_SpawnItemEX("DuoMeteorCollideCheck",0,0,0,momx,momy,momz,0,8,0)
TNT1 A 0 A_JumpIfInventory ("DuoMeteorEnd",1,"Collide")
TNT1 A 0 A_GiveInventory("DuoMeteorTimer",1)
TNT1 A 0 A_JumpIfInventory("DuoMeteorTimer",45,"TimeOut")
loop





TimeOut:
TNT1 A 0 A_GiveInventory("DuoMeteorEnd",1)
//TNT1 A 0 A_Stop
goto Fall

Collide:
TNT1 A 0 A_PlaySoundEx("weapon/blizzstrike","Weapon")
TNT1 A 0 A_FireCustomMissile("DuoMeteorCollide",0,0,0,0)
//TNT1 A 0 A_Stop
TNT1 A 0 ThrustThingZ(0,60,0,0)
//TNT1 A 0 A_Recoil(5)
goto Fall
Fall:
TNT1 A 0 A_GiveInventory("SelfTotallyUnfrozen",1)
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 10 A_GiveInventory("InvulnerableOff_Pickup",1)
TNT1 A 10 A_GiveInventory("DuoMeteorFlagRemove_P",1)
goto GoAway
GoAway:
TNT1 A 0 A_TakeInventory("DuoMeteorWepC",1)
TNT1 A 1
loop

}
}

actor DuoGetReadyAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 3
+INVENTORY.IGNORESKILL
}

actor DuoMeteor : OnceC{}
actor DuoMeteorGo : OnceC{}
actor DuoMeteorEnd : OnceC{}
actor DuoMeteorTimer : Inventory
{
inventory.amount 1
inventory.maxamount 999
}
actor DuoMeteorItemDelay : Powerup
{
Powerup.Duration 10
}

actor DuoMeteorFlagRemove_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("DuoMeteorGo",99)
TNT1 A 0 A_TakeInventory("DuoMeteorEnd",99)
TNT1 A 0 A_TakeInventory("DuoMeteor",99)
TNT1 A 0 A_TakeInventory("DuoMeteorTimer",999)
stop
}
}

actor DuoMeteorItem : BasicClassItem
{
inventory.amount 1
inventory.maxamount 3
inventory.icon "DUOHAND"
inventory.pickupmessage "Support Item! Duo Meteor!"
Inventory.PickupSound "item/1up"
Tag "Duo Meteor"
states
{
Spawn:
DUOF A 1
loop
Use:
TNT1 A 0 A_JumpIfInventory("DuoMeteorWepC",1,"No")
TNT1 A 0 A_JumpIfInventory("DuoMeteorItemDelay",1,"No")
goto Use2
Use2:
TNT1 A 0 A_PlaySoundEx("item/refill","Voice")
TNT1 A 0 A_GiveInventory("DuoMeteorItemDelay",1)
TNT1 A 0 A_SpawnItemEx("DuoMeteorItemHelper")//A_GiveInventory("DuoMeteorActivate",1)
stop
}
}

actor DuoMeteorItemHelper : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("DuoMeteorWepC",1)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 1 A_GiveToTarget("DuoMeteorActivate",1)
stop
}
}

actor DuoMeteorActivate : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("DuoMeteorWepC",1)
TNT1 A 0 A_SelectWeapon("DuoMeteorWepC")
stop
}
}


actor DuoMeteorMotionCheck : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 2
TNT1 A 1 A_JumpIfCloser(40,"Stopped")
stop
Stopped:
TNT1 A 1 A_GiveToTarget("DuoMeteorTimer",999)
stop
}
}

actor DuoMeteorCollideCheck
{
PROJECTILE
+DONTBLAST
+DONTREFLECT
+NOGRAVITY
Radius 40
Height 60
damage 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
TNT1 A 0 A_GiveToTarget("DuoMeteorEnd",1)
Stop
}
}

actor DuoMeteorCollideCheck2 : DuoMeteorCollideCheck
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_SpawnItemEX("GigaFistFXLefty",0,0,28,0,0,0,0,1)
stop
}
}


actor DuoMeteorCollide : BasicExplosion
{
damagetype "Duo_Meteor"
Obituary "$OB_DUOMETEOR"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(300,150,0,0,16)
stop
}
}