actor SuperAdaptorWep : Weapon
{
Weapon.AmmoUse 1
Weapon.AmmoGive 3
Weapon.SlotNumber 1
scale 2.0
Obituary "%o was defeated by %k's Super Adaptor."
Inventory.Pickupmessage "You got the Super Adaptor!"
weapon.ammotype "BusterAmmo"
+WEAPON.AMMO_OPTIONAL
+WEAPON.DONTBOB
States
{
Spawn:
WEA3 P 1
stop
Ready:
SAPT A 0 A_GiveInventory("AdapterFlag",1)
SAPT A 0 //A_SpawnItemEx("Booster")
SAPT A 0 A_GunFlash
SAPT A 0 A_JumpIfInventory("Once",1,"Ready2")
SAPT A 0 A_GiveInventory("Once",1)
Goto Ready2+1
Ready2:
SAPT A 0 ACS_ExecuteAlways(998,0,77)
SAPT A 1 A_WeaponReady
Goto Ready2+1
Deselect:
SAPT A 1 
TNT1 A 0 //A_JumpIf(z-floorz!=0, "Deselect")
TNT1 A 0 //A_TakeInventory("AdapterFlag",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SAPT A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SAPT A 1 A_Raise
Loop
Fire:
SAPT A 0 A_JumpIfNoAmmo("NoAmmo")
SAPT A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
SAPT A 0 A_FireCustomMissile("MegaShot",0,0,8,0)
SAPT BC 3
SAPT B 2 A_TakeInventory("WeaponCharge",999)
SAPT B 0 A_Refire
SAPT A 0 ACS_ExecuteAlways(998,0,77,1)
goto Ready2+1
Hold:
SAPT D 0 A_JumpIfInventory("WeaponCharge",35,"Charge2")
SAPT D 0 A_JumpIfInventory("WeaponCharge",18,"Charge")
SAPT A 1 A_GiveInventory("WeaponCharge",1)
SAPT D 0 A_Refire
Goto Fire
Charge:
SAPT D 0 A_JumpIfInventory("WeaponCharge",35,"Charge2")
SAPT D 0 A_JumpIfInventory("WeaponCharge",19,"Charge1")
SAPT D 0 A_PlaySoundEx("weapon/adaptercharge","Weapon")
SAPT AD 1 
Goto Charge1
Charge1:
SAPT A 0 A_JumpIfInventory("WeaponCharge",35,"Charge2")
SAPT A 0 
SAPT A 0 ACS_ExecuteAlways(991,0,77)
SAPT A 1 A_GiveInventory("WeaponCharge",1)
SAPT A 0 ACS_ExecuteAlways(991,0,78)
SAPT D 1 //A_GiveInventory("AdapterCharge",1)
SAPT A 0 A_Refire
Goto Fire
Charge2:
SAPT D 0 A_PlaySoundEx("weapon/adapterchargeloop","Weapon")
SAPT A 0 ACS_ExecuteAlways(991,0,79)
SAPT G 1
SAPT A 0 ACS_ExecuteAlways(991,0,80)
SAPT H 1
SAPT A 0 ACS_ExecuteAlways(991,0,79)
SAPT G 1
SAPT A 0 ACS_ExecuteAlways(991,0,80)
SAPT H 1 ACS_ExecuteAlways(974,0)
SAPT A 0 A_Refire
Goto Fire2
Fire2:
SAPT I 0 A_PlayWeaponSound("weapon/adapterfire")
SAPT A 0 ACS_ExecuteAlways(991,0,77)
SAPT I 10 A_FireCustomMissile("AdaptorFist",1,0,0,0)
SAPT I 0 A_TakeInventory("WeaponCharge",999)
Goto FistWait
FistWait:
SAPT I 1 
SAPT I 0 A_GiveInventory("AdapterWaitCount",1)
SAPT I 0 A_JumpIfInventory("AdapterWaitCount",30,"FistFinish")
SAPT I 0 A_JumpIfInventory("FistFlag",1,"FistFinish")
loop
FistFinish:
SAPT I 0 A_TakeInventory("AdapterWaitCount",999)
SAPT I 0 A_PlayWeaponSound("weapon/adapterreturn")
SAPT I 0 A_TakeInventory("FistFlag",1)
SAPT A 0 ACS_ExecuteAlways(998,0,77,1)
Goto Ready2+1
Flash:
TNT1 A 0 A_JumpIfInventory("Isdead",1,"NoFlash") 
TNT1 A 1 A_SpawnItemEx("AdaptorWings",-8,0,12,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM)
loop
NoFlash:
TNT1 A 0
stop
NoAmmo:
SAPT A 1
Goto Ready
}
}

actor AdapterWaitCount : Inventory
{
inventory.amount 1
inventory.maxamount 100
}

//weapon/adapterchargeloop
//

actor AdaptorFist: MageStaffFX2
{
PROJECTILE
+SEEKERMISSILE
-EXTREMEDEATH
+SKYEXPLODE
+DONTBLAST
Radius 10
Height 10
scale 2.5
damage (36)
damagetype "Buster"
speed 50
reactiontime 15
States
{
Spawn:
SAPT J 0
SAPT J 1 A_MStaffTrack
SAPT J 0 A_SpawnItemEx("FistFX")
SAPT J 0 A_CountDown
SAPT J 1 A_MStaffTrack
SAPT J 0 A_CountDown
loop
Death:
TNT1 A 1 A_CustomMissile("FistReturn",0,0,0,0)
stop
}
}

