// Callee methods
	public void ReceiveTreeHelpCall(SoulTree targetTree, CollectorStateMachine callerStateMachine) 
	{
		Debug.Log (this.NPC.name + " Callee: Got a help call!");
		this.hasReceivedHelpCall = true;
		this.targetTree = targetTree;
		this.callerStateMachine = callerStateMachine;
	}
	private GameObject GetUntriggeredButtonFromTree(SoulTree targetTree) 
	{
		List<GameObject> treeButtons = targetTree.TreeButtons;
		GameObject targetButton = null;

		foreach (GameObject buttonObj in treeButtons) {
			Button buttonScript = buttonObj.GetComponent<Button>();
			if (!buttonScript.IsTargettedForTriggering && !buttonScript.IsTriggered)
			{
				buttonScript.IsTargettedForTriggering = true;
				targetButton = buttonObj;
				return targetButton;
			}
		}

		return targetButton;
	}
	public CollectorAnswerHelpCallState(NPCStateMachine stateMachine, SoulTree targetTree, CollectorStateMachine callerStateMachine)
		: base(stateMachine)
	{
		this.targetTree = targetTree;
		this.callerStateMachine = callerStateMachine;
	}
	public void CancelTreeHelpCall() 
	{
		Debug.Log (this.NPC.name + " Callee: Cancel my help call!");
		this.hasReceivedHelpCall = false;
		this.hasReceivedPlayerHelpCall = false;
		this.targetTree = null;
		this.callerStateMachine = null;
	}
	// If I'm a player, the moment I step off my button, cancel the help calls of everyone that came to help me
	public bool CheckIfPlayerIsTriggeringTheTree(SoulTree targetTree) {
		if (callerStateMachine)
		{
			CollectorDriver playerDriver = this.callerStateMachine.NPC as CollectorDriver;
			foreach (GameObject buttonObj in targetTree.TreeButtons) {
				Button buttonScript = buttonObj.GetComponent<Button>();
				if (buttonScript.IsTriggered && buttonScript.CollectorCurrentlyOnTheButton == playerDriver)
					return true;
			}
		}
		return false;
	}
	public CollectorCallForHelpState(NPCStateMachine stateMachine, SoulTree targetTree)
		: base(stateMachine)
	{
		this.targetTree = targetTree;
	}