#include common.bhv <inits>
initialize AGGRESSIVE = false
initialize RECOVER    = false
initialize ACTION     = $(START_ACTION)

#include common.bhv <modes>
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     = CONTROLLED {
  MODE       = ACTIVE
  ACTION     = CONTROL
}

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

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


#include common.bhv <bhvs>

//----------------------------------------------
Behavior = BHV_AvoidCollision
{
   // General Behavior Parameters
   // ---------------------------
   name       = avdcollision_
   pwt        = 300
   condition  = ((MODE == UNTAGGED) or (MODE == TAGGED)) 
   condition  = (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 
           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 = $(CFXT)  // Other guy's flag location
}

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

  condition  = (MODE == UNTAGGED)
  condition  = (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 = $(CFXT) // Other Guy's flag location
}

//----------------------------------------------
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 = $(CFT)
}

//----------------------------------------------
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 
  center_assign = $(CF)
}

//----------------------------------------------
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
  runflag   = BOT_DIALOG_STATUS=protect

//  center_activate  = true
     station_pt = $(CMT) 
   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
}

#ifdef RLA_ENABLED yes
//----------------------------------------------
Behavior = BHV_RLAgent
{
  name = rlagent_attacker
  pwt  = 50
  perpetual = true
	
  condition = (MODE == CONTROLLED)
  condition = (TAGGED == false)
  runflag   = BOT_DIALOG_STATUS=Controlled
}
#endif