actor Ballade : VCBaseClass
{
	Player.ScoreIcon "BALLMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "IsFromGB3"
	player.soundclass "balladec"
	player.displayname "Ballade"
	player.jumpz 12
	player.forwardmove 0.85, 0.85
	player.sidemove 0.83, 0.83
	player.startitem "BalladeCrackerBoss"
	player.startitem "CanThirdFire", 1
	player.startitem "UltimateAttackItem3", 1
	player.startitem "UltSoundWatcherSpawn3"
	player.startitem "Base28Ammo", 28
	player.startitem "BaseAltfireAmmo", 112
	Player.ViewHeight 50
	States
	{
		Spawn:
		BALD A 0
		BALD A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Spawn2")
		BALD B 1 A_JumpIf(z-floorz>0, "Jumping")
		BALD A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+3
		
		Spawn2:
		BAL2 A 0
		BAL2 A 0 A_JumpIf(momx>0.1||momy>0.1||momx<-0.1||momy<-0.1,"See2")
		BAL2 B 1 A_JumpIf(z-floorz>0, "Jumping")
		BAL2 A 0 A_JumpIf(momx>0.1||momy>0.1||momx<-0.1||momy<-0.1,"See2")
		BAL2 A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn2+3
		
		See:
		BALD B 0 A_JumpIfInventory("BaseCustomFlag1",1,"See2")
		BALD BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn

		See2:
		BAL2 BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping2")
		Goto Spawn2
		
		Jumping:
		BALD I 0 A_JumpIfInventory("BaseCustomFlag1",1,"Jumping2")
		BALD I 1 A_JumpIf(z-floorz<=0, "Spawn")
		loop

		Jumping2:
		BAL2 I 1 A_JumpIf(z-floorz<=0, "Spawn2")
		wait
		
		Animation3:
		Missile:
		BALD F 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2")
		BALD FFFFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		Goto Spawn+1
		
		Missile2:
		BAL2 FFFFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn2+1
		
		JumpingMissile:
		BALD K 0 A_JumpIfInventory("BaseCustomFlag1",1,"JumpingMissile2")
		BALD JJJJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
		goto Spawn+2
		
		JumpingMissile2:
		BAL2 JJJJJJJ 1 A_JumpIf(z-floorz<=0, "Missile2")
		goto Spawn2+2
		
		Animation1:
		BALD G 4
		BALD K 9
		BAL2 K 9
		BAL2 G 4
		goto Spawn2
		
		Animation2:
		BAL2 G 4
		BAL2 K 5
		BALD K 5
		BALD G 4
		goto Spawn
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		BALD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		BALD H 0 A_JumpIfInventory("BaseCustomFlag1",1,"ClassPain2")
		BALD HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassPain2:
		BAL2 HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn2+1
		ClassDeath:
		BALD H 0 A_JumpIfInventory("BaseCustomFlag1",1,"ClassDeath2")
		BALD H 20 ACS_ExecuteAlways(999,0,0)
		BALD H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMMV", 0, 0, 32, 0, 0, 0, 0, 1)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassDeath2:
		BAL2 H 20 ACS_ExecuteAlways(999,0,0)
		BAL2 H 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMMV", 0, 0, 32, 0, 0, 0, 0, 1)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		BALD A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("BalladeCrackerWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("BalladeCrackerWepM")
		goto ClassDeath
	}
}

actor BalladeCrackerBoss : VCBaseWeapon 
{
+WEAPON.NOAUTOAIM
Obituary "$OB_BALLADE1"
weapon.ammotype1 "Base28Ammo"
weapon.ammouse1 4
weapon.Ammotype2 "BaseAltfireAmmo"
States
{
Ready:
TNT1 A 0
BLLD A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready.TF")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLLD A 0 A_GiveInventory("Base28Ammo",1)
BLLD A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready

Ready.TF:
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
BLLD A 0 A_GiveInventory("Base28Ammo",1)
BLLD A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready

Ready.Ult:
TNT1 A 0
BLLD A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.UltTF")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
BLLD A 0 A_GiveInventory("Base28Ammo",1)
BLLD A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready.Ult

Ready.UltTF:
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Ult")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Ult")
BLLD A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",0,4)) BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal") BLLD A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Ult")
BLLD A 0 A_GiveInventory("Base28Ammo",1)
BLLD A 0 A_GiveInventory("BaseAltfireAmmo",3)
goto Ready.Ult

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BLLD A 1 A_Lower
Loop

