//===================
//=======LANCE=======
//===================

actor lance
{
	Projectile
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD
	+FORCERADIUSDMG
	+NOEXTREMEDEATH
	+thruspecies
	+bright
	species "friendly"
	Radius 10
	Height 8
	Speed 30
	Damage (60)
	
	var int User_PowerLance;	
	states
	{
	spawn: 
		LNCE A 12
		Goto Ignite
	Ignite:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("User_PowerLance", User_PowerLance+1)
		TNT1 A 0 A_ScaleVelocity (2)
		RLAN A 1 A_PlaySound ("Subweapons/rocketlance",0,1,0,0.70)
		Goto RocketLance
	RocketLance:
		TNT1 AAAA 0 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_PlaySound ("GeneralFX/Zapping",CHAN_VOICE)
		RLAN A 2 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-9,9),frandom(-9,9), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		TNT1 AAAA 0 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		RLAN B 2 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-9,9),frandom(-9,9), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		loop
	Death:
		TNT1 A 0
		
		TNT1 A 1 A_JumpIf (User_PowerLance >= 1, "ThunderBurst")
		TNT1 A 0 A_PlaySound ("subweapons/miss")
		SWMS ABC 3 bright
		stop
	Crash:
		TNT1 A 0
		TNT1 A 1 A_JumpIf (User_PowerLance >= 1, "ThunderBurst")
		TNT1 A 0 A_PlaySound ("subweapons/miss")
		SWMS ABC 3 bright
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1 A_JumpIf (User_PowerLance >= 1, "ThunderBurst")
		TNT1 A 0 A_PlaySound ("subweapons/hit")
		SWHT ABC 3 bright
		stop
	ThunderBurst:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("FORCEPAIN",1)
		TNT1 A 0 A_FadeOut (0.20)
		TNT1 A 0 A_Explode (60,120,0,1,120)
		TNT1 A 0 Radius_Quake (2,10,0,30,0)		
		TNT1 A 0 A_PlaySound ("Subweapons/scattershot",0,1,0,0.60)
		TNT1 A 0 A_PlaySound ("subweapons/thundercrack",CHAN_VOICE,0.60,0,0.70)
		RLAN CDEFGHI 2
		stop
	}
}


actor LanceZaps
{
	+NOBLOCKMAP
	+NOGRAVITY
	+BRIGHT
	+CLIENTSIDEONLY
	scale 0.80
	Mass 5
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A random (1,3)
		TNT1 A 0 A_FadeOut (0.20)
		goto ZapChoice
	ZapChoice:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_Jump (100,"Flip1","Flip2","Flip3")
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP6 ABA 2
		Goto Death
	Flip1:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX * -1, ScaleY)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP6 ABA 2
		Goto Death
	Flip2:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX, ScaleY * -1)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP6 ABA 2
		Goto Death
	Flip3:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX * -1, ScaleY * -1)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP6 ABA 2
		Goto Death
	
	Zapping2:
		TZP6 BAB 2
		Goto Death
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//=================
//=====Mattock=====
//=================


