actor GangstaGrosse // I never forget him and the mod Doom X
{
//Creator: Titanium
//Origin: Nexus Infinity
//Sprite: GAGR
//Title: "Gangsta Grosse"
  Scale 0.4
  Health 4200
  Radius 24
  Height 64
  Mass 5000
  Speed 8
  PainChance 20
  PainChance "Crush", 256
  PainChance "Fire", 256
  Monster
  +NOBLOOD
  +DONTRIP
  +NORADIUSDMG
  +ALWAYSFAST
  +FLOORCLIP
  +LOOKALLAROUND
  +DONTHARMSPECIES
  +MISSILEMORE
  +MISSILEEVENMORE
  +NOFEAR
  +LOOKALLAROUND
  +BOSS
  Species "SS"
  DamageFactor "SS", 0.0
  DamageFactor "Moloch", 0.0
  DamageFactor 0.8
  RadiusDamageFactor 0.20
  DropItem "PortableMedCell", 200, 1
  DropItem "PortableMedCellPack", 100, 1
  DropItem "PortableMedkit", 200
  DropItem "ArmorPlate", 200
  DropItem "HandGrenadeAmmo", 200, 1
  DropItem "MineAmmo", 200, 1
  DropItem "AmmoPack", 150
  DropItem "ExtraArmor" 256 1
  DropItem "BulletBox", 200, 50
  DropItem "BulletBox", 200, 50
  DropItem "Explosive Minigun", 256
  DropItem "PowerStimpack", 100, 1
  DropItem "Improved Minigun", 10
  SeeSound ""
  PainSound "GGrosse/pain"
  DeathSound "GGrosse/death"
  ActiveSound ""
  Obituary "%o loses a fight against Gangsta Grosse."
  Tag "\c[c8]Gangsta \c[w9]Grosse\c-"
  var int user_attack;
  var int user_music;
  var int user_lcounter;
  var int user_homie;
  states
  {
	Spawn:
		GAGR A 10 A_Look
		Loop
	Idle:
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 HealThing(1)
		GAGR AAAA 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 HealThing(1)
		GAGR BBBB 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 HealThing(1)
		TNT1 A 0 A_Jump(12,"RushIdle")
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR CCCC 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 HealThing(1)
		GAGR DDDD 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_Jump(12,"RushIdle")
		Loop
	RushIdle:
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 HealThing(1)
		GAGR AAAA 1 A_Wander
		TNT1 A 0 A_Look
		GAGR BBBB 1 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR CCCC 1 A_Wander
		TNT1 A 0 A_Look
		GAGR DDDD 1 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_Jump(12,"Idle")
		Loop
	See:
        TNT1 A 0 A_JumpIf(user_music == 1,3)
		TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,2108)
	    TNT1 A 0 A_SetUserVar("user_music",1)
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		GAGR A 10 A_PlaySound("GGrosse/sight",CHAN_VOICE,1.0,0,ATTN_NONE)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		Goto SeeLoop
	SeeLoop:
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		GAGR AAAABBBB 3 A_Chase
		TNT1 A 0 HealThing(1)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_Jump(12,"Rush")
		GAGR CCCCDDDD 3 A_Chase
		TNT1 A 0 HealThing(1)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_Jump(12,"Rush")
		Loop
	Rush:
		GAGR AAAA 1 A_Chase
		TNT1 A 0 HealThing(1)
		GAGR BBBB 1 A_Chase
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR CCCCDDDD 1 A_Chase
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_Jump(12,"SeeLoop")
		Loop
	See2:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_JumpIf(user_attack < 1,"SeeLoop2")
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		Goto SeeLoop2
	SeeLoop2:
		GAGR AAAA 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 HealThing(1)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		GAGR BBBB 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR CCCC 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 HealThing(1)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		GAGR DDDD 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_GiveInventory("Tic",1)
		TNT1 A 0 A_JumpIfInventory("Tic",10,"SeeLoop")
		Loop
  Missile:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_Jump(128,"Avoid")
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_SetUserVar("user_attack",1)
		TNT1 A 0 A_JumpIf(user_homie == 1,2)
		TNT1 A 0 A_Jump(100,"SpawnHomie")
		TNT1 A 0 A_Jump(128,"BFG2704","AltBFG2704")
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstart",CHAN_WEAPON,1.0,0)
		GAGR EEEE 5 A_FaceTarget(45)
		TNT1 A 0 A_FaceTarget
  Refire:
		TNT1 A 0 A_PlaySound("weapons/expmgunspin",CHAN_WEAPON,1.0,1)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing", 25, 6, 45, Random(2, 6), 0, Random(1, 3), Random(80, 90), 128)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing", -25, 6, 45, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
		GAGR F 0 A_CustomMissile("MonsterExplosiveTracer2",45,25,Random(3,-3))
		GAGR F 0 A_CustomMissile("MonsterExplosiveTracer2",45,-25,Random(3,-3))
		GAGR FF 0 A_CustomBulletAttack(4.3,2.6,1,20,"ExosBulletPuff")
		GAGR F 3 Bright A_PlaySound("weapons/12gaugefire")
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing", 25, 6, 45, Random(2, 6), 0, Random(1, 3), Random(80, 90), 128)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing", -25, 6, 45, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
		GAGR G 0 A_CustomMissile("MonsterExplosiveTracer2",45,25,Random(3,-3))
		GAGR G 0 A_CustomMissile("MonsterExplosiveTracer2",45,-25,Random(3,-3))
		GAGR GG 0 A_CustomBulletAttack(4.3,2.6,1,20,"ExosBulletPuff")
		GAGR G 3 Bright A_PlaySound("weapons/12gaugefire")
		TNT1 A 0 A_MonsterRefire(0,"MissileEnd")
		TNT1 A 0 A_Jump(1,"Pause")
		TNT1 A 0 A_GiveInventory("Tic",1)
		TNT1 A 0 A_JumpIfInventory("Tic",50,"Pause")
		Goto Refire
	MissileEnd:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		TNT1 A 0 A_Jump(127,2)
		TNT1 A 0 A_PlaySound("GGrosse/active",CHAN_VOICE,1.0,0,ATTN_NONE)
		GAGR EE 3 A_FaceTarget
		Goto SeeLoop
	Pause:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		TNT1 A 0 A_Jump(256,1,2,3,4,5)
		GAGR EEEEEEEEEE 3 A_FaceTarget(45)
		Goto See2
	BFG2704:
	    GAGR EEEE 5 A_FaceTarget(45)
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner")
		TNT1 A 0 A_SetUserVar("user_lcounter",40)
		GAGR E 1 A_FaceTarget
	BFG2704Loop:
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,128)
		TNT1 A 0 A_CustomMissile("Molo2704Ball",45+random(-5,5),25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball",45+random(-5,5),-25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball2",45+random(-5,5),25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball2",45+random(-5,5),-25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		GAGR F 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("Molo2704Ball",45+random(-5,5),25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball",45+random(-5,5),-25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball2",45+random(-5,5),25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		TNT1 A 0 A_CustomMissile("Molo2704Ball2",45+random(-5,5),-25+random(-5,5),random(-8,8),CMF_TRACKOWNER|CMF_OFFSETPITCH,frandom(-4.0,4.0))
		GAGR G 1 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner")
		TNT1 A 0 A_JumpIf(user_lcounter < 1,"BFG2704End")
		TNT1 A 0 A_SetUserVar("user_lcounter",user_lcounter-1)
		TNT1 A 0 A_JumpIfTargetInLOS("BFG2704Loop",90,JLOSF_DEADNOJUMP)
	BFG2704End:
		GAGR E 15 A_SpawnItemEx("MolochLineSpawner")
		TNT1 A 0 A_Jump(256,1,2,3,4,5)
		GAGR EEEEEEEEEE 3 A_FaceTarget(45)
		GoTo See
	AltBFG2704:
		TNT1 A 0 A_PlayWeaponSound("weapons/bfgf")
		GAGR EEEEE 4 A_FaceTarget(45)
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner")
		TNT1 A 0 A_SetUserVar("user_lcounter",3)
		GAGR E 1 A_FaceTarget
	AltBFG2704Loop:
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_CustomMissile("AltMolochBFG2704",45,25,0,CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("AltMolochBFG2704",45,-25,0,CMF_TRACKOWNER)
		GAGR G 5 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		GAGR G 5 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		GAGR G 5 Bright A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("MolochLineSpawner")
		TNT1 A 0 A_JumpIf(user_lcounter < 1,"BFG2704End")
		TNT1 A 0 A_SetUserVar("user_lcounter",user_lcounter-1)
		TNT1 A 0 A_JumpIfTargetInLOS("AltBFG2704Loop",90,JLOSF_DEADNOJUMP)
		Goto BFG2704End
	Avoid:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"AvoidLeft","AvoidRight","Dash","Jump")
		GoTo AvoidLeft
	AvoidLeft:
		GAGR E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		TNT1 A 0 ThrustThing(angle*256/360+192,15,0,0)
	    GAGR E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLoop2")
		TNT1 A 0 A_JumpIfTargetInLos("Missile",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(64,"SeeLoop")
		GoTo Missile+4
	AvoidRight:
		GAGR E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		TNT1 A 0 ThrustThing(angle*256/360+64,15,0,0)
		GAGR E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLoop2")
		TNT1 A 0 A_JumpIfTargetInLos("Missile",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(64,"SeeLoop")
		GoTo Missile+4
	Dash:
		GAGR E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		TNT1 A 0 ThrustThingZ(0,20,0,1)
		TNT1 AA 0 A_Recoil(-20)
		GAGR E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLoop2")
		TNT1 A 0 A_JumpIfTargetInLos("Missile",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(64,"SeeLoop")
		GoTo Missile+4
	Jump:
		GAGR E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		GAGR E 0 ThrustThingZ(0,random(40,60),0,1)
		TNT1 AA 0 A_Recoil(-5)
		GAGR E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLand2")
		TNT1 A 0 A_JumpIfTargetInLos("MissileLand",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(64,"SeeLand")
		Goto MissileLand
	SeeLand:
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR A 0 A_PlaySound("Terminator/terstepA")
		GAGR E 5 A_FaceTarget
		GoTo SeeLoop
	SeeLand2:
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR A 0 A_PlaySound("Terminator/terstepA")
		GAGR E 5 A_FaceTarget
		GoTo SeeLoop2
	MissileLand:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_SetUserVar("user_attack",1)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstart",CHAN_WEAPON,1.0,0)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		GAGR A 0 A_PlaySound("Terminator/terstepA")
		GAGR EEEE 5 A_FaceTarget(45)
		TNT1 A 0 A_FaceTarget
		GoTo Refire
	Pain.Crush:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_Recoil(-20)
		GAGR H 6 A_Pain
		GoTo SeeLoop
	Pain.Fire:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_Recoil(-20)
		GAGR H 6 A_Pain
		GoTo SeeLoop
	Pain:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_JumpIf(user_attack > 0,"WeapodDown")
		GAGR H 6 A_Pain
		Goto Avoid
	SpawnHomie:
	    TNT1 A 0 A_SpawnItemEx("SpawnHomie",0,0,0,0,0,0,0,32)
		TNT1 A 0 A_SetUserVar("user_homie",user_homie+1)
		Goto Missile+4
	WeapodDown:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		GAGR E 6 A_Pain
		Goto SeeLoop
	Death:
		TNT1 A 0
		TNT1 AAA 0 A_StopSound(CHAN_WEAPON)
		GAGR I 5 A_ScreamAndUnblock
		GAGR J 5 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		GAGR K 5 A_SpawnItem("BodyCrash",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("BFG2704",0,0,8,random(1,8),0,2,random(0,360),0,0)
		TNT1 A 0 A_SpawnItemEx("DoomsphereDust",0,0,8,random(1,8),0,2,random(0,360),0,32)
		TNT1 A 0 A_BossDeath
		GAGR L -1
		Stop
  }
}

ACTOR SpawnHomie : NemesisHKSummoner
{
States
{
   Spawn:
    TNT1 A 0
	TNT1 A 0 A_SetAngle(random(0,359))
	TNT1 A 1 A_Recoil(-40)
	TNT1 A 0 A_JumpIf(user_limit > 3,"Death")
	TNT1 A 0 A_SetUserVar("user_limit",user_limit+1)
	TNT1 A 1 A_Recoil(-4)
	TNT1 A 2 A_Jump(48,"Death")
    Goto Spawn+3
   Death:
    TNT1 A 0 A_SpawnItemEx("TeleportFog")
    TNT1 A 5 A_SpawnItemEx("LeeroyGrosse",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 A 1 A_Fall
	Stop
	}
}