User Tools

Site Tools


dromed:non_alert_doors

Creating Doors That Don’t Alert the AI

Introduction

I have a sleeping servant next to a door, but I think it’s unfair on the player that opening the door wakes her up; the dark engine doesn’t allow players to open a door quietly, so even if the player leans in to the door to hear what’s on the other side, they will have no choice but to wake the servant. An AI’s hearing ability can be reduced, but in my case it had to be set to well below average, which meant the servant didn’t wake up when I ran right past her.

I decided to prevent this door causing alerts, but other doors would remain as they are.

Why do doors alert the AI?

When opened or closed, the doors play schemas. If the player is responsible, the schemas played are all in the Sound → Schema → DOORS → PLR_DOOR section of the hierarchy. Look at the properties of that archetype. AI > Utility > Sound Value: Minor anomoly.

You’ll also notice another section, AI_DOOR, which doesn’t have that property, so the AI don’t alert themselves or each other when they use doors.

The simple solution

All instances of this door type can be made non-alerting by working out which schemas are played, then editing them in the hierarchy by adding Sound Value and deslecting everything. Look at the door’s archetype for the Schema > Class Tags property, or keep looking further up the hierarchy until you see it. Wood4x8 inherits the value from spinny_door, and the value is DoorType Wood1sm.

Sometimes you can use the DoorType to make an educated guess when looking through PLR_DOOR, but it’s useful to know how to be certain without resorting to trial and error. Look at your schema files (download them from Telliamed’s site if you don’t already have them) and open doors.sch in any text editor.

Search for Wood1sm (or whatever your door type is), although Wood1sm is right at the start of the file. The schemas are doorwood1_op_p, doorwood_sq_p and doorwood1_cl_p. The schema names match the archetype names in Dromed, so you can now edit those archetypes and add Sound Value: [none].

That’s not the best solution because it’s perfectly acceptable for most doors to cause a minor alert.

The proper solution

New schemas

Make a copy of the existing DoorType schemas, using a new DoorType which can be edited without affecting other doors.

First, if you don’t already have a set of working schema files, you will need to get them (e.g. from Telliamed’s site) and extract them to your schema folder. This will either be Thief2\schema or, if using FMSel, Thief2\FMs\[fm name]\schema.

Open Doors.sch and look for the DoorType you require. You can edit doors.sch or make a new, empty, .sch file. I prefer to use a new file so I can quickly see my changes. It also makes it easy to share schemas with other taffers.

There are three schemas for DoorType Wood1sm at the beginning of the file, and three more further down. The second set is used by the AI. Copy and paste both sets of schemas into a new file (or use doors.sch).

Rename the schemas so they don’t overwrite the originals. There’s a 15 character schema name limit, so do something like this:
Add the text _noalrt to the end and replace doorwood with w.(e.g. schema w1_op_p_noalrt). The actual schema names don’t matter, since it’s unlikely you’ll ever need to play them directly, but the first 15 characters must be unique.

Next, for all six schemas change the DoorType value to (DoorType Wood1q) (it’s a good idea to keep the names short). With this example, the original squeak schemas have two DoorTypes. The copy should only have one, (DoorType Wood1q).

The second line for each schema is archetype. You will see that the AI schemas are under AI_DOOR, so you can change archetype PLYR_DOOR to archetype AI_DOOR. These ai schemas are also used by levers and buttons.

New DoorType

DoorTypes have to be listed in Envsound.spc. Open that and find the //DOOR TYPES section. At the end of the DoorType list, add Wood1q

There’s a limit to the length this line can be, so if you’ve already added your own DoorTypes, you may need to add a new line below it, like this:
tag DoorType Wood1q

Dromed Setup

Make sure the new/edited schema files have been saved, then load your FM and use the reload_schemas command. Save your gamesys.

Edit the door (or its archetype) and add Schema > Class Tags. Change it to DoorType Wood1q

Opening this door should no longer wake up any nearby AI.

dromed/non_alert_doors.txt · Last modified: 2015/07/16 19:48 by r_soul