#ifndef AI_TRIGGER_LOOK #define AI_TRIGGER_LOOK object ai_trigger_look : ai_darkmod_base { void init(); void updateLoop(); float playerLooksAt(); void triggerTargets(); float angle; float distance; }; void ai_trigger_look::init() { angle=getFloatKey("tol_angle"); distance=getFloatKey("tol_distance"); angle=sys.cos(angle); thread updateLoop(); } void ai_trigger_look::updateLoop() { while(!AI_DEAD || !AI_KNOCKEDOUT) // do not response if ai is dead or knocked out { while(!playerLooksAt()) { sys.waitFrame(); } triggerTargets(); while(playerLooksAt()) { sys.waitFrame(); } } } float ai_trigger_look::playerLooksAt() { vector orientation, viewVector; float dist,resAng; orientation=getOrigin()-$player1.getOrigin(); dist=sys.vecLength(orientation); if (dist>distance) return 0; viewVector=$player1.getViewAngles(); viewVector=sys.angToForward(viewVector); resAng=viewVector*orientation/dist; return (resAng>angle); } void ai_trigger_look::triggerTargets() { float i; for (i=0;i