actor ProtoBusterC : Weapon
{
Weapon.AmmoUse 1
Weapon.AmmoGive 3
Weapon.SlotNumber 1
scale 2.0
Obituary "%o was bombed by %k's Proto Buster."
weapon.ammotype "BusterAmmo"
+WEAPON.AMMO_OPTIONAL
+WEAPON.DONTBOB
States
{
Spawn:
TNT1 A 0
stop
Ready:
PROC J 0 A_JumpIfInventory("Once",1,"Ready2")
BUST B 0 ACS_ExecuteAlways(981,0,0)
PROC J 0 A_GiveInventory("Once",1)
Goto Ready2
Ready2:
PROC J 0 ACS_ExecuteAlways(998,0,36)
PROC J 0 A_TakeInventory("ProtoCharge",999)
PROC LK 1 A_WeaponReady
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 1 A_WeaponReady
Goto Ready2+4
Deselect:
BASB B 0 //A_TakeInventory("Once",1)
PROC LK 0 A_TakeInventory("ProtoSlide",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
PROC J 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
PROC J 1 A_Raise
Loop
Fire:
PROC LK 0 A_TakeInventory("ProtoSlide",1)
PROC D 0 A_JumpIfNoAmmo("Hold")
PROC D 0 A_PlaySoundEx("weapon/mbuster","Weapon")
PROC D 0 A_FireCustomMissile("ProtoShot",0,0,8,0)
PROC KLD 1 A_TakeInventory("ProtoCharge",999)
PROC EF 3
PROC D 3 A_Refire
goto Ready2+2
Fire2:
PROC D 0 A_TakeInventory("ProtoCharge",999)
PROC F 3 A_PlaySoundEx("weapon/pshot","Weapon")
PROC F 3 A_FireCustomMissile("ProtoShot2",0,0,8,0)
PROC EFD 3
PROC D 0 A_Refire
goto Ready2+2
Fire3:
PROC D 0 A_TakeInventory("ProtoCharge",999)
PROC D 0 A_PlaySoundEx("weapon/pshot","Weapon")
PROC F 3 //A_FireCustomMissile("ProtoShotFX",0,0,8,0)
PROC F 3 A_FireCustomMissile("ProtoShot3",0,0,8,0)
PROC ED 3
PROC D 9
PROC D 0 A_Refire
goto Ready2+1
Hold:
PROC D 0 A_JumpIfInventory("ProtoCharge",32,"Charge2")
PROC D 0 A_JumpIfInventory("ProtoCharge",18,"Charge")
PROC D 1 A_GiveInventory("ProtoCharge",1)
PROC D 0 A_Refire
Goto Ready2+1
Charge:
PROC D 0 A_JumpIfInventory("ProtoCharge",32,"Charge2")
PROC D 0 A_JumpIfInventory("ProtoCharge",19,"Charge1")
PROC D 0 A_PlaySoundEx("weapon/pcharge","Weapon")
PROC LK 1 
Goto Charge1
Charge1:
PROC J 0 A_JumpIfInventory("ProtoCharge",32,"Charge2")
PROC H 0 
PROC H 0 ACS_ExecuteAlways(991,0,63)
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 1 A_GiveInventory("ProtoCharge",1)
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC H 1 A_GiveInventory("ProtoCharge",1)
PROC H 0 ACS_ExecuteAlways(991,0,36)
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC H 1
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC H 1
PROC H 0 A_Refire
Goto Fire2
Charge2:
BUST C 0 ACS_ExecuteAlways(974,0)
PROC H 0 ACS_ExecuteAlways(991,0,64)
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC I 1
BUST C 0 ACS_ExecuteAlways(974,0)
PROC H 0 ACS_ExecuteAlways(991,0,36)
PROC J 0 A_SpawnItemEx("ProtoShieldX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC J 0 A_SpawnItemEx("ProtoShieldFX",23,-17,8,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
PROC H 1
PROC H 0 A_Refire
Goto Fire3
Altfire:
PROC J 0 A_JumpIf(z-floorz==0,"SlideSlide") //A_JumpIf(momz==0, "SlideSlide")
Goto Ready2+2
SlideSlide:
PROC L 0 A_GiveInventory("ProtoSlide",1)
PROC L 0 A_PlaySoundEx("weapon/chargekick","Weapon")
PROC L 0 SetPlayerProperty(0,1,0)
PROC L 0 ACS_ExecuteAlways(648,0,5)
PROC LK 2 A_GiveInventory("ProtoSlideThrust",1)
PSLI A 8 //SetPlayerProperty(0,0,0)
PSLI B 5 SetPlayerProperty(0,0,0)
PROC LK 5 ACS_ExecuteAlways(648,0,3)
PROC L 0 A_TakeInventory("ProtoSlide",1)
PROC L 0 A_Refire
Goto Ready2+2
NoFlash:
TNT1 A 0
stop
}
}

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

actor ProtoSlideThrust : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Pickup:
//TNT1 A 0 A_JumpIf(Momz>0,"Down")
TNT1 A 0 ThrustThingZ(0,0,1,0)
TNT1 A 0 A_Recoil(-20)
stop
Down:
TNT1 A 0 ThrustThingZ(0,0,1,0)
TNT1 A 0 A_Recoil(-15)
stop
}
}

