Actor Timer : Inventory
{
inventory.maxamount 4
}

Actor IsOverWater : Inventory
{
inventory.maxamount 1
}

Actor IsOverSlime : Inventory
{
inventory.maxamount 1
}

Actor IsOverSludge : Inventory
{
inventory.maxamount 1
}

Actor IsOverBlood : Inventory
{
inventory.maxamount 1
}

Actor IsOverGrass : Inventory
{
inventory.maxamount 1
}


ACTOR MeleePuff: BulletPuff
{
  renderstyle Translucent
  alpha 0.5
  Scale 1.5
DamageType Melee
  +NOBLOCKMAP
  +NOGRAVITY
  +NOEXTREMEDEATH
  +PUFFONACTORS
  +BLOODLESSIMPACT 
  +FORCEXYBILLBOARD
  +DONTSPLASH
  states
  {
  Spawn:
  Death:
  Melee:
  XDeath:
    PUFF A 0 A_PlaySound("player/cyborg/fist")
    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 10
    stop
 
  }
}

ACTOR FatalityPuff: MeleePuff
{
DamageType Fatality
Decal "Crack"
  states
  {
  Spawn:
  XDeath:
  Melee:
  Death:
    TNT1 A 0 A_PlaySound("player/cyborg/fist")
	EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    TNT1 A 0
    stop
  }
}

