actor GlitchShotWep_NormalBar : NormalBar{args 98,117}
actor GlitchShotWep : BaseMM8BDMWep //by MegaVile
{
//$Category MM8BDM-Weapons
//$Title Glitch Shot
//$Sprite WPCZY0
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_GLITCHSHOT"
Obituary "$OB_GLITCHSHOT"
Tag "$TAG_GLITCHSHOT"
weapon.ammotype "GlitchShotAmmo"
inventory.icon "GTCHI"
States
{
SpawnLoop:
GSHP Z -1
loop
Ready:
GSHT A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_GLITCHSHOT)
GSHT A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
GSHT A 0 
goto DeselectSwap
Select:
GSHT A 0 
goto SelectSwap
Fire:
GSHT A 0 A_JumpIfNoAmmo("NoAmmo")
GSHT A 2 
GSHT A 0 A_PlaySoundEx("weapon/glitchshot","Weapon")
GSHT G 0 A_FireCustomMissile("GlitchShot",0,1,8,0)
GSHT BC 3
GSHT A 12
GSHT B 0 A_Refire
Goto Ready+1
NoAmmo:
GSHT A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

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

actor GlitchShot : BasicProjectile
{
+BRIGHT
translation "198:198=117:117", "192:192=98:98"
PROJECTILE
Radius 16
Height 16
obituary "$OB_GLITCHSHOT"
damagetype "GlitchShot"
+HEXENBOUNCE
bouncefactor 1.2
wallbouncefactor 1.2
bouncecount 2
+HITTRACER
scale 2.0
damage (CallACS("vile_cbm_damage",13))
speed 40
States
{
Spawn:
TNT1 A 0
TNT1 AAA 0 A_SpawnItemEx("GlitchShotFX",16,random(-16,16),random(-16,16),random(-0.5,0.5),random(-0.5,0.5),random(-1,1),random(0,359))
GSHP A 2
TNT1 AAAA 0 A_SpawnItemEx("GlitchShotFX",16,random(-16,16),random(-16,16),random(-0.5,0.5),random(-0.5,0.5),random(-1,1),random(0,359))
GSHP A 2
TNT1 AAAA 0 A_SpawnItemEx("GlitchShotFX",16,random(-16,16),random(-16,16),random(-0.5,0.5),random(-0.5,0.5),random(-1,1),random(0,359))
GSHP B 2
TNT1 AAAA 0 A_SpawnItemEx("GlitchShotFX",16,random(-16,16),random(-16,16),random(-0.5,0.5),random(-0.5,0.5),random(-1,1),random(0,359))
GSHP B 2
loop

XDeath:
TNT1 A 0 A_TakeInventory("GlitchShotFlag0",99,0,AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("GlitchShotPickup", 1, "Die", AAPTR_TRACER)
USGW A 0 A_GiveInventory("TracerAndTargetTeamsMatchCheck",1)
USGW A 0 A_JumpIfInventory("TracerAndTargetTeamsMatchFlag", 1, "Die")
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "GlitchTeam", AAPTR_TRACER)
stop
GlitchTeam:
TNT1 A 0 A_GiveInventory("TracerAndTargetTeamsMatchCheck",1)
TNT1 A 0 A_JumpIfInventory("TracerAndTargetTeamsMatchFlag", 1, "Die")
goto GlitchTime
GlitchTime:
TNT1 B 0 A_JumpIf(ACS_NamedExecuteWithResult("vile_usagikunaicheck",1)==0, "Die")
TNT1 B 0 A_JumpIfInventory("WeaponCharge",24,"GlitchDamage")
TNT1 B 0 A_JumpIfInventory("GlitchShotFlag0",9,"Die",AAPTR_TRACER)
TNT1 A 1 A_Warp(AAPTR_TRACER,0,0,28,0,WARPF_COPYINTERPOLATION)
TNT1 B 0 A_GiveInventory("GlitchShotPickup",1,AAPTR_TRACER)
TNT1 B 0 A_GiveInventory("WeaponCharge",1)
loop
GlitchDamage:
TNT1 B 0 A_PlaySoundEx("weapon/glitchpain","Weapon")
TNT1 B 0 A_SpawnItemEx("GlitchShotDamage")
TNT1 B 0 A_TakeInventory("WeaponCharge",999)
TNT1 B 0 A_GiveInventory("GlitchShotFlag0",1,AAPTR_TRACER)
goto GlitchTime
Die:
TNT1 A 0 A_TakeInventory("GlitchShotPickup",99,0,AAPTR_TRACER)
TNT1 A 0 A_TakeInventory("GlitchShotFlag0",99,0,AAPTR_TRACER)
stop

}
}

actor GlitchShotFX : BasicGraphicEffect
{
+BRIGHT
translation "198:198=117:117", "192:192=98:98"
+FORCEXYBILLBOARD
scale 1.0
xscale 1.0
yscale 1.0
height 1
radius 1
reactiontime 3
States
{
SpawnFrame:
D3BZ A 0
D3BZ A 0 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ A 0 A_Jump(256,"1a","1b","1c","1d")
goto 1a
1a:
D3BZ AAAAAA 1 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ A 0 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ A 1 A_FadeOut(0.1)
D3BZ A 0 A_Countdown
goto 1a+1

1b: 
D3BZ BBBBBB 1 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ B 0 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ B 1 A_FadeOut(0.1)
D3BZ B 0 A_Countdown
goto 1b+1

1c:
D3BZ CCCCCC 1 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ C 0 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ C 1 A_FadeOut(0.1)
D3BZ C 0 A_Countdown
goto 1c+1

1d:
D3BZ DDDDDD 1 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ D 0 A_SetScale(random(1.5,5.0),random(1.5,5.0))
D3BZ D 1 A_FadeOut(0.1)
D3BZ D 0 A_Countdown
goto 1d+1
}
}

actor GlitchShotDamage : BasicProjectile
{
+THRUGHOST
PROJECTILE
radius 1
height 1
damage (CallACS("vile_cbm_damage",4))
obituary "$OB_GLITCHSHOT"
damagetype "GlitchShotPoison"
States
{
Spawn:
TNT1 A 1
loop
Death:
TNT1 A 0
stop
}
}

actor GlitchShotFXPickup : CustomInventory
{
States
{
Pickup:
TNT1 A 0 
TNT1 A 0 A_JumpIfInventory("GlitchShotPickup",1,2)
TNT1 A 0 A_SpawnItemEx("GlitchShotWatcher")
TNT1 A 0
TNT1 A 0
stop
}
}

actor GlitchShotWatcher : BasicWatcher
{
States
{
Spawn:
TNT1 A 0 
TNT1 A 1 A_GiveToTarget("GlitchShotSPFX",1)
TNT1 A 0 A_JumpIfInTargetInventory("GlitchShotPickup",1,"Spawn")
stop
}
}

actor GlitchShotSPFX : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 AA 0 A_SpawnItemEx("GlitchShotFX",32,random(-32,32),random(-32,32),random(-1,1),random(-1,1),random(-2,2),random(0,359),SXF_NOCHECKPOSITION)
stop
}
}

actor GlitchShotFlag0 : CutterFlag {}
actor GlitchShotFlag2 : CutterFlag {}

actor GlitchShotPickup : PowerProtection  { damagefactor "Normal", 1.50  powerup.duration -7 }