diff --git a/common/spdat.h b/common/spdat.h index 6ca588f04..e8ec2574e 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -67,11 +67,58 @@ const int SpellTypes_Beneficial = SpellType_Heal|SpellType_Buff|SpellType_Escape #define SpellType_Any 0xFFFF +// These don't appear to be consistent either through us or soe.. +// Use for generalization rather than validation enum SpellAffectIndex { - SAI_Calm = 12, // Lull and Alliance Spells - SAI_Dispell_Sight = 14, // Dispells and Spells like Bind Sight - SAI_Memory_Blur = 27, - SAI_Calm_Song = 43 // Lull and Alliance Songs + SAI_Summon_Mount_Unclass = -1, + SAI_Direct_Damage = 0, + SAI_Heal_Cure = 1, + SAI_AC_Buff = 2, + SAI_AE_Damage = 3, + SAI_Summon = 4, // Summoned Pets and Items + SAI_Sight = 5, + SAI_Mana_Regen_Resist_Song = 6, + SAI_Stat_Buff = 7, + SAI_Vanish = 9, // Invisibility and Gate/Port + SAI_Appearance = 10, // Illusion and Size + SAI_Enchanter_Pet = 11, + SAI_Calm = 12, // Lull and Alliance Spells + SAI_Fear = 13, + SAI_Dispell_Sight = 14, // Dispells and Spells like Bind Sight + SAI_Stun = 15, + SAI_Haste_Runspeed = 16, // Haste and SoW + SAI_Combat_Slow = 17, + SAI_Damage_Shield = 18, + SAI_Cannibalize_Weapon_Proc = 19, + SAI_Weaken = 20, + SAI_Banish = 21, + SAI_Blind_Poison = 22, + SAI_Cold_DD = 23, + SAI_Poison_Disease_DD = 24, + SAI_Fire_DD = 25, + SAI_Memory_Blur = 27, + SAI_Gravity_Fling = 28, + SAI_Suffocate = 29, + SAI_Lifetap_Over_Time = 30, + SAI_Fire_AE = 31, + SAI_Cold_AE = 33, + SAI_Poison_Disease_AE = 34, + SAI_Teleport = 40, + SAI_Direct_Damage_Song = 41, + SAI_Combat_Buff_Song = 42, + SAI_Calm_Song = 43, // Lull and Alliance Songs + SAI_Firework = 45, + SAI_Firework_AE = 46, + SAI_Weather_Rocket = 47, + SAI_Convert_Vitals = 50, + SAI_NPC_Special_60 = 60, + SAI_NPC_Special_61 = 61, + SAI_NPC_Special_62 = 62, + SAI_NPC_Special_63 = 63, + SAI_NPC_Special_70 = 70, + SAI_NPC_Special_71 = 71, + SAI_NPC_Special_80 = 80, + SAI_Trap_Lock = 88 }; enum RESISTTYPE { diff --git a/utils/scripts/database_tools/spell_affect_index_token_function.sql b/utils/scripts/database_tools/spell_affect_index_token_function.sql new file mode 100644 index 000000000..0aa6926c8 --- /dev/null +++ b/utils/scripts/database_tools/spell_affect_index_token_function.sql @@ -0,0 +1,71 @@ +DELIMITER $$ + +DROP FUNCTION IF EXISTS `GetSpellAffectIndexToken`; + +-- This function converts a numeric spell affect index id to a string label based on server code designations +-- +-- example: +-- SELECT `id`, `name`, GetSpellAffectIndexToken(`SpellAffectIndex`) FROM `spells_new` WHERE `id` IN ('73', '2253', '2319'); +CREATE FUNCTION `GetSpellAffectIndexToken` (`affect_index_id` INT(11)) RETURNS VARCHAR(64) +BEGIN + DECLARE `token` VARCHAR(64) DEFAULT ''; + + CASE `affect_index_id` + WHEN '-1' THEN SET `token` = 'SAI_Summon_Mount_Unclass'; + WHEN '0' THEN SET `token` = 'SAI_Direct_Damage'; + WHEN '1' THEN SET `token` = 'SAI_Heal_Cure'; + WHEN '2' THEN SET `token` = 'SAI_AC_Buff'; + WHEN '3' THEN SET `token` = 'SAI_AE_Damage'; + WHEN '4' THEN SET `token` = 'SAI_Summon'; + WHEN '5' THEN SET `token` = 'SAI_Sight'; + WHEN '6' THEN SET `token` = 'SAI_Mana_Regen_Resist_Song'; + WHEN '7' THEN SET `token` = 'SAI_Stat_Buff'; + WHEN '9' THEN SET `token` = 'SAI_Vanish'; + WHEN '10' THEN SET `token` = 'SAI_Appearance'; + WHEN '11' THEN SET `token` = 'SAI_Enchanter_Pet'; + WHEN '12' THEN SET `token` = 'SAI_Calm'; + WHEN '13' THEN SET `token` = 'SAI_Fear'; + WHEN '14' THEN SET `token` = 'SAI_Dispell_Sight'; + WHEN '15' THEN SET `token` = 'SAI_Stun'; + WHEN '16' THEN SET `token` = 'SAI_Haste_Runspeed'; + WHEN '17' THEN SET `token` = 'SAI_Combat_Slow'; + WHEN '18' THEN SET `token` = 'SAI_Damage_Shield'; + WHEN '19' THEN SET `token` = 'SAI_Cannibalize_Weapon_Proc'; + WHEN '20' THEN SET `token` = 'SAI_Weaken'; + WHEN '21' THEN SET `token` = 'SAI_Banish'; + WHEN '22' THEN SET `token` = 'SAI_Blind_Poison'; + WHEN '23' THEN SET `token` = 'SAI_Cold_DD'; + WHEN '24' THEN SET `token` = 'SAI_Poison_Disease_DD'; + WHEN '25' THEN SET `token` = 'SAI_Fire_DD'; + WHEN '27' THEN SET `token` = 'SAI_Memory_Blur'; + WHEN '28' THEN SET `token` = 'SAI_Gravity_Fling'; + WHEN '29' THEN SET `token` = 'SAI_Suffocate'; + WHEN '30' THEN SET `token` = 'SAI_Lifetap_Over_Time'; + WHEN '31' THEN SET `token` = 'SAI_Fire_AE'; + WHEN '33' THEN SET `token` = 'SAI_Cold_AE'; + WHEN '34' THEN SET `token` = 'SAI_Poison_Disease_AE'; + WHEN '40' THEN SET `token` = 'SAI_Teleport'; + WHEN '41' THEN SET `token` = 'SAI_Direct_Damage_Song'; + WHEN '42' THEN SET `token` = 'SAI_Combat_Buff_Song'; + WHEN '43' THEN SET `token` = 'SAI_Calm_Song'; + WHEN '45' THEN SET `token` = 'SAI_Firework'; + WHEN '46' THEN SET `token` = 'SAI_Firework_AE'; + WHEN '47' THEN SET `token` = 'SAI_Weather_Rocket'; + WHEN '50' THEN SET `token` = 'SAI_Convert_Vitals'; + WHEN '60' THEN SET `token` = 'SAI_NPC_Special_60'; + WHEN '61' THEN SET `token` = 'SAI_NPC_Special_61'; + WHEN '62' THEN SET `token` = 'SAI_NPC_Special_62'; + WHEN '63' THEN SET `token` = 'SAI_NPC_Special_63'; + WHEN '70' THEN SET `token` = 'SAI_NPC_Special_70'; + WHEN '71' THEN SET `token` = 'SAI_NPC_Special_71'; + WHEN '80' THEN SET `token` = 'SAI_NPC_Special_80'; + WHEN '88' THEN SET `token` = 'SAI_Lock_Trap'; + ELSE SET `token` = 'unk'; + END CASE; + + SET `token` = CONCAT(`token`, '(', `affect_index_id`, ')'); + + RETURN `token`; +END$$ + +DELIMITER ; 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 1b76714fa..76d726bce 100644 --- a/utils/scripts/database_tools/spell_target_type_token_function.sql +++ b/utils/scripts/database_tools/spell_target_type_token_function.sql @@ -7,9 +7,9 @@ DROP FUNCTION IF EXISTS `GetSpellTargetTypeToken`; -- -- example: -- 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) +CREATE FUNCTION `GetSpellTargetTypeToken` (`target_type` INT(11), `cast_restriction` INT(11)) RETURNS VARCHAR(128) BEGIN - DECLARE `token` VARCHAR(64) DEFAULT ''; + DECLARE `token` VARCHAR(128) DEFAULT ''; DECLARE `token2` VARCHAR(64) DEFAULT ''; CASE `target_type` @@ -56,7 +56,6 @@ BEGIN 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'; @@ -81,11 +80,6 @@ BEGIN 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%'; @@ -120,8 +114,6 @@ BEGIN 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%'; @@ -145,24 +137,12 @@ BEGIN 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%'; @@ -171,15 +151,6 @@ BEGIN 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';