actor FatsoClass : Playerpawn
{
  health 600
  gibhealth 99999 //added - actor can not be gibbed
  radius 48
  height 64
  mass 1000
  speed 0.5 //0.35
  painchance 127
  Player.DisplayName "Mancubus"
  Player.MaxHealth 600
  Player.ViewHeight 48
  Player.SoundClass "Mancubus" 
  Player.JumpZ 5 //0
  Player.MorphWeapon "Fatsogun"
  Player.WeaponSlot 1, Fatsogun
  
  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 "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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    FATT AB 15 
    loop
  See:
    FATT A 0
    FATT A 1 A_Jump (240,2) //0
    FATT A 0 A_PlaySoundEx ("fatso/active","body")
    FATT ABBCCDDEEFF 4 
    loop
  Missile:
    FATT G 20 
    FATT H 6 bright
    FATT IG 4
    FATT H 6 bright
    FATT IG 4
    FATT H 7 bright
    goto See
  Death:
    FATT K 6 A_GiveToTarget ("MarineExp",7)
    FATT L 6 A_PlaySoundEx ("fatso/death","body")
    FATT M 6 A_NoBlocking
    FATT N 6 Thing_changeTid(144,0)
    FATT OPQRS 6
    FATT S 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    FATT S -1
	stop	
  }
}

// Weapons

ACTOR FatsoGun : Weapon
{
  obituary "%o was squashed by %k fireball."
  weapon.kickback 300
  +WEAPON.NOALERT
  +Ammo_Optional
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.NOAUTOAIM
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    MANS A 1 A_Raise
    loop
  Ready:
    MANS A 6 A_WeaponReady
    //TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    //MANS A 6 A_WeaponReady
    //TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    MANS A 0 HealThing(2)	
    Loop
  DeSelect:
    MANS A 1 A_Lower
    Loop
  Fire:
	MANS A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
	MANS A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
    MANS A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")
    MANS A 1 A_Jump (180,2) //0
    MANS A 0 A_PlaySound ("fatso/raiseguns") // cuz "Auhh-buulll-booehhee" very annoying
    MANS A 3
    //TNT1 A 0 SetPlayerProperty (0, 1, 0)
    MANS BCDEF 4
    MANS F 0 bright A_FireCustomMissile("FatShot2",5,0,20,0)
    MANS F 0 bright A_FireCustomMissile("FatShot2",-5,0,-20,0)
    MANS G 6
    MANS EF 4
    MANS F 0 bright A_FireCustomMissile("FatShot2",0,0,20,0)
    MANS F 0 bright A_FireCustomMissile("FatShot2",0,0,-20,0)
    MANS G 6
    MANS EF 4
    MANS F 0 bright A_FireCustomMissile("FatShot2",2,0,20,0)
    MANS F 0 bright A_FireCustomMissile("FatShot2",-2,0,-20,0)
    MANS G 6
    //TNT1 A 0 SetPlayerProperty (0, 0, 0)
    goto ready

  AltFireX:	
	MANS BCDEF 1
    MANS F 0 bright A_FireCustomMissile("FatShot2",random(-5,5),0,0,0)
    MANS G 3
	Goto Ready
  AltFireY:
	MANS BCDEF 1
    MANS F 0 bright A_FireCustomMissile("FatShot2",random(-20,20),0,0,0)
    MANS G 1
	Goto Ready
  AltFireZ:
    MANS BCDEF 1
    MANS F 1 bright A_FireCustomMissile("PuppetFatsoAltFireY",random(-5,5),0,0,0)
	MANS G 15
  goto ready

	
  AltFire:
    MANS A 3 ACS_ExecuteAlways (419,0,9) 
    Goto Ready
  }
}

//   Projectile

actor FatShot2
{
  radius 6
  height 8
  speed 20
  damage 12
  renderstyle Add
  alpha 1
  seesound "fatso/attack"
  deathsound "fatso/shotx"
  DamageType "FatsoDamage"
  PROJECTILE
  +RANDOMIZE
  states
  {
  Spawn:
    MANF AB 4 bright
    loop
  Death:
    MISL B 8 bright 
    MISL C 6 bright
    MISL D 4 bright
    stop
  }
}

//Hectebus

actor HectebusClass : Playerpawn
{
  Health 1100
  gibhealth 99999 //added - actor can not be gibbed
  radius 48
  height 64
  mass 1000
  speed 0.50 //0.3
  painchance 127
  Player.DisplayName "Hectebus"
  Player.MaxHealth 600
  Player.ViewHeight 48
  Player.SoundClass "Hectebus" 
  Player.JumpZ 5 //0
  Player.MorphWeapon "Hectebusguns"
  Player.WeaponSlot 1, Hectebusguns
  
  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 "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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    HECT AB 15 
    loop
  See:
    HECT A 0
    HECT A 1 A_Jump (240,2) //0
    HECT A 0 A_PlaySoundEx ("hecto/active","body")
    HECT ABBCCDDEEFF 4
	TNT1 A 0 HealThing(10)
    loop
  Missile:
    HECT A 0 A_JumpIfInventory ("FHeat",26,"CantShot")
    HECT G 24 
    HECT H 5 bright
    HECT G 10 
    HECT H 5 bright
    HECT G 10 
    HECT H 6 bright
    HECT IG 5
    goto See
  CantShot:
    HECT G 24
    goto See
  Death:
    HECT K 6 A_GiveToTarget ("MarineExp",7)
    HECT L 6 A_PlaySoundEx ("hecto/death","body")
    HECT M 6 A_NoBlocking
    HECT N 6 Thing_changeTid(144,0)
    HECT OPQRS 6
    HECT S 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    HECT S -1
	stop	
  }
}

