/*

==LILK'S AXE==
Idea supplied by Terminusest13
Sprites are a model rip of the Black Axem
ranger's axe.

A merging of the old and new, Lilk's Axe is a weapon
from another era, where cold steel met with magic
to wage wars, brought into a more modern age, the 
axe has been given a new handle and a sleek look
to match the generation it now is wielded in.

However its potent magic still lingers within the
blade, capable of sending out small magic axes to
cleave anything stupid enough to stand in the 
path of it, alongside anything else nearby.
As well as being able to unleah an ethereal 
projection of itself to rebound amongst tighter areas
for the multi-tasking warrior.

and regardless of the era, a large piece of sharpened
metal to the face is usually an effective means of showing
dislike towards your fellow man or demon.
*/
Actor SkillAxe : weapon replaces chainsaw
{
	Weapon.SelectionOrder 500
	Weapon.AmmoUse 0
	weapon.ammouse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType "Skill"
	Weapon.AmmoType2 "Skill"
	scale 0.50
	+floatbob
	Inventory.PickupMessage "You've found Lilk's Axe!"
	+noalert
	Tag "Lilk's Axe"
	states
	{
	spawn:
		AXPK A 15 bright
		AXPK A 5
		loop
	select:
		TNT1 A 0
		TNT1 A 0 A_playsound ("Axe/draw",0)
	draw:
		TNT1 A 0
		SAXE AAAA 0 a_raise
		SAXE A 1 a_raise
		loop
	deselect:
		TNT1 A 0
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TNT1 A 0 a_playsound ("Axe/holster",0)
	holster:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		SAXE A 1 a_lower
		SAXE AA 0 a_lower
		loop
	deadlower:
		TNT1 A 0
		TNT1 A 0
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		wait
	ready:
		TNT1 A 0 a_jumpifinventory ("skill", 50, "axepowerup")
		TNT1 A 0 a_jumpifinventory ("skillchecker", 1, "manaready")
		SAXE A 1 a_weaponready
		loop
	axepowerup:
		TNT1 A 0 a_giveinventory ("Skillchecker",1)
		MIDL A 1 bright a_weaponready
	manaready:
		MIDL A 1 bright a_weaponready
		MIDL A 1 bright a_weaponready
		MIDL A 1 bright a_weaponready
		MIDL B 1 bright a_weaponready
		MIDL B 1 bright a_weaponready
		MIDL B 1 bright a_weaponready
	skillcheck:
		TNT1 A 0 a_jumpifinventory ("skill", 10, "manaready")
		TNT1 A 0 a_takeinventory ("skillchecker",1)
		SAXE A 1 a_weaponready
		goto ready
	fire:
		TNT1 A 0 a_jumpifinventory ("skillchecker", 1, "manaswing")
		TNT1 A 0 a_jumpifinventory ("skill", 50, "axepowerup")
		SAXE B 1
		TNT1 A 1
		AXAT A 3
		AXAT B 2 A_PlaySound("Axe/Swing")
		AXAT C 1
		AXAT D 1 A_FireCustomMissile ("axeattack")
		AXAT E 1
		AXAT F 1
		AXAT GH 1
		TNT1 A 4
		SAXE B 2
		goto ready
	manaswing:
		MIDL C 1 bright
		TNT1 A 1 
		MXAT A 3 bright
		MXAT B 2 bright A_PlaySound("Axe/Swing")
		MXAT C 1 bright
		TNT1 A 0 a_takeinventory ("skill",10)
		MXAT D 1 bright a_FireCustomMissile ("axeshot")
		TNT1 A 0 A_FireCustomMissile ("axeattack") 
		MXAT E 1 bright
		MXAT F 1 bright
		MXAT GH 1 bright
		TNT1 A 4
		MIDL C 2 bright
		goto skillcheck	
	altfire:
		SAXE A 1 a_jumpifinventory ("skillchecker",1, "boomeraxestart")
		goto ready
	boomeraxestart:
		MIDL A 1 bright a_jumpifinventory("skill", 25, "boomeraxe")
		goto skillcheck
	boomeraxe:
		MIDL C 1 bright
		TNT1 A 1 
		MXAT A 3 bright
		MXAT B 2 bright A_PlaySound("Axe/Swing")
		MXAT C 1 bright
		TNT1 A 0 a_takeinventory ("skill",25)
		MXAT D 1 bright a_FireCustomMissile ("boomeraxe")
		TNT1 A 0 A_FireCustomMissile ("axeattack") 
		MXAT E 1 bright
		MXAT F 1 bright
		MXAT GH 1 bright
		TNT1 A 2
		MIDL C 1 bright
		goto skillcheck		
	}
}

actor axeattack : fastprojectile
{
	Projectile
	speed 70
	damage 18
	obituary "%o was outskilled by %k."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+forcepain
	species "player"
	height 15
	radius 16
	+noblood
	mass 80000
	states
	{
	Spawn:
		TNT1 AA 1
		stop
	crash:
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("Axe/Wall", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,4,0,5,0)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("Axe/Hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (2,7,0,8,0)
		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		TNT1 A 5
		stop
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 7, AAPTR_TARGET)
		TNT1 A 5 
		stop
	}
}

