Erebos
March 7, 2021, 6:30pm
1
Hello everybody,
I’ve been using the botengine script for anomaly ratting. Currently sitting in a Gila, problem is that the Rockets and the Drones are attacking different targets which kills the ticks of bounties, is there a newer version of it which I missed which does this?
thanks in advance!
Mohano
(Samuel Pagé)
April 7, 2021, 1:42am
2
I use this in my droneManagement function
activeTargetAssignedIconsDoNotContainDrones =
case readingFromGameClient.targets |> List.filter .isActiveTarget |> List.head of
Nothing ->
False
Just activeTarget ->
activeTarget.assignedIcons
|> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "Sprite")
|> List.filter (.uiNode >> EveOnline.ParseUserInterface.getHintTextFromDictEntries >> Maybe.map (String.toLower >> String.contains "drone") >> Maybe.withDefault False)
|> List.isEmpty
Essentially, if my active target do not have the drone icons underneath it will re-order the drones to attack it. I think it is important to keep drone on passive once you develop a proper drone management function. It keeps them where they are supposed to be at all time.
launchAndEngageGroupNameDrones : ReadingFromGameClient -> BotDecisionContext -> String -> Maybe DecisionPathNode
launchAndEngageGroupNameDrones readingFromGameClient context groupName =
readingFromGameClient.dronesWindow
|> Maybe.andThen
(\dronesWindow ->
case ( dronesWindow.droneGroupInBay, dronesWindow.droneGroupInLocalSpace ) of
( Just droneGroupInBay, Just droneGroupInLocalSpace ) ->
let
idlingDrones =
droneGroupInLocalSpace.drones
|> List.filter (.uiNode >> .uiNode >> EveOnline.ParseUserInterface.getAllContainedDisplayTexts >> List.any (String.toLower >> String.contains "idle"))
dronesInBayQuantity =
droneGroupInBay.header.quantityFromTitle |> Maybe.withDefault 0
dronesInLocalSpaceQuantity =
droneGroupInLocalSpace.header.quantityFromTitle |> Maybe.withDefault 0
droneGroupExpectedDisplayText =
groupName
activeTargetAssignedIconsDoNotContainDrones =
case readingFromGameClient.targets |> List.filter .isActiveTarget |> List.head of
Nothing ->
False
Just activeTarget ->
activeTarget.assignedIcons
|> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "Sprite")
|> List.filter (.uiNode >> EveOnline.ParseUserInterface.getHintTextFromDictEntries >> Maybe.map (String.toLower >> String.contains "drone") >> Maybe.withDefault False)
|> List.isEmpty
in
if (context.readingFromGameClient.targets |> List.length) == 0 then
returnDronesToBay context context.readingFromGameClient
else if (1 < (idlingDrones |> List.length) || (dronesInLocalSpaceQuantity > 0 && activeTargetAssignedIconsDoNotContainDrones)) && (context |> distanceFromLockedTarget) < context.eventContext.appSettings.distanceToEngageRatsWithDrones then
Just
(endDecisionPath
(actWithoutFurtherReadings
( "Engaging " ++ groupName ++ " drones."
, [ EffectOnWindow.KeyDown EffectOnWindow.vkey_F
, EffectOnWindow.KeyUp EffectOnWindow.vkey_F
]
)
)
)
else
example
1 Like