actor RevenantClass : PlayerPawn
{
  health 300
  gibhealth 99999 //added - actor can not be gibbed
  radius 20
  height 56
  mass 500
  speed 0.75 //0.5
  painchance 100
  MaxStepHeight 36
  Scale 0.85

  Player.DisplayName "Revenant"
  Player.MaxHealth 300
  Player.ViewHeight 58
  Player.SoundClass "MSkeleton"
  Player.JumpZ 10
  Player.MorphWeapon "RevenantGun"
  Player.WeaponSlot 1, RevenantGun
  
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.6
  DamageFactor "MarineRLDamage", 0.6
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRail", 0.6
  
  DamageFactor "RevenantGrenDamage", 0.1 //self damage
  DamageFactor "CybRLDamage", 0.25
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "viledamage", 0
  DamageFactor "Control", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "Slime", 0
  DamageFactor "ZombieTankDamage", 0
  -PICKUP
  +LONGMELEERANGE
  +MISSILEMORE
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    SKEL AB 10 
    loop
  See:
    SKEL A 0
    SKEL A 1 A_Jump (240,2) //0
    SKEL A 0 A_PlaySoundEx ("Skeleton/active","body")
    SKEL AABBCCDDEEFF 2 
	TNT1 A 0 HealThing(10)
    loop
  Missile:
    SKEL A 6 
    SKEL A 0 A_JumpIfInventory ("SKELCH",1,"Punch")   
    SKEL J 7  
    SKEL K 7 bright 
    SKEL K 7 
    goto See
  Punch:
    SKEL G 5 
    SKEL H 5 
    SKEL I 4
    SKEL A 0 A_TakeInventory ("SKELCH",1)
    goto See
  Death:
    SKEL L 7
    SKEL M 7 Thing_changeTid(144,0)
    SKEL N 7 A_PlaySoundEx ("skeleton/death","body")
    SKEL O 7 A_NoBlocking
    SKEL P 7 A_GiveToTarget ("MarineExp",4)
    SKEL P 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    SKEL Q -1
    stop	
  }
}

ACTOR RevenantGun : Weapon
{
  obituary "%o couldn't evade %k fireball."
  hitobituary "%o was punched by %k."
  weapon.kickback 60
  attacksound "skeleton/melee"
  +ammo_optional
  +WEAPON.NOALERT
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    REVP A 1 A_Raise
    Goto Ready
  Ready:
    REVP A 8 A_WeaponReady
    //REVP A 0 A_JumpIfInventory ("Mskull",0,3)
    //REVP A 4 A_WeaponReady
    //REVP A 0 A_JumpIfInventory ("Mskull",3,1)
    REVP A 0 HealThing(5)	
    Loop
  DeSelect:
    REVP A 1 A_Lower
    Loop
  Fire:      
    REVP A 0 A_JumpIfCloser (130,"Melee") //90
	REVP A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
	REVP A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
    REVP A 0 A_JumpIfInventory ("Mskull",0,"MasterShot")
    //REVP A 0 SetPlayerProperty (0, 1, 0)
    REVP A 0 A_JumpIfInventory ("SKELCH2",1,"RightGunShot")
    REVP I 8 bright
    REVP K 8 bright A_FireCustomMissile ("HomingMissile",0,0,-8,16,1)
    REVP L 8 bright
    //REVP A 0 SetPlayerProperty (0, 0, 0)
    REVP A 4 A_GiveInventory ("SKELCH2",1)
    Goto Ready
	
  AltFireX:
	REVP I 8 bright
    REVP K 8 bright A_FireCustomMissile ("PuppetRevRocket",0,0,-8,16,1)
    REVP L 16 bright
	Goto Ready
  AltFireY:
  	REVP I 8 bright
	REVP K 0 A_PlaySoundEx ("weapons/mgren","weapon")
    REVP K 8 bright A_FireCustomMissile ("MRevenantGrenadePuppet",0,0,-8,16,1)
    REVP L 16 bright
	Goto Ready	
	
  RightGunShot:
    REVP M 8 bright
    REVP N 8 bright A_FireCustomMissile ("HomingMissile",0,0,8,16,1)
    REVP O 8 bright
    REVP A 0 SetPlayerProperty (0, 0, 0)
    REVP A 4 A_TakeInventory ("SKELCH2",1)
    Goto Ready
  MasterShot:
    REVP A 0 SetPlayerProperty (0, 1, 0)
    REVP A 0 A_GunFlash
    REVP I 11 bright A_TakeInventory ("SKELCH",1)
    REVP K 0 bright A_FireCustomMissile ("HomingMissile",0,0,11,16,1)
    REVP K 11 bright A_FireCustomMissile ("HomingMissile",0,0,-11,16,1)
    REVP L 11 bright
    REVP A 0 SetPlayerProperty (0, 0, 0)
    REVP A 6 A_TakeInventory ("SKELCH2",1)
    Goto Ready
  Melee:
    REVP B 2 
    REVP C 4 A_GiveInventory ("SKELCH",1) 
    REVP D 4 A_PlaySound ("SKELLPUNCH")
    REVP E 3 A_CustomPunch (12,0,0,"FBulletPuff",110)
    REVP FG 3 
    Goto Ready
  Altfire:
    REVP A 5 ACS_ExecuteAlways (419,0,6)
    Goto Ready
  Flash: 
    REVP M 11 bright
    REVP N 11 bright
    REVP O 11 bright
    Stop
  }
}

