View Issue Details

IDProjectCategoryView StatusLast Update
0006005The Dark ModAIpublic15.07.2022 09:44
ReporterFrost_Salamander Assigned ToObsttorte  
PrioritynormalSeveritynormalReproducibilityalways
Status closedResolutionfixed 
PlatformPCOSWindowsOS Version10
Product VersionTDM 2.10 
Summary0006005: AI can operate non-frobable doors
DescriptionIf a door is marked as non-frobable, AI can still operate them if they can't reach the intended mechanism used to open it, such as a lever or trigger.

Ideally, if a door is marked as non-frobable, AI shouldn't be able to operate them directly but rather use the intended controllers/trigger (or don't use them at all if they can't reach/operate the controller mechanism).

I have 2 scenarios where this causes a problem:

Lever doors:

I have a gate marked as non-frobable that separates 2 areas and is controlled by levers. It is intended for guards to use and the levers are kept in areas away from the gate. The map also contains 'commoner' AI near the gate who cannot reach the levers. If you alert the commoner AI, they will flee towards the gate and open it without using the lever, making the whole lever/controller setup pointless. In addition, guards will also open the door without using the levers if they can't reach them.

If the AI can reach the levers, they will use those to open the door.

Secret door:

I have a non-frobable secret door that exits a building. It is opened by a trigger inside the building. If you are outside the building and alert a commoner AI nearby, it will flee and open the secret door and run into the building. This will obviously ruin the secret as it wasn't supposed to be revealed until the player goes inside the building and finds the exit trigger.

Actually, in this case setting 'ai_should_not_handle' to '1' should be ideal because I don't want the AI to ever operate the door, but unfortunately if this is set, the AI will then not walk through the door when it's open. This wiki entry might be wrong (the part about the AI walking through when it's open):

From https://wiki.thedarkmod.com/index.php?title=Doors#AI_Door_management

"ai_should_not_handle"
If set to 1, AI will not attempt to handle it and add it to the forbidden areas when closed (so that it doesn't try to path through). They might still walk through the door when it is open though. Useful if you have some special use door that you don't want the AI to operate.
Steps To ReproduceLever door:

- set up a door separating 2 areas and set 'frobable' to '0'
- set up a controller lever to operate the door on one side only
- place a commoner AI on the other side of the door (the side where the controller isn't)
- alert the AI. It will open the non-frobable door and flee through it, despite it only being intended to be openable using the lever

Secret door:

- set up a door separating 2 areas and set 'frobable' to '0'
- on one side, create a trigger that opens the door
- on the other side, place a commoner AI
- alert the commoner AI and it will flee through the secret door.
TagsNo tags attached.

Activities

Frost_Salamander

Frost_Salamander

12.07.2022 21:00

reporter   ~0015009

update description confirming that all AI (not just fleeing AI) can operate non-frobable doors
Obsttorte

Obsttorte

15.07.2022 06:50

developer   ~0015022

I've inspected the code and tested a bit more and made the following observations:

    frobability is player-related only, and therefore is not intented to affect the ai
    if there is no controller on the side of the door the ai is at, it will handle the door directly
    if ai_should_not_handle is set to true, the ai will not use the door, neither directly nor via controller
    if the door is open however, it will walk through it
    it will not walk through it, if it got opened after it attempted to flee

So in general the setup already works, but there are two flaws:

    You might want to have a setup with lever-controlled door that can only be operated from one side
    the flee routine should take the fact, that not_handleable doors got open during fleeing into account.
Obsttorte

Obsttorte

15.07.2022 09:39

developer   ~0015023

Last edited: 15.07.2022 09:42

Re: "You might want to have a setup with lever-controlled door that can only be operated from one side"
This can be achieved using door_handle_position entities.

Re: "the flee routine should take the fact, that not_handleable doors got open during fleeing into account. "
It actually does, but not if ai_should_not_handle isn't set to true.

Considering this and that the desired setups are achieveable via door_handle_position entities, it is best to not use "ai_should_not_handle" at all.

Issue History

Date Modified Username Field Change
12.07.2022 09:47 Frost_Salamander New Issue
12.07.2022 10:19 Frost_Salamander Description Updated
12.07.2022 10:52 Frost_Salamander Description Updated
12.07.2022 21:00 Frost_Salamander Summary Fleeing AI can operate non-frobable doors => AI can operate non-frobable doors
12.07.2022 21:00 Frost_Salamander Description Updated
12.07.2022 21:00 Frost_Salamander Steps to Reproduce Updated
12.07.2022 21:00 Frost_Salamander Note Added: 0015009
12.07.2022 21:02 Frost_Salamander Description Updated
15.07.2022 06:50 Obsttorte Note Added: 0015022
15.07.2022 06:50 Obsttorte Assigned To => Obsttorte
15.07.2022 06:50 Obsttorte Status new => assigned
15.07.2022 09:39 Obsttorte Note Added: 0015023
15.07.2022 09:42 Obsttorte Note Edited: 0015023
15.07.2022 09:44 Obsttorte Status assigned => closed
15.07.2022 09:44 Obsttorte Resolution open => fixed