From a13694c859874a696ed885f9b390463b6b6389c8 Mon Sep 17 00:00:00 2001 From: Uleat Date: Sun, 5 Feb 2017 22:11:02 -0500 Subject: [PATCH] Implemented cast restrictions in GetSpellTargetTypeToken() [skip ci] --- .../spell_target_type_token_function.sql | 147 +++++++++++++++++- 1 file changed, 144 insertions(+), 3 deletions(-) diff --git a/utils/scripts/database_tools/spell_target_type_token_function.sql b/utils/scripts/database_tools/spell_target_type_token_function.sql index 6d891ba5f..1b76714fa 100644 --- a/utils/scripts/database_tools/spell_target_type_token_function.sql +++ b/utils/scripts/database_tools/spell_target_type_token_function.sql @@ -3,13 +3,14 @@ DELIMITER $$ DROP FUNCTION IF EXISTS `GetSpellTargetTypeToken`; -- This function converts a numeric spell target type to a string label based on server code designations --- Note: `cast_restriction` look-up is not implemented at this time +-- Note: `cast_restriction` data taken from MacroQuest2 definitions -- -- example: --- SELECT `id`, `name`, GetSpellTargetTypeToken(`targettype`, `CastRestriction`) FROM `spells_new` WHERE `id` IN ('6836', '10763', '30057'); +-- SELECT `id`, `name`, GetSpellTargetTypeToken(`targettype`, `CastRestriction`) FROM `spells_new` WHERE `id` IN ('6836', '10763', '25039'); CREATE FUNCTION `GetSpellTargetTypeToken` (`target_type` INT(11), `cast_restriction` INT(11)) RETURNS VARCHAR(64) BEGIN DECLARE `token` VARCHAR(64) DEFAULT ''; + DECLARE `token2` VARCHAR(64) DEFAULT ''; CASE `target_type` WHEN '1' THEN SET `token` = 'ST_TargetOptional'; @@ -51,7 +52,147 @@ BEGIN ELSE SET `token` = 'unk'; END CASE; - SET `token` = CONCAT(`token`, '(', `target_type`, ')', '->(', `cast_restriction`, ')'); + SET `token` = CONCAT(`token`, '(', `target_type`, ')'); + + CASE `cast_restriction` + WHEN '0' THEN SET `token2` = 'None'; + -- WHEN '1' THEN SET `token2` = '---'; + WHEN '100' THEN SET `token2` = 'Only works on Animal or Humanoid'; + WHEN '101' THEN SET `token2` = 'Only works on Dragon'; + WHEN '102' THEN SET `token2` = 'Only works on Animal or Insect'; + WHEN '104' THEN SET `token2` = 'Only works on Animal'; + WHEN '105' THEN SET `token2` = 'Only works on Plant'; + WHEN '106' THEN SET `token2` = 'Only works on Giant'; + WHEN '108' THEN SET `token2` = 'Doesn\'t work on Animals or Humanoids'; + WHEN '109' THEN SET `token2` = 'Only works on Bixie'; + WHEN '110' THEN SET `token2` = 'Only works on Harpy'; + WHEN '111' THEN SET `token2` = 'Only works on Gnoll'; + WHEN '112' THEN SET `token2` = 'Only works on Sporali'; + WHEN '113' THEN SET `token2` = 'Only works on Kobold'; + WHEN '114' THEN SET `token2` = 'Only works on Shade'; + WHEN '115' THEN SET `token2` = 'Only works on Drakkin'; + WHEN '117' THEN SET `token2` = 'Only works on Animals or Plants'; + WHEN '118' THEN SET `token2` = 'Only works on Summoned'; + WHEN '119' THEN SET `token2` = 'Only works on Fire_Pet'; + WHEN '120' THEN SET `token2` = 'Only works on Undead'; + WHEN '121' THEN SET `token2` = 'Only works on Living'; + WHEN '122' THEN SET `token2` = 'Only works on Fairy'; + WHEN '123' THEN SET `token2` = 'Only works on Humanoid'; + WHEN '124' THEN SET `token2` = 'Undead HP Less Than 10%'; + WHEN '125' THEN SET `token2` = 'Clockwork HP Less Than 45%'; + WHEN '126' THEN SET `token2` = 'Wisp HP Less Than 10%'; + -- WHEN '127' THEN SET `token2` = '---'; + -- WHEN '128' THEN SET `token2` = '---'; + -- WHEN '129' THEN SET `token2` = '---'; + -- WHEN '130' THEN SET `token2` = '---'; + -- WHEN '150' THEN SET `token2` = '---'; + WHEN '190' THEN SET `token2` = 'Doesn\'t work on Raid Bosses'; + WHEN '191' THEN SET `token2` = 'Only works on Raid Bosses'; + WHEN '201' THEN SET `token2` = 'HP Above 75%'; + WHEN '203' THEN SET `token2` = 'HP Less Than 20%'; + WHEN '204' THEN SET `token2` = 'HP Less Than 50%'; + WHEN '216' THEN SET `token2` = 'Not In Combat'; + WHEN '221' THEN SET `token2` = 'At Least 1 Pet On Hatelist'; + WHEN '222' THEN SET `token2` = 'At Least 2 Pets On Hatelist'; + WHEN '223' THEN SET `token2` = 'At Least 3 Pets On Hatelist'; + WHEN '224' THEN SET `token2` = 'At Least 4 Pets On Hatelist'; + WHEN '225' THEN SET `token2` = 'At Least 5 Pets On Hatelist'; + WHEN '226' THEN SET `token2` = 'At Least 6 Pets On Hatelist'; + WHEN '227' THEN SET `token2` = 'At Least 7 Pets On Hatelist'; + WHEN '228' THEN SET `token2` = 'At Least 8 Pets On Hatelist'; + WHEN '229' THEN SET `token2` = 'At Least 9 Pets On Hatelist'; + WHEN '230' THEN SET `token2` = 'At Least 10 Pets On Hatelist'; + WHEN '231' THEN SET `token2` = 'At Least 11 Pets On Hatelist'; + WHEN '232' THEN SET `token2` = 'At Least 12 Pets On Hatelist'; + WHEN '233' THEN SET `token2` = 'At Least 13 Pets On Hatelist'; + WHEN '234' THEN SET `token2` = 'At Least 14 Pets On Hatelist'; + WHEN '235' THEN SET `token2` = 'At Least 15 Pets On Hatelist'; + WHEN '236' THEN SET `token2` = 'At Least 16 Pets On Hatelist'; + WHEN '237' THEN SET `token2` = 'At Least 17 Pets On Hatelist'; + WHEN '238' THEN SET `token2` = 'At Least 18 Pets On Hatelist'; + WHEN '239' THEN SET `token2` = 'At Least 19 Pets On Hatelist'; + WHEN '240' THEN SET `token2` = 'At Least 20 Pets On Hatelist'; + WHEN '250' THEN SET `token2` = 'HP Less Than 35%'; + WHEN '304' THEN SET `token2` = 'Chain Plate Classes'; + WHEN '399' THEN SET `token2` = 'HP Between 15 and 25%'; + WHEN '400' THEN SET `token2` = 'HP Between 1 and 25%'; + WHEN '401' THEN SET `token2` = 'HP Between 25 and 35%'; + WHEN '402' THEN SET `token2` = 'HP Between 35 and 45%'; + WHEN '403' THEN SET `token2` = 'HP Between 45 and 55%'; + WHEN '404' THEN SET `token2` = 'HP Between 55 and 65%'; + -- WHEN '410' THEN SET `token2` = '---'; + -- WHEN '411' THEN SET `token2` = '---'; + WHEN '412' THEN SET `token2` = 'HP Above 99%'; + WHEN '501' THEN SET `token2` = 'HP Below 5%'; + WHEN '502' THEN SET `token2` = 'HP Below 10%'; + WHEN '503' THEN SET `token2` = 'HP Below 15%'; + WHEN '504' THEN SET `token2` = 'HP Below 20%'; + WHEN '505' THEN SET `token2` = 'HP Below 25%'; + WHEN '506' THEN SET `token2` = 'HP Below 30%'; + WHEN '507' THEN SET `token2` = 'HP Below 35%'; + WHEN '508' THEN SET `token2` = 'HP Below 40%'; + WHEN '509' THEN SET `token2` = 'HP Below 45%'; + WHEN '510' THEN SET `token2` = 'HP Below 50%'; + WHEN '511' THEN SET `token2` = 'HP Below 55%'; + WHEN '512' THEN SET `token2` = 'HP Below 60%'; + WHEN '513' THEN SET `token2` = 'HP Below 65%'; + WHEN '514' THEN SET `token2` = 'HP Below 70%'; + WHEN '515' THEN SET `token2` = 'HP Below 75%'; + WHEN '516' THEN SET `token2` = 'HP Below 80%'; + WHEN '517' THEN SET `token2` = 'HP Below 85%'; + WHEN '518' THEN SET `token2` = 'HP Below 90%'; + WHEN '519' THEN SET `token2` = 'HP Below 95%'; + WHEN '521' THEN SET `token2` = 'Mana Below X%'; + WHEN '522' THEN SET `token2` = 'End Below 40%'; + WHEN '523' THEN SET `token2` = 'Mana Below 40%'; + -- WHEN '601' THEN SET `token2` = '---'; + WHEN '603' THEN SET `token2` = 'Only works on Undead2'; + WHEN '608' THEN SET `token2` = 'Only works on Undead3'; + WHEN '624' THEN SET `token2` = 'Only works on Summoned2'; + -- WHEN '626' THEN SET `token2` = '---'; + -- WHEN '700' THEN SET `token2` = '---'; + WHEN '701' THEN SET `token2` = 'Doesn\'t work on Pets'; + -- WHEN '800' THEN SET `token2` = '---'; + -- WHEN '812' THEN SET `token2` = '---'; + -- WHEN '814' THEN SET `token2` = '---'; + -- WHEN '815' THEN SET `token2` = '---'; + -- WHEN '816' THEN SET `token2` = '---'; + -- WHEN '817' THEN SET `token2` = '---'; + WHEN '818' THEN SET `token2` = 'Only works on Undead4'; + WHEN '819' THEN SET `token2` = 'Doesn\'t work on Undead4'; + -- WHEN '820' THEN SET `token2` = '---'; + -- WHEN '821' THEN SET `token2` = '---'; + -- WHEN '822' THEN SET `token2` = '---'; + WHEN '825' THEN SET `token2` = 'End Below 21%'; + WHEN '826' THEN SET `token2` = 'End Below 25%'; + WHEN '827' THEN SET `token2` = 'End Below 29%'; + WHEN '836' THEN SET `token2` = 'Only works on Regular Servers'; + WHEN '837' THEN SET `token2` = 'Doesn\'t work on Progression Servers'; + WHEN '842' THEN SET `token2` = 'Only works on Humanoid Level 84 Max'; + WHEN '843' THEN SET `token2` = 'Only works on Humanoid Level 86 Max'; + WHEN '844' THEN SET `token2` = 'Only works on Humanoid Level 88 Max'; + -- WHEN '845' THEN SET `token2` = '---'; + -- WHEN '846' THEN SET `token2` = '---'; + -- WHEN '847' THEN SET `token2` = '---'; + -- WHEN '860' THEN SET `token2` = '---'; + -- WHEN '861' THEN SET `token2` = '---'; + -- WHEN '862' THEN SET `token2` = '---'; + -- WHEN '863' THEN SET `token2` = '---'; + -- WHEN '864' THEN SET `token2` = '---'; + -- WHEN '865' THEN SET `token2` = '---'; + WHEN '1000' THEN SET `token2` = 'Between Level 1 and 75'; + WHEN '1001' THEN SET `token2` = 'Between Level 76 and 85'; + WHEN '1002' THEN SET `token2` = 'Between Level 86 and 95'; + WHEN '1003' THEN SET `token2` = 'Between Level 96 and 100'; + WHEN '1004' THEN SET `token2` = 'HP Less Than 80%'; + WHEN '38311' THEN SET `token2` = 'Mana Below 20%'; + WHEN '38312' THEN SET `token2` = 'Mana Below 10%'; + ELSE SET `token2` = 'unk'; + END CASE; + + SET `token2` = CONCAT(`token2`, '(', `cast_restriction`, ')'); + + SET `token` = CONCAT(`token`, ':', `token2`); RETURN `token`; END$$