actor Axeshot
{
    projectile
	+THRUSPECIES
	species "player"
	height 14
	radius 14
	damage 13
	Speed 40
	deathsound "firestorm/die"
    States
    {
      Spawn:
        TNT1 A 0
		TNT1 A 0 a_playsound ("firestorm/spawn",0)
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		TNT1 A 0 a_changeflag ("nogravity", 0)
     falling:
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		SPAX A 1 Bright a_spawnitem ("axetrail1")
		SPAX B 1 Bright a_spawnitem ("axetrail2")
		SPAX C 1 Bright a_spawnitem ("axetrail3")
		loop

      Crash:
      XDeath:
		TNT1 A 0 
		TNT1 A 0 a_changeflag ("nogravity", 1)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 40, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 80, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 160, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 200, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 280, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 320, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AxeSpread", 0,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
 		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		goto death
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 7, AAPTR_TARGET)
     Death:
        TNT1 A 0
		TNT1 A 0 a_changeflag ("nogravity", 1)
		TNT1 A 0 A_stop
		SPAX DDEEFF 3 Bright
        Stop
    }
}

actor axetrail1
{
	alpha 0.80
	projectile
	+clientsideonly
	+dontblast
	+noclip
	+bright
	scale 1
	states
	{
	spawn:
		SPAX A 2 a_fadeout (0.09)
		loop
	}
}

actor axetrail2 : axetrail1
{
	states
	{
	spawn:
		SPAX B 2 a_fadeout (0.09)
		loop
	}
}

actor axetrail3 : axetrail1
{
	states
	{
	spawn:
		SPAX C 2 a_fadeout (0.09)
		loop
	}
}
	 
actor AxeSpread
{
	+nointeraction
	+noclip
    projectile
	+THRUSPECIES
	+randomize
	species "player"
	speed 20
	radius 15
	height 15
	Obituary "$SAMSARA_HEXEN_OB_SLOT6"
    Damage 5//Originally 2
	deathsound "firestorm/die"
    +STRIFEDAMAGE
    States
    {
      spawn:
		TNT1 A 2
		TNT1 A 0 a_changeflag ("nointeraction", 0)
		TNT1 A 0 a_changeflag ("noclip", 0)
	  flight:
		SPAX ABC 1 bright
		TNT1 A 0 a_changeflag ("nogravity", 0)
      falling:
		SPAX ABC 1 bright
		loop
	  Death:
        TNT1 A 0
		TNT1 A 0 a_nogravity
		TNT1 A 0 a_stop
		TNT1 A 1
		TNT1 A 0 A_Explode(5, 20, 0)
		SPAX DEF 3 Bright
        Stop
    }
}

actor boomeraxe
{
	+notimefreeze
	+skyexplode
	+seekermissile
	+bounceonactors
	+thruspecies
	+hexenbounce
	+NOBOSSRIP
	+ripper
	species "player"
	projectile
	-noblockmap
	scale 0.25
	Renderstyle add
	alpha 0.80
	radius 10
	height 10
	speed 20
	damage (12)
	reactiontime 6
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_countdown
		TNT1 A 0 a_playsound ("axe/spin",0)
		BAXE ABCDEFGH 1 bright 
		TNT1 A 0 a_playsound ("axe/spin",0)
		BAXE ABCDEFGH 1 bright
	flightloop:	
		TNT1 A 0 a_countdown
		TNT1 A 0 A_SeekerMissile(90,45,SMF_LOOK|SMF_PRECISE,256)
		TNT1 A 0 a_playsound ("axe/spin",0)
		BAXE ABCDEFGH 1 bright
		TNT1 A 0 A_SeekerMissile(90,45,SMF_LOOK|SMF_PRECISE,256)
		TNT1 A 0 A_SeekerMissile(90,45,SMF_LOOK|SMF_PRECISE,256)
		TNT1 A 0 a_playsound ("axe/spin",0)
		BAXE ABCDEFGH 1 bright
		TNT1 A 0 A_SeekerMissile(90,45,SMF_LOOK|SMF_PRECISE,256)
		loop
	death:
		TNT1 A 1 a_spawnitem ("axereturn")
        stop
	}
}

actor AxeReturn : CustomInventory
{
    Radius 24
    Height 24
    Speed  25
    Damage 0       
    scale 0.25
	+NOGRAVITY
    +SEEKERMISSILE
    +DROPOFF
    +NOBLOCKMONST
	+bright
    +CANPASS
    -COUNTITEM
    +ALWAYSPICKUP
    +NOCLIP
    +FORCEXYBILLBOARD
    States
    {
    Spawn:
        TNT1 AA 0 A_ReArrangePointers(AAPTR_NULL,AAPTR_NULL,AAPTR_TARGET)
    Spawn2:
        BAXE A 1 A_SeekerMissile(20,35)
        BAXE B 1 A_SeekerMissile(20,35) 
        BAXE C 1 A_SeekerMissile(20,35)
        BAXE D 1 A_SeekerMissile(20,35)
        BAXE E 1 A_SeekerMissile(20,35)
        BAXE F 1 A_SeekerMissile(20,35)
        BAXE G 1 A_SeekerMissile(20,35)
        BAXE H 1 A_SeekerMissile(20,35)
        loop
    PickUp:
        TNT1 A 0 A_GiveInventory("skill",5)
        TNT1 A 0 A_SetBlend("red",0.2,5)
    Death:
        TNT1 A 1
        stop
    }
}

actor Skill : ammo
{
  Inventory.PickupMessage "Axe mana (you shouldn't find this)"
  Inventory.Amount 1
  Inventory.MaxAmount 50
  Inventory.Icon "BAL1A0"
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 0
  states
  {
  Spawn:
    BAL1 A -1
    stop
  }
}

actor skillchecker : inventory
{inventory.maxamount 1}
