ACTOR NewNemesis : DoomWeapon replaces Nemesis
{
  Weapon.Selectionorder 2200
  Weapon.PreferredSkin "Nemesis-Marine"
  Inventory.PickupSound "NemesisGet"
  Obituary "%o got unmade by %k."
  Weapon.AmmoType "NemesisClip"
  Weapon.Kickback 120
  Weapon.UpSound "NemesisUp"
  AttackSound ""
  Inventory.PickupSound "NemesisGet"
  Inventory.PickupMessage "You now wield the Nemesis! Go forth and destroy all that await you..."
  +NOAUTOFIRE
  +WEAPON.BFG
  +WEAPON.NOAUTOAIM
  +AMMO_OPTIONAL
  Tag "Nemesis"
  States
  {
  Spawn:
	LSRG A -1 Bright
	Loop
  Ready:
	TNT1 A 0 A_PlaySound("NemesisReady",CHAN_BODY,0.5,1)
	NEME A 1 A_WeaponReady
	Loop
  Deselect:
	TNT1 A 0
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 ACS_NamedExecuteAlways("StopWeaponMusic",0)
	TNT1 A 0 A_PlaySound("weapons/weapondown",CHAN_WEAPON,1.0,0)
  DeselectLoop:
	TNT1 A 0 A_StopSound(CHAN_BODY)
	TNT1 A 0 A_StopSound(7)
	NEME A 1 A_Lower
	Loop
  Select:
	TNT1 A 0
	TNT1 A 0 A_StopSound(CHAN_BODY)
	Goto Select2
  Select1:
	TNT1 A 0 A_PlaySound("NemesisReady",CHAN_BODY,0.5,1)
  Select2:
	NEME A 1 A_Raise
	Loop
  Fire:
	TNT1 A 0 A_PlaySound("Nemesis/Laser",7)
	NEME BCD 1
	TNT1 A 0 A_PlaySound("Nemesis/LaserLoop",6,1.0,1)
  FireLoop:
	TNT1 A 0 A_Quake(2,4,0,6,0)
	TNT1 A 0 A_GunFlash
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Hem_GetCurrentHealth")-3 < 1,2)
	TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetCurrentHealth",0,ACS_NamedExecuteWithResult("Hem_GetCurrentHealth")-3)
	NEME EFGH 1 Bright A_RailAttack(random(30,60),0,0,0,0,RGF_SILENT,2,"PlayerNemesisRailPuff",0,0,0,0,8,0,"NemesisRailEffect",-2)
	//NEME EFGH 1 Bright A_FireCustomMissile("NemesisBeam",0,0,0,-4)
	TNT1 A 0 A_ReFire("FireLoop")
	Goto FireDone
  FireDone:
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_StopSound(6)
	NEME DCB 3
	Goto Ready
  AltFire:
	TNT1 A 0 A_JumpIfInventory("NemesisClip",300,1)
	Goto Ready
	NEME BBBCCCIIIJJJ 1
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("Hem_GetCurrentHealth") < 10,2)
	TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetCurrentHealth",0,10)
	TNT1 A 0 A_SetBlend("Pink",1.0,10)
	TNT1 A 0 A_PlaySound("Nemesis/FireBall",1)
	TNT1 A 0 A_FireCustomMissile("NemesisAltBall")
	TNT1 A 0 A_TakeInventory("NemesisClip",300)
	TNT1 A 0 A_GunFlash
	NEME K 1 Bright A_Recoil(15)
	NEME KKLLMMNN 1 Bright
	NEME OOPPQQRRSSTT 1
	Goto Ready
  Flash:
	TNT1 A 5 A_Light1
	TNT1 A 10 A_Light2
	TNT1 A 7 A_Light1
	TNT1 A 5 A_Light0
	Stop
	}
}

ACTOR NemesisClip : ammo
{
  Inventory.Amount 0
  Inventory.MaxAmount 300
}

Actor NemesisRailEffect
{
  Scale 0.08
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  +BRIGHT
  Alpha 0.85
  Renderstyle Add
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(256,1,2,3)
	NBEA ABC 0 A_Jump(256,"Spawn2")
  Spawn2:
	"----" A 1 Bright A_FadeOut
	Wait	 
	}
}

