//This script is an imitation of MrSatan's script for the LegendaryDemonRune

#library "DemonMorph"
#include "zcommon.acs"

World Int 1: arrayHealth[];
World Int 2: arrayArmor[];
World Str 3: arrayArmorClass[];

Script "BaronMorph" (VOID)
{
	arrayHealth[PlayerNumber()] = GetActorProperty(0, APROP_HEALTH);
	arrayArmor[PlayerNumber()] = CheckInventory("BasicArmor");
	arrayArmorClass[PlayerNumber()] = GetArmorInfo(ARMORINFO_CLASSNAME);
	//Log(s:"Health= ", i: arrayHealth[PlayerNumber()]);
	//Log(s:"Armor#= ", i: arrayArmor[PlayerNumber()]);
	//Log(s:"ArmorClass= ", s: arrayArmorClass[PlayerNumber()]);
	
	GiveInventory("DRBPatch", 1);
	GiveInventory("MorphToken", 1);
	
	While (CheckActorClass(PlayerNumber(), "BaronPlayerPatch"))
	{
			Delay(5);
	}
	
	SetActorProperty(PlayerNumber(), APROP_HEALTH, arrayHealth[PlayerNumber()]);
	//Log(s:"Returned Health= ", i:GetActorProperty(PlayerNumber(), APROP_HEALTH));
	
	if (arrayArmorClass[PlayerNumber()] != "None")
	{
		GiveInventory(arrayArmorClass[PlayerNumber()], 1);
		//Log(s:"Returned ArmorClass= ", s:GetArmorInfo(ARMORINFO_CLASSNAME));
		//Log(s:"Returned InitialArmor#= ", i:CheckInventory("BasicArmor"));
		
		if (CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
		{
			While(CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
			{
				TakeInventory("BasicArmor",1);
			}
		}
		else if (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
		{
			While (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
			{
				GiveInventory("GiveArmor",1);
			}
		}
	}
	TakeInventory("MorphToken", 1);
	TakeInventory("CeaseMorph", 1);
	Delay(2);
}

Script "RevenantMorph" (VOID)
{
	arrayHealth[PlayerNumber()] = GetActorProperty(0, APROP_HEALTH);
	arrayArmor[PlayerNumber()] = CheckInventory("BasicArmor");
	arrayArmorClass[PlayerNumber()] = GetArmorInfo(ARMORINFO_CLASSNAME);
	//Log(s:"Health= ", i: arrayHealth[PlayerNumber()]);
	//Log(s:"Armor#= ", i: arrayArmor[PlayerNumber()]);
	//Log(s:"ArmorClass= ", s: arrayArmorClass[PlayerNumber()]);
	
	GiveInventory("DRRPatch", 1);
	GiveInventory("MorphToken", 1);
	
	While (CheckActorClass(PlayerNumber(), "RevenantPlayerPatch"))
	{
			Delay(5);
	}
	
	SetActorProperty(PlayerNumber(), APROP_HEALTH, arrayHealth[PlayerNumber()]);
	//Log(s:"Returned Health= ", i:GetActorProperty(PlayerNumber(), APROP_HEALTH));
	
	if (arrayArmorClass[PlayerNumber()] != "None")
	{
		GiveInventory(arrayArmorClass[PlayerNumber()], 1);
		//Log(s:"Returned ArmorClass= ", s:GetArmorInfo(ARMORINFO_CLASSNAME));
		//Log(s:"Returned InitialArmor#= ", i:CheckInventory("BasicArmor"));
		
		if (CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
		{
			While(CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
			{
				TakeInventory("BasicArmor",1);
			}
		}
		else if (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
		{
			While (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
			{
				GiveInventory("GiveArmor",1);
			}
		}
	}
	TakeInventory("MorphToken", 1);
	TakeInventory("CeaseMorph", 1);
	Delay(2);
}

Script "MorphedLevelChange" Enter
{
	If (CheckInventory("Morphtoken") >= 1)
	{
		SetActorProperty(PlayerNumber(), APROP_HEALTH, arrayHealth[PlayerNumber()]);
		//Log(s:"Returned Health= ", i:GetActorProperty(PlayerNumber(), APROP_HEALTH));
		
		if (arrayArmorClass[PlayerNumber()] != "None")
		{
			GiveInventory(arrayArmorClass[PlayerNumber()], 1);
			//Log(s:"Returned ArmorClass= ", s:GetArmorInfo(ARMORINFO_CLASSNAME));
			//Log(s:"Returned InitialArmor#= ", i:CheckInventory("BasicArmor"));
			
			if (CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
			{
				While(CheckInventory("BasicArmor") > arrayArmor[PlayerNumber()])
				{
					TakeInventory("BasicArmor",1);
				}
			}
			else if (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
			{
				While (CheckInventory("BasicArmor") < arrayArmor[PlayerNumber()])
				{
					GiveInventory("GiveArmor",1);
				}
			}
		}
		TakeInventory("MorphToken", 1);
		TakeInventory("CeaseMorph", 1);
		Delay(2);
	}
}