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

// Health bonus -------------------------------------------------------------

ACTOR HealthPlus : Health Replaces HealthBonus
{
	Game Doom
	SpawnID 152
	+COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	+INVENTORY.NEVERRESPAWN
	Inventory.Amount 2
	Inventory.MaxAmount 300
	Tag "Health Bonus"
	Inventory.PickupMessage "$GOTHTHBONUS"
	States
	{
	Spawn:
		BON1 A 0
		BON1 A 0 ACS_NamedExecuteAlways("BDCheckDecorations", 0, 0, 0, 0)//Check if advanced decorations are disabled.
	Spawn2:	
        TNT1 A 0 A_CheckSight ("Spawn3")
		BON1 ABCDCB 2 A_SpawnItem("BlueFlareSmallItem",0,7)
		Loop
	Spawn3:
		BON1 A 9
		Goto Spawn2
	Vanilla:
		BON1 ABCDCB 2
		Loop
	}
}


Actor HealthPlusNoCount : HealthPlus
{
	-COUNTITEM
}

Actor HealthPlusFatalityBonus : CustomInventory //: HealthPlus
{
	//Inventory.Amount 1
	//Inventory.MaxAmount 300
	Inventory.MaxAmount 0 // without this, giving it by scripts has no effect
	+THRUACTORS
	+THRUGHOST
	+GHOST
	-COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.AUTOACTIVATE	
	Inventory.PickupMessage "$FBD_CRUELTY_2HP"
	Inventory.PickupSound "player/crunus"		
	States
	{
		Spawn:
			BON1 A 0 //NODELAY ACS_NamedExecuteAlways("FBD_CheckCruelty",0,0,0,0)
			BON1 ABCDCB 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			Goto Spawn2
		Spawn2:	
			TNT1 A 0 A_CheckSight ("Spawn3")
			BON1 ABCDCB 2 A_SpawnItem("BlueFlareSmallItem",0,7)
			Loop
		Spawn3:
			BON1 A 9
			Goto Spawn2			
		Pickup:
			TNT1 A 0 //A_CustomMissile ("", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_GiveInventory("Bonus5Health", 1)
			Stop
	
/*		TurnIntoACrueltyReward:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx("CrueltyBonus5health", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
			Stop
*/
	}
}



ACTOR Bonus5Health : Health	
{
	Inventory.Amount 5
	Inventory.MaxAmount 300
	+INVENTORY.ALWAYSPICKUP
}

ACTOR Bonus2Health : Health	
{
	Inventory.Amount 2
	Inventory.MaxAmount 300
	+INVENTORY.ALWAYSPICKUP
}


Actor HealthPlusFatalityBonus2 : HealthPlusFatalityBonus
{
//	Inventory.Amount 2
//	Inventory.MaxAmount 300
	Inventory.PickupMessage "$FBD_CRUELTY_2HP"
	Inventory.PickupSound "player/crunus1"		
	
	States {
		Pickup:
			TNT1 A 0 //A_CustomMissile ("", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_GiveInventory("Bonus2Health", 1)
			Stop
	}
}


// Blue armor ---------------------------------------------------------------

Actor HeavyArmor : BasicArmorPickup //Replaces BlueArmor
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "Picked up the Heavy Combat armor"
	Inventory.Icon "ARM2A0"
	Armor.Savepercent 50.1
	Armor.Saveamount 200
    Inventory.PickupSound "ARMOR"
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM2 A 10
			ARM2 AAAAA 2 bright A_SpawnItem("BlueFlareMedium3",0,10)
			loop
		Spawn2:
			ARM2 A 19
			Goto Spawn	
	
	}
}

Actor FBD_RedArmor : BasicArmorPickup
// Skulltag does already have RedArmor : BasicArmorPickup 5040
// Not touching that: what if GZDoom?
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "Picked up the Blood Knight armor"
	Inventory.Icon "ARM3A0"
	Armor.Savepercent 66.1
	Armor.Saveamount 150
    Inventory.PickupSound "ARMOR"
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM3 A 10
			ARM3 AAAAA 2 bright A_SpawnItem("RedFlareMedium3",0,10)
			loop
		Spawn2:
			ARM3 A 19
			Goto Spawn	
	
	}
}


