//This weapon isn't a joke anymore ~BLOODWOLF

ACTOR DSweap2 : BrutalWeapon
{
	Obituary "%o was torn apart by %k's Dragonslayer."
    AttackSound "None"
    Inventory.PickupSound "AXEDRAW"
	Inventory.Pickupmessage "$GOTDS"
	+WEAPON.NOAUTOAIM
	+WEAPON.NOALERT
	+WEAPON.AXEBLOOD
	+WEAPON.MELEEWEAPON
	+WEAPON.NO_AUTO_SWITCH
    +FORCEXYBILLBOARD
	+WEAPON.CHEATNOTWEAPON
	damagetype Saw
	Weapon.SelectionOrder 2000
	Scale 0.15
	Tag "Dragon Slayer"
	States
	{
	
	Ready3:
	Ready:
        TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
        TNT1 A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		TNT1 A 0 A_JumpIfInventory("Salute1", 1, "Salute")
		TNT1 A 0 A_JumpIfInventory("Salute2", 1, "Salute")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"TossGrenade")
		TNT1 A 0 A_JumpIfInventory("StartDualWield",1,"DualWield")
		DSBA DEFE 2 A_WeaponReady
		Loop
		
	Select:
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("FistsSelected",1)
		TNT1 A 0 A_Giveinventory("SawSelected",1)
		TNT1 A 0 A_Takeinventory("ShotgunSelected",1)
		TNT1 A 0 A_Takeinventory("SSGSelected",1)
		TNT1 A 0 A_Takeinventory("MinigunSelected",1)
		TNT1 A 0 A_Takeinventory("PlasmaGunSelected",1)
		TNT1 A 0 A_Takeinventory("RocketLauncherSelected",1)
		TNT1 A 0 A_Takeinventory("GrenadeLauncherSelected",1)
		TNT1 A 0 A_Giveinventory("HasCutingWeapon",1)
		TNT1 A 0 A_Takeinventory("BFGSelected",1)
		TNT1 A 0 A_Takeinventory("BFG10kSelected",1)
		TNT1 A 0 A_Takeinventory("RailGunSelected",1)
		TNT1 A 0 A_Takeinventory("SubMachineGunSelected",1)
		TNT1 A 0 A_Takeinventory("RevenantLauncherSelected",1)
		TNT1 A 0 A_Takeinventory("LostSoulSelected",1)
		TNT1 A 0 A_Takeinventory("FlameCannonSelected",1)
		TNT1 A 0 A_Takeinventory("HasBarrel",1)
		TNT1 A 0 A_TakeInventory("DSWeap",1)
		TNT1 A 1 A_Raise
		TNT1 AAAAAA 0 A_Raise
		Goto SelectAnimation
		
	SelectAnimation:
		TNT1 A 1
	    DSLB A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
        DSLB A 0 A_PlaySOund("IGNITE")
        DSLB ABCDEFG 2 BRIGHT
        DSLB A 0 A_GunFlash
		Goto Ready

	Deselect:
		DSLB A 0 A_Takeinventory("HasCutingWeapon",1)
		DSLB A 0 A_Takeinventory("HasCutingWeapon",1)
		DSLB A 0 A_TakeInventory("TossGrenade", 1)
		DSLB A 0 A_PlaySound("EXTINGUISH")
		DSLB GFEDCBA 2 BRIGHT
		TNT1 AAAAAAAAA 0 A_Lower
		TNT1 A 1 A_Lower
		Wait
	
    Fire://Vertical right-to-left swing
		TNT1 A 0
		DSBH A 2 BRIGHT
		DSBH A 0 A_SetPitch(Pitch-2)//Up(-)Down(+)
		DSBH A 0 A_SetAngle(Angle-2)//Right(-)Left(+)
		DSBH B 2 BRIGHT
		DSBH A 0 A_SetPitch(Pitch-2)//Up(-)Down(+)
		DSBH A 0 A_SetAngle(Angle-2)//Right(-)Left(+)
		DSBH C 2 BRIGHT
		DSBH A 0 A_SetPitch(Pitch-2)//Up(-)Down(+)
		DSBH A 0 A_SetAngle(Angle-2)//Right(-)Left(+)
		DSBH D 2 BRIGHT
	Hold:
		TNT1 A 0
		DSBH E 2 BRIGHT
		DSBH E 0 A_Refire
		DSBV A 2 BRIGHT
		TNT1 A 0 A_PlaySound("weapons/gswing", 1)
		DSBV B 2 BRIGHT
		DSBV A 0 A_SetPitch(Pitch+4)
		DSBV A 0 A_SetAngle(Angle+4)
		TNT1 A 0 A_FireCustomMissile("DSAttack")
		DSBV C 2 BRIGHT
		DSBV A 0 A_SetPitch(Pitch+2)
		DSBV A 0 A_SetAngle(Angle+2)
		DSBV A 0 A_FirecustomMissile("VertSlayerMissile")
		DSBV A 0 A_SetPitch(Pitch+2)
		DSBV A 0 A_SetAngle(Angle+2)
		TNT1 A 0 A_FireCustomMissile("DSAttack")
		DSBV D 2 BRIGHT
		DSBV A 0 A_SetPitch(Pitch+4)
		DSBV A 0 A_SetAngle(Angle+4)
		TNT1 A 0 A_FireCustomMissile("DSAttack")
		DSBV E 2 BRIGHT
		DSBV A 0 A_SetPitch(Pitch+4)
		DSBV A 0 A_SetAngle(Angle+4)
		TNT1 A 0 A_FireCustomMissile("DSAttack")
		DSBV F 2 BRIGHT
		DSBV A 0 A_SetPitch(Pitch+4)
		DSBV A 0 A_SetAngle(Angle+4)
		TNT1 A 0 A_FireCustomMissile("DSAttack")
		
	EndSwingV://Return to original point of aim after a vertical attack
		TNT1 A 0
		DSBA A 0 A_SetPitch(Pitch-4)//Up(-)Down(+)
		DSBA A 0 A_SetAngle(Angle-4)//Right(-)Left(+)
		DSBA A 2 BRIGHT
		DSBA A 0 A_SetPitch(Pitch-4)//Up(-)Down(+)
		DSBA A 0 A_SetAngle(Angle-4)//Right(-)Left(+)
		DSBA B 2 BRIGHT
		DSBA A 0 A_SetPitch(Pitch-4)//Up(-)Down(+)
		DSBA A 0 A_SetAngle(Angle-4)//Right(-)Left(+)
		DSBA C 2 BRIGHT
		DSBA A 0 A_SetPitch(Pitch-2)//Up(-)Down(+)
		DSBA A 0 A_SetAngle(Angle-2)//Right(-)Left(+)
		DSBA D 2 BRIGHT A_WeaponReady(WRF_NOBOB)
		Goto Ready
		
	AltFire://Horizontal right-to-left slash
		TNT1 A 0
		DSBH A 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle-2)//Right(-)Left(+)
		DSBH B 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle-2)
		DSBH C 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle-2)
		DSBH D 2 BRIGHT
	AltHold:
		TNT1 A 0
		DSBH E 2 BRIGHT
		DSBH E 0 A_Refire
		DSBH B 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
		TNT1 A 0 A_PlaySound("weapons/gswing", 1)
		DSBH F 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle+6)//0 deg
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
		DSBH G 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle+6)
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
		DSBH H 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle+6)
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
		DSBH I 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle+6)
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
		DSBH J 2 BRIGHT
		DSBH A 0 A_SetAngle(Angle+6)
		TNT1 A 0 A_FireCustomMissile("DSAttack2")
		DSBH A 0 A_FirecustomMissile("HorzSlayerMissile")
	
	EndSwingH://Return to original point of aim after a horizontal R:L attack
		TNT1 A 0
		DSBA A 0 A_SetAngle(Angle-6)//Right(-)Left(+)
		DSBA A 2 BRIGHT
		DSBA A 0 A_SetAngle(Angle-6)
		DSBA B 2 BRIGHT
		DSBA A 0 A_SetAngle(Angle-6)
		DSBA C 2 BRIGHT
		DSBA A 0 A_SetAngle(Angle-6)
		DSBA D 2 BRIGHT A_WeaponReady(WRF_NOBOB)
		Goto Ready
	
	DualWield:
		TNT1 A 0
		TNT1 A 0 A_Takeinventory("StartDualWield",1)
	Extinguish:
		TNT1 A 0 A_GiveInventory("DSWeap")
		TNT1 A 0 A_SelectWeapon("DSWeap")
		Goto Ready3
	
	Spawn:
		DSLC P 1
		DSLC P -1
		Stop
	}
}

