ACR_Traps.ACR_Traps.ScriptMain C# (CSharp) Метод

ScriptMain() публичный Метод

public ScriptMain ( [ ScriptParameters, [ DefaultReturnCode ) : Int32
ScriptParameters [
DefaultReturnCode [
Результат System.Int32
        public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode)
        {
            int Value = (int)ScriptParameters[0]; // ScriptParameterTypes[0] is typeof(int)

            TrapEvent currentEvent = (TrapEvent)ScriptParameters[0];
            switch (currentEvent)
            {
                case TrapEvent.CreateGeneric:
                    {
                        NWLocation loc = Location((uint)ScriptParameters[4], Vector((float)ScriptParameters[1], (float)ScriptParameters[2], (float)ScriptParameters[3]), 0.0f);
                        string resRef = (string)ScriptParameters[20];
                        if (resRef == "")
                        {
                            TriggerArea triggerArea = (TriggerArea)ScriptParameters[5];
                            int effectArea = (int)ScriptParameters[6];
                            float effectSize = (float)ScriptParameters[7];
                            int damageType = (int)ScriptParameters[8];
                            int diceNumber = (int)ScriptParameters[9];
                            int diceType = (int)ScriptParameters[10];
                            int saveDC = (int)ScriptParameters[11];
                            int attackBonus = (int)ScriptParameters[12];
                            int numberOfShots = (int)ScriptParameters[13];
                            uint trapOrigin = (uint)ScriptParameters[14];
                            int targetAlignment = (int)ScriptParameters[15];
                            int targetRace = (int)ScriptParameters[16];
                            int minimumToTrigger = (int)ScriptParameters[17];
                            int detectDC = (int)ScriptParameters[18];
                            int disarmDC = (int)ScriptParameters[19];
                            CreateTraps.GenericDamage(this, loc, triggerArea, effectArea, effectSize, damageType, diceNumber, diceType, saveDC, attackBonus, numberOfShots, trapOrigin, targetAlignment, targetRace, minimumToTrigger, detectDC, disarmDC, "");
                            break;
                        }
                        else
                        {
                            ALFA.Shared.TrapResource trapToSpawn = ALFA.Shared.Modules.InfoStore.ModuleTraps[(string)ScriptParameters[20]];
                            if (trapToSpawn.SpellTrap)
                            {
                                CreateTraps.Spell(this, loc, (TriggerArea)trapToSpawn.TriggerArea, trapToSpawn.SpellId, trapToSpawn.NumberOfShots, trapToSpawn.TrapOrigin, trapToSpawn.TargetAlignment, trapToSpawn.TargetRace, trapToSpawn.MinimumToTrigger, trapToSpawn.DetectDC, trapToSpawn.DisarmDC, trapToSpawn.Description);
                            }
                            else
                            {
                                CreateTraps.GenericDamage(this, loc, (TriggerArea)trapToSpawn.TriggerArea, trapToSpawn.EffectArea, trapToSpawn.EffectSize, trapToSpawn.DamageType, trapToSpawn.DiceNumber, trapToSpawn.DiceType, trapToSpawn.SaveDC, trapToSpawn.AttackBonus, trapToSpawn.NumberOfShots, trapToSpawn.TrapOrigin, trapToSpawn.TargetAlignment, trapToSpawn.TargetRace, trapToSpawn.MinimumToTrigger, trapToSpawn.DetectDC, trapToSpawn.DisarmDC, trapToSpawn.Description);
                            }
                        }
                        break;
                    }
                case TrapEvent.CreateSpell:
                    {
                        NWLocation loc = Location((uint)ScriptParameters[4], Vector((float)ScriptParameters[1], (float)ScriptParameters[2], (float)ScriptParameters[3]), 0.0f);
                        TriggerArea triggerArea = (TriggerArea)ScriptParameters[5];
                        int spellId = (int)ScriptParameters[8];
                        int numberOfShots = (int)ScriptParameters[13];
                        uint trapOrigin = (uint)ScriptParameters[14];
                        int targetAlignment = (int)ScriptParameters[15];
                        int targetRace = (int)ScriptParameters[16];
                        int minimumToTrigger = (int)ScriptParameters[17];
                        int detectDC = (int)ScriptParameters[18];
                        int disarmDC = (int)ScriptParameters[19];
                        CreateTraps.Spell(this, loc, triggerArea, spellId, numberOfShots, trapOrigin, targetAlignment, targetRace, minimumToTrigger, detectDC, disarmDC, "");
                        break;
                    }
                case TrapEvent.DetectEnter:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect.Keys.Contains(trapTag))
                        {
                            TrapDetect.Enter(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect[trapTag]);
                        }
                        else
                        {
                            uint enteringObject = GetEnteringObject();
                            SendMessageToPC(enteringObject, String.Format("Error: This appears to be a trap detection trigger, but I can not find any trap named {0}", trapTag));
                        }
                        break;
                    }
                case TrapEvent.DetectExit:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        uint enteringObject = GetEnteringObject();
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect.Keys.Contains(trapTag))
                        {
                            TrapDetect.Exit(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect[trapTag]);
                        }                     
                        break;
                    }
                case TrapEvent.TriggerEnter:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers.Keys.Contains(trapTag))
                        {
                            TrapTrigger.Enter(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers[trapTag]);
                        }
                        else
                        {
                            uint enteringObject = GetEnteringObject();
                            SendMessageToPC(enteringObject, String.Format("Error: This appears to be a trap firing trigger, but I can not find any trap named {0}", trapTag));
                        }
                        break;
                    }
                case TrapEvent.TriggerExit:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        uint enteringObject = GetEnteringObject();
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers.Keys.Contains(trapTag))
                        {
                            TrapTrigger.Exit(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers[trapTag]);
                        }
                        break;
                    }
                case TrapEvent.TrapDisarm:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        trapTag = trapTag.Substring(0, trapTag.Length - 1);
                        uint disabler = GetLastUsedBy();
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers.Keys.Contains(trapTag))
                        {
                            TrapDisable.Disable(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers[trapTag], disabler);
                        }
                        break;
                    }
                case TrapEvent.TrapDespawn:
                    {
                        string trapTag = GetTag(OBJECT_SELF);
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers.Keys.Contains(trapTag))
                        {
                            TrapDisable.RemoveTrap(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapTriggers[trapTag]);
                        }
                        if (ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect.Keys.Contains(trapTag))
                        {
                            TrapDisable.RemoveTrap(this, ALFA.Shared.Modules.InfoStore.SpawnedTrapDetect[trapTag]);
                        }
                        break;
                    }
            }

            return 0;
        }