; objectdef CombatHelper ; { ; variable collection:CastStackAbility CastStack ; variable queue:CastStackAbility PrirortyAbilityQueue ; method Initialize(jsonvalueref jsonCastStackConfig) ; { ; CastStack:FromJSON[jsonCastStackConfig] ; } ; member:CastStackAbility CastNextAbility() ; { ; if ${PriorityAbilityQueue.Peek(exists)} ; { ; } ; } ; } objectdef BotController { variable bool IsBotRunning = FALSE variable bool IsShowingSettings = FALSE member:string StartButtonText() { if ${IsBotRunning} { return "Stop" } else { return "Start" } } member:string SettingsButtonText() { if ${IsShowingSettings} { return "Hide Settings" } else { return "Show Settings" } } ; member:string GetSettingsCheckBoxes() ; { ; variable jsonvalue checkboxes = "[]" ; variable jsoniterator settingKeysIterator ; setttingKeys:GetIterator[settingsKeyIterator] ; if ${settingKeysIterator:First(exists)} ; { ; echo "items" ; do ; { ; echo "looping" ; checkboxes:Add[$$> ; { ; "type": "checkbox", ; "name": "${settingKeysIterator.Value.key}", ; "content": "${settingKeysIterator.display_name}" ; } ; <$$] ; } ; while ${settingKeysIterator:Next(exists)} ; } ; echo "here ${checkboxes.AsJSON~}" ; return ${checkboxes.AsJSON~} ; } method Initialize() { LGUI2:LoadPackageFile["bot.json"] } method Shutdown() { LGUI2:UnloadPackageFile["bot.json"] } method OnClose() { Script:End } method OnCloseSettings() { IsShowingSettings:Set[FALSE] LGUI2.Element[mr.bot.settings]:SetVisibility[Hidden] } method ToggleBot() { IsBotRunning:Set[${IsBotRunning.Not}] } method ToggleSettings() { if ${IsShowingSettings} { LGUI2.Element[mr.bot.settings]:SetVisibility[Hidden] } else { LGUI2.Element["mr.bot.settings"]:SetVisibility[Visible] } IsShowingSettings:Set[${IsShowingSettings.Not}] } method Pulse() { ; if ${IsBotRunning.Not} ; { ; return ; } ; echo "Test: ${settings.IsSettingChecked["test"]}" ; if ${Me.InCombat} ; { ; variable jsoniterator CastStackIterator ; settings.CastStack:GetIterator[CastStackIterator] ; if ${CastStackIterator:First(exists)} ; { ; do ; { ; if ${CastStackIterator.Value.Get["AbilityType"].Equal["Heal"]} && ${Me.Health} < ${CastStackIterator.Value.Get["Percentage"]} ; { ; echo "Casting Heal ${CastStackIterator.Value.Name}" ; return ; } ; elseif ${CastStackIterator.Value.Get["AbilityType"].Equal["Combat"]} && !${AbilityUsed.Element[${CastStackIterator.Value.Get["Name"]}]} ; { ; AbilityUsed:Set[${CastStackIterator.Value.Get["Name"]}, TRUE] ; echo "using Combat ${CastStackIterator.Value.Get["Name"]}" ; return ; } ; elseif ${CastStackIterator.Value.Get["AbilityType"].Equal["CA"]} && !${AbilityUsed.Element[${CastStackIterator.Value.Get["Name"]}]} ; { ; AbilityUsed:Set[${CastStackIterator.Value.Get["Name"]}, TRUE] ; echo "using CA ${CastStackIterator.Value.Get["Name"]}" ; return ; } ; else ; { ; } ; } ; while ${CastStackIterator:Next(exists)} ; } ; } } } #include "settings_controller.iss" variable(global) BotController MRBotController variable(global) SettingsController MRSettingsController function main() { while 1 { MRBotController:Pulse wait 5 } }