actor Grenademan : VCBaseClass //Sound effects by littlelamp aka LL
{
	Player.ScoreIcon "GRENMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "NormalArmor"
	player.soundclass "grenademanc"
	Player.ViewHeight 57
	player.displayname "Grenademan"
	player.forwardmove 0.85, 0.85
	player.sidemove 0.83, 0.83
	player.jumpz 12
	player.startitem "UltimateAttackItem2MM8"
	player.startitem "UltSoundWatcherSpawn2"
	player.startitem "FlashBombBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "BaseAltfireAmmo", 112
	Player.StartItem "CanThirdFire", 1
	Player.StartItem "GrenadeEntrance"
	player.startitem "IsFromMM8"
	player.startitem "NoHealthBar"
	States
	{
		Spawn:
		GREM A 0
		GREM B 1
		GREM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUUUUUUUVVVVVVVUUUUUUUVVVVVVVUUUUUUUVVVVVVVUUUUUUUUUUUUUU 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+36
		
		See:
		GREM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		GREM I 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait
		
		Missile:
		GREM FFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		GREM GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		Goto Spawn+1
		
		JumpingMissile:
		GREM TTTTTTTTT 1 A_JumpIf(z-floorz<=0, "Missile")
		Goto Jumping
		
		Animation1:
		GREM S 36
		Goto Spawn+1
		
		Animation2:
		GREM PPPP 1 A_JumpIf(z-floorz>0, "JumpingA2")
		Animation2b:
		GREM QQRRRRRR 1 A_JumpIf(z-floorz>0, "JumpingA2b")
		Goto Spawn+1
		
		JumpingA2:
		GREM A 0 A_JumpIf(pitch>30 && pitch<=90,"JumpingA2Down")
		GREM MMMM 1 A_JumpIf(z-floorz<=0, "Animation2")
		JumpingA2b:
		GREM NNOOOOOO 1 A_JumpIf(z-floorz<=0, "Animation2b")
		Goto Jumping
		
		JumpingA2Down:
		GREM JJJJ 1 A_JumpIf(z-floorz<=0, "Animation2")
		JumpingA2b:
		GREM KKLLLLLL 1 A_JumpIf(z-floorz<=0, "Animation2b")
		Goto Jumping
		
		ClassTimeStop:
		GREM A 0 SetPlayerProperty(0,1,4)
		GREM A 0 ACS_Execute(528,0)
		GREM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		GREM A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		GREM H 0 A_GiveInventory("MediumShortUltimateAmmo",6)
		GREM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		TNT1 A 0 A_SpawnItemEx("DeadGrenadeMan",0,0,0,0,0,0,0,1)
		GREM Z 20 ACS_ExecuteAlways(999,0,0)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		GREM A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("FlashBombWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("FlashBombWepM")
		goto ClassDeath
	}
}

actor DeadGrenadeMan : DeadTenguMan
{
meleerange 866
States
{
Spawn:
GREM H 0
"####" "#" 0
goto loopit

Death:
TNT1 A 0 A_PlaySoundEx("grenademan/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 2 A_SpawnItemEx("FakeDeathFXMM8",0,0,32)
stop
}
}

actor FlashBombBoss : VCBaseWeapon
{
	Weapon.AmmoUse 4
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Weapon.AmmoGive 28
	Obituary "$OB_GRENADEMAN1"
	States
	{
		Ready:
		TNT1 A 0
		GREH A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.CanThird")
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		GREH A 0 A_GiveInventory("Base28Ammo",1)
		GREH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		Goto Ready
		
		Ready.CanThird:
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GREH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GREH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GREH A 1 A_WeaponReady GREH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GREH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GREH A 0 A_GiveInventory("Base28Ammo",1)
		GREH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		GREH A 1 A_Lower
		Loop

		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,866)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		GREH A 1 A_Raise
		Loop
		
		User1:
		GRGH DD 1
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		GRGH E 0 A_TakeInventory("BaseAltfireAmmo",56)
		GRGH H 0 A_PlaySoundEx("weapon/grenadedash","Weapon")
		HAZH D 0 A_TakeInventory("UnSolid",1)
		HAZH D 0 A_ChangeFlag("SOLID",0)
		
		User1.Loop:
		GRGH D 0 A_GiveInventory("GrenademanMobility1",1)//A_Recoil(-5)
		GRGH D 0 A_SpawnItemEx("GrenadeEcho",-4,0,0,momx*0.5,0,0,0,SXF_ABSOLUTEPOSITION)
		GRGH D 0 A_SpawnItemEx("GrenadeSmoke",-24,-12,0,0,0,3,0)
		GRGH D 0 A_SpawnItemEx("GrenadeSmoke",-24,12,0,0,0,3,0)
		GRGH EE 1 A_SpawnItemEx("GrenadeRunHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		GRGH D 0 A_SpawnItemEx("GrenadeEcho",-4,0,0,momx*0.5,0,0,0,SXF_ABSOLUTEPOSITION)
		GRGH D 0 A_SpawnItemEx("GrenadeSmoke",-24,-12,0,0,0,3,0)
		GRGH D 0 A_SpawnItemEx("GrenadeSmoke",-24,12,0,0,0,3,0)
		GRGH EE 1 A_SpawnItemEx("GrenadeRunHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		GRGH D 0 A_GiveInventory("CutterFlag",1)
		GRGH D 0 A_JumpIfInventory("CutterFlag",7,"User1.End")
		loop
		
		User1.End:
		DRIA A 0 A_TakeInventory("CutterFlag",999)
		DRIA A 0 A_SpawnItemEx("ReSolidifier")
		GRGH D 3
		GREH A 3
		goto Ready
		
		Fire:
		GREH A 0 A_JumpIfNoAmmo("NoAmmo")
		
		Hold:
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		GREH A 1 Offset(0,44) A_GiveInventory("GrenadeCharge",1)
		GREH A 0 A_JumpIfInventory("GrenadeCharge",70,"Hold2")
		GREH A 0 A_Refire
		GREH A 0 A_TakeInventory("GrenadeCharge",999)
		goto Fire1
		
		Hold2:
		GREH A 1 Offset(0,56)
		GREH A 0 A_Refire("Hold2")
		GREH A 0 A_TakeInventory("GrenadeCharge",999)
		goto Fire2
		
		Fire1:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		GREH B 0 A_WeaponReady(WRF_NOFIRE)
		GREH B 0 A_JumpIfNoAmmo("NoAmmo")
		GREH B 1 A_WeaponReady(WRF_NOFIRE)
		GREH B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		GREH B 0 A_FireCustomMissile("GrenadeFlashBomb",0,1,1,8)
		GREH CB 1
		GREH A 20
		GREH A 0 A_Refire("Fire1")
		GREH A 0 A_ClearRefire
		goto Ready
		
		Fire2:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		GREH B 1 A_WeaponReady(WRF_NOFIRE)
		GREH B 0 A_PlaySoundEx("weapon/mbuster","Weapon")
		GREH B 0 A_PlaySoundEx("weapon/pshot","Body")
		GREH B 0 A_FireCustomMissile("GrenadeFlashBomb2",0,1,1,8)
		GREH CB 1
		GREH A 20
		goto Ready
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		GRGH A 0 A_JumpIfInventory("Base28Ammo",4,"Altfire.Real")
		goto NoAmmo
		
		Altfire.Real:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		GRGH DE 2
		GRGH A 0 A_TakeInventory("Base28Ammo",4)
		TNT1 A 0 A_PlaySoundEx("weapon/grenadespray","Weapon")
		GRGH D 1 A_FireCustomMissile("GrenadeGrenade",0,0,1,8)
		TNT1 A 0 A_PlaySoundEx("weapon/grenadespray","Weapon")
		GRGH A 1 A_FireCustomMissile("GrenadeGrenade",7,0,1,8)
		TNT1 A 0 A_PlaySoundEx("weapon/grenadespray","Weapon")
		GRGH B 1 A_FireCustomMissile("GrenadeGrenade",-7,0,1,8)
		TNT1 A 0 A_PlaySoundEx("weapon/grenadespray","Weapon")
		GRGH C 1 A_FireCustomMissile("GrenadeGrenade",14,0,1,8)
		TNT1 A 0 A_PlaySoundEx("weapon/grenadespray","Weapon")
		TNT1 A 10 A_FireCustomMissile("GrenadeGrenade",-14,0,1,8)
		GRGH ED 2
		GREH A 6
		goto Ready
		
		UltimateAttack:
		GREH A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		GREH A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,67)
		GREH A 0 A_GiveInventory("GrenadeUltBuildCooldownGiver",1)
		GREH A 0 A_TakeInventory("MediumShortUltimateAmmo",999)
		GREH A 0 A_PlaySoundEx("weapon/coilfire1","Weapon")
		GRGH DE 1
		GREH A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		GRGH D 1 A_FireCustomMissile("CrazyDestroyer",-0,0,1,8)
		GRGH A 1 A_FireCustomMissile("CrazyDestroyer",20,0,1,8)
		GRGH B 1 A_FireCustomMissile("CrazyDestroyer",40,0,1,8)
		GRGH C 1 A_FireCustomMissile("CrazyDestroyer",60,0,1,8)
		TNT1 A 1 A_FireCustomMissile("CrazyDestroyer",-20,0,1,8)
		TNT1 A 1 A_FireCustomMissile("CrazyDestroyer",-40,0,1,8)
		TNT1 A 18 A_FireCustomMissile("CrazyDestroyer",-60,0,1,8)
		GRGH ED 2
		GREH A 0 A_TakeInventory("UltAttackFlag",1)
		goto Ready
		
		NoAmmo:
		GREH A 0 A_ClearRefire
		GREH A 0 A_GiveInventory("Base28Ammo",1)
		GREH A 3 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
	}
}

actor GrenadeEntrance : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GrenadeSpawnBoom")
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("GrenadeSpawnBoom2",random(0,128),0,random(0,128),0,0,0,random(0,359))
stop
}
}

