// *** MODIFIED BY CHEBMASTER
// I mark most important places modified by me with //***Che -- unless I forget to.





ACTOR BossBrainReplacer Replaces BossBrain
{
	Health 250
	Mass 10000000
	PainChance 255
	Height 80
	+SOLID
	+SHOOTABLE
	+NOICEDEATH
	+OLDRADIUSDMG
	MONSTER
	PainSound "brain/pain"
	DeathSound "brain/death"
	damagefactor "Blood", 0.0 damagefactor "BlueBlood", 0.0 damagefactor "GreenBlood", 0.0    damagefactor "Avoid", 0.0
	damagefactor "Shrapnel", 0.0	damagefactor "KillMe", 0.0  damagefactor "TeleportRemover", 0.0
	DamageFactor "CauseSplash", 0.0 DamageFactor "CauseObjectsToSplashSlime", 0.0 DamageFactor "CauseObjectsToSplashNukage", 0.0
	DamageFactor "CauseObjectsToSplashBlood", 0.0 DamageFactor "CauseObjectsToSplashLava", 0.0
	States
	{
 
	
		Spawn:
			TNT1 A 0
	
			//***Che I assume the DECORATE parser was awfully ancient, 
			//   unable to do logic operations at the time the original code was created
			TNT1 A 0 A_JumpIf(x == 2880 && y == 1648, "ReplaceDoom2")
			TNT1 A 0 A_JumpIf(x == -64, "ReplaceDoom2Reloaded")//D2Reloaded
			TNT1 A 0 A_JumpIf(x == 3072 && y == -1472 && z == 224, "IsTNTMap30")
			TNT1 A 0 A_JumpIf(x == -3648 && y == 6080 && z == 14, "IsPlutoniaMap30")
			TNT1 A 0 A_JumpIf(x == -128 && (y == 6026 || y == 6048) && z == 14, "IsAVMap30")
			TNT1 A 0 A_JumpIf(x == 7940 && y == -1224 && z == 208, "IsEPICMap30")
			TNT1 A 0 A_JumpIf(x == -2496 && y == 2536 && z == -128, "IsWOSMap30")
			TNT1 A 0 A_JumpIf(x == 448 && y == 280 && z == 128, "IsPL2Map30")
			TNT1 A 0 A_JumpIf(x == 4608 && y == 416 && z == 64, "IsPLCRMap30")

			//***Che: fixed sript 177 ruining TIDs and thus scripted maps
			//MARN A 0 ACS_ExecuteAlways(177, 0, 0, 0, 0)//Check if you are playing on an Wolfenstein level
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_WolfensteinCheck", 0, 0, 0, 0)
			//TNT1 A 0 Thing_ChangeTID(0,748)
			//BBRN A 1
			BBRN A 5 // the fixed script does not break TID but runs longer, with delays

		Spawn2:	
			BBRN A 3
			TNT1 A 0 A_JumpIfInventory("AltEasyMarineVerification", 1, "IsPlayingAlt")
			BBRN A 100
			Loop
			
		IsTNTMAP30:
			TNT1 A 0
			TNT1 A 0 A_SetAngle(90)
			TNT1 A 0 ACS_ExecuteALways(290)
			TNT1 A 0 A_SpawnItemEx ("GateKeeper",608,0,-9999,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			GOTO sPAWN2
			
		IsPlutoniaMap30:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GateKeeper",320,0,-9999,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			GOTO sPAWN2	
			
		IsAVMap30:
			TNT1 A 0
			TNT1 A 0 A_SetANgle(0)
			Goto ReplaceDoom2
			
			
		IsEPICMap30:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GateKeeper",224,64,-9999,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			GOTO sPAWN2	
			
			
		IsPL2Map30:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GateKeeper",328,0,-9999,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			GOTO sPAWN2	
			
			
			
		IsPLCRMap30:
			TNT1 A 0
			//***Che: this is a simple explosion, does 9999 damage of type "Deletus" in a radius of 9999
			// Archviles, cyberdemons and revenants have a specific death for it, which excludes them from the monster count
			// other than that, it would just kill everything.
			// w.t.f. ? 	}:?
			TNT1 A 0 A_SpawnItemEx ("DeletusVeryLarge",304,0,100,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0) 
			TNT1 A 0 A_NoBlocking
			TNT1 A 0
			Stop
			
		ReplaceDoom2:
			TNT1 A 0
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 ACs_ExecuteALways(230)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeatBase",0,600,-50,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat1",0,580,-70,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat2",15,540,-100,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat3",-15,500,-120,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat1",-25,460,-100,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat2",-15,420,-80,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat3",0,400,-60,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat2",20,360,-20,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat1",5,320,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("GateKeeperMeat3",0,280,10,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 0 A_SpawnItemEx ("IconOfSin",0,600,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			BBRN A 1
			BBRN A -1
			Loop
		
  		
  
		ReplaceDoom2Reloaded:
			TNT1 A 0
			TNT1 A 0 A_SetAngle(0)
			Goto ReplaceDoom2
		

			
		IsWOSMap30:
			TNT1 A 0
			TNT1 A 0 ThrustThingZ(0, 99999, 0, 1)
			TNT1 A 5
			TNT1 A 0 A_SetANgle(0)
			Goto ReplaceDoom2	
		
		BrainExplode:
			MISL BBBBBBBC 1 Bright
			MISL D 1 A_BrainExplode
			Stop	
	
		Pain:
			BBRN B 36 A_BrainPain
			Goto Spawn2
		Death:
			TNT1 AAAAAAAAAAAAAA 0 A_CustomMissile ("BloodMistExtraBig", 50, 0, random (0, 360), 2, random (20, 90))
			TNT1 AAAAAAAAAAAA 0 A_CustomMissile ("SuperGoreMist", 54, 0, random (0, 360), 2, random (30, 90))
			TNT1 AAAAAAAA 0 A_CustomMissile ("SuperGoreSpawner2", 64, 0, random (0, 360), 2, random (20, 40))
			TNT1 AA 0 A_CustomMissile ("XDeath1", 52, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_CustomMissile ("XDeath2", 52, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_CustomMissile ("XDeath3", 52, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_CustomMissile ("XDeath4", 52, 0, random (0, 360), 2, random (10, 90))
			TNT1 AA 0 A_CustomMissile ("XDeathSkinPiece2", 65, 0, random (0, 360), 2, random (10, 90))
			TNT1 AA 0 A_CustomMissile ("XDeathSkinPiece1", 65, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_CustomMissile ("XDeathOrgan1", 24, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_CustomMissile ("XDeathOrgan2", 24, 0, random (0, 360), 2, random (10, 90))
			TNT1 A 0 A_SpawnItem ("BigBloodSpot")
			TNT1 A 100 A_BrainScream
			TNT1 AA 10
			TNT1 A -1 A_BrainDie
			Stop
	
		Death.Crush:
			BBRN A 1 A_BrainScream
			BBRN AA 1
			BBRN A -1 A_BrainDie
			Stop
		
		
		IsPlayingAlt:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			TNT1 A 0 A_SpawnItemEx("AltMap01Airplane", 0, 0, 28, 0, 0, 0, 0, SXF_TRANSFERPOINTERS | SXF_TRANSFERAMBUSHFLAG)
			Stop
	}
}





ACTOR AltMap01Airplane
{
	Health 250
	Mass 10000000
	PainChance 255
	+SOLID
	+SHOOTABLE
	+NOICEDEATH
	+OLDRADIUSDMG
	PainSound "brain/pain"
	DeathSound "brain/death"
	damagefactor "Blood", 0.0 damagefactor "BlueBlood", 0.0 damagefactor "GreenBlood", 0.0    damagefactor "Avoid", 0.0
	damagefactor "Shrapnel", 0.0	damagefactor "KillMe", 0.0  damagefactor "TeleportRemover", 0.0
	States
	{
		BrainExplode:
			MISL BC 10 Bright
			MISL D 10 A_BrainExplode
			Stop
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_SetAngle(90)
			TNT1 A 0 A_SpawnItemEx("AltMap01CloudSpawner", 1100, 0, 0)
		Spawn2:	
			TNT1 A 0 A_PlaySoundEx("AMBAIRP", 1, 1)
			TNT1 A 10
			Loop
		Pain:
			BBRN B 36 A_BrainPain
			Goto Spawn
		Death:
			BBRN A 100 A_BrainScream
			BBRN AA 10
			BBRN A -1 A_BrainDie
			Stop

		IsPlayingAlt:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			TNT1 A 0 A_SpawnItemEx("AltMap01Airplane", 0, 0, 28, 0, 0, 0, 0, SXF_TRANSFERPOINTERS | SXF_TRANSFERAMBUSHFLAG)
			Stop
	}
}