ACTOR HuntersKnives : Weapon
{
	Weapon.SelectionOrder 600
	Weapon.AmmoType "Cell"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 40
	Weapon.SlotNumber 6
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	Inventory.PickupMessage "You got the Hunter's Knives!"
	Obituary "%k was blasted by %o."
	Inventory.RestrictedTo "Artificer"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+undroppable
	+cheatnotweapon
	+noautofire	
	Tag "Hunter's Knives"
	states
	{
	Select:
		TNT1 A 0
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Raise
        TNT1 A 1 A_Raise
		Goto Ready
	Deselect:
		"####" # 0
		"####" # 0 a_stopsound (6)
		"####" # 0 a_jumpifhealthlower (1, "deadlower")
	holster:
		"####" # 0
		"####" # 1 a_lower
		"####" # 0 a_stopsound (6)
		"####" AAA 0 a_lower
		"####" # 1 a_lower
		loop
	deadlower:
		TNT1 A 0
		TNT1 A 0
		"####" # 0 a_stopsound (6)
		TNT1 AAAAAAAAAAAAA 0 a_lower
		"####" # 0 a_stopsound (6)
		TNT1 A 1 a_lower
		wait

	
	Ready:
		TNT1 A 0
		TNT1 A 1 a_jumpifinventory ("Cell",1,"BlueKnifeCatch")
		Goto RedKnifeCatch
	
	//Ready states
	//---------
	//Blue Knife and Blue Water
	//---------
	KnifeReady1:
		"####" # 0
		CVK1 A 1 a_weaponready
		loop

	//---------
	//Blue Knife and Red Water
	//---------
	KnifeReady2:
		"####" # 0
		"####" # 0 a_jumpifinventory ("Cell", 20, "AttackEnd1")
		CVK2 A 1 a_weaponready
		"####" # 0 a_jumpifinventory ("Cell", 20, "AttackEnd1")
		loop

	//---------
	//Red Knife and Red Water
	//---------
	KnifeReady3:
		"####" # 0
		"####" # 0 a_jumpifinventory ("Cell", 20, "AttackEnd1")
		"####" # 0 a_jumpifinventory ("Cell", 1, "AttackEnd2")
		CVK3 A 1 a_weaponready
		"####" # 0 a_jumpifinventory ("Cell", 20, "AttackEnd1")
		"####" # 0 a_jumpifinventory ("Cell", 1, "AttackEnd2")
		loop
	
	
	Fire:
		"####" # 0
		"####" # 0 a_stopsound (6)
		"####" # 1 a_jumpifinventory ("Cell", 20, "BlueKnifeStart1")
		"####" # 1 a_jumpifinventory ("Cell", 1, "BlueKnifeStart2")
		goto RedKnifeStart
	BlueKnifeStart1:
		"####" # 0 a_stopsound (6)
		"####" # 0 a_jumpifinventory ("KnifeActive",1,"BlueKnifeToss")
		CVK1 BCD 1
		goto BlueKnifeToss
	BlueKnifeStart2:
		"####" # 0 a_stopsound (6)
		"####" # 0 a_jumpifinventory ("KnifeActive",1,"BlueKnifeToss")
		CVK2 BCD 1
		goto BlueKnifeToss
	
	BlueKnifeToss:
		"####" # 0 a_stopsound (6)
		CVK1 E 1
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		TNT1 A 0 a_giveinventory ("KnifeActive",1)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		CVK1 F 1 a_gunflash ("BlueTossCheck") 
		CVK1 G 1
		TNT1 A 0 a_refire ("BlueKnifeStormStart")
		CVK3 FG 1 a_weaponready
		TNT1 A 5 a_weaponready
		TNT1 A 0 a_jumpifinventory ("Cell", 1, "BlueKnifeCatch")
		goto RedKnifeCatch
	BlueTossCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("powerstrength",1,"FastBlue")
		TNT1 A 1 a_firecustommissile ("BlueKnife",0,1)
		stop
	FastBlue:
		TNT1 A 0 
		TNT1 A 1 a_firecustommissile ("FastBlueKnife",0,1)
		stop
		
	
	BlueKnifeStormStart:
		"####" # 0
		"####" # 0	a_playsound ("HunterKnife/Glyph",0)
		CVK1 HIJK 1 bright
	BlueKnifeLoop:
		CVK1 L 2 bright
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		TNT1 A 0 a_giveinventory ("KnifeActive",1)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		CVK1 M 1 bright a_firecustommissile ("BlueKnife",0,1)
		TNT1 A 0 a_refire ("BlueKnifeLoopCheck")
		CVK1 N 2 bright
		CVK1 O 2
		TNT1 A 5
		TNT1 A 0 a_jumpifinventory ("Cell",1,"BlueKnifeCatch")
		Goto RedKnifeCatch
	BlueKnifeLoopCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("Cell",1,"BlueKnifeLoop")
		CVK1 N 2 bright
		CVK1 O 2
		TNT1 A 5
		TNT1 A 0 a_jumpifinventory ("Cell",1,"BlueKnifeCatch")
		Goto RedKnifeCatch
		
	
	//Red Knife Throw
	RedKnifeStart:
		"####" # 0 a_stopsound (6)
		TNT1 A 0 a_jumpifinventory ("KnifeActive",1,"RedKnifeToss")
		CVK3 BCD 1 a_jumpifinventory ("KnifeActive",1,"RedKnifeToss")
		TNT1 A 0 a_giveinventory ("KnifeActive",1)
	RedKnifeToss:
		"####" # 0 a_stopsound (6)
		CVK3 E 1
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		CVK1 F 1 a_gunflash ("RedTossCheck") 
		CVK3 FG 1 a_weaponready
		TNT1 A 5 a_weaponready
		goto RedKnifeCatch
	RedTossCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("powerstrength",1,"FastRed")
		TNT1 A 1 a_firecustommissile ("RedKnife",0,1)
		stop
	FastRed:
		TNT1 A 0 
		TNT1 A 1 a_firecustommissile ("FastRedKnife",0,1)
		stop


	//Knife Catching Stuff
	BlueKnifeCatch:
		TNT1 A 0
		TNT1 A 0 a_playsound ("HunterKnife/Spin",6,1,1)
		CVF1 ABCDEFGHIJKLM 1 a_weaponready
		TNT1 A 0 a_stopsound (6)
		TNT1 A 6 a_weaponready
		TNT1 A 0 a_jumpifinventory ("Cell",20,"AttackEnd1")
		goto AttackEnd2
	RedKnifeCatch:
		TNT1 A 0
		TNT1 A 0 a_playsound ("HunterKnife/Spin",6,1,1)
		CVF2 ABCDEFGHIJKLM 1 a_weaponready
		TNT1 A 0 a_stopsound (6)
		TNT1 A 6 a_weaponready
		goto AttackEnd3

		
	//Raise up states after finishing attacks	
	//---------
	//Blue Knife and blue water
	//---------
	AttackEnd1:
		CVR1 ABCDE 1 a_weaponready
		goto KnifeReady1

	//---------
	//Blue Knife and Red water
	//---------
	AttackEnd2:
		CVR2 ABCDE 1 a_weaponready
		goto KnifeReady2

	//---------
	//Red Knife and Red water
	//---------
	AttackEnd3:
		TNT1 A 0 a_takeinventory ("KnifeActive",1)
		CVR3 ABCDE 1 a_weaponready
		TNT1 A 0 a_takeinventory ("KnifeActive",1)
		goto KnifeReady3


		
	Altfire:
		"####" # 0
		"####" # 0 a_stopsound (6)
		"####" # 0 a_jumpifinventory ("Cell", 20, "BlueWaterToss")
		"####" # 1 a_jumpifinventory ("Cell", 1, "RedWaterToss1")
		goto RedWaterToss2
	BlueWaterToss:
		CVW1 ABCDD 1
		TNT1 A 6
		CVW1 EF 2
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		TNT1 A 0 a_takeinventory ("Cell",20)
		CVW1 G 1 a_firecustommissile ("BlueHolyWater")
		CVW1 HIJKL 2
		TNT1 A 3
		TNT1 A 0 a_jumpifinventory ("Cell",20,"AttackEnd1")
		TNT1 A 0 a_jumpifinventory ("Cell",1,"AttackEnd2")
		goto AttackEnd3
	RedWaterToss1:
		CVW2 ABCDD 1
		TNT1 A 6
		CVW2 EF 2
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		CVW1 G 1 a_firecustommissile ("RedHolyWater")
		CVW1 HIJKL 2
		TNT1 A 3
		goto AttackEnd2
	RedWaterToss2:
		CVW3 ABCDD 1
		TNT1 A 6
		CVW2 EF 2
		TNT1 A 0 a_playsound ("HunterKnife/Throw",0)
		CVW1 G 1 a_firecustommissile ("RedHolyWater")
		CVW1 HIJKL 2
		TNT1 A 3
		goto AttackEnd3

	}
}


