public static void Enter(CLRScriptBase s, ALFA.Shared.ActiveTrap trap) { uint enterer = s.GetEnteringObject(); if (trap.IsFiring) { // Trap's already firing. It'll reset when it runs out of targets. return; } // If one is enough, we don't need to check the trigger's contents. if (trap.MinimumToTrigger == 1) { if (FitsTrapTargetRestriction(s, trap, enterer)) { Fire(s, trap); } } else { int validTargets = 0; foreach (uint contents in s.GetObjectsInPersistentObject(s.GetObjectByTag(trap.Tag, 0), OBJECT_TYPE_CREATURE, 0)) { if (FitsTrapTargetRestriction(s, trap, contents)) { validTargets++; } } if (validTargets >= trap.MinimumToTrigger) { Fire(s, trap); } } }
public static void Enter(CLRScriptBase s, ALFA.Shared.ActiveTrap trap) { uint enteringObject = s.GetEnteringObject(); if (IsTrapDetectedBy(s, trap, enteringObject)) { HandleTrapDetected(s, trap, enteringObject); } }
public static void Exit(CLRScriptBase s, ALFA.Shared.ActiveTrap trap) { s.SendMessageToPC(s.GetEnteringObject(), String.Format("This event has no functionality in it. If it has fired, you should write up a ticket about how. Trap ID: {0}", trap.Tag)); }