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

RemoveTrap() публичный статический Метод

public static RemoveTrap ( CLRScriptBase s, ALFA trap ) : void
s CLRScriptFramework.CLRScriptBase
trap ALFA
Результат void
        public static void RemoveTrap(CLRScriptBase s, ALFA.Shared.ActiveTrap trap)
        {
            uint triggerAOE = s.GetObjectByTag(trap.Tag, 0);
            uint detectAOE = s.GetObjectByTag(trap.DetectTag, 0);
            uint disarmPlaceable = s.GetObjectByTag(trap.Tag + "_", 0);

            s.DestroyObject(triggerAOE, 0.0f, FALSE);
            s.DestroyObject(detectAOE, 0.0f, FALSE);
            s.DestroyObject(disarmPlaceable, 0.0f, FALSE);
        }

Usage Example

        public static void Fire(CLRScriptBase s, ALFA.Shared.ActiveTrap trap, uint specialTarget)
        {
            List <uint> targets = new List <uint>();

            if (s.GetIsObjectValid(specialTarget) == TRUE)
            {
                targets.Add(specialTarget);
            }
            foreach (uint contents in s.GetObjectsInPersistentObject(s.GetObjectByTag(trap.Tag, 0), OBJECT_TYPE_CREATURE, 0))
            {
                if (FitsTrapTargetRestriction(s, trap, contents))
                {
                    targets.Add(contents);
                }
            }

            if (targets.Count == 0)
            {
                // Might be that they all left. In any case
                // we have nothing to shoot
                trap.IsFiring = false;
                return;
            }
            uint target;

            if (targets.Count == 1)
            {
                target = targets[0];
            }
            else
            {
                target = targets[s.Random(targets.Count)];
            }

            uint caster;

            if (s.GetIsObjectValid(trap.TrapOrigin) == FALSE)
            {
                caster = s.GetObjectByTag(trap.Tag, 0);
            }
            else
            {
                caster = trap.TrapOrigin;
            }

            if (trap.SpellTrap)
            {
                // It's a spell-- guess this is simple.
                s.AssignCommand(caster, delegate { s.ActionCastSpellAtObject(trap.SpellId, target, METAMAGIC_NONE, TRUE, 0, 0, 1); });
            }
            else
            {
                foreach (uint victim in s.GetObjectsInShape(trap.EffectArea, trap.EffectSize, s.GetLocation(target), false, OBJECT_TYPE_CREATURE, s.GetPosition(caster)))
                {
                    s.ApplyEffectToObject(DURATION_TYPE_INSTANT, GetTrapEffect(s, trap, victim), victim, 0.0f);
                    _doSoloVFX(s, trap, victim);
                }
                _doGroupVFX(s, trap, s.GetLocation(target));
            }

            if (trap.NumberOfShots > -1)
            {
                if (trap.NumberOfShots < 2)
                {
                    TrapDisable.RemoveTrap(s, trap);
                    return;
                }
                else
                {
                    trap.NumberOfShots--;
                }
            }

            trap.IsFiring = true;
            s.DelayCommand(6.0f, delegate { Fire(s, trap); });
        }
All Usage Examples Of ACR_Traps.TrapDisable::RemoveTrap