diff --git a/Core/ClassConfig/ClassConfiguration.cs b/Core/ClassConfig/ClassConfiguration.cs index 018c1f88..233dde8b 100644 --- a/Core/ClassConfig/ClassConfiguration.cs +++ b/Core/ClassConfig/ClassConfiguration.cs @@ -79,135 +79,15 @@ public sealed partial class ClassConfiguration public KeyAction[] GatherFindKeyConfig { get; set; } = Array.Empty(); public string[] GatherFindKeys { get; init; } = Array.Empty(); - public KeyAction Jump { get; } = new(); - public string JumpKey { get; init; } = "Spacebar"; - - public KeyAction Interact { get; } = new(); - public string InteractKey { get; init; } = "I"; - - public KeyAction InteractMouseOver { get; } = new(); - public string InteractMouseOverKey { get; init; } = "J"; - - public KeyAction Approach { get; } = new(); - public KeyAction AutoAttack { get; } = new(); - - public KeyAction TargetLastTarget { get; } = new(); - public string TargetLastTargetKey { get; init; } = "G"; - - public KeyAction StandUp { get; } = new(); - public string StandUpKey { get; init; } = "X"; - - public KeyAction ClearTarget { get; } = new(); - public string ClearTargetKey { get; init; } = "Insert"; - - public KeyAction StopAttack { get; } = new(); - public string StopAttackKey { get; init; } = "Delete"; - - public KeyAction TargetNearestTarget { get; } = new(); - public string TargetNearestTargetKey { get; init; } = "Tab"; - - public KeyAction TargetTargetOfTarget { get; } = new(); - public string TargetTargetOfTargetKey { get; init; } = "F"; - public KeyAction TargetPet { get; } = new(); - public string TargetPetKey { get; init; } = "Multiply"; - - public KeyAction PetAttack { get; } = new(); - public string PetAttackKey { get; init; } = "Subtract"; - - public KeyAction TargetFocus { get; } = new(); - public string TargetFocusKey { get; init; } = "PageUp"; - - public KeyAction FollowTarget { get; } = new(); - public string FollowTargetKey { get; init; } = "PageDown"; - - public KeyAction Mount { get; } = new(); - public string MountKey { get; init; } = "O"; - - public ConsoleKey ForwardKey { get; init; } = ConsoleKey.UpArrow; // 38 - public ConsoleKey BackwardKey { get; init; } = ConsoleKey.DownArrow; // 40 - public ConsoleKey TurnLeftKey { get; init; } = ConsoleKey.LeftArrow; // 37 - public ConsoleKey TurnRightKey { get; init; } = ConsoleKey.RightArrow; // 39 + public ConsoleKey ForwardKey { get; init; } = ConsoleKey.UpArrow; + public ConsoleKey BackwardKey { get; init; } = ConsoleKey.DownArrow; + public ConsoleKey TurnLeftKey { get; init; } = ConsoleKey.LeftArrow; + public ConsoleKey TurnRightKey { get; init; } = ConsoleKey.RightArrow; public void Initialise(IServiceProvider sp, string? overridePathFile) { - Jump.Key = JumpKey; - Jump.Name = nameof(Jump); - Jump.BaseAction = true; - - TargetLastTarget.Key = TargetLastTargetKey; - TargetLastTarget.Name = nameof(TargetLastTarget); - TargetLastTarget.Cooldown = 0; - TargetLastTarget.BaseAction = true; - - StandUp.Key = StandUpKey; - StandUp.Name = nameof(StandUp); - StandUp.Cooldown = 0; - StandUp.BaseAction = true; - - ClearTarget.Key = ClearTargetKey; - ClearTarget.Name = nameof(ClearTarget); - ClearTarget.Cooldown = 0; - ClearTarget.BaseAction = true; - - StopAttack.Key = StopAttackKey; - StopAttack.Name = nameof(StopAttack); - StopAttack.PressDuration = 20; - StopAttack.BaseAction = true; - - TargetNearestTarget.Key = TargetNearestTargetKey; - TargetNearestTarget.Name = nameof(TargetNearestTarget); - TargetNearestTarget.BaseAction = true; - - TargetPet.Key = TargetPetKey; - TargetPet.Name = nameof(TargetPet); - TargetPet.Cooldown = 0; - TargetPet.BaseAction = true; - - TargetTargetOfTarget.Key = TargetTargetOfTargetKey; - TargetTargetOfTarget.Name = nameof(TargetTargetOfTarget); - TargetTargetOfTarget.Cooldown = 0; - TargetTargetOfTarget.BaseAction = true; - - TargetFocus.Key = TargetFocusKey; - TargetFocus.Name = nameof(TargetFocus); - TargetFocus.Cooldown = 0; - TargetFocus.BaseAction = true; - - FollowTarget.Key = FollowTargetKey; - FollowTarget.Name = nameof(FollowTarget); - FollowTarget.Cooldown = 0; - FollowTarget.BaseAction = true; - - PetAttack.Key = PetAttackKey; - PetAttack.Name = nameof(PetAttack); - PetAttack.PressDuration = 10; - PetAttack.BaseAction = true; - - Mount.Key = MountKey; - Mount.Name = nameof(Mount); - Mount.BaseAction = true; - Mount.Cooldown = 6000; - - Interact.Key = InteractKey; - Interact.Name = nameof(Interact); - Interact.Cooldown = 0; - Interact.PressDuration = 30; - Interact.BaseAction = true; - - InteractMouseOver.Key = InteractMouseOverKey; - InteractMouseOver.Name = nameof(InteractMouseOver); - InteractMouseOver.Cooldown = 0; - InteractMouseOver.PressDuration = 10; - InteractMouseOver.BaseAction = true; - - Approach.Key = InteractKey; - Approach.Name = nameof(Approach); - Approach.PressDuration = 10; - Approach.BaseAction = true; - - AutoAttack.Key = InteractKey; - AutoAttack.Name = nameof(AutoAttack); - AutoAttack.BaseAction = true; + Approach.Key = Interact.Key; + AutoAttack.Key = Interact.Key; RequirementFactory factory = new(sp, this); diff --git a/Core/ClassConfig/ClassConfigurationBaseActions.cs b/Core/ClassConfig/ClassConfigurationBaseActions.cs new file mode 100644 index 00000000..d059a596 --- /dev/null +++ b/Core/ClassConfig/ClassConfigurationBaseActions.cs @@ -0,0 +1,131 @@ +namespace Core; + +public sealed partial class ClassConfiguration +{ + public KeyAction Jump { get; } = new() + { + Name = nameof(Jump), + Key = "Spacebar", + BaseAction = true + }; + + public KeyAction Interact { get; } = new() + { + Key = "I", + Name = nameof(Interact), + Cooldown = 0, + PressDuration = 30, + BaseAction = true + }; + + public KeyAction InteractMouseOver { get; } = new() + { + Key = "J", + Name = nameof(InteractMouseOver), + Cooldown = 0, + PressDuration = 10, + BaseAction = true + }; + + public KeyAction Approach { get; } = new() + { + Key = "I", // Interact.Key + Name = nameof(Approach), + PressDuration = 10, + BaseAction = true + }; + + public KeyAction AutoAttack { get; } = new() + { + Key = "I", // Interact.Key + Name = nameof(AutoAttack), + BaseAction = true + }; + + public KeyAction TargetLastTarget { get; } = new() + { + Key = "G", + Name = nameof(TargetLastTarget), + Cooldown = 0, + BaseAction = true + }; + + public KeyAction StandUp { get; } = new() + { + Key = "X", + Name = nameof(StandUp), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction ClearTarget { get; } = new() + { + Key = "Insert", + Name = nameof(ClearTarget), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction StopAttack { get; } = new() + { + Key = "Delete", + Name = nameof(StopAttack), + PressDuration = 20, + BaseAction = true, + }; + + public KeyAction TargetNearestTarget { get; } = new() + { + Key = "Tab", + Name = nameof(TargetNearestTarget), + BaseAction = true, + }; + + public KeyAction TargetTargetOfTarget { get; } = new() + { + Key = "F", + Name = nameof(TargetTargetOfTarget), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction TargetPet { get; } = new() + { + Key = "Multiply", + Name = nameof(TargetPet), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction PetAttack { get; } = new() + { + Key = "Subtract", + Name = nameof(PetAttack), + PressDuration = 10, + BaseAction = true, + }; + + public KeyAction TargetFocus { get; } = new() + { + Key = "PageUp", + Name = nameof(TargetFocus), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction FollowTarget { get; } = new() + { + Key = "PageDown", + Name = nameof(FollowTarget), + Cooldown = 0, + BaseAction = true, + }; + + public KeyAction Mount { get; } = new() + { + Key = "O", + Name = nameof(Mount), + BaseAction = true, + Cooldown = 6000, + }; +} diff --git a/Json/class/DeathKnight_70_Unholy.json b/Json/class/DeathKnight_70_Unholy.json index cc1bb701..da0434d4 100644 --- a/Json/class/DeathKnight_70_Unholy.json +++ b/Json/class/DeathKnight_70_Unholy.json @@ -6,7 +6,7 @@ "PathFilename": "_pack\\70-80\\Borean Tundra\\67-72_Borean Tundra_South Warsong Hold_Rhinos.json", "PathReduceSteps": true, "PathThereAndBack": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "MIN_HP_FOOD%": 40, "MIN_RUNE_TO_DUMP": 40, diff --git a/Json/class/DeathKnight_80_Frost.json b/Json/class/DeathKnight_80_Frost.json index 276ef3ab..7b0c1857 100644 --- a/Json/class/DeathKnight_80_Frost.json +++ b/Json/class/DeathKnight_80_Frost.json @@ -5,7 +5,7 @@ "PathFilename": "_pack\\40-50\\The Hinterlands\\41-42 wolves.json", // todo update profile "PathReduceSteps": true, "PathThereAndBack": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "MIN_HP_FOOD%": 40, "MIN_RUNE_TO_DUMP": 40, diff --git a/Json/class/DeathKnight_80_Unholy.json b/Json/class/DeathKnight_80_Unholy.json index 6132d88f..deebb701 100644 --- a/Json/class/DeathKnight_80_Unholy.json +++ b/Json/class/DeathKnight_80_Unholy.json @@ -6,7 +6,7 @@ "PathFilename": "_pack\\70-80\\Zul'Drak\\76-80_Zul'Drak_Heb'Valok_spiders.json", "PathReduceSteps": true, "PathThereAndBack": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "MIN_HP_FOOD%": 40, "MIN_RUNE_TO_DUMP": 40, diff --git a/Json/class/Druid_80_moonkin_assist.json b/Json/class/Druid_80_moonkin_assist.json index 5f1816e7..6ded15d8 100644 --- a/Json/class/Druid_80_moonkin_assist.json +++ b/Json/class/Druid_80_moonkin_assist.json @@ -4,7 +4,7 @@ "Mode": "AssistFocus", "Loot": true, "Skin": true, - "MountKey": "N0", + "Mount": {"Key":"N0"}, "PathFilename": "_pack\\60-70\\Terokkar Forest\\62-64.json", "PathThereAndBack": false, "PathReduceSteps": true, @@ -19,6 +19,10 @@ "USE_TRINKET_1": 1, "USE_TRINKET_2": 1 }, + "Jump": + { + "PressDuration": 200 + }, "Form": { "Sequence": [ { @@ -264,5 +268,26 @@ "Requirement": "Mana% < 40 && DrinkCount > 0" } ] + }, + "NPC": { + "Sequence": [ + { + "Name": "Repair", + "Key": "C", + "Requirement": "Durability% < 35", + "PathFilename": "Terokkar Forest_2023_09_04_16_46_24.json", + "Cost": 6 + }, + { + "Name": "Sell", + "Key": "C", + "Requirements": [ + "BagFull", + "BagGreyItem" + ], + "PathFilename": "Terokkar Forest_2023_09_04_16_46_24.json", + "Cost": 6 + } + ] } } \ No newline at end of file diff --git a/Json/class/Hunter_62.json b/Json/class/Hunter_62.json index e4e68d6b..617d2225 100644 --- a/Json/class/Hunter_62.json +++ b/Json/class/Hunter_62.json @@ -5,7 +5,7 @@ "PathThereAndBack": true, "PathReduceSteps": true, "NPCMaxLevels_Above": 3, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathFilename": "60_Hellfire Peninsula_Ravager.json", "Pull": { "Sequence": [ diff --git a/Json/class/Hunter_66.json b/Json/class/Hunter_66.json index d381d423..5678a5b7 100644 --- a/Json/class/Hunter_66.json +++ b/Json/class/Hunter_66.json @@ -5,7 +5,7 @@ "PathThereAndBack": true, "PathReduceSteps": true, "NPCMaxLevels_Above": 2, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathFilename": "_pack\\60-70\\Blade's Edge Mountains\\Dragon.json", "IntVariables": { "MIN_MANA_VIPER%": 40, diff --git a/Json/class/Hunter_66_farm_pet_pull.json b/Json/class/Hunter_66_farm_pet_pull.json index 5cf5d681..304c4782 100644 --- a/Json/class/Hunter_66_farm_pet_pull.json +++ b/Json/class/Hunter_66_farm_pet_pull.json @@ -7,14 +7,16 @@ "PathThereAndBack": false, "PathReduceSteps": false, "NPCMaxLevels_Above": 2, - "NPCMaxLevels_Below": 12, - "MountKey": "N0", - "PathFileName": "_pack\\60-70\\Zangarmarsh\\60-64 Dead mire.json", + "NPCMaxLevels_Below": 22, + "Mount": { "Key": "N0"}, + //"PathFileName": "_pack\\60-70\\Zangarmarsh\\60-64 Dead mire.json", + //"PathFilename": "_pack\\60-70\\Terokkar Forest\\62-64.json", + "PathFilename": "_pack\\60-70\\Terokkar Forest\\70-Terokkar Forest_Barrier_Hill.json", "IntVariables": { "MIN_MANA_VIPER%": 40, "MIN_MANA_HAWK%": 70, "MIN_TARGET_HP_CD%": 75, - "USE_TRINKET_1": 0, + "USE_TRINKET_1": 1, "USE_TRINKET_2": 0 }, "Pull": { @@ -25,16 +27,6 @@ "Has Pet", "MinRange > 20" ] - }, - { - "Name": "Stop Auto Shot", - "Key": "0", - "BeforeCastDelay": 25, - "BaseAction": true, - "Requirements": [ - "AutoShot" - ], - "AfterCastDelay": 50 } ] }, @@ -72,7 +64,7 @@ { "Name": "Bestial Wrath", "Key": "N2", - "WhenUsable": true, + "BaseAction": true, "Requirements": [ "Spell:Bestial Wrath", "!InMeleeRange", @@ -87,7 +79,7 @@ "Name": "Trinket 1", "Key": "F1", "Item": true, - "WhenUsable": true, + "BaseAction": true, "Requirements": [ "USE_TRINKET_1 == 1", "!InMeleeRange", @@ -102,7 +94,7 @@ "Name": "Trinket 2", "Key": "F2", "Item": true, - "WhenUsable": true, + "BaseAction": true, "Requirements": [ "USE_TRINKET_2 == 1", "!InMeleeRange", @@ -116,7 +108,7 @@ { "Name": "Rapid Fire", "Key": "N3", - "WhenUsable": true, + "BaseAction": true, "Requirements": [ "!InMeleeRange", "HasRangedWeapon", @@ -134,9 +126,6 @@ { "Name": "Auto Shot", "Key": "0", - "Item": true, - "StopBeforeCast": true, - "AfterCastAuraExpected": true, "Requirements": [ "!InMeleeRange", "HasRangedWeapon && HasAmmo", @@ -233,6 +222,7 @@ "Key": "7", "InCombat": "i dont care", "Requirements": [ + "!Mounted", "!Aspect of the Viper", "Mana% < MIN_MANA_VIPER%" ] @@ -243,6 +233,7 @@ "Key": "5", "InCombat": "i dont care", "Requirements": [ + "!Mounted", "!Aspect of the Hawk", "Mana% > MIN_MANA_HAWK%" ] @@ -254,7 +245,8 @@ "Cooldown": 20000, "Requirements": [ "Has Pet", - "!Pet Happy" + "!Pet Happy", + "!Mounted" ] }, { diff --git a/Json/class/Hunter_70.json b/Json/class/Hunter_70.json index a93ba0f4..dac9e2ad 100644 --- a/Json/class/Hunter_70.json +++ b/Json/class/Hunter_70.json @@ -10,7 +10,7 @@ "PathReduceSteps": true, "NPCMaxLevels_Above": 2, "NPCMaxLevels_Below": 12, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathFilename": "_pack\\60-70\\Zangarmarsh\\60-64 Dead mire.json", "IntVariables": { "MIN_MANA_VIPER%": 40, diff --git a/Json/class/Paladin_30.json b/Json/class/Paladin_30.json index b04eb342..00ae154d 100644 --- a/Json/class/Paladin_30.json +++ b/Json/class/Paladin_30.json @@ -2,7 +2,7 @@ "ClassName": "Paladin", "PathFilename": "_p2\\25-30_hillsbrad.json", "UseMount": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathThereAndBack": false, "IntVariables": { "MIN_SPEED_SEAL": 3000, diff --git a/Json/class/Paladin_66.json b/Json/class/Paladin_66.json index 9d58aa3c..2030e74f 100644 --- a/Json/class/Paladin_66.json +++ b/Json/class/Paladin_66.json @@ -6,7 +6,7 @@ "PathFilename": "_pack\\60-70\\Terokkar Forest\\62-64.json", "PathThereAndBack": true, "PathReduceSteps": true, - "MountKey": "N1", + "Mount": { "Key": "N1"}, "Combat": { "Sequence": [ { diff --git a/Json/class/Paladin_70_Retribution.json b/Json/class/Paladin_70_Retribution.json index 871c09b2..b43fccec 100644 --- a/Json/class/Paladin_70_Retribution.json +++ b/Json/class/Paladin_70_Retribution.json @@ -6,7 +6,7 @@ "PathFilename": "_pack\\60-70\\Terokkar Forest\\62-64.json", "PathThereAndBack": true, "PathReduceSteps": true, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "MIN_TARGET_HP%": 20, "MIN_HP_BEFORE_HEAL%": 20, diff --git a/Json/class/Shaman_44.json b/Json/class/Shaman_44.json index e77ce381..9ae29cc1 100644 --- a/Json/class/Shaman_44.json +++ b/Json/class/Shaman_44.json @@ -7,7 +7,7 @@ "PathReduceSteps": true, "NPCMaxLevels_Below": 7, "NPCMaxLevels_Above": 2, - "MountKey": "N1", + "Mount": { "Key": "N1"}, "Pull": { "Sequence": [ { diff --git a/Json/class/Shaman_55.json b/Json/class/Shaman_55.json index fd01e88d..d4a9f507 100644 --- a/Json/class/Shaman_55.json +++ b/Json/class/Shaman_55.json @@ -7,7 +7,7 @@ "PathReduceSteps": true, "NPCMaxLevels_Below": 7, "NPCMaxLevels_Above": 2, - "MountKey": "N1", + "Mount": { "Key": "N1"}, "Pull": { "Sequence": [] }, diff --git a/Json/class/Warlock_66_Demo_pet_pull.json b/Json/class/Warlock_66_Demo_pet_pull.json index 246069d5..9767e7e5 100644 --- a/Json/class/Warlock_66_Demo_pet_pull.json +++ b/Json/class/Warlock_66_Demo_pet_pull.json @@ -3,7 +3,7 @@ "Loot": true, //"Mode": "AttendedGrind", //Grind "UseMount": true, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathReduceSteps": true, "PathThereAndBack": true, "NPCMaxLevels_Above": 2, diff --git a/Json/class/Warrior_32_stances.json b/Json/class/Warrior_32_stances.json index 50047bc5..521e2cd6 100644 --- a/Json/class/Warrior_32_stances.json +++ b/Json/class/Warrior_32_stances.json @@ -5,7 +5,7 @@ "NPCMaxLevels_Below": 10, "PathThereAndBack": false, "PathReduceSteps": true, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "CD_MIN_TARGET_HP%": 70 }, diff --git a/Json/class/Warrior_40.json b/Json/class/Warrior_40.json index 09a52431..91900a24 100644 --- a/Json/class/Warrior_40.json +++ b/Json/class/Warrior_40.json @@ -5,7 +5,7 @@ "NPCMaxLevels_Below": 10, "PathThereAndBack": false, "PathReduceSteps": true, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "CD_MIN_TARGET_HP%": 70, "MIN_RAGE_HEROIC_STRIKE": 42 diff --git a/Json/class/Warrior_63_Arms.json b/Json/class/Warrior_63_Arms.json index 529f4d9c..e8c5288e 100644 --- a/Json/class/Warrior_63_Arms.json +++ b/Json/class/Warrior_63_Arms.json @@ -7,7 +7,7 @@ "NPCMaxLevels_Below": 10, "PathThereAndBack": true, "PathReduceSteps": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "IntVariables": { "CD_MIN_TARGET_HP%": 70, "MIN_RAGE_HEROIC_STRIKE": 42, diff --git a/Json/class/tbc/Paladin_40.json b/Json/class/tbc/Paladin_40.json index a205ebe5..0980c17d 100644 --- a/Json/class/tbc/Paladin_40.json +++ b/Json/class/tbc/Paladin_40.json @@ -4,7 +4,7 @@ //"PathFilename": "_pack\\30-40\\Alterac Mountains\\32-36 Yettis-Ogers.json", "PathFilename": "_pack\\30-40\\Swamp of Sorrows\\38-42 Misty Valley.json", "UseMount": false, - "MountKey": "N0", + "Mount": { "Key": "N0"}, "PathThereAndBack": false, "PathReduceSteps": true, "IntVariables": { diff --git a/Json/path/Terokkar Forest_2023_09_04_16_46_24.jpg b/Json/path/Terokkar Forest_2023_09_04_16_46_24.jpg new file mode 100644 index 00000000..ac5a841c Binary files /dev/null and b/Json/path/Terokkar Forest_2023_09_04_16_46_24.jpg differ diff --git a/Json/path/Terokkar Forest_2023_09_04_16_46_24.json b/Json/path/Terokkar Forest_2023_09_04_16_46_24.json new file mode 100644 index 00000000..56832595 --- /dev/null +++ b/Json/path/Terokkar Forest_2023_09_04_16_46_24.json @@ -0,0 +1 @@ +[{"X":56.817497,"Y":54.312,"Z":0.0},{"X":56.7996,"Y":54.3963,"Z":0.0},{"X":56.7769,"Y":54.4873,"Z":0.0},{"X":56.750202,"Y":54.5759,"Z":0.0},{"X":56.7175,"Y":54.6598,"Z":0.0},{"X":56.679604,"Y":54.738598,"Z":0.0},{"X":56.6345,"Y":54.811302,"Z":0.0},{"X":56.5869,"Y":54.8773,"Z":0.0},{"X":56.546204,"Y":54.9442,"Z":0.0}] \ No newline at end of file diff --git a/README.md b/README.md index 2f86221d..571f7d4d 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,16 @@ Should be only concerned about `Friz Quadrata: the "Everything Else" Font` which Example - [Robot-Medium](https://fonts.google.com/specimen/Roboto?thickness=5) - Shows big improvement to the `NpcNameFinder` component which is responsible to find - friendly, enemy, corpse - names above NPCs head. +## 3.4 Optional - Enable Minimum Character Name Size + +In the modern client under ESC > Options > Accessibility > General > **Minimum Character Name Size = 6** + +This feature sets a minimum size of the character/npc names above their head. + +However it has one downside, there's distance based alpha blending. It could cause issues with Corpse names. + +More info [506](https://github.com/Xian55/WowClassicGrindBot/pull/506) + ## 4.1 Build Requirements * Windows 10 and above @@ -255,7 +265,7 @@ In order to run `HeadlessServer` please look at the `HeadlessServer\run.bat`. | `portv1` | Navigation Remote V1 port | `5001` | - | | `hostv3` | Navigation Remote V3 host | `127.0.0.1` | - | | `portv3` | Navigation Remote V3 port | `47111` | - | -| `-d`
`-diag` | Diagnostics, when set, takes screen captures under `Json\cap\*.json` | - | - | +| `-d`
`-diag` | Diagnostics, when set, takes screen captures under `Json\cap\*.jpg` | - | - | | `-o`
`-overlay` | Show NpcNameFinder Overlay | `false` | - | | `-t`
`-otargeting` | While overlay enabled, show Targeting points | `false` | - | | `-s`
`-oskinning` | While overlay enabled, show Skinning points | `false` | - | @@ -301,16 +311,16 @@ From the main menu (ESC) -> `Key Bindings` set the following: `Movement Keys`: -| In-Game | ClassConfiguration Name | Default ConsoleKey | Description | -| ---- | ---- | ---- | ---- | -| Move Forward | ForwardKey | UpArrow | Change this to `87` for pressing `W` | -| Move Backward | BackwardKey | DownArrow | Change this to `83` for pressing `S` | -| Turn Left | TurnLeftKey | LeftArrow | Change this to `65` for pressing `A` | -| Turn Right | TurnRightKey | RightArrow | Change this to `68` for pressing `D` | -| Jump | JumpKey | Spacebar | ---- | -| Sit/Move down | StandUpKey | X | Used after drinking or eating | - -To change the default movement keys to `WASD` in the [Class Configuration](#12-class-configuration) file or look at the example `Json\class\Warrior_1_MovementKeys.json` +| In-Game | ClassConfiguration Name | Default [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) | +| ---- | ---- | ---- | +| Move Forward | ForwardKey | `UpArrow` | +| Move Backward | BackwardKey | `DownArrow` | +| Turn Left | TurnLeftKey | `LeftArrow` | +| Turn Right | TurnRightKey | `RightArrow` | +| Jump | Jump.Key | `Spacebar` | +| Sit/Move down | StandUp.Key | `X` | + +To change the default movement keys from arrows to `WASD` in the [Class Configuration](#12-class-configuration) file or look at the example `Json\class\Warrior_1_MovementKeys.json` ```json "ForwardKey": 87, // W "BackwardKey": 83, // S @@ -320,32 +330,31 @@ To change the default movement keys to `WASD` in the [Class Configuration](#12-c `Targeting`: -| In-Game | Key | ClassConfiguration KeyAction Name | Description | +| In-Game | HotKey | ClassConfiguration KeyAction | Description | | ---- | ---- | ---- | ---- | -| Target Nearest Enemy | Tab | TargetNearestTargetKey | ---- | -| Target Pet | Multiply | TargetPetKey | Only pet based class | -| Target Last Target | G | TargetLastTargetKey | Loot last target | -| Interact With Mouseover | J | InteractMouseOverKey | Mouse based actions | -| Interact With Target | I | InteractKey | Targeting and combat | -| Assist Target | F | TargetTargetOfTargetKey | ---- | -| Pet attack | Subtract | PetAttackKey | Only pet based class | -| Target Focus | PageUp | TargetFocusKey | Only for TBC or Wrath version, `"AssistFocus"` Mode | -| Target Party Member 1 | PageUp | TargetFocusKey | Only for Vanilla version, `"AssistFocus"` Mode | +| Target Nearest Enemy | `Tab` | TargetNearestTarget | ---- | +| Target Pet | `Multiply` | TargetPet | Only pet based class | +| Target Last Target | `G` | TargetLastTarget | Loot last target | +| Interact With Mouseover | `J` | InteractMouseOver | Mouse based actions | +| Interact With Target | `I` | Interact | Targeting and combat | +| Assist Target | `F` | TargetTargetOfTarget | ---- | +| Pet attack | `Subtract` | PetAttack | Only pet based class | +| Target Focus | `PageUp` | TargetFocus | TBC or Wrath version, `"AssistFocus"` Mode | +| Target Party Member 1 | `PageUp` | TargetFocus | Vanilla version, `"AssistFocus"` Mode | ## 10.1. Actionbar Key Bindings: -The default class profiles assumes the following `Keybinds` setup while using English Keyboard layout. +The default class profiles assumes the following `Keybinds` setup while using **English Keyboard** layout. + In total, `34` customizable key can be configured. Highly recommended to use the default setup, in order to get properly working the `ActionBarSlotCost` and `ActionBarSlotUsable` features! -| ActionSlot | Key | Description | -| --- | --- | --- | -| 1-12 | 1,2,3 .. 9,0,-,= | 0 is the 10th key. | -| Bottom Right ActionBar | - | - | -| 49-58 | N1,N2,N3 .. N9,N0 | N means Numpad - 0 is the 10th key | -| Bottom Left ActionBar | - | - | -| 61-72 | F1,F2,F3 .. F11,F12 | F means Functions | +| Actionbar |ActionSlot | Key | Description | +| --- | --- | --- | --- | +| Main | 1-12 | 1,2,3 .. 9,0,-,= | 0 is the 10th key. | +| Bottom Right | 49-58 | N1,N2,N3 .. N9,N0 | N means Numpad 0 is the 10th key | +| Bottom Left | 61-72 | F1,F2,F3 .. F11,F12 | F means Functions | Screenshot @@ -384,7 +393,9 @@ Each class has a configuration file in `\Json\class` e.g. the config for a `Warr The configuration file determines what spells the character casts, when pulling and in combat, where to vendor and repair and what buffs consider. -Take a look at the class files in `/Json/class` for examples of what you can do. Your class file probably exists and just needs to be edited to set the pathing file name. +Take a look at the class files in `/Json/class` for examples of what you can do. + +Your class file probably exists and just needs to be edited to set the pathing file name. | Property Name | Description | Optional | Default value | | --- | --- | --- | --- | @@ -420,21 +431,39 @@ Take a look at the class files in `/Json/class` for examples of what you can do. | `"Wait"` | [KeyActions](#keyactions) to execute upon [Wait Goal](#wait-goals) | true | `{}` | | --- | --- | --- | --- | | `"GatherFindKeys"` | List of strings for switching between gathering profiles | true | `string[]` | -| `"JumpKey"` | `ConsoleKey` to be pressed on Jump | true | `"Spacebar"` | -| `"InteractKey"` | `ConsoleKey` to be pressed on Interact | true | `"I"` | -| `"TargetLastTargetKey"` | `ConsoleKey` to be pressed to Target last target | true | `"G"` | -| `"StandUpKey"` | `ConsoleKey` to be pressed to stand up | true | `"X"` | -| `"ClearTargetKey"` | `ConsoleKey` to be pressed to clear current target | true | `"Insert"` | -| `"StopAttackKey"` | `ConsoleKey` to be pressed to stop attack | true | `"Delete"` | -| `"TargetNearestTargetKey"` | `ConsoleKey` to be pressed to target nearest target | true | `"Tab"` | -| `"TargetTargetOfTargetKey"` | `ConsoleKey` to be pressed to target - target of target | true | `"F"` | -| `"TargetPetKey"` | `ConsoleKey` to be pressed to target pet | true | `"Multiply"` | -| `"PetAttackKey"` | `ConsoleKey` to be pressed to send attack pet | true | `"Subtract"` | -| `"MountKey"` | `ConsoleKey` to be pressed to use mount | true | `"O"` | -| `"ForwardKey"` | `ConsoleKey` to be pressed to move forward | true | `"UpArrow"` | -| `"BackwardKey"` | `ConsoleKey` to be pressed to move backward | true | `"DownArrow"` | -| `"TurnLeftKey"` | `ConsoleKey` to be pressed to turn left | true | `"LeftArrow"` | -| `"TurnRightKey"` | `ConsoleKey` to be pressed to turn right | true | `"RightArrow"` | +| --- | --- | --- | --- | +| BaseActionKeys | --- | --- | --- | +| --- | --- | --- | --- | +| `"Jump.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to Jump | true | `"Spacebar"` | +| `"Interact.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to Interact | true | `"I"` | +| `"TargetLastTarget.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to Target last target | true | `"G"` | +| `"ClearTarget.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to clear current target | true | `"Insert"` | +| `"StopAttack.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to stop attack | true | `"Delete"` | +| `"TargetNearestTarget.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to target nearest target | true | `"Tab"` | +| `"TargetTargetOfTarget.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to target - target of target | true | `"F"` | +| `"TargetPet.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to target pet | true | `"Multiply"` | +| `"PetAttack.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to send attack pet | true | `"Subtract"` | +| `"Mount.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to use mount | true | `"O"` | +| `"StandUp.Key"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to stand up | true | `"X"` | +| --- | --- | --- | --- | +| `"ForwardKey"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to move forward | true | `"UpArrow"` | +| `"BackwardKey"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to move backward | true | `"DownArrow"` | +| `"TurnLeftKey"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to turn left | true | `"LeftArrow"` | +| `"TurnRightKey"` | [ConsoleKey](https://learn.microsoft.com/en-us/dotnet/api/system.consolekey) to be pressed to turn right | true | `"RightArrow"` | + +The following [KeyActions](#keyactions) are `BaseActions`: `Jump`, `Interact`, `TargetLastTarget`, `ClearTarget`, `StopAttack`, `TargetNearestTarget`, `TargetTargetOfTarget`, `TargetPet`, `PetAttack`, `Mount`, `StandUp`. + +Which are shared and unified among [Pull Goal](#pull-goal) and [Combat Goal](#combat-goal). + +e.g override default [KeyActions](#keyactions) properties in the [Class Configuration](#12-class-configuration) file +```json +"Mount": { + "Key": "N0" +}, +"Jump": { + "PressDuration": 200 +} +``` ### TargetMask @@ -694,7 +723,7 @@ Then as defined, in-order, executes those [KeyAction(s)](#keyaction) which fulfi Upon exiting **Assist Focus Goal**, the current target will be deselected / cleared. -**Note**: You can use every `Buff` and `Debuff` names on the `focus`/`party1` without being targeted. Just have to prefix it with `F_` example: `F_Mark of the Wild` which means `focus`/`party1` has `Mark of the Wild` buff active. +**Note**: You can use every [Buff](#buff--debuff--general-boolean-condition-requirements) and [Debuff](#buff--debuff--general-boolean-condition-requirements) names on the `focus`/`party1` without being targeted. Just have to prefix it with `F_` example: `F_Mark of the Wild` which means `focus`/`party1` has `Mark of the Wild` buff active. e.g. of a Balance Druid ```json @@ -1582,11 +1611,11 @@ Allow requirements about what buffs/debuffs you have or the target has or in gen e.g. ```json -"Requirement": "!Well Fed" // I am not well fed. +"Requirement": "!Well Fed" // I am not well fed. "Requirement": "not Thorns" // I don't have the thorns buff. "Requirement": "AutoAttacking" // "Auto Attack" spell is active. "Requirement": "Shooting" // "Shoot" spell is active. -"Requirement": "Items Broken" // Some of my armor is broken (red). +"Requirement": "Items Broken" // Worn armor is broken (red). "Requirement": "BagFull" // Inventory is full. "Requirement": "HasRangedWeapon" // Has an item equipped at the ranged slot. "Requirement": "InMeleeRange" // Determines if the target is in melee range (0-5 yard)