Replaced tabs with spaces

This commit is contained in:
Revision
2025-09-19 21:00:09 +02:00
parent e175eb1178
commit ace813516d
30 changed files with 686 additions and 686 deletions

View File

@@ -8,7 +8,7 @@ CREATE TABLE IF NOT EXISTS `ai_playerbot_texts_chance` (
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */; /*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */;
INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES
(1, 'taunt', 30), (1, 'taunt', 30),
(2, 'aoe', 75), (2, 'aoe', 75),
(3, 'loot', 20); (3, 'loot', 20);
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */; /*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */;

View File

@@ -53,16 +53,16 @@ INSERT INTO `playerbots_dungeon_suggestion_definition` VALUES
(NULL, 'ub' , 'The Underbog' , 1, 0, 62, 70, NULL), (NULL, 'ub' , 'The Underbog' , 1, 0, 62, 70, NULL),
(NULL, 'mt' , 'Mana-Tombs' , 1, 0, 63, 70, NULL), (NULL, 'mt' , 'Mana-Tombs' , 1, 0, 63, 70, NULL),
(NULL, 'ac' , 'Auchenai Crypts' , 1, 0, 64, 70, NULL), (NULL, 'ac' , 'Auchenai Crypts' , 1, 0, 64, 70, NULL),
(NULL, 'seth', 'Sethekk Halls' , 1, 0, 66, 70, NULL), (NULL, 'seth', 'Sethekk Halls' , 1, 0, 66, 70, NULL),
(NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 0, 66, 70, NULL), (NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 0, 66, 70, NULL),
(NULL, 'bm' , 'The Black Morass' , 1, 0, 68, 70, NULL), (NULL, 'bm' , 'The Black Morass' , 1, 0, 68, 70, NULL),
(NULL, 'mech', 'The Mechanar' , 1, 0, 68, 70, NULL), (NULL, 'mech', 'The Mechanar' , 1, 0, 68, 70, NULL),
(NULL, 'bot' , 'The Botanica' , 1, 0, 69, 70, NULL), (NULL, 'bot' , 'The Botanica' , 1, 0, 69, 70, NULL),
(NULL, 'arc' , 'The Arcatraz' , 1, 0, 69, 70, NULL), (NULL, 'arc' , 'The Arcatraz' , 1, 0, 69, 70, NULL),
(NULL, 'sh' , 'The Shattered Halls' , 1, 0, 69, 70, NULL), (NULL, 'sh' , 'The Shattered Halls' , 1, 0, 69, 70, NULL),
(NULL, 'sv' , 'The Steamvault' , 1, 0, 69, 70, NULL), (NULL, 'sv' , 'The Steamvault' , 1, 0, 69, 70, NULL),
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 0, 69, 70, NULL), (NULL, 'sl' , 'Shadow Labyrinth' , 1, 0, 69, 70, NULL),
(NULL, 'mgt' , 'Magister''s Terrace' , 1, 0, 70, 70, NULL), (NULL, 'mgt' , 'Magister''s Terrace' , 1, 0, 70, 70, NULL),
-- == The Burning Crusade (Heroic) == -- == The Burning Crusade (Heroic) ==
@@ -72,51 +72,51 @@ INSERT INTO `playerbots_dungeon_suggestion_definition` VALUES
(NULL, 'ub' , 'The Underbog' , 1, 1, 70, 70, NULL), (NULL, 'ub' , 'The Underbog' , 1, 1, 70, 70, NULL),
(NULL, 'mt' , 'Mana-Tombs' , 1, 1, 70, 70, NULL), (NULL, 'mt' , 'Mana-Tombs' , 1, 1, 70, 70, NULL),
(NULL, 'ac' , 'Auchenai Crypts' , 1, 1, 70, 70, NULL), (NULL, 'ac' , 'Auchenai Crypts' , 1, 1, 70, 70, NULL),
(NULL, 'seth', 'Sethekk Halls' , 1, 1, 70, 70, NULL), (NULL, 'seth', 'Sethekk Halls' , 1, 1, 70, 70, NULL),
(NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 1, 70, 70, NULL), (NULL, 'oh' , 'Old Hillsbrad Foothills', 1, 1, 70, 70, NULL),
(NULL, 'bm' , 'The Black Morass' , 1, 1, 70, 70, NULL), (NULL, 'bm' , 'The Black Morass' , 1, 1, 70, 70, NULL),
(NULL, 'mech', 'The Mechanar' , 1, 1, 70, 70, NULL), (NULL, 'mech', 'The Mechanar' , 1, 1, 70, 70, NULL),
(NULL, 'bot' , 'The Botanica' , 1, 1, 70, 70, NULL), (NULL, 'bot' , 'The Botanica' , 1, 1, 70, 70, NULL),
(NULL, 'arc' , 'The Arcatraz' , 1, 1, 70, 70, NULL), (NULL, 'arc' , 'The Arcatraz' , 1, 1, 70, 70, NULL),
(NULL, 'sh' , 'The Shattered Halls' , 1, 1, 70, 70, NULL), (NULL, 'sh' , 'The Shattered Halls' , 1, 1, 70, 70, NULL),
(NULL, 'sv' , 'The Steamvault' , 1, 1, 70, 70, NULL), (NULL, 'sv' , 'The Steamvault' , 1, 1, 70, 70, NULL),
(NULL, 'sl' , 'Shadow Labyrinth' , 1, 1, 70, 70, NULL), (NULL, 'sl' , 'Shadow Labyrinth' , 1, 1, 70, 70, NULL),
(NULL, 'mgt' , 'Magister''s Terrace' , 1, 1, 70, 70, NULL), (NULL, 'mgt' , 'Magister''s Terrace' , 1, 1, 70, 70, NULL),
-- == Wrath of the Lich King == -- == Wrath of the Lich King ==
(NULL, 'uk' , 'Utgarde Keep' , 2, 0, 70, 72, NULL), (NULL, 'uk' , 'Utgarde Keep' , 2, 0, 70, 72, NULL),
(NULL, 'nexus' , 'The Nexus' , 2, 0, 71, 73, NULL), (NULL, 'nexus' , 'The Nexus' , 2, 0, 71, 73, NULL),
(NULL, 'an' , 'Azjol-Nerub' , 2, 0, 72, 74, NULL), (NULL, 'an' , 'Azjol-Nerub' , 2, 0, 72, 74, NULL),
(NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 0, 73, 75, NULL), (NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 0, 73, 75, NULL),
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 0, 74, 76, NULL), (NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 0, 74, 76, NULL),
(NULL, 'vh' , 'Violet Hold' , 2, 0, 75, 77, NULL), (NULL, 'vh' , 'Violet Hold' , 2, 0, 75, 77, NULL),
(NULL, 'gd' , 'Gundrak' , 2, 0, 76, 78, NULL), (NULL, 'gd' , 'Gundrak' , 2, 0, 76, 78, NULL),
(NULL, 'hos' , 'Halls of Stone' , 2, 0, 77, 79, NULL), (NULL, 'hos' , 'Halls of Stone' , 2, 0, 77, 79, NULL),
(NULL, 'hol' , 'Halls of Lightning' , 2, 0, 80, 80, NULL), (NULL, 'hol' , 'Halls of Lightning' , 2, 0, 80, 80, NULL),
(NULL, 'cos' , 'The Culling of Stratholme' , 2, 0, 80, 80, NULL), (NULL, 'cos' , 'The Culling of Stratholme' , 2, 0, 80, 80, NULL),
(NULL, 'oculus', 'The Oculus' , 2, 0, 80, 80, NULL), (NULL, 'oculus', 'The Oculus' , 2, 0, 80, 80, NULL),
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 0, 80, 80, NULL), (NULL, 'up' , 'Utgarde Pinnacle' , 2, 0, 80, 80, NULL),
(NULL, 'toc' , 'Trial of the Champion' , 2, 0, 80, 80, NULL), (NULL, 'toc' , 'Trial of the Champion' , 2, 0, 80, 80, NULL),
(NULL, 'fos' , 'Forge of Souls' , 2, 0, 80, 80, NULL), (NULL, 'fos' , 'Forge of Souls' , 2, 0, 80, 80, NULL),
(NULL, 'pos' , 'Pit of Saron' , 2, 0, 80, 80, NULL), (NULL, 'pos' , 'Pit of Saron' , 2, 0, 80, 80, NULL),
(NULL, 'hor' , 'Halls of Reflection' , 2, 0, 80, 80, NULL), (NULL, 'hor' , 'Halls of Reflection' , 2, 0, 80, 80, NULL),
-- == Wrath of the Lich King (Heroic) == -- == Wrath of the Lich King (Heroic) ==
(NULL, 'uk' , 'Utgarde Keep' , 2, 1, 80, 80, NULL), (NULL, 'uk' , 'Utgarde Keep' , 2, 1, 80, 80, NULL),
(NULL, 'nexus' , 'The Nexus' , 2, 1, 80, 80, NULL), (NULL, 'nexus' , 'The Nexus' , 2, 1, 80, 80, NULL),
(NULL, 'an' , 'Azjol-Nerub' , 2, 1, 80, 80, NULL), (NULL, 'an' , 'Azjol-Nerub' , 2, 1, 80, 80, NULL),
(NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 1, 80, 80, NULL), (NULL, 'ak' , 'Ahn''kahet: The Old Kingdom', 2, 1, 80, 80, NULL),
(NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 1, 80, 80, NULL), (NULL, 'dtk' , 'Drak''Tharon Keep' , 2, 1, 80, 80, NULL),
(NULL, 'vh' , 'Violet Hold' , 2, 1, 80, 80, NULL), (NULL, 'vh' , 'Violet Hold' , 2, 1, 80, 80, NULL),
(NULL, 'gd' , 'Gundrak' , 2, 1, 80, 80, NULL), (NULL, 'gd' , 'Gundrak' , 2, 1, 80, 80, NULL),
(NULL, 'hos' , 'Halls of Stone' , 2, 1, 80, 80, NULL), (NULL, 'hos' , 'Halls of Stone' , 2, 1, 80, 80, NULL),
(NULL, 'hol' , 'Halls of Lightning' , 2, 1, 80, 80, NULL), (NULL, 'hol' , 'Halls of Lightning' , 2, 1, 80, 80, NULL),
(NULL, 'cos' , 'The Culling of Stratholme' , 2, 1, 80, 80, NULL), (NULL, 'cos' , 'The Culling of Stratholme' , 2, 1, 80, 80, NULL),
(NULL, 'oculus', 'The Oculus' , 2, 1, 80, 80, NULL), (NULL, 'oculus', 'The Oculus' , 2, 1, 80, 80, NULL),
(NULL, 'up' , 'Utgarde Pinnacle' , 2, 1, 80, 80, NULL), (NULL, 'up' , 'Utgarde Pinnacle' , 2, 1, 80, 80, NULL),
(NULL, 'toc' , 'Trial of the Champion' , 2, 1, 80, 80, NULL), (NULL, 'toc' , 'Trial of the Champion' , 2, 1, 80, 80, NULL),
(NULL, 'fos' , 'Forge of Souls' , 2, 1, 80, 80, NULL), (NULL, 'fos' , 'Forge of Souls' , 2, 1, 80, 80, NULL),
(NULL, 'pos' , 'Pit of Saron' , 2, 1, 80, 80, NULL), (NULL, 'pos' , 'Pit of Saron' , 2, 1, 80, 80, NULL),
(NULL, 'hor' , 'Halls of Reflection' , 2, 1, 80, 80, NULL); (NULL, 'hor' , 'Halls of Reflection' , 2, 1, 80, 80, NULL);

View File