actor BlueKnife : fastprojectile
{
	Radius 10
	Height 3
	Speed 55
	Damage 5
	Projectile
	species "Player"
	+thruspecies
	+bright
	+randomize
	+NOEXTREMEDEATH
	scale 0.35
	states
	{
	Spawn:
		CDG1 A 1
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_playsound ("HunterKnife/Miss",0)
		TNT1 A 1
		TNT1 A 1 a_spawnitemex("BlueKnifeRebound",0,0,0,random(2,10),random(2,10),5, SXF_NOCHECKPOSITION)
		stop
	Xdeath:
		TNT1 A 0 a_setscale (1,1)
		TNT1 A random (1,2)
		TNT1 A 0 a_playsound ("HunterKnife/Hit",0)
		CH1T A 1 a_setscale (2,2)
		CH1T A 1 a_setscale (3,3)
		CH1T BCDD 1
		stop
	}
}

Actor FastBlueKnife : BlueKnife
{
	speed 125
}

actor BlueKnifeRebound
{
	+notimefreeze
	projectile
	+bounceonwalls
	+bounceonceilings
	+THRUACTORS
	+bloodlessimpact
	bouncecount 3
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+CLIENTSIDEONLY
	+painless
	+bright
	-nogravity
	gravity 1.5
	speed 40
	height 2
	bouncefactor 0.40
	radius 2
	damage (0)
	scale 0.25
	states
	{
	spawn:
		CDG1 BCDEFGHI 1 
		CDG1 BCDEFGHI 1 
		stop
	death:
		TNT1 A 1
		stop
	}
}