Actor SuperArmor : BasicArmorPickup
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "$FBDA_SUPER_PKP" //"Carapace of Elements! 33% plasma & fire resist, 50% BFG & cold resist (including Icon of Sin's breath attacks)!"
	Inventory.Icon "ARM4A0"
	Armor.Savepercent 66.1
	Armor.Saveamount 250
    Inventory.PickupSound "ARMOR"
	DamageFactor "Fire", 0.66
	DamageFactor "Flames", 0.66
	DamageFactor "Burn", 0.66 // imp fireball
	DamageFactor "GreenFire", 0.66 // baron/knight fireball
	DamageFactor "Plasma", 0.66
	DamageFactor "Plasma2", 0.66
	DamageFactor "Slime", 0.66
	DamageFactor "IOS_Frost", 0.5 // Chebskies-EDAY's Icon of Sin
	DamageFactor "Frost", 0.5
	DamageFactor "Ice", 0.5
	DamageFactor "Desintegrate", 0.5
	DamageFactor "BFG10k", 0.5
	DamageFactor "Argent", 0.5
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM4 A 10
			ARM4 AAAAA 2 bright A_SpawnItem("RedFlareMedium3",0,10)
			loop
		Spawn2:
			ARM4 A 19
			Goto Spawn	
	
	}
}


//***Che
Actor LightArmorPickup : CustomInventory Replaces GreenArmor
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "$FBDA_GREEN_PKP" //"Picked up the Light armor"
    Inventory.PickupSound "ARMOR"
	-INVENTORY.ALWAYSPICKUP
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM1 A 10
			ARM1 AAAAA 2 bright A_SpawnItem("GreenFlareMedium3",0,10)
			loop
		Spawn2:
			ARM1 A 19
			Goto Spawn	
			
		Pickup:
			TNT1 A 0 A_JumpIf(!CallAcs("FBD_GrabArmor", 1, 100), "DoFail")
			TNT1 A 1 A_ChangeFlag("INVENTORY.ALWAYSPICKUP", 1)
			Stop	
//		SayTag:
//			TNT1 A 0 A_Print("$NOPICKUP_COUNTITEM") //"Tag! This item cannot be picked up but was accounted towards items progression."
//			TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
//			TNT1 A 0 A_RailWait
//			Fail
		DoFail:
//			TNT1 A 0 A_CheckFlag("COUNTITEM", "SayTag")
//			TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			TNT1 A 0 A_RailWait
			Fail
	}
}


//***Che
Actor HeavyArmorPickup : CustomInventory Replaces BlueArmor
{
	Game Doom
    //Scale 0.8
	//SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "$FBDA_BLUE_PKP" //"Picked up the Heavy Combat armor"
    Inventory.PickupSound "ARMOR"
	-INVENTORY.ALWAYSPICKUP
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM2 A 10
			ARM2 AAAAA 2 bright A_SpawnItem("BlueFlareMedium3",0,10)
			loop
		Spawn2:
			ARM2 A 19
			Goto Spawn	
			
		Pickup:
			TNT1 A 0 A_JumpIf(!CallAcs("FBD_GrabArmor", 2, CallAcs("GetIsEDAY") ? 125 : 200), "DoFail")
			TNT1 A 1 A_ChangeFlag("INVENTORY.ALWAYSPICKUP", 1)
			Stop
//		SayTag:
//			TNT1 A 0 A_Print("$NOPICKUP_COUNTITEM") //"Tag! This item cannot be picked up but was accounted towards items progression."
//			TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
//			TNT1 A 0 A_RailWait
//			Fail
		DoFail:
//			TNT1 A 0 A_CheckFlag("COUNTITEM", "SayTag")
//			TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			TNT1 A 0 A_RailWait
			Fail			
	}
}

//***Che
Actor RedArmorPickup : CustomInventory 17723
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "$FBDA_RED_PKP"
    Inventory.PickupSound "ARMOR"
	-INVENTORY.ALWAYSPICKUP
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM3 A 10
			ARM3 AAAAA 2 bright A_SpawnItem("RedFlareMedium3",0,10)
			loop
		Spawn2:
			ARM3 A 19
			Goto Spawn	
			
		Pickup:
			TNT1 A 0 A_JumpIf(!CallAcs("FBD_GrabArmor", 3, 225), "DoFail")
			TNT1 A 1 A_ChangeFlag("INVENTORY.ALWAYSPICKUP", 1)
			Stop
		//SayTag:
			//TNT1 A 0 A_Print("$NOPICKUP_COUNTITEM") //"Tag! This item cannot be picked up but was accounted towards items progression."
			//TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			//TNT1 A 0 A_RailWait
			//Fail
		DoFail:
			//TNT1 A 0 A_CheckFlag("COUNTITEM", "SayTag")
			//TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			TNT1 A 0 A_RailWait
			Fail			
	}
}