ACTOR PlayerNemesisRailPuff : ModdedBulletPuff
{
  +ALWAYSPUFF
  +PUFFONACTORS
  +PUFFGETSOWNER
  +NOTIMEFREEZE
  +BLOODLESSIMPACT
  Species "Player"
  Damagetype "NemesisBeam"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10", 0, 0, random(0,360), 2, random(0,360))
    Stop
  XDeath:
	TNT1 A 0 A_GiveToTarget("NemesisClip",1)
	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10", 0, 0, random(0,360), 2, random(0,360))
    Stop
    }
}

ACTOR NemesisAltBall
{
  Radius 20
  Height 30
  Damage 100
  Speed 18
  Alpha 0.95
  Scale 2.0
  Renderstyle Add
  Alpha 0.85
  Projectile
  +FORCERADIUSDMG
  +THRUSPECIES
  +NOTIMEFREEZE
  +FOILINVUL
  +RIPPER
  +NOBOSSRIP
  +NODAMAGETHRUST
  +DONTREFLECT
  +SKYEXPLODE
  Species "Player"
  Damagetype "NemesisBall"
  DeathSound ""
  //Decal BFG9500Lightning
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters
    TNT1 A 0 A_PlaySound("Nemesis/BallLoop",7,1.0,1,0.5)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_RadiusGive("NemesisAltBallEffectRemover",3000,RGF_MONSTERS)
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 A 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_RadiusGive("NemesisAltBallEffectRemover",3000,RGF_MONSTERS)
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 B 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_RadiusGive("NemesisAltBallEffectRemover",3000,RGF_MONSTERS)
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 C 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_RadiusGive("NemesisAltBallEffectRemover",3000,RGF_MONSTERS)
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 D 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttack",0,0,0,0,0,0,0,SXF_SETMASTER)
    Loop
  Death:
    TNT1 A 0 A_StopSound(7)
	TNT1 A 0 Radius_Quake(5,60,0,10,0)
	UNB2 ABCDABCD 6 Bright A_SpawnItemEx("NemesisAltBallShockwave")
	TNT1 A 0 A_PlaySound("Nemesis/BallExplode",1,1.0,0,0.2)
	TNT1 A 0 A_SpawnItemEx("NemesisHugeExplosion",-40)
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallEx")
	TNT1 A 0 A_Quake(9,100,0,2000,0)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_Explode(700,5000,0,0,2000)
    Stop    
    }
}

ACTOR NemesisAltBallRailgunAttack
{
  Projectile
  +LOOKALLAROUND
  +ISMONSTER
  +QUICKTORETALIATE
  +NOTARGET
  +FRIENDLY
  +NOCLIP
  +NOTIMEFREEZE
  States 
  {
  Spawn:
    TNT1 A 0
	TNT1 AAAAA 1 A_Look
	Stop
  See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(1250,"Attack")
	Stop
  Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_MissileAttack
	TNT1 A 1 A_CustomRailgun(random(40,100),0,0,0,RGF_SILENT,1,2,"PlayerNemesisRailPuff",0,0,0,0,8,0,"NemesisRailEffect")
	Goto Death
  Death:
	TNT1 A 1
	Stop
	}
}

Actor NemesisAltBallEffectRemover : CrusaderBuff
{
  States
  {
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_ChangeFlag("SHOOTABLE",1)
	TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
	TNT1 A 0 A_ChangeFlag("REFLECTIVE",0)
	TNT1 A 0 A_ChangeFlag("CANTSEEK",0)
	Stop
  }
}

ACTOR NemesisAltBallBolt
{
  Speed 35
  Radius 6
  Height 6
  Damage 100
  Alpha 0.8
  Projectile
  +SEEKERMISSILE
  +MTHRUSPECIES
  +DONTREFLECT
  +NOTIMEFREEZE
  +BRIGHT
  ReactionTime 170
  RenderStyle Add
  Damagetype "NemesisBall"
  DeathSound "bolt/explode"
  States
  {
  Spawn:
  	DVS1 A 0 A_Seekermissile(5,5,SMF_LOOK)
    UNBL AAABBB 1 A_SpawnItem("NemesisAltBallBoltTrail")
    Loop
  Death:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10", 0, 0, random(0,360), 2, random(0,360))
  ToasterDeath:
    DVS1 LMN 2
    Stop
	}
}

ACTOR NemesisAltBallBoltTrail
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  Renderstyle Add
  States
  {
  Spawn:
    UNBL AAABBB 1 Bright A_FadeOut(0.1)
    Loop
	}
}

