//Make list of nearby actions available to the character public List <Info_Action> Action() { Physics2D.queriesHitTriggers = true; Collider2D[] hits = Physics2D.OverlapAreaAll(transform.position + renderer.bounds.size, transform.position - renderer.bounds.size - new Vector3(-transform.localScale.x * 2, 0, 0)); var actionList = new List <Info_Action>(); foreach (Collider2D hit in hits) { MonoBehaviour script = hit.GetComponent <Behaviour_Door>(); if (script != null) { Behaviour_Door newScript = (Behaviour_Door)script; if (!newScript.IsBusy) { if (newScript.IsClosed()) { actionList.Add(new Info_Action("Open", script)); if (!newScript.CheckLock()) { actionList.Add(new Info_Action("Unlock", script)); } else { actionList.Add(new Info_Action("Lock", script)); } } else { actionList.Add(new Info_Action("Close", script)); } } continue; } script = hit.GetComponent <Behaviour_Switch>(); if (script != null) { Behaviour_Switch newScript = (Behaviour_Switch)script; if (newScript.Coded) { actionList.Add(new Info_Action("Hack", script)); } else { actionList.Add(new Info_Action("Use", script)); } } script = hit.GetComponent <Behaviour_Container>(); var isPlayer = hit.gameObject.tag == ("Player") ? true : false; if (script != null && !isPlayer) { Behaviour_Container container = (Behaviour_Container)script; actionList.Add(new Info_Action("Search", script)); } script = hit.GetComponent <Behaviour_Cover>(); if (script != null) { Behaviour_Cover cover = (Behaviour_Cover)script; if (cover.InUse) { actionList.Add(new Info_Action("Push back", script)); } else { actionList.Add(new Info_Action("Pull out", script)); } } } Physics2D.queriesHitTriggers = false; return(actionList); }