//***Che
Actor SuperArmorPickup : CustomInventory 17724
{
	Game Doom
    //Scale 0.8
	SpawnID 69
	Scale 1.3
	Radius 20
	Height 16
	Inventory.Pickupmessage "$FBDA_SUPER_PKP" //"Carapace of Elements! 33% plasma & fire resist, 50% BFG & cold resist (including Icon of Sin's breath attacks)!"
    Inventory.PickupSound "ARMOR"
	+INVENTORY.ALWAYSPICKUP
	States
	{
		Spawn:
			TNT1 A 0 A_CheckSight("Spawn2")
			ARM4 A 10
			ARM4 AAAAA 2 bright A_SpawnItem("RedFlareMedium3",0,25)
			loop
		Spawn2:
			ARM4 A 19
			Goto Spawn	
		Pickup:
			TNT1 A 0 A_JumpIf(!CallAcs("FBD_GrabArmor", 4, 250), "DoFail")
			TNT1 A 1 A_ChangeFlag("INVENTORY.ALWAYSPICKUP", 1)
			Stop
		//SayTag:
			//TNT1 A 0 A_Print("$NOPICKUP_COUNTITEM") //"Tag! This item cannot be picked up but was accounted towards items progression."
			//TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			//TNT1 A 0 A_RailWait
			//Fail
		DoFail:
			//TNT1 A 0 A_CheckFlag("COUNTITEM", "SayTag")
			//TNT1 A 0 A_ChangeFlag("COUNTITEM", 0)
			TNT1 A 0 A_RailWait
			Fail			
	}
}

#include Health2_GreenArmor.txt


ACTOR CrueltyBonus5armor : BasicArmorBonus
{
	Game Doom
	SpawnID 152
	-COUNTITEM
	Radius 16 //220
	+INVENTORY.ALWAYSPICKUP
	
	Inventory.Icon "BON2A0"
	Armor.Savepercent 25.1
	Armor.Saveamount 5
	Armor.Maxsaveamount 300
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +5 Armor ***"
	Inventory.PickupSound "player/crunus"
	States
	{
	Spawn:
        TNT1 A 50
		Stop
	}
}


// Armor bonus --------------------------------------------------------------

Actor ArmorShard : BasicArmorBonus Replaces ArmorBonus
{
	Game Doom
	SpawnID 22
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTARMBONUS"
	Inventory.Icon "BON2A0"
	Armor.Savepercent 25.1
	Armor.Saveamount 2
	Armor.Maxsaveamount 300
	+COUNTITEM
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.ALWAYSPICKUP
	States
	{
	Spawn:
		BON2 AAABCDB 2
		Loop
	}
}


Actor ArmorShardNoCount: ArmorShard
{
	-COUNTITEM
}



Actor ArmorShardFatalityBonus : CustomInventory //: ArmorShard
{
	Inventory.MaxAmount 0 // without this, giving it by scripts has no effect
	+THRUACTORS
	+THRUGHOST
	+GHOST
	-COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "$FBD_CRUELTY_5AP"
	Inventory.PickupSound "player/crunus"	
	States
	{
		Spawn:
			BON2 A 2 //NODELAY ACS_NamedExecuteAlways("FBD_CheckCruelty",0,0,0,0)
			BON2 AABCDBAAABCDBAAABCDB 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			Goto Spawn2
		Spawn2:
			BON2 AAABCDB 2
			Loop
		Pickup:
			TNT1 A 0 //A_CustomMissile ("", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_GiveInventory("Bonus5Armor", 1)
			Stop		
		
	}
}


Actor ArmorShardFatalityBonus2 : ArmorShardFatalityBonus
{
	Inventory.PickupMessage "$FBD_CRUELTY_2AP"
	Inventory.PickupSound "player/crunus1"		
	States {
		Pickup:
			TNT1 A 0 //A_CustomMissile ("", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_GiveInventory("Bonus2Armor", 1)
			Stop	
	}
}

