

//  -------------------------------------------------------------- ARMOR SHARDS

ACTOR RARESHARDSPAWNER : RANDOMSPAWNER
{
dropitem unfairshard
dropitem unfairshard
dropitem brokenshard
}

ACTOR UNFAIRSHARDSPAWNER : RANDOMSPAWNER
{
dropitem unfairshard
dropitem brokenshard
}

Actor ArmorShard : custominventory 
{
	Game Doom
	SpawnID 22
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTSHARD"
	Inventory.Icon "BON2Z0"
    Inventory.PickupSound "SHARDPK"
	+COUNTITEM
	+CANNOTPUSH
	+MOVEWITHSECTOR
	 tag"Modular Armor Shard"
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.ALWAYSPICKUP
	SCALE 0.15
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 
		
	Stay:
	BON2 AAABBB 2
	Loop
	
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",2)
	stop
	
	}
}

Actor UNFAIRShard: ArmorShard
{
	States
	{
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",1)
	stop
	}
}

Actor damagedshard : Inventory {inventory.maxamount 4}
Actor BROKENShard: CustomInventory
{

Inventory.Icon "BON2Z0"
 SCALE 0.15
+COUNTITEM
+MOVEWITHSECTOR
Inventory.PickupSound "SHARDPK"
Inventory.PickupMessage ""
+INVENTORY.NEVERRESPAWN
+INVENTORY.ALWAYSPICKUP
tag"Broken Armor Shard"
	States
	{
	Spawn:
	TNT1 A 0
	BON2 E -1
	stop
	
	Pickup:
	TNT1 A 0 A_playsound("SHARDPK",1)
	TNT1 A 0 A_giveinventory("damagedshard",1)
	TNT1 A 0 A_jumpifinventory("damagedshard",3,"merge")
	TNT1 A 0 A_jumpifinventory("damagedshard",2,2)
	TNT1 A 0 A_log("$SHARD1")
	Stop
	TNT1 A 0 A_log("$SHARD2")
	Stop
	
	Merge:
	TNT1 A 0 A_takeinventory("damagedshard",3)
	TNT1 A 0 A_giveinventory("armorshardinventory",1)
	TNT1 A 0 A_log("$SHARD3")
	stop
}}

Actor ArmorShardNoCount: ArmorShard
{
-COUNTITEM
}



Actor ArmorShardFatalityBonus : ArmorShard
{
	+THRUACTORS
    +canpass
	-COUNTITEM
	States
	{
	Spawn:
		BON2 A 1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0
		TNT1 A 0 
		Stay:
		BON2 AAABBB 2
		Goto Spawn2
		
	Spawn2:
		BON2 AAABBB 2
		GOTO SPAWN
		
   Pickup:
	TNT1 A 0 a_giveinventory("ArmorshardInventory",5)
	stop
	}
}


Actor ArmorShardDroped : CustomInventory
{
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.ALWAYSPICKUP
	States
	{
	Spawn:
		BON2 AAABBB 2 
		Loop
	Spawn2:
		BON2 AAABBB 2
		Goto Spawn
		
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",5)
	stop
	}
}

