All Downloads are FREE. Search and download functionalities are using the official Maven repository.

APT.all-test.MOUTBot.execute-mission.defend.determine-threat-door.soar Maven / Gradle / Ivy

echo "\nLoading defend/determine-threat-door"

## Threats one room away are always threat doors
sp {defend*propose*determine-threat-door*next-to-threat
   (state  ^name << retreat defend  sentry-watch >>
              ^objective.defensive-position.area-achieved true
              ^top-state )
   ( ^map.current-area 
         ^threats.controlled-area )
   ( ^path 
        -^threat-door.node )
   ( ^destination-area 
           ^distance 1
           ^via-node )
-->
#   (write (crlf) |Determine Threat-door: |  |, path: |  |, threat-area: |  | current-area: |  |, distance: 1|)
   ( ^operator  +, >, = 90)
   ( ^name determine-threat-door
        ^path )
}

## REW: 2003-04-30
#  bugfix from JEL
sp {defend*propose*determine-threat-door
   (state  ^name << retreat  defend sentry-watch >>
              ^objective.defensive-position.area-achieved true
              ^top-state )
   ( ^map.current-area 
         ^threats.controlled-area )
   ( ^path 
        -^threat-door.node )
   ( ^destination-area 
           ^distance 
           ^via-node )
-->
#   (write (crlf) |Determine Threat-door: |  |, path: |  |,
 #  threat-area: |  | current-area: |  |, distance: |
#   )
   ( ^operator  +, >, = 90)
   ( ^name determine-threat-door
        ^path )
}
  

# REW: old determine-threa-door proposal
#sp {defend*propose*determine-threat-door
#   (state  ^name << retreat defend sentry-watch >>
#              ^objective.defensive-position.area-achieved true
#              ^top-state )
#   ( ^map.current-area 
#         ^threats.controlled-area )
#   ( ^path 
#        -^threat-door)
#   ( ^destination-area 
#           ^distance 
#           ^via-node )
#-->
#   (write (crlf) |Determine Threat-door: |  |, path: |  |, threat-area: |  | current-area: |  |, distance: | )
#   ( ^operator  +, >, = 90)
#   ( ^name determine-threat-door
#        ^path )
#}

## Abandoned area is always a possible threat area

sp {defend*propose*determine-threat-door*previous-area
   (state  ^name << retreat  defend >>
              ^top-state )
   ( ^map 
         ^mission.objective )
   ( ^status abandoned
          ^<< offensive-position defensive-position >>.area )
   ( ^current-area 
          ^previous-area )
   ( ^path 
        -^threat-door.node )
   ( ^destination-area 
           ^distance 1
           ^via-node )
-->
#   (write (crlf) |Determine Threat-door abandoned last-area, path: |  |, distance: 1| )
   ( ^operator  +, >, = 90)
   ( ^name determine-threat-door
        ^path )
}


sp {defend*compare*determine-threat-door*distance
   (state  ^operator  +
                         +)
   ( ^name determine-threat-door
         ^path.distance )
   ( ^name determine-threat-door
        -^path.distance <= )
-->
   ( ^operator  > )
}
sp {defend*compare*determine-threat-door*determine-retreat-door
   (state  ^operator  +
                         +)
   ( ^name determine-threat-door)
   ( ^name determine-retreat-door)
-->
   ( ^operator  > )
}


sp {apply*determine-threat-door
   (state  ^operator 
              ^top-state.map.current-area )
   ( ^name determine-threat-door
        ^path )
   ( ^distance 
           ^via-node )
-->
#   (write (crlf) |Threat Door: | )
   ( ^threat-door )
   ( ^distance 
           ^node )
}