Select:
TNT1 A 0
TNT1 A 0 ACS_ExecuteAlways(991,0,4945)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BLLD A 1 A_Raise
Loop

User1:
BLLD A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
BLLD LMN 1
BLLD A 0 A_TakeInventory("BaseAltfireAmmo",112)
BLLD E 0 A_FireCustomMissile("BalladeHunter",0,0,0,8)
BLLD EEE 0 A_FireCustomMissile("BalladeHunter",random(-4,4),0,0,8,0,random(-4,4))
BLLD E 0 A_PlaySoundEx("weapon/crackerthrow","Weapon")
BLLD E 0 A_PlaySoundEx("weapon/pshot","Body")
BLLD O 19
BLLD P 2
goto Ready

User1.Ult:
BLLD A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
BLLD LMN 1
BLLD A 0 A_TakeInventory("BaseAltfireAmmo",56)
BLLD E 0 A_FireCustomMissile("BalladeHunterV2",0,0,0,8)
BLLD E 0 A_PlaySoundEx("weapon/crackerthrow","Weapon")
BLLD E 0 A_PlaySoundEx("weapon/coilfire2","Body")
BLLD O 17
BLLD P 2
BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
goto Ready.Ult

Fire:
BLLD A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Fire2")
BLLD E 0 A_FireCustomMissile("MiniBalladeCracker",0,1,1,8)
BLLD A 1 Offset(1,33)
BLLD A 1 Offset(2,34)
BLLD A 1 Offset(3,35)
BLLD E 0 A_PlaySoundEx("weapon/minicrackerthrow","Weapon")
BLLD CCDDEEFFBBAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
goto Ready

Fire2:
BLLD E 0 A_FireCustomMissile("BalladeCrackerV2",0,0,1,8)
BLLD A 1 Offset(1,33)
BLLD A 1 Offset(2,34)
BLLD A 1 Offset(3,35)
BLLD E 0 A_PlaySoundEx("weapon/crackerthrow","Weapon")
BLLD CCDDEEFFBBAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE)
BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
goto Ready.Ult

Altfire:
BLLD A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Altfire2")
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
BLLD B 0 A_CheckFloor("Altfire.Ground")
BLLD A 0 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"Altfire.Ground")//A_CheckFloor("Altfire.Ground")
BLLD B 0 A_PlaySoundEx("weapon/minicrackermine","Weapon")
BLLD B 0 A_FireCustomMissile("MiniBalladeMine1",0,0,0,-8)
BLLD B 0 A_TakeInventory("Base28Ammo",4)
BLLD HGGGGHA 2
goto Ready

Altfire.Ground:
BLLD A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Altfire2.Ground")
BLLD B 0 A_PlaySoundEx("weapon/minicrackermine","Weapon")
BLLD B 0 A_ChangeVelocity(CallACS("VC_XYMob",20),0,8,CVF_REPLACE|CVF_RELATIVE)
BLLD B 0 A_FireCustomMissile("MiniBalladeMine2",0,0,0,-8)
BLLD B 0 A_TakeInventory("Base28Ammo",4)
BLLD HGGGGGHA 2
goto Ready

Altfire2:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready.Ult")
BLLD B 0 A_PlaySoundEx("weapon/crackermine","Weapon")
BLLD B 0 A_ChangeVelocity(CallACS("VC_XYMob",12),0,5,CVF_RELATIVE)//A_ChangeVelocity(12,0,5,CVF_REPLACE|CVF_RELATIVE)
BLLD B 0 A_FireCustomMissile("BalladeMineV21",0,0,0,-8)
BLLD HGGGGHA 2
BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
goto Ready.Ult

Altfire2.Ground:
BLLD B 0 A_PlaySoundEx("weapon/crackermine","Weapon")
BLLD B 0 A_ChangeVelocity(CallACS("VC_XYMob",20),0,8,CVF_REPLACE|CVF_RELATIVE)
BLLD B 0 A_FireCustomMissile("BalladeMineV22",0,0,0,-8)
BLLD B 0 A_TakeInventory("Base28Ammo",4)
BLLD HGGGGGHA 2
BLLD A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ReturnToNormal")
goto Ready.Ult

