//---------------------------------------------------
// Helm Behavior file 

initialize   DEPLOY        = true
initialize   RETURN        = false
initialize   STATION       = false
initialize   LOITER        = true
initialize   AT_HOME       = true
initialize   REFUEL_NEEDED = false   // ADDED


//  Hierachical Mode Declarations:
//  ModeSet Hierarchy: 
//  ---------------------------------------------- 
//   Mode-Variable=MODE
//   ACTIVE
//       STATION-KEEPING
//       RETURNING
//       LOITERING
//       REFUELING
//   INACTIVE

set MODE = ACTIVE {
  DEPLOY = true
} INACTIVE

set MODE = STATION-KEEPING {
  MODE = ACTIVE
  STATION = true
}                       

set MODE = RETURNING {
  MODE = ACTIVE
  AT_HOME != true                          
  (RETURN = true) or (REFUEL_NEEDED = true)
} 

set MODE = LOITERING {
  MODE = ACTIVE
  LOITER = true
  REFUEL_NEEDED != true
} 

set MODE = REFUELING {
  MODE = ACTIVE
  AT_HOME = true
  REFUEL_NEEDED = true
  RETURN = false
} 

//----------------------------------------------
Behavior = BHV_Timer
{
  name            = refuel
  condition       = MODE == REFUELING
  duration        = 60
  duration_status = TIMER_REFUEL
  perpetual       = true 
  endflag         = REFUEL_NEEDED = false  
}

//----------------------------------------------
Behavior = BHV_Loiter
{
  name                = loiter
  pwt                 = 100
  condition           = MODE==LOITERING
  updates             = UP_LOITER
  runflag             = AT_HOME = false 
  duration            = 600
  duration_idle_decay = false
  perpetual           = true
  endflag             = REFUEL_NEEDED = true

         speed = 1.3
     clockwise = false
        radius = 8.0
     nm_radius = 15.0
       polygon = radial:: $(LOITER_POS), radius=20, pts=8, snap=1, label=$(VNAME)_LOITER
  visual_hints = nextpt_color=white, nextpt_lcolor=khaki
  visual_hints = edge_color=orange, vertex_color=white
  visual_hints = edge_size=1, vertex_size=2
}


//----------------------------------------------
Behavior = BHV_Waypoint
{
  name      = waypt_return
  pwt       = 100
  updates   = RETURN_UPDATES
  condition = MODE==RETURNING
  endflag   = AT_HOME = true     // changed
  endflag   = RETURN = false

      speed = 1.3
     radius = 3.0
  nm_radius = 15.0
     points = $(START_POS)
     repeat = 10
       lead = 8
}

//----------------------------------------------
Behavior = BHV_StationKeep
{
  name      = station-keep
  pwt       = 100
  condition = MODE==STATION-KEEPING

     center_activate = true
        inner_radius = 5
        outer_radius = 10 
         outer_speed = 1.0

       transit_speed = 1.3
          swing_time = 7
        visual_hints = vertex_size=0, edge_size=1, edge_color=light_blue
}