ACTOR Didrepair : Inventory {}
Actor ArmorShardInventory : Custominventory
{
	+INVBAR
	 +CANNOTPUSH
	 +UNDROPPABLE
	+nogravity
	scale 0.23
	Inventory.Amount 1
	Inventory.InterHubAmount 400
	Inventory.MaxAmount 400
	Inventory.Pickupmessage "$GOTSHARDS"
	Inventory.PickupSound "SHARDPK"
	Tag "Modular Armor Shards Box"
	Inventory.Icon "BON2Y0"
	States
	{
		Spawn:
		BON3 A 20
		Stay:
		BON3 BBB 2 BRIGHT
		BON3 CCC 2
		Loop
		
		Failrepair:
		TNT1 A 0 
		TNT1 A 0 A_JumpIfInventory("ArmorShardInventory", 1, "FailBecause")
		Fail
		Failbecause:
		TNT1 A 0 a_jumpifinventory("basicarmor",1, 2)
		TNT1 A 0 a_print("You can only assemble shards on top of a UAC standard issue armor or uniform piece.")
		fail
		TNT1 A 0 a_print("you've reached your current maximum armor potential")
		fail
		
		
		Use:
		TNT1 A 0 a_jumpifinventory("choosingreward",1, "Failrepair")
		TNT1 A 0 a_jumpifinventory("readingammo",1, "Failrepair")
		GiveCheck:
		TNT1 A 0 A_JumpIfInventory("ArmorShardInventory", 1, "GiveCheck2")
		TNT1 A 0 A_JumpIfInventory("Didrepair", 1, "PlaySound")
		goto Failrepair
		GiveCheck2:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, "Give")
		TNT1 A 0 A_JumpIfInventory("Didrepair", 1, "PlaySound")
		goto Failrepair
		PlaySound:
		TNT1 A 0 A_TakeInventory("Didrepair", 1)
		//TNT1 A 0 A_playsound("SHARDPK",3,10.0)
		goto Failrepair	
		Give:
		TNT1 A 0 A_GiveInventory("Didrepair", 1)
		GiveArmor:
		TNT1 A 0 A_TakeInventory("ArmorShardInventory", 1)
		TNT1 A 0 A_GiveInventory("ShardBonus", 1)
		TNT1 A 0 A_GiveInventory("REPAIRTOKEN", 1)
		TNT1 A 0 A_GiveInventory("armorshardtoken", 1)
		Goto GiveCheck
	}
}

Actor ShardBONUS : BasicArmorBonus //Replaces ArmorBonus
{
	Game Doom
	SpawnID 22
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTSHARD"
	Inventory.Icon "BON2Z0"
    Inventory.PickupSound "SHARDPK"
	Armor.Savepercent 25.1
	Armor.Saveamount 1
	Armor.Maxsaveamount 400
	+COUNTITEM
	 tag"Modular Armor Shard"
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.ALWAYSPICKUP
	SCALE 0.45
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 
		
		Stay:
		BON2 AAABBB 2
		Loop
	}
}
//////////////////////// BOXES
Actor ArmorshardBoxL : Armorshard
{
	Radius 25
	Height 20
	Inventory.Pickupmessage "$GOTSHARDS"
	 tag"Modular Armor Shards Box"
	SCALE 0.23
	States
	{
	Spawn:
	BON3 A 20
	Stay:
	BON3 BBB 2 BRIGHT
	BON3 CCC 2
	Loop
	
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",80)
	stop
	}
}

Actor ArmorshardBoxM : ArmorshardBoxL
{
SCALE 0.28
	States
	{
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",120)
	stop
	}
}

Actor ArmorshardBoxH : ArmorshardBoxL
{
SCALE 0.33
	States
	{
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",160)
	stop
	}
}

Actor ArmorshardBoxS : ArmorshardBoxL
{
SCALE 0.2
	States
	{
	Pickup:
	TNT1 A 0 a_giveinventory("ArmorShardInventory",30)
	stop
	}
}

	Actor ShardSpawnerstandard : CustomInventory
{
    States
    {
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_Jump(1, "large","medium","light")
		TNT1 A 0 A_Jump(10, "Small")
		TNT1 A 0 A_Jump(20, "Shards")
		TNT1 A 1
		stop
		
	large:
		TNT1 A 0 A_SpawnItemEx ("ArmorshardboxH",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION  ,0)
		TNT1 AAAAAA 0 A_SpawnItemEx ("CUSTOMARMORSHARD",random(5,20),0,0,0,0,0,random(0,360),0,50)
		Stop
	medium:
		TNT1 A 0 A_SpawnItemEx ("ArmorshardboxM",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION  ,0)
		TNT1 AAA 0 A_SpawnItemEx ("CUSTOMARMORSHARD",random(5,20),0,0,0,0,0,random(0,360),0,10)
		Stop
	 light:
		TNT1 A 0 A_SpawnItemEx ("ArmorshardboxL",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION  ,0)
		TNT1 AAA 0 A_SpawnItemEx ("CUSTOMARMORSHARD",random(5,20),0,0,0,0,0,random(0,360),0,30)
		Stop
	 small:
		TNT1 A 0 A_SpawnItemEx ("ArmorshardboxS",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION  ,0)
		TNT1 AAA 0 A_SpawnItemEx ("CUSTOMARMORSHARD",random(5,20),0,0,0,0,0,random(0,360),0,80)
		Stop
	shards:
		TNT1 AAAAAA 0 A_SpawnItemEx ("CUSTOMARMORSHARD",random(5,20),0,0,0,0,0,random(0,360),0,80)
		Stop
    }
}