Actor NemesisAltBallSmoke
{
  Scale 0.8
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  +BRIGHT
  Renderstyle Add
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(256,1,2,3)
	UNFG ABC 0 A_Jump(256,"Spawn2")
  Spawn2:
	"----" A 1 Bright A_FadeOut(0.03)
	Wait	 
	}
}

Actor NemesisAltBallSmoke2 : NemesisAltBallSmoke { Scale 1.8 }

Actor NemesisAltBallExplosionSmoke : NemesisAltBallSmoke
{
  Scale 2.5
  States
  {
  Spawn:
	UNB3 ABCDEF 3 Bright A_FadeOut(0.1)
	Stop	 
	}
}
 
Actor NemesisFlyParticle
{
  RenderStyle Add
  Scale 0.1
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  States
  {
  Spawn:
	UNPA A 1 bright A_FadeOut(0.01,1)
	Loop
  Death:
	TNT1 A 1
	Stop
	}
}

ACTOR NemesisAltBallShockwave : DTech10KShockwave 
{
  +NOTIMEFREEZE
  Scale 2.5
  States
  {
  Spawn:
	USHC ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.04)
	Stop
	}
}

ACTOR NemesisHugeExplosion : NemesisAltBallShockwave
{
  Scale 4.0
  Renderstyle Add
  States
  {
  Spawn:
	UNLX ABCDEFGHIJKLMNOPQRS 5 Bright
	Stop
	}
}

ACTOR NemesisAltBallEx
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  var int user_loop;
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_loop >= 50,"Null")	 
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("NemesisFlyParticle",random(0,100),0,random(-100,100),frandom(20,50),0,frandom(-30,30),random(0,360))
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("NemesisAltBallExplosionSmoke",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
	TNT1 AAAAAA 0 A_SpawnItemEx("NemesisAltBallSmoke2",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
	TNT1 A 2 Light("NemesisBigBallBoom")
	Loop
	}
}




ACTOR NemesisAltBallMonster : NemesisAltBall
{
  Renderstyle Add
  Alpha 0.85
  Projectile
  -FOILINVUL
  Species "SatanGuard"
  Damagetype "SatanGuard"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters
    TNT1 A 0 A_PlaySound("Nemesis/BallLoop",7,1.0,1,0.5)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBoltMonster",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 A 1 Bright
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBoltMonster",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 B 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttackMonster",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBoltMonster",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 C 1 Bright
	TNT1 AAA 0 A_CustomMissile("NemesisAltBallBoltMonster",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("NemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    UNB2 D 1 Bright A_SpawnItemEx("NemesisAltBallRailgunAttackMonster",0,0,0,0,0,0,0,SXF_SETMASTER)
    Loop
  Death:
    TNT1 A 0 A_StopSound(7)
	TNT1 A 0 Radius_Quake(5,60,0,10,0)
	UNB2 ABCDABCD 6 Bright A_SpawnItemEx("NemesisAltBallShockwave")
	TNT1 A 0 A_PlaySound("Nemesis/BallExplode",1,1.0,0,0.2)
	TNT1 A 0 A_SpawnItemEx("NemesisHugeExplosion")
	TNT1 A 0 A_SpawnItemEx("NemesisAltBallEx")
	TNT1 A 0 A_Quake(9,100,0,2000,0)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_Explode(700,5000,0,0,2000)
    Stop    
    }
}

ACTOR NemesisAltBallBoltMonster : NemesisAltBallBolt
{
  Damage 20
  Damagetype "SatanGuard"
}

ACTOR NemesisAltBallRailgunAttackMonster : NemesisAltBallRailgunAttack
{
  -FRIENDLY
  States 
  {
  Spawn:
    TNT1 A 0
	TNT1 AAAAA 1 A_Look
	Stop
  See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(1250,"Attack")
	Stop
  Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_MissileAttack
	TNT1 A 1 A_CustomRailgun(random(8,20),0,0,0,RGF_SILENT,1,2,"NemesisRailPuff",0,0,0,0,8,0,"NemesisRailEffect")
	Goto Death
  Death:
	TNT1 A 1
	Stop
	}
}

ACTOR NemesisRailPuff : PlayerNemesisRailPuff
{
  Species "SatanGuard"
  Damagetype "SatanGuard"
  States
  {
  Spawn:
  XDeath:
	TNT1 A 0 NoDelay A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_CustomMissile("Kaboom10", 0, 0, random(0,360), 2, random(0,360))
    Stop
    }
}