actor FistFX
{
+MISSILE
+CLIENTSIDEONLY
damage 0
Radius 2
Height 2
scale 2.5
States
{
Spawn:
MMFX DE 2
stop
}
}

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

actor FistReturn
{
radius 0
height 0
speed 40
damage 0
scale 2.5
+DONTBLAST
+NOTARGETSWITCH
+DOOMBOUNCE
+RIPPER
PROJECTILE
+SKYEXPLODE
bouncefactor 1.0
wallbouncefactor 1.0
+DONTSPLASH
+NOINTERACTION
states
{
Spawn:
SAPT J 1 A_FaceTarget
SAPT J 0 A_JumpIfCloser(60,"Return")
SAPT J 1 A_FaceTarget
SAPT J 0 A_JumpIfCloser(60,"Return")
SAPT J 1 A_FaceTarget
SAPT J 0 A_JumpIfCloser(60,"Return")
SAPT J 1 A_FaceTarget
SAPT J 0 A_JumpIfCloser(60,"Return")
TNT1 A 0 A_CustomMissile("FistReturn",0,0,0,0)
stop
Return:
SAPT J 0 A_GiveToTarget("FistFlag",1)
stop
}
}

actor AdapterFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
}
}


actor Boost : Inventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
}
}
//)
actor Booster
{
-SOLID
+NOGRAVITY
+NOBLOCKMAP
Height 0
Radius 0
scale 2.5
+NOINTERACTION
States
{
Spawn:
TNT1 A 1 A_JumpIfInTargetInventory("CutterFlag",998,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("Boost",1,"Boost")
TNT1 A 1 A_JumpIfInTargetInventory("AdapterFlag",1,"Spawn")
stop
Boost:
TNT1 A 0 A_GiveToTarget("BoostSoundGive",1)
TNT1 A 0 A_TakeFromTarget("Boost",1)
//TNT1 AAAAAAAAA 2 A_GiveToTarget("BoostGive",1)
Goto BoostLoop1
BoostLoop1:
TNT1 A 1 A_GiveToTarget("BoostGive",1)
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostLoop2:
TNT1 A 0 A_GiveInventory("BoostCount",1)
TNT1 A 0 A_JumpIfInventory("BoostCount",34,"BoostEnd")
TNT1 A 1 //A_Print("BoostLoop")
TNT1 A 0 A_JumpIfInventory("BoostCount",9,"BoostLoop2")
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop1")
stop
BoostEnd:
TNT1 A 0// A_Print("BoostEnd")
TNT1 A 7 A_TakeInventory("BoostCount",999)
TNT1 A 1 A_TakeFromTarget("NoBoost",1)
TNT1 A 0 A_TakeFromTarget("Boost",1)
Goto Spawn
Death:
TNT1 A 0
stop
}
}

actor NoBoost : Inventory
{
inventory.amount 1
inventory.maxamount 1
}


actor BoostCount : Inventory
{
inventory.amount 1
inventory.maxamount 30
}


actor BoostSoundGive : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/superboost","Voice")
stop
}
}


actor BoostGive : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BoosterFX",-10,-15,12,0,-2,-10,0)
TNT1 A 0 A_SpawnItemEx("BoosterFX",-10,15,12,0,2,-10,0)
TNT1 A 0 A_Recoil(-2)
TNT1 A 0 ThrustThingZ(0,30,0,0)
stop
}
}

actor BoosterFX
{
+MISSILE
+CLIENTSIDEONLY
damage 0
Radius 2
Height 2
scale 2.5
States
{
Spawn:
MMFX BCDE 1
stop
}
}

actor AdaptorWings
{
-SOLID
+NOGRAVITY
+NOBLOCKMAP
+FIXMAPTHINGPOS
Height 6
Radius 6
+MISSILE
damage 0
scale 2.5
+CLIENTSIDEONLY
//+NOINTERACTION
States
{
Spawn:
TNT1 A 0
SAPT F 2
stop
}
}


actor Boosting : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
-INVBAR
States
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 0 A_SpawnItemEx("BoostMan")
TNT1 A 1
fail
}
}


actor BoostMan
{
-SOLID
+NOGRAVITY
+MISSILE
+NOBLOCKMAP
Height 0
Radius 0
scale 2.5
+NOINTERACTION
States
{
Spawn:
TNT1 A 0 A_JumpIfInTargetInventory("Boost",1,"Boost")
Goto Boost
Boost:
TNT1 A 0 A_GiveToTarget("BoostSoundGive",1)
TNT1 A 0 A_TakeFromTarget("Boost",1)
//TNT1 AAAAAAAAA 2 A_GiveToTarget("BoostGive",1)
Goto BoostLoop1
BoostLoop1:
TNT1 A 1 A_GiveToTarget("BoostGive",1)
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop2")
stop
BoostLoop2:
TNT1 A 0 A_GiveInventory("BoostCount",1)
TNT1 A 0 A_JumpIfInventory("BoostCount",34,"BoostEnd")
TNT1 A 1 //A_Print("BoostLoop")
TNT1 A 0 A_JumpIfInventory("BoostCount",9,"BoostLoop2")
TNT1 A 0 A_JumpIfInTargetInventory("AdapterFlag",1,"BoostLoop1")
stop
BoostEnd:
TNT1 A 0// A_Print("BoostEnd")
TNT1 A 7 A_TakeInventory("BoostCount",999)
TNT1 A 1 A_TakeFromTarget("Boosting",1)
TNT1 A 0 A_TakeFromTarget("Boost",1)
stop
Death:
TNT1 A 0
stop
}
}