Actor Shardspawnerlow : ShardSpawnerStandard
{
    States
    {
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_Jump(1, "large","medium","light","light","small")
		TNT1 A 0 A_Jump(5, "Small")
		TNT1 A 0 A_Jump(10, "Shards")
		TNT1 A 1
		stop
    }
}
		
Actor Shardspawnerlowest : ShardSpawnerStandard
{
    States
    {
	Spawn:
		TNT1 A 1
		TNT1 A 0 A_Jump(1, "large","medium","light","light","small","small")
		TNT1 A 0 A_Jump(5, "Small","shards")
		TNT1 A 0 A_Jump(10, "Shards")
		TNT1 A 1
		stop
    }
}
///////////////////////// UNIFORM
ACTOR bonustogive : Inventory {inventory.maxamount 100}
ACTOR ArmorBoots : custominventory 30032
{
Scale 0.65
+MOVEWITHSECTOR
Inventory.Icon "BON2Z0"
Inventory.PickupMessage "$GOTBOOTS"
Inventory.PickupSound "ARMRPK"
tag"Military Boots"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 
			
	Stay:
		BOOT A 2 
		Loop
		
	Pickup:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, 4)
		TNT1 A 0 A_JumpIfInventory("basicarmor", 1, 2)
		TNT1 A 0 A_Jump(256,"newarmor")
		TNT1 A 0 A_print("you've reached your current maximum armor potential")
		fail
		TNT1 A 0 a_giveinventory("bonustogive",15)
	GiveCheck:
		TNT1 A 0 A_JumpIfInventory("bonustogive", 1, "GiveCheck2")
		goto finishpickup
		
	GiveCheck2:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, "Give")
		goto finishpickup
		
	Give:
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 1, "GiveHeavy")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 2, "GiveMedium")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 3, "GiveLight")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") >= 4, "GiveUniform")
		
	GiveHeavy:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("HeavyArmorRecover", 1)
		Goto GiveCheck	
	GiveMedium:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("MediumArmorRecover", 1)
		Goto GiveCheck
	GiveLight:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("LightArmorRecover", 1)
		Goto GiveCheck
	GiveUniform:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("UniformRecover", 1)
		Goto GiveCheck		
	
	Newarmor:
		TNT1 A 0 a_giveinventory("bonustogive",15)
	goto Giveuniform
		
	Finishpickup:
		TNT1 A 0 
		stop	
	}
}

ACTOR ArmorHelmet : custominventory 30033
{
+canpass
Scale 0.68
+MOVEWITHSECTOR
Inventory.Icon "BON2Z0"
Inventory.PickupMessage "$GOTHELMET"
Inventory.PickupSound "HELMPK"
tag"Space Marine Helmet"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 
		
		Stay:
		HELM AAA 3
        TNT1 A 0 A_CheckSight ("Spawn2")
		HELM BBBCCCDDDCCCBBB 2 Light("ARMORBONUS") A_SpawnItem("GreenLensFlareAltSmallZZ",0,7)
		Loop
	
	Pickup:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, 4)
		TNT1 A 0 A_JumpIfInventory("basicarmor", 1, 2)
		TNT1 A 0 A_Jump(256,"newarmor")
		TNT1 A 0 A_print("you've reached your current maximum armor potential")
		fail
		TNT1 A 0 a_giveinventory("bonustogive",20)
	GiveCheck:
		TNT1 A 0 A_JumpIfInventory("bonustogive", 1, "GiveCheck2")
		goto finishpickup
		
	GiveCheck2:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, "Give")
		goto finishpickup
		
	Give:
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 1, "GiveHeavy")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 2, "GiveMedium")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 3, "GiveLight")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") >= 4, "GiveUniform")
		
	GiveHeavy:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("HeavyArmorRecover", 1)
		Goto GiveCheck	
	GiveMedium:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("MediumArmorRecover", 1)
		Goto GiveCheck
	GiveLight:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("LightArmorRecover", 1)
		Goto GiveCheck
	GiveUniform:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("UniformRecover", 1)
		Goto GiveCheck
	
	Newarmor:
		TNT1 A 0 a_giveinventory("bonustogive",20)
	goto Giveuniform
	
	Finishpickup:
		TNT1 A 0 
		stop
		
	Spawn2:
		HELM A 2
		Goto Spawn

	}
}

