actor TrailsparkNeedleWep_NormalBar : NormalBar{args 200, 41}
actor TrailsparkNeedleWep_ScriptBar : ScriptBar {}
Actor TrailsparkNeedleWep : BaseMM8BDMWep
{
//$Category MM8BDME-Weapons
//$Title Trailspark Needle
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_TRAILSPARKNEEDLE"
Tag "$TAG_TRAILSPARKNEEDLE"
Inventory.Pickupmessage "$PU_TRAILSPARKNEEDLE"
weapon.ammotype "TrailsparkNeedleAmmo"
inventory.icon "CNEDICON"
States
{
SpawnLoop:
CNED A -1
loop
Ready:
CNEH A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_TRAILSPARKNEEDLE)
CNEH AA 1 A_WeaponReady
Goto Ready+1
ReadyC:
Goto Ready+1
Deselect:
CNEH A 0
Goto DeselectSwap
Select:
CNEH A 0
goto SelectSwap
Fire:
CNEH A 0 A_JumpIfNoAmmo("NoAmmo")
CNEH B 2 Offset(9, 40)
CNEH B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
CNEH B 0 A_SpawnItemEx("TrailsparkNeedleA",0,0,0,0,0,0,0)
CNEH B 0 A_SpawnItemEx("TrailsparkNeedleA",0,0,0,0,0,0,180)
CNEH B 3 Offset(18, 54)
CNEH B 3 Offset(20, 56)
CNEH B 3 Offset(22, 58)
CNEH B 3 Offset(24, 52)
CNEH B 2 Offset(14, 44)
CNEH B 0 A_PlaySoundEx("weapon/cneedle","Weapon")
CNEH B 0 A_JumpIfInventory("TrailsparkNeedleCharge",4,"Fire5")
CNEH B 0 A_JumpIfInventory("TrailsparkNeedleCharge",3,"Fire4")
CNEH B 0 A_JumpIfInventory("TrailsparkNeedleCharge",2,"Fire3")
CNEH B 0 A_JumpIfInventory("TrailsparkNeedleCharge",1,"Fire2")
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",0,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",180,0,0,0)
Afterfire:
CNEH C 0 A_GiveInventory("TrailsparkNeedleCharge",1)
CNEH B 1 Offset(12, 38)
CNEH B 1 Offset(10, 34)
CNEH C 2 Offset(2, 32)
CNEH C 2 Offset(-3, 32)
CNEH C 2 Offset(-8, 28)
CNEH C 6 Offset(-12, 24)
CNEH E 0 A_TakeInventory("WeaponCharge", 9999)
CNEH C 2 Offset(-8, 28)
CNEH B 2 Offset(-2, 30)
//CNEH B 11 A_WeaponReady(14)
CNEH B 0 A_JumpIfNoAmmo("Nomorecharge")
CNEH A 0 A_Refire("Fire")
Nomorecharge:
CNEH A 0 A_TakeInventory("TrailsparkNeedleCharge",5)
Goto Ready+1
Fire2:
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",4,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-4,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",176,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",184,0,0,0)
Goto Afterfire
Fire3:
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",15,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",0,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-15,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",165,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",180,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",195,0,0,0)
Goto Afterfire
Fire4:
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",15,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",4,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-4,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-15,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",165,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",176,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",184,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",195,0,0,0)
Goto Afterfire
Fire5:
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",15,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",8,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",0,1,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-8,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",-15,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",165,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",172,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",180,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",188,0,0,0)
CNEH C 0 A_FireCustomMissile("TrailsparkNeedleB",195,0,0,0)
Goto Afterfire

NoAmmo:
CNEH A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

Actor TrailsparkNeedleAmmo : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 28
	+INVENTORY.IGNORESKILL
}

actor TrailsparkNeedleCharge : Inventory
{
    inventory.amount 1
    inventory.maxamount 4
}

