#include "cas_casinoinc"

void CasinoNotification(string sMessage);

void main()
{
    object oEnteringPC = GetEnteringObject();
    if (!GetIsPC(oEnteringPC)) return;

    string sVariableName = GetLocalString(OBJECT_SELF, "VariableName");
    if (sVariableName == "") return;

    int nVariableValue = GetLocalInt(OBJECT_SELF, "VariableValue");
    SetLocalInt(oEnteringPC, sVariableName, nVariableValue);

    if (GetLocalInt(OBJECT_SELF, "SPAWN_LISTENER") == 1)
    {
        object oExisting = GetLocalObject(OBJECT_SELF, "SPAWNED_LISTENER");
        if (!GetIsObjectValid(oExisting))
        {
            location lSpawn = GetLocation(oEnteringPC);
            object oListener = CreateObject(OBJECT_TYPE_CREATURE, "cas_glorylisten", lSpawn, FALSE);

            SetLocalObject(OBJECT_SELF, "SPAWNED_LISTENER", oListener);

            // Hook your modified core to run cas_repeatspeech on OnConversation
            SetLocalString(oListener, "EVENT_AI_CONVERSATION", "cas_repeatspeech");

            // CRITICAL: enable listening and catch-all speech
            SetListening(oListener, TRUE);
            SetListenPattern(oListener, "**", 100);

            // Route setup + optional notification
            if (sVariableName == "I_AM_IN_HOLE" && nVariableValue == 1)
            {
                SetLocalString(oListener, "sSEND_TO", "FROM_HOLE");
                CasinoNotification("<cU˙˙>The gloryhole is now occupied...</c>");
            }
            else if (sVariableName == "NOT_IN_HOLE" && nVariableValue == 1)
            {
                SetLocalString(oListener, "sSEND_TO", "INTO_HOLE");
            }

            // Debug: confirm spawn & setup
            SendMessageToPC(oEnteringPC, "[OnEnter] Spawned listener: " + GetTag(oListener));
            SendMessageToPC(oEnteringPC, "[OnEnter] Listening=TRUE, Pattern=\"**\" (100), sSEND_TO=\"" +
                                        GetLocalString(oListener, "sSEND_TO") + "\"");
        }
    }
}