ACTOR ArmorUniform : custominventory 30034
{
+canpass
Scale 0.5
+MOVEWITHSECTOR
Inventory.Icon "BON2Z0"
Inventory.PickupMessage "$GOTUNIFORM"
Inventory.PickupSound "ARMRPK"
tag"Military Uniform"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 
	Stay:
		UNIF A 0
		UNIF A 1 
		Loop
		
	Pickup:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, 4)
		TNT1 A 0 A_JumpIfInventory("basicarmor", 1, 2)
		TNT1 A 0 A_Jump(256,"newarmor")
		TNT1 A 0 A_print("you've reached your current maximum armor potential")
		fail
		TNT1 A 0 a_giveinventory("bonustogive",35)
	GiveCheck:
		TNT1 A 0 A_JumpIfInventory("bonustogive", 1, "GiveCheck2")
		goto finishpickup
		
	GiveCheck2:
		TNT1 A 0 A_JumpIf(CallACS("Checkmaxarmor") == TRUE, "Give")
		goto finishpickup
		
	Give:
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 1, "GiveHeavy")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 2, "GiveMedium")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") == 3, "GiveLight")
		TNT1 A 0 A_JumpIf(CallACS("Checkarmortype") >= 4, "GiveUniform")
		
	GiveHeavy:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("HeavyArmorRecover", 1)
		Goto GiveCheck	
	GiveMedium:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("MediumArmorRecover", 1)
		Goto GiveCheck
	GiveLight:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("LightArmorRecover", 1)
		Goto GiveCheck
	GiveUniform:
		TNT1 A 0 A_TakeInventory("bonustogive", 1)
		TNT1 A 0 A_GiveInventory("UniformRecover", 1)
		Goto GiveCheck		
	
	Newarmor:
		TNT1 A 0 a_giveinventory("bonustogive",35)
	goto Giveuniform
	
	Finishpickup:
		TNT1 A 0 
		stop
	}
}

/// DROPPED ARMOR
Actor HeavyArmorRecover : BasicArmorBonus
{
Inventory.Icon "ARM2B0"
Armor.Savepercent 80.01
Armor.Saveamount 1
Armor.Maxsaveamount 400
}

Actor MediumArmorRecover : BasicArmorBonus
{
Inventory.Icon "ARM3B0"
Armor.Savepercent 60.01
Armor.Saveamount 1
Armor.Maxsaveamount 250
}

Actor LightArmorRecover : BasicArmorBonus
{
Inventory.Icon "ARM1B0"
Armor.Savepercent 40.01
Armor.Saveamount 1
Armor.Maxsaveamount 150
}

Actor UniformRecover : BasicArmorBonus
{
Inventory.Icon "BON2Z0"
Armor.Savepercent 25.01
Armor.Saveamount 1
Armor.Maxsaveamount 100
}

//// Vehicle armor checker
Actor GiveArmor : BasicArmorBonus
{
	Game Doom
	SpawnID 22
	Radius 20
	Height 16
	Inventory.Pickupmessage "$GOTARMBONUS"
	Inventory.Icon "BON2A0"
	Armor.Savepercent 50.1
	Armor.Saveamount 2
	Armor.Maxsaveamount 9999
	+COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	SCALE 0.7
	States
	{
	Spawn:
		BON2 AAABBBCCCDDDCCCBBB 2
		loop
	}
}