actor GrenadeSpawnBoom : BasicClientSide
{
scale 6.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/grenadeentrance","Body")
TNT1 A 0 A_PlaySoundEx("weapon/drillexplode","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Auto")
GREE ABCDEF 5
stop
}
}

actor GrenadeSpawnBoom2 : BasicClientSide
{
scale 2.0
States
{
Spawn:
8XPL ABCDEF 2
stop
}
}

actor GrenadeFlashBomb
{
PROJECTILE
+FORCEXYBILLBOARD
Radius 12
Height 12
scale 2.5
speed 30
damage (5)
damagetype "GrenademanM1"
Obituary "$OB_GRENADEMAN1"
translation "192:192=248:248", "198:198=186:186", "210:210=206:206"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GREF ABCD 3
goto Spawn+2
Death:
GREF E 0 A_PlaySoundEx("weapon/flashbomb", "Weapon")
GREF E 2 A_SpawnItemEx("GrenadeFlashBombExplosion")
stop
}
}

actor GrenadeFlashBomb2 : GrenadeFlashBomb
{
damage (18)
speed 60
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/drillfly","Body")
GREF AA 1 A_SpawnItemEx("GrenadeSmoke",0,0,0,0,0,2,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/drillfly","Body")
GREF BB 1 A_SpawnItemEx("GrenadeSmoke",0,0,0,0,0,2,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/drillfly","Body")
GREF CC 1 A_SpawnItemEx("GrenadeSmoke",0,0,0,0,0,2,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/drillfly","Body")
GREF DD 1 A_SpawnItemEx("GrenadeSmoke",0,0,0,0,0,2,0,1)
loop
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySoundEx("weapon/flashbomb2", "Weapon")
TNT1 A 0 A_Quake(3,80,0,600)
TNT1 A 0 A_SpawnItemEx("GrenadeFlashBombExplosion")
GREF E 1 A_SpawnItemEx("GrenadeMetal1Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 9
TNT1 A 0 A_SpawnItemEx("GrenadeMetal2Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal1Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal2Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal1Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal2Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal1Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
TNT1 A 0 A_SpawnItemEx("GrenadeMetal2Start", random(0,400), 0, 0, 0, 0, 400, random(0,359), SXF_NOCHECKPOSITION, 0)
TNT1 A 10
stop
}
}

actor GrenadeSmoke : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
GRES GFE 3
stop
}
}

actor GrenadeFlashBombExplosion : FlashBomb
{
damagetype "GrenademanM1"
Obituary "$OB_GRENADEMAN1"
Translation "215:215=192:192"
+NOCLIP
-DONTBLAST
+DONTSPLASH
Reactiontime 17
Scale 3.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLEX AB 1 bright 
FLEX CD 1 bright
FLEX A 0 A_Explode(6, 80, 0)
FLEX EE 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX EE 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX GF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX A 0 A_Explode(6, 80, 0)
Goto Pattern1
Pattern1:
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-16, -40), Random(-32, 32),0,0,0,0,1)
FLEX GF 1 bright A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(16, 40), Random(-32, 32),0,0,0,0,1)
FLEX G 0 A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
Goto DamageNow
Pattern2:
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(32, 64), Random(-32, 40),0,0,0,0,1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-32, -64), Random(-32, 40),0,0,0,0,1)
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX G 0 A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
Goto DamageNow
DamageNow:
FLEX A 0 A_Explode(6, 80, 0)
Goto Continue
Continue:
FLEX G 0 A_CountDown
FLEX G 0 A_Jump(256, "Pattern1", "Pattern2")
Goto Death
Death:
FLEX A 0 A_Changeflag("NOGRAVITY", 1)
FLEX G 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEZ C 1 bright
stop
}
}

