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

actor SuperArrowWep : BaseMM8BDMWep
{
//$Category MM8BDM-Weapons/Ranged
//$Title Super Arrow
//$Sprite CONCA0
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 4
Obituary "$OB_SUPERARROW"
Tag "$TAG_SUPERARROW"
Inventory.Pickupmessage "$PU_SUPERARROW"
weapon.ammotype "SuperArrowAmmo"
inventory.icon "SUPERARR"
States
{
SpawnLoop:
CONC A -1
loop

Ready:
TNT1 A 0 A_GiveInventory("SuperArrowColorPickUp")//ACS_NamedExecuteWithResult("core_weaponcolor",CLR_MEGABUSTER)
TNT1 A 0 A_JumpIfInventory("IsMegaMan",1,"ReadyMega")
TNT1 A 0 A_JumpIfInventory("IsProtoMan",1,"ReadyProto")
TNT1 A 0 A_JumpIfInventory("IsBass",1,"ReadyBass")
TNT1 A 0 A_JumpIfInventory("IsDuo",1,"ReadyDuo")
TNT1 A 1
Goto Ready+1

ReadyMega:
H4ME A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttackCheck")
H4ME A 1 A_WeaponReady
Goto ReadyMega
ReadyProto:
H4PR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttackCheck")
H4PR A 1 A_WeaponReady
Goto ReadyProto
ReadyBass:
H4BA A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttackCheck")
H4BA A 1 A_WeaponReady
Goto ReadyBass
ReadyDuo:
D3OB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttackCheck")
D3OB A 1 A_WeaponReady
Goto ReadyDuo

Deselect:
"####" B 0
Goto DeselectSwap
Select:
"####" A 0
Goto SelectSwap

Fire:
"####" A 0 A_JumpIfNoAmmo("NoAmmo")
"####" A 0 A_JumpIfInventory("PowerGearPowerup",1,"GearCheck")
Fire.Resume:
"####" A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
"####" A 0 A_GiveInventory("SuperArrowFire_CI")
"####" BC 5
"####" A 14
"####" A 0 A_Refire
Goto Ready+1

GearCheck:
"####" A 0 A_JumpIfInventory("SuperArrowAmmo",9,"Fire.Gear")
Goto Fire.Resume

Fire.Gear:
"####" A 0 A_PlaySoundEx("weapon/pcharge","Weapon")
GearHold:
"####" BB 1 Offset(1,33)ACS_NamedExecute("VC_SetState",0,5)
"####" BB 1 Offset(2,34)ACS_NamedExecute("VC_SetState",0,5)
"####" B 0 A_GiveInventory("CutterFlag",1)
"####" B 0 A_JumpIfInventory("CutterFlag",3,1)
loop
"####" A 0 A_StopSoundEx("Weapon")
"####" A 0 A_TakeInventory("CutterFlag",12)
"####" A 0 A_TakeInventory("SuperArrowAmmo",9)
"####" A 0 A_PlaySoundEx("weapons/busters/arrowbusterfire3","Weapon")
"####" A 0 A_FireCustomMissile("ArrowShot",0,0,8,0)
"####" GHIJKL 2
"####" A 12
Goto Ready+1

NoAmmo:
"####" A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor SuperArrowColorPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsProtoMan",1,"Pickup2")
//TNT1 A 0 A_JumpIfInventory("IsBass",1,"Pickup3")
//TNT1 A 0 A_JumpIfInventory("IsDuo",1,"Pickup4")
TNT1 A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_MEGABUSTER)
stop

Pickup2:
TNT1 A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_PROTOBUSTER)
stop
}
}

actor SuperArrowFire_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("IsProtoMan",1,"Pickup2")
TNT1 A 0 A_FireCustomMissile("SuperArrowMM5",0,1,8,0 + CallACS("VC_DuoCheck"))
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("SuperArrowMM5Proto",0,1,8,0)
stop
}
}