UltimateAttack:
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,117)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",1)
TNT1 A 0 A_GiveInventory("BalladeUltCooldown")
PNKA A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
CUTA A 0 A_PlaySoundEx("weapon/combatmode","Weapon")
TNT1 A 0 A_TakeInventory("UltAttackFlag")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_GiveInventory("HalfHalfDamageProtection")
TNT1 A 0 A_GiveInventory("BaseCustomFlag1")
BLLD IJKKKKKKKKKKKKKKKKKKKKKJIA 1 A_Stop
BLLD A 0 A_GunFlash
BLLD A 0 A_ChangeFlag("INVULNERABLE",0)
goto Ready.Ult

ReturnToNormal:
PNKA A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
CUTA A 0 A_PlaySoundEx("weapon/balladereturn","Weapon")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
BLLD IJKKKKKKKKKKKKKJIA 1 A_Stop
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
BLLD A 0 A_ChangeFlag("INVULNERABLE",0)
goto Ready

Flash:
TNT1 A 0 A_GiveInventory("BalladeUltCooldown")
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 2 A_TakeInventory("MediumUltimateAmmo",1)
TNT1 A 0 A_JumpIfInventory("MediumUltimateAmmo",1,"Flash")
goto NoFlash

NoFlash:
TNT1 A 0 A_GiveInventory("BaseCustomFlag2") //For cancelling the Ultimate
TNT1 A 0 A_TakeInventory("HalfHalfDamageProtection")
stop
}
}

actor MiniBalladeCracker : BalladeCracker
{
Obituary "$OB_BALLADE1"
damage (5)
speed 45
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA WXYZ 3
loop
Death:
MEXP A 0 A_Stop
MEXP A 0 A_PlaySoundEx("weapon/minicrackerexplode", "Weapon")
MEXP A 0 A_Explode(15, 64, 0)
MEXP ABCDEFGHIJKLMNOP 1
stop
}
}

actor BalladeCrackerV2 : BalladeCracker
{
radius 16
height 16
speed 90
Obituary "$OB_BALLADE4"
damagetype "BalladeUlt"
damage(5)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA ABCD 3 A_GiveToTarget("BalladeUltCooldown")
loop
Death:
BALA A 0 A_Stop
BALA A 0 A_PlaySoundEx("weapon/crackerexplode", "Weapon")
BALA A 0 A_Explode(35, 128, 0)
NAPA EFGHIJKLMNOPQRS 1
stop
}
}

actor MiniBalladeMine1 : MiniBalladeCracker
{
Obituary "$OB_BALLADE2"
damagetype "BalladeDrop"
-NOGRAVITY
speed 0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA WXYZ 2
loop
Death:
MEXP A 0 A_CheckFloor("Death.Floor")
MEXP A 0 A_Stop
MEXP A 0 A_ChangeFlag("NOINTERACTION",1)
MEXP A 0 A_PlaySoundEx("weapon/minicrackerexplode", "Weapon")
MEXP A 0 A_Explode(20, 64, 0)
MEXP ABCDEFGHIJKLMNOP 1
stop
Death.Floor:
MEXP A 0 A_SpawnItemEx("MiniBalladeMine2")
stop
}
}

actor MiniBalladeMine2 : MiniBalladeCracker
{
Obituary "$OB_BALLADE2"
damagetype "BalladeFloor"
+FLOORHUGGER
speed 0
reactiontime 25
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA WXYZ 2
BALA W 0 A_Countdown
loop
Death:
MEXP A 0 A_Stop
MEXP A 0 A_ChangeFlag("NOINTERACTION",1)
MEXP A 0 A_PlaySoundEx("weapon/minicrackerexplode", "Weapon")
MEXP A 0 A_Explode(20, 64, 0)
MEXP ABCDEFGHIJKLMNOP 1
stop
}
}

actor BalladeMineV21 : MiniBalladeCracker
{
damagetype "BalladeUlt"
Obituary "$OB_BALLADE5"
damage(5)
radius 16
height 16
-NOGRAVITY
speed 0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA ABCD 2 A_GiveToTarget("BalladeUltCooldown")
loop
Death:
NAPA E 0 A_CheckFloor("Death.Floor")
NAPA E 0 A_Stop
NAPA E 0 A_ChangeFlag("NOINTERACTION",1)
NAPA E 0 A_PlaySoundEx("weapon/crackerexplode", "Weapon")
NAPA E 0 A_Explode(30, 128, 0)
NAPA EFGHIJKLMNOPQRS 1
stop
Death.Floor:
MEXP A 0 A_SpawnItemEx("BalladeMineV22")
stop
}
}


