ACR_ChooserCreator.ACR_ChooserCreator.ScriptMain C# (CSharp) Method

ScriptMain() public method

public ScriptMain ( [ ScriptParameters, [ DefaultReturnCode ) : Int32
ScriptParameters [
DefaultReturnCode [
return Int32
        public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode)
        {
            bool debug = true;
            int commandNumber = (int)ScriptParameters[0];
            ACR_CreatorCommand command = (ACR_CreatorCommand)commandNumber;
            if (command == ACR_CreatorCommand.ACR_CHOOSERCREATOR_INITIALIZE_LISTS)
            {
                if (OBJECT_SELF == GetModule())
                {
                    ChooserLists.SortLists(this);
                    BackgroundLoader loader = new BackgroundLoader();
                    loader.DoWork += BackgroundLoader.LoadNavigators;
                    loader.RunWorkerAsync();
                    return 0;
                }
                else
                {
                    if (Users.GetUser(OBJECT_SELF).openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_INITIALIZE_LISTS)
                    {
                        Users.GetUser(OBJECT_SELF).openCommand = ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB;
                    }
                    if (debug)
                    {
                        SendMessageToPC(OBJECT_SELF, BackgroundLoader.loaderError);
                    }

                    command = Users.GetUser(OBJECT_SELF).openCommand;
                }
            }

            string commandParam = (string)ScriptParameters[1];
            User currentUser = Users.GetUser(OBJECT_SELF);
            switch (command)
            {
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB:
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB:
                    CreatorTabs.FocusTabs(this, currentUser, command);
                    break;
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_SPAWN_LOOT:
                    DisplayGuiScreen(OBJECT_SELF, "SCREEN_ACR_LOOTGEN", FALSE, "acr_lootgeneration.xml", FALSE);
                    break;
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CREATOR_INCOMING_CLICK:
                    // TODO: make note of the selected row and provide
                    // additional information, if appropriate.
                    break;
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CREATOR_INCOMING_DOUBLECLICK:
                    if (commandParam.Contains(":"))
                    {
                        // first, default this stuff in. On error, we flip out and just use
                        // the bottom category in the creature navigator.
                        NavigatorCategory currentCat = Navigators.CreatureNavigator.bottomCategory;
                        NavigatorCategory targetCat = Navigators.CreatureNavigator.bottomCategory;

                        // then, we need to know where we are right now.
                        if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB) currentCat = currentUser.CurrentCreatureCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB) currentCat = currentUser.CurrentItemCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB) currentCat = currentUser.CurrentPlaceableCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB) currentCat = currentUser.CurrentWaypointCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB) currentCat = currentUser.CurrentVisualEffectCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB) currentCat = currentUser.CurrentLightCategory;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB) currentCat = currentUser.CurrentTrapCategory;

                        // and we figure out where we're going relative to where we are.
                        string searchTerm = commandParam.Split(':')[1];
                        if (searchTerm == "..")
                        {
                            if (currentCat.ParentCategory != null)
                            {
                                targetCat = currentCat.ParentCategory;
                            }
                            else
                            {
                                if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB) targetCat = Navigators.CreatureNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB) targetCat = Navigators.ItemNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB) targetCat = Navigators.PlaceableNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB) targetCat = Navigators.WaypointNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB) targetCat = Navigators.VisualEffectNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB) targetCat = Navigators.LightNavigator.bottomCategory;
                                else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB) targetCat = Navigators.TrapNavigator.bottomCategory;
                            }
                        }
                        else
                        {
                            if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentCreatureCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentItemCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentPlaceableCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentWaypointCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentVisualEffectCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentLightCategory, searchTerm);
                            else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB) targetCat = BackgroundLoader.GetCategoryByName(currentUser.CurrentTrapCategory, searchTerm);
                        }

                        // and then we have a new current category.
                        if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB) currentUser.CurrentCreatureCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB) currentUser.CurrentItemCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB) currentUser.CurrentPlaceableCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB) currentUser.CurrentWaypointCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB) currentUser.CurrentVisualEffectCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB) currentUser.CurrentLightCategory = targetCat;
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB) currentUser.CurrentTrapCategory = targetCat;

                        // and finally we can draw the new navigator category.
                        Waiter.DrawNavigatorCategory(this, targetCat);
                    }
                    else
                    {
                        SendMessageToPC(OBJECT_SELF, "Preparing to spawn " + commandParam);

                        string spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_SINGLE;
                        string spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_SINGLE;

                        // The name of the script to execute on targeting.
                        SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME, "gui_creatorspawn");

                        // The first string parameter being used.
                        SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME_PARAM, commandParam);

                        if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_CREATURE.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "self,creature,ground,placeable");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_ITEM.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_PLACEABLE.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_WAYPOINT.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_PLACED_EFFECT.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, CLRScriptBase.OBJECT_TYPE_LIGHT.ToString());
                        }
                        else if (currentUser.openCommand == ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB)
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, "99");
                            ALFA.Shared.TrapResource trapToSpawn = ALFA.Shared.Modules.InfoStore.ModuleTraps[commandParam];
                            if (trapToSpawn != null)
                            {
                                switch(trapToSpawn.TriggerArea)
                                    {
                                        case 2:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_10FT;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_10FT;
                                            break;
                                        case 3:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_20FT;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_20FT;
                                            break;
                                        case 4:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_20FT;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_20FT;
                                            break;
                                        case 5:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_30FT;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_30FT;
                                            break;
                                        case 6:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_30FT;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_30FT;
                                            break;
                                        default:
                                            spawnUI = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_SINGLE;
                                            spawnUIScreenName = ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_SINGLE;
                                            break;
                                    }
                            }
                        }
                        
                        DisplayGuiScreen(OBJECT_SELF, spawnUIScreenName, 0, spawnUI, 0);
                    }
                    // TODO: make note of the selected row and provide a suitable
                    // interface to direct the action.
                    break;
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_INCOMING_CLICK:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            int objType = GetObjectType(targetObject);
                            if (objType == OBJECT_TYPE_CREATURE)
                            {
                                if (GetIsPC(targetObject) == FALSE)
                                {
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "npc_creature", FALSE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "pc_creature", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "placedoor", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "spawn", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "other", TRUE);
                                }
                                else
                                {
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "npc_creature", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "pc_creature", FALSE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "placedoor", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "spawn", TRUE);
                                    SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "other", TRUE);
                                }
                            }
                            else if (objType == OBJECT_TYPE_DOOR ||
                                     objType == OBJECT_TYPE_PLACEABLE)
                            {
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "npc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "pc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "placedoor", FALSE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "spawn", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "other", TRUE);
                            }
                            else if (objType == OBJECT_TYPE_WAYPOINT &&
                                (!String.IsNullOrWhiteSpace(GetLocalString(targetObject, "ACR_SPAWN_GROUP_1")) ||
                                !String.IsNullOrWhiteSpace(GetLocalString(targetObject, "ACR_SPAWN_RESNAME_1")) ||
                                !String.IsNullOrWhiteSpace(GetLocalString(targetObject, "ACR_SPAWN_RANDOM_RESNAME_1"))))
                            {
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "npc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "pc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "placedoor", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "spawn", FALSE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "other", TRUE);
                            }
                            else
                            {
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "npc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "pc_creature", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "placedoor", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "spawn", TRUE);
                                SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "other", FALSE);
                            }
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_SEARCH_CREATOR:
                    {
                        if (commandParam == currentUser.LastSearchString &&
                            currentUser.openCommand == currentUser.LastSearchCommand)
                        {
                            if (currentUser.CreatorSearchResponse != null)
                            {
                                // They already have this one. We should just
                                // draw it.
                                Waiter.DrawNavigatorCategory(this, currentUser.CreatorSearchResponse);
                                return 0;
                            }
                        }
                        if (currentUser.CurrentSearch != null)
                        {
                            // In this case, a search is already running. We'll want to
                            // cancel it and clear it out.
                            CreatorSearch oldSearch = currentUser.CurrentSearch;
                            oldSearch.CancelAsync();
                            DelayCommand(0.5f, delegate { oldSearch.Dispose(); });
                            currentUser.CurrentSearch = null;
                        }
                        if (String.IsNullOrWhiteSpace(commandParam))
                        {
                            // If the search string is empty, we'll assume that they just
                            // want their old tab back.
                            CreatorTabs.FocusTabs(this, currentUser, currentUser.openCommand);
                            return 0;
                        }
                        
                        // From here, it looks like we have to do a real search.
                        currentUser.CurrentSearch = new CreatorSearch();
                        currentUser.CurrentSearch.WorkerSupportsCancellation = true;
                        currentUser.CurrentSearch.currentUser = currentUser;
                        currentUser.LastSearchString = commandParam.ToLower();
                        currentUser.LastSearchCommand = currentUser.openCommand;
                        currentUser.CreatorSearchResponse = null;
                        switch (currentUser.openCommand)
                        {
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CREATURE_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentCreatureCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_ITEM_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentItemCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIGHTS_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentLightCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_PLACEABLE_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentPlaceableCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_TRAP_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentTrapCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_VFX_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentVisualEffectCategory;
                                break;
                            case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_WAYPOINT_TAB:
                                currentUser.CurrentSearch.baseCat = currentUser.CurrentWaypointCategory;
                                break;
                        }
                        currentUser.CurrentSearch.DoWork += new System.ComponentModel.DoWorkEventHandler(currentUser.CurrentSearch.SearchCreator);
                        currentUser.CurrentSearch.RunWorkerAsync();
                        CreatorSearch.WaitForSearch(this, currentUser, currentUser.openCommand, currentUser.CurrentSearch);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_INITIALIZE_CHOOSER:
                    {
                        ChooserLists.InitializeButtons(this, currentUser);
                        ChooserLists.DrawAreas(this, currentUser);
                        currentUser.FocusedArea = GetArea(currentUser.Id);
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_CHOOSER:
                    {
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "ChooserActive", FALSE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "Chooser", FALSE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "LimboActive", TRUE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "Limbo", TRUE);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_FOCUS_LIMBO:
                    {
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "ChooserActive", TRUE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "Chooser", TRUE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "LimboActive", FALSE);
                        SetGUIObjectHidden(OBJECT_SELF, "SCREEN_DMC_CHOOSER", "Limbo", FALSE);
                        ChooserLists.DrawLimbo(this, currentUser);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_SEARCH_CHOOSER:
                    {
                        if (String.IsNullOrWhiteSpace(commandParam))
                        {
                            ChooserLists.DrawAreas(this, currentUser);
                        }
                        else
                        {
                            ChooserLists.SearchAreas(this, currentUser, commandParam);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_LIST_AREA:
                    {
                        uint targetArea = 0;
                        if (uint.TryParse(commandParam, out targetArea))
                        {
                            currentUser.FocusedArea = targetArea;
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_AOE_VISIBLE:
                    {
                        currentUser.ChooserShowAOE = !currentUser.ChooserShowAOE;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_AOE", currentUser.ChooserShowAOE ? "trap.tga" : "notrap.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_CREATURE_VISIBLE:
                    {
                        currentUser.ChooserShowCreature = !currentUser.ChooserShowCreature;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_CREATURE", currentUser.ChooserShowCreature ? "creature.tga" : "nocreature.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_DOOR_VISIBLE:
                    {
                        currentUser.ChooserShowDoor = !currentUser.ChooserShowDoor;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_DOOR", currentUser.ChooserShowDoor ? "door.tga" : "nodoor.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_ITEM_VISIBLE:
                    {
                        currentUser.ChooserShowItem = !currentUser.ChooserShowItem;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_ITEM", currentUser.ChooserShowItem ? "item.tga" : "noitem.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_LIGHT_VISIBLE:
                    {
                        currentUser.ChooserShowLight = !currentUser.ChooserShowLight;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_LIGHT", currentUser.ChooserShowLight ? "light.tga" : "nolight.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_PLACEABLE_VISIBLE:
                    {
                        currentUser.ChooserShowPlaceable = !currentUser.ChooserShowPlaceable;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_PLACEABLE", currentUser.ChooserShowPlaceable ? "placeable.tga" : "noplaceable.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_PLACEDEFFECT_VISIBLE:
                    {
                        currentUser.ChooserShowPlacedEffect = !currentUser.ChooserShowPlacedEffect;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_VFX", currentUser.ChooserShowPlacedEffect ? "vfx.tga" : "novfx.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_STORE_VISIBLE:
                    {
                        currentUser.ChooserShowStore = !currentUser.ChooserShowStore;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_STORE", currentUser.ChooserShowStore ? "store.tga" : "nostore.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_TRIGGER_VISIBLE:
                    {
                        currentUser.ChooserShowTrigger = !currentUser.ChooserShowTrigger;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_TRIGGER", currentUser.ChooserShowTrigger ? "trigger.tga" : "notrigger.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_WAYPOINT_VISIBLE:
                    {
                        currentUser.ChooserShowWaypoint = !currentUser.ChooserShowWaypoint;
                        SetGUITexture(currentUser.Id, "SCREEN_DMC_CHOOSER", "SHOW_WAYPOINT", currentUser.ChooserShowWaypoint ? "waypoint.tga" : "nowaypoint.tga");
                        ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_JUMP_TO_AREA:
                    {
                        ChooserJump.JumpToArea(this, currentUser);
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_JUMP_TO_OBJECT:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            JumpToLocation(GetLocation(targetObject));
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_JUMP_OBJECT_TO_ME:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME, "gui_chooserjump");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME_PARAM, commandParam);
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, "0");
                            DisplayGuiScreen(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_SINGLE, 0, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_SINGLE, 0);
                            SendMessageToPC(currentUser.Id, String.Format("Jumping {0} to your target...", GetTag(targetObject)));
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_HEAL:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(1000), targetObject, 0.0f);
                            foreach (NWEffect eff in GetEffects(targetObject))
                            {
                                RemoveEffect(targetObject, eff);
                            }
                            SendMessageToPC(currentUser.Id, String.Format("Healing {0}...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_IMMORTAL:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            if (GetImmortal(targetObject) == TRUE)
                            {
                                SetImmortal(targetObject, FALSE);
                                SendMessageToPC(currentUser.Id, String.Format("Making {0} immortal...", GetTag(targetObject)));
                            }
                            else
                            {
                                SetImmortal(targetObject, TRUE);
                                SendMessageToPC(currentUser.Id, String.Format("Making {0} mortal...", GetTag(targetObject)));
                            }
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }                       
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_HOSTILE:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            ChangeToStandardFaction(targetObject, STANDARD_FACTION_HOSTILE);
                            SendMessageToPC(currentUser.Id, String.Format("Making {0} hostile...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_NONHOSTILE:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            ChangeToStandardFaction(targetObject, STANDARD_FACTION_COMMONER);
                            SendMessageToPC(currentUser.Id, String.Format("Making {0} non-hostile...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_KILL:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetImmortal(targetObject, FALSE);
                            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE, FALSE, TRUE, TRUE), targetObject, 0.0f);
                            SendMessageToPC(currentUser.Id, String.Format("Killing {0}...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_LIMBO:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SendCreatureToLimbo(targetObject);
                            SendMessageToPC(currentUser.Id, String.Format("Sending {0} to limbo...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_RESTORE:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            foreach (NWEffect eff in GetEffects(targetObject))
                            {
                                int effType = GetEffectType(eff);
                                if (effType == EFFECT_TYPE_ABILITY_DECREASE ||
                                    effType == EFFECT_TYPE_AC_DECREASE ||
                                    effType == EFFECT_TYPE_ASSAYRESISTANCE ||
                                    effType == EFFECT_TYPE_ATTACK_DECREASE ||
                                    effType == EFFECT_TYPE_BLINDNESS ||
                                    effType == EFFECT_TYPE_CHARMED ||
                                    effType == EFFECT_TYPE_CONFUSED ||
                                    effType == EFFECT_TYPE_CURSE ||
                                    effType == EFFECT_TYPE_CUTSCENE_PARALYZE ||
                                    effType == EFFECT_TYPE_CUTSCENEIMMOBILIZE ||
                                    effType == EFFECT_TYPE_DAMAGE_DECREASE ||
                                    effType == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
                                    effType == EFFECT_TYPE_DAZED ||
                                    effType == EFFECT_TYPE_DEAF ||
                                    effType == EFFECT_TYPE_DISEASE ||
                                    effType == EFFECT_TYPE_DOMINATED ||
                                    effType == EFFECT_TYPE_ENTANGLE ||
                                    effType == EFFECT_TYPE_FRIGHTENED ||
                                    effType == EFFECT_TYPE_INSANE ||
                                    effType == EFFECT_TYPE_MESMERIZE ||
                                    effType == EFFECT_TYPE_MOVEMENT_SPEED_DECREASE ||
                                    effType == EFFECT_TYPE_NEGATIVELEVEL ||
                                    effType == EFFECT_TYPE_PARALYZE ||
                                    effType == EFFECT_TYPE_PETRIFY ||
                                    effType == EFFECT_TYPE_POISON ||
                                    effType == EFFECT_TYPE_SAVING_THROW_DECREASE ||
                                    effType == EFFECT_TYPE_SKILL_DECREASE ||
                                    effType == EFFECT_TYPE_SLOW ||
                                    effType == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
                                    effType == EFFECT_TYPE_STUNNED ||
                                    effType == EFFECT_TYPE_TURN_RESISTANCE_DECREASE ||
                                    effType == EFFECT_TYPE_TURNED ||
                                    effType == EFFECT_TYPE_WOUNDING)
                                {
                                    RemoveEffect(targetObject, eff);
                                }
                            }
                            SendMessageToPC(currentUser.Id, String.Format("Removing abnormalities from {0}...", GetName(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_REST:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SendMessageToPC(OBJECT_SELF, "Resetting rest for " + GetName(targetObject) + ".");
                            GetDatabase().ACR_DeletePersistentVariable(targetObject, ACR_REST_TIMER);
                            SendMessageToPC(currentUser.Id, String.Format("Allowing {0} to rest...", GetName(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_SPELLPREP:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SendMessageToPC(OBJECT_SELF, "Resetting spell timers for " + GetName(targetObject) + ".");
                            GetDatabase().ACR_DeletePersistentVariable(targetObject, ACR_REST_STUDY_TIMER);
                            GetDatabase().ACR_DeletePersistentVariable(targetObject, ACR_REST_PRAYER_TIMER);
                            SendMessageToPC(currentUser.Id, String.Format("Allowing {0} to prepare spells...", GetName(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_VALIDATE:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            if (GetIsPC(targetObject) == FALSE)
                            {
                                SendMessageToPC(OBJECT_SELF, "That is not a PC, and thus cannot be validated from quarantine.");
                                return 0;
                            }
                            if (GetDatabase().ACR_GetIsPCQuarantined(targetObject))
                            {
                                // False alarm. Notify the DM, end.
                                SendMessageToPC(OBJECT_SELF, GetName(targetObject) + " is not flagged as Quarantined.");
                                return 0;
                            }
                            // store the current server and location as valid
                            GetDatabase().ACR_PCUpdateStatus(targetObject, true);
                            // clear the local quarantine flag on the PC
                            DeleteLocalInt(targetObject, ACR_PPS_QUARANTINED);
                            // re-run the rest initialization
                            GetDatabase().ACR_RestOnClientEnter(targetObject);
                            // Validate the targeted PC.
                            GetDatabase().ACR_PPSValidatePC(targetObject);
                            // start the XP system as well
                            GetDatabase().ACR_XPOnClientLoaded(targetObject);
                            GetDatabase().ACR_LogEvent(targetObject, ACR_LOG_VALIDATED, "Validated for play on server " + GetName(GetModule()) + " by DM: " + GetName(OBJECT_SELF), OBJECT_SELF);
                            GetDatabase().ACR_SetPersistentString(targetObject, _ACR_PTL_RECORD, "Validated for serverID " + IntToString(GetDatabase().ACR_GetServerID()) + " by DM: " + GetName(OBJECT_SELF));
                            GetDatabase().ACR_DeletePersistentVariable(targetObject, _ACR_PTL_PASSPORT);
                            SendMessageToPC(targetObject, "Validated and normalized by DM: " + GetName(OBJECT_SELF) + ".");
                            SendMessageToAllDMs("PC: " + GetName(targetObject) + " was validated from quarantine by DM: " + GetName(OBJECT_SELF));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_VIEW_INVENTORY:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            ClearScriptParams();
                            AddScriptParameterInt(PLAYER_REPORT_SHOW_INVENTORY);
                            AddScriptParameterObject(targetObject);
                            ExecuteScriptEnhanced("gui_playerreport", OBJECT_SELF, TRUE);
                            SendMessageToPC(currentUser.Id, String.Format("Opening {0}'s inventory...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_LOCK:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetLocked(targetObject, TRUE);
                            SendMessageToPC(currentUser.Id, String.Format("Locking {0}...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_UNLOCK:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetLocked(targetObject, FALSE);
                            SendMessageToPC(currentUser.Id, String.Format("Unlocking {0}...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_PLOT:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetPlotFlag(targetObject, TRUE);
                            SendMessageToPC(currentUser.Id, String.Format("Setting {0} as plot...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_UNPLOT:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetPlotFlag(targetObject, FALSE);
                            SendMessageToPC(currentUser.Id, String.Format("Setting {0} as non-plot...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_DESTROY:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            int objType = GetObjectType(targetObject);
                            if (objType == OBJECT_TYPE_AREA_OF_EFFECT &&
                                GetTag(targetObject).ToLower().Contains("trap"))
                            {
                                ClearScriptParams();
                                AddScriptParameterInt(TRAP_EVENT_DESPAWN_TRAP);
                                AddScriptParameterFloat(0.0f);
                                AddScriptParameterFloat(0.0f);
                                AddScriptParameterFloat(0.0f);
                                AddScriptParameterObject(OBJECT_INVALID);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterFloat(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterObject(OBJECT_INVALID);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
                                AddScriptParameterInt(-1);
	                            AddScriptParameterString("");
		                        ExecuteScriptEnhanced("acr_traps", targetObject, TRUE);
                                ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                                SendMessageToPC(currentUser.Id, String.Format("Disabling {0} as a trap...", GetTag(targetObject)));
                            }
                            else
                            {
                                DestroyObject(targetObject, 0.0f, FALSE);
                                ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                                if (GetObjectType(targetObject) == OBJECT_TYPE_CREATURE)
                                {
                                    // DestroyObject runs at the end of script execution, so we have to delay
                                    // to appropriately redraw the lists.
                                    DelayCommand(0.1f, delegate { ChooserLists.DrawLimbo(this, currentUser); });
                                }
                                SendMessageToPC(currentUser.Id, String.Format("Destroying {0}...", GetTag(targetObject)));
                            }
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_UNTRAP:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetTrapActive(targetObject, FALSE);
                            SendMessageToPC(currentUser.Id, String.Format("Removing trap from {0}...", GetTag(targetObject)));
                            ChooserLists.DrawObjects(this, currentUser, currentUser.FocusedArea);
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_UNLIMBO:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME, "gui_chooserjump");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_TARGET_SCRIPT_NAME_PARAM, commandParam);
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_VALID_TARGET_LIST, "ground");
                            SetGlobalGUIVariable(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_CREATOR_CREATE_OBJECT_TYPE, "999");
                            DisplayGuiScreen(OBJECT_SELF, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_UINAME_SINGLE, 0, ALFA.Shared.GuiGlobals.ACR_GUI_GLOBAL_TARGETUI_SINGLE, 0);
                            SendMessageToPC(currentUser.Id, String.Format("Recalling {0} from limbo...", GetTag(targetObject)));
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_ACTIVATE_SPAWN:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetLocalInt(targetObject, "ACR_SPAWN_IS_DISABLED", 0);
                            SendMessageToPC(currentUser.Id, String.Format("Enabling spawns from {0}...", GetTag(targetObject)));
                        }
                        break;
                    }
                case ACR_CreatorCommand.ACR_CHOOSERCREATOR_CHOOSER_DEACTIVATE_SPAWN:
                    {
                        uint targetObject = 0;
                        if (uint.TryParse(commandParam, out targetObject))
                        {
                            SetLocalInt(targetObject, "ACR_SPAWN_IS_DISABLED", 1);
                            SendMessageToPC(currentUser.Id, String.Format("Disabling spawns from {0}...", GetTag(targetObject)));
                        }
                        break;
                    }
            }
            return 0;

        }