initialize DEPLOY     = false
initialize RETURN     = false
initialize ACTION     = $(START_ACTION)
initialize TAGGED     = false
initialize AGGRESSIVE = false
initialize RECOVER    = false

set MODE     = ACTIVE {
  DEPLOY     = true
} INACTIVE

set MODE     = ATTACKING_EASY {
  MODE       = ACTIVE
  ACTION     = ATTACK_E
}

set MODE     = ATTACKING_MEDIUM {
  MODE       = ACTIVE
  ACTION     = ATTACK_MED
}

set MODE     = DEFENDING_EASY {
  MODE       = ACTIVE
  ACTION     = DEFEND_E
}

set MODE     = DEFENDING_MEDIUM {
  MODE       = ACTIVE
  ACTION     = DEFEND_MED
}

set MODE     = TAGGED {
  MODE       = ACTIVE:ATTACKING_EASY
  TAGGED     = true
} UNTAGGED

set MODE     = TAGGED {
  MODE       = ACTIVE:ATTACKING_MEDIUM
  TAGGED     = true
} UNTAGGED

set MODE     = TAGGED {
  MODE       = ACTIVE:DEFENDING_EASY
  TAGGED     = true
} UNTAGGED

set MODE     = TAGGED {
  MODE       = ACTIVE:DEFENDING_MEDIUM
  TAGGED     = true
} UNTAGGED


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

             polygon = pts={$(CORNER_1):$(CORNER_2) :$(CORNER_3) :$(CORNER_4)}
        trigger_entry_time = 1
        trigger_exit_time  = 1
}


Behavior = BHV_AvoidCollision
{
   // General Behavior Parameters
   // ---------------------------
   name         = avdcollision_
   pwt          = 300
   condition = ((MODE == UNTAGGED) or (MODE == TAGGED)) and (MODE == ATTACKING_MEDIUM)
   updates      = CONTACT_INFO
   endflag = CONTACT_RESOLVED = $[CONTACT]
   templating   = spawn


   // General Contact Behavior Parameters
   // -----------------------------------
       bearing_lines = white:0, green:0.65, yellow:0.8, red:1.0   // example

             contact = optional_vehicle_name
               decay = 15,30
         extrapolate = true
    on_no_contact_ok = true


   // Parameters specific to this behavior
   // ------------------------------------
      completed_dist = 25
   max_util_cpa_dist = 20
   min_util_cpa_dist = 10
           pwt_grade = linear
      pwt_inner_dist = 10
      pwt_outer_dist = 20
 }


//#############################################################################
Behavior = BHV_Waypoint
{
  name                    = waypt_grab_easy
  pwt                     = 50
  perpetual               = true

  condition               = (MODE == UNTAGGED) and (MODE == ATTACKING_EASY)
  runflag                 = BOT_DIALOG_STATUS=Attacking
  endflag                 = FLAG_GRAB_REQUEST=vname=$(RNAME)
  endflag                 = TAGGED=true

  speed                   = 5 // meters per second
  capture_line            = false
  capture_radius          = 7.0
  slip_radius             = 5.0

  points                  = $(GRAB_POS)
}

//#############################################################################
Behavior = BHV_Waypoint
{
  name                    = waypt_grab_medium
  pwt                     = 50
  perpetual               = true

  condition               = (MODE == UNTAGGED) and (MODE == ATTACKING_MEDIUM)
  runflag                 = BOT_DIALOG_STATUS=Attacking
  endflag                 = FLAG_GRAB_REQUEST=vname=$(RNAME)
  endflag                 = TAGGED=true

  speed                   = 5 // meters per second
  capture_line            = false
  capture_radius          = 7.0
  slip_radius             = 5.0

  points                  = $(GRAB_POS)
}


//#############################################################################
Behavior = BHV_Waypoint
{
  name                    = waypt_untag
  pwt                     = 50
  perpetual               = true

  condition               = MODE == TAGGED
  runflag                 = BOT_DIALOG_STATUS=Returning to home flag
  endflag                 = TAGGED=false
  endflag		  = UPDATE_WPT=currix=100
  endflag		  = UPDATE_WPT=currix=0

  speed                   = 5 // meters per second
  capture_line            = false
  capture_radius          = 10.0
  slip_radius             = 10.0

  points                  = $(UNTAG_POS)
}

//#############################################################################
Behavior = BHV_Loiter
{
  name                    = loiter_passive
  pwt                     = 100
  condition               = MODE==DEFENDING_EASY
  runflag                 = BOT_DIALOG_STATUS=Defending
  updates                 = LOITER_UPDATES

  speed                   = 5

  polygon                 = radial:: x=0,y=0,radius=10,pts=8 // example
  center_assign           = $(UNTAG_POS)
}

//#############################################################################
//Behavior = BHV_Defense_Multi
{
  name                    = protect
  pwt                     = 100
  condition               = MODE==DEFENDING_MEDIUM
  runflag                 = BOT_DIALOG_STATUS=Protecting

  flag                    = $(UNTAG_POS)
  enemy_flag       	  = $(GRAB_POS)
  team	 		  = $(VTEAM)
  self	 		  = $(RNAME)
  teammate		  = $(HERON_TEAMMATE)

  speed                   = 2  //default
  distance_from_flag      = 20 //default

}

//#############################################################################
Behavior = BHV_CutRange
{
  name                    = cutrange_aggressive_
  pwt                     = 100
  activeflag                 = BOT_DIALOG_STATUS=Intercepting
//  activeflag                = AGGRESSIVE=true

  condition               = MODE == DEFENDING_MEDIUM
  condition               = AGGRESSIVE==TRUE
  updates                 = CR_INTERCEPT_UPDATES
//  templating              = spawn
//  inactiveflag                  = AGGRESSIVE=false
//  endflag                   = STATION=true
//  endflag                   = AGGRESSIVE=false
  contact                 = blue_one
  decay                   = 15,30
  extrapolate             = false
  on_no_contact_ok        = true
  time_on_leg             = 60

  giveup_dist             = 50 //30
  patience                = 50
  pwt_inner_dist          = 0
  pwt_outer_dist          = 50 //20
}


//#############################################################################
Behavior = BHV_StationKeep
{
  name                    = aggressive_station_keep
  pwt                     = 100
  condition               = MODE==DEFENDING_MEDIUM
  condition               = AGGRESSIVE==FALSE
  runflag                 = BOT_DIALOG_STATUS=protect

//  center_activate         = true
  station_pt              = $(STATION_KEEP_AGGRESSIVE) //example points
  hibernation_radius      = 5
  inner_radius            = 4
  outer_radius            = 15
  outer_speed             = 5
  transit_speed           = 5
  swing_time              = 3

  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
}