// Weapons

ACTOR Hectebusguns : Weapon
{
  obituary "%o was squashed by %k fireball."
  weapon.kickback 300
  +WEAPON.NOALERT
  +Ammo_Optional
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.NOAUTOAIM
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    MANS A 1 A_Raise
    loop
  Ready:
    MANS A 6 A_WeaponReady
    //MANS A 0 A_TakeInventory ("FHeat",1)
    //MANS A 0 A_JumpIfInventory ("Mskull",0,4)
    //MANS A 6 A_WeaponReady
    //MANS A 0 A_TakeInventory ("FHeat",1)
    //MANS A 0 A_JumpIfInventory ("Mskull",3,1)
    MANS A 0 HealThing(2)	
    Loop
  DeSelect:
    MANS A 1 A_Lower
    Loop
  Fire:
    MANS A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
	MANS A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
	MANS A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")
    MANS A 0 A_JumpIfInventory ("FHeat",26,"Overheat")
    MANS A 0 A_GiveInventory ("FHeat",6)
    MANS A 1 A_Jump (180,2) //0
    MANS A 0 A_PlaySound ("hecto/raiseguns") // cuz "Auhh-buulll-booehhee" very annoying
    //MANS A 0 SetPlayerProperty (0, 1, 0)
    MANS BCDE 5
    MANS H 4 bright
    MANS H 0 bright A_FireCustomMissile("PHectShot",0,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",5.625,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",11.25,0,0,0)
    MANS I 5 bright A_FireCustomMissile("PHectShot",16.875,0,0,0)
    MANS DE 3
    MANS H 4 bright
    MANS H 0 bright A_FireCustomMissile("PHectShot",0,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",-5.625,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",-11.25,0,0,0)
    MANS I 5 bright A_FireCustomMissile("PHectShot",-16.875,0,0,0)
    MANS DE 3
    MANS H 4 bright
    MANS H 0 bright A_FireCustomMissile("PHectShot",-11.25,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",-5.625,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",0,0,0,0)
    MANS H 0 bright A_FireCustomMissile("PHectShot",5.625,0,0,0)
    MANS I 6 bright A_FireCustomMissile("PHectShot",11.25,0,0,0)
    //MANS I 0 SetPlayerProperty (0, 0, 0)
    goto ready
	
  AltFireX:
	MANS BCDE 3
    MANS H 1 bright A_FireCustomMissile("PHectShot",0,0,0,0)
    MANS H 1 bright A_FireCustomMissile("PHectShot",-4,0,0,0)
    MANS H 1 bright A_FireCustomMissile("PHectShot",4,0,0,0)
    goto ready
  AltFireY:
    MANS BCDE 2
    MANS H 1 bright A_FireCustomMissile("PHectShot",0,0,0,0)
	MANS H 1 bright A_FireCustomMissile("PHectShot",0,0,0,0)
    goto ready
  AltFireZ:
    MANS BCDE 2
    MANS H 1 bright A_FireCustomMissile("PuppetFatsoAltFireY",random(-5,5),0,0,0)
    MANS H 1 bright A_FireCustomMissile("PuppetFatsoAltFireY",random(-5,5),0,0,0)
	MANS H 15
  goto ready
	
  Overheat:
    //MANS A 0 SetPlayerProperty (0, 1, 0)
    MANS A 0 A_PlaySoundEx ("cybie/overheat","body")
    MANS A 30 ACS_ExecuteAlways (408)
    MANS A 0 A_TakeInventory ("FHeat",5)
    //MANS A 0 SetPlayerProperty (0, 0, 0)
    goto ready
  AltFire:
    MANS A 3 ACS_ExecuteAlways (419,0,28) 
    Goto Ready
  }
}

actor PHectShot : MHectShot
{
speed 20
}



//AltFire Z
actor PuppetFatsoAltFireY
{
  radius 10
  height 1
  speed 16
  alpha 1
  damage 1
  DamageType "FatsoDamage"
  renderstyle add
  PROJECTILE
  +NOBLOCKMAP
  +NOGRAVITY
  +FLOORCLIP //added 4.3
  PROJECTILE
  -BLOODLESSIMPACT
  +RIPPER
		BounceCount 1
		+CANBOUNCEWATER
		+DOOMBOUNCE
		+NOBOUNCESOUND
		+NOWALLBOUNCESND
  states
  {
  Spawn:
    TNT1 A 2 A_SpawnItemEx ("PuppetFatsoAltFireYRipper")
	loop
  Death:
    TNT1 A 1
    stop
  }
}

//FireTrail visual
actor PuppetFatsoAltFireYRipper
{
  radius 4
  height 1
  speed 0
  damage 10
  alpha 1
  DamageType "FatsoDamage"
  renderstyle add
  PROJECTILE
  +NOBLOCKMAP
  +NOGRAVITY
  -BLOODLESSIMPACT
  states
  {
  Spawn:
    TNT1 A 1 A_Fire 
	GoTo Death
  Death:
    FIRE A 2 bright A_StartFire
    FIRE BAB 2 bright A_Fire
    FIRE C 2 bright A_FireCrackle
    FIRE BCBCDCDCDEDED 2 bright A_Fire
    FIRE E 2 bright A_FireCrackle
    FIRE FEFEFGHGHGH 2 bright A_Fire
    stop
  }
}