// Revenant Guns Check

actor SKELCH3 : Inventory
{
  inventory.amount 1
  inventory.maxamount 1
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}

//  Revenant Guns animation check

actor SKELCH2 : Inventory
{
  inventory.amount 1
  inventory.maxamount 1
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}

//  Revenant animation check(range or melee)

actor SKELCH : Inventory
{
  inventory.amount 1
  inventory.maxamount 1
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}

actor HomingMissile
{
  radius 12
  height 8
  speed 16
  damage 11
  renderstyle "Add"
  scale 1
  seesound "skeleton/attack"
  deathsound "skeleton/tracex"
  DamageType "SkelDamage"
  PROJECTILE
  +SEEKERMISSILE
  +SCREENSEEKER
  
  states
  {
  Spawn:
    FATB AB 2 bright A_SeekerMissile(30,60,SMF_PRECISE,50,10) //45,90 //SMF_LOOK removed
    FATB A 0 A_SpawnItem("TracerSmoke",0)
    loop
  Death:
    FBXP A 8 bright
    FBXP B 6 bright 
    FBXP C 4 bright 
    stop
  }
}

//    Projectile "Fx"

actor TracerSmoke
{
  renderstyle Translucent
  alpha 0.5
  +NOBLOCKMAP
  +NOGRAVITY
  states
  {
  Spawn:
    PUFF BCBCD 3
    stop
  }
}



ACTOR PuppetRevRocket
{
   Radius 8
   Height 11
   Speed 12 //18
   Damage 15
   PROJECTILE
   DeathSound "weapons/hrlexp"
   ExplosionDamage 64
   ExplosionRadius 96
   +SeekerMissile
   +Rockettrail
   +RANDOMIZE
   +DEHEXPLOSION
   Damagetype "CybRLDamage"
   SeeSound "weapons/hrlfir"
   Decal Scorch
   
   BounceCount 2 //added 3.0.1
   +CANBOUNCEWATER //added 3.0.1
   +DOOMBOUNCE //added 3.0.1
   +NOBOUNCESOUND //added 3.0.1
   +NOWALLBOUNCESND //added 3.0.1
   
   States
   {
   Spawn:
      HMIS A 1 Bright A_SeekerMissile (10,20) //30,60
      //HMIS A 2 Bright
      goto Spawn
   Death:
      MISL B 8 bright A_Explode(64,96)
      MISL C 6 bright
      MISL D 4 bright
      stop
   }
}




ACTOR MRevenantGrenadePuppet : Grenade
{
	Radius 8
	Height 8
	Speed 25
	Damage 15
	Projectile
	BounceCount 3
	Scale 1.5
	-NOGRAVITY
	-NOTELEPORT
	+TELESTOMP //added
	+DOOMBOUNCE
	+DEHEXPLOSION
	+ROCKETTRAIL
	//+GRENADETRAIL
	+EXPLODEONDEATH
	//+USESTBOUNCESOUND
	//+NOBOUNCESOUND //added
	+CANBOUNCEWATER //added
	SeeSound "weapons/mgrenbounce"
	DeathSound "weapon/grenadeexplode" //weapons/rocklx
	Obituary "$OB_GRENADE"
	DamageType "RevenantGrenDamage"
	States
	{
	Spawn:
		GRN2 ABCDEFGHIJK 3  
		loop
	Death:
		MISL B 8 bright A_Explode
		MISL C 6 bright
		MISL D 4 bright
		stop
	}

}