actor GroovitySparkWep_NormalBar : NormalBar{args 218,206}
actor GroovitySparkWep : BaseMM8BDMWep
{
Weapon.AmmoUse 5
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_GROOVITYSPARK"
Obituary "$OB_GROOVITYSPARK"
Tag "$TAG_GROOVITYSPARK"
weapon.ammotype "GroovitySparkAmmo"
inventory.icon "GRVSICON"
States
{
SpawnLoop:
GRVS Z 1
loop
Ready:
GRVS A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_GROOVITYSPARK)
GRVS A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
GRVS A 0 
goto DeselectSwap
Select:
GRVS A 0 
goto SelectSwap
Fire:
GRVS A 0 A_JumpIfNoAmmo("NoAmmo")
GRVS A 0 //A_PlaySoundEx("alter/groovityspark", "Weapon")
GRVS A 0 A_GiveInventory("GroovitySpark_P",1)
GRV0 ABCDEF 3
GRV0 G 16
GRV0 G 0 ACS_NamedExecuteWithResult("core_clientsound", CSND_CRYSTALRELOAD) // A_PlaySoundEx("weapons/mm5/crystaleyereload", "Weapon")
GRV0 HIJK 2
GRVS A 0 A_Refire
Goto Ready+1
NoAmmo:
GRVS A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

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

actor GroovitySpark_P : CustomInventory
{
States
{
Pickup:
GRVS A 0 A_GiveInventory("GroovitySparkFlag",1)
GRVS A 0 A_FireCustomMissile("GroovitySpark",0,1,8,0)
stop
}
}

actor GroovitySparkFlag : PowerUp {powerup.duration 7}

actor GroovitySpark : BasicProjectile
{
+BRIGHT
PROJECTILE
Obituary "$OB_GROOVITYSPARK"
Damagetype "GroovitySpark"
-NOGRAVITY
+HEXENBOUNCE
+CANBOUNCEWATER
+NOTARGETSWITCH
-NOBOUNCESOUND
Bouncecount 15
SEESOUND "weapon/groovityspark"
+RIPPER
//+USEBOUNCESTATE
Bouncefactor 1.0
Wallbouncefactor 1.0
Reactiontime 112
Damage (CallACS("vile_cbm_damage",6))
Radius 16
Height 16
Speed 24//14
Scale 2.5
States
{
Spawn:
GVSP A 0
GVSP A 0 ThrustThingZ(0,30,0,1)
GVSP A 0 A_GiveInventory("WeaponCharge",8)
GVSP AABBAABB 1
SpawningLoop:
GVSP A 0 A_JumpIfInTargetInventory("GroovitySparkFlag",1,"Destroy")
GVSP A 0 A_JumpIfInventory("WeaponCharge",28,"Unleash")
GVSP A 0 A_GiveInventory("WeaponCharge",1)
GVSP A 1 A_Countdown
GVSP A 0 A_JumpIfInTargetInventory("GroovitySparkFlag",1,"Destroy")
GVSP A 0 A_JumpIfInventory("WeaponCharge",28,"Unleash")
GVSP A 0 A_GiveInventory("WeaponCharge",1)
GVSP A 1 A_Countdown
GVSP B 0 A_JumpIfInTargetInventory("GroovitySparkFlag",1,"Destroy")
GVSP B 0 A_JumpIfInventory("WeaponCharge",28,"Unleash")
GVSP B 0 A_GiveInventory("WeaponCharge",1)
GVSP B 1 A_Countdown
GVSP B 0 A_JumpIfInTargetInventory("GroovitySparkFlag",1,"Destroy")
GVSP B 0 A_JumpIfInventory("WeaponCharge",28,"Unleash")
GVSP B 0 A_GiveInventory("WeaponCharge",1)
GVSP B 1 A_Countdown
loop

Unleash:
GVSP A 0 A_TakeInventory("WeaponCharge",200)
GVSP A 0 A_SpawnItemEx("GroovitySparkUnleash",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
GVSP A 0 A_GiveInventory("Cutterflag",1)
GVSP A 0 A_JumpIfInventory("CutterFlag",4,"Destroy")
Goto SpawningLoop
Destroy:
Death:
TNT1 A 0 A_SpawnItemEx("ExplosionEffect2")
TNT1 A 5 A_Stop
stop
}
}

actor GroovitySparkUnleash : BasicProjectile
{
damage (0)
-NOINTERACTION
Obituary "$OB_GROOVITYSPARK"
damagetype "GroovitySpark"
renderstyle none
Reactiontime 8//Sections
Args 27,8 //speed, lines
//Speed/lines
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(true, 1)
stop
TNT1 A 0 A_SetArg(3,Args[1]+1)
TNT1 A 0 A_SetArg(4,Reactiontime)
TNT1 A 0 A_PlaySoundEx("weapon/groovityspark2", "Weapon")
SpawnL:
TNT1 A 0 A_SpawnItemEx("GroovitySparkShot",Cos(90-180/Args[3]*Args[1])*Args[0],0,Sin(90-180/Args[3]*Args[1])*Args[0],Cos(90-180/Args[3]*Args[1])*Args[0],0,Sin(90-180/Args[3]*Args[1])*Args[0],360/Args[4]*Reactiontime,SXF_TRANSFERPOINTERS)
TNT1 A 0 A_SetArg(1,Args[1]-1)
TNT1 A 0 A_JumpIf(Args[1]>0,"SpawnL")
TNT1 A 0 A_Countdown
TNT1 A 0 A_SetArg(1,Args[3]-1)
TNT1 A 0 A_JumpIf(Args[1]>0 && Args[3]>0,"SpawnL")
//stop
Death:
TNT1 A 0 A_SpawnItemEx("GroovitySparkShot",0,0,Args[0],0,0,Args[0],0,SXF_TRANSFERPOINTERS)
TNT1 A 0 A_SpawnItemEx("GroovitySparkShot",0,0,-Args[0],0,0,-Args[0],0,SXF_TRANSFERPOINTERS)
TNT1 A 5
stop
}
}


actor GroovitySparkShot : BasicProjectile
{
+BRIGHT
PROJECTILE
Obituary "$OB_GROOVITYSPARK"
Damagetype "GroovitySpark"
+THRUSPECIES
-NOGRAVITY
Speed 40
Damage (CallACS("vile_cbm_damage",9))
radius 12
height 12
scale 3.75
gravity 2
States
{
Spawn:
GVSP C 0
TNT1 A 0
Spawn2:
GVSP CD 2
loop
}
}
