//==============================================================================
// Stielhandgranate-68
//==============================================================================

ACTOR GetOnWithIt : Inventory { Inventory.MaxAmount 100 }

ACTOR HDGrenades : KriegslandLightWeapon
{
	+WEAPON.EXPLOSIVE
	+INVENTORY.UNDROPPABLE
	Weapon.SlotNumber 1
	Weapon.AmmoType "BOGR1"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 0
	Weapon.SelectionOrder 1000
	Inventory.Pickupmessage "You got the Stielhandgranate-68!"
	Scale 0.9
	Tag "Stielhandgranate-68"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_JumpIfNoAmmo("ReadyNoAmmo")
		WP7G A 1 A_WeaponReady
		Goto TrueReady
	TrueReady:
		WP7G A 1 A_WeaponReady
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpIfInventory("IsKnifing",1,"Knife")
		NULL A 0 A_JumpIfInventory("SlidePlayer",1,"IsSliding")
		Loop
	ReadyNoAmmo:
		TNT1 A 1 A_WeaponReady
		Loop
	Deselect:
		TNT1 A 0 A_JumpIfInventory("BOGR1",1,1)
		Goto Drylower
		WP7G A 1 Offset (8, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (16, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (24, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (32, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (40, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (48, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (56, 0) A_Lower
		TNT1 A 0 A_Lower
		WP7G A 1 Offset (64, 0) A_Lower
		TNT1 A 1 A_Lower
		Wait
	Drylower:
		TNT1 A 1 A_Lower
		Wait
	Select:
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_JumpIfInventory("BOGR1",1,1)
		Goto ReadyNoAmmo
		TNT1 A 0 A_Playsound("weapons/generic/select2",7)
		WP7G A 1 Offset (64, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (56, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (48, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (40, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (32, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (24, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (16, 0) A_Raise
		TNT1 A 0 A_Raise
		WP7G A 1 Offset (8, 0) A_Raise
		TNT1 A 0 A_Raise
		Wait
	Fire:
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_JumpIfInventory("BOGR1",1,1)
		Goto Dryfire
		WP7G A 1 Offset (5, 40)
		WP7G A 1 Offset (15, 56)
		WP7G A 1 Offset (25, 72)
		WP7G A 1 Offset (35, 88)
		WP7G A 1 Offset (45, 104)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (65, 136)
		WP7G A 1 Offset (75, 152)
		TNT1 A 1 A_ReFire("Hold")
		Goto Realfire
	Hold:
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_JumpIfInventory("GetOnWithIt", 100, "Realfire")
		TNT1 A 1 A_GiveInventory("GetOnWithIt",1)
		TNT1 A 0 A_Refire
	Realfire:
		TNT1 A 0 A_JumpIf(waterlevel>2,"ReadyNoAmmo")
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND A 1 Offset(0,28)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND B 1 Offset(0,24)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND C 1 Offset(0,23)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,26) A_PlaySound("weapons/SHG/throw")
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,28)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_SpawnItemEx("RealGrenade",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_TakeInventory("BOGR1",1)
		MAND E 1 Offset(0,30)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND E 1 Offset(0,31)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(0,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(0,33)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_TakeInventory("GetOnWithIt", 100)
		TNT1 A 0 A_JumpIfNoAmmo("Dryfire")
		TNT1 A 8 Offset (75, 152)
		WP7G A 1 Offset (75, 152)
		WP7G A 1 Offset (65, 136)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (45, 104)
		WP7G A 1 Offset (35, 88)
		WP7G A 1 Offset (25, 72)
		WP7G A 1 Offset (15, 56)
		WP7G A 1 Offset (5, 40)
		Goto Ready
	Dryfire:
		TNT1 A 1 A_Print("No grenades",1)
		TNT1 A 1 A_WeaponReady
		Loop
	Kick:
		WP7G A 1 Offset (25, 72)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (75, 152)
		TNT1 A 1
		KICF A 1 Offset(-10,32)
		KICF CE 1
		KICF FG 1 A_Recoil(-1)
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_PlaySound("FKPlayer/Grunt")
		KICF H 5 A_CustomPunch(6,0,0,"FightPuff") 
		KICF IGFEDC 1 
		KICF BA 1 A_Recoil(+0.5)
		TNT1 A 1
		WP7G A 1 Offset (75, 152)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (25, 72)
		Goto Ready
	IsSliding:
		TNT1 A 0 A_TakeInventory("SlidePlayer",1)
		TNT1 A 0 A_JumpIfInventory("CrouchPlayer",1,"Ready")
		WP7G A 1 Offset (25, 72)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (75, 152)
		TNT1 A 0 Offset(-10,32)
		TNT1 A 0 A_PlaySound("FKPlayer/slide/start",4)
		TNT1 A 0 A_PlaySound("FKPlayer/slide/loop",5,0.5,TRUE)
		TNT1 A 0 A_SetPitch(pitch+0.8)
		SLDK ABCDEF 2
		TNT1 A 0 A_SetPitch(pitch-0.8)
		SLDK G 6 A_FireCustomMissile("KickAttack",0,0,0,0)
		TNT1 A 0 A_StopSound(5)
		TNT1 A 0 A_PlaySound("FKPlayer/slide/end",6)
		SLDK HI 2
		Goto Ready
	Knife:
		WP7G A 1 Offset (25, 72)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (75, 152)
		TNT1 A 1 Offset(-10,32)
		WP1L AB 1
		TNT1 A 0 A_Jump(86,2)
		TNT1 A 0 A_PlaySound("FKPlayer/Grunt")
		WP1L C 1 A_CustomPunch(8,0,0,"KnifePuff")
		WP1L DEF 1
		TNT1 A 6
		WP7G A 1 Offset (75, 152)
		WP7G A 1 Offset (55, 120)
		WP7G A 1 Offset (25, 72)
		Goto Ready
	Spawn:
		WP7P A -1
		Stop
	}
}

//==============================================================================
// Grenade projectile actors
//==============================================================================

ACTOR RealGrenade
{
	Radius 2
	Height 2
	Speed 35
	Damage 1
	+MTHRUSPECIES
	+CANBOUNCEWATER
	+NOBLOCKMAP 
	+DROPOFF 
	+FORCERADIUSDMG
	+MISSILE 
	+RANDOMIZE
	+ACTIVATEIMPACT 
	+ACTIVATEPCROSS
	+BOUNCEONACTORS
	+ALLOWBOUNCEONACTORS
	+MOVEWITHSECTOR
	+FORCEXYBILLBOARD
	+SLIDESONWALLS
	-NOGRAVITY
	Obituary "%o tripped on %k's stielhandgranate."
	BounceType "Doom"
	BounceFactor 0.25
	WallBounceFactor 0.4
	DeathSound "weapons/LW6/explode"
	BounceSound "weapons/SHG/bounce"
	Var int user_lmine;
	DamageType "Explode"
	Obituary "%k played some hot potato toss at %o."
	Decal Scorch
	Scale 0.5
	States
	{
	Spawn:
		TNT1 A 0 A_JumpIf(waterlevel>2,"Waterdeath")
	    WP7B ABCDEFGH 2
		Loop
	Death: 
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_JumpIf(waterlevel>2,"Waterdeath")
		TNT1 A 1 A_Explode(156,156)
		TNT1 A 0 A_PlaySound("weapons/explosion/ear",5,1,0,1)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 Radius_Quake (2, 36, 0, 15, 0)
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_Scream
		TNT1 A 0 A_SpawnDebris("BulletSparks")
		TNT1 A 0 A_SetScale(1.36)
		TNT1 A 0 A_SetTranslucent(0.65, 1)
	Blast:
		TNT1 A 0 A_CustomMissile("MineBlastVisual",0,0,user_lmine,CMF_AIMDIRECTION)
		TNT1 A 0 A_SetUserVar("user_lmine",user_lmine+1)
		TNT1 A 0 A_JumpIf(user_lmine==360,"EndBlast")
		Loop
	EndBlast:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_SpawnItem("FirstOneExplosionSpawner")
		BLAM ABCDEFGHIJKLMNOP 2 BRIGHT
		Stop	
	WaterDeath:
		TNT1 A 1 A_SpawnItem("WaterSplashBase")
		Stop
	}
}