actor SuperArrowMM5 //: ProjSpawnFuncActor
{
height 4
radius 24
scale 2.5
damage(30)
speed 30
+FORCEYBILLBOARD
+NOGRAVITY
+SHOOTABLE
+NOTAUTOAIMED
+THRUSPECIES
+THRUGHOST
+CANPASS
+NOBLOCKMONST
+DONTBLAST
-SOLID//+SOLID
+DONTREFLECT
+MISSILE
+NODAMAGE
+INVULNERABLE
+NOTAUTOAIMED
+NOTARGETSWITCH
species "MovingPlatform"
+THRUSPECIES
var int user_playerRiding[64];
mass 99999999
//ReactionTime 50
var int user_speed;
maxstepheight 0
damagefactor "Normal", 0.0
Obituary "$OB_SUPERARROW"
Translation "192:192=4:4", "198:198=211:211"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_ChangeFlag(RIPPER,1)
TNT1 A 0 ACS_NamedExecuteWithResult("core_targetyawpitch",0,0)//A_Cleartarget
TNT1 A 0 A_SetPitch(pitch * -1)
TNT1 A 0 A_SetUserVar("user_speed",1)
TNT1 A 1
TNT1 A 0 A_ChangeFlag("SOLID",true)
TNT1 A 0 A_Stop

Waiting:
SARW A 0 //A_SpawnItemEx("Item2Detect", 0, 0, 32)
SARW A 20 ACS_NamedExecuteAlways("core_stickyLifts",0,STICKYMODE_GUTSLIFT)//A_SetUserVar("user_countdown", user_countdown + 1)
SARW A 0 //A_JumpIf(user_countdown == 50, "Death")
SARW A 0 //A_JumpIfInventory("Item2Flag", 1, "MoveStart")
SARW A 0 A_ChangeFlag("SOLID",false)
//Loop
MoveStart:
SARW A 0 A_ChangeVelocity(Cos(pitch * -1)*user_speed, 0, -sin(pitch *-1)*user_speed,CVF_RELATIVE)
SARW AAA 1 A_GiveInventory("SuperArrowCarry") //SARW A 3 ACS_NamedExecuteAlways("core_stickyLifts",0,STICKYMODE_GUTSLIFT)
SARW A 0 A_JumpIf(user_speed > 19,"Spawn2")
SARW A 0 A_SetUserVar("user_speed",user_speed * 2)
loop
Spawn2:
SARW A 1 A_GiveInventory("SuperArrowCarry")
goto Spawn2
XDeath:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1")
stop
Death:
TNT1 A 0 A_CheckFloor("XDeath")
TNT1 A 0 A_CheckCeiling("Death.Ceiling")
CONC B 0 A_SpawnItemEx("SuperArrowStickWall",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
stop
Death.Ceiling:
TNT1 A 0 A_SpawnItemEx("SuperArrowStickCeiling",0,0,-10,0,0,0,0,SXF_TRANSFERTRANSLATION)
stop
}
}

actor SuperArrowMM5Proto : SuperArrowMM5
{
Translation "192:192=87:87", "198:198=42:42"//"211:211=42:42"
}


Actor SuperArrowStickWall : SuperArrowMM5
{
+SOLID
speed 0
-MISSILE
Damage (0)
Reactiontime 350
States
{
	Spawn:
	SARW B 0 ACS_NamedExecuteAlways("core_stickyLifts",0,STICKYMODE_GUTSLIFT)
	SARW B 0 A_GiveInventory("SuperArrowCarry2")
	Spawn2:
	SARW B 1 A_Countdown
	loop
	Death:
	goto XDeath
	
}
}

Actor SuperArrowCarry : CustomInventory
{
States
{
Pickup:
TNT1 A 0 
TNT1 A 0 A_JumpIfCloser(50,"Launch")
Goto Done
Launch:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"Pickup2")
TNT1 A 0 ACS_NamedExecuteWithResult("SuperArrowMovement")//A_ChangeVelocity(momx,momy,momz,CVF_REPLACE,AAPTR_TARGET)
Stop
Pickup2:
TNT1 A 0
Stop
}
}

Actor SuperArrowCarry2 : SuperArrowCarry
{
States
{
Launch:
TNT1 A 0 A_GiveToTarget("SuperArrowCarry2Boink")//A_ChangeVelocity(momx,momy,momz,CVF_REPLACE,AAPTR_TARGET)
Stop
}
}

Actor SuperArrowCarry2Boink : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeVelocity(0,0,momz,CVF_REPLACE)
Stop
}
}

Actor SuperArrowStickCeiling//Copy of thunderclaw peg
{
Reactiontime 350
+SHOOTABLE
+NOTAUTOAIMED
+NODAMAGE
+NODAMAGETHRUST
+NOGRAVITY
+NOBLOOD
+QUICKTORETALIATE
+FORCEXYBILLBOARD
+CANTSEEK
Health 9999
Mass 99999
Height 32
Radius 16
Speed 0
painchance 256
damagefactor "Normal", 0.0
damagefactor "ThunderClaw", 1.0
damagefactor "ThunderClawPegHelp", 1.0
Scale 2.5
States
{
Spawn:
SARW B 0
SARW B 0 A_ClearTarget
SARW B 1 A_SetPitch(90)
Spawn2:
SARW B 1 A_CountDown
loop
Pain.ThunderClaw:
Pain.ThunderClawPegHelp:
SARW B 0 A_ChangeFlag(SHOOTABLE, false)
SARW B 2 ACS_NamedExecuteAlways("core_thunderclawpeg", 0, 70)
SARW B 0 A_ClearTarget
SARW B 0 A_ChangeFlag(SHOOTABLE, true)
Goto Spawn2
Death:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1", 0, 0, 0, 0, 0, 0, 0, SXF_WEPFXCOLOR)
stop
}
}