actor TrailsparkNeedleA : BasicProjectile
{
PROJECTILE
Damage 0
radius 0
height 0
species "TrailsparkNeedle"
+DONTSPLASH
+NOINTERACTION
scale 3.0
damagetype "TrailsparkNeedle"
Obituary "$OB_TRAILSPARKNEEDLE"
States
{
Spawn:
CNED B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"End")
CNED B 0 A_GiveInventory("CutterFlag",1)
CNED B 0 A_SpawnItemEx("TrailsparkNeedleHurtbox",0,0,0)
CNED B 0 A_Warp(AAPTR_TARGET,56,0,34,30,WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
CNED B 1 A_JumpIfInventory("CutterFlag",14,"End")
loop
End:
CNED B 0 /*A_SpawnItemEx("TrailsparkNeedleHurtbox",0,0,0)
CNED B 1 A_Warp(AAPTR_TARGET,48,0,34,30,WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
CNED B 0 A_SpawnItemEx("TrailsparkNeedleHurtbox",0,0,0)
CNED B 1 A_Warp(AAPTR_TARGET,48,0,34,30,WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
CNED B 0 A_SpawnItemEx("TrailsparkNeedleHurtbox",0,0,0)
CNED B 1 A_Warp(AAPTR_TARGET,48,0,34,30,WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
CNED B 0 A_SpawnItemEx("TrailsparkNeedleHurtbox",0,0,0)
CNED B 1 A_Warp(AAPTR_TARGET,48,0,34,30,WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)*/
stop
}
}

actor TrailsparkNeedleHurtbox
{
+MISSILE
Height 48
Radius 40
health 9999
painchance 999
Damage (0)
+THRUGHOST
+RIPPER
+DONTBLAST
+DONTRIP
+SHOOTABLE
+BOUNCEONFLOORS
BounceFactor 0.8
+BOUNCEONWALLS
WallBounceFactor 0.1
+DONTDRAIN
+NOGRAVITY
+THRUSPECIES
species "TrailsparkNeedle"
damagetype "TrailsparkNeedle"
Obituary "$OB_TRAILSPARKNEEDLE"
DamageFactor "TrailsparkNeedle", 0.0
Speed 5
scale 3.0
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(CallACS("vile_cbm_damage",3),40,0,0,24)
TNT1 A 4 A_Stop
stop
pain:
TNT1 A 0 A_PlaySound("item/protoreflect")
TNT1 A 1 A_SpawnItemEx("TrailSparkNeedleShieldFX",0,0,0)
stop
}
}

actor TrailsparkNeedleB : BasicProjectile
{
PROJECTILE
+RIPPER
+THRUSPECIES
species "TrailsparkNeedle"
Radius 18
Height 18
damagetype "TrailsparkNeedleShot"
Obituary "$OB_TRAILSPARKNEEDLE"
scale 3.0
damage (CallACS("vile_cbm_damage",6))
speed 38
translation "198:198=200:200"
States
{
Spawn:
CNED CDEF 1
loop
Death:
TNT1 A 0 A_SpawnItemEx("ElectrifyEffect")
TNT1 AA 0 A_SpawnItemEx("TrailsparkNeedleB_SparkFX",random(-12,12),random(-19,19),random(0,9)+2,random(-24,24)+1,random(-32,32)+1,random(-12,12)+3,random(0,180))
TNT1 A 1 A_Stop
Stop 
}
}

actor TrailsparkNeedleB_SparkFX : SparkShock
{
Renderstyle Add
+NOGRAVITY
+NOINTERACTION
Scale 2.0
States
{
Spawn:
TNT1 A 0
TNT1 A 1
Spawn_L:
CNED CDEFCDEF 1 A_SetScale(scalex - 0.3, scaley - 0.3)
stop
Crash: XDeath:
Floor: Ceiling: Wall:
Death:
Death_L:
CNED CDEF 1 A_Fadeout(0.1)
loop
}
}


actor TrailSparkNeedleShieldFX : BasicGraphicEffect
{
scale 2.5
+NOINTERACTION
+CLIENTSIDEONLY
alpha 0.9
renderstyle add
+BRIGHT
states
{
SpawnFrame:
CNED G 0 A_SetScale(scaleX + 0.2, 3.0) 
CNED G 1 A_FadeOut(0.1)
loop
}
}