@@ -25,226 +25,226 @@ CREATE TABLE `playerbots_enchants` (
/*!40000 ALTER TABLE `playerbots_enchants` DISABLE KEYS */; /*!40000 ALTER TABLE `playerbots_enchants` DISABLE KEYS */;
DELETE FROM `playerbots_enchants`; DELETE FROM `playerbots_enchants`;
INSERT INTO `playerbots_enchants` (`class`, `spec`, `spellid`, `slotid`, `name`) VALUES INSERT INTO `playerbots_enchants` (`class`, `spec`, `spellid`, `slotid`, `name`) VALUES
(1, 10, 20034, 15, 'Crusader '), (1, 10, 20034, 15, 'Crusader '),
(1, 10, 22779, 17, '30 Hit '), (1, 10, 22779, 17, '30 Hit '),
(1, 10, 27927, 10, '4 All Stats '), (1, 10, 27927, 10, '4 All Stats '),
(1, 10, 27927, 11, '4 All Stats '), (1, 10, 27927, 11, '4 All Stats '),
(1, 10, 27960, 4, '6 All Stats '), (1, 10, 27960, 4, '6 All Stats '),
(1, 10, 27984, 16, 'Mongoose '), (1, 10, 27984, 16, 'Mongoose '),
(1, 10, 29483, 2, '26 Attackpower 14 Crit '), (1, 10, 29483, 2, '26 Attackpower 14 Crit '),
(1, 10, 33996, 9, '26 Attackpower '), (1, 10, 33996, 9, '26 Attackpower '),
(1, 10, 34002, 8, '24 Attackpower '), (1, 10, 34002, 8, '24 Attackpower '),
(1, 10, 34004, 14, '12 Agility '), (1, 10, 34004, 14, '12 Agility '),
(1, 10, 34007, 7, 'Minor Speed 6 Agility'), (1, 10, 34007, 7, 'Minor Speed 6 Agility'),
(1, 10, 35452, 0, '34 Attackpower 16 Hit '), (1, 10, 35452, 0, '34 Attackpower 16 Hit '),
(1, 10, 35490, 6, '50 Attackpower 12 Crit '), (1, 10, 35490, 6, '50 Attackpower 12 Crit '),
(1, 11, 20034, 15, 'Crusader '), (1, 11, 20034, 15, 'Crusader '),
(1, 11, 20034, 16, 'Crusader '), (1, 11, 20034, 16, 'Crusader '),
(1, 11, 22779, 17, '30 Hit '), (1, 11, 22779, 17, '30 Hit '),
(1, 11, 27927, 10, '4 All Stats '), (1, 11, 27927, 10, '4 All Stats '),
(1, 11, 27927, 11, '4 All Stats '), (1, 11, 27927, 11, '4 All Stats '),
(1, 11, 27960, 4, '6 All Stats '), (1, 11, 27960, 4, '6 All Stats '),
(1, 11, 29483, 2, '26 Attackpower 14 Crit '), (1, 11, 29483, 2, '26 Attackpower 14 Crit '),
(1, 11, 33996, 9, '26 Attackpower '), (1, 11, 33996, 9, '26 Attackpower '),
(1, 11, 34002, 8, '24 Attackpower '), (1, 11, 34002, 8, '24 Attackpower '),
(1, 11, 34004, 14, '12 Agility '), (1, 11, 34004, 14, '12 Agility '),
(1, 11, 34007, 7, 'Minor Speed 6 Agility'), (1, 11, 34007, 7, 'Minor Speed 6 Agility'),
(1, 11, 35452, 0, '34 Attackpower 16 Hit '), (1, 11, 35452, 0, '34 Attackpower 16 Hit '),
(1, 11, 35490, 6, '50 Attackpower 12 Crit '), (1, 11, 35490, 6, '50 Attackpower 12 Crit '),
(1, 12, 22779, 17, '30 Hit '), (1, 12, 22779, 17, '30 Hit '),
(1, 12, 25072, 9, '2% Threat '), (1, 12, 25072, 9, '2% Threat '),
(1, 12, 27906, 8, '12 Defense '), (1, 12, 27906, 8, '12 Defense '),
(1, 12, 27927, 10, '4 All Stats '), (1, 12, 27927, 10, '4 All Stats '),
(1, 12, 27927, 11, '4 All Stats '), (1, 12, 27927, 11, '4 All Stats '),
(1, 12, 27954, 7, '5% Root/Snare Resist 10 Hit'), (1, 12, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(1, 12, 27960, 4, '6 All Stats '), (1, 12, 27960, 4, '6 All Stats '),
(1, 12, 28004, 15, 'Battlemaster '), (1, 12, 28004, 15, 'Battlemaster '),
(1, 12, 34009, 16, '18 Stamina '), (1, 12, 34009, 16, '18 Stamina '),
(1, 12, 35433, 2, '10 Dodge 15 Defense '), (1, 12, 35433, 2, '10 Dodge 15 Defense '),
(1, 12, 35443, 0, '16 Defense 17 Dodge '), (1, 12, 35443, 0, '16 Defense 17 Dodge '),
(1, 12, 35495, 6, '40 Stamina 12 Agility '), (1, 12, 35495, 6, '40 Stamina 12 Agility '),
(1, 12, 47051, 14, '12 Defense '), (1, 12, 47051, 14, '12 Defense '),
(2, 20, 22779, 17, '30 Hit '), (2, 20, 22779, 17, '30 Hit '),
(2, 20, 27926, 10, '20 Healing 7 Spelldamage '), (2, 20, 27926, 10, '20 Healing 7 Spelldamage '),
(2, 20, 27926, 11, '20 Healing 7 Spelldamage '), (2, 20, 27926, 11, '20 Healing 7 Spelldamage '),
(2, 20, 27945, 16, '12 Intellect '), (2, 20, 27945, 16, '12 Intellect '),
(2, 20, 27954, 7, '5% Root/Snare Resist 10 Hit'), (2, 20, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(2, 20, 27960, 4, '6 All Stats '), (2, 20, 27960, 4, '6 All Stats '),
(2, 20, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '), (2, 20, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
(2, 20, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (2, 20, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(2, 20, 33999, 9, '35 Healing 12 Spelldamage '), (2, 20, 33999, 9, '35 Healing 12 Spelldamage '),
(2, 20, 34001, 8, '12 Intellect '), (2, 20, 34001, 8, '12 Intellect '),
(2, 20, 34003, 14, '20 Spell Penetration '), (2, 20, 34003, 14, '20 Spell Penetration '),
(2, 20, 34010, 15, '81 Healing 27 Spelldamage '), (2, 20, 34010, 15, '81 Healing 27 Spelldamage '),
(2, 20, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '), (2, 20, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
(2, 21, 22779, 17, '30 Hit '), (2, 21, 22779, 17, '30 Hit '),
(2, 21, 25072, 9, '2% Threat '), (2, 21, 25072, 9, '2% Threat '),
(2, 21, 27906, 8, '12 Defense '), (2, 21, 27906, 8, '12 Defense '),
(2, 21, 27927, 10, '4 All Stats '), (2, 21, 27927, 10, '4 All Stats '),
(2, 21, 27927, 11, '4 All Stats '), (2, 21, 27927, 11, '4 All Stats '),
(2, 21, 27954, 7, '5% Root/Snare Resist 10 Hit'), (2, 21, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(2, 21, 27960, 4, '6 All Stats '), (2, 21, 27960, 4, '6 All Stats '),
(2, 21, 28004, 15, 'Battlemaster '), (2, 21, 28004, 15, 'Battlemaster '),
(2, 21, 34009, 16, '18 Stamina '), (2, 21, 34009, 16, '18 Stamina '),
(2, 21, 35433, 2, '10 Dodge 15 Defense '), (2, 21, 35433, 2, '10 Dodge 15 Defense '),
(2, 21, 35443, 0, '16 Defense 17 Dodge '), (2, 21, 35443, 0, '16 Defense 17 Dodge '),
(2, 21, 35495, 6, '40 Stamina 12 Agility '), (2, 21, 35495, 6, '40 Stamina 12 Agility '),
(2, 21, 47051, 14, '12 Defense '), (2, 21, 47051, 14, '12 Defense '),
(2, 22, 20034, 15, 'Crusader '), (2, 22, 20034, 15, 'Crusader '),
(2, 22, 22779, 17, '30 Hit '), (2, 22, 22779, 17, '30 Hit '),
(2, 22, 27899, 8, '12 Strength '), (2, 22, 27899, 8, '12 Strength '),
(2, 22, 27927, 10, '4 All Stats '), (2, 22, 27927, 10, '4 All Stats '),
(2, 22, 27927, 11, '4 All Stats '), (2, 22, 27927, 11, '4 All Stats '),
(2, 22, 27960, 4, '6 All Stats '), (2, 22, 27960, 4, '6 All Stats '),
(2, 22, 29483, 2, '26 Attackpower 14 Crit '), (2, 22, 29483, 2, '26 Attackpower 14 Crit '),
(2, 22, 33995, 6, '50 Attackpower 12 Crit '), (2, 22, 33995, 6, '50 Attackpower 12 Crit '),
(2, 22, 33996, 9, '15 Strength '), (2, 22, 33996, 9, '15 Strength '),
(2, 22, 34004, 14, '12 Agility '), (2, 22, 34004, 14, '12 Agility '),
(2, 22, 34007, 7, 'Minor Speed 6 Agility'), (2, 22, 34007, 7, 'Minor Speed 6 Agility'),
(2, 22, 37891, 0, '17 Strength16 Intellect '), (2, 22, 37891, 0, '17 Strength16 Intellect '),
(3, 30, 22779, 17, '30 Hit '), (3, 30, 22779, 17, '30 Hit '),
(3, 30, 25080, 9, '15 Agility '), (3, 30, 25080, 9, '15 Agility '),
(3, 30, 27927, 10, '4 All Stats '), (3, 30, 27927, 10, '4 All Stats '),
(3, 30, 27927, 11, '4 All Stats '), (3, 30, 27927, 11, '4 All Stats '),
(3, 30, 27951, 7, '12 Agility'), (3, 30, 27951, 7, '12 Agility'),
(3, 30, 27960, 4, '6 All Stats '), (3, 30, 27960, 4, '6 All Stats '),
(3, 30, 29483, 2, '26 Attackpower 14 Crit '), (3, 30, 29483, 2, '26 Attackpower 14 Crit '),
(3, 30, 34002, 8, '24 Attackpower '), (3, 30, 34002, 8, '24 Attackpower '),
(3, 30, 34004, 14, '12 Agility '), (3, 30, 34004, 14, '12 Agility '),
(3, 30, 35452, 0, '34 Attackpower 16 Hit '), (3, 30, 35452, 0, '34 Attackpower 16 Hit '),
(3, 30, 35495, 6, '40 Stamina 12 Agility '), (3, 30, 35495, 6, '40 Stamina 12 Agility '),
(3, 30, 42620, 15, 'Greater Agility '), (3, 30, 42620, 15, 'Greater Agility '),
(3, 30, 42620, 16, 'Greater Agility '), (3, 30, 42620, 16, 'Greater Agility '),
(4, 40, 22779, 17, '30 Hit '), (4, 40, 22779, 17, '30 Hit '),
(4, 40, 25080, 9, '15 Agility '), (4, 40, 25080, 9, '15 Agility '),
(4, 40, 27927, 10, '4 All Stats '), (4, 40, 27927, 10, '4 All Stats '),
(4, 40, 27927, 11, '4 All Stats '), (4, 40, 27927, 11, '4 All Stats '),
(4, 40, 27951, 7, '12 Agility'), (4, 40, 27951, 7, '12 Agility'),
(4, 40, 27960, 4, '6 All Stats '), (4, 40, 27960, 4, '6 All Stats '),
(4, 40, 27984, 15, 'Mongoose '), (4, 40, 27984, 15, 'Mongoose '),
(4, 40, 27984, 16, 'Mongoose '), (4, 40, 27984, 16, 'Mongoose '),
(4, 40, 29483, 2, '26 Attackpower 14 Crit '), (4, 40, 29483, 2, '26 Attackpower 14 Crit '),
(4, 40, 34002, 8, '24 Attackpower '), (4, 40, 34002, 8, '24 Attackpower '),
(4, 40, 34004, 14, '12 Agility '), (4, 40, 34004, 14, '12 Agility '),
(4, 40, 35452, 0, '34 Attackpower 16 Hit '), (4, 40, 35452, 0, '34 Attackpower 16 Hit '),
(4, 40, 35495, 6, '40 Stamina 12 Agility '), (4, 40, 35495, 6, '40 Stamina 12 Agility '),
(5, 50, 22779, 17, '30 Hit '), (5, 50, 22779, 17, '30 Hit '),
(5, 50, 27926, 10, '20 Healing 7 Spelldamage '), (5, 50, 27926, 10, '20 Healing 7 Spelldamage '),
(5, 50, 27926, 11, '20 Healing 7 Spelldamage '), (5, 50, 27926, 11, '20 Healing 7 Spelldamage '),
(5, 50, 27945, 16, '12 Intellect '), (5, 50, 27945, 16, '12 Intellect '),
(5, 50, 27954, 7, '5% Root/Snare Resist 10 Hit'), (5, 50, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(5, 50, 27960, 4, '6 All Stats '), (5, 50, 27960, 4, '6 All Stats '),
(5, 50, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '), (5, 50, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
(5, 50, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (5, 50, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(5, 50, 33999, 9, '35 Healing 12 Spelldamage '), (5, 50, 33999, 9, '35 Healing 12 Spelldamage '),
(5, 50, 34001, 8, '12 Intellect '), (5, 50, 34001, 8, '12 Intellect '),
(5, 50, 34003, 14, '20 Spell Penetration '), (5, 50, 34003, 14, '20 Spell Penetration '),
(5, 50, 34010, 15, '81 Healing 27 Spelldamage '), (5, 50, 34010, 15, '81 Healing 27 Spelldamage '),
(5, 50, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '), (5, 50, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
(7, 70, 22779, 17, '30 Hit '), (7, 70, 22779, 17, '30 Hit '),
(7, 70, 27926, 10, '20 Healing 7 Spelldamage '), (7, 70, 27926, 10, '20 Healing 7 Spelldamage '),
(7, 70, 27926, 11, '20 Healing 7 Spelldamage '), (7, 70, 27926, 11, '20 Healing 7 Spelldamage '),
(7, 70, 27945, 16, '12 Intellect '), (7, 70, 27945, 16, '12 Intellect '),
(7, 70, 27954, 7, '5% Root/Snare Resist 10 Hit'), (7, 70, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(7, 70, 27960, 4, '6 All Stats '), (7, 70, 27960, 4, '6 All Stats '),
(7, 70, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (7, 70, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(7, 70, 33994, 9, '15 Spell Hit '), (7, 70, 33994, 9, '15 Spell Hit '),
(7, 70, 34001, 8, '12 Intellect '), (7, 70, 34001, 8, '12 Intellect '),
(7, 70, 34003, 14, '20 Spell Penetration '), (7, 70, 34003, 14, '20 Spell Penetration '),
(7, 70, 34010, 15, '81 Healing 27 Spelldamage '), (7, 70, 34010, 15, '81 Healing 27 Spelldamage '),
(7, 70, 35406, 2, '18 Spelldamage 10 Crit '), (7, 70, 35406, 2, '18 Spelldamage 10 Crit '),
(7, 70, 35447, 0, '22 Spelldamage 14 Hit '), (7, 70, 35447, 0, '22 Spelldamage 14 Hit '),
(7, 71, 22779, 17, '30 Hit '), (7, 71, 22779, 17, '30 Hit '),
(7, 71, 25080, 9, '15 Agility '), (7, 71, 25080, 9, '15 Agility '),
(7, 71, 27927, 10, '4 All Stats '), (7, 71, 27927, 10, '4 All Stats '),
(7, 71, 27927, 11, '4 All Stats '), (7, 71, 27927, 11, '4 All Stats '),
(7, 71, 27951, 7, '12 Agility'), (7, 71, 27951, 7, '12 Agility'),
(7, 71, 27960, 4, '6 All Stats '), (7, 71, 27960, 4, '6 All Stats '),
(7, 71, 27977, 15, '35 Agility '), (7, 71, 27977, 15, '35 Agility '),
(7, 71, 27984, 16, 'Mongoose '), (7, 71, 27984, 16, 'Mongoose '),
(7, 71, 29483, 2, '26 Attackpower 14 Crit '), (7, 71, 29483, 2, '26 Attackpower 14 Crit '),
(7, 71, 34002, 8, '24 Attackpower '), (7, 71, 34002, 8, '24 Attackpower '),
(7, 71, 34004, 14, '12 Agility '), (7, 71, 34004, 14, '12 Agility '),
(7, 71, 35452, 0, '34 Attackpower 16 Hit '), (7, 71, 35452, 0, '34 Attackpower 16 Hit '),
(7, 71, 35495, 6, '40 Stamina 12 Agility '), (7, 71, 35495, 6, '40 Stamina 12 Agility '),
(7, 72, 22779, 17, '30 Hit '), (7, 72, 22779, 17, '30 Hit '),
(7, 72, 27926, 10, '20 Healing 7 Spelldamage '), (7, 72, 27926, 10, '20 Healing 7 Spelldamage '),
(7, 72, 27926, 11, '20 Healing 7 Spelldamage '), (7, 72, 27926, 11, '20 Healing 7 Spelldamage '),
(7, 72, 27945, 16, '12 Intellect '), (7, 72, 27945, 16, '12 Intellect '),
(7, 72, 27954, 7, '5% Root/Snare Resist 10 Hit'), (7, 72, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(7, 72, 27960, 4, '6 All Stats '), (7, 72, 27960, 4, '6 All Stats '),
(7, 72, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '), (7, 72, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
(7, 72, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (7, 72, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(7, 72, 33999, 9, '35 Healing 12 Spelldamage '), (7, 72, 33999, 9, '35 Healing 12 Spelldamage '),
(7, 72, 34001, 8, '12 Intellect '), (7, 72, 34001, 8, '12 Intellect '),
(7, 72, 34003, 14, '20 Spell Penetration '), (7, 72, 34003, 14, '20 Spell Penetration '),
(7, 72, 34010, 15, '81 Healing 27 Spelldamage '), (7, 72, 34010, 15, '81 Healing 27 Spelldamage '),
(7, 72, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '), (7, 72, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '),
(8, 80, 22779, 17, '30 Hit '), (8, 80, 22779, 17, '30 Hit '),
(8, 80, 27927, 10, '4 All Stats '), (8, 80, 27927, 10, '4 All Stats '),
(8, 80, 27927, 11, '4 All Stats '), (8, 80, 27927, 11, '4 All Stats '),
(8, 80, 27945, 16, '12 Intellect '), (8, 80, 27945, 16, '12 Intellect '),
(8, 80, 27954, 7, '5% Root/Snare Resist 10 Hit'), (8, 80, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(8, 80, 27960, 4, '6 All Stats '), (8, 80, 27960, 4, '6 All Stats '),
(8, 80, 27975, 15, '40 Spelldamage '), (8, 80, 27975, 15, '40 Spelldamage '),
(8, 80, 31372, 6, '35 Spelldamage 20 Stamina '), (8, 80, 31372, 6, '35 Spelldamage 20 Stamina '),
(8, 80, 33994, 9, '15 Spell Hit '), (8, 80, 33994, 9, '15 Spell Hit '),
(8, 80, 34001, 8, '12 Intellect '), (8, 80, 34001, 8, '12 Intellect '),
(8, 80, 34003, 14, '20 Spell Penetration '), (8, 80, 34003, 14, '20 Spell Penetration '),
(8, 80, 35406, 2, '18 Spelldamage 10 Crit '), (8, 80, 35406, 2, '18 Spelldamage 10 Crit '),
(8, 80, 35447, 0, '22 Spelldamage 14 Hit '), (8, 80, 35447, 0, '22 Spelldamage 14 Hit '),
(9, 90, 22779, 17, '30 Hit '), (9, 90, 22779, 17, '30 Hit '),
(9, 90, 27924, 11, '12 Spelldamage '), (9, 90, 27924, 11, '12 Spelldamage '),
(9, 90, 27927, 10, '4 All Stats '), (9, 90, 27927, 10, '4 All Stats '),
(9, 90, 27945, 16, '12 Intellect '), (9, 90, 27945, 16, '12 Intellect '),
(9, 90, 27954, 7, '5% Root/Snare Resist 10 Hit'), (9, 90, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(9, 90, 27960, 4, '6 All Stats '), (9, 90, 27960, 4, '6 All Stats '),
(9, 90, 27975, 15, '40 Spelldamage '), (9, 90, 27975, 15, '40 Spelldamage '),
(9, 90, 31372, 6, '35 Spelldamage 20 Stamina '), (9, 90, 31372, 6, '35 Spelldamage 20 Stamina '),
(9, 90, 33994, 9, '15 Spell Hit '), (9, 90, 33994, 9, '15 Spell Hit '),
(9, 90, 34001, 8, '12 Intellect '), (9, 90, 34001, 8, '12 Intellect '),
(9, 90, 34003, 14, '20 Spell Penetration '), (9, 90, 34003, 14, '20 Spell Penetration '),
(9, 90, 35406, 2, '18 Spelldamage 10 Crit '), (9, 90, 35406, 2, '18 Spelldamage 10 Crit '),
(9, 90, 35447, 0, '22 Spelldamage 14 Hit '), (9, 90, 35447, 0, '22 Spelldamage 14 Hit '),
(11, 110, 22779, 17, '30 Hit '), (11, 110, 22779, 17, '30 Hit '),
(11, 110, 27926, 10, '20 Healing 7 Spelldamage '), (11, 110, 27926, 10, '20 Healing 7 Spelldamage '),
(11, 110, 27926, 11, '20 Healing 7 Spelldamage '), (11, 110, 27926, 11, '20 Healing 7 Spelldamage '),
(11, 110, 27945, 16, '12 Intellect '), (11, 110, 27945, 16, '12 Intellect '),
(11, 110, 27954, 7, '5% Root/Snare Resist 10 Hit'), (11, 110, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(11, 110, 27960, 4, '6 All Stats '), (11, 110, 27960, 4, '6 All Stats '),
(11, 110, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (11, 110, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(11, 110, 33994, 9, '15 Spell Hit '), (11, 110, 33994, 9, '15 Spell Hit '),
(11, 110, 34001, 8, '12 Intellect '), (11, 110, 34001, 8, '12 Intellect '),
(11, 110, 34003, 14, '20 Spell Penetration '), (11, 110, 34003, 14, '20 Spell Penetration '),
(11, 110, 34010, 15, '81 Healing 27 Spelldamage '), (11, 110, 34010, 15, '81 Healing 27 Spelldamage '),
(11, 110, 35406, 2, '18 Spelldamage 10 Crit '), (11, 110, 35406, 2, '18 Spelldamage 10 Crit '),
(11, 110, 35447, 0, '22 Spelldamage 14 Hit '), (11, 110, 35447, 0, '22 Spelldamage 14 Hit '),
(11, 111, 22779, 17, '30 Hit '), (11, 111, 22779, 17, '30 Hit '),
(11, 111, 25080, 9, '15 Agility '), (11, 111, 25080, 9, '15 Agility '),
(11, 111, 27927, 10, '4 All Stats '), (11, 111, 27927, 10, '4 All Stats '),
(11, 111, 27927, 11, '4 All Stats '), (11, 111, 27927, 11, '4 All Stats '),
(11, 111, 27951, 7, '12 Agility'), (11, 111, 27951, 7, '12 Agility'),
(11, 111, 27960, 4, '6 All Stats '), (11, 111, 27960, 4, '6 All Stats '),
(11, 111, 29483, 2, '26 Attackpower 14 Crit '), (11, 111, 29483, 2, '26 Attackpower 14 Crit '),
(11, 111, 34002, 8, '24 Attackpower '), (11, 111, 34002, 8, '24 Attackpower '),
(11, 111, 34004, 14, '12 Agility '), (11, 111, 34004, 14, '12 Agility '),
(11, 111, 35452, 0, '34 Attackpower 16 Hit '), (11, 111, 35452, 0, '34 Attackpower 16 Hit '),
(11, 111, 35495, 6, '40 Stamina 12 Agility '), (11, 111, 35495, 6, '40 Stamina 12 Agility '),
(11, 111, 42620, 15, 'Greater Agility '), (11, 111, 42620, 15, 'Greater Agility '),
(11, 111, 42620, 16, 'Greater Agility '), (11, 111, 42620, 16, 'Greater Agility '),
(11, 112, 22779, 17, '30 Hit '), (11, 112, 22779, 17, '30 Hit '),
(11, 112, 27926, 10, '20 Healing 7 Spelldamage '), (11, 112, 27926, 10, '20 Healing 7 Spelldamage '),
(11, 112, 27926, 11, '20 Healing 7 Spelldamage '), (11, 112, 27926, 11, '20 Healing 7 Spelldamage '),
(11, 112, 27945, 16, '12 Intellect '), (11, 112, 27945, 16, '12 Intellect '),
(11, 112, 27954, 7, '5% Root/Snare Resist 10 Hit'), (11, 112, 27954, 7, '5% Root/Snare Resist 10 Hit'),
(11, 112, 27960, 4, '6 All Stats '), (11, 112, 27960, 4, '6 All Stats '),
(11, 112, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '), (11, 112, 29475, 2, '31 Healing 11 Spelldamage 5 mp5 '),
(11, 112, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '), (11, 112, 31370, 6, '66 Healing 22 Spelldamage 20 Stamina '),
(11, 112, 33999, 9, '35 Healing 12 Spelldamage '), (11, 112, 33999, 9, '35 Healing 12 Spelldamage '),
(11, 112, 34001, 8, '12 Intellect '), (11, 112, 34001, 8, '12 Intellect '),
(11, 112, 34003, 14, '20 Spell Penetration '), (11, 112, 34003, 14, '20 Spell Penetration '),
(11, 112, 34010, 15, '81 Healing 27 Spelldamage '), (11, 112, 34010, 15, '81 Healing 27 Spelldamage '),
(11, 112, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 '); (11, 112, 35445, 0, '35 Healing 12 Spelldamage 7 mp5 ');
/*!40000 ALTER TABLE `playerbots_enchants` ENABLE KEYS */; /*!40000 ALTER TABLE `playerbots_enchants` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;

View File

@@ -7,278 +7,278 @@ CREATE TABLE IF NOT EXISTS `playerbots_weightscale_data` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `playerbots_weightscale_data` (`id`, `field`, `val`) VALUES INSERT INTO `playerbots_weightscale_data` (`id`, `field`, `val`) VALUES
(1, 'exprtng', 100), (1, 'exprtng', 100),
(1, 'str', 82), (1, 'str', 82),
(1, 'critstrkrtng', 66), (1, 'critstrkrtng', 66),
(1, 'agi', 53), (1, 'agi', 53),
(1, 'armorpenrtng', 52), (1, 'armorpenrtng', 52),
(1, 'hitrtng', 48), (1, 'hitrtng', 48),
(1, 'hastertng', 36), (1, 'hastertng', 36),
(1, 'atkpwr', 31), (1, 'atkpwr', 31),
(1, 'armor', 5), (1, 'armor', 5),
(2, 'exprtng', 100), (2, 'exprtng', 100),
(2, 'str', 82), (2, 'str', 82),
(2, 'critstrkrtng', 66), (2, 'critstrkrtng', 66),
(2, 'agi', 53), (2, 'agi', 53),
(2, 'armorpenrtng', 52), (2, 'armorpenrtng', 52),
(2, 'hitrtng', 48), (2, 'hitrtng', 48),
(2, 'hastertng', 36), (2, 'hastertng', 36),
(2, 'atkpwr', 31), (2, 'atkpwr', 31),
(2, 'armor', 5), (2, 'armor', 5),
(3, 'sta', 100), (3, 'sta', 100),
(3, 'dodgertng', 90), (3, 'dodgertng', 90),
(3, 'defrtng', 86), (3, 'defrtng', 86),
(3, 'block', 81), (3, 'block', 81),
(3, 'agi', 67), (3, 'agi', 67),
(3, 'parryrtng', 67), (3, 'parryrtng', 67),
(3, 'blockrtng', 48), (3, 'blockrtng', 48),
(3, 'str', 48), (3, 'str', 48),
(3, 'exprtng', 19), (3, 'exprtng', 19),
(3, 'hitrtng', 10), (3, 'hitrtng', 10),
(3, 'armorpenrtng', 10), (3, 'armorpenrtng', 10),
(3, 'critstrkrtng', 7), (3, 'critstrkrtng', 7),
(3, 'armor', 6), (3, 'armor', 6),
(3, 'hastertng', 1), (3, 'hastertng', 1),
(3, 'atkpwr', 1), (3, 'atkpwr', 1),
(4, 'int', 100), (4, 'int', 100),
(4, 'manargn', 88), (4, 'manargn', 88),
(4, 'splpwr', 58), (4, 'splpwr', 58),
(4, 'critstrkrtng', 46), (4, 'critstrkrtng', 46),
(4, 'hastertng', 35), (4, 'hastertng', 35),
(5, 'sta', 100), (5, 'sta', 100),
(5, 'dodgertng', 94), (5, 'dodgertng', 94),
(5, 'block', 86), (5, 'block', 86),
(5, 'defrtng', 86), (5, 'defrtng', 86),
(5, 'exprtng', 79), (5, 'exprtng', 79),
(5, 'agi', 76), (5, 'agi', 76),
(5, 'parryrtng', 76), (5, 'parryrtng', 76),
(5, 'hitrtng', 58), (5, 'hitrtng', 58),
(5, 'blockrtng', 52), (5, 'blockrtng', 52),
(5, 'str', 50), (5, 'str', 50),
(5, 'armor', 6), (5, 'armor', 6),
(5, 'atkpwr', 6), (5, 'atkpwr', 6),
(5, 'splpwr', 4), (5, 'splpwr', 4),
(5, 'critstrkrtng', 3), (5, 'critstrkrtng', 3),
(6, 'mledps', 470), (6, 'mledps', 470),
(6, 'hitrtng', 100), (6, 'hitrtng', 100),
(6, 'str', 80), (6, 'str', 80),
(6, 'exprtng', 66), (6, 'exprtng', 66),
(6, 'critstrkrtng', 40), (6, 'critstrkrtng', 40),
(6, 'atkpwr', 34), (6, 'atkpwr', 34),
(6, 'agi', 32), (6, 'agi', 32),
(6, 'hastertng', 30), (6, 'hastertng', 30),
(6, 'armorpenrtng', 22), (6, 'armorpenrtng', 22),
(6, 'splpwr', 9), (6, 'splpwr', 9),
(7, 'rgddps', 213), (7, 'rgddps', 213),
(7, 'hitrtng', 100), (7, 'hitrtng', 100),
(7, 'agi', 58), (7, 'agi', 58),
(7, 'critstrkrtng', 40), (7, 'critstrkrtng', 40),
(7, 'int', 37), (7, 'int', 37),
(7, 'atkpwr', 30), (7, 'atkpwr', 30),
(7, 'armorpenrtng', 28), (7, 'armorpenrtng', 28),
(7, 'hastertng', 21), (7, 'hastertng', 21),
(8, 'rgddps', 379), (8, 'rgddps', 379),
(8, 'hitrtng', 100), (8, 'hitrtng', 100),
(8, 'agi', 74), (8, 'agi', 74),
(8, 'critstrkrtng', 57), (8, 'critstrkrtng', 57),
(8, 'armorpenrtng', 40), (8, 'armorpenrtng', 40),
(8, 'int', 39), (8, 'int', 39),
(8, 'atkpwr', 32), (8, 'atkpwr', 32),
(8, 'hastertng', 24), (8, 'hastertng', 24),
(9, 'rgddps', 181), (9, 'rgddps', 181),
(9, 'hitrtng', 100), (9, 'hitrtng', 100),
(9, 'agi', 76), (9, 'agi', 76),
(9, 'critstrkrtng', 42), (9, 'critstrkrtng', 42),
(9, 'int', 35), (9, 'int', 35),
(9, 'hastertng', 31), (9, 'hastertng', 31),
(9, 'atkpwr', 29), (9, 'atkpwr', 29),
(9, 'armorpenrtng', 26), (9, 'armorpenrtng', 26),
(10, 'mledps', 170), (10, 'mledps', 170),
(10, 'agi', 100), (10, 'agi', 100),
(10, 'exprtng', 87), (10, 'exprtng', 87),
(10, 'hitrtng', 83), (10, 'hitrtng', 83),
(10, 'critstrkrtng', 81), (10, 'critstrkrtng', 81),
(10, 'atkpwr', 65), (10, 'atkpwr', 65),
(10, 'armorpenrtng', 65), (10, 'armorpenrtng', 65),
(10, 'hastertng', 64), (10, 'hastertng', 64),
(10, 'str', 55), (10, 'str', 55),
(11, 'mledps', 220), (11, 'mledps', 220),
(11, 'armorpenrtng', 100), (11, 'armorpenrtng', 100),
(11, 'agi', 100), (11, 'agi', 100),
(11, 'exprtng', 82), (11, 'exprtng', 82),
(11, 'hitrtng', 80), (11, 'hitrtng', 80),
(11, 'critstrkrtng', 75), (11, 'critstrkrtng', 75),
(11, 'hastertng', 73), (11, 'hastertng', 73),
(11, 'str', 55), (11, 'str', 55),
(11, 'atkpwr', 50), (11, 'atkpwr', 50),
(12, 'mledps', 228), (12, 'mledps', 228),
(12, 'exprtng', 100), (12, 'exprtng', 100),
(12, 'agi', 100), (12, 'agi', 100),
(12, 'hitrtng', 80), (12, 'hitrtng', 80),
(12, 'armorpenrtng', 75), (12, 'armorpenrtng', 75),
(12, 'critstrkrtng', 75), (12, 'critstrkrtng', 75),
(12, 'hastertng', 75), (12, 'hastertng', 75),
(12, 'str', 55), (12, 'str', 55),
(12, 'atkpwr', 50), (12, 'atkpwr', 50),
(13, 'splpwr', 100), (13, 'splpwr', 100),
(13, 'manargn', 67), (13, 'manargn', 67),
(13, 'int', 65), (13, 'int', 65),
(13, 'hastertng', 59), (13, 'hastertng', 59),
(13, 'critstrkrtng', 48), (13, 'critstrkrtng', 48),
(13, 'spi', 22), (13, 'spi', 22),
(14, 'manargn', 100), (14, 'manargn', 100),
(14, 'int', 69), (14, 'int', 69),
(14, 'splpwr', 60), (14, 'splpwr', 60),
(14, 'spi', 52), (14, 'spi', 52),
(14, 'critstrkrtng', 38), (14, 'critstrkrtng', 38),
(14, 'hastertng', 31), (14, 'hastertng', 31),
(15, 'hitrtng', 100), (15, 'hitrtng', 100),
(15, 'shasplpwr', 76), (15, 'shasplpwr', 76),
(15, 'splpwr', 76), (15, 'splpwr', 76),
(15, 'critstrkrtng', 54), (15, 'critstrkrtng', 54),
(15, 'hastertng', 50), (15, 'hastertng', 50),
(15, 'spi', 16), (15, 'spi', 16),
(15, 'int', 16), (15, 'int', 16),
(16, 'mledps', 360), (16, 'mledps', 360),
(16, 'armorpenrtng', 100), (16, 'armorpenrtng', 100),
(16, 'str', 99), (16, 'str', 99),
(16, 'hitrtng', 91), (16, 'hitrtng', 91),
(16, 'exprtng', 90), (16, 'exprtng', 90),
(16, 'critstrkrtng', 57), (16, 'critstrkrtng', 57),
(16, 'hastertng', 55), (16, 'hastertng', 55),
(16, 'atkpwr', 36), (16, 'atkpwr', 36),
(16, 'armor', 1), (16, 'armor', 1),
(17, 'mledps', 337), (17, 'mledps', 337),
(17, 'hitrtng', 100), (17, 'hitrtng', 100),
(17, 'str', 97), (17, 'str', 97),
(17, 'exprtng', 81), (17, 'exprtng', 81),
(17, 'armorpenrtng', 61), (17, 'armorpenrtng', 61),
(17, 'critstrkrtng', 45), (17, 'critstrkrtng', 45),
(17, 'atkpwr', 35), (17, 'atkpwr', 35),
(17, 'hastertng', 28), (17, 'hastertng', 28),
(17, 'armor', 1), (17, 'armor', 1),
(18, 'mledps', 419), (18, 'mledps', 419),
(18, 'parryrtng', 100), (18, 'parryrtng', 100),
(18, 'hitrtng', 97), (18, 'hitrtng', 97),
(18, 'str', 96), (18, 'str', 96),
(18, 'defrtng', 85), (18, 'defrtng', 85),
(18, 'exprtng', 69), (18, 'exprtng', 69),
(18, 'dodgertng', 61), (18, 'dodgertng', 61),
(18, 'agi', 61), (18, 'agi', 61),
(18, 'sta', 61), (18, 'sta', 61),
(18, 'critstrkrtng', 49), (18, 'critstrkrtng', 49),
(18, 'atkpwr', 41), (18, 'atkpwr', 41),
(18, 'armorpenrtng', 31), (18, 'armorpenrtng', 31),
(18, 'armor', 5), (18, 'armor', 5),
(19, 'mledps', 209), (19, 'mledps', 209),
(19, 'str', 100), (19, 'str', 100),
(19, 'hitrtng', 66), (19, 'hitrtng', 66),
(19, 'exprtng', 51), (19, 'exprtng', 51),
(19, 'hastertng', 48), (19, 'hastertng', 48),
(19, 'critstrkrtng', 45), (19, 'critstrkrtng', 45),
(19, 'atkpwr', 34), (19, 'atkpwr', 34),
(19, 'armorpenrtng', 32), (19, 'armorpenrtng', 32),
(19, 'armor', 1), (19, 'armor', 1),
(20, 'hitrtng', 100), (20, 'hitrtng', 100),
(20, 'splpwr', 60), (20, 'splpwr', 60),
(20, 'hastertng', 56), (20, 'hastertng', 56),
(20, 'critstrkrtng', 40), (20, 'critstrkrtng', 40),
(20, 'int', 11), (20, 'int', 11),
(21, 'mledps', 135), (21, 'mledps', 135),
(21, 'hitrtng', 100), (21, 'hitrtng', 100),
(21, 'exprtng', 84), (21, 'exprtng', 84),
(21, 'agi', 55), (21, 'agi', 55),
(21, 'int', 55), (21, 'int', 55),
(21, 'critstrkrtng', 55), (21, 'critstrkrtng', 55),
(21, 'hastertng', 42), (21, 'hastertng', 42),
(21, 'str', 35), (21, 'str', 35),
(21, 'atkpwr', 32), (21, 'atkpwr', 32),
(21, 'splpwr', 29), (21, 'splpwr', 29),
(21, 'armorpenrtng', 26), (21, 'armorpenrtng', 26),
(22, 'manargn', 100), (22, 'manargn', 100),
(22, 'int', 85), (22, 'int', 85),
(22, 'splpwr', 77), (22, 'splpwr', 77),
(22, 'critstrkrtng', 62), (22, 'critstrkrtng', 62),
(22, 'hastertng', 35), (22, 'hastertng', 35),
(23, 'hitrtng', 100), (23, 'hitrtng', 100),
(23, 'hastertng', 54), (23, 'hastertng', 54),
(23, 'arcsplpwr', 49), (23, 'arcsplpwr', 49),
(23, 'splpwr', 49), (23, 'splpwr', 49),
(23, 'critstrkrtng', 37), (23, 'critstrkrtng', 37),
(23, 'int', 34), (23, 'int', 34),
(23, 'frosplpwr', 24), (23, 'frosplpwr', 24),
(23, 'firsplpwr', 24), (23, 'firsplpwr', 24),
(23, 'spi', 14), (23, 'spi', 14),
(24, 'hitrtng', 100), (24, 'hitrtng', 100),
(24, 'hastertng', 53), (24, 'hastertng', 53),
(24, 'firsplpwr', 46), (24, 'firsplpwr', 46),
(24, 'splpwr', 46), (24, 'splpwr', 46),
(24, 'critstrkrtng', 43), (24, 'critstrkrtng', 43),
(24, 'frosplpwr', 23), (24, 'frosplpwr', 23),
(24, 'arcsplpwr', 23), (24, 'arcsplpwr', 23),
(24, 'int', 13), (24, 'int', 13),
(25, 'hitrtng', 100), (25, 'hitrtng', 100),
(25, 'hastertng', 42), (25, 'hastertng', 42),
(25, 'frosplpwr', 39), (25, 'frosplpwr', 39),
(25, 'splpwr', 39), (25, 'splpwr', 39),
(25, 'arcsplpwr', 19), (25, 'arcsplpwr', 19),
(25, 'firsplpwr', 19), (25, 'firsplpwr', 19),
(25, 'critstrkrtng', 19), (25, 'critstrkrtng', 19),
(25, 'int', 6), (25, 'int', 6),
(26, 'hitrtng', 100), (26, 'hitrtng', 100),
(26, 'shasplpwr', 72), (26, 'shasplpwr', 72),
(26, 'splpwr', 72), (26, 'splpwr', 72),
(26, 'hastertng', 61), (26, 'hastertng', 61),
(26, 'critstrkrtng', 38), (26, 'critstrkrtng', 38),
(26, 'firsplpwr', 36), (26, 'firsplpwr', 36),
(26, 'spi', 34), (26, 'spi', 34),
(26, 'int', 15), (26, 'int', 15),
(27, 'hitrtng', 100), (27, 'hitrtng', 100),
(27, 'hastertng', 50), (27, 'hastertng', 50),
(27, 'firsplpwr', 45), (27, 'firsplpwr', 45),
(27, 'shasplpwr', 45), (27, 'shasplpwr', 45),
(27, 'splpwr', 45), (27, 'splpwr', 45),
(27, 'critstrkrtng', 31), (27, 'critstrkrtng', 31),
(27, 'spi', 29), (27, 'spi', 29),
(27, 'int', 13), (27, 'int', 13),
(28, 'hitrtng', 100), (28, 'hitrtng', 100),
(28, 'firsplpwr', 47), (28, 'firsplpwr', 47),
(28, 'splpwr', 47), (28, 'splpwr', 47),
(28, 'hastertng', 46), (28, 'hastertng', 46),
(28, 'spi', 26), (28, 'spi', 26),
(28, 'shasplpwr', 23), (28, 'shasplpwr', 23),
(28, 'critstrkrtng', 16), (28, 'critstrkrtng', 16),
(28, 'int', 13), (28, 'int', 13),
(29, 'hitrtng', 100), (29, 'hitrtng', 100),
(29, 'splpwr', 66), (29, 'splpwr', 66),
(29, 'hastertng', 54), (29, 'hastertng', 54),
(29, 'critstrkrtng', 43), (29, 'critstrkrtng', 43),
(29, 'spi', 22), (29, 'spi', 22),
(29, 'int', 22), (29, 'int', 22),
(30, 'agi', 100), (30, 'agi', 100),
(30, 'sta', 75), (30, 'sta', 75),
(30, 'dodgertng', 65), (30, 'dodgertng', 65),
(30, 'defrtng', 60), (30, 'defrtng', 60),
(30, 'exprtng', 16), (30, 'exprtng', 16),
(30, 'str', 10), (30, 'str', 10),
(30, 'armor', 10), (30, 'armor', 10),
(30, 'hitrtng', 8), (30, 'hitrtng', 8),
(30, 'hastertng', 5), (30, 'hastertng', 5),
(30, 'atkpwr', 4), (30, 'atkpwr', 4),
(30, 'feratkpwr', 4), (30, 'feratkpwr', 4),
(30, 'critstrkrtng', 3), (30, 'critstrkrtng', 3),
(31, 'splpwr', 100), (31, 'splpwr', 100),
(31, 'manargn', 73), (31, 'manargn', 73),
(31, 'hastertng', 57), (31, 'hastertng', 57),
(31, 'int', 51), (31, 'int', 51),
(31, 'spi', 32), (31, 'spi', 32),
(31, 'critstrkrtng', 11), (31, 'critstrkrtng', 11),
(32, 'agi', 100), (32, 'agi', 100),
(32, 'armorpenrtng', 90), (32, 'armorpenrtng', 90),
(32, 'str', 80), (32, 'str', 80),
(32, 'critstrkrtng', 55), (32, 'critstrkrtng', 55),
(32, 'exprtng', 50), (32, 'exprtng', 50),
(32, 'hitrtng', 50), (32, 'hitrtng', 50),
(32, 'feratkpwr', 40), (32, 'feratkpwr', 40),
(32, 'atkpwr', 40), (32, 'atkpwr', 40),
(32, 'hastertng', 35); (32, 'hastertng', 35);

View File

@@ -7,35 +7,35 @@ CREATE TABLE IF NOT EXISTS `playerbots_weightscales` (
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; ) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
INSERT INTO `playerbots_weightscales` (`id`, `name`, `class`) VALUES INSERT INTO `playerbots_weightscales` (`id`, `name`, `class`) VALUES
(1, 'arms', 1), (1, 'arms', 1),
(2, 'fury', 1), (2, 'fury', 1),
(3, 'prot', 1), (3, 'prot', 1),
(4, 'holy', 2), (4, 'holy', 2),
(5, 'prot', 2), (5, 'prot', 2),
(6, 'retrib', 2), (6, 'retrib', 2),
(7, 'beast', 3), (7, 'beast', 3),
(8, 'marks', 3), (8, 'marks', 3),
(9, 'surv', 3), (9, 'surv', 3),
(10, 'assas', 4), (10, 'assas', 4),
(11, 'combat', 4), (11, 'combat', 4),
(12, 'subtle', 4), (12, 'subtle', 4),
(13, 'disc', 5), (13, 'disc', 5),
(14, 'holy', 5), (14, 'holy', 5),
(15, 'shadow', 5), (15, 'shadow', 5),
(16, 'blooddps', 6), (16, 'blooddps', 6),
(17, 'frostdps', 6), (17, 'frostdps', 6),
(18, 'frosttank', 6), (18, 'frosttank', 6),
(19, 'unholydps', 6), (19, 'unholydps', 6),
(20, 'elem', 7), (20, 'elem', 7),
(21, 'enhance', 7), (21, 'enhance', 7),
(22, 'resto', 7), (22, 'resto', 7),
(23, 'arcane', 8), (23, 'arcane', 8),
(24, 'fire', 8), (24, 'fire', 8),
(25, 'frost', 8), (25, 'frost', 8),
(26, 'afflic', 9), (26, 'afflic', 9),
(27, 'demo', 9), (27, 'demo', 9),
(28, 'destro', 9), (28, 'destro', 9),
(29, 'balance', 11), (29, 'balance', 11),
(30, 'feraltank', 11), (30, 'feraltank', 11),
(31, 'resto', 11), (31, 'resto', 11),
(32, 'feraldps', 11); (32, 'feraldps', 11);

View File

@@ -24,9 +24,9 @@ CREATE TABLE IF NOT EXISTS `updates_include` (
DELETE FROM `updates_include`; DELETE FROM `updates_include`;
/*!40000 ALTER TABLE `updates_include` DISABLE KEYS */; /*!40000 ALTER TABLE `updates_include` DISABLE KEYS */;
INSERT INTO `updates_include` (`path`, `state`) VALUES INSERT INTO `updates_include` (`path`, `state`) VALUES
('$/data/sql/playerbots/updates', 'RELEASED'), ('$/data/sql/playerbots/updates', 'RELEASED'),
('$/data/sql/playerbots/custom', 'CUSTOM'), ('$/data/sql/playerbots/custom', 'CUSTOM'),
('$/data/sql/playerbots/archive', 'ARCHIVED'); ('$/data/sql/playerbots/archive', 'ARCHIVED');
/*!40000 ALTER TABLE `updates_include` ENABLE KEYS */; /*!40000 ALTER TABLE `updates_include` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;

View File

@@ -1285,7 +1285,7 @@ CREATE TABLE IF NOT EXISTS `ai_playerbot_texts_chance` (
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */; /*!40000 ALTER TABLE `ai_playerbot_texts_chance` DISABLE KEYS */;
INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES INSERT INTO `ai_playerbot_texts_chance` (`id`, `name`, `probability`) VALUES
(1, 'taunt', 30), (1, 'taunt', 30),
(2, 'aoe', 75), (2, 'aoe', 75),
(3, 'loot', 20); (3, 'loot', 20);
/*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */; /*!40000 ALTER TABLE `ai_playerbot_texts_chance` ENABLE KEYS */;

View File

@@ -2934,9 +2934,9 @@ bool PlayerbotAI::HasAura(uint32 spellId, Unit const* unit)
return unit->HasAura(spellId); return unit->HasAura(spellId);
// for (uint8 effect = EFFECT_0; effect <= EFFECT_2; effect++) // for (uint8 effect = EFFECT_0; effect <= EFFECT_2; effect++)
// { // {
// AuraEffect const* aurEff = unit->GetAuraEffect(spellId, effect); // AuraEffect const* aurEff = unit->GetAuraEffect(spellId, effect);
// if (IsRealAura(bot, aurEff, unit)) // if (IsRealAura(bot, aurEff, unit))
// return true; // return true;
// } // }
// return false; // return false;

View File

@@ -219,9 +219,9 @@ bool PlayerbotAIConfig::Initialize()
"531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724"), "531,532,534,544,548,550,564,565,580,249,533,603,615,616,624,631,649,724"),
restrictedHealerDPSMaps); restrictedHealerDPSMaps);
//////////////////////////// ICC //////////////////////////// ICC
EnableICCBuffs = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableICCBuffs", true); EnableICCBuffs = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableICCBuffs", true);
//////////////////////////// CHAT //////////////////////////// CHAT
enableBroadcasts = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableBroadcasts", true); enableBroadcasts = sConfigMgr->GetOption<bool>("AiPlayerbot.EnableBroadcasts", true);

View File

@@ -475,7 +475,7 @@ void PlayerbotHolder::OnBotLogin(Player* const bot)
} }
Player* master = botAI->GetMaster(); Player* master = botAI->GetMaster();
if (master) if (master)
{ {
ObjectGuid masterGuid = master->GetGUID(); ObjectGuid masterGuid = master->GetGUID();
if (master->GetGroup() && !master->GetGroup()->IsLeader(masterGuid)) if (master->GetGroup() && !master->GetGroup()->IsLeader(masterGuid))
@@ -499,7 +499,7 @@ void PlayerbotHolder::OnBotLogin(Player* const bot)
} }
} }
// Don't disband alt groups when master goes away // Don't disband alt groups when master goes away
// Controlled by config // Controlled by config
if (sPlayerbotAIConfig->KeepAltsInGroup()) if (sPlayerbotAIConfig->KeepAltsInGroup())
{ {
@@ -1130,18 +1130,18 @@ std::vector<std::string> PlayerbotHolder::HandlePlayerbotCommand(char const* arg
int8 gender = -1; // -1 = gender will be random int8 gender = -1; // -1 = gender will be random
if (genderArg) if (genderArg)
{ {
std::string g = genderArg; std::string g = genderArg;
std::transform(g.begin(), g.end(), g.begin(), ::tolower); std::transform(g.begin(), g.end(), g.begin(), ::tolower);
if (g == "male" || g == "0") if (g == "male" || g == "0")
gender = GENDER_MALE; // 0 gender = GENDER_MALE; // 0
else if (g == "female" || g == "1") else if (g == "female" || g == "1")
gender = GENDER_FEMALE; // 1 gender = GENDER_FEMALE; // 1
else else
{ {
messages.push_back("Unknown gender : " + g + " (male/female/0/1)"); messages.push_back("Unknown gender : " + g + " (male/female/0/1)");
return messages; return messages;
} }
} //end } //end
if (claz == 6 && master->GetLevel() < sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL)) if (claz == 6 && master->GetLevel() < sWorld->getIntConfig(CONFIG_START_HEROIC_PLAYER_LEVEL))
@@ -1155,7 +1155,7 @@ std::vector<std::string> PlayerbotHolder::HandlePlayerbotCommand(char const* arg
{ {
// If the user requested a specific gender, skip any character that doesn't match. // If the user requested a specific gender, skip any character that doesn't match.
if (gender != -1 && GetOfflinePlayerGender(guid) != gender) if (gender != -1 && GetOfflinePlayerGender(guid) != gender)
continue; continue;
if (botLoading.find(guid) != botLoading.end()) if (botLoading.find(guid) != botLoading.end())
continue; continue;
if (ObjectAccessor::FindConnectedPlayer(guid)) if (ObjectAccessor::FindConnectedPlayer(guid))

View File

@@ -717,14 +717,14 @@ uint32 RandomPlayerbotMgr::AddRandomBots()
if (currentBots.size() < maxAllowedBotCount) if (currentBots.size() < maxAllowedBotCount)
{ {
// Calculate how many bots to add // Calculate how many bots to add
maxAllowedBotCount -= currentBots.size(); maxAllowedBotCount -= currentBots.size();
maxAllowedBotCount = std::min(sPlayerbotAIConfig->randomBotsPerInterval, maxAllowedBotCount); maxAllowedBotCount = std::min(sPlayerbotAIConfig->randomBotsPerInterval, maxAllowedBotCount);
// Single RNG instance for all shuffling // Single RNG instance for all shuffling
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
// Only need to track the Alliance count, as it's in Phase 1 // Only need to track the Alliance count, as it's in Phase 1
uint32 totalRatio = sPlayerbotAIConfig->randomBotAllianceRatio + sPlayerbotAIConfig->randomBotHordeRatio; uint32 totalRatio = sPlayerbotAIConfig->randomBotAllianceRatio + sPlayerbotAIConfig->randomBotHordeRatio;
uint32 allowedAllianceCount = maxAllowedBotCount * (sPlayerbotAIConfig->randomBotAllianceRatio) / totalRatio; uint32 allowedAllianceCount = maxAllowedBotCount * (sPlayerbotAIConfig->randomBotAllianceRatio) / totalRatio;
@@ -877,17 +877,17 @@ uint32 RandomPlayerbotMgr::AddRandomBots()
LOG_ERROR("playerbots", LOG_ERROR("playerbots",
"Can't log-in all the requested bots. Try increasing RandomBotAccountCount in your conf file.\n" "Can't log-in all the requested bots. Try increasing RandomBotAccountCount in your conf file.\n"
"{} more accounts needed.", moreAccountsNeeded); "{} more accounts needed.", moreAccountsNeeded);
missingBotsTimer = 0; // Reset timer so error is not spammed every tick missingBotsTimer = 0; // Reset timer so error is not spammed every tick
} }
} }
else else
{ {
missingBotsTimer = 0; // Reset timer if logins for this interval were successful missingBotsTimer = 0; // Reset timer if logins for this interval were successful
} }
} }
else else
{ {
missingBotsTimer = 0; // Reset timer if there's enough bots missingBotsTimer = 0; // Reset timer if there's enough bots
} }
return currentBots.size(); return currentBots.size();

View File

@@ -2299,7 +2299,7 @@ void TravelNodeMap::printNodeStore()
} }
} }
sPlayerbotAIConfig->log(nodeStore, " }"); sPlayerbotAIConfig->log(nodeStore, " }");
sPlayerbotAIConfig->log(nodeStore, "};"); sPlayerbotAIConfig->log(nodeStore, "};");
printf("\r [Done] \r\x3D"); printf("\r [Done] \r\x3D");

View File

@@ -26,18 +26,18 @@ enum StrategyType : uint32
// enum ActionPriority // enum ActionPriority
// { // {
// ACTION_IDLE = 0, // ACTION_IDLE = 0,
// ACTION_DEFAULT = 5, // ACTION_DEFAULT = 5,
// ACTION_NORMAL = 10, // ACTION_NORMAL = 10,
// ACTION_HIGH = 20, // ACTION_HIGH = 20,
// ACTION_MOVE = 30, // ACTION_MOVE = 30,
// ACTION_INTERRUPT = 40, // ACTION_INTERRUPT = 40,
// ACTION_DISPEL = 50, // ACTION_DISPEL = 50,
// ACTION_RAID = 60, // ACTION_RAID = 60,
// ACTION_LIGHT_HEAL = 10, // ACTION_LIGHT_HEAL = 10,
// ACTION_MEDIUM_HEAL = 20, // ACTION_MEDIUM_HEAL = 20,
// ACTION_CRITICAL_HEAL = 30, // ACTION_CRITICAL_HEAL = 30,
// ACTION_EMERGENCY = 90 // ACTION_EMERGENCY = 90
// }; // };
static float ACTION_IDLE = 0.0f; static float ACTION_IDLE = 0.0f;

View File

@@ -193,8 +193,8 @@ public:
creators["calc"] = &ChatActionContext::calc; creators["calc"] = &ChatActionContext::calc;
creators["wipe"] = &ChatActionContext::wipe; creators["wipe"] = &ChatActionContext::wipe;
creators["tame"] = &ChatActionContext::tame; creators["tame"] = &ChatActionContext::tame;
creators["glyphs"] = &ChatActionContext::glyphs; // Added for custom Glyphs creators["glyphs"] = &ChatActionContext::glyphs; // Added for custom Glyphs
creators["glyph equip"] = &ChatActionContext::glyph_equip; // Added for custom Glyphs creators["glyph equip"] = &ChatActionContext::glyph_equip; // Added for custom Glyphs
creators["pet"] = &ChatActionContext::pet; creators["pet"] = &ChatActionContext::pet;
creators["pet attack"] = &ChatActionContext::pet_attack; creators["pet attack"] = &ChatActionContext::pet_attack;
creators["roll"] = &ChatActionContext::roll_action; creators["roll"] = &ChatActionContext::roll_action;
@@ -305,8 +305,8 @@ private:
static Action* calc(PlayerbotAI* ai) { return new TellCalculateItemAction(ai); } static Action* calc(PlayerbotAI* ai) { return new TellCalculateItemAction(ai); }
static Action* wipe(PlayerbotAI* ai) { return new WipeAction(ai); } static Action* wipe(PlayerbotAI* ai) { return new WipeAction(ai); }
static Action* tame(PlayerbotAI* botAI) { return new TameAction(botAI); } static Action* tame(PlayerbotAI* botAI) { return new TameAction(botAI); }
static Action* glyphs(PlayerbotAI* botAI) { return new TellGlyphsAction(botAI); } // Added for custom Glyphs static Action* glyphs(PlayerbotAI* botAI) { return new TellGlyphsAction(botAI); } // Added for custom Glyphs
static Action* glyph_equip(PlayerbotAI* ai) { return new EquipGlyphsAction(ai); } // Added for custom Glyphs static Action* glyph_equip(PlayerbotAI* ai) { return new EquipGlyphsAction(ai); } // Added for custom Glyphs
static Action* pet(PlayerbotAI* botAI) { return new PetAction(botAI); } static Action* pet(PlayerbotAI* botAI) { return new PetAction(botAI); }
static Action* pet_attack(PlayerbotAI* botAI) { return new PetAction(botAI, "attack"); } static Action* pet_attack(PlayerbotAI* botAI) { return new PetAction(botAI, "attack"); }
static Action* roll_action(PlayerbotAI* botAI) { return new RollAction(botAI); } static Action* roll_action(PlayerbotAI* botAI) { return new RollAction(botAI); }

View File

@@ -151,9 +151,9 @@ bool EquipGlyphsAction::Execute(Event event)
botAI->TellMaster("Glyphs updated."); botAI->TellMaster("Glyphs updated.");
// Flag for custom glyphs // Flag for custom glyphs
botAI->GetAiObjectContext()->GetValue<bool>("custom_glyphs")->Set(true); botAI->GetAiObjectContext()->GetValue<bool>("custom_glyphs")->Set(true);
LOG_INFO("playerbots", "Custom Glyph Flag set to ON"); LOG_INFO("playerbots", "Custom Glyph Flag set to ON");
return true; return true;
} }

View File

@@ -33,7 +33,7 @@ namespace ai::buff
// Mage // Mage
if (name == "arcane intellect") return "arcane intellect,arcane brilliance"; if (name == "arcane intellect") return "arcane intellect,arcane brilliance";
// Priest // Priest
if (name == "power word: fortitude") return "power word: fortitude,prayer of fortitude"; if (name == "power word: fortitude") return "power word: fortitude,prayer of fortitude";
return name; return name;
} }
@@ -60,7 +60,7 @@ namespace ai::buff
return false; return false;
if (SpellInfo const* info = sSpellMgr->GetSpellInfo(spellId)) if (SpellInfo const* info = sSpellMgr->GetSpellInfo(spellId))
{ for (int i = 0; i < MAX_SPELL_REAGENTS; ++i) { for (int i = 0; i < MAX_SPELL_REAGENTS; ++i)
{ {
if (info->Reagent[i] > 0) if (info->Reagent[i] > 0)
{ {
@@ -83,7 +83,7 @@ namespace ai::buff
bool announceOnMissing, bool announceOnMissing,
std::function<void(std::string const&)> announce) std::function<void(std::string const&)> announce)
{ {
std::string castName = baseName; Group* g = bot->GetGroup(); std::string castName = baseName; Group* g = bot->GetGroup();
if (!g || g->GetMembersCount() < static_cast<uint32>(sPlayerbotAIConfig->minBotsForGreaterBuff)) if (!g || g->GetMembersCount() < static_cast<uint32>(sPlayerbotAIConfig->minBotsForGreaterBuff))
return castName; // Group too small: stay in solo mode return castName; // Group too small: stay in solo mode

View File

@@ -237,8 +237,8 @@ bool BuffOnPartyAction::Execute(Event event)
{ {
std::string castName = spell; // default = mono std::string castName = spell; // default = mono
auto SendGroupRP = ai::chat::MakeGroupAnnouncer(bot); auto SendGroupRP = ai::chat::MakeGroupAnnouncer(bot);
castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, SendGroupRP); castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, SendGroupRP);
return botAI->CastSpell(castName, GetTarget()); return botAI->CastSpell(castName, GetTarget());
} }

View File

@@ -30,8 +30,8 @@ bool PartyCommandAction::Execute(Event event)
Player* master = GetMaster(); Player* master = GetMaster();
if (master && member == master->GetName()) if (master && member == master->GetName())
return Leave(bot); return Leave(bot);
botAI->Reset(); botAI->Reset();
return false; return false;
} }
@@ -64,8 +64,8 @@ bool UninviteAction::Execute(Event event)
if (bot->GetGUID() == guid) if (bot->GetGUID() == guid)
return Leave(bot); return Leave(bot);
} }
botAI->Reset(); botAI->Reset();
return false; return false;
} }
@@ -162,8 +162,8 @@ bool LeaveFarAwayAction::isUseful()
{ {
return true; return true;
} }
botAI->Reset(); botAI->Reset();
return false; return false;
} }

View File

@@ -77,7 +77,7 @@ uint32 LfgJoinAction::GetRoles()
default: default:
return PLAYER_ROLE_DAMAGE; return PLAYER_ROLE_DAMAGE;
break; break;
} }
return PLAYER_ROLE_DAMAGE; return PLAYER_ROLE_DAMAGE;
@@ -317,8 +317,8 @@ bool LfgJoinAction::isUseful()
if (bot->GetLevel() < 15) if (bot->GetLevel() < 15)
return false; return false;
// don't use if active player master // don't use if active player master
if (GET_PLAYERBOT_AI(bot)->IsRealPlayer()) if (GET_PLAYERBOT_AI(bot)->IsRealPlayer())
return false; return false;

View File

@@ -49,7 +49,7 @@ bool UseMeetingStoneAction::Execute(Event event)
GameObjectTemplate const* goInfo = gameObject->GetGOInfo(); GameObjectTemplate const* goInfo = gameObject->GetGOInfo();
if (!goInfo || goInfo->entry != 179944) if (!goInfo || goInfo->entry != 179944)
return false; return false;
return Teleport(master, bot); return Teleport(master, bot);
} }

View File

@@ -25,7 +25,7 @@ public:
// creators["icy clutch"] = &icy_clutch; // creators["icy clutch"] = &icy_clutch;
creators["horn of winter"] = &horn_of_winter; creators["horn of winter"] = &horn_of_winter;
creators["killing machine"] = &killing_machine; // buff creators["killing machine"] = &killing_machine; // buff
// creators["deathchill"] = &deathchill; //boost // creators["deathchill"] = &deathchill; //boost
creators["icebound fortitude"] = &icebound_fortitude; creators["icebound fortitude"] = &icebound_fortitude;
// creators["mind freeze"] = &mind_freeze; interrupt // creators["mind freeze"] = &mind_freeze; interrupt
// creators["empower rune weapon"] = &empower_rune_weapon; boost // creators["empower rune weapon"] = &empower_rune_weapon; boost
@@ -193,8 +193,8 @@ void GenericDKStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
new NextAction("pestilence", ACTION_NORMAL + 4), new NextAction("pestilence", ACTION_NORMAL + 4),
new NextAction("blood boil", ACTION_NORMAL + 3), nullptr))); new NextAction("blood boil", ACTION_NORMAL + 3), nullptr)));
// triggers.push_back(new TriggerNode("light aoe", NextAction::array(0, // triggers.push_back(new TriggerNode("light aoe", NextAction::array(0,
// new NextAction("pestilence", ACTION_NORMAL + 4), // new NextAction("pestilence", ACTION_NORMAL + 4),
// nullptr))); // nullptr)));
triggers.push_back( triggers.push_back(
new TriggerNode("pestilence glyph", NextAction::array(0, new NextAction("pestilence", ACTION_HIGH + 9), NULL))); new TriggerNode("pestilence glyph", NextAction::array(0, new NextAction("pestilence", ACTION_HIGH + 9), NULL)));
} }