actor PowerMattock
{
	projectile
	+NOTIMEFREEZE
	+BLOODSPLATTER
	+DOOMBOUNCE
	+bright
	-nogravity
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+THRUSPECIES
	+NOEXTREMEDEATH
	+FORCERADIUSDMG
	+FORCEPAIN
	-ALLOWBOUNCEONACTORS
	-BOUNCEONACTORS
	species "friendly"
	seesound "cannon/lilclang"
	Gravity 0.50
	BounceCount 3
	BounceFactor 1.20  
	Radius 12
	scale 0.80
	Damage (90)
	Speed 30
	
	ProjectileKickBack 350
	var int User_NormalMattock;	
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("silence", CHAN_VOICE)
	flying:
		MTTK ACE 1 
		MTTK ACE 1 
		Goto NormalFlight
	NormalFlight:
		MTTK ABCDEF 2
		loop
	death:
		TNT1 A 0 A_ChangeFlag ("nogravity", 1)
		TNT1 A 0 A_PlaySound ("subweapons/miss")
		SWMS ABC 3 bright
		stop
	Crash:
		TNT1 A 0 A_ChangeFlag ("nogravity", 1)
		TNT1 A 0 A_PlaySound ("subweapons/miss")
		SWMS ABC 3 bright
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("nogravity", 1)
		TNT1 A 0 A_FadeOut (0.20)
		//TNT1 A 0 A_Explode (60,120,0,1,120)
		//TNT1 A 0 A_RadiusThrust (40000, 150,RTF_NOIMPACTDAMAGE)
		//TNT1 A 0 Radius_Quake (2,10,0,30,0)		
		TNT1 A 0 A_PlaySound ("Subweapons/MattockDrain",0,1,0)
		TNT1 A 0 A_PlaySound ("Subweapons/hit")
		TNT1 A 0 A_ChangeFlag ("NOINTERACTION",1)
		TNT1 AAA 0 A_SpawnItemEx ("MattockHealth",0,0,0,random(-2,3),random(-2,3),random(3,6),0,SXF_NOCHECKPOSITION)
		TNT1 AA 0 A_SpawnItemEx ("MattockHealth",0,0,0,random(-2,3),random(-2,3),random(3,6),0,SXF_NOCHECKPOSITION,120)
		PAX1 ABC 2
		PAX1 D 1 A_SetScale (1.50)
		PAX1 E 1 A_SetScale (1.60)
		PAX1 E 1 A_SetScale (1.70)
		PAX1 E 1 A_SetScale (1.80)
		stop
	}
}

actor MattockHealth : CustomInventory
{
	+notimefreeze
	-COUNTITEM
	+Quiet
	+INVENTORY.ALWAYSPICKUP
	+BRIGHT
	Scale 0.80
	//Inventory.Amount 1
	//Inventory.MaxAmount 100
	//inventory.pickupsound "Subweapons/MattockBubble"
	//Inventory.PickupMessage "Life Essence!"

	states
	{
	spawn:
		MBBL A 2
		MBBL B 1
		TNT1 A 0 A_GiveInventory ("BubbleTimer",1)
		TNT1 A 0 A_JumpIfInventory ("BubbleTimer", 40, "FadeWarning")
		loop
	FadeWarning:
		MBBL A 2
		MBBL B 1
		TNT1 A 1
		TNT1 A 0 A_GiveInventory ("BubbleTimer",1)
		TNT1 A 0 A_JumpIfInventory ("BubbleTimer", 45, "Death")
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("NOINTERACTION",1)
		TNT1 A 0 A_SetScale (1,1)
		GDSP FEDCBA 2
		stop
	Pickup:
		TNT1 A 0
		TNT1 A 1 A_JumpIfHealthLower (100,"GiveHealth")
		TNT1 A 0 A_PlaySound ("powerups/helmet",CHAN_ITEM)
		TNT1 A 0 A_SetBlend (FFFF00,0.1,5)
		TNT1 A 0 ACS_NamedExecuteAlways("BubbleLog",0,1,0,0)	
		TNT1 A 1 A_GiveInventory ("GMOTAHelmet",2)
		stop
	GiveHealth:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Subweapons/MattockBubble",CHAN_ITEM)
		TNT1 A 0 A_SetBlend (FFFF00,0.1,5)
		TNT1 A 0 ACS_NamedExecuteAlways("BubbleLog",0,0,0,0)	
		TNT1 A 1 A_GiveInventory ("HealthBonus",2)
		stop
	}
}


//FUCKING ZANDRONUM AND FUCKING GZDOOM NOT PLAYING NICE WITH CUSTOM INVENTORY ITEMS
//AND USERVARS AAAAAGHHH FUUUUUCK
actor BubbleTimer : inventory
{inventory.maxamount 50}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



//======================
//====WARDING SHIELD====
//======================

