They can't be assigned a patrol path, but they still need patrol nodes to navigate. If you're feeling creative, try creating a silent sound file in Audacity or a similar program. Export into ogg vorbis format, and set up a .snt file for it. Modify the properties so it has a large range and has a decent volume. Since it is silent the player won't hear anything, but you can trigger this sound where you want the lurker to go. Lurkers respond exclusively to sounds and the player coming within a certain height distance.
If triggering the sound via doesn't work, then the only other option is a full conversion to create a custom material, or somehow convincing players to overwrite their default materials.cfg with an additional custom material with silent physics sounds -- this way you can spawn a small custom box and give it a powerful body impulse to have it collide with a wall, thus alerting and luring the lurker away.
Now if that is not unconventional enough for you, you can also lure the lurker into a certain path with food. Create a body part entity in your map. Name it "bait_1". Make it small and static, so the player won't notice it or move it. Create a script area around it called "bait_area_1". Do this multiple times, making sure to keep the index at the end the same. Then copy this script into your map
while you have it open in Amnesia -- I did not bugtest this.
Also, I'm not entirely this will work! But it's fun to experiment right??
//////////////////////////////////////
// QUOTENTOTE LURKER BAIT
//change this to however many bait points you have
const int NUM_BAIT=2;
void OnStart()
{
for(int i=1;i<=NUM_BAIT;i++) AddEntityCollideCallback("LURKERNAMEHERE", "bait_area_"+i, "LurkerBaitCollide", 1, false);
}
void LurkerBaitCollide(string &in p, string &in c, int s)
{
int temp=parseStringINT(c);
SetEntityActive("bait_"+temp, false);
if(temp==NUM_BAIT) temp=1;
else temp++;
SetEntityActive("bait_"+temp, true);
}
//////////////////////////////////////
// PARSING FXNs
int parseStringINT(string str) {
int output = 0;
for(int i=0; i<str.length(); i++)
{
int digit = getDigit(str[i]);
if(digit > -1) output = 10*output+digit;
}
return output;
}
int getDigit(uint8 digit) {
int d = digit-48; //48 is ASCII code for 0
return ((d >= 0)&&(d<=9)) ? d : -1;
}
If that works out, the lurker should follow the paths sequentially (goes to 1, goes to 2, etc). Also -- change "LURKERNAMEHERE" to whatever your water lurker's internal name is and make sure you make the bait script areas decently large so the lurker doesn't manage to eat the food
I created large cylindrical collision indicators which you can use in place of a script area -- since the areas are square they won't be as consistent in terms of timing. If you want to use these collision indicators instead let me know and I'll upload the entity file here and modify the script.