View File

@@ -93,13 +93,13 @@ void ChatCommandHandlerStrategy::InitTriggers(std::vector<TriggerNode*>& trigger
triggers.push_back( triggers.push_back(
new TriggerNode("disperse", NextAction::array(0, new NextAction("disperse set", relevance), NULL))); new TriggerNode("disperse", NextAction::array(0, new NextAction("disperse set", relevance), NULL)));
triggers.push_back( triggers.push_back(
new TriggerNode("open items", NextAction::array(0, new NextAction("open items", relevance), nullptr))); new TriggerNode("open items", NextAction::array(0, new NextAction("open items", relevance), nullptr)));
triggers.push_back( triggers.push_back(
new TriggerNode("qi", NextAction::array(0, new NextAction("query item usage", relevance), nullptr))); new TriggerNode("qi", NextAction::array(0, new NextAction("query item usage", relevance), nullptr)));
triggers.push_back( triggers.push_back(
new TriggerNode("unlock items", NextAction::array(0, new NextAction("unlock items", relevance), nullptr))); new TriggerNode("unlock items", NextAction::array(0, new NextAction("unlock items", relevance), nullptr)));
triggers.push_back( triggers.push_back(
new TriggerNode("unlock traded item", NextAction::array(0, new NextAction("unlock traded item", relevance), nullptr))); new TriggerNode("unlock traded item", NextAction::array(0, new NextAction("unlock traded item", relevance), nullptr)));
triggers.push_back( triggers.push_back(
new TriggerNode("wipe", NextAction::array(0, new NextAction("wipe", relevance), nullptr))); new TriggerNode("wipe", NextAction::array(0, new NextAction("wipe", relevance), nullptr)));
triggers.push_back(new TriggerNode("tame", NextAction::array(0, new NextAction("tame", relevance), nullptr))); triggers.push_back(new TriggerNode("tame", NextAction::array(0, new NextAction("tame", relevance), nullptr)));

View File

@@ -17,7 +17,7 @@
#include "Config.h" #include "Config.h"
#include "Group.h" #include "Group.h"
#include "ObjectAccessor.h" #include "ObjectAccessor.h"
using ai::buff::MakeAuraQualifierForBuff; using ai::buff::MakeAuraQualifierForBuff;
using ai::buff::UpgradeToGroupIfAppropriate; using ai::buff::UpgradeToGroupIfAppropriate;
@@ -164,7 +164,7 @@ inline std::string const GetActualBlessingOfSanctuary(Unit* target, Player* bot)
Value<Unit*>* CastBlessingOnPartyAction::GetTargetValue() Value<Unit*>* CastBlessingOnPartyAction::GetTargetValue()
{ {
return context->GetValue<Unit*>("party member without aura", MakeAuraQualifierForBuff(spell)); return context->GetValue<Unit*>("party member without aura", MakeAuraQualifierForBuff(spell));
} }
bool CastBlessingOfMightAction::Execute(Event event) bool CastBlessingOfMightAction::Execute(Event event)
@@ -173,7 +173,7 @@ bool CastBlessingOfMightAction::Execute(Event event)
if (!target) if (!target)
return false; return false;
std::string castName = GetActualBlessingOfMight(target); std::string castName = GetActualBlessingOfMight(target);
auto RP = ai::chat::MakeGroupAnnouncer(bot); auto RP = ai::chat::MakeGroupAnnouncer(bot);
castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP); castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP);
@@ -182,7 +182,7 @@ bool CastBlessingOfMightAction::Execute(Event event)
Value<Unit*>* CastBlessingOfMightOnPartyAction::GetTargetValue() Value<Unit*>* CastBlessingOfMightOnPartyAction::GetTargetValue()
{ {
return context->GetValue<Unit*>( return context->GetValue<Unit*>(
"party member without aura", "party member without aura",
"blessing of might,greater blessing of might,blessing of wisdom,greater blessing of wisdom,blessing of sanctuary,greater blessing of sanctuary" "blessing of might,greater blessing of might,blessing of wisdom,greater blessing of wisdom,blessing of sanctuary,greater blessing of sanctuary"
); );
@@ -207,7 +207,7 @@ bool CastBlessingOfWisdomAction::Execute(Event event)
if (!target) if (!target)
return false; return false;
std::string castName = GetActualBlessingOfWisdom(target); std::string castName = GetActualBlessingOfWisdom(target);
auto RP = ai::chat::MakeGroupAnnouncer(bot); auto RP = ai::chat::MakeGroupAnnouncer(bot);
castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP); castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP);
@@ -216,7 +216,7 @@ bool CastBlessingOfWisdomAction::Execute(Event event)
Value<Unit*>* CastBlessingOfWisdomOnPartyAction::GetTargetValue() Value<Unit*>* CastBlessingOfWisdomOnPartyAction::GetTargetValue()
{ {
return context->GetValue<Unit*>( return context->GetValue<Unit*>(
"party member without aura", "party member without aura",
"blessing of wisdom,greater blessing of wisdom,blessing of might,greater blessing of might,blessing of sanctuary,greater blessing of sanctuary" "blessing of wisdom,greater blessing of wisdom,blessing of might,greater blessing of might,blessing of sanctuary,greater blessing of sanctuary"
); );
@@ -253,7 +253,7 @@ bool CastBlessingOfWisdomOnPartyAction::Execute(Event event)
Value<Unit*>* CastBlessingOfSanctuaryOnPartyAction::GetTargetValue() Value<Unit*>* CastBlessingOfSanctuaryOnPartyAction::GetTargetValue()
{ {
return context->GetValue<Unit*>( return context->GetValue<Unit*>(
"party member without aura", "party member without aura",
"blessing of sanctuary,greater blessing of sanctuary" "blessing of sanctuary,greater blessing of sanctuary"
); );
@@ -407,7 +407,7 @@ bool CastBlessingOfKingsOnPartyAction::Execute(Event event)
Player* targetPlayer = target->ToPlayer(); Player* targetPlayer = target->ToPlayer();
if (targetPlayer && !g->IsMember(targetPlayer->GetGUID())) if (targetPlayer && !g->IsMember(targetPlayer->GetGUID()))
return false; return false;
const bool hasBmana = botAI->HasStrategy("bmana", BOT_STATE_NON_COMBAT); const bool hasBmana = botAI->HasStrategy("bmana", BOT_STATE_NON_COMBAT);
const bool hasBstats = botAI->HasStrategy("bstats", BOT_STATE_NON_COMBAT); const bool hasBstats = botAI->HasStrategy("bstats", BOT_STATE_NON_COMBAT);
@@ -422,7 +422,7 @@ bool CastBlessingOfKingsOnPartyAction::Execute(Event event)
if (targetPlayer) if (targetPlayer)
{ {
const bool isTank = IsTankRole(targetPlayer); const bool isTank = IsTankRole(targetPlayer);
const bool hasSanctFromMe = const bool hasSanctFromMe =
target->HasAura(SPELL_BLESSING_OF_SANCTUARY, bot->GetGUID()) || target->HasAura(SPELL_BLESSING_OF_SANCTUARY, bot->GetGUID()) ||
target->HasAura(SPELL_GREATER_BLESSING_OF_SANCTUARY, bot->GetGUID()); target->HasAura(SPELL_GREATER_BLESSING_OF_SANCTUARY, bot->GetGUID());
@@ -453,7 +453,7 @@ bool CastBlessingOfKingsOnPartyAction::Execute(Event event)
if (allowGreater && hasBstats && targetPlayer) if (allowGreater && hasBstats && targetPlayer)
{ {
switch (targetPlayer->getClass()) switch (targetPlayer->getClass())
{ {
case CLASS_WARRIOR: case CLASS_WARRIOR:
case CLASS_PALADIN: case CLASS_PALADIN:
case CLASS_DRUID: case CLASS_DRUID:
@@ -470,7 +470,7 @@ bool CastBlessingOfKingsOnPartyAction::Execute(Event event)
auto RP = ai::chat::MakeGroupAnnouncer(bot); auto RP = ai::chat::MakeGroupAnnouncer(bot);
castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP); castName = ai::buff::UpgradeToGroupIfAppropriate(bot, botAI, castName, /*announceOnMissing=*/true, RP);
} }
return botAI->CastSpell(castName, target); return botAI->CastSpell(castName, target);
} }

View File

@@ -142,7 +142,7 @@ public:
std::string const getName() override { return "blessing of kings on party"; } std::string const getName() override { return "blessing of kings on party"; }
Value<Unit*>* GetTargetValue() override; // added for Sanctuary priority Value<Unit*>* GetTargetValue() override; // added for Sanctuary priority
bool Execute(Event event) override; // added for 2 paladins logic bool Execute(Event event) override; // added for 2 paladins logic
}; };
class CastBlessingOfSanctuaryAction : public CastBuffSpellAction class CastBlessingOfSanctuaryAction : public CastBuffSpellAction

View File

@@ -11,7 +11,7 @@ void PaladinBuffManaStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{ {
triggers.push_back(new TriggerNode("blessing of wisdom on party", triggers.push_back(new TriggerNode("blessing of wisdom on party",
NextAction::array(0, new NextAction("blessing of wisdom on party", 11.0f), NULL))); NextAction::array(0, new NextAction("blessing of wisdom on party", 11.0f), NULL)));
triggers.push_back(new TriggerNode("blessing of kings on party", triggers.push_back(new TriggerNode("blessing of kings on party",
NextAction::array(0, new NextAction("blessing of kings on party", 10.5f), NULL))); NextAction::array(0, new NextAction("blessing of kings on party", 10.5f), NULL)));
} }
@@ -85,7 +85,7 @@ void PaladinBuffThreatStrategy::InitTriggers(std::vector<TriggerNode*>& triggers
} }
void PaladinBuffStatsStrategy::InitTriggers(std::vector<TriggerNode*>& triggers) void PaladinBuffStatsStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
{ {
// First Sanctuary (prio > Kings) // First Sanctuary (prio > Kings)
triggers.push_back( triggers.push_back(
new TriggerNode("blessing of sanctuary on party", new TriggerNode("blessing of sanctuary on party",

View File

@@ -27,8 +27,8 @@ void HealPriestStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
// NextAction::array(0, new NextAction("reach spell", ACTION_NORMAL + 9), NULL))); // NextAction::array(0, new NextAction("reach spell", ACTION_NORMAL + 9), NULL)));
// triggers.push_back(new TriggerNode( // triggers.push_back(new TriggerNode(
// "medium aoe heal", // "medium aoe heal",
// NextAction::array(0, // NextAction::array(0,
// new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8), // new NextAction("circle of healing on party", ACTION_MEDIUM_HEAL + 8),
// // new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7), // // new NextAction("power word: shield on almost full health below", ACTION_MEDIUM_HEAL + 7),
// NULL))); // NULL)));

View File

@@ -143,13 +143,13 @@ float ThaddiusGenericMultiplier::GetValue(Action* action)
// // if (curr_phase == 2 && bot->GetPositionZ() > 312.5f && dynamic_cast<MovementAction*>(action)) { // // if (curr_phase == 2 && bot->GetPositionZ() > 312.5f && dynamic_cast<MovementAction*>(action)) {
// if (curr_phase == 2 && (curr_timer % 20000 >= 18000 || curr_timer % 20000 <= 2000) && // if (curr_phase == 2 && (curr_timer % 20000 >= 18000 || curr_timer % 20000 <= 2000) &&
// dynamic_cast<MovementAction*>(action)) { // dynamic_cast<MovementAction*>(action)) {
// // MotionMaster *mm = bot->GetMotionMaster(); // // MotionMaster *mm = bot->GetMotionMaster();
// // mm->Clear(); // // mm->Clear();
// return 0.0f; // return 0.0f;
// } // }
// thaddius phase // thaddius phase
// if (curr_phase == 8 && dynamic_cast<FleeAction*>(action)) { // if (curr_phase == 8 && dynamic_cast<FleeAction*>(action)) {
// return 0.0f; // return 0.0f;
// } // }
return 1.0f; return 1.0f;
} }
@@ -262,23 +262,23 @@ float FourhorsemanGenericMultiplier::GetValue(Action* action)
// float GothikGenericMultiplier::GetValue(Action* action) // float GothikGenericMultiplier::GetValue(Action* action)
// { // {
// Unit* boss = AI_VALUE2(Unit*, "find target", "gothik the harvester"); // Unit* boss = AI_VALUE2(Unit*, "find target", "gothik the harvester");
// if (!boss) { // if (!boss) {
// return 1.0f; // return 1.0f;
// } // }
// BossAI* boss_ai = dynamic_cast<BossAI*>(boss->GetAI()); // BossAI* boss_ai = dynamic_cast<BossAI*>(boss->GetAI());
// EventMap* eventMap = boss_botAI->GetEvents(); // EventMap* eventMap = boss_botAI->GetEvents();
// uint32 curr_phase = eventMap->GetPhaseMask(); // uint32 curr_phase = eventMap->GetPhaseMask();
// if (curr_phase == 1 && (dynamic_cast<FollowAction*>(action))) { // if (curr_phase == 1 && (dynamic_cast<FollowAction*>(action))) {
// return 0.0f; // return 0.0f;
// } // }
// if (curr_phase == 1 && (dynamic_cast<AttackAction*>(action))) { // if (curr_phase == 1 && (dynamic_cast<AttackAction*>(action))) {
// Unit* target = action->GetTarget(); // Unit* target = action->GetTarget();
// if (target == boss) { // if (target == boss) {
// return 0.0f; // return 0.0f;
// } // }
// } // }
// return 1.0f; // return 1.0f;
// } // }
float GluthGenericMultiplier::GetValue(Action* action) float GluthGenericMultiplier::GetValue(Action* action)

View File

@@ -51,8 +51,8 @@ void GenericRogueNonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& trig
NextAction::array(0, new NextAction("use deadly poison on off hand", 19.0f), NULL))); NextAction::array(0, new NextAction("use deadly poison on off hand", 19.0f), NULL)));
// triggers.push_back(new TriggerNode( // triggers.push_back(new TriggerNode(
// "off hand weapon no enchant", // "off hand weapon no enchant",
// NextAction::array(0, new NextAction("use instant poison", 18.0f), NULL))); // NextAction::array(0, new NextAction("use instant poison", 18.0f), NULL)));
triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("unstealth", 30.0f), NULL))); triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction("unstealth", 30.0f), NULL)));
} }

