// --------------------------------------------------------------------------
//
// Incendiary Grenade (Demo weapon "Appears on weapons training")
//
// --------------------------------------------------------------------------

ACTOR "Incendiary Grenade" : CSDMOWeapon //5010
{

	//+WEAPON.CHEATNOTWEAPON

	Weapon.SelectionOrder 1900
	Weapon.AmmoUse 1
	Weapon.AmmoGive 1
	Weapon.AmmoType "IncendiaryGRENADEAmmo"
	obituary "%k killed %o with Incendiary Grenade."
	+WEAPON.WIMPY_WEAPON
	Inventory.Pickupmessage "Pickep up a Incendiary Grenade."
	Tag "Incendiary Grenade"
	Weapon.UpSound "HEGRENADE/Ready"
	AttackSound "HEGRENADE/Fire" 
	Scale 0.2
	 +IGNORESKILL
	 +WEAPON.EXPLOSIVE
	//+NOAUTOFIRE

	States
	{
	Ready:
		W18B I 1 A_WeaponReady
		Loop




	Deselect:
TNT1 A 1 A_TakeInventory("Grenade_BlockMemo",1)
	TNT1 A 0 ACS_NamedExecuteAlways("HSPreviousWeapon", 0, 2, 0, 0)
    TNT1 A 0
	Goto DeselectLoop

		
	Select:
	TNT1 A 1 A_Raise
	TNT1 AA 0 A_Raise
	TNT1 A 0 ACS_ExecuteAlways(798, 0, 245, 0, 0)//Weapon Weight
	TNT1 A 1 A_TakeInventory("CrosshairType",2)

	TNT1 A 0 ACS_NamedExecuteAlways("HSPreviousWeapon", 0, 1, 0, 0)
	//TNT1 A 1 A_Print("Test Animation", 0.5)
		TNT1 A 7 A_WEAPONREADY(WRF_NOFIRE)
		W18A JKLMNOPQRSTUVWXYZ 1 A_WEAPONREADY(WRF_NOFIRE)
		W18B ABCDEFGH 1 A_WEAPONREADY(WRF_NOFIRE)
		Goto Ready

	SelectUsed:
		TNT1 A 9 A_PlaySound("HEGRENADE/Ready")
		W18A JKLMNOPQRSTUVWXYZ 1 A_WEAPONREADY(WRF_NOFIRE)
		W18B ABCDEFGH 1 A_WEAPONREADY(WRF_NOFIRE)
		Goto Ready


//made it into 5 tics each fire state to don't spam that many fire states. A balance between code save and responsiveness
	Fire:
TNT1 A 0 A_TakeInventory("Grenade_BlockMemo",1)
	TNT1 A 0 A_JumpIfInventory("IsBot",1,"BotFire")
			TNT1 A 0 A_PlaySound("HEGRENADE/pinpull")
		W18D ABCDE 1 A_WEAPONREADY(WRF_NOFIRE)
		W18D F 1 A_Refire("Fire_2")
		Goto Throw

	Fire_2:
/*
		W18D FGHIJ 1 A_WEAPONREADY(WRF_NOFIRE)
		W18D K 1 A_Refire("Fire_3")
		Goto Throw

	Fire_3:
		W18D KLMNO 1 A_WEAPONREADY(WRF_NOFIRE)
		W18D P 1 A_Refire("Fire_4")
		Goto Throw

	Fire_4:
		W18D PQRST 1 A_WEAPONREADY(WRF_NOFIRE)
		W18D U 1 A_Refire("Fire_5")
		Goto Throw

	Fire_5:
		W18D UVWXY 1 A_WEAPONREADY(WRF_NOFIRE)
		W18D Z 1 A_Refire("Fire_6")
		Goto Throw

	Fire_6:
		W18D Z 1 A_WEAPONREADY(WRF_NOFIRE)
		W18E ABCD 1 A_WEAPONREADY(WRF_NOFIRE)
		W18E E 1 A_Refire("Fire_7")
		Goto Throw

	Fire_7:
		W18E EFGH 1 A_WEAPONREADY(WRF_NOFIRE)
		W18E I 1 A_Refire("Fire_loop")
		Goto Throw
		*/
		
//        W18D A 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
//        W18D B 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
//        W18D C 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
//        W18D D 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
//        W18D E 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D F 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D G 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D H 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D I 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D J 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D K 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D L 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D M 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D N 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D O 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D P 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D Q 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D R 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D S 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D T 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D U 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D V 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D W 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D X 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D Y 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18D Z 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw

        W18E A 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E B 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E C 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E D 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E E 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E F 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
        W18E G 1 A_WeaponReady(WRF_NOFIRE)		TNT1 A 0 A_Refire(1)		Goto Throw
		

	Fire_loop:
		W18E H 1 A_WEAPONREADY(WRF_NOFIRE)
		W18E H 1 A_Refire("Fire_loop")
		Goto Throw





/*
	Fire:
	TNT1 A 0 A_JumpIfInventory("IsBot",1,"BotFire")
		TNT1 A 4 A_FireCustomMissile(HEGRENADEPROJECTILE,0,1,0,3,0,4)//A_GunFlash
		W16F EFGH 1 A_WEAPONREADY(WRF_NOFIRE)
		TNT1 A 3 A_WEAPONREADY(WRF_NOFIRE)
		TNT1 A 1 A_JumpIfNoAmmo("PreviousWeapon")
		Goto SelectUsed
*/




	BotFire:
	Throw:
		TNT1 A 4 A_FireCustomMissile(IncendiaryGrenadePROJECTILE,0,1,0,3,0,4)//A_GunFlash
		W16F EFGH 1 A_WEAPONREADY(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 3 A_WEAPONREADY(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 1 A_JumpIfNoAmmo("PreviousWeapon")
		Goto SelectUsed


//	AltFire:
//		TNT1 A 0 A_FireCustomMissile(AccurateGRENADEPROJECTILE,0,0,0,3,0,4)
//		W16B J 16 A_WeaponReady
//		Goto Ready


//		W16F ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_WEAPONREADY(WRF_NOFIRE)


	PreviousWeapon:
		TNT1 A 6 //A_PlaySound("HEGRENADE/Ready")
		TNT1 A 3 //A_PlaySound("HEGRENADE/Ready")
TNT1 A 1 A_TakeInventory("Grenade_BlockMemo",1)
	TNT1 A 0 ACS_NamedExecuteAlways("HSPreviousWeapon", 0, 0, 0, 0)
Goto SetWeapon


             SetWeapon:  
        TNT1 A 1 A_WeaponReady(WRF_NOFIRE)//A_SelectWeapon("Knife")
        Goto Ready	



	Flash:
		TNT1 A 0 Bright //A_Light1
		TNT1 A 0 A_TakeInventory("Slot8Filled", 1)//A_AlertMonsters
		TNT1 A 2 A_FireCustomMissile(IncendiaryGrenadePROJECTILE,0,0,3,3,0,4)
		Goto LightDone
 	Spawn:
		W18Z A -1
		Stop
	}
}





ACTOR IncendiaryGrenadePROJECTILE
{
	Game Doom
//	SpawnID 216
	Radius 8
	Height 8
	Speed 30
	Damage 75
	Projectile
    DamageType "Fire"
	-NOGRAVITY
	+RANDOMIZE
	+DEHEXPLOSION
	//+GRENADETRAIL
	//+GHOST
	+DOOMBOUNCE
	//+THRUSPECIES
	BounceFactor 0.05
WallBounceFactor 0.25
BounceCount 2

	ReactionTime 35
	Gravity 0.6
	SeeSound "HEGRENADE/BOUNCE"
	//DeathSound "301/Explode"
	//BounceSound "301/Bounce"
	Obituary "$OB_GRENADE"
	DamageType Grenade
Scale 0.125
	States
	{
	Spawn:
		W18X ABCDEFGH 3 Bright 

		Loop
	Death:
		MISL B 0
//		NULL A 0 A_Explode(512,312,0)
		MISL B 0 A_SpawnItemEx("NewExplosionMedium",0,0,0,0,0,0,0,32)
//		MISL B 0 Bright A_Explode
		MISL C 0 Bright
		MISL D 0 Bright
//		TNT1 A 0 A_PlaySound("inc_grenade_detonate/Distant", 6)
		TNT1 A 1 A_PlaySound("incendiary/explode", 6)
		TNT1 A 0 A_PlaySoundEx("301/FireLoop", "firesnd", 1)
		TNT1 A 0 A_PlaySound("molotov_detonate/Distant", 5)
//	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("FTFlameTrailVC",0,0,0,random(1,3),0,random(8,12),random(1,360),32,0)
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		MISL B 0 A_SpawnItemEx("IncendiaryDamageRadius",0,0,0,0,0,0,0,32)
		TNT1 A 1 A_PlaySound("301/Explode", 7)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 1 A_PlaySound("301/FireEnd", 7)
		TNT1 A 1 A_StopSoundEx("Firesnd")
		Stop
	Grenade:
		TNT1 A 1000 A_Die
		Wait

	Detonate:
		MISL B 0 
//		NULL A 0 A_Explode(512,312,0)
		MISL B 0 A_SpawnItemEx("NewExplosionMedium",0,0,0,0,0,0,0,32)
		MISL B 0 A_Scream
		MISL C 0 A_Detonate
		MISL D 0
//		TNT1 A 0 A_PlaySound("inc_grenade_detonate/Distant", 6)
		TNT1 A 1 A_PlaySound("incendiary/explode", 6)
		TNT1 A 0 A_PlaySoundEx("301/FireLoop", "firesnd", 1)
		TNT1 A 0 A_PlaySound("molotov_detonate/Distant", 5)
//	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("FTFlameTrailVC",0,0,0,random(1,3),0,random(8,12),random(1,360),32,0)
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		MISL B 0 A_SpawnItemEx("IncendiaryDamageRadius",0,0,0,0,0,0,0,32)
		TNT1 A 1 A_PlaySound("301/Explode", 7)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 36 Light("OrangeMediumFlicker2")
		MISL B 0 A_SpawnItemEx("RedeemExplosionMediumSprite",0,0,0,0,0,0,0,32)
		TNT1 A 1 A_PlaySound("301/FireEnd", 7)
		TNT1 A 1 A_StopSoundEx("Firesnd")
		Stop
	Mushroom:
		MISL B 0 A_Mushroom
		Goto Death

	}
}