private void ExecuteInteraction(ActorInteractionType type, string target, ActionSpecial special, ActionInvokerData data)
        {
            switch (type)
            {
            case ActorInteractionType.None:
                break;     //do nothing

            case ActorInteractionType.Special:
                special.Execute(data);
                break;

            case ActorInteractionType.AmbientMonologue:
                string msg = DialogueModule.GetMonologue(target).GetLineRandom();     //VERY inefficient, will fix later
                //QdmsMessageBus.Instance.PushBroadcast(new HUDPushMessage(msg));//also a very temporary display
                QdmsMessageBus.Instance.PushBroadcast(new SubtitleMessage(msg, 5.0f, true, -1));
                //and we need to rework Monologue and implement an audio manager before we can do speech
                break;

            case ActorInteractionType.Dialogue:
                DialogueInitiator.InitiateDialogue(target, true, null);
                break;

            case ActorInteractionType.Script:
                ScriptingModule.Call(target, new ScriptExecutionContext()
                {
                    Caller = this, Activator = data.Activator.gameObject
                }, new object[] { });
                break;

            default:
                throw new NotImplementedException();
            }
        }