initialize DEPLOY    = false
initialize RETURN    = false
initialize ACTION    = defend
initialize TAGGED    = false
initialize INTRUDER  = false
initialize HAS_FLAG  = false
initialize GO_GRAB   = false
initialize RECOVER   = false

	// ACTION = {attack, defend}
	//
	//  ROOT
	//	   - INACTIVE
	//	   - ACTIVE
	//	      - STATION-KEEPING
	//	      - RETURN-PAVLAB
  //
	//	      - ATTACKING
	//	        - TAGGED
	//          - GO-GRAB
	//          - GRAB-RETURN
	//        - DEFENDING
	//          - LOITERING
	//          - INTERCEPTING
	

set MODE = ACTIVE {
  DEPLOY = true
} INACTIVE

set MODE = RECOVERING {
	MODE = ACTIVE
  RECOVER = true
}
	
set MODE = STATION-KEEPING {
  MODE = ACTIVE
  STATION_KEEP = true
}


set MODE = RETURN-PAVLAB {
  MODE = ACTIVE
  RETURN = true
} 

// ATTACKING MODES
set MODE = ATTACKING {
  MODE = ACTIVE
  ACTION = attack
}

set MODE = TAGGED {
  MODE = ACTIVE:ATTACKING
  TAGGED = true
} 

set MODE = GO-GRAB {
  MODE = ACTIVE:ATTACKING
	HAS_FLAG = false
	GO_GRAB  = true
} GRAB-RETURN

// DEFENDING MODES
set MODE = DEFENDING {
    MODE = ACTIVE
	ACTION = defend
}

set MODE = LOITERING {
    MODE = ACTIVE:DEFENDING
	INTRUDER = false
} INTERCEPT


//----------------------------------------------
//Behavior = BHV_OpRegionRecover
{
  name         = recover
  pwt          = 300
  updates      = RECOVER_UPDATES
  activeflag   = RECOVER = true
  inactiveflag = RECOVER = false

             polygon = pts={-85,-48 : 59.37,20.97 : 93.86,-51.22 : -50.51, -120.19}
	trigger_entry_time = 1
	trigger_exit_time  = 1
}

//----------------------------------------------
Behavior = BHV_AvdColregsV19
{
  name       = colavd_one_
  pwt        = 300
  updates    = CONTACT_INFO_ONE
  condition  = MODE == ACTIVE
  condition  = MODE != ACTIVE:RECOVERING
  templating = spawn
  endflag    = CONTACT_RESOLVED = $[CONTACT]

               contact = name_provided_upon_spawn
                 decay = 15,30
      on_no_contact_ok = true
           extrapolate = true
//  ignore_contact_group = $(VTEAM)
	
     completed_dist = 25

  max_util_cpa_dist = 6
  min_util_cpa_dist = 2
     pwt_inner_dist = 8
     pwt_outer_dist = 15

//  max_util_cpa_dist = 85
//  min_util_cpa_dist = 55
//     pwt_inner_dist = 10
//     pwt_outer_dist = 200
}

//----------------------------------------------
Behavior = BHV_StationKeep
{
  name      = station_keep
  pwt       = 100
  condition = MODE==STATION-KEEPING // example

     center_activate = true
  hibernation_radius = 5
        inner_radius = 4
        outer_radius = 15
         outer_speed = 5
       transit_speed = 5
		      swing_time = 4
	
        visual_hints = vertex_size = 1     // default
        visual_hints = edge_color = light_blue // default
        visual_hints = edge_size = 1       // default
        visual_hints = label_color = white // default
        visual_hints = vertex_color = red  // default
}

//----------------------------------------------
Behavior = BHV_Waypoint
{
  name      = waypt_return_base
  pwt       = 100
  condition = MODE == RETURN-PAVLAB
  endflag   = STATION_KEEP = true

	crs_spd_zaic_ratio = 20
               speed = 2
              radius = 3.0
         slip_radius = 15.0
               point = 55,50
              repeat = 10
                lead = 8
}

//----------------------------------------------
Behavior = BHV_Waypoint
{
  name      = waypt_return_grab
  pwt       = 100
  condition = MODE == GRAB-RETURN
  endflag   = GO_GRAB = true

        speed = 2
       radius = 3.0
  slip_radius = 15.0
       points = $(RETURN_POS)
       repeat = 10
         lead = 8
}

//----------------------------------------------
Behavior = BHV_Waypoint
{
  name      = waypt_grab
  pwt       = 50
  perpetual = true
  condition = MODE == GO-GRAB
  endflag   = FLAG_GRAB_REQUEST=vname=$(VNAME)
	endflag   = GO_GRAB = false

	
	
           speed = 2 // meters per second
    capture_line = false
  capture_radius = 5.0
     slip_radius = 10.0
          points = $(GRAB_POS)
//          points = 0,20
}

//----------------------------------------------
Behavior = BHV_Waypoint
{
  name      = waypt_untag
  pwt       = 50
  perpetual = true
  condition = MODE == TAGGED

           speed = 2 // meters per second
    capture_line = false
  capture_radius = 5.0
     slip_radius = 5.0
          points = $(UNTAG_POS)
}

//----------------------------------------------
Behavior = BHV_Loiter
{
  name      = loiter_defend
  pwt       = 100
  condition = MODE==LOITERING
  updates   = LOITER_UPDATES

          speed = 1.4
        polygon = format=ellipse, x=0, y=0, degs=115, major=50, minor=10, pts=16
  center_assign = $(DEFEND_POS)
      clockwise = $(LCLOCK)
	acquire_dist = 5
     patience = 80
	
   visual_hints = edge_color=gray50, vertex_size=0
   visual_hints = nextpt_size=1
	}

//----------------------------------------------
Behavior = BHV_CutRange
{
  name       = cutrange_
  pwt        = 100
  condition  = MODE == INTERCEPT
  updates    = CR_INTERCEPT_UPDATES
  templating = spawn

           contact = v
             decay = 15,30  
       extrapolate = true
  on_no_contact_ok = true
       time_on_leg = 60

       giveup_dist = 0
          patience = 50
    pwt_inner_dist = 12
    pwt_outer_dist = 20
}