ACTOR KickPuff: MeleePuff
{
DamageType Kick
  states
  {
  Spawn:
    PUFF A 0 A_PlaySound("player/cyborg/fist")
	TNT1 A 0 A_SpawnItemEx ("PLOFT2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    stop
  Death:
    PUFF A 0 A_PlaySound("player/cyborg/fist")
	TNT1 A 0 A_SpawnItemEx ("PLOFT2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    stop
  Melee:
    PUFF A 0 A_PlaySound("player/cyborg/fist")
	TNT1 A 0 A_SpawnItemEx ("PLOFT2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    stop
  XDeath:
    PUFF A 0 A_PlaySound("player/cyborg/fist")
	TNT1 A 0 A_SpawnItemEx ("PLOFT2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    stop
  }
}

ACTOR SuperKickPuff: KickPuff
{
DamageType Kick
-NOEXTREMEDEATH
+EXTREMEDEATH
Decal "Crack"
}

ACTOR SmashingPuff: MeleePuff
{
DamageType ExplosiveImpact
-NOEXTREMEDEATH
Decal "Crack"
  states
  {
  Spawn:
  XDeath:
  Melee:
  Death:
  TNT1 A 1
	TNT1 A 0 A_PlaySound("player/cyborg/fist")
	    EXPL A 0 Radius_Quake (4, 24, 0, 15, 0)
	    EXPL AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    TNT1 A 10
    stop
  }
}


ACTOR UberPunchPuff: SmashingPuff
{
DamageType SuperPunch
}

ACTOR FatalitySmashingPuff: SmashingPuff
{
DamageType Fatality
+NOEXTREMEDEATH
-EXTREMEDEATH
}

ACTOR HitPuff Replaces BulletPuff
{
  renderstyle Translucent
  alpha 0.4
  Scale 1.5
  radius 0
  height 0
  +NOBLOCKMAP
  +NOGRAVITY
  Gravity 0.01
  +NOEXTREMEDEATH
  +FORCEXYBILLBOARD
DamageType Bullet
Decal "BulletDecalNew1"
+DONTSPLASH
-EXPLODEONWATER
  states
  {
  Spawn:
    TNT1 A 0
    //TNT1 A 0 A_SpawnItem ("RicoChet", 0, -5)
	TNT1 A 0 A_SpawnItemEx ("RicoChet",0,0,-5,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 AAAA 0
    //PUFF A 6
    //PUFF B 6
    //Intentional fall-through
  Melee:
    //PUFF CD 6
	TNT1 A 1
	stop
  }
}


ACTOR HitPuffTracer : HitPuff
{
  states
  {
  Spawn:
    TNT1 A 0
    //TNT1 A 0 A_SpawnItem ("RicoChet", 0, -5)
	TNT1 A 0 A_SpawnItemEx ("RicoChetMinor",0,0,-5,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 AAAA 0
    //PUFF A 6
    //PUFF B 6
    //Intentional fall-through
  Melee:
    //PUFF CD 6
	TNT1 A 1
	stop
  }
}

actor shotpuff : HitPuff
{
DamageType SSG
}

actor Shotgunpuff : HitPuff
{
DamageType Shotgun
}

ACTOR RicoChet
{
  renderstyle Add
  alpha 1.0
  -COUNTKILL
  -SHOOTABLE
  +CLIENTSIDEONLY
  +BLOODLESSIMPACT 
  +FORCEXYBILLBOARD
  +THRUACTORS
  +NOGRAVITY
	Obituary "%o ate bullet shrapnel."
  //damagetype "Shrapnel"
  Scale 0.09
  Speed 0
  Radius 1
  Height 1
  states
  {
  Spawn:
    TNT1 A 0
	//TNT1 A 0 ThrustThingZ(0,-5,0,1)
	//TNT1 A 1
	//TNT1 A 0 A_Explode(4, 15)
    TNT1 A 0 A_CheckFloor("SpawnFloor")
    TNT1 A 0 A_SpawnItem ("YellowFlareSmall", 0)
	TNT1 A 0 A_SpawnItemEx ("DetectFloorBullet",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("DetectCeilBullet",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("UnderwaterHitPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 AAAAAAAAAA 0 A_CustomMissile ("SparkXNoModel", 2, 0, random (0, 360), 2, random (0, 360))
	PUFF A 0 bright A_PlaySound("ricochet/hit")
    TNT1 AAA 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (0, 360), 2, random (0, 360))

	TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
    
	Spawn1:
	IPF2 AABB 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn2:
	IPF2 CCDD 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn3:
	IPF2 EEFF 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn4:
	IPF2 GGHH 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	
	SpawnFloor:
	TNT1 A 0
	TNT1 A 0 Acs_executealways(373, 0, 0, 0, 0)//Check if is under a liquid
	TNT1 A 2
	TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "SpawnWater")
	TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "SpawnSlime")
	
	TNT1 A 0 A_SpawnItemEx ("DetectFloorBullet",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("DetectCeilBullet",0,0,0,-5,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("UnderwaterHitPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 AAAAAAAAAA 0 A_CustomMissile ("SparkXNoModel", 2, 0, random (0, 360), 2, random (30, 160))
	PUFF A 0 bright A_PlaySound("ricochet/hit")
	IPF2 GGHH 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    TNT1 AAA 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (0, 360), 2, random (30, 160))
    stop
	
	SpawnWater:
	TNT1 A 0
	TNT1 AAAAA 0 A_CustomMissile ("WaterParticleXFAster", 8, 0, random (0, 360), 2, random (30, 160))
	TNT1 AAAAA 0 A_CustomMissile ("WaterParticleXSuperFast", 24, 0, random (0, 360), 2, random (30, 160))
	TNT1 A 0 A_SpawnItem("WaterRicochet")
	Stop
	
	SpawnSlime:
	TNT1 A 0
	TNT1 AAAAA 0 A_CustomMissile ("nukageParticleXFAster", 8, 0, random (0, 360), 2, random (30, 160))
	TNT1 AAAAA 0 A_CustomMissile ("nukageParticleXFAster", 24, 0, random (0, 360), 2, random (30, 160))
	TNT1 A 0 A_SpawnItem("SlimeRicochet")
	Stop
	
  }
}




ACTOR RicoChetMinor: RicoChet
{
  states
  {
  Spawn:
    TNT1 A 0
	//TNT1 A 0 ThrustThingZ(0,-5,0,1)
	//TNT1 A 1
	//TNT1 A 0 A_Explode(4, 15)
    TNT1 A 0 A_SpawnItem ("YellowFlareSmall", 0)
	TNT1 A 0 A_SpawnItemEx ("DetectFloorBullet",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("DetectCeilBullet",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_SpawnItemEx ("UnderwaterHitPuff",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 AAA 0 A_CustomMissile ("SparkXNoModel", 2, 0, random (0, 360), 2, random (0, 360))
	PUFF A 0 bright A_PlaySound("ricochet/hit")
    TNT1 AA 0 A_CustomMissile ("OldschoolRocketSmokeTrail2", 2, 0, random (0, 360), 2, random (0, 360))

	TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
    
	Spawn1:
	IPF2 AABB 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn2:
	IPF2 CCDD 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn3:
	IPF2 EEFF 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn4:
	IPF2 GGHH 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
  }
}


ACTOR LargeMassWaterImpact: Ricochet
{
DamageFactor "CauseObjectsToSplash", 99.0
+SHOOTABLE
+NOBLOOD
Health 1
Radius 0
Height 0
  states
  {
  Spawn:
    TNT1 A 0
	//TNT1 A 0 Acs_executealways(373, 0, 0, 0, 0)//Check if is under a liquid
	TNT1 A 4
    TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "SpawnWater")
	TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "SpawnSlime")
    Stop
	
  Death.CauseObjectsToSplash:	
  SpawnWater:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("bigspl1")
	//TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile ("LiquidParticleX", 0, 0, random (0, 360), 2, random (0, 360))
	TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile ("WaterParticleXFAster", 8, 0, random (0, 360), 2, random (30, 160))
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("WaterParticleXSuperFast", 14, 0, random (0, 360), 2, random (30, 160))
	TNT1 A 20
	Stop
	
 Death.CauseObjectsToSplashSlime:	
	TNT1 A 0
	TNT1 A 0 A_PlaySound("bigspl1")
	//TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile ("LiquidParticleX", 0, 0, random (0, 360), 2, random (0, 360))
	TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile ("SlimeParticleXFAster", 8, 0, random (0, 360), 2, random (30, 160))
	//TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("SlimeParticleXSuperFast", 14, 0, random (0, 360), 2, random (30, 160))
	TNT1 A 20
	Stop	
  }
}


ACTOR BigRicoChet
{
  renderstyle Add
  alpha 1.0
  +CLIENTSIDEONLY
  +BLOODLESSIMPACT 
  +FORCEXYBILLBOARD
  +THRUACTORS
  +NOGRAVITY
  +MISSILE
	Obituary "%o ate bullet shrapnel."
  damagetype "CauseWaterSplash"
  Scale 0.09
  Speed 0
  Radius 4
  Height 8
  states
  {
  Spawn:
    TNT1 A 0
	Goto Death
	
  Death:
	//TNT1 A 0 ThrustThingZ(0,-5,0,1)
	//TNT1 A 1
	TNT1 A 2
	TNT1 A 1 A_Explode(4, 32)
    TNT1 A 0 A_CheckFloor("SpawnFloor")
    TNT1 A 0
    Stop
	
	SpawnFloor:
	TNT1 A 0
	TNT1 A 0 Acs_executealways(373, 0, 0, 0, 0)//Check if is under a liquid
	TNT1 A 2
	//TNT1 A 0 A_JumpIfInventory("IsOverGrass", 1, "SpawnGrass")
	TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "SpawnWater")
	TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "SpawnSlime")
	//TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "SpawnSlime")
	TNT1 A 00
	stop
	
	SpawnWater:
	TNT1 A 0
	//TNT1 A 0 A_CustomMissile ("WaterParticleXSpawner", 0, 0, random (0, 360), 2, random (80, 110))
	//TNT1 A 0 A_SpawnItem("GiantWaterRicochet")
	Stop
	
	SpawnSlime:
	TNT1 A 0
	TNT1 AAAAA 0 A_CustomMissile ("nukageParticleXFAster", 8, 0, random (0, 360), 2, random (30, 160))
	TNT1 AAAAA 0 A_CustomMissile ("nukageParticleXFAster", 24, 0, random (0, 360), 2, random (30, 160))
	TNT1 A 0 A_SpawnItem("SlimeRicochet")
	Stop
  }
}

ACTOR WaterRicochet: RicoChet
{
  renderstyle Translucent
  alpha 0.8
  Scale 1.0
  states
  {
  Spawn:
	SPHW ABCDE 3
	Stop
  }
}

ACTOR GiantWaterRicochet: RicoChet
{
  renderstyle Translucent
  alpha 0.9
  XScale 3.0
  YScale 2.0
  states
  {
  Spawn:
	GSPL ABCDEFGHIJKLMNOPQRSTUVWXYZ 2
	Stop
  }
}

ACTOR SlimeRicochet: RicoChet
{
  renderstyle Translucent
  alpha 0.8
  Scale 1.0
  states
  {
  Spawn:
	SPHG ABCDE 3
	Stop
  }
}


ACTOR SilentHitPuff: hitPuff
{
DamageType bullet
}

Actor MiniGunBulletPuff: HitPuff
{
DamageType CutLess
}

Actor MachineGunBulletPuff: HitPuff
{
DamageType CutLess
}

Actor ExtremeBulletPuff: HitPuff
{
DamageType Saw
}

Actor ExtremeBulletPuff2: HitPuff
{
DamageType Cut
}

Actor ATBulletPuff: HitPuff
{
Scale 0.4
DamageType Blast
States
{
 Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound ("smallexplode")
    TNT1 AAA 0 A_CustomMissile ("PlasmaSmoke", 0, 0, random (0, 360), 2, random (0, 360))
    EXSH A 3 BRIGHT
    stop
}
}

ACTOR SSawPuff: HitPuff
{
  renderstyle Translucent
scale 0.15
alpha 0.7
Radius 20
damagetype Saw
  +NOBLOCKMAP
  +NOGRAVITY
  +NOEXTREMEDEATH
  +FORCEXYBILLBOARD
  states
  {
Spawn:
Death:
XDeath:
Melee:
		TNT1 A 0
		TNT1 AB 1 bright
    TNT1 A 0 A_Jump (128,3)
    TNT1 A 0 A_SpawnItem ("Sparks", 0)
	TNT1 AAAAAA 0 A_CustomMissile ("SparkX", 2, 0, random (0, 360), 2, random (30, 170))
		BPUF C 1 bright A_PlaySound("weapons/chainsaw/hitwall")
		BPUF D 1 bright
Stop	
  }
}


ACTOR SSawPuff2: SSawPuff
{
damagetype Cut
}

ACTOR FakeSSawPuff: SSawPuff
{
+THRUGHOST
}


Actor PuffSmoke
{
+MISSILE
+NOBLOCKMAP
+NOGRAVITY
//Gravity 0.8
+DROPOFF
+NOTELEPORT
+FORCEXYBILLBOARD
+NOTDMATCH
+GHOST
+DONTSPLASH
+CLIENTSIDEONLY
radius 1
height 1
mass 1
//  Scale 0.02
//alpha 0.9
//damage 1
//renderstyle Add
  renderstyle Translucent
alpha 0.9
Scale 1.5
Speed 1
//damagetype Shrapnel
seesound "weapons/ricochet"
states
	{
	Spawn:
		TNT1 A 0
        PUFY ZZZCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1 A_FadeOut(0.03)
//LENY AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
		//LENY AAAAAA 1 bright
        //LENY AAA 1
		stop
	}
}

ACTOR Sparks: BulletPuff
{
  renderstyle Translucent
  alpha 0.8
  +NOBLOCKMAP
  +NOGRAVITY
  +CLIENTSIDEONLY
  Scale 0.5
  states
  {
  Spawn:
    TNT1 A 0
		//TNT1 AAAA 0 A_custommissile("RicochetBullet",0,0,random(0,360),2,random(-40,40))
    TNT1 A 0 A_SpawnItem ("YellowFlareSmall", 0)
    TNT1 A 0 A_Jump (132, 15)
    FX58 ABCDEFGHIJ 1 bright
    Stop
    TNT1 AAAAA 0
    FX57 ABCDEFGHIJ 1 bright
    stop
  }
}









