[SwatGame.UseInterface]
Range=2000

;For each Actor that is hit by this
;   Interface's focus trace
;   (in order by distance from the Player),
;   the Interface will test each Context in order
;   until one matches completely.
;If any matching context specifies
;   BlockTrace=true, then 
;   this Interface is "satisfied"
;   until the next time it is Updated.
;
;Tip1: Put more specific contexts earlier.
;   If a more generic context is earlier, then
;   it may match when a more specific context
;   is more appropriate.

;Note! The order of these entries is very important.

DoorRelatedContext=DoorWay
DoorRelatedContext=SwatDoor
DoorRelatedContext=DoorModelThruGlass
DoorRelatedContext=LockedWedgedDoor
DoorRelatedContext=LockedDoor
DoorRelatedContext=WedgedDoor
DoorRelatedContext=ClosedDoor
DoorRelatedContext=BrokenDoor
DoorRelatedContext=OpenDoor
DoorRelatedContext=DistantDoor

Context=Glass
Context=Evidence
Context=TrainingButton
Context=MissionExitDoor
Context=IncapacitatedOfficer
Context=IncapacitatedPlayer
Context=DeadEnemy
Context=IncapacitatedEnemy
Context=RestrainedEnemy
Context=ArrestableAI
Context=ArrestablePlayer
Context=DOA
Context=DeadHostage
Context=IncapacitatedHostage
Context=RestrainedHostage
Context=Pickup
Context=ICanBeUsed
Context=DoorBufferVolume
Context=CatchAll

;(The order of these sections is not important.)

;
; \/ Door Related Contexts \/
;

[DoorWay]
;note, this could be left out since it does not
;   BlockTrace or AddFocus.  It is provided
;   for efficiency so that the Interface doesn't
;   need to test any more contexts.
DoorPart=DoorPart_Way

[SwatDoor]
;note, this could be left out since it does not
;   BlockTrace or AddFocus.  It is provided
;   for efficiency so that the Interface doesn't
;   need to test any more contexts.
DoorPart=DoorPart_Animation

[DoorModelThruGlass]
;can't interact with a door thru glass
DoorPart=DoorPart_Model

CaresAboutLookingThruGlass=true
IsLookingThruGlass=true

BlockTrace=true

[LockedWedgedDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=false
CaresAboutLocked=true
IsLocked=true
CaresAboutWedged=true
IsWedged=true
CaresAboutPlayerBelief=true
PlayerBelievesLocked=true

AddFocus=true
BlockTrace=true
OtherFeedbackText=Locked, Wedged Door.

[LockedDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=false
CaresAboutLocked=true
IsLocked=true
CaresAboutWedged=true
IsWedged=false
CaresAboutPlayerBelief=true
PlayerBelievesLocked=true

AddFocus=true
BlockTrace=true
OtherFeedbackText=Locked Door.

[WedgedDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=false
;Note if the door is also locked, then the earlier [LockedWedgedDoor] context will match first
CaresAboutWedged=true
IsWedged=true

AddFocus=true
BlockTrace=true
OtherFeedbackText=Wedged Door.

[ClosedDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=false
;Note if the door is known to be locked, then the earlier [LockedDoor] context will match first
;Note if the door is wedged, then the earlier [WedgedDoor] context will match first

AddFocus=true
BlockTrace=true
UseFeedbackText=Open Door

[BrokenDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=true
CaresAboutBroken=true
IsBroken=true

AddFocus=true
BlockTrace=false
OtherFeedbackText=Broken Door

[OpenDoor]
Range=128

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=true

AddFocus=true
BlockTrace=true
UseFeedbackText=Close Door

[DistantDoor]
;maximum range

DoorPart=DoorPart_Model
CaresAboutOpen=true
IsOpen=true

AddFocus=false
BlockTrace=true

;
; \/ Other Contexts \/
;

[Glass]
Type=Actor

CaresAboutTransparent=true
IsTransparent=true

IsGlass=true

AddFocus=false
BlockTrace=false

[Evidence]
Range=150

Type=IEvidence

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

CaresAboutLookingThruGlass=true
IsLookingThruGlass=false

BlockTrace=true
AddFocus=true

UseFeedbackText=Secure Evidence

[TrainingButton]
Range=80

Type=Training_Button

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

CaresAboutLookingThruGlass=true
IsLookingThruGlass=false

BlockTrace=true
AddFocus=true

UseFeedbackText=Press Button

[MissionExitDoor]
Range=128

Type=MissionExitDoor

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

CaresAboutLookingThruGlass=true
IsLookingThruGlass=false

BlockTrace=true
AddFocus=true

UseFeedbackText=Exit Mission

[IncapacitatedOfficer]
Type=SwatOfficer

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutIncapacitated=true
IsIncapacitated=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Officer Down

[IncapacitatedPlayer]
Type=SwatPlayer

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
;CaresAboutIncapacitated=true
;IsIncapacitated=true
CaresAboutDead=true
IsDead=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Officer Down

[ArrestableAI]
;Same Range as FireInterface|CuffsOnSuspect
Range=200

Type=SwatAICharacter

HasA=Cuffs
ExceptActiveItem=Cuffs

CaresAboutCanBeArrestedNow=true
CanBeArrestedNow=true

BlockTrace=true
AddFocus=true

OtherFeedbackText=Equip Zipcuffs to Restrain

[ArrestablePlayer]
;Same Range as FireInterface|CuffsOnSuspect
Range=200

Type=NetPlayer

HasA=Cuffs
ExceptActiveItem=Cuffs

CaresAboutCanBeArrestedNow=true
CanBeArrestedNow=true

;special condition: ANetPlayer::FocusInterfaceContextMeetsSpecialConditions() tests if Candidate is on the other team
HasSpecialConditions=true

BlockTrace=true
AddFocus=true

OtherFeedbackText=Equip Zipcuffs to Restrain

[RestrainedEnemy]
Type=SwatEnemy

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutRestrained=true
IsRestrained=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Restrained Suspect

[IncapacitatedEnemy]
Type=SwatEnemy

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutIncapacitated=true
IsIncapacitated=true

;in case an enemy dies on top of their weapon, let the use interface trace thru the dead enemy so you can still secure the weapon (VUG #109)
BlockTrace=false
AddFocus=true

UseFeedbackText=Report Incapacitated Suspect

[DeadEnemy]
Type=SwatEnemy

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutDead=true
IsDead=true

;in case an enemy dies on top of their weapon, let the use interface trace thru the dead enemy so you can still secure the weapon (VUG #109)
BlockTrace=false
AddFocus=true

UseFeedbackText=Report Dead Suspect

[DOA]
Type=StaticDOA

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report DOA

[RestrainedHostage]
Type=SwatHostage

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutRestrained=true
IsRestrained=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Restrained Hostage

[IncapacitatedHostage]
Type=SwatHostage

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutIncapacitated=true
IsIncapacitated=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Incapacitated Hostage

[DeadHostage]
Type=SwatHostage

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true
CaresAboutDead=true
IsDead=true

BlockTrace=true
AddFocus=true

UseFeedbackText=Report Dead Hostage

[Pickup]
Range=150

Type=HandheldEquipmentPickup

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

CaresAboutLookingThruGlass=true
IsLookingThruGlass=false

BlockTrace=true
AddFocus=true

UseFeedbackText=Pick up Equipment

[ICanBeUsed]
Range=80

Type=ICanBeUsed

CaresAboutCanBeUsedNow=true
CanBeUsedNow=true

CaresAboutLookingThruGlass=true
IsLookingThruGlass=false

BlockTrace=true
AddFocus=true

UseFeedbackText=Interact

[DoorBufferVolume]
Type=DoorBufferVolume

BlockTrace=false
AddFocus=false

;This context catches any candidates that don't match any of the contexts above
[CatchAll]
BlockTrace=true