ACTOR VertSlayerMissile : BelphegorGreenPlasmaBall
{
	DamageType "Fire"
	Species "Marines"
	+DONTHARMSPECIES
	States
	{
	Spawn:
	    TNT1 A 0 A_SpawnItem("VioletFlare22",0,0)
		FRPV K 1 BRIGHT A_SpawnItemEx("VioletExplosionFlameTrail", 0, 0, 0, 0, 0, 0, 0, 128) 
		Loop
	
	Death:
		FRPV A 0 
		FRPV A 0 Radius_Quake (2, 54, 0, 15, 0)
		FRPV A 0 A_Explode(32, 96, 1)
        TNT1 AAAA 0 A_CustomMissile ("VioletExplosionFire", 2, 0, random (0, 360), 2, random (0, 360))
        FRPV A 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		FRPV ABCDEFGH 2 Bright
		TNT1 AAAA 2 A_CustomMissile ("BigNeoSmoke", 2, 0, random (0, 360), 2, random (0, 360))
		Stop
	}
}

ACTOR HorzSlayerMissile : GreenPlasmaBall
{
	DamageType "Fire"
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BDCheckJanitor", 0, 0, 0, 0)//Check Effects
	
	Spawn1:
		PBAL E 1 BRIGHT A_SpawnItemEx("SmallVioletFlameTrails", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 A 0 A_CustomMissile ("OldschoolRocketSmokeTrailDarker", 2, 0, random (160, 210), 2, random (-30, 30))
		Loop
		
	SpawnCheap:
	    PBAL E 1 BRIGHT A_SpawnItemEx("SmallVioletFlameTrails", 0, 0, 0, 0, 0, 0, 0, 128)
		Loop	
		
	Death:
		TNT1 A 0 A_SpawnItemEx("VioletPlasmaParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	    TNT1 A 0 A_SpawnItemEx ("DetectFloorCraterSmall",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCraterSmall",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 AA 0 A_SpawnItem("VioletFlare",0,0)
		TNT1 A 0 A_SetScale(0.7)
		TNT1 A 0 A_FadeOut(0.2)
		FRPV ABCDEFGH 2 BRIGHT
		Stop
	XDeath:
		//TNT1 AAA 0 A_SpawnItemEx("PlasmaParticle", 0, 0, 14, (0.1)*Random(10, 40), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
        TNT1 A 0 A_JumpIfCloser(220, "StopInAir")
		TNT1 A 0 A_SpawnItemEx("VioletPlasmaParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 AA 0 A_SpawnItem("VioletFlare",0,0)
	    TNT1 A 0 A_SetScale(0.7)
		TNT1 A 0 A_FadeOut(0.2)
		FRPV ABCDEFGH 2 BRIGHT
		Stop
	
	StopInAir:
		FRPV ABCDEF 1 BRIGHT
		Stop
	}
}

Actor VioletFlare : Flare_General
{
states
	{
	Spawn:
        TNT1 A 0
	    TNT1 A 0 A_Jump(128,2)
		LENV A 2 bright
		stop
		TNT1 A 0
		LENV B 2 bright
		stop
	}
}

Actor VioletFlare22 : Flare_General
{
states
	{
	Spawn:
        TNT1 A 0
	    TNT1 A 0 A_Jump(128,2)
		L2NV A 2 bright
		stop
		TNT1 A 0
		L2NV B 2 bright
		stop
	}
}

ACTOR VioletExplosionFlameTrail: ExplosionFlames
{
Scale 0.5
	States
	{
    Spawn:
	    TNT1 A 2
        EXPV CDEFG 1 BRIGHT
        Stop
	}
}

ACTOR VioletExplosionFire : GreenExplosionFire
{
	States
	{
    Spawn:
        TNT1 A 1
        EXPV ABCDEFG 3 BRIGHT
        Stop
	}
}

ACTOR SmallVioletFlameTrails: FlameTrails
{
	Scale 0.3
	States
	{
    Spawn:
	    TNT1 A 1
        FRPV CDEFGH 1 BRIGHT
        Stop
	}
}

Actor VioletPlasmaParticleSpawner: BluePlasmaParticleSpawner
{
  States
  {
  Spawn:
    TNT1 AAAA 0 A_SpawnItemEx("VioletPlasmaParticle", 0, 0, 14, (0.1)*Random(10, 40), 0, (0.1)*Random(-40, 40), Random(0, 360), 128)
    TNT1 AAAA 0 A_CustomMissile ("PlasmaSmoke", 32, 0, random (0, 360), 2, random (0, 360))
    TNT1 A 1
    Stop
  }
}

Actor VioletPlasmaParticle: BluePlasmaParticle

{
  States
  {
  Spawn:
  Death:
    SPKV A 2 Bright A_FadeOut(0.02)
    Loop
  }
}