actor GFlashBombFX1 : FlashBombFX1
{
Translation "215:215=192:192"
}

actor GFlashBombFX2 : FlashBombFX2
{
Translation "215:215=192:192"
}

actor GrenadeMetal1Start
{
+SKYEXPLODE
PROJECTILE
radius 16
height 16
speed 1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Death:
TNT1 A 0 A_SpawnItemEx("GrenadeMetal1", 0, 0, 0, 0, 0, -1, 0, 1)
stop
}
}

actor GrenadeMetal2Start : GrenadeMetal1Start
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
Death:
TNT1 A 0 A_SpawnItemEx("GrenadeMetal2", 0, 0, 0, 0, 0, -1, 0, 1)
stop
}
}

actor GrenadeMetal1
{
damagetype "GrenademanM1"
Obituary "$OB_GRENADEMAN2"
Radius 16
Height 16
scale 2.5
PROJECTILE
-NOGRAVITY
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GRED LONO 3 A_SpawnItemEx("GrenadeSmoke",0,0,24,0,0,2,0,1)
loop
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("GrenadeDebris1",0,0,0,random(1,12),0,10,random(0,359),SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION,0)
TNT1 A 0 A_Explode(25,64,0,0,64)
TNT1 A 0 A_PlaySoundEx("weapon/grenadegirder","Body")
TNT1 A 9 A_Quake(5,9,0,256)
stop
}
}