Actor RedKnife
{
	Radius 10
	Height 3
	Speed 40
	Damage 5
	Projectile
	species "Player"
	+thruspecies
	+bright
	+NOEXTREMEDEATH
	scale 1
	gravity 1.20
	scale 0.35
	states
	{
	Spawn:
		CDG2 A 20
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		goto falling
	Falling:
		CDG2 A 1
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 
		TNT1 A 0 a_playsound ("HunterKnife/Miss",0)
		TNT1 A 1
		TNT1 A 1 a_spawnitemex("RedKnifeRebound",0,0,0,random(2,10),random(2,10),5, SXF_NOCHECKPOSITION)
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_setscale (1,1)
		TNT1 A random (1,2)
		TNT1 A 0 a_playsound ("HunterKnife/RedKnife",0)
		CH1T A 1 a_setscale (2,2)
		CH1T A 1 a_setscale (3,3)
		CH1T BCDD 1
		stop
	}
}

actor FastRedKnife : RedKnife
{
	Speed 80
}


actor RedKnifeRebound : BlueKnifeRebound
{
	states
	{
	spawn:
		CDG2 BCDEFGHI 1 
		CDG2 BCDEFGHI 1 
		stop
	}
}


Actor KnifeActive : Powerup
{
  Powerup.Duration -3
}