View File

@@ -42,7 +42,7 @@ WorldLocation ArrowFormation::GetLocationInternal()
offset += rangedLines * sPlayerbotAIConfig->followDistance; offset += rangedLines * sPlayerbotAIConfig->followDistance;
healers.PlaceUnits(&placer); healers.PlaceUnits(&placer);
healers.Move(-cos(orientation) * offset, -sin(orientation) * offset); healers.Move(-cos(orientation) * offset, -sin(orientation) * offset);
if (!masterUnit || !botUnit) if (!masterUnit || !botUnit)
return Formation::NullLocation; return Formation::NullLocation;
@@ -98,7 +98,7 @@ void ArrowFormation::FillSlotsExceptMaster()
else if (member != botAI->GetMaster()) else if (member != botAI->GetMaster())
FindSlot(member)->AddLast(new FormationUnit(index, false)); FindSlot(member)->AddLast(new FormationUnit(index, false));
++index; ++index;
} }
gref = gref->next(); gref = gref->next();
} }
} }

View File

@@ -160,7 +160,7 @@ public:
creators["my attacker count"] = &ValueContext::my_attacker_count; creators["my attacker count"] = &ValueContext::my_attacker_count;
creators["has aggro"] = &ValueContext::has_aggro; creators["has aggro"] = &ValueContext::has_aggro;
creators["mounted"] = &ValueContext::mounted; creators["mounted"] = &ValueContext::mounted;
creators["custom_glyphs"] = &ValueContext::custom_glyphs; // Added for custom glyphs creators["custom_glyphs"] = &ValueContext::custom_glyphs; // Added for custom glyphs
creators["can loot"] = &ValueContext::can_loot; creators["can loot"] = &ValueContext::can_loot;
creators["loot target"] = &ValueContext::loot_target; creators["loot target"] = &ValueContext::loot_target;
@@ -555,7 +555,7 @@ private:
static UntypedValue* last_flee_angle(PlayerbotAI* ai) { return new LastFleeAngleValue(ai); } static UntypedValue* last_flee_angle(PlayerbotAI* ai) { return new LastFleeAngleValue(ai); }
static UntypedValue* last_flee_timestamp(PlayerbotAI* ai) { return new LastFleeTimestampValue(ai); } static UntypedValue* last_flee_timestamp(PlayerbotAI* ai) { return new LastFleeTimestampValue(ai); }
static UntypedValue* recently_flee_info(PlayerbotAI* ai) { return new RecentlyFleeInfo(ai); } static UntypedValue* recently_flee_info(PlayerbotAI* ai) { return new RecentlyFleeInfo(ai); }
// ------------------------------------------------------- // -------------------------------------------------------
// Flag for cutom glyphs : true when /w bot glyph equip // Flag for cutom glyphs : true when /w bot glyph equip
// ------------------------------------------------------- // -------------------------------------------------------
static UntypedValue* custom_glyphs(PlayerbotAI* ai) static UntypedValue* custom_glyphs(PlayerbotAI* ai)