actor GrenadeMetal2 : GrenadeMetal1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GRED M 3 A_SpawnItemEx("GrenadeSmoke",0,0,0,0,0,2,0,1)
loop
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("GrenadeDebris2",0,0,0,random(1,12),0,10,random(0,359),SXF_NOCHECKPOSITION|SXF_TRANSFERTRANSLATION,0)
TNT1 A 0 A_Explode(25,64,0,0,64)
TNT1 A 0 A_PlaySoundEx("weapon/grenadegirder","Body")
TNT1 A 9 A_Quake(5,9,0,256)
stop
}
}

actor GrenadeDebris1 : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
GRED LLPPOOPPNNPPOOPPLLPPOOPPNNPPOOPP 1 A_ChangeVelocity(0,0,-1) //Saving on TNT1 lines. -Fr3ak
stop
}
}

actor GrenadeDebris2 : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
GRED MMPPMMPPMMPPMMPPMMPPMMPPMMPPMMPP 1 A_ChangeVelocity(0,0,-1)
stop
}
}

actor GrenadeGrenade
{
PROJECTILE
-NOGRAVITY
+FORCEXYBILLBOARD
Radius 8
Height 8
scale 2.5
speed 50
damage (0)
damagetype "GrenadeAlt"
Obituary "$OB_GRENADEMAN3"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GR8G ABCD 2
loop
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_PlaySoundEx("weapon/napalm", "Weapon")
TNT1 A 0 A_Explode(9,128,0,0,16)
GREE ABCDEF 3
stop
}
}