actor ProtoCoil : CustomInventory
{
//Inventory.RespawnTics 300
inventory.amount 1
inventory.maxamount 1
inventory.pickupmessage "Support Item! Proto Coil!"
inventory.icon "PCUP"
Inventory.PickupSound "item/1up"
scale 2.0
+COUNTITEM
+INVBAR
states
{
Spawn:
PCOI C 1
loop
Use:
WEAP B 0 A_PlaySoundEx("item/refill","Voice")
WEAP B 0 A_SpawnItemEx("PCoil", 40, 0, 256, 0, 0, -32, 0, SXF_NOCHECKPOSITION, 0)
stop
}
}

actor PCoil
{
- SOLID
+NOGRAVITY
+MISSILE
+DONTBLAST
+NOCLIP
+SKYEXPLODE
speed 0
scale 2.5
Radius 12
Height 32
reactiontime 250
meleerange 80
states
{
Spawn:
RUSH D 0 A_Jump(256,"Death")
RUSH D 1 A_ChangeFlag("MISSILE",0)
RUSH D 1 
RUSH D 1 //A_PlaySound("support/rushsummon")
RUSH D 1 A_JumpIf(z-floorz<=0, "Look")
Goto Spawn+4
Look:
PCOI A 0 A_ChangeFlag("NOCLIP",0)
PCOI AA 2
PCOI AAAAAA 1 A_Chase
PCOI A 0 A_CountDown
Goto Look+3
Melee:
PCOI B 1 A_JumpIfInTargetInventory("StrongSpring",1,"Melee2")
PCOI B 18 A_GiveToTarget("SpringActivate",1)
PCOI A 0 A_Die
Goto Death
Melee2:
PCOI B 18 A_GiveToTarget("SpringActivate2",1)
PCOI B 0 A_Die
Goto Death
Death:
PCOI A 0 A_SpawnItemEx("RushDeath",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
stop
}
}

actor ProtoJet : CustomInventory
{
//Inventory.RespawnTics 875
inventory.amount 1
inventory.maxamount 1
inventory.pickupmessage "Support Item! Proto Jet!"
inventory.icon "PJUP"
Inventory.PickupSound "item/1up"
scale 2.0
+COUNTITEM
+INVBAR
states
{
Spawn:
PJET D 1
loop
Use:
WEA2 B 0 A_JumpIfInventory("ProtoJetCounter",1,3)
WEA2 B 0 A_PlaySoundEx("item/refill","Voice")
WEA2 B 0 A_SpawnItemEx("Jetter", 40, 0, 256, 0, 0, -32, 0, SXF_NOCHECKPOSITION, 0)
stop
WEA2 B 0 A_PlaySoundEx("item/refill","Voice")
WEA2 B 0 A_GiveInventory("ProtoJetCounter",20)
stop
}
}

actor Jetter
{
- SOLID
+NOGRAVITY
+MISSILE
+NOCLIP
+DONTBLAST
+SKYEXPLODE
speed 0
scale 2.5
Radius 12
Height 32
reactiontime 250
meleerange 20
states
{
Spawn:
RUSH D 0 A_Jump(256,"Death")
RUSH D 1 A_ChangeFlag("MISSILE",0)
RUSH D 1 
RUSH D 1 //A_PlaySound("support/rushsummon")
RUSH D 1 A_JumpIf(z-floorz<=0, "Look")
Goto Spawn+4
Look:
PJET E 0 A_ChangeFlag("NOCLIP",0)
PJET AA 2
PJET A 3 A_Chase
PJET A 0 A_CountDown
Goto Look+3
Melee:
TNT1 A 0 A_GiveToTarget("ProtoJetCounter",20)
TNT1 A 1 A_GiveToTarget("FlyActivate",1)
Goto FlyCheck1
FlyCheck1:
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 A 0 A_TakeFromTarget("ProtoJetCounter",1)
TNT1 A 0 A_JumpIfInTargetInventory("SpinTime",1,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("InBoat",1,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("ProtoJetCounter",1,"FlyCheck2")
TNT1 A 0 A_GiveToTarget("FlyDeactivate",1)
stop
FlyCheck2:
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX1",1)
TNT1 AAAAA 1 A_GiveToTarget("ProtoJetFX2",1)
TNT1 A 0 A_TakeFromTarget("ProtoJetCounter",1)
TNT1 A 0 A_JumpIfInTargetInventory("SpinTime",1,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("InBoat",1,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("ProtoJetCounter",1,"FlyCheck1")
TNT1 A 0 A_GiveToTarget("FlyDeactivate",1)
stop
Death:
RUSH F 0 A_SpawnItemEx("RushDeath",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
stop
Death2:
TNT1 A 0 A_TakeFromTarget("RushJetCounter",20)
TNT1 A 0 A_GiveToTarget("FlyDeactivate",1)
stop
}
}

actor ProtoJetFX1 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+AUTOACTIVATE
States
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 1 SetPlayerProperty(0,1,3)
TNT1 A 1 A_SpawnItemEx("ProtoJetFeet1",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
stop
}
}

actor ProtoJetFX2 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+AUTOACTIVATE
States
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 1 A_SpawnItemEx("ProtoJetFeet2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
stop
}
}

actor ProtoJetFeet1
{
-SOLID
+CLIENTSIDEONLY
+NOGRAVITY
+NOINTERACTION
Scale 2.5
States
{
Spawn:
PJET B 2
stop
}
}


actor ProtoJetFeet2
{
-SOLID
+CLIENTSIDEONLY
+NOGRAVITY
+NOINTERACTION
Scale 2.5
States
{
Spawn:
PJET C 2
stop
}
}

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