actor ShieldBlocker
{
	projectile
	+noblood
	+shootable
	+notimefreeze
	+ripper
	+bloodlessimpact
	+thruspecies
	+notargetswitch
	+NORADIUSDMG
	+DONTRIP
	+PAINLESS
	-bloodsplatter
	-noblockmap
	-ACTIVATEIMPACT
	painchance 255
	species "friendly"
	radius 24
	height 32
	speed 40
	mass 88000
	damage (0)
	states
	{
	spawn:
		TNT1 AAAA 1
		goto blockend
	blockend:
		TNT1 A 0 A_RadiusThrust (400,16,RTF_NOIMPACTDAMAGE)
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	pain:
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldBlock",0)
		TNT1 A 0 A_GiveToTarget ("BlockedAthing",1)
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		TNT1 A 1
		stop
	Pain.AimLaser:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

actor ShieldParry : ShieldBlocker
{
	projectile
	+noblood
	+shootable
	+notimefreeze
	+ripper
	+bloodlessimpact
	+thruspecies
	+notargetswitch
	+NORADIUSDMG
	+DONTRIP
	+PAINLESS
	-bloodsplatter
	-noblockmap
	-ACTIVATEIMPACT
	painchance 255
	species "friendly"
	radius 24
	height 32
	speed 40
	mass 88000
	damage (0)
	states
	{
	spawn:
		TNT1 AA 1
		goto blockend
	blockend:
		TNT1 A 0 A_RadiusThrust (400,16,RTF_NOIMPACTDAMAGE)
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	pain:
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldParry",0)
		TNT1 A 0 A_GiveToTarget ("GemParry",1)
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		TNT1 A 1
		stop
	Pain.AimLaser:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}



actor GemMelee : fastprojectile
{
	+dontblast
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD		
	+thruspecies
	+FORCEPAIN
	+DONTREFLECT
	+BRIGHT
	+HITTRACER
	+NOEXTREMEDEATH
	species "friendly"
	projectile
	radius 8
	height 10
	speed 100
	damage (30)
	ProjectileKickback 900
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakermiss",6)
		BZP4 ABCDEFG 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("SubWeapons/GemShieldMelee",0)
		TNT1 A 0 Radius_Quake (4,6,0,10,0)
		TNT1 A 0 A_GiveInventory ("UpperCutBooster",1,AAPTR_TRACER)
		TNT1 A 0 A_RadiusThrust (6000,120,RTF_NOIMPACTDAMAGE,120)
		BZP5 ABCD 2
		stop
	}
}



//Gem Beam
actor GemBeamSpawner
{
	PROJECTILE
	+NOINTERACTION
	Speed 1
	Radius 4
	Height 8
	Damage (0)
	RenderStyle None
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("GemBeamRing",30,0,0)
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldBeam",0)
		TNT1 A 1 A_SpawnItemEx("GemBeam",0,0,0,momx*60,momy*60,momz*60,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM)
		Stop
	}
}

actor GemBeam : fastprojectile
{
	+notimefreeze
	projectile
    +dontblast
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+NODAMAGETHRUST
	+thruspecies
	+Bright
	species "friendly"
	radius 6
	height 8
	speed 100
	damage (100)
    missileheight 8
	missiletype "GemBeamTrail"
	Scale 1
	alpha 0.95
	ProjectileKickBack 2500
	states
	{
	Spawn: 
		GBEM B 2
		GBEM C 1
		loop
	death:
		TNT1 A 0
		TNT1 A 0 A_FadeOut (0.50)
		TNT1 A 0 A_Explode (50,120,0,1,120)
		TNT1 A 0 A_RadiusThrust (5000,100,RTF_NOIMPACTDAMAGE)
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldBeamHit",0,1,0,0.90)
		GBEM FGHIJK 2
		stop
	}
}

actor GemBeamRing
{
	projectile
	+dontblast
	+notimefreeze
	+nointeraction
	+FORCEXYBILLBOARD
	+bright
	radius 2
	speed 3
	Scale 1
	renderstyle add
	alpha 0.30
	states
	{
	spawn:
		GBEM A 2 
		GBEM A 1 A_SetScale (1.20)
		GBEM A 1 A_SetScale (1.40)
		GBEM A 2 A_SetScale (1.50)
		GBEM A 2 A_SetScale (1.55)
		stop
	death:
		GBEM A 1 A_FadeOut (0.10)
		loop
	}
}


actor GemBeamTrail
{
	projectile
	+notimefreeze
	+nointeraction
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+DONTBLAST
	+Bright
	radius 2
	speed 50
    Scale 1
	renderstyle Add
	alpha 0.70
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange (50,"Emit")
		TNT1 A 1
		stop
	Emit:
		TNT1 A 0
		GBEM B 6 
		GBEM CDE 2 
		stop
	death:
		TNT1 A 0 
		TNT1 A 1 
		stop
	}
}