actor GrenadeAltProtect : PowerProtection
{
Powerup.Duration 3
DamageFactor "GrenadeAlt", 0.25
}

actor GrenadeEcho : BasicClientSide
{
translation "192:192=204:204", "198:198=206:206", "0:3=194:194"
PROJECTILE
+FLOORHUGGER
Damage (0)
+THRUACTORS
Radius 0
Height 0
Scale 2.5
States
{
Spawn:
GREM S 2
TNT1 A 2
GREM S 2
TNT1 A 2
GREM S 2
stop
}
}

actor GrenadeRunHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_GRENADEMAN4"
PROJECTILE
+NOEXPLODEFLOOR
Radius 32
Height 32
scale 2.5
speed 0
damage (24)
Damagetype "GrenadeThird"
States
{
Spawn:
TNT1 A 2
stop
}
}

actor GrenadeDashProtect : PowerProtection
{
	damagefactor "GrenadeThird", 0.0
	powerup.duration 28
}

actor CrazyDestroyer
{
PROJECTILE
Radius 12
Height 12
DamageType "Grenademan"
Obituary "$OB_GRENADEMAN5"
scale 2.5
damage (0)
Speed 40
+NOEXPLODEFLOOR
bouncetype hexen
bouncecount 99
bouncefactor 0.9
-NOGRAVITY
+THRUACTORS
-BOUNCEONFLOORS
States
{
Spawn:
TNT1 AA 1 A_GiveInventory("ProjectileCode",1)
GREC A 0 A_GiveToTarget("GrenadeUltBuildCooldownGiver")
GREC A 1 A_CheckFloor("Death.Floor")
goto Spawn+2
Death.Floor:
TNT1 A 0 A_SpawnItemEx("CrazyDestroyerCounting",0,0,0,0,0,0,0,1)
stop
Death:
TNT1 A 0
stop
}
}

actor GrenadeUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration 35
}

actor CrazyDestroyerCounting
{
PROJECTILE
radius 4
height 4
DamageType "GrenademanUlt"
Obituary "$OB_GRENADEMAN5"
damage(0)
scale 2.5
+THRUACTORS
+FLOORHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GREC A 0 A_GiveToTarget("GrenadeUltBuildCooldownGiver")
GREC B 0 A_ChangeFlag("NOGRAVITY",1)
GREC B 4 A_PlaySoundEx("weapon/crashland","Body")
GREC C 4 A_PlaySoundEx("weapon/grenadebeep","Body")
GREC B 10
GREC C 4 A_PlaySoundEx("weapon/grenadebeep","Body")
GREC B 10
TNT1 A 0 A_PlaySoundEx("weapon/grenadeentrance","Body")
TNT1 A 0 A_PlaySoundEx("weapon/drillexplode","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Auto")
TNT1 A 0 A_SetScale(4.5,4.5)
GREC B 0 A_Explode(20,256,0,0,64)
GREE ABCDEF 3
stop
Death:
TNT1 A 0
stop
}
}

actor GrenadeCharge : Inventory
{
inventory.amount 1
inventory.maxamount 70
}

actor GrenademanMobility1 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-5))
stop
}
}