actor ArrowShotGear : BasicProjectile
{
+FORCEXYBILLBOARD
+BRIGHT
damagetype "ArrowBuster"
Obituary "$OB_ARROWBUSTER"
Speed 54
Damage (20)
radius 20
height 16
States
{
Spawn:
ARRS ABACAD 1
Loop
Death:
ARRS F 0 A_PlaySoundEx("weapons/busters/arrowbustersplit", "Weapon")
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,165,0,0)
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,150,0,0)
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,135,0,0)
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,-135,0,0)
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,-150,0,0)
ARRS F 0 A_SpawnItemEx ("ArrowFrag1",0,0,0,54,0,0,-165,0,0)
stop
}
}

actor ArrowFrag1Gear : BasicProjectile
{
+NOINTERACTION
+FORCEXYBILLBOARD
+BRIGHT
damagetype "ArrowBuster"
Obituary "$OB_ARROWBUSTER"
Damage (7)
radius 5
height 5
scale 1.5
Speed 26
States
{
Spawn:
ARRS G 1
ARRS G 1
ARRS G 0 A_Stop
ARRS G 0 A_ChangeFlag("NOINTERACTION", 0)
ARRS GGGG 1 A_SetScale(scalex + 0.28, scaley + 0.28)
ARRS G 0 A_SpawnItemEx("ArrowFrag2Gear",0,0,0,cos(-pitch)*60,0,sin(-pitch)*60,180,0,0)
Stop
Death:
TNT1 A 0 
TNT1 A 0
stop
}
}

actor ArrowFrag2Gear : ArrowFrag1Gear
{
-NOINTERACTION
-NOCLIP
States
{
Spawn:
ARRS G 3
ARRS H 1
Goto Spawn+1
}
}


actor SuperArrowWepM : SuperArrowWep
{
States
{
Altfire:
"####" A 0 A_JumpIfInventory("IsDuo",1,"DashDash.Duo")
"####" A 0 A_JumpIf(z-floorz==0,"WhichSlide")
Goto Ready+1
WhichSlide: 
"####" A 0 A_JumpIfInventory("IsMegaman",1,"SlideSlide.MegaMan")
"####" A 0 A_JumpIfInventory("IsProtoman",1,"SlideSlide.ProtoMan")
"####" A 0 A_JumpIfInventory("IsBass",1,"DashDash.Bass")
Goto Ready+1

SlideSlide.MegaMan:
"####" D 0 A_GiveInventory("SlideThrust",1)
"####" DDDEEEFFFFFFFF 1
"####" E 3 SetPlayerProperty(0,0,0)
"####" D 3 A_TakeInventory("MegaSlide",1)
Goto Ready+1

SlideSlide.ProtoMan:
"####" D 0 A_GiveInventory("SlideThrust",1)
"####" DDDEEEFFFFFFFF 1
"####" E 3 SetPlayerProperty(0,0,0)
"####" D 3 A_TakeInventory("MegaSlide",1)
Goto Ready+1

DashDash.Bass:
"####" D 0 A_JumpIfInventory("BassDashCoolDown",1,"NoDash")
"####" D 0 A_JumpIfInventory("NoAltfire",1,"NoDash")
Goto BassDash
NoDash:
"####" D 0
Goto Ready+1
BassDash:
"####" D 2
"####" D 0 A_GiveInventory("BassAltPickUp",1)
"####" EFF 2 A_spawnItemEx("BassDashDustV",-16)
"####" FFFED 2
"####" E 0 A_JumpIf(z-floorz>0, "AirHold")
Goto BassDashFinish
AirHold:
"####" A 0 A_JumpIf(z-floorz<=0, "BassDashFinish")
"####" A 1 A_WeaponReady(WRF_NOSECONDARY)
loop
BassDashFinish:
"####" A 1
Goto Ready+1

DashDash.Duo:
"####" A 0 A_JumpIfInventory("ShoulderTackleCooldown",1,"NoAlt")
"####" A 0 A_JumpIfInventory("NoAltfire",1,"NoAlt")
"####" A 0 A_GiveInventory("DuoAltfirePickUp",1)
"####" D 1 Offset(-120,39)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(-60,35)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(20,33)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(22,35)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(24,36)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,37)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,38)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,39)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,40)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,41)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(26,42)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(24,43)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(22,44)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(20,45)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(15,46)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" D 1 Offset(10,47)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" E 1 Offset(-15,49)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" E 1 Offset(-39,51)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" E 1 Offset(-78,53)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" Z 1 Offset(-78,200)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" Z 1 Offset(-78,200)ACS_NamedExecuteWithResult("VC_SetState",2) "####" A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz)
"####" A 1 Offset(78,98)ACS_NamedExecuteWithResult("VC_SetState",0)
"####" A 1 Offset(39,62)SetPlayerProperty(0,0,4)
"####" A 1 Offset(15,41)
NoAlt:
"####" A 2
Goto Ready+1
}
}
//give SuperArrowWepM; give ThunderClawWepM