actor GemShieldPiece
{
	+notimefreeze
	+cannotpush
	+movewithsector
	+dontsplash
	+noblockmap
	+missile
	+doombounce
	+thruactors
	+dontblast
	-nogravity
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+bounceonactors
	+randomize
	+BRIGHT
	scale 0.15
	Gravity 0.9
	bouncecount 2
    bouncefactor 0.45
	Speed 5
    States
    {
	spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("silence", CHAN_VOICE)
		TNT1 A 0 A_Jump (105,2)
		TNT1 A 0 A_SetScale (scalex * -1,scaley) //Flip it horizontally
		TNT1 A 0 A_Jump (105,2)
		TNT1 A 0 A_SetScale (scalex,scaley * -1) //Flip it vertically
		TNT1 A 0 A_Jump (120,"Flight2","Flight3")
	Flight:
        GSH2 A 1
		loop
	Flight2:
        GSH2 B 1
		loop
	Flight3:
        GSH2 C 1
		loop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
    }
}


actor ShieldDeployed : powerup
{
	powerup.duration 20
}

actor BlockedAthing : inventory
{inventory.maxamount 1}

actor GemParry : powerup
{
	powerup.duration 20
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//===================
//======DAGGER=======
//===================

actor IceDagger
{
	Projectile
    +notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD	
	+thruspecies
	+HITTRACER
	+bright
	species "friendly"
	Radius 9
	Height 6
	Speed 80
	damagetype "BlazIce"
	Damage (15)
	states
	{
	spawn: 
		1DGR AAAA 2
		1DGR A 1 A_ChangeFlag ("nogravity",0)
		goto falling
	falling:
		1DGR A 1 
		loop
	death:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("nogravity",1)
		TNT1 A 0 A_PlaySound("Swordtech/iceSlashhit",0)
		TNT1 AAAAA 0 A_SpawnItemEx ("IceParticle",random(-4,4),random(-4,4),0,random(-100,100)/15.0,random(-100,100)/15.0,0,0,SXF_NOCHECKPOSITION)
		ICHT ABCDE 1
		stop
	Xdeath:
		TNT1 A 0 A_ChangeFlag ("nogravity",1)
		TNT1 A 0 A_PlaySound("Swordtech/iceSlashhit",0)
		TNT1 AAAAA 0 A_SpawnItemEx ("IceParticle",random(-4,4),random(-4,4),0,random(-100,100)/15.0,random(-100,100)/15.0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_GiveInventory ("SlowedEffect",1,AAPTR_TRACER)
		ICHT ABCDE 1
		stop
	}
}


actor PainlessDagger : IceDagger
{
	+PAINLESS
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//=========================
//=======FIRE BOTTLE=======
//=========================

actor FireBottle
{
	+notimefreeze
	projectile
	+bloodlessimpact
	-nogravity
	+NOEXTREMEDEATH
	damage (30)
	speed 35
	+thruspecies
	species "Friendly"
	+FORCEXYBILLBOARD
	radius 15
	height 10
	scale 1
	states
	{
	spawn:
		FBT1 ABCDEGH 1 Bright
		loop
	death:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("NOGRAVITY",1)
		TNT1 A 0 A_Stop
		TNT1 AA 0 A_SpawnItemEx ("FireBottleShrapnel1",0,0,0,random(-6,6),random(-6,6),random(6,10),0,SXF_NOCHECKPOSITION)
		TNT1 AA 0 A_SpawnItemEx ("FireBottleShrapnel2",0,0,0,random(-6,6),random(-6,6),random(6,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx ("FireBottleShrapnel3",0,0,0,random(-6,6),random(-6,6),random(6,10),0,SXF_NOCHECKPOSITION)
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx ("HarmlessClingFire",0,0,0,random(-2,2),random(-2,2),random(3,6),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx ("ClingFire",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("GeoRev/Break",0,0.60)
		TNT1 A 0 A_PlaySound ("Subweapons/superfireburst",CHAN_VOICE)
		REVS FGHIJK 2
		stop
	}
}


actor ClingFire 
{
	+MBFBOUNCER
	+BRIGHT
	+THRUSPECIES
	+THRUACTORS
	+BOUNCEONWALLS
	+NOEXTREMEDEATH
	WallBounceFactor 0.50
	radius 10
	gravity 0.50
	speed 10
	damage (0)
	scale 1.50
	reactiontime 20
	species "Friendly"
	+FORCERADIUSDMG
	+NODAMAGETHRUST
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_RadiusGive ("GMOTAFireDamage",130,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_RadiusGive ("ClingFireFXSpawner",122,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_Explode (6,120,0,0,120)
		TNT1 A 0 A_RadiusGive ("GMOTAFireDamage",130,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TFRE A 3 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_RadiusGive ("GMOTAFireDamage",130,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_Explode (6,120,0,0,120)
		TNT1 A 0 A_RadiusGive ("GMOTAFireDamage",130,RGF_MONSTERS|RGF_CUBE,1)
		TFRE B 3 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TFRE C 3 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_Countdown
		loop
	death:
		TNT1 A 0
		TNT1 AAAAAA 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("ClingFireEmber2",frandom(-16,16),frandom(-16,16),frandom(-16,16),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 1
		stop
	}
}


actor HarmlessClingFire 
{
	+MBFBOUNCER
	+BRIGHT
	+THRUSPECIES
	+THRUACTORS
	+BOUNCEONWALLS
	+NOEXTREMEDEATH
	+CLIENTSIDEONLY
	+RANDOMIZE
	WallBounceFactor 0.50
	radius 10
	gravity 0.50
	speed 10
	damage (0)
	scale 0.80
	reactiontime 20
	species "Friendly"
	+NODAMAGETHRUST
	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_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TFRE A random(2,3) A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TFRE B 3 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TFRE C random(2,3) A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 A 0 A_Countdown
		loop
	death:
		TNT1 A 0
		TNT1 AAAAAA 0 A_SpawnItemEx("ClingFireEmber",frandom(-8,8),frandom(-8,8),frandom(12,16),frandom(-1,1),frandom(-1,1),frandom(2,4))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("ClingFireEmber2",frandom(-16,16),frandom(-16,16),frandom(-16,16),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 A 1
		stop
	}
}


ACTOR ClingFireEmber
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	+THRUACTORS
	Alpha 0.80
	Scale 0.20
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		TFRE A 2 Bright A_FadeOut(0.1)
		TFRE B 2 Bright A_FadeOut(0.1)
		TFRE C 2 Bright A_FadeOut(0.1)
	fade:
		TFRE C 2 Bright A_FadeOut(0.1)
		loop
	}
}

ACTOR ClingFireEmber2
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	+THRUACTORS
	renderstyle add
	alpha 0.99
	Scale 0.10
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		TFRE C 2 Bright A_FadeOut(0.1)
		loop
	}
}


ACTOR ClingFireEmber3
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+NOTELEPORT
	+THRUACTORS
	Alpha 0.90
	Scale 0.50
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		TFRE D 2 Bright A_FadeOut(0.1)
		TFRE E 2 Bright A_FadeOut(0.1)
		TFRE F 2 Bright A_FadeOut(0.1)
		TFRE G 2 Bright A_FadeOut(0.1)
	fade:
		TFRE G 2 Bright A_FadeOut(0.1)
		loop
	}
}


actor FireBottleShrapnel1
{
	projectile
	-NOGRAVITY
	radius 10
	height 7
	+thruactors
	+hexenbounce
	+bright
	+thruspecies
	species "Player"
	damage (0)
	gravity 1.1
	Bouncecount 4
	bouncefactor 0.80
	scale 1
	states
	{
	Spawn:
		FBT2 ABCD 2
		loop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


actor FireBottleShrapnel2 : FireBottleShrapnel1
{
	states
	{
	Spawn:
		FBT3 ABCD 2
		loop
	}
}


actor FireBottleShrapnel3 : FireBottleShrapnel1
{
	states
	{
	Spawn:
		FBT4 ABCD 2
		loop
	}
}




Actor ClingFireFXSpawner : CustomInventory
{ 
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	States 
	{ 
	Pickup: 
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ThrowGrenade ("ClingFireEffect",-15,0,0)
		stop		
	}
}

actor ClingFireEffect
{
	projectile
	+nointeraction
	speed 10
	+BRIGHT
	+CLIENTSIDEONLY
	scale 2
	states
	{
	spawn:	
		TNT1 A 0
		TNT1 AAAAAAA 0 A_SpawnItemEx ("ClingFireEmber3",frandom(-16,16),frandom(-16,16),frandom(-10,15),frandom(-1,1),frandom(-1,1),frandom(1,2),0,SXF_NOCHECKPOSITION | SXF_SETMASTER | SXF_CLIENTSIDE)
		TNT1 AAAAA 0 A_SpawnItemEx("ClingFireEmber2",frandom(-16,16),frandom(-16,16),frandom(-10,14),frandom(-1,1),frandom(-1,1),frandom(1,2),0,SXF_NOCHECKPOSITION | SXF_SETMASTER| SXF_CLIENTSIDE)
		TNT1 A 0 A_PlaySound ("Subweapons/FireBottleBurn",0,0.80,0,2)
		TNT1 A 2
		Stop
	}
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//========================
//========BOOMERANG=======
//========================

actor boomerang
{
	+notimefreeze
	+skyexplode
	+BRIGHT
	projectile
	+THRUSPECIES
	species "friendly"
	+FORCEXYBILLBOARD
	+SEEINVISIBLE
	+FORCEPAIN
	+DONTREFLECT
	Damagetype "Dazer"
	radius 12
	height 10
	damage (30)
	speed 30
	Projectilekickback 1200
	bouncefactor 1.1
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_PlaySound("subweapons/boomerangthrow", CHAN_VOICE)
		TNT1 A 0 A_PlaySound ("subweapons/boomerangflystart",0)
		BMRG ABCDEF 1 A_SpawnItemEx("BoomerangParticle",frandom(-16,16),frandom(-16,16),frandom(-5,5),0,0,0,0,SXF_NOCHECKPOSITION,10)
		BMRG ABCDEF 1 A_SpawnItemEx("BoomerangParticle",frandom(-16,16),frandom(-16,16),frandom(-5,5),0,0,0,0,SXF_NOCHECKPOSITION,10)
		BMRG ABCDEF 1 A_SpawnItemEx("BoomerangParticle",frandom(-16,16),frandom(-16,16),frandom(-5,5),0,0,0,0,SXF_NOCHECKPOSITION,10)
		TNT1 A 0 A_ScaleVelocity (0.50)
		BMRG ABCDEF 1 A_SpawnItemEx("BoomerangParticle",frandom(-16,16),frandom(-16,16),frandom(-5,5),0,0,0,0,SXF_NOCHECKPOSITION,10)
		BMRG ABCDEF 1 A_SpawnItemEx("BoomerangParticle",frandom(-16,16),frandom(-16,16),frandom(-5,5),0,0,0,0,SXF_NOCHECKPOSITION,10)
		TNT1 A 0 A_Stop
		goto Death
	death:
		TNT1 A 0		
		TNT1 A 0 A_StopSound (8)
		TNT1 A 0 A_CustomMissile ("BoomerangFlyback",0,0,0,CMF_TRACKOWNER)
		BFL1 AB 1
		TNT1 A 0 A_SetScale (3)
		TNT1 A 0 A_FadeOut (0.20)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_Explode (1,300,0,1,300)
		TNT1 A 0 A_PlaySound ("Subweapons/BoomerangFlash",0,1,0,0.70)
		TNT1 A 0 Radius_Quake(2,10,0,20,0)
		TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("FlashBoltParticle", frandom(-150,150),frandom(-150,150),frandom(-85,85), 0,0,0, 0, SXF_NOCHECKPOSITION)
		BFL1 CDDEEFF 2 
		stop
	}
}

actor BoomerangFlyback : boomerang
{
    -SOLID
    +NOCLIP
    +NOTIMEFREEZE
	+SEEINVISIBLE
	speed 40
	reactiontime 3
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("subweapons/boomerangloop",8,1,1)	
		BMRG F 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		BMRG E 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		BMRG D 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		BMRG C 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		BMRG B 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		BMRG A 1 bright A_JumpIfCloser (50,"catch")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_Countdown
		TNT1 A 1 A_CustomMissile ("BoomerangFlyback",0,0,0,CMF_TRACKOWNER)
		stop
	death:
		TNT1 A 0		
		TNT1 A 0 A_StopSound (8)
		TNT1 A 0 A_CustomMissile ("BoomerangFlyback",0,0,0,CMF_TRACKOWNER)
		TNT1 A 1
		stop
	crash:
		TNT1 A 0
		TNT1 A 0		
		TNT1 A 0 A_StopSound (8)
		TNT1 A 0 A_CustomMissile ("BoomerangFlyback",0,0,0,CMF_TRACKOWNER)
		TNT1 A 1
		stop
	catch:
		TNT1 A 0
		TNT1 A 0 a_stopsound (8)
        TNT1 A 1 a_playsound ("subweapons/boomerangcatch")
		stop
	}
}


ACTOR BoomerangParticle
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+DONTBLAST
	+NOCLIP
	Renderstyle add
	Alpha 0.90
	Scale 1.5
	+clientsideonly
	Mass 5
	States
	{
	Spawn:
		BPKL A 3 Bright 
		BPKL B 3 Bright 
		BPKL A 3 Bright 
		BPKL B 4 Bright 
		BPKL C 4 Bright 
		goto death
	Death:
		TNT1 A 1
		stop
	}
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//=======================
//========HAMMER=========
//=======================

actor crashhammer
{
	Radius 8
	Height 10
	Speed 40
	Scale 1
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+MISSILE
	+DROPOFF
	+CANBOUNCEWATER
	+FORCERADIUSDMG
	+HEXENBOUNCE
	-BOUNCEONFLOORS
	+THRUACTORS
	+DONTBLAST
	+FLOORCLIP
	+THRUSPECIES
	+BRIGHT
	species "friendly"
	seesound "subweapons/earthshakerbounce"
	bouncecount 8
	WallBounceFactor 1.5
	damage (0)
	BounceFactor 0.25
	
	var int user_prcangle;
	States
	{
	Spawn:
		TNT1 A 0 
		TNT1 A 0 A_PlaySound("silence", CHAN_VOICE)
	flying:
		TNT1 A 0 A_PlaySound ("subitems/hammerspin", 0)
		GSHM A 1 A_SpawnItem ("hammertrail1")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM B 1 A_SpawnItem ("hammertrail2")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM C 1 A_SpawnItem ("hammertrail3")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM D 1 A_SpawnItem ("hammertrail4")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM E 1 A_SpawnItem ("hammertrail5")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM F 1 A_SpawnItem ("hammertrail6")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM G 1 A_SpawnItem ("hammertrail7")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		GSHM H 1 A_SpawnItem ("hammertrail8")
		TNT1 A 0 A_SpawnItemEx ("HammerDamage")
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag ("FORCEPAIN",TRUE)
		TNT1 A 0 A_PlaySound ("subweapons/rollingbombexp",0)
		TNT1 A 0 Radius_Quake(3,10,0,20,0)
		TNT1 A 0 A_Explode (350, 200, 0, 0,200)
		TNT1 A 0 A_RadiusGive ("UpperCutBooster",180,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_SetUserVar("user_prcangle", 0)
	waveeffect:	
		TNT1 A 0 A_CustomMissile("hammerwaveeffect", 0,0, user_prcangle, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_SetUserVar("user_prcangle", user_prcangle+1)
		TNT1 A 0 A_JumpIf(user_prcangle < 360, "WaveEffect")
		HIDL A 1
		Goto EndWave
	endwave:
		HIDL A 100
		HWRP ABCD 1 bright
		Stop
	Xdeath:
		TNT1 A 0 A_PlaySound ("subweapons/shieldsmash",0)
		TNT1 A 0 Radius_Quake(2,10,0,32,0)
		HIDL A 100
		HWRP ABCD 1 bright
		Stop	
	} 
}

actor HammerDamage
{
	projectile
	+notimefreeze
	+thruspecies
	-noblockmap
	painchance 255
	species "friendly"
	radius 35
	height 32
	speed 40
	damage (10)
	states
	{
	spawn:
		TNT1 A 2
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	Xdeath:
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("subweapons/jabhit",0)
		TNT1 A 0 A_SpawnItemEx ("macehitFX", frandom(-3,3),frandom(-10,10),frandom(-10,10), 0,0,0, 0, SXF_NOCHECKPOSITION)
		TNT1 A 5
		stop
	}
}

actor Hammermelee : uppercut
{
	damage (150)
	speed 50
	+extremedeath
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag ("NOINTERACTION",1)
		TNT1 A 0 A_Stop
		stop
	death:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_GiveInventory ("Hammermiss", 1, AAPTR_TARGET)	
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Hammermiss",0)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("EGemRockSmall",0,0,3,random(-3,3),random(-3,3),random(2,4),random(0,359),32)
		TNT1 A 10 
		stop
	crash:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_GiveInventory ("Hammermiss", 1, AAPTR_TARGET)	
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Hammermiss",0)
		TNT1 A 10 
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_GiveInventory ("Hammerhit", 1, AAPTR_TARGET)	
		TNT1 A 0 A_PlaySound ("Subweapons/Hammerhit",0)
		TNT1 A 0 Radius_Quake (4,10,0,10,0)
		TNT1 A 8 
		stop
	}
}		


actor hammertrail1
{
	alpha 0.80
	projectile
	+clientsideonly
	+dontblast
	+noclip
	+bright
	scale 0.8
	states
	{
	spawn:
		GSHM A 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail2 : hammertrail1
{
	states
	{
	spawn:
		GSHM B 1 A_FadeOut (0.08)
		loop
	}
}
actor hammertrail3 : hammertrail1
{
	states
	{
	spawn:
		GSHM C 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail4 : hammertrail1
{
	states
	{
	spawn:
		GSHM D 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail5 : hammertrail1
{
	states
	{
	spawn:
		GSHM E 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail6 : hammertrail1
{
	states
	{
	spawn:
		GSHM F 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail7 : hammertrail1
{
	states
	{
	spawn:
		GSHM G 1 A_FadeOut (0.08)
		loop
	}
}

actor hammertrail8 : hammertrail1
{
	states
	{
	spawn:
		GSHM H 1 A_FadeOut (0.08)
		loop
	}
}

actor hammerwaveeffect
{
   Speed 10
   Radius 8
   Height 5
   RenderStyle Add
   Alpha 0.4
   Scale 0.5
   PROJECTILE
   +BRIGHT
   +THRUACTORS
   +MOVEWITHSECTOR
   +clientsideonly
   +DONTBLAST
   States
   {
   Spawn:
      SWFX AAAAAAAA 1
      SWFX BCDE 2 
      TNT1 A 0 A_SetTranslucent(0.1)
	  SWFX F 1 
   Death:
      TNT1 A 0
      Stop
   }
}

ACTOR EGemRockSmall
{
	Speed 8
	Radius 2
	Height 2
	Scale 0.2
	Gravity 0.6
	PROJECTILE
	-NOGRAVITY
	+DONTBLAST
	+thruspecies
	species "friendly"
	States
	{
	Spawn:
		ESTN C 1
		Loop
	Death:
		TNT1 A 1
		Stop
	}
}

actor macehitFX
{
	+NOINTERACTION
	+clientsideonly
	Radius 4
	Height 5
	scale 1
	+bright
	States
	{
	Spawn:
		TNT1 A 0
		SWHT ABC 1
		stop
	}
}