actor BlueHolyWater
{
	projectile
	+thruspecies
	+thruactors
	+bright
	+DONTBLAST
	+FORCEXYBILLBOARD
	-nogravity
	radius 8
	height 8
	gravity 0.90
	speed 25
	damage (0)
	scale 0.20
	species "Player"
	mass 188000
	states
	{
	spawn:
		TNT1 A 0
		HWT1 A 1 ThrustThingZ (0,6,0,1)
		TNT1 A 0 a_spawnitemex ("BottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	Flying:
		TNT1 A 0 a_spawnitemex ("BottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HWT1 ABCD 1
		TNT1 A 0 a_spawnitemex ("BottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HWT1 EFGH 1
		TNT1 A 0 a_spawnitemex ("BottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_setscale (1,1)
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		TNT1 A 0 A_stop
		TNT1 A 0 a_playsound ("HunterKnife/HolyWater",0)
		TNT1 AAAAAAAAAAA 0 a_spawnitemex ("HolyFire",0,0,0,random(-6,6),random(-6,6),random(3,6),0,SXF_NOCHECKPOSITION)
		B1BL BCDE 2
		stop
	}
}


actor Redholywater : BlueHolyWater
{
	states
	{
	spawn:
		TNT1 A 0
		HWT2 A 1 ThrustThingZ (0,6,0,1)
		TNT1 A 0 a_spawnitemex ("RedBottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	Flying:
		TNT1 A 0 a_spawnitemex ("RedBottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HWT2 ABCD 1
		TNT1 A 0 a_spawnitemex ("RedBottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HWT2 EFGH 1
		TNT1 A 0 a_spawnitemex ("RedBottleDamage",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_setscale (1,1)
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		TNT1 A 0 A_stop
		TNT1 A 0 a_playsound ("HunterKnife/RedWater",0)
		TNT1 A 0 a_explode (20,40,0,1,40)
		CFRE A 1 a_radiusthrust (1800,65,RTF_NOIMPACTDAMAGE,65)
		B1BL BCDE 2
		stop
	}
}
	

actor BottleDamage
{
	projectile
    Radius 30
    Height 45
	scale 1
    Speed 0
	damage (5)
	+thruspecies
	species "Player"
	+DONTBLAST
	+bright
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 1
		stop
	death:
		TNT1 A 1
		stop
	Xdeath:
		TNT1 A 0 a_setscale (1,1)
		TNT1 A random (1,2)
		TNT1 A 0 a_playsound ("HunterKnife/Hit",0)
		CH1T A 1 a_setscale (2,2)
		CH1T A 1 a_setscale (3,3)
		CH1T BCDD 1
		stop
		
	}
}


actor RedBottleDamage : BottleDamage
{
	states
	{
	Xdeath:
		TNT1 A 0 a_setscale (1,1)
		TNT1 A random (1,2)
		TNT1 A 0 a_playsound ("HunterKnife/RedKnife",0)
		CH1T A 1 a_setscale (2,2)
		CH1T A 1 a_setscale (3,3)
		CH1T BCDD 1
		stop
		
	}
}
	


actor Holyfire 
{
	+MBFBOUNCER
	+bright
	+thruspecies
	+thruactors
	+bounceonwalls
	WallBounceFactor 0.50
	radius 10
	gravity 0.50
	speed 10
	damage (0)
	scale 2.5
	reactiontime 15
	species "Player"
	+forceradiusdmg
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_jump (80,"Slowdown1")
		TNT1 A 0 a_jump (80,"Slowdown2")
		TNT1 A 0 a_jump (80,"Slowdown3")
		goto sliding
	Slowdown1:
		TNT1 A 0
		TNT1 A 0 a_scalevelocity (0.87)
		Goto sliding
	Slowdown2:
		TNT1 A 0
		TNT1 A 0 a_scalevelocity (0.90)
		Goto sliding
	Slowdown3:
		TNT1 A 0
		TNT1 A 0 a_scalevelocity (0.69) //Nice
		Goto sliding
	Sliding:
		TNT1 A 0
		TNT1 A 0 a_explode (6,30,0,0,30)
		TNT1 A 0 A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		HF1R B 3  A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		TNT1 A 0 a_explode (6,30,0,0,30)
		TNT1 A 0 A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		HF1R C 3  A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		TNT1 A 0 a_explode (6,30,0,0,30)
		TNT1 A 0 A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		HF1R D 3  A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		TNT1 A 0 a_explode (6,30,0,0,30)
		TNT1 A 0 A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		HF1R E 3  A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		TNT1 A 0 a_countdown
		loop
	death:
		TNT1 A 0
		TNT1 AAAAAA 0 A_SpawnItemEx("HolyFireEmber",frandom(-16,16),frandom(-16,16),frandom(18,25),frandom(-1,1),frandom(-1,1),frandom(3,8))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("HolyFireEmber2",frandom(-16,16),frandom(-16,16),frandom(-16,16),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 1
		stop
	}
}


ACTOR HolyFireEmber
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	Alpha 0.90
	Scale 0.80
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		HF1R F 2 Bright A_FadeOut(0.1)
		HF1R G 2 Bright A_FadeOut(0.1)
		HF1R A 2 Bright A_FadeOut(0.1)
	fade:
		HF1R A 2 Bright A_FadeOut(0.1)
		loop
	}
}

ACTOR HolyFireEmber2
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	renderstyle add
	alpha 0.99
	Scale 0.80
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		HF1R A 2 Bright A_FadeOut(0.1)
		loop
	}
}