Actor Bonus5Armor: BasicArmorBonus {
	Armor.SavePercent 25
	Armor.Saveamount 5
	Armor.Maxsaveamount 300
	Inventory.Icon "BON2A0"
}

Actor Bonus2Armor: BasicArmorBonus {
	Armor.SavePercent 25
	Armor.Saveamount 2
	Armor.Maxsaveamount 300
	Inventory.Icon "BON2A0"
}

Actor ArmorShardDroped : BasicArmorBonus
{
	Game Doom
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTARMBONUS"
	Inventory.Icon "BON2A0"
	Armor.Savepercent 50.1
	Armor.Saveamount 5
	Armor.Maxsaveamount 300
	+COUNTITEM
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.ALWAYSPICKUP
	States
	{
	Spawn:
        //TNT1 A 0 A_CheckSight ("Spawn2")
		BON2 AAABCDB 2 //A_SpawnItem("GreenFlareSmall",0,7)
		Loop
	Spawn2:
		BON2 A 9
		Goto Spawn
	}
}





//***TODO: add ACS_NamedExecuteWithResult("CancelToxicDOT") somehow
ACTOR Stimpack2 : Health Replaces Stimpack
{
	Game Doom
	SpawnID 23
	Inventory.Amount 10
	Inventory.PickupMessage "$GOTSTIM"
	Inventory.PickupSound "GOTHPS"
	States
	{
	Spawn:
		MEDK B 2
		MEDK B -1
		Stop
	}
}

// Medikit -----------------------------------------------------------------

ACTOR Medikit2 : Health Replaces Medikit
{
	Game Doom
	SpawnID 24
	Inventory.Amount 25
	Inventory.PickupMessage "$GOTMEDIKIT"
	Health.LowMessage 25, "$GOTMEDINEED"
	Inventory.PickupSound "GOTHPB"
	States
	{
	Spawn:
        MEDK A 1
		MEDK A -1
		Stop	
	}
}

























ACTOR GiveHealth : Health
{
	Game Doom
	SpawnID 152
	+COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	Inventory.Amount 1
	Inventory.MaxAmount 9999
	Inventory.PickupMessage "$GOTHTHBONUS"
	States
	{
	Spawn:
		BON1 AAABBBCCCDDDCCCBBB 2
		Loop
	}
}

// Armor bonus --------------------------------------------------------------




















ACTOR CrueltyBonus5health : Health
{
	Game Doom
	SpawnID 152
	-COUNTITEM
	Radius 16 //220
	+INVENTORY.ALWAYSPICKUP
	Inventory.Amount 5
	Inventory.MaxAmount 9999
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +5 health ***"
	Inventory.PickupSound "player/crunus"
	States
	{
	Spawn:
        KYDB G 50
		Stop
	}
}


ACTOR CrueltyBonus2health : CrueltyBonus5health
{
	Inventory.Amount 2
	Inventory.PickupSound "player/crunus1"
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +2 health ***"
}




ACTOR CrueltyBonus15armor : CrueltyBonus5armor
{
	Armor.Saveamount 15
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +15 Armor ***"
}

ACTOR CrueltyBonus10armor : CrueltyBonus5armor
{
	Armor.Saveamount 10
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +10 Armor ***"
}


ACTOR CrueltyBonus1health : CrueltyBonus5health
{
	Inventory.Amount 1
	Inventory.PickupSound "player/crunus1"
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +1 Health ***"
}

//***Che
ACTOR CrueltyBonus2armor : CrueltyBonus5armor
{
	Armor.Saveamount 2
	Inventory.PickupSound "player/crunus1"
	Inventory.PickupMessage "*** Cruelty Bonus awarded! +2 Armor ***"
}

ACTOR FBD_Regen : PowerupGiver
{
	inventory.pickupmessage None
	inventory.icon "MEGAX0"
	//powerup.color gold 0.25
	inventory.maxamount 0
	inventory.usesound None
	powerup.type "FBD_Regeneration"
	powerup.duration -30
	+AUTOACTIVATE
	+INVENTORY.FANCYPICKUPSOUND
	states
	{
		Spawn:
		TNT1 AAAA 4 bright
		loop
	}
}

ACTOR PowerFBD_Regeneration: PowerRegeneration 
{
	Powerup.Duration -30
	Powerup.Strength 5 // this affects only if < 100 hp (thus doubling) But we add up to 250 using ACS that monitor player's inventory
}