actor BalladeMineV22 : MiniBalladeCracker
{
damagetype "BalladeUltFloor"
Obituary "$OB_BALLADE5"
+FLOORHUGGER
speed 0
radius 16
height 16
reactiontime 25
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BALA ABCD 2 A_GiveToTarget("BalladeUltCooldown")
BALA A 0 A_Countdown
loop
Death:
MEXP A 0 A_Stop
NAPA E 0 A_ChangeFlag("NOINTERACTION",1)
NAPA E 0 A_PlaySoundEx("weapon/crackerexplode", "Weapon")
NAPA E 0 A_Explode(30, 128, 0)
NAPA EFGHIJKLMNOPQRS 1
stop
}
}

actor BalladeHunter
{
PROJECTILE
Scale 2.5
Height 16
Radius 16
Damage(7)
+HEXENBOUNCE
+BOUNCEONWALLS
+CANBOUNCEWATER
+SKYEXPLODE
+USEBOUNCESTATE
+NOTARGETSWITCH
damagetype "BalladeHunter"
Obituary "$OB_BALLADE3"
bouncefactor 1.0
wallbouncefactor 1.0
speed 40
bouncecount 20
reactiontime 30
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BLHU ABC 2
BLHU A 0 A_Countdown
loop

Bounce:
BLHU A 1 A_ScaleVelocity(1.01)
goto Spawn

Death:
BLHU D 0 A_ChangeFlag("NOGRAVITY",1)
BLHU DEF 2 A_ChangeFlag("NOINTERACTION",1)
BLHU A 0 A_Explode(10,96,0)
MMFX BCDE 2
stop
}
}

actor BalladeHunterV2 : BalladeHunter
{
damagetype "BalladeUlt"
Obituary "$OB_BALLADE6"
-NOGRAVITY
+NOTARGETSWITCH
-USEBOUNCESTATE
gravity 0.7
scale 2.5
speed 35
damage (20)
+HEXENBOUNCE
+NOEXPLODEFLOOR
-BOUNCEONFLOORS
bouncecount 3
reactiontime 350
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
BLHU A 0 ThrustThingZ(0,0,0,1)
loopit:
BLHU A 0 A_GiveToTarget("BalladeUltCooldown")
BLHU AAAAAAAAAAAA 0 A_Countdown
BLHU DDEEFFAABBCC 1 A_JumpIf(z-floorz>0, "Air")
BLHU A 0 A_SpawnItem("BalladeHunterShooter") //Hacks for the win :^P -Fr3ak
loop
Air:
BLHU A 0 A_GiveToTarget("BalladeUltCooldown")
BLHU AAAAAA 0 A_Countdown
BLHU DEFABC 1 A_JumpIf(z-floorz<=0, "Spawn2")
BLHU A 0 A_SpawnItem("BalladeHunterShooter")
loop
}
}

actor BalladeHunterShooter
{
Obituary "$OB_BALLADE6"
scale 2.5
+NOGRAVITY
+THRUACTORS
speed 20
damage(0)
alpha 0
+DOOMBOUNCE
MONSTER
renderstyle translucent
alpha 1
radius 1
height 1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
goto Look
Look:
TNT1 A 1 A_LookEx(LOF_NOSOUNDCHECK,1,600,600,360,"Missile")
stop
See:
Missile:
TNT1 A 0 A_SeekerMissile(90,90)
TNT1 A 0 A_FaceTarget
TNT1 A 0 A_PlaySoundEx("weapon/MMVShot","Body")
TNT1 A 1 A_CustomMissile("BalladeHunterShot",0,0,0,0)
stop
}
}

actor BalladeHunterShot
{
Obituary "$OB_BALLADE6"
+THRUACTORS
PROJECTILE
damagetype "Ballade"
+THRUSPECIES
species "BalladeHunterType"
Damage (10)
radius 8
height 8
Speed 40
scale 2.5
States
{
Spawn:
TNT1 A 0 A_TransferPointer(AAPTR_TARGET,AAPTR_DEFAULT,AAPTR_FRIENDPLAYER,AAPTR_TARGET)
TNT1 A 0 A_TransferPointer(AAPTR_TARGET,AAPTR_DEFAULT,AAPTR_FRIENDPLAYER,AAPTR_TARGET)
TNT1 AA 0 A_GiveInventory("ProjectileCode")
BHUS A 1
loopit:
BHUS A 1 A_ChangeFlag("THRUACTORS",0)
loop
Death:
TNT1 A 0
stop
}
}

actor BalladeUltCooldown : GyroUltCooldown {}