package playerStateMachineEquipment
using playerStateMachineBaseEquipment, playerStateMachineStateBase

unequipped : baseEquipment
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	string[] transitionTo = 
	[
		"unequippedWaitingForExternalFactors", "selfRemoval"
	];
	string[] transitionCondition = 
	[
		"=", ""
	];
}

unequippedWaitingForExternalFactors : baseEquipment
{
	bool hasExitCondition = true;
	string[] transitionTo = 
	[
		"equipCycleInit", "selfRemoval"
	];
	string[] transitionCondition = 
	[
		"", ""
	];
}

selfRemoval : baseEquipment
{
	bool hasOnEnter = true;
	string[] transitionTo = [];
	string[] transitionCondition = [];
}

equipCycleInit : baseEquipment
{
	bool hasEnterCondition = true;
	bool hasOnEnter = true;
	bool hasOnExit = true;
	string[] enterConstraintsStates = 
	[
		"Vision.active"
	];
	bool[] enterConstraintsLogic = 
	[
		false
	];
	string[] transitionTo = 
	[
		"equipCycle", "unequipped"
	];
	string[] transitionCondition = 
	[
		"=", "="
	];
}

equipCycle : baseEquipment
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	bool continueTransitioning_EXPERIMENTAL = true;
	bool forceFirstEquip = false;
	string[] transitionTo = 
	[
		"firstEquip", "equipped", "unequipCycle"
	];
	string[] transitionCondition = 
	[
		"=", "=", "="
	];
}

firstEquip : baseEquipment
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	string[] transitionTo = 
	[
		"equipped"
	];
	string[] transitionCondition = 
	[
		"="
	];
}

equipped : baseEquipment
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	string[] transitionTo = 
	[
		"unequipCycle"
	];
	string[] transitionCondition = 
	[
		"="
	];
}

unequipCycle : baseEquipment
{
	bool hasOnEnter = true;
	bool hasOnExit = true;
	bool continueTransitioning_EXPERIMENTAL = true;
	string[] transitionTo = 
	[
		"equipCycleInit", "unequipped"
	];
	string[] transitionCondition = 
	[
		"=", "="
	];
}

