void main() { object oUser; location lTrap = GetLocation(OBJECT_SELF); int nTrapDC = 20; float fTrapDis = FeetToMeters(5.0); float fSearchDist = FeetToMeters(20.0);; oUser = GetFirstObjectInShape(SHAPE_SPHERE, fSearchDist, lTrap, TRUE, OBJECT_TYPE_CREATURE); while(GetIsObjectValid(oUser)) { if(GetIsEnemy(oUser, OBJECT_SELF) && (GetIsReactionTypeFriendly(oUser, OBJECT_SELF) != TRUE)) { float fSearchDis = FeetToMeters(0.0); if(GetDetectMode(oUser) == DETECT_MODE_ACTIVE) fSearchDis = FeetToMeters(10.0); float fUserDis = GetDistanceToObject(oUser); if((fUserDis <= fSearchDis) && GetCurrentHitPoints(oUser) > 0) { int nDCCheck = d20() + GetSkillRank(SKILL_SEARCH, oUser); if(nDCCheck >= nTrapDC) { AssignCommand(oUser,SpeakString("TRAP!")); object oTrap = CreateObject(OBJECT_TYPE_PLACEABLE, "trap001", lTrap, TRUE); SetPlotFlag(oTrap, 1); SetTrapDetectedBy(oTrap, oUser); SetTrapDetectedBy(oTrap, GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oUser)); SetTrapDetectedBy(oTrap, GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oUser)); if(!GetIsPC(oUser)) SetTrapDetectedBy(oTrap, GetMaster(oUser)); SetPlotFlag(OBJECT_SELF, 0); DestroyObject(OBJECT_SELF); return; } } if((fUserDis <= fTrapDis)) { location lUser = GetLocation(oUser); object oTrap = CreateObject(OBJECT_TYPE_PLACEABLE, "trap001", lUser, TRUE); AssignCommand(oUser, ClearAllActions(TRUE)); AssignCommand(oUser, ActionInteractObject(oTrap)); DelayCommand(0.5, SetPlotFlag(oTrap, 0)); DelayCommand(1.0, DestroyObject(oTrap)); return; } } oUser = GetNextObjectInShape(SHAPE_SPHERE, fSearchDist, lTrap, TRUE, OBJECT_TYPE_CREATURE); } }