Initial checkin
This commit is contained in:
parent
5409d97e81
commit
cc3fc1da09
158
bot/MRBotSettings.iss
Normal file
158
bot/MRBotSettings.iss
Normal file
@ -0,0 +1,158 @@
|
||||
objectdef CastStackAbility
|
||||
{
|
||||
variable string Name
|
||||
variable string AbilityTarget
|
||||
variable string AbilityType
|
||||
variable int Percentage
|
||||
variable string Tag
|
||||
|
||||
method Initialize(jsonvalueref jo)
|
||||
{
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
Name:Set["${jo.Get[Name]~}"]
|
||||
AbilityTarget:Set["${jo.Get[AbilityTarget]~}"]
|
||||
AbilityType:Set["${jo.Get[AbilityType]~}"]
|
||||
Percentage:Set[${jo.Get[Percentage]~}]
|
||||
; Tag:Set["${jo.Get[Tag]~}"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
jo:SetString[Name, "${Name~}"]
|
||||
jo:SetString[AbilityTarget, "${AbilityTarget~}"]
|
||||
jo:SetString[AbilityType, "${AbilityType~}"]
|
||||
jo:SetString[Percentage, ${Percentage~}]
|
||||
jo:SetString[Tag, "${Tag~}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef CastStackContainer
|
||||
{
|
||||
variable index:CastStackAbility Abilities
|
||||
|
||||
method AddAbilityFromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
Abilities:Insert[jo]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="[]"
|
||||
variable iterator abilityIterator
|
||||
Abilities:GetIterator[abilityIterator]
|
||||
|
||||
if ${abilityIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
|
||||
jo:Add["${abilityIterator.Value.AsJSON~}"]
|
||||
}
|
||||
while ${abilityIterator:Next(exists)}
|
||||
}
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef Profile
|
||||
{
|
||||
variable string Name
|
||||
variable jsonvalue Settings = "{}"
|
||||
variable jsonvalue Setup
|
||||
variable jsonvalue Aliases
|
||||
variable CastStackContainer CastStack
|
||||
|
||||
method Initialize(jsonvalueref jo)
|
||||
{
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
member:bool GetSettingValue(string key)
|
||||
{
|
||||
echo "Profile.GetSettingValue[${key}]"
|
||||
return ${This.Settings.Get["${key}"]}
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
Name:Set["${jo.Get["Name"]~}"]
|
||||
Settings:SetValue["${jo.Get["Settings"]~}"]
|
||||
Setup:SetValue["${jo.Get["Setup"]~}"]
|
||||
Aliases:SetValue["${jo.Get["Aliases"]~}"]
|
||||
jo.Get["CastStack"]:ForEach["CastStack:AddAbilityFromJSON[ForEach.Value]"]
|
||||
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
jo:Set["Name", "${This.Name.AsJSON~}"]
|
||||
jo:Set["Settings", "${Settings.AsJSON~}"]
|
||||
jo:Set["Setup", "${Setup.AsJSON~}"]
|
||||
jo:Set["Aliases", "${Aliases.AsJSON~}"]
|
||||
jo:Set["CastStack", "${CastStack.AsJSON~}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef BotSettings
|
||||
{
|
||||
variable string DefaultProfile
|
||||
variable collection:Profile Profiles
|
||||
|
||||
method FromFile(string filename)
|
||||
{
|
||||
variable jsonvalue settingsJson
|
||||
variable BotSettings settings
|
||||
settingsJson:ParseFile["${filename}"]
|
||||
|
||||
This:FromJSON[settingsJson]
|
||||
}
|
||||
|
||||
member:bool IsSettingChecked(string key)
|
||||
{
|
||||
echo "BotSettings.IsSettingChecked[${key}]"
|
||||
return ${This.CurrentProfile.GetSettingValue["${key}"].Equal[TRUE]}
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
DefaultProfile:Set[${jo.Get["DefaultProfile"]}]
|
||||
variable jsoniterator profileIterator
|
||||
jo.Get["Profiles"]:GetIterator[profileIterator]
|
||||
if ${profileIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
Profiles:Set[${profileIterator.Key}, profileIterator.Value]
|
||||
}
|
||||
while ${profileIterator:Next(exists)}
|
||||
}
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
jo:Set[DefaultProfile, "${DefaultProfile.AsJSON~}"]
|
||||
jo:Set[Profiles, "${Profiles.AsJSON~}"]
|
||||
return jo
|
||||
}
|
||||
|
||||
member:weakref CurrentProfile()
|
||||
{
|
||||
return Profiles.Element["${This.DefaultProfile}"]
|
||||
}
|
||||
}
|
||||
17557
bot/ability_exports/Ihaihu_shadowknight.json
Normal file
17557
bot/ability_exports/Ihaihu_shadowknight.json
Normal file
File diff suppressed because it is too large
Load Diff
178
bot/bot.iss
Normal file
178
bot/bot.iss
Normal file
@ -0,0 +1,178 @@
|
||||
|
||||
|
||||
; 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
|
||||
}
|
||||
}
|
||||
141
bot/bot.json
Normal file
141
bot/bot.json
Normal file
@ -0,0 +1,141 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"includes": ["cast_stack.json"],
|
||||
"skin": {
|
||||
"name": "MRSkin",
|
||||
"brushes": {
|
||||
"window.titleBar.backgroundBrush": {
|
||||
"color": "#211C18"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"window.title": {
|
||||
"verticalAlignment": "center",
|
||||
"margin": [2, 0, 0, 0]
|
||||
},
|
||||
"button": {
|
||||
"jsonTemplate": "default:button",
|
||||
"margin": [2, 2, 2, 2],
|
||||
"color": "#f4f3ee"
|
||||
},
|
||||
"checkbox": {
|
||||
"jsonTemplate": "default:checkbox",
|
||||
"margin": [2, 2, 2, 2]
|
||||
},
|
||||
"window": {
|
||||
"jsonTemplate": "default:window",
|
||||
"backgroundBrush": {
|
||||
"color": "#463f3a"
|
||||
},
|
||||
"color": "#f4f3ee",
|
||||
"font": {
|
||||
"face": "Segoe UI",
|
||||
"height": 16
|
||||
}
|
||||
},
|
||||
"listbox.contentContainerFitWidth": {
|
||||
"jsonTemplate": "listbox.contentContainer",
|
||||
"horizontalScroll": "fit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"type": "window",
|
||||
"skin": "MRSkin",
|
||||
"title": "MR Bot",
|
||||
"name": "mr.bot.miniwindow",
|
||||
"borderThickness": 2,
|
||||
"hideOnClose": false,
|
||||
"minSize": {
|
||||
"width": 100,
|
||||
"height": 50
|
||||
},
|
||||
"maxSize": {
|
||||
"width": 150,
|
||||
"height": 125
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onCloseButtonClick": ["method", "MRBotController", "OnClose"]
|
||||
},
|
||||
"content": {
|
||||
"type": "stackpanel",
|
||||
"uniform": true,
|
||||
"heightFactor": 1,
|
||||
"children": [
|
||||
{
|
||||
"type": "button",
|
||||
"content": "${MRBotController.StartButtonText}",
|
||||
"horizontalAlignment": "stretch",
|
||||
"eventHandlers": {
|
||||
"onRelease": ["method", "MRBotController", "ToggleBot"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"content": "${MRBotController.SettingsButtonText}",
|
||||
"horizontalAlignment": "stretch",
|
||||
"eventHandlers": {
|
||||
"onRelease": ["method", "MRBotController", "ToggleSettings"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "window",
|
||||
"skin": "MRSkin",
|
||||
"title": "MR Bot Settings",
|
||||
"name": "mr.bot.settings",
|
||||
"borderThickness": 2,
|
||||
"hideOnClose": true,
|
||||
"visibility": "hidden",
|
||||
"minSize": {
|
||||
"width": 450,
|
||||
"height": 200
|
||||
},
|
||||
"maxSize": {
|
||||
"height": 600,
|
||||
"width": 800
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onCloseButtonClick": ["method", "MRBotController", "OnCloseSettings"]
|
||||
},
|
||||
"content": {
|
||||
"type": "tabcontrol",
|
||||
"heightFactor": 1,
|
||||
"horizontalAlignment": "stretch",
|
||||
"verticalAlignment": "stretch",
|
||||
"tabs": [
|
||||
{
|
||||
"type": "tab",
|
||||
"header": "Cast Stack",
|
||||
"name": "mr.bot.settings.castStack",
|
||||
"content": {
|
||||
"jsonTemplate": "settings.castStack",
|
||||
"type": "stackpanel"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tab",
|
||||
"header": "General",
|
||||
"content": {
|
||||
"type": "dockpanel",
|
||||
"_dock": "top",
|
||||
"padding": 2,
|
||||
"horizontalAlignment": "stretch",
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "General Settings",
|
||||
"horizontalAlignment": "center",
|
||||
"verticalAlignment": "center"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
595
bot/cast_stack.json
Normal file
595
bot/cast_stack.json
Normal file
@ -0,0 +1,595 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"skin": "MRSkin",
|
||||
"templates": {
|
||||
"settings.abilityListEntry": {
|
||||
"jsonTemplate": "listboxitem",
|
||||
"padding": 2,
|
||||
"content": {
|
||||
"type": "stackpanel",
|
||||
"orientation": "vertical",
|
||||
"-contentContainer": {
|
||||
"jsonTemplate": "listbox.contentContainerFitWidth"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"horizontalAlignment": "stretch",
|
||||
"textBinding": {
|
||||
"pullFormat": "${_CONTEXTITEMDATA_.Get[Name]}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"settings.castStack": {
|
||||
"orientation": "vertical",
|
||||
|
||||
"children": [
|
||||
{
|
||||
"type": "panel",
|
||||
"visibility": "hidden",
|
||||
"name": "MRSettingsController.events"
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"heightFactor": 0.9,
|
||||
"widthFactor": 1,
|
||||
"horizontalAlignment": "left",
|
||||
"children": [
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "vertical",
|
||||
"widthFactor": 0.3,
|
||||
"margin": [0, 0, 5, 0],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Ability List",
|
||||
"widthFactor": 1,
|
||||
"horizontalAlignment": "left"
|
||||
},
|
||||
{
|
||||
"type": "listbox",
|
||||
"name": "abilityList",
|
||||
"heightFactor": 0.9,
|
||||
"itemsBinding": {
|
||||
"pullFormat": "${MRSettingsController.abilityListItems}",
|
||||
"pullOnce": true
|
||||
},
|
||||
"itemViewGenerators": {
|
||||
"default": {
|
||||
"type": "template",
|
||||
"template": "settings.abilityListEntry"
|
||||
}
|
||||
},
|
||||
"selectedItemBinding": {
|
||||
"pullFormat": "${MRSettingsController.currentSelectedAvailableAbilityIndex}",
|
||||
"pushFormat": [
|
||||
"MRSettingsController:SetCurrentAbility[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
"-contentContainer": {
|
||||
"jsonTemplate": "listbox.contentContainerFitWidth"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"name": "castStack.addAbility",
|
||||
"content": "Add Ability",
|
||||
"horizontalAlignment": "stretch",
|
||||
"eventHandlers": {
|
||||
"onRelease": [
|
||||
"method",
|
||||
"MRSettingsController",
|
||||
"AddAbility"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "vertical",
|
||||
"widthFactor": 0.3,
|
||||
"heightFactor": 1,
|
||||
"verticalAlignment": "top",
|
||||
"margin": [0, 0, 5, 0],
|
||||
"padding": [0, 16, 0, 0],
|
||||
"children": [
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Type",
|
||||
"width": 60
|
||||
},
|
||||
{
|
||||
"type": "combobox",
|
||||
"name": "castStack.ability.type",
|
||||
"horizontalAlignment": "stretch",
|
||||
"items": [
|
||||
"Combat",
|
||||
"CA",
|
||||
"NamedCA",
|
||||
"Heal",
|
||||
"PowerHeal",
|
||||
"Debuff",
|
||||
"NamedDebuff",
|
||||
"NonCombatBuff",
|
||||
"Cure",
|
||||
"Buff"
|
||||
],
|
||||
"selectedItemBinding": {
|
||||
"pullFormat": "${MRSettingsController.newCastStackItem.Get[type]}",
|
||||
"autoPull": false,
|
||||
"pullHook": {
|
||||
"elementName": "MRSettingsController.events",
|
||||
"flags": "global",
|
||||
"event": "onNewCastStackItemChanged"
|
||||
}
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onSelectionChanged": {
|
||||
"type": "method",
|
||||
"object": "MRSettingsController",
|
||||
"method": "OnCastStackAbilityComboChange"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Target",
|
||||
"width": 60
|
||||
},
|
||||
{
|
||||
"type": "combobox",
|
||||
"name": "castStack.ability.target",
|
||||
"horizontalAlignment": "stretch",
|
||||
"itemsBinding": {
|
||||
"pullFormat": "${MRSettingsController.GetTargetOptions}",
|
||||
"pullOnce": true
|
||||
},
|
||||
"selectedItemBinding": {
|
||||
"pullFormat": "${MRSettingsController.newCastStackItem.Get[target]}",
|
||||
"autoPull": false,
|
||||
"pullHook": {
|
||||
"elementName": "MRSettingsController.events",
|
||||
"flags": "global",
|
||||
"event": "onNewCastStackItemChanged"
|
||||
}
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onSelectionChanged": {
|
||||
"type": "method",
|
||||
"object": "MRSettingsController",
|
||||
"method": "OnCastStackAbilityComboChange"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "# targets",
|
||||
"width": 60
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.targetCount",
|
||||
"horizontalAlignment": "stretch",
|
||||
"textBinding": {
|
||||
"pullFormat": "${MRSettingsController.SafeGetNewCastStackItemProperty[targetCount]}",
|
||||
"autoPull": false,
|
||||
"pullHook": {
|
||||
"elementName": "MRSettingsController.events",
|
||||
"flags": "global",
|
||||
"event": "onNewCastStackItemChanged"
|
||||
},
|
||||
"pushFormat": [
|
||||
"MRSettingsController:SafeSetNewCastStackItemProperty[\"targetCount\",\"",
|
||||
"\"]"
|
||||
],
|
||||
"autoPush": false
|
||||
},
|
||||
"hooks": {
|
||||
"onLostFocus": {
|
||||
"flags": "self",
|
||||
"event": "lostKeyboardFocus",
|
||||
"eventHandler": {
|
||||
"type": "forward",
|
||||
"event": "pushTextBinding",
|
||||
"flags": "self"
|
||||
}
|
||||
},
|
||||
"onLostMouseFocus": {
|
||||
"flags": "self",
|
||||
"event": "lostMouseFocus",
|
||||
"eventHandler": {
|
||||
"type": "forward",
|
||||
"event": "pushTextBinding",
|
||||
"flags": "self"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "HP/MP %",
|
||||
"width": 60
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.percent",
|
||||
"horizontalAlignment": "stretch",
|
||||
"textBinding": {
|
||||
"pullFormat": "${MRSettingsController.SafeGetNewCastStackItemProperty[percent]}",
|
||||
"autoPull": false,
|
||||
"pullHook": {
|
||||
"elementName": "MRSettingsController.events",
|
||||
"flags": "global",
|
||||
"event": "onNewCastStackItemChanged"
|
||||
},
|
||||
"pushFormat": [
|
||||
"MRSettingsController:SafeSetNewCastStackItemProperty[\"percent\",\"",
|
||||
"\"]"
|
||||
],
|
||||
"autoPush": false
|
||||
},
|
||||
"hooks": {
|
||||
"onLostFocus": {
|
||||
"flags": "self",
|
||||
"event": "lostKeyboardFocus",
|
||||
"eventHandler": {
|
||||
"type": "forward",
|
||||
"event": "pushTextBinding",
|
||||
"flags": "self"
|
||||
}
|
||||
},
|
||||
"onLostMouseFocus": {
|
||||
"flags": "self",
|
||||
"event": "lostMouseFocus",
|
||||
"eventHandler": {
|
||||
"type": "forward",
|
||||
"event": "pushTextBinding",
|
||||
"flags": "self"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "castStack.ignoreDuration",
|
||||
"content": "Ignore Duration",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [2, 10, 0, 0]
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "castStack.ignoreEncounterNukes",
|
||||
"content": "Ignore Encounter Nukes",
|
||||
"horizontalAlignment": "stretch"
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "castStack.ignoreAENukes",
|
||||
"content": "Ignore AE Nukes",
|
||||
"horizontalAlignment": "stretch"
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "castStack.maxIncrements",
|
||||
"content": "Max Increments",
|
||||
"horizontalAlignment": "stretch"
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "castStack.namedOnly",
|
||||
"content": "Named Only",
|
||||
"horizontalAlignment": "stretch"
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 10, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Fervor",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.fervorRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.fervorRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Dissonance",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.dissonanceRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.dissonanceRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "My HP",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.myHpRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.myHpRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "My Power",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.myPowerRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.myPowerRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "NPC HP",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.npcHpRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.npcHpRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"margin": [0, 0, 0, 5],
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Aggro",
|
||||
"width": 70
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.aggroRangeMin",
|
||||
"width": 30
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "-",
|
||||
"font": {
|
||||
"bold": true,
|
||||
"height": 24
|
||||
},
|
||||
"margin": [5, 0, 0, 0],
|
||||
"width": 10
|
||||
},
|
||||
{
|
||||
"type": "textbox",
|
||||
"name": "castStack.aggroRangeMax",
|
||||
"width": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "vertical",
|
||||
"widthFactor": 1,
|
||||
"heightFactor": 1,
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Cast Order",
|
||||
"widthFactor": 1,
|
||||
"horizontalAlignment": "left"
|
||||
},
|
||||
{
|
||||
"type": "listbox",
|
||||
"name": "castStack.castOrder",
|
||||
"horizontalAlignment": "stretch",
|
||||
"heightFactor": 0.9,
|
||||
"itemsBinding": {
|
||||
"pullFormat": "${MRSettingsController.CastOrder}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"name": "castStack.castOrder.edit",
|
||||
"content": "Edit Entry",
|
||||
"horizontalAlignment": "stretch",
|
||||
"eventHandlers": {
|
||||
"onRelease": ["method", "MRSettingsController", "EditEntry"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"verticalAlignment": "stretch",
|
||||
"horizontalAlignment": "stretch",
|
||||
|
||||
"children": [
|
||||
{
|
||||
"type": "stackpanel",
|
||||
"orientation": "vertical",
|
||||
"verticalAlignment": "stretch",
|
||||
"horizontalAlignment": "left",
|
||||
"children": [
|
||||
{
|
||||
"type": "button",
|
||||
"name": "castStack.loadProfile",
|
||||
"content": "Load Profile",
|
||||
"horizontalAlignment": "left"
|
||||
},
|
||||
{
|
||||
"type": "combobox",
|
||||
"name": "castStack.profileList",
|
||||
"horizontalAlignment": "left",
|
||||
"itemsBinding": {
|
||||
"pullFormat": "${MRSettingsController.ProfileList}",
|
||||
"autoPull": true,
|
||||
"pullHook": {
|
||||
"elementName": "MRSettingsController.events",
|
||||
"flags": "global",
|
||||
"event": "onProfileListChanged"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
278
bot/export_abilities.iss
Normal file
278
bot/export_abilities.iss
Normal file
@ -0,0 +1,278 @@
|
||||
#include "${LavishScript.HomeDirectory}/Scripts/mr/common/StringHelpers.iss"
|
||||
|
||||
variable jsonvalue stealthRequiredEffects = "[ \"I need to be stealthed!\", \"You must be in stealth to use this!\", \"You must be sneaking to use this ability.\"]"
|
||||
variable jsonvalue flankingRequiredEffects = "[ \"Must be flanking or behind\" ]"
|
||||
variable jsonvalue noEpicEffects = "[ \"Does not affect Epic targets\"]"
|
||||
variable jsonvalue interruptEffects = "[ \"Interrupts target\" ]"
|
||||
variable jsonvalue stunEffects = "[ \"Stuns target\" ]"
|
||||
|
||||
function:bool matchesItemInArray(jsonvalueref arr, string val)
|
||||
{
|
||||
|
||||
if !${arr.Type.Equal[array]}
|
||||
{
|
||||
echo "effects is not an array ${arr.Type}"
|
||||
return FALSE
|
||||
}
|
||||
|
||||
|
||||
variable jsoniterator iter
|
||||
arr:GetIterator[iter]
|
||||
|
||||
if ${iter:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if ${val.Equal["${iter.Value}"]}
|
||||
{
|
||||
return TRUE
|
||||
}
|
||||
}
|
||||
while ${iter:Next(exists)}
|
||||
}
|
||||
|
||||
return FALSE
|
||||
}
|
||||
|
||||
function:bool hasMatchingEffect(jsonvalueref effects, jsonvalueref specialEffects)
|
||||
{
|
||||
if !${effects.Type.Equal[array]}
|
||||
{
|
||||
echo "effects is not an array ${effects.Type}"
|
||||
return FALSE
|
||||
}
|
||||
|
||||
variable jsoniterator effectIterator
|
||||
effects:GetIterator[effectIterator]
|
||||
|
||||
if ${effectIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
call matchesItemInArray specialEffects "${effectIterator.Value.Get["description"]}"
|
||||
if ${Return}
|
||||
{
|
||||
return TRUE
|
||||
}
|
||||
}
|
||||
while ${effectIterator:Next(exists)}
|
||||
}
|
||||
|
||||
return FALSE
|
||||
}
|
||||
|
||||
function:jsonvalueref extractDamageFromEffect(jsonvalueref effectJo)
|
||||
{
|
||||
variable string description
|
||||
|
||||
description:Set["${effectJo.Get["description"]}"]
|
||||
|
||||
if ${description.Left[8].NotEqual["Inflicts"]}
|
||||
{
|
||||
return "{}"
|
||||
}
|
||||
|
||||
variable int64 minDamage
|
||||
variable int64 maxDamage
|
||||
variable string damageType
|
||||
|
||||
minDamage:Set["${description.Token[2, " "].Replace[",", ""]}"]
|
||||
if ${description.Token[3, " "].Equal["-"]}
|
||||
{
|
||||
maxDamage:Set["${description.Token[4, " "].Replace[",", ""]}"]
|
||||
damageType:Set["${description.Token[5, " "]}"]
|
||||
}
|
||||
else
|
||||
{
|
||||
maxDamage:Set["${description.Token[2, " "].Replace[",", ""]}"]
|
||||
damageType:Set["${description.Token[3, " "]}"]
|
||||
}
|
||||
|
||||
variable jsonvalue damage
|
||||
damage:SetValue["$$>{
|
||||
"type": "${damageType}",
|
||||
"min": "${minDamage}",
|
||||
"max": "${maxDamage}"
|
||||
}<$$"]
|
||||
|
||||
if !${damageType(exists)}
|
||||
{
|
||||
echo "huh?: ${description}"
|
||||
}
|
||||
|
||||
return ${damage.AsJSON~}
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
variable index:ability MyAbilities
|
||||
variable iterator MyAbilitiesIterator
|
||||
|
||||
variable jsonvalue abilityList = "{}"
|
||||
variable jsonvalue currentAbility = {}
|
||||
variable jsonvalue effects = []
|
||||
variable jsonvalue abilityEffect = {}
|
||||
|
||||
variable string abilityLineName
|
||||
variable int idx = 1
|
||||
variable int Counter = 1
|
||||
variable int Timer = 0
|
||||
|
||||
|
||||
|
||||
Me:QueryAbilities[MyAbilities]
|
||||
MyAbilities:GetIterator[MyAbilitiesIterator]
|
||||
|
||||
if ${MyAbilitiesIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if (!${MyAbilitiesIterator.Value.IsAbilityInfoAvailable})
|
||||
{
|
||||
do
|
||||
{
|
||||
wait 2
|
||||
}
|
||||
while (!${MyAbilitiesIterator.Value.IsAbilityInfoAvailable} && ${Timer:Inc} < 1500)
|
||||
}
|
||||
|
||||
wait 5
|
||||
echo "Exporting (${Counter} / ${MyAbilities.Used}) - ${MyAbilitiesIterator.Value.ToAbilityInfo.Name} (ID: ${MyAbilitiesIterator.Value.ID})"
|
||||
|
||||
currentAbility:SetValue["$$>{
|
||||
"id": "${MyAbilitiesIterator.Value.ID}",
|
||||
"name": "${MyAbilitiesIterator.Value.ToAbilityInfo.Name}",
|
||||
"description": ${MyAbilitiesIterator.Value.ToAbilityInfo.Description.AsJSON~},
|
||||
"level": "${MyAbilitiesIterator.Value.ToAbilityInfo.Class[${Me.SubClass}].Level}",
|
||||
"tier": "${MyAbilitiesIterator.Value.ToAbilityInfo.Tier}",
|
||||
"healthCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.HealthCost}",
|
||||
"powerCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.PowerCost}",
|
||||
"dissonanceCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.DissonanceCost}",
|
||||
"savageryCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.SavageryCost}",
|
||||
"concentrationCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.ConcentrationCost}",
|
||||
"mainIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.MainIconID}",
|
||||
"hoIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.HOIconID}",
|
||||
"castingTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.CastingTime}",
|
||||
"recoveryTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.RecoveryTime}",
|
||||
"recastTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.RecastTime}",
|
||||
"maxDuration": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxDuration}",
|
||||
"numClasses": "${MyAbilitiesIterator.Value.ToAbilityInfo.NumClasses}",
|
||||
"numEffects": "${MyAbilitiesIterator.Value.ToAbilityInfo.NumEffects}",
|
||||
"backDropIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.BackDropIconID}",
|
||||
"healthCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.HealthCostPerTick}",
|
||||
"powerCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.PowerCostPerTick}",
|
||||
"dissonanceCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.DissonanceCostPerTick}",
|
||||
"savageryCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.SavageryCostPerTick}",
|
||||
"maxAOETargets": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxAOETargets}",
|
||||
"isBeneficial": "${MyAbilitiesIterator.Value.ToAbilityInfo.IsBeneficial}",
|
||||
"doesNotExpire": "${MyAbilitiesIterator.Value.ToAbilityInfo.DoesNotExpire}",
|
||||
"groupRestricted": "${MyAbilitiesIterator.Value.ToAbilityInfo.GroupRestricted}",
|
||||
"allowRaid": "${MyAbilitiesIterator.Value.ToAbilityInfo.AllowRaid}",
|
||||
"effectRadius": "${MyAbilitiesIterator.Value.ToAbilityInfo.EffectRadius}",
|
||||
"targetType": "${MyAbilitiesIterator.Value.ToAbilityInfo.TargetType}",
|
||||
"spellBookType": "${MyAbilitiesIterator.Value.ToAbilityInfo.SpellBookType}",
|
||||
"minRange": "${MyAbilitiesIterator.Value.ToAbilityInfo.MinRange}",
|
||||
"maxRange": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxRange}"
|
||||
}<$$"]
|
||||
|
||||
for (idx:Set[1] ; ${idx} < ${MyAbilitiesIterator.Value.ToAbilityInfo.NumEffects} ; idx:Inc )
|
||||
{
|
||||
abilityEffect:SetValue["$$>{
|
||||
"percentSuccess": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].PercentSuccess},
|
||||
"indentation": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].Indentation},
|
||||
"description": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].Description.AsJSON~}
|
||||
}<$$"]
|
||||
|
||||
effects:Add["${abilityEffect.AsJSON~}"]
|
||||
call matchesItemInArray stealthRequiredEffects ${abilityEffect.Get["description"]}
|
||||
if ${Return}
|
||||
{
|
||||
currentAbility:Set["requiresStealth", ${Return}]
|
||||
}
|
||||
|
||||
call matchesItemInArray flankingRequiredEffects ${abilityEffect.Get["description"]}
|
||||
if ${Return}
|
||||
{
|
||||
currentAbility:Set["requiresFlanking", ${Return}]
|
||||
}
|
||||
|
||||
call matchesItemInArray noEpicEffects ${abilityEffect.Get["description"]}
|
||||
if ${Return}
|
||||
{
|
||||
currentAbility:Set["noEpic", ${Return}]
|
||||
}
|
||||
|
||||
call matchesItemInArray stunEffects ${abilityEffect.Get["description"]}
|
||||
if ${Return}
|
||||
{
|
||||
currentAbility:Set["stuns", ${Return}]
|
||||
}
|
||||
|
||||
call matchesItemInArray interruptEffects ${abilityEffect.Get["description"]}
|
||||
if ${Return}
|
||||
{
|
||||
currentAbility:Set["interrupts", ${Return}]
|
||||
}
|
||||
|
||||
call extractDamageFromEffect abilityEffect
|
||||
if ${Return.Get["type"](exists)}
|
||||
{
|
||||
variable string damageType
|
||||
variable int64 minDamage
|
||||
|
||||
damageType:Set["${Return.Get["type"]}"]
|
||||
minDamage:Set["${Return.Get["min"]}"]
|
||||
|
||||
currentAbility:Set["doesDamage", TRUE]
|
||||
if ${currentAbility.Has["damage", ${Return.Get["type"]}]}
|
||||
{
|
||||
variable int64 currentMinDamageTotal
|
||||
|
||||
currentMinDamageTotal:Set["${currentAbility.Get["damage", ${damageType}]}"]
|
||||
currentMinDamageTotal:Inc[${minDamage}]
|
||||
|
||||
currentAbility.Get["damage", ${damageType}]:Set[${currentMinDamageTotal}]
|
||||
}
|
||||
else
|
||||
{
|
||||
if ${currentAbility.Has["damage"]}
|
||||
{
|
||||
currentAbility.Get["damage"]:Set["${damageType}", "${minDamage}"]
|
||||
}
|
||||
else
|
||||
{
|
||||
currentAbility:Set["damage", "$$>{
|
||||
"${damageType}": ${minDamage},
|
||||
}<$$"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abilityEffect:Clear
|
||||
}
|
||||
|
||||
currentAbility:Set["effects", "${effects.AsJSON~}"]
|
||||
effects:Clear
|
||||
|
||||
abilityLineName:Set["${MRStringHelpers.StripRomanNumerals[${currentAbility.Get["name"]}]}"]
|
||||
if !${abilityList.Has["${abilityLineName}"]}
|
||||
{
|
||||
abilityList:Set["${abilityLineName}", "[${currentAbility.AsJSON~}]"]
|
||||
}
|
||||
else
|
||||
{
|
||||
abilityList.Get["${abilityLineName}"]:Add["${currentAbility.AsJSON~}"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
Counter:Inc
|
||||
Timer:Set[0]
|
||||
}
|
||||
while ${MyAbilitiesIterator:Next(exists)}
|
||||
}
|
||||
|
||||
abilityList:WriteFile["${LavishScript.HomeDirectory}/Scripts/mr/bot/ability_exports/${Me.Name}_${Me.SubClass}.json", multiline]
|
||||
}
|
||||
|
||||
|
||||
94
bot/old_export_abilities.iss
Normal file
94
bot/old_export_abilities.iss
Normal file
@ -0,0 +1,94 @@
|
||||
; function main()
|
||||
; {
|
||||
; variable KnowledgeBook kb
|
||||
; variable index:ability MyAbilities
|
||||
; variable iterator MyAbilitiesIterator
|
||||
; variable jsonvalue effects = []
|
||||
; variable jsonvalue abilityEffect = {}
|
||||
; variable int idx = 1
|
||||
; variable int Counter = 1
|
||||
; variable int Timer = 0
|
||||
; variable jsonvalue currentAbility = {}
|
||||
|
||||
|
||||
; Me:QueryAbilities[MyAbilities]
|
||||
; MyAbilities:GetIterator[MyAbilitiesIterator]
|
||||
|
||||
; if ${MyAbilitiesIterator:First(exists)}
|
||||
; {
|
||||
; do
|
||||
; {
|
||||
; if (!${MyAbilitiesIterator.Value.IsAbilityInfoAvailable})
|
||||
; {
|
||||
; do
|
||||
; {
|
||||
; wait 2
|
||||
; }
|
||||
; while (!${MyAbilitiesIterator.Value.IsAbilityInfoAvailable} && ${Timer:Inc} < 1500)
|
||||
; }
|
||||
|
||||
; wait 5
|
||||
; echo "Exporting (${Counter} / ${MyAbilities.Size}) - ${MyAbilitiesIterator.Value.ToAbilityInfo.Name} (ID: ${MyAbilitiesIterator.Value.ID})"
|
||||
|
||||
; currentAbility:SetValue["$$>{
|
||||
; "ID": "${MyAbilitiesIterator.Value.ID}",
|
||||
; "Name": "${MyAbilitiesIterator.Value.ToAbilityInfo.Name}",
|
||||
; "Description": ${MyAbilitiesIterator.Value.ToAbilityInfo.Description.AsJSON~},
|
||||
; "Level": "${MyAbilitiesIterator.Value.ToAbilityInfo.Class[${Me.SubClass}].Level}",
|
||||
; "Tier": "${MyAbilitiesIterator.Value.ToAbilityInfo.Tier}",
|
||||
; "HealthCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.HealthCost}",
|
||||
; "PowerCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.PowerCost}",
|
||||
; "DissonanceCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.DissonanceCost}",
|
||||
; "SavageryCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.SavageryCost}",
|
||||
; "ConcentrationCost": "${MyAbilitiesIterator.Value.ToAbilityInfo.ConcentrationCost}",
|
||||
; "MainIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.MainIconID}",
|
||||
; "HOIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.HOIconID}",
|
||||
; "CastingTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.CastingTime}",
|
||||
; "RecoveryTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.RecoveryTime}",
|
||||
; "RecastTime": "${MyAbilitiesIterator.Value.ToAbilityInfo.RecastTime}",
|
||||
; "MaxDuration": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxDuration}",
|
||||
; "NumClasses": "${MyAbilitiesIterator.Value.ToAbilityInfo.NumClasses}",
|
||||
; "NumEffects": "${MyAbilitiesIterator.Value.ToAbilityInfo.NumEffects}",
|
||||
; "BackDropIconID": "${MyAbilitiesIterator.Value.ToAbilityInfo.BackDropIconID}",
|
||||
; "HealthCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.HealthCostPerTick}",
|
||||
; "PowerCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.PowerCostPerTick}",
|
||||
; "DissonanceCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.DissonanceCostPerTick}",
|
||||
; "SavageryCostPerTick": "${MyAbilitiesIterator.Value.ToAbilityInfo.SavageryCostPerTick}",
|
||||
; "MaxAOETargets": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxAOETargets}",
|
||||
; "IsBeneficial": "${MyAbilitiesIterator.Value.ToAbilityInfo.IsBeneficial}",
|
||||
; "DoesNotExpire": "${MyAbilitiesIterator.Value.ToAbilityInfo.DoesNotExpire}",
|
||||
; "GroupRestricted": "${MyAbilitiesIterator.Value.ToAbilityInfo.GroupRestricted}",
|
||||
; "AllowRaid": "${MyAbilitiesIterator.Value.ToAbilityInfo.AllowRaid}",
|
||||
; "IsBeneficial": "${MyAbilitiesIterator.Value.ToAbilityInfo.IsBeneficial}",
|
||||
; "EffectRadius": "${MyAbilitiesIterator.Value.ToAbilityInfo.EffectRadius}",
|
||||
; "TargetType": "${MyAbilitiesIterator.Value.ToAbilityInfo.TargetType}",
|
||||
; "SpellBookType": "${MyAbilitiesIterator.Value.ToAbilityInfo.SpellBookType}",
|
||||
; "MinRange": "${MyAbilitiesIterator.Value.ToAbilityInfo.MinRange}",
|
||||
; "MaxRange": "${MyAbilitiesIterator.Value.ToAbilityInfo.MaxRange}"
|
||||
; }<$$"]
|
||||
|
||||
; for (idx:Set[1] ; ${idx} < ${MyAbilitiesIterator.Value.ToAbilityInfo.NumEffects} ; idx:Inc )
|
||||
; {
|
||||
; abilityEffect:SetValue["$$>{
|
||||
; "PercentSuccess": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].PercentSuccess},
|
||||
; "Indentation": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].Indentation},
|
||||
; "Description": ${MyAbilitiesIterator.Value.ToAbilityInfo.Effect[${idx}].Description.AsJSON~}
|
||||
; }<$$"]
|
||||
|
||||
; effects:Add["${abilityEffect.AsJSON~}"]
|
||||
; abilityEffect:Clear
|
||||
; }
|
||||
|
||||
; currentAbility:Set["Effects", "${effects.AsJSON~}"]
|
||||
; effects:Clear
|
||||
|
||||
; kb:AddAbilityFromJSON[currentAbility]
|
||||
|
||||
; Counter:Inc
|
||||
; Timer:Set[0]
|
||||
; }
|
||||
; while ${MyAbilitiesIterator:Next(exists)}
|
||||
; }
|
||||
|
||||
; kb:WriteFile["${LavishScript.HomeDirectory}/Scripts/mr/bot/ability_exports/${Me.Name}_${Me.SubClass}.json"]
|
||||
; }
|
||||
792
bot/profiles/EQ2Save_Varsoon_Kaer.xml
Normal file
792
bot/profiles/EQ2Save_Varsoon_Kaer.xml
Normal file
@ -0,0 +1,792 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Generated by LavishSettings v2 -->
|
||||
<InnerSpaceSettings>
|
||||
<Set Name="Profiles">
|
||||
<Setting Name="DefaultProfiles">Kaer T5</Setting>
|
||||
<Set Name="Sample">
|
||||
<Set Name="Settings">
|
||||
<Setting Name="checkbox_settings_buffs">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_combatarts">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_namedcombatarts">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_rangedattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autoattacktiming">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_meleeattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_turnoffattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_res">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptres">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_prioritytab">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_doho">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptinvites">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_movetoarea">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptloot">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_dopowerheals">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autofollow">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_enableonscreenassistant">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_enablealiases">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_encountersmartnukes">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_aesmartnukes">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_ignoretargettoattackhealthcheck">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_loot">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_enableannouncetab">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_enableogremcp">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autotargetwhenhated">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_shards">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_manastone">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_facenpc">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_movemelee">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_moveinfront">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_raidoptions">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_grindoptions">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Setup">
|
||||
<Setting Name="textentry_setup_percenttoattack">99</Setting>
|
||||
<Setting Name="textentry_setup_moveintoattackrangehealthpercent">99</Setting>
|
||||
<Setting Name="textentry_setup_petpercenttoattack">99</Setting>
|
||||
<Setting Name="textentry_setup_powertousecas">5</Setting>
|
||||
<Setting Name="textentry_setup_healthtousecas">5</Setting>
|
||||
<Setting Name="textentry_setup_percenttousemanastone">75</Setting>
|
||||
<Setting Name="textentry_setup_percenttouseshards">50</Setting>
|
||||
<Setting Name="textentry_setup_reswaittimer">5</Setting>
|
||||
<Setting Name="textentry_setup_spellrangeextender">0</Setting>
|
||||
<Setting Name="textentry_setup_moveintomeleerangemaxdistance">25</Setting>
|
||||
<Setting Name="textentry_setup_autofollowmaxdistance">50</Setting>
|
||||
<Setting Name="checkbox_setup_broadcasttellstouplink">FALSE</Setting>
|
||||
<Setting Name="combobox_setup_shardcaster">Conjuror</Setting>
|
||||
<Setting Name="combobox_setup_heartcaster">Necromancer</Setting>
|
||||
<Setting Name="combobox_setup_autofollowname">NULL</Setting>
|
||||
<Setting Name="checkbox_setup_receivetellsfromuplink">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Aliases">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">*Priest</Setting>
|
||||
<Setting Name="For">Editall</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="__SourceName">*Priest</Setting>
|
||||
<Setting Name="For">Editall</Setting>
|
||||
</Set>
|
||||
<Set Name="3">
|
||||
<Setting Name="__SourceName">*Priest</Setting>
|
||||
<Setting Name="For">Editall</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="CastStack">
|
||||
<Set Name="1">
|
||||
<Setting Name="%">20</Setting>
|
||||
<Setting Name="__SourceName">Unyielding Resolve</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="%">25</Setting>
|
||||
<Setting Name="__SourceName">Brawler's Tenacity</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="3">
|
||||
<Setting Name="%">30</Setting>
|
||||
<Setting Name="__SourceName">Ignore Pain</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="4">
|
||||
<Setting Name="%">30</Setting>
|
||||
<Setting Name="__SourceName">Rock Skin</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="5">
|
||||
<Setting Name="%">35</Setting>
|
||||
<Setting Name="__SourceName">Impenetrable Will</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="6">
|
||||
<Setting Name="%">40</Setting>
|
||||
<Setting Name="__SourceName">Inner Focus</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="7">
|
||||
<Setting Name="__SourceName">Bruising Spirit</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="8">
|
||||
<Setting Name="%">25</Setting>
|
||||
<Setting Name="__SourceName">Stone Deaf</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="9">
|
||||
<Setting Name="%">50</Setting>
|
||||
<Setting Name="__SourceName">Soak Hit</Setting>
|
||||
<Setting Name="Target">@NotSelfGroup</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="10">
|
||||
<Setting Name="__SourceName">Stone Cold</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="11">
|
||||
<Setting Name="%">50</Setting>
|
||||
<Setting Name="__SourceName">Intercept</Setting>
|
||||
<Setting Name="Target">@NotSelfGroup</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="12">
|
||||
<Setting Name="%">50</Setting>
|
||||
<Setting Name="__SourceName">Tag Team</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="13">
|
||||
<Setting Name="__SourceName">Altruism</Setting>
|
||||
<Setting Name="Target">*Priest</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="14">
|
||||
<Setting Name="__SourceName">Shrug Off</Setting>
|
||||
<Setting Name="Target">*Priest</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="15">
|
||||
<Setting Name="%">40</Setting>
|
||||
<Setting Name="__SourceName">Martial Leap</Setting>
|
||||
<Setting Name="Target">@Group</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="16">
|
||||
<Setting Name="__SourceName">Fist of Gorynn</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="17">
|
||||
<Setting Name="__SourceName">Bodyguard</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="18">
|
||||
<Setting Name="__SourceName">Bob and Weave</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="19">
|
||||
<Setting Name="__SourceName">Brutality</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="20">
|
||||
<Setting Name="__SourceName">Crane Twirl</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="21">
|
||||
<Setting Name="%">75</Setting>
|
||||
<Setting Name="__SourceName">Draconic Shout</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="22">
|
||||
<Setting Name="__SourceName">Lightning Fists</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="23">
|
||||
<Setting Name="__SourceName">Knockout Combination</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="24">
|
||||
<Setting Name="__SourceName">Master's Rage</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="25">
|
||||
<Setting Name="__SourceName">Abuse</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="26">
|
||||
<Setting Name="__SourceName">Baton Flurry</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="27">
|
||||
<Setting Name="__SourceName">Crane Sweep</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="28">
|
||||
<Setting Name="__SourceName">Wild Beating</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="29">
|
||||
<Setting Name="__SourceName">Beatdown</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="30">
|
||||
<Setting Name="__SourceName">Savage Assault</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="31">
|
||||
<Setting Name="__SourceName">Devastation Fist</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="32">
|
||||
<Setting Name="__SourceName">Pressure Point</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="33">
|
||||
<Setting Name="__SourceName">Uppercut</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="34">
|
||||
<Setting Name="__SourceName">Merciless Stomp</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="35">
|
||||
<Setting Name="__SourceName">Shoulder Charge</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="36">
|
||||
<Setting Name="__SourceName">Blaze Kick</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="37">
|
||||
<Setting Name="__SourceName">Pummel</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="38">
|
||||
<Setting Name="__SourceName">Roundhouse</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="39">
|
||||
<Setting Name="__SourceName">Sucker Punch</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="40">
|
||||
<Setting Name="__SourceName">Meteor Fist</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="41">
|
||||
<Setting Name="__SourceName">One Hundred Hand Punch</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="42">
|
||||
<Setting Name="__SourceName">Eye Gouge</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Loot">
|
||||
<Setting Name="checkbox_loot_confirmnotrade">TRUE</Setting>
|
||||
<Setting Name="checkbox_loot_ffaaccept">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="OSA">
|
||||
<Setting Name="slider_osa_radius">45</Setting>
|
||||
<Setting Name="textentry_osa_radius">45</Setting>
|
||||
<Setting Name="checkbox_osa_targetsonly">TRUE</Setting>
|
||||
<Setting Name="checkbox_osa_clipyaxis">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Announce">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">Combat Mastery</Setting>
|
||||
<Setting Name="Target">Group</Setting>
|
||||
<Setting Name="Txt">Casting combat mastery</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="AutoHunt">
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkhp">TRUE</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">FALSE</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">FALSE</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">12</Setting>
|
||||
<Setting Name="checkbox_autohunt_movementonly">FALSE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_ignorenonaggro">FALSE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkmana">FALSE</Setting>
|
||||
<Setting Name="textentry_autohunt_checkmana">40</Setting>
|
||||
<Setting Name="checkbox_autohunt_ignoregray">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="AutoHunt_Path">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">L1</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="__SourceName">L2</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="3">
|
||||
<Setting Name="__SourceName">L3</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="4">
|
||||
<Setting Name="__SourceName">L4</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="5">
|
||||
<Setting Name="__SourceName">L5</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="6">
|
||||
<Setting Name="__SourceName">L6</Setting>
|
||||
</Set>
|
||||
<Set Name="7">
|
||||
<Setting Name="__SourceName">L7</Setting>
|
||||
</Set>
|
||||
<Set Name="8">
|
||||
<Setting Name="__SourceName">L8</Setting>
|
||||
</Set>
|
||||
<Set Name="9">
|
||||
<Setting Name="__SourceName">L9</Setting>
|
||||
</Set>
|
||||
<Set Name="10">
|
||||
<Setting Name="__SourceName">L10</Setting>
|
||||
</Set>
|
||||
<Set Name="11">
|
||||
<Setting Name="__SourceName">L11</Setting>
|
||||
</Set>
|
||||
<Set Name="12">
|
||||
<Setting Name="__SourceName">L12</Setting>
|
||||
</Set>
|
||||
<Set Name="13">
|
||||
<Setting Name="__SourceName">L13</Setting>
|
||||
</Set>
|
||||
<Set Name="14">
|
||||
<Setting Name="__SourceName">L14</Setting>
|
||||
</Set>
|
||||
<Set Name="15">
|
||||
<Setting Name="__SourceName">L15</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Other">
|
||||
<Setting Name="combobox_other_curabledisable">Close Mind</Setting>
|
||||
<Setting Name="checkbox_other_curabledisable">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="AutoTarget">
|
||||
<Setting Name="checkbox_autotarget_enabled">TRUE</Setting>
|
||||
<Setting Name="slider_autotarget_scanradius">50</Setting>
|
||||
<Setting Name="slider_autotarget_scanheight">5</Setting>
|
||||
<Setting Name="slider_autotarget_rescantime">1</Setting>
|
||||
</Set>
|
||||
<Set Name="HUDs">
|
||||
<Setting Name="checkbox_hud_pc">TRUE</Setting>
|
||||
<Setting Name="checkbox_hud_npc">TRUE</Setting>
|
||||
<Setting Name="checkbox_hud_group">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="OgreConsole">
|
||||
<Setting Name="checkbox_ogreconsole_showonload">TRUE</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Kaer T5">
|
||||
<Set Name="Settings">
|
||||
<Setting Name="checkbox_settings_buffs">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_combatarts">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_namedcombatarts">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_rangedattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autoattacktiming">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_meleeattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_turnoffattack">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_res">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptres">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_prioritytab">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_doho">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptinvites">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_movetoarea">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_acceptloot">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_dopowerheals">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autofollow">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_enableonscreenassistant">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_enablealiases">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_encountersmartnukes">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_aesmartnukes">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_ignoretargettoattackhealthcheck">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_loot">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_enableannouncetab">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_enableogremcp">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_autotargetwhenhated">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_shards">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_manastone">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_facenpc">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_movemelee">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_moveinfront">FALSE</Setting>
|
||||
<Setting Name="checkbox_settings_raidoptions">TRUE</Setting>
|
||||
<Setting Name="checkbox_settings_grindoptions">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Setup">
|
||||
<Setting Name="textentry_setup_percenttoattack">99</Setting>
|
||||
<Setting Name="textentry_setup_moveintoattackrangehealthpercent">99</Setting>
|
||||
<Setting Name="textentry_setup_petpercenttoattack">99</Setting>
|
||||
<Setting Name="textentry_setup_powertousecas">5</Setting>
|
||||
<Setting Name="textentry_setup_healthtousecas">5</Setting>
|
||||
<Setting Name="textentry_setup_percenttousemanastone">75</Setting>
|
||||
<Setting Name="textentry_setup_percenttouseshards">50</Setting>
|
||||
<Setting Name="textentry_setup_reswaittimer">5</Setting>
|
||||
<Setting Name="textentry_setup_spellrangeextender">0</Setting>
|
||||
<Setting Name="textentry_setup_moveintomeleerangemaxdistance">25</Setting>
|
||||
<Setting Name="textentry_setup_autofollowmaxdistance">50</Setting>
|
||||
<Setting Name="checkbox_setup_broadcasttellstouplink">FALSE</Setting>
|
||||
<Setting Name="combobox_setup_shardcaster">Conjuror</Setting>
|
||||
<Setting Name="combobox_setup_heartcaster">Necromancer</Setting>
|
||||
<Setting Name="combobox_setup_autofollowname">NULL</Setting>
|
||||
<Setting Name="checkbox_setup_receivetellsfromuplink">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Aliases">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">*Priest</Setting>
|
||||
<Setting Name="For">Nivik</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="__SourceName">*Tank</Setting>
|
||||
<Setting Name="For">Kaer</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="CastStack">
|
||||
<Set Name="1">
|
||||
<Setting Name="%">40</Setting>
|
||||
<Setting Name="__SourceName">Ignore Pain</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="%">30</Setting>
|
||||
<Setting Name="__SourceName">Rock Skin</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="3">
|
||||
<Setting Name="%">35</Setting>
|
||||
<Setting Name="__SourceName">Impenetrable Will</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="4">
|
||||
<Setting Name="__SourceName">Bruising Spirit</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="5">
|
||||
<Setting Name="%">50</Setting>
|
||||
<Setting Name="__SourceName">Intercept</Setting>
|
||||
<Setting Name="Target">@NotSelfGroup</Setting>
|
||||
<Setting Name="Type">Heal</Setting>
|
||||
</Set>
|
||||
<Set Name="6">
|
||||
<Setting Name="__SourceName">Shrug Off</Setting>
|
||||
<Setting Name="Target">*Priest</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="7">
|
||||
<Setting Name="__SourceName">Bodyguard</Setting>
|
||||
<Setting Name="Tag">Tank</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="8">
|
||||
<Setting Name="__SourceName">Smoldering Fists</Setting>
|
||||
<Setting Name="Tag">DPS</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="9">
|
||||
<Setting Name="__SourceName">Bob and Weave</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="10">
|
||||
<Setting Name="__SourceName">Brutality</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="11">
|
||||
<Setting Name="__SourceName">Manhandle</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
<Set Name="12">
|
||||
<Setting Name="__SourceName">Lightning Fists</Setting>
|
||||
<Setting Name="Target">@Me</Setting>
|
||||
<Setting Name="Type">Combat</Setting>
|
||||
</Set>
|
||||
<Set Name="13">
|
||||
<Setting Name="__SourceName">Master's Rage</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="14">
|
||||
<Setting Name="__SourceName">Abuse</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="15">
|
||||
<Setting Name="__SourceName">Beatdown</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="16">
|
||||
<Setting Name="__SourceName">Savage Assault</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="17">
|
||||
<Setting Name="__SourceName">Devastation Fist</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="18">
|
||||
<Setting Name="__SourceName">Uppercut</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="19">
|
||||
<Setting Name="__SourceName">Merciless Stomp</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="20">
|
||||
<Setting Name="__SourceName">Shoulder Charge</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="21">
|
||||
<Setting Name="__SourceName">Blaze Kick</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="22">
|
||||
<Setting Name="__SourceName">Pummel</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="23">
|
||||
<Setting Name="__SourceName">Roundhouse</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="24">
|
||||
<Setting Name="__SourceName">Sucker Punch</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="25">
|
||||
<Setting Name="__SourceName">Meteor Fist</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="26">
|
||||
<Setting Name="__SourceName">One Hundred Hand Punch</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="27">
|
||||
<Setting Name="__SourceName">Eye Gouge</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="28">
|
||||
<Setting Name="__SourceName">Strike of Consistency</Setting>
|
||||
<Setting Name="Type">CA</Setting>
|
||||
</Set>
|
||||
<Set Name="29">
|
||||
<Setting Name="__SourceName">Subtle Strikes</Setting>
|
||||
<Setting Name="ATag">DPS</Setting>
|
||||
<Setting Name="AType">Trigger Only</Setting>
|
||||
<Setting Name="Type">Buff</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Loot">
|
||||
<Setting Name="checkbox_loot_confirmnotrade">TRUE</Setting>
|
||||
<Setting Name="checkbox_loot_ffaaccept">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="OSA">
|
||||
<Setting Name="slider_osa_radius">45</Setting>
|
||||
<Setting Name="textentry_osa_radius">45</Setting>
|
||||
<Setting Name="checkbox_osa_targetsonly">TRUE</Setting>
|
||||
<Setting Name="checkbox_osa_clipyaxis">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Announce">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">Combat Mastery</Setting>
|
||||
<Setting Name="Target">Group</Setting>
|
||||
<Setting Name="Txt">Casting combat mastery</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="AutoHunt">
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkhp">TRUE</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">FALSE</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">FALSE</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">12</Setting>
|
||||
<Setting Name="checkbox_autohunt_movementonly">FALSE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_ignorenonaggro">FALSE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkmana">FALSE</Setting>
|
||||
<Setting Name="textentry_autohunt_checkmana">40</Setting>
|
||||
<Setting Name="checkbox_autohunt_ignoregray">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="AutoHunt_Path">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">L1</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="__SourceName">L2</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="3">
|
||||
<Setting Name="__SourceName">L3</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="4">
|
||||
<Setting Name="__SourceName">L4</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="5">
|
||||
<Setting Name="__SourceName">L5</Setting>
|
||||
<Setting Name="checkbox_autohunt_autohunt">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_checkaggro">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_looppath">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell1">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell2">TRUE</Setting>
|
||||
<Setting Name="checkbox_autohunt_pullspell3">TRUE</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell1">Slurred Insult</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell2">Abuse</Setting>
|
||||
<Setting Name="combobox_autohunt_pullspell3">Slurred Insult</Setting>
|
||||
<Setting Name="textentry_autohunt_checkhp">80</Setting>
|
||||
<Setting Name="textentry_autohunt_scanradius">8</Setting>
|
||||
</Set>
|
||||
<Set Name="6">
|
||||
<Setting Name="__SourceName">L6</Setting>
|
||||
</Set>
|
||||
<Set Name="7">
|
||||
<Setting Name="__SourceName">L7</Setting>
|
||||
</Set>
|
||||
<Set Name="8">
|
||||
<Setting Name="__SourceName">L8</Setting>
|
||||
</Set>
|
||||
<Set Name="9">
|
||||
<Setting Name="__SourceName">L9</Setting>
|
||||
</Set>
|
||||
<Set Name="10">
|
||||
<Setting Name="__SourceName">L10</Setting>
|
||||
</Set>
|
||||
<Set Name="11">
|
||||
<Setting Name="__SourceName">L11</Setting>
|
||||
</Set>
|
||||
<Set Name="12">
|
||||
<Setting Name="__SourceName">L12</Setting>
|
||||
</Set>
|
||||
<Set Name="13">
|
||||
<Setting Name="__SourceName">L13</Setting>
|
||||
</Set>
|
||||
<Set Name="14">
|
||||
<Setting Name="__SourceName">L14</Setting>
|
||||
</Set>
|
||||
<Set Name="15">
|
||||
<Setting Name="__SourceName">L15</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Other">
|
||||
<Setting Name="combobox_other_curabledisable">Close Mind</Setting>
|
||||
<Setting Name="checkbox_other_curabledisable">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="AutoTarget">
|
||||
<Setting Name="checkbox_autotarget_enabled">FALSE</Setting>
|
||||
<Setting Name="slider_autotarget_scanradius">50</Setting>
|
||||
<Setting Name="slider_autotarget_scanheight">5</Setting>
|
||||
<Setting Name="slider_autotarget_rescantime">1</Setting>
|
||||
<Setting Name="checkbox_autotarget_outofcombatscanning">FALSE</Setting>
|
||||
</Set>
|
||||
<Set Name="HUDs">
|
||||
<Setting Name="checkbox_hud_pc">TRUE</Setting>
|
||||
<Setting Name="checkbox_hud_npc">TRUE</Setting>
|
||||
<Setting Name="checkbox_hud_group">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="OgreConsole">
|
||||
<Setting Name="checkbox_ogreconsole_showonload">TRUE</Setting>
|
||||
</Set>
|
||||
<Set Name="Items">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">Manastone</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Tags_AddNew">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">DPS</Setting>
|
||||
</Set>
|
||||
<Set Name="2">
|
||||
<Setting Name="__SourceName">Tank</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
<Set Name="Tags">
|
||||
<Set Name="1">
|
||||
<Setting Name="__SourceName">DPS</Setting>
|
||||
</Set>
|
||||
</Set>
|
||||
</Set>
|
||||
</Set>
|
||||
</InnerSpaceSettings>
|
||||
218
bot/profiles/Varsoon_Kaer.json
Normal file
218
bot/profiles/Varsoon_Kaer.json
Normal file
@ -0,0 +1,218 @@
|
||||
{
|
||||
"DefaultProfile": "kaer lvl50",
|
||||
"Profiles": {
|
||||
"kaer lvl50": {
|
||||
"Name": "kaer lvl50",
|
||||
"Settings": {
|
||||
"test": true
|
||||
},
|
||||
"Setup": {},
|
||||
"CastStack": [
|
||||
{
|
||||
"Name": "Abuse",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Beatdown",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Blaze Kick",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Bob and Weave",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Bodyguard",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "Tank"
|
||||
},
|
||||
{
|
||||
"Name": "Bruising Spirit",
|
||||
"AbilityTarget": "@Me",
|
||||
"AbilityType": "Combat",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Brutality",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Devastation Fist",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Eye Gouge",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Ignore Pain",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Heal",
|
||||
"Percentage": "40",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Impenetrable Will",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Heal",
|
||||
"Percentage": "35",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Intercept",
|
||||
"AbilityTarget": "@NotSelfGroup",
|
||||
"AbilityType": "Heal",
|
||||
"Percentage": "50",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Lightning Fists",
|
||||
"AbilityTarget": "@Me",
|
||||
"AbilityType": "Combat",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Manhandle",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Master's Rage",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Merciless Stomp",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Meteor Fist",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "One Hundred Hand Punch",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Pummel",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Rock Skin",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Heal",
|
||||
"Percentage": "30",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Roundhouse",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Savage Assault",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Shoulder Charge",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Shrug Off",
|
||||
"AbilityTarget": "*Priest",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Smoldering Fists",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "DPS"
|
||||
},
|
||||
{
|
||||
"Name": "Strike of Consistency",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Subtle Strikes",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "Buff",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Sucker Punch",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
},
|
||||
{
|
||||
"Name": "Uppercut",
|
||||
"AbilityTarget": "NULL",
|
||||
"AbilityType": "CA",
|
||||
"Percentage": "0",
|
||||
"Tag": "NULL"
|
||||
}
|
||||
],
|
||||
"Aliases": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
464
bot/setting_keys.json
Normal file
464
bot/setting_keys.json
Normal file
@ -0,0 +1,464 @@
|
||||
{
|
||||
"settings": [
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack",
|
||||
"content": "Disable Cast Stack(CS)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_buffs",
|
||||
"content": "Disable CS_Buffs",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_buffs\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_cure",
|
||||
"content": "Disable CS_Cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_cure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_curecurse",
|
||||
"content": "Disable CS_CureCurse",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_curecurse\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_heal",
|
||||
"content": "Disable CS_Heal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_heal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_powerheal",
|
||||
"content": "Disable CS_PowerHeal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_powerheal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_res",
|
||||
"content": "Disable CS_Res",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_res\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_combat",
|
||||
"content": "Disable CS_Combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_combat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_ca",
|
||||
"content": "Disable CS_CA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_ca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_namedca",
|
||||
"content": "Disable CS_NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_namedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nonnamedca",
|
||||
"content": "Disable CS_NonNamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nonnamedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_debuff",
|
||||
"content": "Disable CS_Debuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_debuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nameddebuff",
|
||||
"content": "Disable CS_NamedDebuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nameddebuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_items",
|
||||
"content": "Disable CS_Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_items\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_cancelabilitiestogroupcure",
|
||||
"content": "X abilities to group cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_cancelabilitiestogroupcure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_forcenamedcatab",
|
||||
"content": "Force NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_forcenamedcatab\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_acceptloot",
|
||||
"content": "Accept Loot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_acceptloot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot",
|
||||
"content": "Loot Corpses/Chests",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot_incombat",
|
||||
"content": "Loot InCombat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot_incombat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_facenpc",
|
||||
"content": "Face mob in combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_facenpc\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_rangedattack",
|
||||
"content": "Ranged Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_rangedattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_meleeattack",
|
||||
"content": "Melee Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_meleeattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movemelee",
|
||||
"content": "Move into Melee Range",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movemelee\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movebehind",
|
||||
"content": "Move behind mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movebehind\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_moveinfront",
|
||||
"content": "Move in front of mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_moveinfront\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_turnoffattack",
|
||||
"content": "Turn Off Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_turnoffattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoremovetoattackhealthcheck",
|
||||
"content": "Ignore NPC HP to move",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoremovetoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoretargettoattackhealthcheck",
|
||||
"content": "Ignore NPC HP (100%)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoretargettoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space1",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space1\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_consumeitems",
|
||||
"content": "Enable Consume Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_consumeitems\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space3",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space3\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disable_dbc_claim",
|
||||
"content": "Disable DBC Claim",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disable_dbc_claim\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space5",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space5\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space6",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space6\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_encountersmartnukes",
|
||||
"content": "Encounter Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_encountersmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_aesmartnukes",
|
||||
"content": "AE Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_aesmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movetoarea",
|
||||
"content": "Allow Camp Spot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movetoarea\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_assist",
|
||||
"content": "Auto Assist",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_assist\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
559
bot/settings.json
Normal file
559
bot/settings.json
Normal file
@ -0,0 +1,559 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"elements": [
|
||||
{
|
||||
"type": "window",
|
||||
"title": "MR Bot Settings",
|
||||
"name": "mr.bot.settings",
|
||||
"borderThickness": 2,
|
||||
"hideOnClose": false,
|
||||
"minSize": {
|
||||
"width": 450,
|
||||
"height": 200
|
||||
},
|
||||
"maxSize": {
|
||||
"height": 600,
|
||||
"width": 800
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onCloseButtonClick": [
|
||||
"method",
|
||||
"MRBotController",
|
||||
"ToggleSettings"
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"type": "stackpanel",
|
||||
"heightFactor": 1,
|
||||
"orientation":"horizontal",
|
||||
"horizontalAlignment": "stretch",
|
||||
"children": [
|
||||
{
|
||||
"type": "wrappanel",
|
||||
"name": "mr.bot.settings.nav",
|
||||
"orientation":"horizontal",
|
||||
"childSize": {
|
||||
"width": 90,
|
||||
"height": 35
|
||||
},
|
||||
"width": 193,
|
||||
"uniform": true,
|
||||
"borderThickness": 2,
|
||||
"borderBrush":{
|
||||
"color":"#ff0000"
|
||||
},
|
||||
"verticalAlignment": "stretch",
|
||||
|
||||
"children": [
|
||||
{
|
||||
"type": "button",
|
||||
"content": "Settings",
|
||||
"widthFactor": 1,
|
||||
"heightFactor": 1
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"content": "Setup",
|
||||
"widthFactor": 1,
|
||||
"heightFactor": 1
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"content": "Aliases",
|
||||
"widthFactor": 1,
|
||||
"heightFactor": 1
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"content": "Cast Stack",
|
||||
"widthFactor": 1,
|
||||
"heightFactor": 1
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "wrappanel",
|
||||
"name": "mr.bot.settings.settings",
|
||||
"heightFactor": 1,
|
||||
"childSize": {
|
||||
"width": 220,
|
||||
"height": 50
|
||||
},
|
||||
"horizontalAlignment": "stretch",
|
||||
"uniform": true,
|
||||
"borderThickness": 2,
|
||||
"borderBrush":{
|
||||
"color":"#ff0000"
|
||||
},
|
||||
"verticalAlignment": "stretch",
|
||||
"children": [
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack",
|
||||
"content": "Disable Cast Stack(CS)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_buffs",
|
||||
"content": "Disable CS_Buffs",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_buffs\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_cure",
|
||||
"content": "Disable CS_Cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_cure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_curecurse",
|
||||
"content": "Disable CS_CureCurse",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_curecurse\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_heal",
|
||||
"content": "Disable CS_Heal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_heal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_powerheal",
|
||||
"content": "Disable CS_PowerHeal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_powerheal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_res",
|
||||
"content": "Disable CS_Res",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_res\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_combat",
|
||||
"content": "Disable CS_Combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_combat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_ca",
|
||||
"content": "Disable CS_CA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_ca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_namedca",
|
||||
"content": "Disable CS_NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_namedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nonnamedca",
|
||||
"content": "Disable CS_NonNamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nonnamedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_debuff",
|
||||
"content": "Disable CS_Debuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_debuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nameddebuff",
|
||||
"content": "Disable CS_NamedDebuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nameddebuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_items",
|
||||
"content": "Disable CS_Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_items\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_cancelabilitiestogroupcure",
|
||||
"content": "X abilities to group cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_cancelabilitiestogroupcure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_forcenamedcatab",
|
||||
"content": "Force NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_forcenamedcatab\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_acceptloot",
|
||||
"content": "Accept Loot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_acceptloot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot",
|
||||
"content": "Loot Corpses/Chests",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot_incombat",
|
||||
"content": "Loot InCombat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot_incombat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_facenpc",
|
||||
"content": "Face mob in combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_facenpc\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_rangedattack",
|
||||
"content": "Ranged Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_rangedattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_meleeattack",
|
||||
"content": "Melee Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_meleeattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movemelee",
|
||||
"content": "Move into Melee Range",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movemelee\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movebehind",
|
||||
"content": "Move behind mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movebehind\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_moveinfront",
|
||||
"content": "Move in front of mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_moveinfront\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_turnoffattack",
|
||||
"content": "Turn Off Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_turnoffattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoremovetoattackhealthcheck",
|
||||
"content": "Ignore NPC HP to move",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoremovetoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoretargettoattackhealthcheck",
|
||||
"content": "Ignore NPC HP (100%)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoretargettoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space1",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space1\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_consumeitems",
|
||||
"content": "Enable Consume Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_consumeitems\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space3",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space3\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disable_dbc_claim",
|
||||
"content": "Disable DBC Claim",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disable_dbc_claim\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space5",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space5\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space6",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space6\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_encountersmartnukes",
|
||||
"content": "Encounter Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_encountersmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_aesmartnukes",
|
||||
"content": "AE Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_aesmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movetoarea",
|
||||
"content": "Allow Camp Spot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movetoarea\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_assist",
|
||||
"content": "Auto Assist",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_assist\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
90
bot/settings_controller.iss
Normal file
90
bot/settings_controller.iss
Normal file
@ -0,0 +1,90 @@
|
||||
#include "${LavishScript.HomeDirectory}/scripts/mr/common/KnowledgeBook.iss"
|
||||
#include "${LavishScript.HomeDirectory}/scripts/mr/common/JsonHelpers.iss"
|
||||
|
||||
objectdef SettingsController
|
||||
{
|
||||
|
||||
variable jsonvalue abilityListItems = "[]"
|
||||
variable jsonvalue currentCastStack = "[]"
|
||||
variable int currentSelectedAvailableAbilityIndex = -1
|
||||
variable jsonvalue newCastStackItem = "{}"
|
||||
|
||||
method Initialize()
|
||||
{
|
||||
LavishScript:RegisterEvent[onNewCastStackItemChanged]
|
||||
variable jsonvalue jo
|
||||
|
||||
jo:ParseFile["${LavishScript.HomeDirectory}/scripts/mr/bot/ability_exports/Ihaihu_shadowknight.json"]
|
||||
abilityListItems:SetValue["${MRJsonHelper.FilterArray[jo, "Details.SpellBookType", "<", 2].AsJSON~}"]
|
||||
}
|
||||
|
||||
method Shutdown()
|
||||
{
|
||||
}
|
||||
|
||||
method OnClose()
|
||||
{
|
||||
}
|
||||
|
||||
method SetCurrentAbility(int selectedIndex)
|
||||
{
|
||||
currentSelectedAvailableAbilityIndex:Set[${selectedIndex}]
|
||||
LGUI2.Element[MRSettingsController.events]:FireEventHandler[onNewCastStackItemChanged]
|
||||
newCastStackItem:SetValue["$$>{
|
||||
"action": "ability",
|
||||
"name": "${abilityListItems.Get[${selectedIndex}, "Name"]}"
|
||||
"id": "${abilityListItems.Get[${selectedIndex}, "CurrentID"]}"
|
||||
}<$$"]
|
||||
}
|
||||
|
||||
method OnCastStackAbilityComboChange(string param)
|
||||
{
|
||||
echo "param: ${param}"
|
||||
echo "OnCastStackAbilityComboChange: ${Context.AsJSON~}"
|
||||
newCastStackItem:Set["${Context.Source.Name.Token[3, "."]}", "${Context.Source.SelectedItem.Data.AsJSON~}"]
|
||||
echo "${Context.Source.Name.Token[3, "."]} = ${Context.Source.SelectedItem.Data}"
|
||||
echo "newCastStackItem: ${newCastStackItem.AsJSON[multiline]~}"
|
||||
}
|
||||
|
||||
method SafeSetNewCastStackItemProperty(string propertyName, string value)
|
||||
{
|
||||
echo "SafeSetNewCastStackItemProperty: ${propertyName} = ${value}"
|
||||
if ${value(exists)} && ${value.NotEqual[""]}
|
||||
{
|
||||
newCastStackItem:Set["${propertyName}", "${value}"]
|
||||
}
|
||||
}
|
||||
|
||||
member:string SafeGetNewCastStackItemProperty(string propertyName)
|
||||
{
|
||||
if ${newCastStackItem.Has[${propertyName}]}
|
||||
{
|
||||
return ${newCastStackItem.Get[${propertyName}]}
|
||||
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
member GetTargetOptions()
|
||||
{
|
||||
variable jsonvalue targetOptions
|
||||
|
||||
targetOptions:SetValue[$$>"[
|
||||
"@Group",
|
||||
"@Raid",
|
||||
"@Me",
|
||||
"@Tank",
|
||||
"@Healer",
|
||||
"@DPS"
|
||||
]"<$$]
|
||||
|
||||
; TODO: Add alias options once aliases are supported
|
||||
return ${targetOptions}
|
||||
}
|
||||
|
||||
method AddAbility()
|
||||
{
|
||||
echo "AddAbility: ${newCastStackItem.AsJSON[multiline]~}"
|
||||
}
|
||||
}
|
||||
|
||||
273
common/JsonHelpers.iss
Normal file
273
common/JsonHelpers.iss
Normal file
@ -0,0 +1,273 @@
|
||||
objectdef MRJsonHelper
|
||||
{
|
||||
|
||||
static member:jsonvalueref QueryJsonArray(jsonvalueref ref, string queryString)
|
||||
{
|
||||
if !${ref.Type.Equal[array]}
|
||||
{
|
||||
echo "JsonHelper:QueryJsonArray - First parameter should be a json array, but it is currently ${ref.Type}"
|
||||
return NULL
|
||||
}
|
||||
|
||||
variable jsonvalue result = "[]"
|
||||
variable jsoniterator refIterator
|
||||
variable int tokenCount
|
||||
variable int currentTokenNumber
|
||||
variable jsonvalue currentValue
|
||||
tokenCount:Set[${queryString.Count["."]}]
|
||||
tokenCount:Inc
|
||||
|
||||
|
||||
ref:GetIterator[refIterator]
|
||||
|
||||
if ${refIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
currentValue:SetValue["${refIterator.Value.AsJSON~}"]
|
||||
|
||||
if ${tokenCount.Equal[1]}
|
||||
{
|
||||
currentValue:SetValue["${currentValue.Get["${queryString}"].AsJSON~}"]
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
for(currentTokenNumber:Set[1]; ${currentTokenNumber} <= ${tokenCount}; currentTokenNumber:Inc)
|
||||
{
|
||||
currentValue:SetValue["${currentValue.Get["${queryString.Token[${currentTokenNumber}, "."]}"].AsJSON~}"]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
result:Add[${currentValue.AsJSON~}]
|
||||
|
||||
}
|
||||
while ${refIterator:Next(exists)}
|
||||
}
|
||||
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
static member:jsonvalueref QueryJson(jsonvalueref ref, string queryString)
|
||||
{
|
||||
if ${ref.Type.Equal[array]}
|
||||
{
|
||||
return ${This.QueryJsonArray[ref, ${queryString}]}
|
||||
}
|
||||
}
|
||||
|
||||
static member:jsonvalueref FilterArray(jsonvalueref ref, string queryString, string operator, int value)
|
||||
{
|
||||
echo "int version"
|
||||
}
|
||||
|
||||
static member:jsonvalueref FilterArray(jsonvalueref ref, string queryString, string operator, string value)
|
||||
{
|
||||
if !${ref.Type.Equal[array]}
|
||||
{
|
||||
echo "JsonHelper:FilterArray - First parameter should be a json array, but it is currently ${ref.Type}"
|
||||
return NULL
|
||||
}
|
||||
|
||||
variable jsonvalue result = "[]"
|
||||
variable jsoniterator refIterator
|
||||
variable int tokenCount
|
||||
variable int currentTokenNumber
|
||||
variable jsonvalue currentValue
|
||||
tokenCount:Set[${queryString.Count["."]}]
|
||||
tokenCount:Inc
|
||||
|
||||
|
||||
ref:GetIterator[refIterator]
|
||||
|
||||
if ${refIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if ${tokenCount.Equal[1]}
|
||||
{
|
||||
currentValue:SetValue["${refIterator.Value.Get["${queryString}"].AsJSON~}"]
|
||||
}
|
||||
else
|
||||
{
|
||||
currentValue:SetValue["${refIterator.Value.AsJSON~}"]
|
||||
|
||||
for(currentTokenNumber:Set[1]; ${currentTokenNumber} <= ${tokenCount}; currentTokenNumber:Inc)
|
||||
{
|
||||
currentValue:SetValue["${currentValue.Get["${queryString.Token[${currentTokenNumber}, "."]}"].AsJSON~}"]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ${operator.Equal["=="]}
|
||||
{
|
||||
echo "Checking equality"
|
||||
echo "currentValue: ${currentValue.AsString}, value: ${value}"
|
||||
echo "${currentValue.AsString.Equal[${value}]}"
|
||||
if ${currentValue.AsString.Equal[${value}]}
|
||||
{
|
||||
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
elseif ${operator.Equal[!=]}
|
||||
{
|
||||
if ${currentValue.NotEqual[${value}]}
|
||||
{
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
elseif ${operator.Equal[">"]}
|
||||
{
|
||||
if ${currentValue} > ${value}
|
||||
{
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
elseif ${operator.Equal["<"]}
|
||||
{
|
||||
if ${currentValue} < ${value}
|
||||
{
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
elseif ${operator.Equal[">="]}
|
||||
{
|
||||
if ${currentValue} >= ${value}
|
||||
{
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
elseif ${operator.Equal["<="]}
|
||||
{
|
||||
if ${currentValue} <= ${value}
|
||||
{
|
||||
result:Add["${refIterator.Value.AsJSON~}"]
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "JsonHelper:FilterArray - Second parameter should be a valid operator, but it is currently ${operator}"
|
||||
return NULL
|
||||
}
|
||||
|
||||
}
|
||||
while ${refIterator:Next(exists)}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
static member:bool Any(jsonvalueref ref, weakref obj, string functionName)
|
||||
{
|
||||
if !${ref.Type.Equal[array]}
|
||||
{
|
||||
echo "JsonHelper:Any - First parameter should be a json array, but it is currently ${ref.Type}"
|
||||
return NULL
|
||||
}
|
||||
|
||||
variable jsoniterator iter
|
||||
ref:GetIterator[iter]
|
||||
|
||||
if ${iter:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if ${obj.${functionName}[iter.Value]}
|
||||
{
|
||||
return true
|
||||
}
|
||||
}
|
||||
while ${iter:Next(exists)}
|
||||
}
|
||||
}
|
||||
|
||||
static member:jsonvalueref Map(jsonvalueref arr, weakref mapFunc)
|
||||
{
|
||||
if !${arr.Type.Equal[array]}
|
||||
{
|
||||
echo "JsonHelper:Map - First parameter should be a json array, but it is currently ${arr.Type}"
|
||||
return NULL
|
||||
}
|
||||
|
||||
variable jsonvalue result
|
||||
variable jsoniterator arrIterator
|
||||
arr:GetIterator[arrIterator]
|
||||
|
||||
if ${arrIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
echo "current: ${arrIterator.Value}, type: ${arrIterator.Value.Type}"
|
||||
result:Add["mapFunc["arrIterator.Value"]"]
|
||||
}
|
||||
while ${arrIterator:Next(exists)}
|
||||
}
|
||||
|
||||
|
||||
return result
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
; objectdef test
|
||||
; {
|
||||
; member:string MapName(jsonvalueref obj)
|
||||
; {
|
||||
; if !${obj.Type.Equal[object]}
|
||||
; {
|
||||
; echo "JsonHelper:MapName - First parameter should be a json object, but it is currently ${obj.Type}"
|
||||
; return NULL
|
||||
; }
|
||||
|
||||
; if !${obj.Has[Name]}
|
||||
; {
|
||||
; echo "JsonHelper:MapName - First parameter should be a json object with a Name property, but it is currently ${obj.Type}"
|
||||
; return NULL
|
||||
; }
|
||||
|
||||
; return ${obj.Get[Name]}
|
||||
; }
|
||||
|
||||
; member:jsonvalueref testArray()
|
||||
; {
|
||||
; ; variable jsonvalue testObj
|
||||
|
||||
; ; testObj:SetValue[$$>"{
|
||||
; ; "Name": "Obj1"
|
||||
; ; }"<$$]
|
||||
|
||||
; ; echo "ObjTest: ${This.MapName[testObj]}"
|
||||
|
||||
|
||||
; variable jsonvalue testArray
|
||||
|
||||
; testArray:SetValue[$$>"[
|
||||
; {"Id": 1, "Name": "Obj1", "Type": { "Name": "Obj1Type" }},
|
||||
; {"Id": 2, "Name": "Obj2", "Type": { "Name": "Obj2Type" }},
|
||||
; {"Id": 3, "Name": "Obj3", "Type": { "Name": "Obj3Type" }}
|
||||
|
||||
; ]"<$$]
|
||||
|
||||
|
||||
; ;echo "${MRJsonHelper.QueryJson[testArray, "Type.Name"]}"
|
||||
; ;echo "${MRJsonHelper.Map[testArray, This.MapName]}"
|
||||
; echo "${MRJsonHelper.FilterArray[testArray, "Id", "<=", 2]}"
|
||||
|
||||
; ; echo ${testArray.Get[, "Name"]}
|
||||
|
||||
|
||||
; ; results:SetValue[${}]
|
||||
; }
|
||||
; }
|
||||
|
||||
; function main()
|
||||
; {
|
||||
; variable test testObj
|
||||
|
||||
; echo ${testObj.testArray}
|
||||
; }
|
||||
315
common/KnowledgeBook.iss
Normal file
315
common/KnowledgeBook.iss
Normal file
@ -0,0 +1,315 @@
|
||||
#include "${LavishScript.HomeDirectory}/Scripts/mr/common/StringHelpers.iss"
|
||||
|
||||
objectdef AbilityEffect
|
||||
{
|
||||
variable int64 ID
|
||||
variable int64 Indentation
|
||||
variable string Description
|
||||
|
||||
method Initialize(jsonvalueref jo)
|
||||
{
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
echo "AbilityEffect:FromJSON ${jo.Type}"
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
|
||||
ID:Set["${jo.Get[ID]~}"]
|
||||
Indentation:Set["${jo.Get[Indentation]~}"]
|
||||
Description:Set["${jo.Get[Description]~}"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
|
||||
jo:SetInteger[ID, "${ID~}"]
|
||||
jo:SetInteger[Indentation, "${Indentation~}"]
|
||||
jo:SetString[Description, "${Description~}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef AbilityEffectCollection
|
||||
{
|
||||
variable index:AbilityEffect Effects
|
||||
|
||||
method AddEffectFromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
echo "AbilityEffectCollection:AddEffectFromJSON jo is not an object"
|
||||
return FALSE
|
||||
}
|
||||
|
||||
Effects:Insert[jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[array]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
jo:ForEach["This:AddEffectFromJSON[ForEach.Value]"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="[]"
|
||||
variable iterator effectIterator
|
||||
Effects:GetIterator[effectIterator]
|
||||
|
||||
if ${effectIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
jo:Add["${effectIterator.Value.AsJSON~}"]
|
||||
}
|
||||
while ${effectIterator:Next(exists)}
|
||||
}
|
||||
|
||||
return jo
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
objectdef AbilityDetail
|
||||
{
|
||||
variable int64 ID
|
||||
variable string Name
|
||||
variable string Description
|
||||
variable int Level
|
||||
variable string Tier
|
||||
variable int HealthCost
|
||||
variable int PowerCost
|
||||
variable int DissonanceCost
|
||||
variable int SavageryCost
|
||||
variable int ConcentrationCost
|
||||
variable float CastingTime
|
||||
variable float RecoveryTime
|
||||
variable float RecastTime
|
||||
variable float MaxDuration
|
||||
variable int HealthCostPerTick
|
||||
variable int PowerCostPerTick
|
||||
variable int DissonanceCostPerTick
|
||||
variable int SavageryCostPerTick
|
||||
variable int MaxAOETargets
|
||||
variable bool IsBeneficial
|
||||
variable bool DoesNotExpire
|
||||
variable bool GroupRestricted
|
||||
variable bool AllowRaid
|
||||
variable int TargetType
|
||||
variable int SpellBookType
|
||||
variable float MinRange
|
||||
variable float MaxRange
|
||||
variable AbilityEffectCollection Effects
|
||||
|
||||
method Initialize(jsonvalueref jo)
|
||||
{
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
|
||||
|
||||
Name:Set["${jo.Get[Name]~}"]
|
||||
Description:Set["${jo.Get[Description]~}"]
|
||||
ID:Set["${jo.Get[ID]~}"]
|
||||
Level:Set["${jo.Get[Level]~}"]
|
||||
Tier:Set["${jo.Get[Tier]~}"]
|
||||
HealthCost:Set["${jo.Get[HealthCost]~}"]
|
||||
PowerCost:Set["${jo.Get[PowerCost]~}"]
|
||||
DissonanceCost:Set["${jo.Get[DissonanceCost]~}"]
|
||||
SavageryCost:Set["${jo.Get[SavageryCost]~}"]
|
||||
ConcentrationCost:Set["${jo.Get[ConcentrationCost]~}"]
|
||||
CastingTime:Set["${jo.Get[CastingTime]~}"]
|
||||
RecoveryTime:Set["${jo.Get[RecoveryTime]~}"]
|
||||
RecastTime:Set["${jo.Get[RecastTime]~}"]
|
||||
MaxDuration:Set["${jo.Get[MaxDuration]~}"]
|
||||
HealthCostPerTick:Set["${jo.Get[HealthCostPerTick]~}"]
|
||||
PowerCostPerTick:Set["${jo.Get[PowerCostPerTick]~}"]
|
||||
DissonanceCostPerTick:Set["${jo.Get[DissonanceCostPerTick]~}"]
|
||||
SavageryCostPerTick:Set["${jo.Get[SavageryCostPerTick]~}"]
|
||||
MaxAOETargets:Set["${jo.Get[MaxAOETargets]~}"]
|
||||
IsBeneficial:Set["${jo.Get[IsBeneficial]~}"]
|
||||
DoesNotExpire:Set["${jo.Get[DoesNotExpire]~}"]
|
||||
GroupRestricted:Set["${jo.Get[GroupRestricted]~}"]
|
||||
AllowRaid:Set["${jo.Get[AllowRaid]~}"]
|
||||
TargetType:Set["${jo.Get[TargetType]~}"]
|
||||
SpellBookType:Set["${jo.Get[SpellBookType]~}"]
|
||||
MinRange:Set["${jo.Get[MinRange]~}"]
|
||||
MaxRange:Set["${jo.Get[MaxRange]~}"]
|
||||
Effects:FromJSON["${jo.Get["Effects"]~}"]
|
||||
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
|
||||
jo:SetString[Name, "${Name~}"]
|
||||
jo:SetString[Description, "${Description~}"]
|
||||
jo:SetString[ID, "${ID~}"]
|
||||
jo:SetInteger[Level, "${Level~}"]
|
||||
jo:SetString[Tier, "${Tier~}"]
|
||||
jo:SetInteger[HealthCost, "${HealthCost~}"]
|
||||
jo:SetInteger[PowerCost, "${PowerCost~}"]
|
||||
jo:SetInteger[DissonanceCost, "${DissonanceCost~}"]
|
||||
jo:SetInteger[SavageryCost, "${SavageryCost~}"]
|
||||
jo:SetInteger[ConcentrationCost, "${ConcentrationCost~}"]
|
||||
jo:SetNumber[CastingTime, "${CastingTime~}"]
|
||||
jo:SetNumber[RecoveryTime, "${RecoveryTime~}"]
|
||||
jo:SetNumber[RecastTime, "${RecastTime~}"]
|
||||
jo:SetNumber[MaxDuration, "${MaxDuration~}"]
|
||||
jo:SetInteger[HealthCostPerTick, "${HealthCostPerTick~}"]
|
||||
jo:SetInteger[PowerCostPerTick, "${PowerCostPerTick~}"]
|
||||
jo:SetInteger[DissonanceCostPerTick, "${DissonanceCostPerTick~}"]
|
||||
jo:SetInteger[SavageryCostPerTick, "${SavageryCostPerTick~}"]
|
||||
jo:SetInteger[MaxAOETargets, "${MaxAOETargets~}"]
|
||||
jo:SetBool[IsBeneficial, "${IsBeneficial~}"]
|
||||
jo:SetBool[DoesNotExpire, "${DoesNotExpire~}"]
|
||||
jo:SetBool[GroupRestricted, "${GroupRestricted~}"]
|
||||
jo:SetBool[AllowRaid, "${AllowRaid~}"]
|
||||
jo:SetInteger[TargetType, "${TargetType~}"]
|
||||
jo:SetInteger[SpellBookType, "${SpellBookType~}"]
|
||||
jo:SetNumber[MinRange, "${MinRange~}"]
|
||||
jo:SetNumber[MaxRange, "${MaxRange~}"]
|
||||
jo:Set[Effects, "${Effects.AsJSON~}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
objectdef Ability
|
||||
{
|
||||
|
||||
variable string Name
|
||||
variable AbilityDetail Details
|
||||
variable int HighestLevel
|
||||
variable int CurrentID
|
||||
|
||||
method Initialize(jsonvalueref jo)
|
||||
{
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
echo "Ability:FromJson jo is not an object"
|
||||
return FALSE
|
||||
}
|
||||
|
||||
Name:Set["${jo.Get[Name]~}"]
|
||||
CurrentID:Set[${jo.GetInteger["CurrentID"]}]
|
||||
HighestLevel:Set[${jo.GetInteger["HighestLevel"]}]
|
||||
Details:FromJSON["${jo.Get["Details"]~}"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
|
||||
jo:SetString[Name, "${Name~}"]
|
||||
jo:SetInteger[CurrentID, ${CurrentID}]
|
||||
jo:SetInteger[HighestLevel, ${HighestLevel}]
|
||||
jo:Set[Details, "${Details.AsJSON~}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef KnowledgeBook
|
||||
{
|
||||
variable collection:Ability Abilities
|
||||
|
||||
method AddAbilityFromJSON(jsonvalueref jo)
|
||||
{
|
||||
variable StringHelpers stringHelpers
|
||||
variable string abilityLine = "${stringHelpers.StripRomanNumerals[${jo.Get["Name"]}]}"
|
||||
|
||||
if ${jo.GetInteger["Level"]} < ${Abilities.Element["${abilityLine}"].HighestLevel}
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
variable jsonvalue tiers = "[]"
|
||||
variable jsonvalue abilityLineJSON = "{}"
|
||||
|
||||
abilityLineJSON:SetValue[$$>"{
|
||||
"Name": "${abilityLine~}",
|
||||
"HighestLevel": ${jo.GetInteger["Level"]},
|
||||
"CurrentID": ${jo.GetInteger["ID"]},
|
||||
"Details": ${jo.AsJSON~}
|
||||
}"<$$]
|
||||
|
||||
Abilities:Set["${abilityLine}", abilityLineJSON]
|
||||
|
||||
}
|
||||
|
||||
method FromFile(string filename)
|
||||
{
|
||||
variable jsonvalue jo
|
||||
|
||||
jo:ParseFile["${filename}"]
|
||||
|
||||
This:FromJSON[jo]
|
||||
}
|
||||
|
||||
method WriteFile(string filename)
|
||||
{
|
||||
This.AsJSON:WriteFile["${filename}", multiline]
|
||||
}
|
||||
|
||||
method AddAbilityLineFromJson(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[object]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
Abilities:Set[${jo.Get["Name"].AsJSON}, jo]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
if !${jo.Type.Equal[array]}
|
||||
{
|
||||
echo "jo is not an array ${jo.Type}"
|
||||
return FALSE
|
||||
}
|
||||
jo:ForEach["This:AddAbilityLineFromJson[ForEach.Value]"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="[]"
|
||||
variable iterator abilityIterator
|
||||
Abilities:GetIterator[abilityIterator]
|
||||
|
||||
if ${abilityIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
jo:Add["${abilityIterator.Value.AsJSON~}"]
|
||||
}
|
||||
while ${abilityIterator:Next(exists)}
|
||||
}
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
52
common/MRSkin.json
Normal file
52
common/MRSkin.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"skin": {
|
||||
"name": "MRSkin",
|
||||
"brushes": {
|
||||
"window.titleBar.backgroundBrush": {
|
||||
"color": "#211C18"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"window.title": {
|
||||
"verticalAlignment": "center",
|
||||
"margin": [
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"button": {
|
||||
"jsonTemplate": "default:button",
|
||||
"margin": [
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"color": "#f4f3ee"
|
||||
},
|
||||
"checkbox": {
|
||||
"jsonTemplate": "default:checkbox",
|
||||
"margin": [
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
},
|
||||
"window": {
|
||||
"jsonTemplate": "default:window",
|
||||
"backgroundBrush": {
|
||||
"color": "#463f3a"
|
||||
},
|
||||
"color": "#f4f3ee",
|
||||
"font": {
|
||||
"face": "Segoe UI",
|
||||
"height": 16
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
common/StringHelpers.iss
Normal file
37
common/StringHelpers.iss
Normal file
@ -0,0 +1,37 @@
|
||||
objectdef MRStringHelpers
|
||||
{
|
||||
static member:string GetLastWord(string spellName)
|
||||
{
|
||||
variable int tokenCount = ${spellName.Count[" "]}
|
||||
return ${spellName.Token[${tokenCount:Inc}, " "].Trim}
|
||||
}
|
||||
|
||||
static member:bool IsRomanNumearl(string value)
|
||||
{
|
||||
variable int currentIndex
|
||||
for (currentIndex:Set[1] ; ${currentIndex} < ${value.Length} ; currentIndex:Inc)
|
||||
{
|
||||
if !${value.Mid[${currentIndex}, 1].Equal["i"]} && !${value.Mid[${currentIndex}, 1].Equal["v"]} && !${value.Mid[${currentIndex}, 1].Equal["x"]}
|
||||
{
|
||||
return FALSE
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE
|
||||
}
|
||||
|
||||
static member:string StripRomanNumerals(string spellName)
|
||||
{
|
||||
variable string lastWord = ${MRStringHelpers.GetLastWord[${spellName}]}
|
||||
|
||||
|
||||
if ${MRStringHelpers.IsRomanNumearl[${lastWord}]}
|
||||
{
|
||||
variable int baseStringLength
|
||||
baseStringLength:Set[${spellName.Length} - ${lastWord.Length}]
|
||||
return ${spellName.Mid[1, ${baseStringLength}].Trim}
|
||||
}
|
||||
|
||||
return ${spellName}
|
||||
}
|
||||
}
|
||||
25
encounter/vs.iss
Normal file
25
encounter/vs.iss
Normal file
@ -0,0 +1,25 @@
|
||||
function main()
|
||||
{
|
||||
variable index:actor Actors
|
||||
variable iterator ActorIterator
|
||||
|
||||
EQ2:QueryActors[Actors]
|
||||
Actors:GetIterator[ActorIterator]
|
||||
while 1
|
||||
{
|
||||
do
|
||||
{
|
||||
echo "Aura: ${ActorIterator.Value.Aura}"
|
||||
if ${ActorIterator.Value.Aura.Equal["result_fire_green"]}
|
||||
{
|
||||
echo "Clicking statue: ${ActorIterator.Value.ID}"
|
||||
EQ2Execute apply_verb ${ActorIterator.Value.ID} "Open soulbox briefly"
|
||||
}
|
||||
|
||||
}
|
||||
while ${ActorIterator:Next(exists)}
|
||||
wait 5
|
||||
echo "Loop"
|
||||
ActorIterator:First
|
||||
}
|
||||
}
|
||||
0
faction/tg.iss
Normal file
0
faction/tg.iss
Normal file
22
mr.iss
Normal file
22
mr.iss
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
function main(... params)
|
||||
{
|
||||
if ${params[1].Lower.Equal["osa"]}
|
||||
{
|
||||
run mr/osa/osa
|
||||
}
|
||||
elseif ${params[1].Lower.Equal["bot"]}
|
||||
{
|
||||
run mr/bot/bot
|
||||
}
|
||||
elseif ${params[1].Lower.Equal["export"]}
|
||||
{
|
||||
|
||||
run mr/bot/export_abilities
|
||||
}
|
||||
elseif ${params[1].Lower.Equal["test"]}
|
||||
{
|
||||
ConsoleClear
|
||||
run mr/test
|
||||
}
|
||||
}
|
||||
147
osa/osa.iss
Normal file
147
osa/osa.iss
Normal file
@ -0,0 +1,147 @@
|
||||
objectdef ActorToMonitor
|
||||
{
|
||||
variable string ID
|
||||
variable string Name
|
||||
variable int Health
|
||||
variable string TargetName
|
||||
variable int ThreatToNext
|
||||
variable float Distance
|
||||
|
||||
method Initialize(string id, string name, int health, string targetName, int threatToNext, float distance)
|
||||
{
|
||||
ID:Set["${id}"]
|
||||
Name:Set["${name}"]
|
||||
Health:Set[${health}]
|
||||
TargetName:Set["${targetName}"]
|
||||
ThreatToNext:Set[${threatToNext}]
|
||||
Distance:Set[${distance}]
|
||||
}
|
||||
|
||||
method FromJSON(jsonvalueref jo)
|
||||
{
|
||||
ID:Set["${jo.Get[ID]~}"]
|
||||
Name:Set["${jo.Get[Name]~}"]
|
||||
Health:Set["${jo.Get[Health]~}"]
|
||||
TargetName:Set["${jo.Get[Health]~}"]
|
||||
ThreatToNext:Set["${jo.Get[ThreatToNext]~}"]
|
||||
Distance:Set["${jo.Get[Distance]~}"]
|
||||
}
|
||||
|
||||
member:jsonvalueref AsJSON()
|
||||
{
|
||||
variable jsonvalue jo="{}"
|
||||
jo:SetString[ID, "${ID~}"]
|
||||
jo:SetString[Name, "${Name~}"]
|
||||
jo:SetString[Health, "${Health~}"]
|
||||
jo:SetString[TargetName, "${TargetName~}"]
|
||||
jo:SetString[ThreatToNext, "${ThreatToNext~}"]
|
||||
jo:SetString[Distance, "${Distance}"]
|
||||
|
||||
return jo
|
||||
}
|
||||
}
|
||||
|
||||
objectdef OSAController
|
||||
{
|
||||
variable string SelectedItem
|
||||
variable collection:ActorToMonitor ActorsWithTarget
|
||||
variable string locationStorageFile = "${LavishScript.HomeDirectory}/Scripts/mr/saves/osa/location.json"
|
||||
variable string windowName = "mr.osa.window"
|
||||
|
||||
method Initialize()
|
||||
{
|
||||
variable jsonvalue location
|
||||
location:ParseFile["${locationStorageFile}"]
|
||||
LGUI2:LoadPackageFile[osa.json]
|
||||
LGUI2.Element["${windowName}"]:ApplyStyleJSON["${location.AsJSON~}"]
|
||||
}
|
||||
|
||||
method Shutdown()
|
||||
{
|
||||
variable jsonvalue location = ${LGUI2.Element["${windowName}"].StorePlacement[1]}
|
||||
location:WriteFile["${locationStorageFile}"]
|
||||
LGUI2:UnloadPackageFile[osa.json]
|
||||
}
|
||||
|
||||
method OnClose()
|
||||
{
|
||||
Script:End
|
||||
}
|
||||
|
||||
method OnChangeTarget()
|
||||
{
|
||||
Actor[${SelectedItem}]:DoTarget
|
||||
Context:SetHandled[1]
|
||||
}
|
||||
|
||||
method RefreshMobs()
|
||||
{
|
||||
variable index:actor Actors
|
||||
variable iterator ActorIterator
|
||||
variable set CurrentActors
|
||||
variable bool FireRefreshEvent=FALSE
|
||||
|
||||
EQ2:QueryActors[Actors, Type =- "NPC" && Target != NULL]
|
||||
Actors:GetIterator[ActorIterator]
|
||||
|
||||
if ${ActorIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if ${ActorIterator.Value.Target.Name.NotNULLOrEmpty}
|
||||
{
|
||||
; TODO: Maybe implement group/raid only checkbox instead of that being the default?
|
||||
if ${Me.Name.Equal[${ActorIterator.Value.Target.Name}]} || ${Me.Group[${ActorIterator.Value.Target.Name}](exists)} || ${Me.Raid[${ActorIterator.Value.Target.Name}](exists)}
|
||||
{
|
||||
if !${ActorsWithTarget.Element[${ActorIterator.Value.ID}](exists)}
|
||||
{
|
||||
ActorsWithTarget:Set["${ActorIterator.Value.ID}", "${ActorIterator.Value.ID}", "${ActorIterator.Value.Name}", ${ActorIterator.Value.Health}, "${ActorIterator.Value.Target.Name}", ${ActorIterator.Value.ThreatToNext}, ${ActorIterator.Value.Distance}]
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
ActorsWithTarget.Element["${ActorIterator.Value.ID}"].TargetName:Set["${ActorIterator.Value.Target.Name}"]
|
||||
ActorsWithTarget.Element["${ActorIterator.Value.ID}"].Health:Set["${ActorIterator.Value.Health}"]
|
||||
ActorsWithTarget.Element["${ActorIterator.Value.ID}"].ThreatToNext:Set["${ActorIterator.Value.ThreatToNext}"]
|
||||
ActorsWithTarget.Element["${ActorIterator.Value.ID}"].Distance:Set["${ActorIterator.Value.Distance}"]
|
||||
}
|
||||
|
||||
FireRefreshEvent:Set[TRUE]
|
||||
CurrentActors:Add["${ActorIterator.Value.ID}"]
|
||||
}
|
||||
}
|
||||
}
|
||||
while ${ActorIterator:Next(exists)}
|
||||
}
|
||||
|
||||
if ${ActorsWithTarget.FirstKey(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
if !${CurrentActors.Contains[${ActorsWithTarget.CurrentKey}]}
|
||||
{
|
||||
ActorsWithTarget:Erase[${ActorsWithTarget.CurrentKey}]
|
||||
|
||||
FireRefreshEvent:Set[TRUE]
|
||||
}
|
||||
}
|
||||
while ${ActorsWithTarget.NextKey(exists)}
|
||||
}
|
||||
|
||||
if ${FireRefreshEvent}
|
||||
{
|
||||
LGUI2.Element[MrOSAController.events]:FireEventHandler[onUpdateActors]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
variable(global) OSAController MrOSAController
|
||||
|
||||
function main()
|
||||
{
|
||||
while 1
|
||||
{
|
||||
MrOSAController:RefreshMobs
|
||||
wait 5
|
||||
}
|
||||
}
|
||||
151
osa/osa.json
Normal file
151
osa/osa.json
Normal file
@ -0,0 +1,151 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"templates": {
|
||||
"ActorsWithTargetsView": {
|
||||
"jsonTemplate": "listboxitem",
|
||||
"padding": 2,
|
||||
"content": {
|
||||
"type": "stackpanel",
|
||||
"orientation": "horizontal",
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"width": 120,
|
||||
"padding": 2,
|
||||
"margin": [
|
||||
0,
|
||||
0,
|
||||
2,
|
||||
0
|
||||
],
|
||||
"textBinding": {
|
||||
"pullFormat": "${_CONTEXTITEMDATA_.Get[Name]}",
|
||||
"pullReplaceNull": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"width": 45,
|
||||
"padding": 2,
|
||||
"textBinding": {
|
||||
"pullFormat": "@ ${_CONTEXTITEMDATA_.Get[Health]}%",
|
||||
"pullReplaceNull": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"width": 75,
|
||||
"padding": 2,
|
||||
"textBinding": {
|
||||
"pullFormat": "on ${_CONTEXTITEMDATA_.Get[TargetName]}",
|
||||
"pullReplaceNull": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"width": 45,
|
||||
"padding": 2,
|
||||
"textBinding": {
|
||||
"pullFormat": "T: ${_CONTEXTITEMDATA_.Get[ThreatToNext]}",
|
||||
"pullReplaceNull": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "textblock",
|
||||
"width": 45,
|
||||
"padding": 2,
|
||||
"textBinding": {
|
||||
"pullFormat": "D: ${_CONTEXTITEMDATA_.Get[Distance]}",
|
||||
"pullReplaceNull": ""
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"type": "panel",
|
||||
"visibility": "hidden",
|
||||
"name": "MrOSAController.events"
|
||||
},
|
||||
{
|
||||
"type": "window",
|
||||
"title": "OSA",
|
||||
"name": "mr.osa.window",
|
||||
"borderThickness": 2,
|
||||
"hideOnClose": false,
|
||||
"minSize": {
|
||||
"width": 175,
|
||||
"height": 200
|
||||
},
|
||||
"height": 200,
|
||||
"width": 350,
|
||||
"maxSize": {
|
||||
"width": 400,
|
||||
"height": 300
|
||||
},
|
||||
"backgroundBrush": {
|
||||
"color": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onCloseButtonClick": [
|
||||
"method",
|
||||
"MrOSAController",
|
||||
"OnClose"
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"type": "stackpanel",
|
||||
"uniform": true,
|
||||
"heightFactor": 1,
|
||||
"font": {
|
||||
"face": "Terminal",
|
||||
"fixed": true,
|
||||
"height": 10
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"type": "listbox",
|
||||
"name": "mobs",
|
||||
"verticalAlignment": "stretch",
|
||||
"horizontalAlignment": "stretch",
|
||||
"itemsBinding": {
|
||||
"pullFormat": "${MrOSAController.ActorsWithTarget.AsJSON[array]}",
|
||||
"pullHook": {
|
||||
"elementName": "MrOSAController.events",
|
||||
"flags": "global",
|
||||
"event": "onUpdateActors"
|
||||
}
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onSelectionChanged": [
|
||||
"method",
|
||||
"MrOSAController",
|
||||
"OnChangeTarget"
|
||||
]
|
||||
},
|
||||
"selectedItemBinding": {
|
||||
"pushFormat": [
|
||||
"MrOSAController.SelectedItem:Set[\"",
|
||||
"\"]"
|
||||
],
|
||||
"pullFormat": "${MrOSAController.selectedItem}"
|
||||
},
|
||||
"selectedItemBindingProperty": "ID",
|
||||
"itemViewGenerators": {
|
||||
"default": {
|
||||
"type": "template",
|
||||
"template": "ActorsWithTargetsView"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
1
saves/osa/location.json
Normal file
1
saves/osa/location.json
Normal file
@ -0,0 +1 @@
|
||||
{"x":767.0,"y":1356.0,"xFactor":0.0,"yFactor":0.0,"width":361.0,"height":200.0,"widthFactor":0.0,"heightFactor":0.0,"minSize":[150.0,200.0],"maxSize":[400.0,300.0],"margin":[0.0,0.0,0.0,0.0],"padding":[0.0,0.0,0.0,0.0],"horizontalAlignment":"left","verticalAlignment":"top","opacity":1.0,"visibility":"visible","strata":0.50,"clipToParent":false,"anchorMode":"static","anchorLocation":[0.0,0.0],"anchorLocationFactor":[0.0,0.0],"anchorOffset":[0.0,0.0],"anchorOffsetFactor":[0.0,0.0]}
|
||||
1559
settings/EQ2Save_Antonia Bayle_Ihaihu.xml
Normal file
1559
settings/EQ2Save_Antonia Bayle_Ihaihu.xml
Normal file
File diff suppressed because it is too large
Load Diff
464
settings/setting_keys.json
Normal file
464
settings/setting_keys.json
Normal file
@ -0,0 +1,464 @@
|
||||
{
|
||||
"settings": [
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack",
|
||||
"content": "Disable Cast Stack(CS)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_buffs",
|
||||
"content": "Disable CS_Buffs",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_buffs\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_cure",
|
||||
"content": "Disable CS_Cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_cure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_curecurse",
|
||||
"content": "Disable CS_CureCurse",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_curecurse\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_heal",
|
||||
"content": "Disable CS_Heal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_heal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_powerheal",
|
||||
"content": "Disable CS_PowerHeal",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_powerheal\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_res",
|
||||
"content": "Disable CS_Res",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_res\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_combat",
|
||||
"content": "Disable CS_Combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_combat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_ca",
|
||||
"content": "Disable CS_CA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disablecaststack_ca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_namedca",
|
||||
"content": "Disable CS_NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_namedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nonnamedca",
|
||||
"content": "Disable CS_NonNamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nonnamedca\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_debuff",
|
||||
"content": "Disable CS_Debuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_debuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_nameddebuff",
|
||||
"content": "Disable CS_NamedDebuff",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_nameddebuff\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disablecaststack_items",
|
||||
"content": "Disable CS_Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_disablecaststack_items\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_cancelabilitiestogroupcure",
|
||||
"content": "X abilities to group cure",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_cancelabilitiestogroupcure\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_forcenamedcatab",
|
||||
"content": "Force NamedCA",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_forcenamedcatab\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_acceptloot",
|
||||
"content": "Accept Loot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_acceptloot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot",
|
||||
"content": "Loot Corpses/Chests",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_loot_incombat",
|
||||
"content": "Loot InCombat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_loot_incombat\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_facenpc",
|
||||
"content": "Face mob in combat",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_facenpc\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_rangedattack",
|
||||
"content": "Ranged Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_rangedattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_meleeattack",
|
||||
"content": "Melee Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_meleeattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movemelee",
|
||||
"content": "Move into Melee Range",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movemelee\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movebehind",
|
||||
"content": "Move behind mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movebehind\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_moveinfront",
|
||||
"content": "Move in front of mob",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_moveinfront\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_turnoffattack",
|
||||
"content": "Turn Off Attack",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_turnoffattack\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoremovetoattackhealthcheck",
|
||||
"content": "Ignore NPC HP to move",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoremovetoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_ignoretargettoattackhealthcheck",
|
||||
"content": "Ignore NPC HP (100%)",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting([\"checkbox_settings_ignoretargettoattackhealthcheck\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space1",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space1\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_consumeitems",
|
||||
"content": "Enable Consume Items",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_consumeitems\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space3",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space3\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_disable_dbc_claim",
|
||||
"content": "Disable DBC Claim",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_disable_dbc_claim\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space5",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space5\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_row2space6",
|
||||
"content": "Spacer",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_row2space6\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_encountersmartnukes",
|
||||
"content": "Encounter Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_encountersmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_aesmartnukes",
|
||||
"content": "AE Smart Nukes",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_aesmartnukes\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_movetoarea",
|
||||
"content": "Allow Camp Spot",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_movetoarea\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "checkbox",
|
||||
"name": "checkbox_settings_assist",
|
||||
"content": "Auto Assist",
|
||||
"checkedBinding": {
|
||||
"pullFormat": "MRBotController.GetSetting[\"checkbox_settings_assist\"]",
|
||||
"pushFormat": [
|
||||
"MRBotController:SetSetting[\"",
|
||||
"\"]"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
188
settings/settings.iss
Normal file
188
settings/settings.iss
Normal file
@ -0,0 +1,188 @@
|
||||
; objectdef CastStackAbility
|
||||
; {
|
||||
; variable string Name
|
||||
; variable string AbilityTarget
|
||||
; variable string AbilityType
|
||||
; variable int Percentage
|
||||
; variable string Tag
|
||||
|
||||
; method Initialize(jsonvalueref jo)
|
||||
; {
|
||||
; This:FromJSON[jo]
|
||||
; }
|
||||
|
||||
; method FromJSON(jsonvalueref jo)
|
||||
; {
|
||||
; Name:Set["${jo.Get[Name]~}"]
|
||||
; AbilityTarget:Set["${jo.Get[AbilityTarget]~}"]
|
||||
; AbilityType:Set["${jo.Get[AbilityType]~}"]
|
||||
; Percentage:Set[${jo.Get[Percentage]~}]
|
||||
; ; Tag:Set["${jo.Get[Tag]~}"]
|
||||
; }
|
||||
|
||||
; member:jsonvalueref AsJSON()
|
||||
; {
|
||||
; variable jsonvalue jo="{}"
|
||||
; jo:SetString[Name, "${Name~}"]
|
||||
; jo:SetString[AbilityTarget, "${AbilityTarget~}"]
|
||||
; jo:SetString[AbilityType, "${AbilityType~}"]
|
||||
; jo:SetString[Percentage, ${Percentage~}]
|
||||
; jo:SetString[Tag, "${Tag~}"]
|
||||
|
||||
; return jo
|
||||
; }
|
||||
; }
|
||||
|
||||
; objectdef CastStackContainer
|
||||
; {
|
||||
; variable index:CastStackAbility Abilities
|
||||
|
||||
; method AddAbilityFromJSON(jsonvalueref jo)
|
||||
; {
|
||||
; if !${jo.Type.Equal[object]}
|
||||
; {
|
||||
; return FALSE
|
||||
; }
|
||||
; Abilities:Insert[jo]
|
||||
; }
|
||||
|
||||
; member:jsonvalueref AsJSON()
|
||||
; {
|
||||
; variable jsonvalue jo="[]"
|
||||
; variable iterator abilityIterator
|
||||
; Abilities:GetIterator[abilityIterator]
|
||||
|
||||
; if ${abilityIterator:First(exists)}
|
||||
; {
|
||||
; do
|
||||
; {
|
||||
|
||||
; jo:Add["${abilityIterator.Value.AsJSON~}"]
|
||||
; }
|
||||
; while ${abilityIterator:Next(exists)}
|
||||
; }
|
||||
|
||||
; return jo
|
||||
; }
|
||||
; }
|
||||
|
||||
; objectdef Profile
|
||||
; {
|
||||
; variable string Name
|
||||
; variable jsonvalue Settings = "{}"
|
||||
; variable jsonvalue Setup
|
||||
; variable jsonvalue Aliases
|
||||
; variable CastStackContainer CastStack
|
||||
|
||||
; method Initialize(jsonvalueref jo)
|
||||
; {
|
||||
; This:FromJSON[jo]
|
||||
; }
|
||||
|
||||
; member:bool GetSettingValue(string key)
|
||||
; {
|
||||
; echo "Profile.GetSettingValue[${key}]"
|
||||
; return ${This.Settings.Get["${key}"]}
|
||||
; }
|
||||
|
||||
; method FromJSON(jsonvalueref jo)
|
||||
; {
|
||||
; Name:Set["${jo.Get["Name"]~}"]
|
||||
; Settings:SetValue["${jo.Get["Settings"]~}"]
|
||||
; Setup:SetValue["${jo.Get["Setup"]~}"]
|
||||
; Aliases:SetValue["${jo.Get["Aliases"]~}"]
|
||||
; jo.Get["CastStack"]:ForEach["CastStack:AddAbilityFromJSON[ForEach.Value]"]
|
||||
|
||||
; }
|
||||
|
||||
; member:jsonvalueref AsJSON()
|
||||
; {
|
||||
; variable jsonvalue jo="{}"
|
||||
; jo:Set["Name", "${This.Name.AsJSON~}"]
|
||||
; jo:Set["Settings", "${Settings.AsJSON~}"]
|
||||
; jo:Set["Setup", "${Setup.AsJSON~}"]
|
||||
; jo:Set["Aliases", "${Aliases.AsJSON~}"]
|
||||
; jo:Set["CastStack", "${CastStack.AsJSON~}"]
|
||||
|
||||
; return jo
|
||||
; }
|
||||
; }
|
||||
|
||||
; objectdef BotSettings
|
||||
; {
|
||||
; variable string DefaultProfile
|
||||
; variable collection:Profile Profiles
|
||||
|
||||
; method FromFile(string filename)
|
||||
; {
|
||||
; variable jsonvalue settingsJson
|
||||
; variable BotSettings settings
|
||||
; settingsJson:ParseFile["${filename}"]
|
||||
|
||||
; This:FromJSON[settingsJson]
|
||||
; }
|
||||
|
||||
; member:bool IsSettingChecked(string key)
|
||||
; {
|
||||
; echo "BotSettings.IsSettingChecked[${key}]"
|
||||
; return ${This.CurrentProfile.GetSettingValue["${key}"].Equal[TRUE]}
|
||||
; }
|
||||
|
||||
; method FromJSON(jsonvalueref jo)
|
||||
; {
|
||||
; DefaultProfile:Set[${jo.Get["DefaultProfile"]}]
|
||||
; variable jsoniterator profileIterator
|
||||
; jo.Get["Profiles"]:GetIterator[profileIterator]
|
||||
; if ${profileIterator:First(exists)}
|
||||
; {
|
||||
; do
|
||||
; {
|
||||
; Profiles:Set[${profileIterator.Key}, profileIterator.Value]
|
||||
; }
|
||||
; while ${profileIterator:Next(exists)}
|
||||
; }
|
||||
; }
|
||||
|
||||
; member:jsonvalueref AsJSON()
|
||||
; {
|
||||
; variable jsonvalue jo="{}"
|
||||
; jo:Set[DefaultProfile, "${DefaultProfile.AsJSON~}"]
|
||||
; jo:Set[Profiles, "${Profiles.AsJSON~}"]
|
||||
; return jo
|
||||
; }
|
||||
|
||||
; member:weakref CurrentProfile()
|
||||
; {
|
||||
; return Profiles.Element["${This.DefaultProfile}"]
|
||||
; }
|
||||
; }
|
||||
|
||||
objectdef SettingsController
|
||||
{
|
||||
method Initialize()
|
||||
{
|
||||
LGUI2:LoadPackageFile["${LavishScript.HomeDirectory}/scripts/mr/common/MRSkin.json"]
|
||||
LGUI2:LoadPackageFile["settings.json"]
|
||||
}
|
||||
|
||||
method Shutdown()
|
||||
{
|
||||
LGUI2:UnloadPackageFile["settings.json"]
|
||||
Event[OnBotClose]:Execute
|
||||
}
|
||||
|
||||
method OnClose()
|
||||
{
|
||||
Script:End
|
||||
}
|
||||
}
|
||||
|
||||
variable(global) SettingsController MRSettingsController
|
||||
|
||||
function main()
|
||||
{
|
||||
while 1
|
||||
{
|
||||
wait 5
|
||||
}
|
||||
}
|
||||
71
settings/settings.json
Normal file
71
settings/settings.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"$schema": "http://www.lavishsoft.com/schema/lgui2Package.json",
|
||||
"elements": [
|
||||
{
|
||||
"type": "window",
|
||||
"title": "MR Bot Settings",
|
||||
"name": "mr.bot.settings",
|
||||
"borderThickness": 2,
|
||||
"hideOnClose": false,
|
||||
"minSize": {
|
||||
"width": 450,
|
||||
"height": 200
|
||||
},
|
||||
"maxSize": {
|
||||
"height": 600,
|
||||
"width": 800
|
||||
},
|
||||
"eventHandlers": {
|
||||
"onCloseButtonClick": [
|
||||
"method",
|
||||
"MRSettingsController",
|
||||
"OnClose"
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"type": "tabcontrol",
|
||||
"heightFactor": 1,
|
||||
"horizontalAlignment": "stretch",
|
||||
"verticalAlignment": "stretch",
|
||||
"tabs": [
|
||||
{
|
||||
"type": "tab",
|
||||
"header": "General",
|
||||
"content": {
|
||||
"type": "dockpanel",
|
||||
"_dock": "top",
|
||||
"padding": 2,
|
||||
"horizontalAlignment": "stretch",
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "General Settings",
|
||||
"horizontalAlignment": "center",
|
||||
"verticalAlignment": "center"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "tab",
|
||||
"header": "Cast Stack",
|
||||
"content": {
|
||||
"type": "dockpanel",
|
||||
"_dock": "top",
|
||||
"padding": 2,
|
||||
"horizontalAlignment": "stretch",
|
||||
"children": [
|
||||
{
|
||||
"type": "textblock",
|
||||
"text": "Cast Stack Settings",
|
||||
"horizontalAlignment": "center",
|
||||
"verticalAlignment": "center"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
25
settings/settings_test.iss
Normal file
25
settings/settings_test.iss
Normal file
@ -0,0 +1,25 @@
|
||||
function main()
|
||||
{
|
||||
; LavisSettings:AddSet[Test Set 1]
|
||||
variable settingsetref Profiles
|
||||
variable settingsetref CurrentProfile
|
||||
variable settingsetref CastStack
|
||||
|
||||
LavishSettings:Import["EQ2Save_Antonia Bayle_Ihaihu.xml"]
|
||||
Profiles:Set[${LavishSettings[Profiles]}]
|
||||
CurrentProfile:Set[${Profiles.FindSet[${Profiles.FindSetting[DefaultProfiles]}]}]
|
||||
CastStack:Set[${CurrentProfile.FindSet[CastStack]}]
|
||||
|
||||
variable iterator CastStackIterator
|
||||
CastStack:GetSetIterator[CastStackIterator]
|
||||
if ${CastStackIterator:First(exists)}
|
||||
{
|
||||
do
|
||||
{
|
||||
echo "${CastStackIterator.Value.FindSetting[Type]}: ${CastStackIterator.Value.FindSetting[__SourceName]}"
|
||||
}
|
||||
while ${CastStackIterator:Next(exists)}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
39
test.iss
Normal file
39
test.iss
Normal file
@ -0,0 +1,39 @@
|
||||
#include "${LavishScript.HomeDirectory}/Scripts/mr/common/KnowledgeBook.iss"
|
||||
|
||||
function main()
|
||||
{
|
||||
variable jsonvalue effect
|
||||
effect:SetValue[$$>{
|
||||
"description": "Inflicts 559 disease damage on targets in Area of Effect."
|
||||
}<$$]
|
||||
|
||||
variable string description
|
||||
|
||||
description:Set["${effect.Get["description"]}"]
|
||||
|
||||
if ${description.Left[8].NotEqual["Inflicts"]}
|
||||
{
|
||||
echo "0"
|
||||
return 0
|
||||
}
|
||||
|
||||
variable int64 minDamage
|
||||
variable int64 maxDamage
|
||||
variable string damageType
|
||||
|
||||
minDamage:Set["${description.Token[2, " "].Replace[",", ""]}"]
|
||||
if ${description.Token[3, " "].Equal["-"]}
|
||||
{
|
||||
maxDamage:Set["${description.Token[4, " "].Replace[",", ""]}"]
|
||||
damageType:Set["${description.Token[5, " "]}"]
|
||||
}
|
||||
else
|
||||
{
|
||||
maxDamage:Set["${description.Token[2, " "].Replace[",", ""]}"]
|
||||
damageType:Set["${description.Token[3, " "]}"]
|
||||
}
|
||||
|
||||
echo "${description}"
|
||||
echo "${minDamage} - ${maxDamage} ${damageType} damage"
|
||||
}
|
||||
|
||||
88
utilities/ConfigConverter.iss
Normal file
88
utilities/ConfigConverter.iss
Normal file
@ -0,0 +1,88 @@
|
||||
objectdef MRConfigConverter
|
||||
{
|
||||
member OgreProfileToMRProfile(string ogreSettingsFilePath, string mrSettingsFilePath)
|
||||
{
|
||||
variable settingsetref ogreSetttings
|
||||
variable settingsetref profiles
|
||||
|
||||
LavishSettings:Import[${ogreSettingsFilePath}]
|
||||
|
||||
profiles:Set[${LavishSettings[Profiles]}]
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
; objectdef SettingsHelper
|
||||
; {
|
||||
; method ConvertFromOgre(string settingsFile)
|
||||
; {
|
||||
; ; variable settingsetref Profiles
|
||||
; ; variable settingsetref AliasSettings
|
||||
; ; variable settingsetref CurrentProfile
|
||||
; ; variable settingsetref CastStackSettings
|
||||
; ; variable collection:CastStackAbility CastStack
|
||||
; ; variable collection:string Aliases
|
||||
; LavishSettings:Import[${settingsFile}]
|
||||
; Profiles:Set[${LavishSettings[Profiles]}]
|
||||
|
||||
; CurrentProfile:Set[${Profiles.FindSet[${Profiles.FindSetting[DefaultProfiles]}]}]
|
||||
; CastStackSettings:Set[${CurrentProfile.FindSet["CastStack"]}]
|
||||
; AliasSettings:Set[${CurrentProfile.FindSet["Aliases"]}}]
|
||||
; ; variable string settingsFile = "profiles/EQ2Save_${EQ2.ServerName}_${Me.Name}.xml"
|
||||
; ; echo "Init ${settingsFile}"
|
||||
; ; LavishSettings:Import[${settingsFile}]
|
||||
; ; Profiles:Set[${LavishSettings[Profiles]}]
|
||||
|
||||
; ; CurrentProfile:Set[${Profiles.FindSet[${Profiles.FindSetting[DefaultProfiles]}]}]
|
||||
; ; CastStackSettings:Set[${CurrentProfile.FindSet["CastStack"]}]
|
||||
; ; AliasSettings:Set[${CurrentProfile.FindSet["Aliases"]}}]
|
||||
|
||||
; ; variable iterator CastStackIterator
|
||||
; ; CastStackSettings:GetSetIterator[CastStackIterator]
|
||||
; ; if ${CastStackIterator:First(exists)}
|
||||
; ; {
|
||||
; ; do
|
||||
; ; {
|
||||
; ; CastStack:Set[ \
|
||||
; ; "${CastStackIterator.Value.FindSetting[__SourceName]}", \
|
||||
; ; "${CastStackIterator.Value.FindSetting[__SourceName]}", \
|
||||
; ; "${CastStackIterator.Value.FindSetting[Target]}", \
|
||||
; ; "${CastStackIterator.Value.FindSetting[Type]}", \
|
||||
; ; "${CastStackIterator.Value.FindSetting["%"]}", \
|
||||
; ; "${CastStackIterator.Value.FindSetting[Tag]}"\
|
||||
; ; ]
|
||||
; ; }
|
||||
; ; while ${CastStackIterator:Next(exists)}
|
||||
; ; }
|
||||
|
||||
; ; variable iterator AliasIterator
|
||||
; ; AliasSettings:GetSetIterator[AliasIterator]
|
||||
|
||||
; ; if ${AliasIterator:First(exists)}
|
||||
; ; {
|
||||
; ; do
|
||||
; ; {
|
||||
; ; echo "Alias: ${AliasIterator.Value.FindSetting["__SourceName"]}", "${AliasIterator.Value.FindSetting["For"]}
|
||||
; ; Aliases:Set["${AliasIterator.Value.FindSetting["__SourceName"]}", "${AliasIterator.Value.FindSetting["For"]}"]
|
||||
; ; }
|
||||
; ; while ${AliasIterator:Next(exists)}
|
||||
; ; }
|
||||
|
||||
; ; echo "######"
|
||||
; ; echo "Aliases: ${Aliases.AsJSON~}"
|
||||
; ; echo "######"
|
||||
|
||||
; ; variable BotSettings settings
|
||||
; ; variable jsonvalue jo="{}"
|
||||
; ; jo:Set["CastStack", "${CastStack.AsJSON~}"]
|
||||
; ; jo:Set["Aliases", "${Aliases.AsJSON~}"]
|
||||
; ; settings:FromJSON[jo]
|
||||
; ; settings.AsJSON:WriteFile["profiles/${EQ2.ServerName}_${Me.Name}.json", TRUE]
|
||||
; }
|
||||
|
||||
; member:BotSettings LoadSettings(string filename)
|
||||
; {
|
||||
|
||||
; }
|
||||
; }
|
||||
93
utilities/MrNavigation.iss
Normal file
93
utilities/MrNavigation.iss
Normal file
@ -0,0 +1,93 @@
|
||||
objectdef MrNavigation
|
||||
{
|
||||
variable string autorun="num lock"
|
||||
variable string forward=w
|
||||
variable string backward=s
|
||||
variable string strafeleft=q
|
||||
variable string straferight=e
|
||||
variable string turnleft=a
|
||||
variable string turnright=d
|
||||
|
||||
method FollowPath(... path)
|
||||
{
|
||||
variable int index
|
||||
for (index:Set[1]; ${index} < ${path.Size}; index:Inc)
|
||||
{
|
||||
variable point3f targetLocation
|
||||
targetLocation:Set[${path[index]:Token[1,","]},${path[index]:Token[2,","]},${path[index]:Token[3,","]}]
|
||||
echo ${targetLocation}
|
||||
call This.MoveTo path[index]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function MoveTo(float x, float z, float percision)
|
||||
{
|
||||
if !${percision}
|
||||
{
|
||||
percision:Set[5]
|
||||
}
|
||||
|
||||
variable float angle
|
||||
echo "Moving to ${x}, ${z}"
|
||||
press "${autorun}"
|
||||
do
|
||||
{
|
||||
echo "${Math.Distance[${Me.X},${Me.Z}, x, z]} units away from target"
|
||||
face ${x} ${z}
|
||||
|
||||
wait 5
|
||||
|
||||
}
|
||||
while ${Math.Distance[${Me.X},${Me.Z}, locatoin.X, location.Z]} > ${percision}
|
||||
press "${autorun}"
|
||||
}
|
||||
|
||||
function Follow(int targetId)
|
||||
{
|
||||
echo "Following ${Actor[${targetId}].Name}"
|
||||
if !${percision}
|
||||
{
|
||||
percision:Set[5]
|
||||
}
|
||||
|
||||
variable float angle
|
||||
variable point3f targetLocation
|
||||
do
|
||||
{
|
||||
targetLocation:Set[${Actor[${targetId}].Loc}]
|
||||
wait 5
|
||||
if ${Actor[${targetId}].Distance} <= 3
|
||||
{
|
||||
if ${Me.IsMoving}
|
||||
{
|
||||
echo "Target is close enough"
|
||||
press "${autorun}"
|
||||
}
|
||||
|
||||
continue
|
||||
}
|
||||
else
|
||||
{
|
||||
if !${Me.IsMoving}
|
||||
{
|
||||
echo "Target is too far away"
|
||||
press "${autorun}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo " ${Actor[${targetId}].Distance} units away from target"
|
||||
face ${targetLocation.X} ${targetLocation.Z}
|
||||
}
|
||||
while TRUE
|
||||
}
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
variable int followTargetId = ${Me.Target.ID}
|
||||
variable MrNavigation nav
|
||||
|
||||
call nav.Follow ${followTargetId}
|
||||
}
|
||||
85
utilities/NpcHelpers.iss
Normal file
85
utilities/NpcHelpers.iss
Normal file
@ -0,0 +1,85 @@
|
||||
objectdef QuestHelpers
|
||||
{
|
||||
member:bool IsQuestPending()
|
||||
{
|
||||
return ${EQ2UIPage[PopUp,RewardPack].Child[button,RewardPack.ButtonComposite.Accept](exists)}
|
||||
}
|
||||
|
||||
method AcceptQuest()
|
||||
{
|
||||
EQ2UIPage[PopUp,RewardPack].Child[button,RewardPack.ButtonComposite.Accept]:LeftClick
|
||||
}
|
||||
}
|
||||
objectdef NpcHelpers
|
||||
{
|
||||
variable QuestHelpers QuestHelper
|
||||
function GetQuestFromNpc(... params)
|
||||
{
|
||||
if ${params.Size} < 1
|
||||
{
|
||||
echo "Usage: GetQuestFromNpc <NPC Name> [...Dialog Choices(optional)]"
|
||||
return
|
||||
}
|
||||
|
||||
variable string npcName = ${params[1]};
|
||||
Actor[Query, Name =- "${npcName}"]:DoubleClick
|
||||
if ${params.Size} > 1
|
||||
{
|
||||
variable int idx
|
||||
for (idx:Set[2]; ${idx} <= ${params.Size}; idx:Inc)
|
||||
{
|
||||
variable string choice = ${params[i]};
|
||||
EQ2UIPage[ProxyActor,Conversation].Child[composite,replies].Child[button,choice]:LeftClick
|
||||
wait 5
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
variable int dialogOptionsTaken = 0;
|
||||
do
|
||||
{
|
||||
dialogOptionsTaken:Inc
|
||||
EQ2UIPage[ProxyActor,Conversation].Child[composite,replies].Child[button,1]:LeftClick
|
||||
wait 5
|
||||
}
|
||||
while !${RewardWindow(exists)} && ${dialogOptionsTaken} < 10
|
||||
}
|
||||
|
||||
wait 5
|
||||
if ${QuestHelper.IsQuestPending}
|
||||
{
|
||||
wait 5
|
||||
QuestHelper:AcceptQuest
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "Quest not offered"
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
atom atexit()
|
||||
{
|
||||
echo "Exiting..."
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
; variable NpcHelpers NpcHelper
|
||||
; variable NavHelpers NavHelper
|
||||
; echo "Starting test"
|
||||
|
||||
; /*
|
||||
; 910.060730,12.070809,239.235611
|
||||
; 913.628540,10.217931,170.337494
|
||||
; 907.632385,10.002500,152.857849
|
||||
; 897.398376,10.180861,146.060623
|
||||
; */
|
||||
; ; wait 5
|
||||
; ; call NpcHelper.GetQuestFromNpc "Germa"
|
||||
; call NavHelper.FollowPath()
|
||||
; return
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user