diff options
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_00_world_version.sql (renamed from sql/updates/world/2012_09_16_00_world_version.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_01_world_conditions.sql (renamed from sql/updates/world/2012_09_16_01_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_01_world_creature_loot_template.sql (renamed from sql/updates/world/2012_09_16_01_world_creature_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_01_world_creature_template_addon.sql (renamed from sql/updates/world/2012_09_16_01_world_creature_template_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_02_world_fires_over_skettis.sql (renamed from sql/updates/world/2012_09_16_02_world_fires_over_skettis.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_16_03_world_spell_script_names.sql (renamed from sql/updates/world/2012_09_16_03_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_17_00_world_spell_bonus_data.sql (renamed from sql/updates/world/2012_09_17_00_world_spell_bonus_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_17_01_world_spell_bonus_data.sql (renamed from sql/updates/world/2012_09_17_01_world_spell_bonus_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_17_01_world_spell_script_names.sql (renamed from sql/updates/world/2012_09_17_01_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_17_02_world_misc.sql (renamed from sql/updates/world/2012_09_17_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_18_00_world_creature_template.sql (renamed from sql/updates/world/2012_09_18_00_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_18_01_world_creature_template.sql (renamed from sql/updates/world/2012_09_18_01_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_19_00_world_dwarfageddon.sql (renamed from sql/updates/world/2012_09_19_00_world_dwarfageddon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_19_00_world_reference_loot_template.sql (renamed from sql/updates/world/2012_09_19_00_world_reference_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_20_00_world_creature_loot_template.sql (renamed from sql/updates/world/2012_09_20_00_world_creature_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_22_01_world_i_was_a_lot_of_things.sql (renamed from sql/updates/world/2012_09_22_01_world_i_was_a_lot_of_things.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_22_03_world_game_event.sql (renamed from sql/updates/world/2012_09_22_03_world_game_event.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_24_00_world_spell_script_names.sql (renamed from sql/updates/world/2012_09_24_00_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_24_01_world_spell_script_names.sql (renamed from sql/updates/world/2012_09_24_01_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_24_02_world_misc.sql (renamed from sql/updates/world/2012_09_24_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_24_03_world_misc.sql (renamed from sql/updates/world/2012_09_24_03_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_26_00_world_misc.sql (renamed from sql/updates/world/2012_09_26_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_26_01_world_spell_bonus_data.sql (renamed from sql/updates/world/2012_09_26_01_world_spell_bonus_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_27_01_world_custodian_of_time.sql (renamed from sql/updates/world/2012_09_27_01_world_custodian_of_time.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_28_00_world_creature_model_info.sql (renamed from sql/updates/world/2012_09_28_00_world_creature_model_info.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_29_00_world_creature_model_info.sql (renamed from sql/updates/world/2012_09_29_00_world_creature_model_info.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_29_01_world_creature_text.sql (renamed from sql/updates/world/2012_09_29_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_30_00_world_creature_text.sql (renamed from sql/updates/world/2012_09_30_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_30_01_world_player_factionchange_titles.sql (renamed from sql/updates/world/2012_09_30_01_world_player_factionchange_titles.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_30_02_world_creature_text.sql (renamed from sql/updates/world/2012_09_30_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_09_30_03_world_creature_text.sql (renamed from sql/updates/world/2012_09_30_03_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_02_00_world_oculus.sql (renamed from sql/updates/world/2012_10_02_00_world_oculus.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_04_00_world_spelldifficulty_dbc.sql (renamed from sql/updates/world/2012_10_04_00_world_spelldifficulty_dbc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_04_01_world_script_texts.sql (renamed from sql/updates/world/2012_10_04_01_world_script_texts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_05_00_world_misc.sql (renamed from sql/updates/world/2012_10_05_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_05_01_world_spell_script_names.sql (renamed from sql/updates/world/2012_10_05_01_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_00_world_spell_difficulty.sql (renamed from sql/updates/world/2012_10_06_00_world_spell_difficulty.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_00_world_spell_script_names.sql (renamed from sql/updates/world/2012_10_06_00_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_01_world_spell_dbc.sql (renamed from sql/updates/world/2012_10_06_01_world_spell_dbc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_02_world_misc_templates.sql (renamed from sql/updates/world/2012_10_06_02_world_misc_templates.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_03_world_creature_text.sql (renamed from sql/updates/world/2012_10_06_03_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_04_world_misc_spawns.sql (renamed from sql/updates/world/2012_10_06_04_world_misc_spawns.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_06_05_world_spell_script_names.sql (renamed from sql/updates/world/2012_10_06_05_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_07_00_world_creature_loot_template.sql (renamed from sql/updates/world/2012_10_07_00_world_creature_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_07_01_world_spell_proc_event.sql (renamed from sql/updates/world/2012_10_07_01_world_spell_proc_event.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_09_00_character_glyphs.sql (renamed from sql/updates/characters/2012_10_09_00_character_glyphs.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_09_00_world_spell_groups.sql (renamed from sql/updates/world/2012_10_09_00_world_spell_groups.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_09_01_world_spell_groups.sql (renamed from sql/updates/world/2012_10_09_01_world_spell_groups.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_09_02_world_spell_groups.sql (renamed from sql/updates/world/2012_10_09_02_world_spell_groups.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_10_00_world_battleground_template.sql (renamed from sql/updates/world/2012_10_10_00_world_battleground_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_11_00_world_gameobject.sql (renamed from sql/updates/world/2012_10_11_00_world_gameobject.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_13_00_world_creature_template.sql (renamed from sql/updates/world/2012_10_13_00_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_14_00_world_creature.sql (renamed from sql/updates/world/2012_10_14_00_world_creature.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_16_00_world_spell_area.sql (renamed from sql/updates/world/2012_10_16_00_world_spell_area.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_17_00_character_gm_tickets.sql (renamed from sql/updates/characters/2012_10_17_00_character_gm_tickets.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_20_00_world_transports.sql (renamed from sql/updates/world/2012_10_20_00_world_transports.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_20_01_world_spell_script_names.sql (renamed from sql/updates/world/2012_10_20_01_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_20_02_world_creature_text.sql (renamed from sql/updates/world/2012_10_20_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_21_00_world_conditions.sql (renamed from sql/updates/world/2012_10_21_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_21_01_world_misc.sql (renamed from sql/updates/world/2012_10_21_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_23_00_world_trinity_string.sql (renamed from sql/updates/world/2012_10_23_00_world_trinity_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_23_01_world_command.sql (renamed from sql/updates/world/2012_10_23_01_world_command.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_25_00_world_childrens_week.sql (renamed from sql/updates/world/2012_10_25_00_world_childrens_week.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_26_00_world_sai.sql (renamed from sql/updates/world/2012_10_26_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_27_00_world_creature.sql (renamed from sql/updates/world/2012_10_27_00_world_creature.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_27_01_world_creature_loot_template.sql (renamed from sql/updates/world/2012_10_27_01_world_creature_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_10_29_00_world_conditions.sql (renamed from sql/updates/world/2012_10_29_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_02_00_character_misc.sql (renamed from sql/updates/characters/2012_11_02_00_character_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_03_00_world_creature_loot_template.sql (renamed from sql/updates/world/2012_11_03_00_world_creature_loot_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_07_00_world_misc.sql (renamed from sql/updates/world/2012_11_07_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_11_00_world_sai.sql (renamed from sql/updates/world/2012_11_11_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_11_01_world_quest_template.sql (renamed from sql/updates/world/2012_11_11_01_world_quest_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_11_02_world_gossip_menu.sql (renamed from sql/updates/world/2012_11_11_02_world_gossip_menu.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_11_03_world_gossip_menu.sql (renamed from sql/updates/world/2012_11_11_03_world_gossip_menu.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_12_00_world_quest_template.sql (renamed from sql/updates/world/2012_11_12_00_world_quest_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_12_01_world_misc.sql (renamed from sql/updates/world/2012_11_12_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_12_02_world_quest_template.sql (renamed from sql/updates/world/2012_11_12_02_world_quest_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_12_03_world_misc.sql (renamed from sql/updates/world/2012_11_12_03_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_00_world_waypoints.sql (renamed from sql/updates/world/2012_11_13_00_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_01_world_misc.sql (renamed from sql/updates/world/2012_11_13_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_02_world_creature.sql (renamed from sql/updates/world/2012_11_13_02_world_creature.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_03_world_gameevent.sql (renamed from sql/updates/world/2012_11_13_03_world_gameevent.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_04_world_gameeventquest.sql (renamed from sql/updates/world/2012_11_13_04_world_gameeventquest.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_05_world_player_factionchange_items.sql (renamed from sql/updates/world/2012_11_13_05_world_player_factionchange_items.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_13_06_world_trinity_string.sql (renamed from sql/updates/world/2012_11_13_06_world_trinity_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_14_00_world_sai.sql (renamed from sql/updates/world/2012_11_14_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_14_00_world_various_fixes.sql (renamed from sql/updates/world/2012_11_14_00_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_14_02_world_battleground_template.sql (renamed from sql/updates/world/2012_11_14_02_world_battleground_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_16_00_world_utgarde.sql (renamed from sql/updates/world/2012_11_16_00_world_utgarde.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_16_01_world_utgarde.sql (renamed from sql/updates/world/2012_11_16_01_world_utgarde.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_16_02_world_creature_ai_summons.sql (renamed from sql/updates/world/2012_11_16_02_world_creature_ai_summons.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_17_00_world_various_fixes.sql (renamed from sql/updates/world/2012_11_17_00_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_18_00_character_calendar.sql (renamed from sql/updates/characters/2012_11_18_00_character_calendar.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_18_00_world_ormorok.sql (renamed from sql/updates/world/2012_11_18_00_world_ormorok.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_18_01_world_creature_text.sql (renamed from sql/updates/world/2012_11_18_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_18_01_world_gameobject.sql (renamed from sql/updates/world/2012_11_18_01_world_gameobject.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_18_02_world_toc.sql (renamed from sql/updates/world/2012_11_18_02_world_toc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_19_00_world_various_fixes.sql (renamed from sql/updates/world/2012_11_19_00_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_19_01_world_pilgrims_bounty.sql (renamed from sql/updates/world/2012_11_19_01_world_pilgrims_bounty.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_19_02_world_misc.sql (renamed from sql/updates/world/2012_11_19_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_19_03_world_ysera.sql (renamed from sql/updates/world/2012_11_19_03_world_ysera.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_20_00_world_creature_text.sql (renamed from sql/updates/world/2012_11_20_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_21_00_world_sai.sql (renamed from sql/updates/world/2012_11_21_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_00_world_conditions.sql (renamed from sql/updates/world/2012_11_24_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_00_world_creature_text.sql (renamed from sql/updates/world/2012_11_24_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_01_world_quest_start_scripts.sql (renamed from sql/updates/world/2012_11_24_01_world_quest_start_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_02_world_creature_text.sql (renamed from sql/updates/world/2012_11_24_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_02_world_gossip_menu_option.sql (renamed from sql/updates/world/2012_11_24_02_world_gossip_menu_option.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_03_world_various_fixes.sql (renamed from sql/updates/world/2012_11_24_03_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_24_04_world_sai.sql (renamed from sql/updates/world/2012_11_24_04_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_25_00_world_various_fixes.sql (renamed from sql/updates/world/2012_11_25_00_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_25_01_world_various_fixes.sql (renamed from sql/updates/world/2012_11_25_01_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_26_02_world_conditions.sql (renamed from sql/updates/world/2012_11_26_02_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_26_03_world_misc.sql (renamed from sql/updates/world/2012_11_26_03_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_27_00_world_misc.sql (renamed from sql/updates/world/2012_11_27_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_27_01_world_achievement_criteria_data.sql (renamed from sql/updates/world/2012_11_27_01_world_achievement_criteria_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_11_30_00_world_spell_script_names.sql (renamed from sql/updates/world/2012_11_30_00_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_00_world_assembly_of_iron.sql (renamed from sql/updates/world/2012_12_01_00_world_assembly_of_iron.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_01_world_misc.sql (renamed from sql/updates/world/2012_12_01_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_02_world_creature_text.sql (renamed from sql/updates/world/2012_12_01_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_03_world_ulduar_creature_text.sql (renamed from sql/updates/world/2012_12_01_03_world_ulduar_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_04_world_spelldifficulty_dbc.sql (renamed from sql/updates/world/2012_12_01_04_world_spelldifficulty_dbc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_01_05_world_creature_template.sql (renamed from sql/updates/world/2012_12_01_05_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_02_00_world_game_object.sql (renamed from sql/updates/world/2012_12_02_00_world_game_object.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_02_01_world_creature_text.sql (renamed from sql/updates/world/2012_12_02_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_02_02_world_waypoint_data.sql (renamed from sql/updates/world/2012_12_02_02_world_waypoint_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_03_00_character_character_queststatus_monthly.sql (renamed from sql/updates/characters/2012_12_03_00_character_character_queststatus_monthly.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_04_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_01_world_quest_start_scripts.sql (renamed from sql/updates/world/2012_12_04_01_world_quest_start_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_02_world_reputation_reward_rate.sql (renamed from sql/updates/world/2012_12_04_02_world_reputation_reward_rate.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_03_world_reputation_reward_rate.sql (renamed from sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_04_world_creature_text.sql (renamed from sql/updates/world/2012_12_04_04_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_05_world_spell_script_names.sql (renamed from sql/updates/world/2012_12_04_05_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_04_06_world_spell_creature_text.sql (renamed from sql/updates/world/2012_12_04_06_world_spell_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_05_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_05_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_06_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_06_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_07_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_00_world_script_texts.sql (renamed from sql/updates/world/2012_12_07_00_world_script_texts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_01_world_misc.sql (renamed from sql/updates/world/2012_12_07_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_02_world_tracker_pitcrawler.sql (renamed from sql/updates/world/2012_12_07_02_world_tracker_pitcrawler.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_03_world_tracker_trista.sql (renamed from sql/updates/world/2012_12_07_03_world_tracker_trista.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_04_world_misc.sql (renamed from sql/updates/world/2012_12_07_04_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_05_world_creature_text.sql (renamed from sql/updates/world/2012_12_07_05_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_06_world_sai.sql (renamed from sql/updates/world/2012_12_07_06_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_07_world_sai.sql (renamed from sql/updates/world/2012_12_07_07_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_08_world_misc.sql (renamed from sql/updates/world/2012_12_07_08_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_07_09_world_db_script_string.sql (renamed from sql/updates/world/2012_12_07_09_world_db_script_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_08_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_08_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_08_01_world_sai.sql (renamed from sql/updates/world/2012_12_08_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_09_00_world_conditions.sql (renamed from sql/updates/world/2012_12_09_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_09_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_09_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_09_01_world_misc.sql (renamed from sql/updates/world/2012_12_09_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_09_02_world_quest_template.sql (renamed from sql/updates/world/2012_12_09_02_world_quest_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_10_00_world_smart_scripts.sql (renamed from sql/updates/world/2012_12_10_00_world_smart_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_10_01_world_spell_script_names.sql (renamed from sql/updates/world/2012_12_10_01_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_10_02_world_spawns_waypoints.sql (renamed from sql/updates/world/2012_12_10_02_world_spawns_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_13_00_world.sql (renamed from sql/updates/world/2012_12_13_00_world.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_00_world_conditions.sql (renamed from sql/updates/world/2012_12_14_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_01_world_waypoint_data.sql (renamed from sql/updates/world/2012_12_14_01_world_waypoint_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_02_world_misc.sql (renamed from sql/updates/world/2012_12_14_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_03_world_npc_spellclick_spells.sql (renamed from sql/updates/world/2012_12_14_03_world_npc_spellclick_spells.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_04_world_misc.sql (renamed from sql/updates/world/2012_12_14_04_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_14_05_world_spell_script_names.sql (renamed from sql/updates/world/2012_12_14_05_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_15_00_world_waypoint_data.sql (renamed from sql/updates/world/2012_12_15_00_world_waypoint_data.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_15_01_world_sai.sql (renamed from sql/updates/world/2012_12_15_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_15_02_world_sai.sql (renamed from sql/updates/world/2012_12_15_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_15_03_world_quest_end_scripts.sql (renamed from sql/updates/world/2012_12_15_03_world_quest_end_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_16_00_world_creature_addon.sql (renamed from sql/updates/world/2012_12_16_00_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_16_01_world_npc_vendor.sql (renamed from sql/updates/world/2012_12_16_01_world_npc_vendor.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_16_02_world_creature_text.sql (renamed from sql/updates/world/2012_12_16_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_16_03_world_sai.sql (renamed from sql/updates/world/2012_12_16_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_17_00_world_creature_template.sql (renamed from sql/updates/world/2012_12_17_00_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_17_00_world_song_of_wind_and_water.sql (renamed from sql/updates/world/2012_12_17_00_world_song_of_wind_and_water.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_17_00_world_spell_linked_spell.sql (renamed from sql/updates/world/2012_12_17_00_world_spell_linked_spell.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_00_character_worldstates.sql (renamed from sql/updates/characters/2012_12_18_00_character_worldstates.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_18_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_00_world_waking_the_sleeper.sql (renamed from sql/updates/world/2012_12_18_00_world_waking_the_sleeper.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_01_world_creature_text.sql (renamed from sql/updates/world/2012_12_18_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_02_world_misc.sql (renamed from sql/updates/world/2012_12_18_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_18_02_world_sai.sql (renamed from sql/updates/world/2012_12_18_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_19_00_world_sai.sql (renamed from sql/updates/world/2012_12_19_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_19_01_world_viscidus.sql (renamed from sql/updates/world/2012_12_19_01_world_viscidus.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_19_02_world_sai.sql (renamed from sql/updates/world/2012_12_19_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_20_00_characters_create_item_loot.sql (renamed from sql/updates/characters/2012_12_20_00_characters_create_item_loot.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_20_00_world_conditions.sql (renamed from sql/updates/world/2012_12_20_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_20_01_world_conditions.sql (renamed from sql/updates/world/2012_12_20_01_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_20_02_world_misc.sql (renamed from sql/updates/world/2012_12_20_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_20_03_world_conditions.sql (renamed from sql/updates/world/2012_12_20_03_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_21_00_world_conditions.sql (renamed from sql/updates/world/2012_12_21_00_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_21_01_world_conditions.sql (renamed from sql/updates/world/2012_12_21_01_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_22_01_world_sai.sql (renamed from sql/updates/world/2012_12_22_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_22_02_world_the_crusaders_pinnacle.sql (renamed from sql/updates/world/2012_12_22_02_world_the_crusaders_pinnacle.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_23_00_world_creature_text.sql (renamed from sql/updates/world/2012_12_23_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_23_01_world_creature_text.sql (renamed from sql/updates/world/2012_12_23_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_23_02_world_trinity_string.sql (renamed from sql/updates/world/2012_12_23_02_world_trinity_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_23_03_world_misc.sql (renamed from sql/updates/world/2012_12_23_03_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_00_world_defending_wyrmrest_temple.sql (renamed from sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_01_world_sai.sql (renamed from sql/updates/world/2012_12_24_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_02_world_sai.sql (renamed from sql/updates/world/2012_12_24_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_03_world_sai.sql (renamed from sql/updates/world/2012_12_24_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_04_world_creature.sql (renamed from sql/updates/world/2012_12_24_04_world_creature.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_05_world_object.sql (renamed from sql/updates/world/2012_12_24_05_world_object.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_06_world_reputation.sql (renamed from sql/updates/world/2012_12_24_06_world_reputation.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_07_world_sai.sql (renamed from sql/updates/world/2012_12_24_07_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_08_world_conditions.sql (renamed from sql/updates/world/2012_12_24_08_world_conditions.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_24_09_world_sai.sql (renamed from sql/updates/world/2012_12_24_09_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_25_00_world_sai.sql (renamed from sql/updates/world/2012_12_25_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_25_01_world_sai.sql (renamed from sql/updates/world/2012_12_25_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_25_02_world_sai.sql (renamed from sql/updates/world/2012_12_25_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_25_03_world_sai.sql (renamed from sql/updates/world/2012_12_25_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_25_04_world_sai.sql (renamed from sql/updates/world/2012_12_25_04_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_01_world_creature_text.sql (renamed from sql/updates/world/2012_12_26_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_02_world_sai.sql (renamed from sql/updates/world/2012_12_26_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_03_world_sai.sql (renamed from sql/updates/world/2012_12_26_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_04_world_sai.sql (renamed from sql/updates/world/2012_12_26_04_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_05_world_sai.sql (renamed from sql/updates/world/2012_12_26_05_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_06_world_sai.sql (renamed from sql/updates/world/2012_12_26_06_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_07_world_game_event.sql (renamed from sql/updates/world/2012_12_26_07_world_game_event.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_08_world_sai.sql (renamed from sql/updates/world/2012_12_26_08_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_09_world_sai.sql (renamed from sql/updates/world/2012_12_26_09_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_10_world_sai.sql (renamed from sql/updates/world/2012_12_26_10_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_11_world_sai.sql (renamed from sql/updates/world/2012_12_26_11_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_12_world_quest_end_scripts.sql (renamed from sql/updates/world/2012_12_26_12_world_quest_end_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_13_world_sai.sql (renamed from sql/updates/world/2012_12_26_13_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_14_world_sai.sql (renamed from sql/updates/world/2012_12_26_14_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_15_world_sai.sql (renamed from sql/updates/world/2012_12_26_15_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_16_world_sai.sql (renamed from sql/updates/world/2012_12_26_16_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_17_world_sai.sql (renamed from sql/updates/world/2012_12_26_17_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_18_world_sai.sql (renamed from sql/updates/world/2012_12_26_18_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_19_world_sai.sql (renamed from sql/updates/world/2012_12_26_19_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_26_20_world_sai.sql (renamed from sql/updates/world/2012_12_26_20_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_27_00_world_orgrims_hammer.sql (renamed from sql/updates/world/2012_12_27_00_world_orgrims_hammer.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_27_01_world_locales_quest.sql (renamed from sql/updates/world/2012_12_27_01_world_locales_quest.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_27_02_world_locales.sql (renamed from sql/updates/world/2012_12_27_02_world_locales.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_27_03_world_sai.sql (renamed from sql/updates/world/2012_12_27_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_27_04_world_the_shadows_vault.sql (renamed from sql/updates/world/2012_12_27_04_world_the_shadows_vault.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_28_00_world_command.sql (renamed from sql/updates/world/2012_12_28_00_world_command.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_28_01_world_misc.sql (renamed from sql/updates/world/2012_12_28_01_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_28_02_world_sai.sql (renamed from sql/updates/world/2012_12_28_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_28_03_world_disables.sql (renamed from sql/updates/world/2012_12_28_03_world_disables.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_28_04_world_citadel_footsteps.sql (renamed from sql/updates/world/2012_12_28_04_world_citadel_footsteps.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_30_01_world_trinity_string.sql (renamed from sql/updates/world/2012_12_30_01_world_trinity_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_31_00_world_sai.sql (renamed from sql/updates/world/2012_12_31_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2012_12_31_01_world_sai.sql (renamed from sql/updates/world/2012_12_31_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_01_00_item_template_restore.sql (renamed from sql/updates/world/2013_01_01_00_item_template_restore.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_01_01_world_creature_text.sql (renamed from sql/updates/world/2013_01_01_01_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_00_world_misc.sql (renamed from sql/updates/world/2013_01_02_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_01_world_spell_script.sql (renamed from sql/updates/world/2013_01_02_01_world_spell_script.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_02_world_instance_template.sql (renamed from sql/updates/world/2013_01_02_02_world_instance_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_03_world_sai.sql (renamed from sql/updates/world/2013_01_02_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_04_world_creature.sql (renamed from sql/updates/world/2013_01_02_04_world_creature.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_05_eye_of_eternity.sql (renamed from sql/updates/world/2013_01_02_05_eye_of_eternity.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_06_world_sai.sql (renamed from sql/updates/world/2013_01_02_06_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_06_world_waypoints.sql (renamed from sql/updates/world/2013_01_02_06_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_07_world_waypoints.sql (renamed from sql/updates/world/2013_01_02_07_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_08_world_sai.sql (renamed from sql/updates/world/2013_01_02_08_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_09_world_waypoints.sql (renamed from sql/updates/world/2013_01_02_09_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_10_world_sai.sql (renamed from sql/updates/world/2013_01_02_10_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_11_world_sai.sql (renamed from sql/updates/world/2013_01_02_11_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_12_world_go_script.sql (renamed from sql/updates/world/2013_01_02_12_world_go_script.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_02_12_world_waypoints.sql (renamed from sql/updates/world/2013_01_02_12_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_00_world_gameobject_scripts.sql (renamed from sql/updates/world/2013_01_03_00_world_gameobject_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_01_world_sai.sql (renamed from sql/updates/world/2013_01_03_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_02_world_sai.sql (renamed from sql/updates/world/2013_01_03_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_03_world_spelldifficulty_dbc.sql (renamed from sql/updates/world/2013_01_03_03_world_spelldifficulty_dbc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_04_world_sai.sql (renamed from sql/updates/world/2013_01_03_04_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_05_world_sai.sql (renamed from sql/updates/world/2013_01_03_05_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_06_world_sai.sql (renamed from sql/updates/world/2013_01_03_06_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_07_world_sai.sql (renamed from sql/updates/world/2013_01_03_07_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_08_world_misc.sql (renamed from sql/updates/world/2013_01_03_08_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_09_world_sai.sql (renamed from sql/updates/world/2013_01_03_09_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_10_world_gameobject.sql (renamed from sql/updates/world/2013_01_03_10_world_gameobject.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_11_world_item_template.sql (renamed from sql/updates/world/2013_01_03_11_world_item_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_12_world_gameobject_scripts.sql (renamed from sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_12_world_misc.sql (renamed from sql/updates/world/2013_01_03_12_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_13_world_quest_template.sql (renamed from sql/updates/world/2013_01_03_13_world_quest_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_14_world_spell_area.sql (renamed from sql/updates/world/2013_01_03_14_world_spell_area.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_15_world_various_fixes.sql (renamed from sql/updates/world/2013_01_03_15_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_03_16_world_various_fixes.sql (renamed from sql/updates/world/2013_01_03_16_world_various_fixes.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_04_00_world_creature_text.sql (renamed from sql/updates/world/2013_01_04_00_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_04_01_world_sai.sql (renamed from sql/updates/world/2013_01_04_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_04_02_world_misc.sql (renamed from sql/updates/world/2013_01_04_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_04_02_world_novos_the_summoner.sql (renamed from sql/updates/world/2013_01_04_02_world_novos_the_summoner.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_05_00_world_waypoints.sql (renamed from sql/updates/world/2013_01_05_00_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_00_world_creature_addon.sql (renamed from sql/updates/world/2013_01_06_00_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_00_world_creature_template.sql (renamed from sql/updates/world/2013_01_06_00_world_creature_template.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_01_world_waypoints.sql (renamed from sql/updates/world/2013_01_06_01_world_waypoints.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_02_world_misc.sql (renamed from sql/updates/world/2013_01_06_02_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_03_world_sai.sql (renamed from sql/updates/world/2013_01_06_03_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_06_04_world_misc.sql (renamed from sql/updates/world/2013_01_06_04_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_00_world_sai.sql (renamed from sql/updates/world/2013_01_07_00_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_01_world_creature_addon.sql (renamed from sql/updates/world/2013_01_07_01_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_02_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_02_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_03_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_03_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_04_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_04_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_05_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_05_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_06_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_06_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_07_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_07_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_08_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_08_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_09_world_buru.sql (renamed from sql/updates/world/2013_01_07_09_world_buru.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_10_world_skeram.sql (renamed from sql/updates/world/2013_01_07_10_world_skeram.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_11_world_sai.sql (renamed from sql/updates/world/2013_01_07_11_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_12_world_sai.sql (renamed from sql/updates/world/2013_01_07_12_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_13_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_13_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_14_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_14_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_15_world_creature_addon.sql (renamed from sql/updates/world/2013_01_07_15_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_16_world_creature_addon.sql (renamed from sql/updates/world/2013_01_07_16_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_17_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_17_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_07_18_world_creature_text.sql (renamed from sql/updates/world/2013_01_07_18_world_creature_text.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_08_01_world_raise_the_barricades.sql (renamed from sql/updates/world/2013_01_08_01_world_raise_the_barricades.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_09_00_world_misc.sql (renamed from sql/updates/world/2013_01_09_00_world_misc.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_09_01_world_lfg_dungeon_rewards.sql (renamed from sql/updates/world/2013_01_09_01_world_lfg_dungeon_rewards.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_09_02_world_sai.sql (renamed from sql/updates/world/2013_01_09_02_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_09_03_world_spell_script_names.sql (renamed from sql/updates/world/2013_01_09_03_world_spell_script_names.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_00_world_trinity_string.sql (renamed from sql/updates/world/2013_01_10_00_world_trinity_string.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_01_world_sai.sql (renamed from sql/updates/world/2013_01_10_01_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_02_world_creature_addon.sql (renamed from sql/updates/world/2013_01_10_02_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_03_world_creature_addon.sql (renamed from sql/updates/world/2013_01_10_03_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_04_world_creature_addon.sql (renamed from sql/updates/world/2013_01_10_04_world_creature_addon.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_10_05_world_sai.sql (renamed from sql/updates/world/2013_01_10_05_world_sai.sql) | 0 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_00_world_ayamiss.sql | 4 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_01_world_conditions.sql | 5 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_02_world_sai.sql | 109 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_03_world_sai.sql | 2 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_04_world_sai.sql | 3 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_11_05_world_creature_text.sql | 13 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_00_world_smart_scripts.sql | 7 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_01_world_string.sql | 3 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_02_world_creature_template.sql | 1 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_03_world_gameobject.sql | 7 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_03_world_waypoints.sql | 53 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_04_world_misc.sql | 28 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_12_05_world_waypoint_script.sql | 1 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_13_00_world_gameobject_template.sql | 1 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_13_01_world_sai.sql | 41 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_13_02_world_gluttonous_lurkers.sql | 36 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_13_03_world_spell_script_names.sql | 4 | ||||
-rw-r--r-- | sql/old/3.3.5a/2013_01_13_04_world_conditions.sql | 9 | ||||
-rw-r--r-- | sql/updates/world/2013_01_14_00_world_version.sql | 1 | ||||
-rw-r--r-- | src/server/game/AI/CoreAI/UnitAI.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/BattlegroundMgr.cpp | 38 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/BattlegroundMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/BattlegroundQueue.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 21 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/DataStores/DBCfmt.h | 2 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 13 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.h | 1 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 31 | ||||
-rw-r--r-- | src/server/game/Handlers/BattleGroundHandler.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Handlers/ReferAFriendHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 1 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptLoader.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Tickets/TicketMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_ticket.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp | 5 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp | 9 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp | 9 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp | 9 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp | 10 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp | 311 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Scholomance/scholomance.h | 12 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp | 30 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp | 177 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp | 56 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp | 287 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp | 86 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp | 81 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp | 292 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp | 102 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp | 46 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp | 215 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp | 70 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp | 301 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp | 18 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp | 331 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp | 58 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp | 66 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp | 173 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h | 39 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/boss_kruul.cpp | 17 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp | 260 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp | 30 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp | 10 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp | 10 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h | 11 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp | 10 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/zone_feralas.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp | 36 | ||||
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp | 7 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp | 117 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp | 146 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp | 130 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp | 151 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp | 200 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp | 117 | ||||
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h | 21 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dk.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 76 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_holiday.cpp | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_hunter.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_mage.cpp | 276 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 539 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 45 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 33 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_shaman.cpp | 549 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 714 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 502 |
422 files changed, 4029 insertions, 3347 deletions
diff --git a/sql/updates/world/2012_09_16_00_world_version.sql b/sql/old/3.3.5a/2012_09_16_00_world_version.sql index 74a1cf67499..74a1cf67499 100644 --- a/sql/updates/world/2012_09_16_00_world_version.sql +++ b/sql/old/3.3.5a/2012_09_16_00_world_version.sql diff --git a/sql/updates/world/2012_09_16_01_world_conditions.sql b/sql/old/3.3.5a/2012_09_16_01_world_conditions.sql index 64f87262d0e..64f87262d0e 100644 --- a/sql/updates/world/2012_09_16_01_world_conditions.sql +++ b/sql/old/3.3.5a/2012_09_16_01_world_conditions.sql diff --git a/sql/updates/world/2012_09_16_01_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_09_16_01_world_creature_loot_template.sql index 2d87ad3aa16..2d87ad3aa16 100644 --- a/sql/updates/world/2012_09_16_01_world_creature_loot_template.sql +++ b/sql/old/3.3.5a/2012_09_16_01_world_creature_loot_template.sql diff --git a/sql/updates/world/2012_09_16_01_world_creature_template_addon.sql b/sql/old/3.3.5a/2012_09_16_01_world_creature_template_addon.sql index c23a38cd058..c23a38cd058 100644 --- a/sql/updates/world/2012_09_16_01_world_creature_template_addon.sql +++ b/sql/old/3.3.5a/2012_09_16_01_world_creature_template_addon.sql diff --git a/sql/updates/world/2012_09_16_02_world_fires_over_skettis.sql b/sql/old/3.3.5a/2012_09_16_02_world_fires_over_skettis.sql index d50f45bb020..d50f45bb020 100644 --- a/sql/updates/world/2012_09_16_02_world_fires_over_skettis.sql +++ b/sql/old/3.3.5a/2012_09_16_02_world_fires_over_skettis.sql diff --git a/sql/updates/world/2012_09_16_03_world_spell_script_names.sql b/sql/old/3.3.5a/2012_09_16_03_world_spell_script_names.sql index 8b7e6aa92ba..8b7e6aa92ba 100644 --- a/sql/updates/world/2012_09_16_03_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_09_16_03_world_spell_script_names.sql diff --git a/sql/updates/world/2012_09_17_00_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_09_17_00_world_spell_bonus_data.sql index 0d16742393e..0d16742393e 100644 --- a/sql/updates/world/2012_09_17_00_world_spell_bonus_data.sql +++ b/sql/old/3.3.5a/2012_09_17_00_world_spell_bonus_data.sql diff --git a/sql/updates/world/2012_09_17_01_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_09_17_01_world_spell_bonus_data.sql index f9283233c8e..f9283233c8e 100644 --- a/sql/updates/world/2012_09_17_01_world_spell_bonus_data.sql +++ b/sql/old/3.3.5a/2012_09_17_01_world_spell_bonus_data.sql diff --git a/sql/updates/world/2012_09_17_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_09_17_01_world_spell_script_names.sql index 255c76e6b70..255c76e6b70 100644 --- a/sql/updates/world/2012_09_17_01_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_09_17_01_world_spell_script_names.sql diff --git a/sql/updates/world/2012_09_17_02_world_misc.sql b/sql/old/3.3.5a/2012_09_17_02_world_misc.sql index 378833dfc52..378833dfc52 100644 --- a/sql/updates/world/2012_09_17_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_09_17_02_world_misc.sql diff --git a/sql/updates/world/2012_09_18_00_world_creature_template.sql b/sql/old/3.3.5a/2012_09_18_00_world_creature_template.sql index 5ead9430d60..5ead9430d60 100644 --- a/sql/updates/world/2012_09_18_00_world_creature_template.sql +++ b/sql/old/3.3.5a/2012_09_18_00_world_creature_template.sql diff --git a/sql/updates/world/2012_09_18_01_world_creature_template.sql b/sql/old/3.3.5a/2012_09_18_01_world_creature_template.sql index 4e31e7f6f68..4e31e7f6f68 100644 --- a/sql/updates/world/2012_09_18_01_world_creature_template.sql +++ b/sql/old/3.3.5a/2012_09_18_01_world_creature_template.sql diff --git a/sql/updates/world/2012_09_19_00_world_dwarfageddon.sql b/sql/old/3.3.5a/2012_09_19_00_world_dwarfageddon.sql index 1eda383b67d..1eda383b67d 100644 --- a/sql/updates/world/2012_09_19_00_world_dwarfageddon.sql +++ b/sql/old/3.3.5a/2012_09_19_00_world_dwarfageddon.sql diff --git a/sql/updates/world/2012_09_19_00_world_reference_loot_template.sql b/sql/old/3.3.5a/2012_09_19_00_world_reference_loot_template.sql index 7db30ede52b..7db30ede52b 100644 --- a/sql/updates/world/2012_09_19_00_world_reference_loot_template.sql +++ b/sql/old/3.3.5a/2012_09_19_00_world_reference_loot_template.sql diff --git a/sql/updates/world/2012_09_20_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_09_20_00_world_creature_loot_template.sql index 8463b064bf9..8463b064bf9 100644 --- a/sql/updates/world/2012_09_20_00_world_creature_loot_template.sql +++ b/sql/old/3.3.5a/2012_09_20_00_world_creature_loot_template.sql diff --git a/sql/updates/world/2012_09_22_01_world_i_was_a_lot_of_things.sql b/sql/old/3.3.5a/2012_09_22_01_world_i_was_a_lot_of_things.sql index 95fc92daa76..95fc92daa76 100644 --- a/sql/updates/world/2012_09_22_01_world_i_was_a_lot_of_things.sql +++ b/sql/old/3.3.5a/2012_09_22_01_world_i_was_a_lot_of_things.sql diff --git a/sql/updates/world/2012_09_22_03_world_game_event.sql b/sql/old/3.3.5a/2012_09_22_03_world_game_event.sql index 5e05ba03898..5e05ba03898 100644 --- a/sql/updates/world/2012_09_22_03_world_game_event.sql +++ b/sql/old/3.3.5a/2012_09_22_03_world_game_event.sql diff --git a/sql/updates/world/2012_09_24_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_09_24_00_world_spell_script_names.sql index 611325d4b11..611325d4b11 100644 --- a/sql/updates/world/2012_09_24_00_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_09_24_00_world_spell_script_names.sql diff --git a/sql/updates/world/2012_09_24_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_09_24_01_world_spell_script_names.sql index e14b6833a09..e14b6833a09 100644 --- a/sql/updates/world/2012_09_24_01_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_09_24_01_world_spell_script_names.sql diff --git a/sql/updates/world/2012_09_24_02_world_misc.sql b/sql/old/3.3.5a/2012_09_24_02_world_misc.sql index b4cf7fda0a5..b4cf7fda0a5 100644 --- a/sql/updates/world/2012_09_24_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_09_24_02_world_misc.sql diff --git a/sql/updates/world/2012_09_24_03_world_misc.sql b/sql/old/3.3.5a/2012_09_24_03_world_misc.sql index 3bcb40f79c0..3bcb40f79c0 100644 --- a/sql/updates/world/2012_09_24_03_world_misc.sql +++ b/sql/old/3.3.5a/2012_09_24_03_world_misc.sql diff --git a/sql/updates/world/2012_09_26_00_world_misc.sql b/sql/old/3.3.5a/2012_09_26_00_world_misc.sql index d9ac468f4a6..d9ac468f4a6 100644 --- a/sql/updates/world/2012_09_26_00_world_misc.sql +++ b/sql/old/3.3.5a/2012_09_26_00_world_misc.sql diff --git a/sql/updates/world/2012_09_26_01_world_spell_bonus_data.sql b/sql/old/3.3.5a/2012_09_26_01_world_spell_bonus_data.sql index 3aeeb7c6525..3aeeb7c6525 100644 --- a/sql/updates/world/2012_09_26_01_world_spell_bonus_data.sql +++ b/sql/old/3.3.5a/2012_09_26_01_world_spell_bonus_data.sql diff --git a/sql/updates/world/2012_09_27_01_world_custodian_of_time.sql b/sql/old/3.3.5a/2012_09_27_01_world_custodian_of_time.sql index 521c55d507e..521c55d507e 100644 --- a/sql/updates/world/2012_09_27_01_world_custodian_of_time.sql +++ b/sql/old/3.3.5a/2012_09_27_01_world_custodian_of_time.sql diff --git a/sql/updates/world/2012_09_28_00_world_creature_model_info.sql b/sql/old/3.3.5a/2012_09_28_00_world_creature_model_info.sql index 48134d7bbed..48134d7bbed 100644 --- a/sql/updates/world/2012_09_28_00_world_creature_model_info.sql +++ b/sql/old/3.3.5a/2012_09_28_00_world_creature_model_info.sql diff --git a/sql/updates/world/2012_09_29_00_world_creature_model_info.sql b/sql/old/3.3.5a/2012_09_29_00_world_creature_model_info.sql index 0c63a0b2f73..0c63a0b2f73 100644 --- a/sql/updates/world/2012_09_29_00_world_creature_model_info.sql +++ b/sql/old/3.3.5a/2012_09_29_00_world_creature_model_info.sql diff --git a/sql/updates/world/2012_09_29_01_world_creature_text.sql b/sql/old/3.3.5a/2012_09_29_01_world_creature_text.sql index 8fde66d2e6e..8fde66d2e6e 100644 --- a/sql/updates/world/2012_09_29_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_09_29_01_world_creature_text.sql diff --git a/sql/updates/world/2012_09_30_00_world_creature_text.sql b/sql/old/3.3.5a/2012_09_30_00_world_creature_text.sql index e0f9f210d7b..e0f9f210d7b 100644 --- a/sql/updates/world/2012_09_30_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_09_30_00_world_creature_text.sql diff --git a/sql/updates/world/2012_09_30_01_world_player_factionchange_titles.sql b/sql/old/3.3.5a/2012_09_30_01_world_player_factionchange_titles.sql index 99d7fc871d8..99d7fc871d8 100644 --- a/sql/updates/world/2012_09_30_01_world_player_factionchange_titles.sql +++ b/sql/old/3.3.5a/2012_09_30_01_world_player_factionchange_titles.sql diff --git a/sql/updates/world/2012_09_30_02_world_creature_text.sql b/sql/old/3.3.5a/2012_09_30_02_world_creature_text.sql index 81e77bcd682..81e77bcd682 100644 --- a/sql/updates/world/2012_09_30_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_09_30_02_world_creature_text.sql diff --git a/sql/updates/world/2012_09_30_03_world_creature_text.sql b/sql/old/3.3.5a/2012_09_30_03_world_creature_text.sql index a591f8cfb7c..a591f8cfb7c 100644 --- a/sql/updates/world/2012_09_30_03_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_09_30_03_world_creature_text.sql diff --git a/sql/updates/world/2012_10_02_00_world_oculus.sql b/sql/old/3.3.5a/2012_10_02_00_world_oculus.sql index 8c9ea1bcb60..8c9ea1bcb60 100644 --- a/sql/updates/world/2012_10_02_00_world_oculus.sql +++ b/sql/old/3.3.5a/2012_10_02_00_world_oculus.sql diff --git a/sql/updates/world/2012_10_04_00_world_spelldifficulty_dbc.sql b/sql/old/3.3.5a/2012_10_04_00_world_spelldifficulty_dbc.sql index 6587e35bf9b..6587e35bf9b 100644 --- a/sql/updates/world/2012_10_04_00_world_spelldifficulty_dbc.sql +++ b/sql/old/3.3.5a/2012_10_04_00_world_spelldifficulty_dbc.sql diff --git a/sql/updates/world/2012_10_04_01_world_script_texts.sql b/sql/old/3.3.5a/2012_10_04_01_world_script_texts.sql index 8281d16794e..8281d16794e 100644 --- a/sql/updates/world/2012_10_04_01_world_script_texts.sql +++ b/sql/old/3.3.5a/2012_10_04_01_world_script_texts.sql diff --git a/sql/updates/world/2012_10_05_00_world_misc.sql b/sql/old/3.3.5a/2012_10_05_00_world_misc.sql index f715b9491ef..f715b9491ef 100644 --- a/sql/updates/world/2012_10_05_00_world_misc.sql +++ b/sql/old/3.3.5a/2012_10_05_00_world_misc.sql diff --git a/sql/updates/world/2012_10_05_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_10_05_01_world_spell_script_names.sql index c7269b981ec..c7269b981ec 100644 --- a/sql/updates/world/2012_10_05_01_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_10_05_01_world_spell_script_names.sql diff --git a/sql/updates/world/2012_10_06_00_world_spell_difficulty.sql b/sql/old/3.3.5a/2012_10_06_00_world_spell_difficulty.sql index 1dd1a468990..1dd1a468990 100644 --- a/sql/updates/world/2012_10_06_00_world_spell_difficulty.sql +++ b/sql/old/3.3.5a/2012_10_06_00_world_spell_difficulty.sql diff --git a/sql/updates/world/2012_10_06_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_10_06_00_world_spell_script_names.sql index 4fa3b922d62..4fa3b922d62 100644 --- a/sql/updates/world/2012_10_06_00_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_10_06_00_world_spell_script_names.sql diff --git a/sql/updates/world/2012_10_06_01_world_spell_dbc.sql b/sql/old/3.3.5a/2012_10_06_01_world_spell_dbc.sql index 071d83582ac..071d83582ac 100644 --- a/sql/updates/world/2012_10_06_01_world_spell_dbc.sql +++ b/sql/old/3.3.5a/2012_10_06_01_world_spell_dbc.sql diff --git a/sql/updates/world/2012_10_06_02_world_misc_templates.sql b/sql/old/3.3.5a/2012_10_06_02_world_misc_templates.sql index 5ec006c310d..5ec006c310d 100644 --- a/sql/updates/world/2012_10_06_02_world_misc_templates.sql +++ b/sql/old/3.3.5a/2012_10_06_02_world_misc_templates.sql diff --git a/sql/updates/world/2012_10_06_03_world_creature_text.sql b/sql/old/3.3.5a/2012_10_06_03_world_creature_text.sql index 6716b12cea9..6716b12cea9 100644 --- a/sql/updates/world/2012_10_06_03_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_10_06_03_world_creature_text.sql diff --git a/sql/updates/world/2012_10_06_04_world_misc_spawns.sql b/sql/old/3.3.5a/2012_10_06_04_world_misc_spawns.sql index e53302d2c2f..e53302d2c2f 100644 --- a/sql/updates/world/2012_10_06_04_world_misc_spawns.sql +++ b/sql/old/3.3.5a/2012_10_06_04_world_misc_spawns.sql diff --git a/sql/updates/world/2012_10_06_05_world_spell_script_names.sql b/sql/old/3.3.5a/2012_10_06_05_world_spell_script_names.sql index 354a359e45b..354a359e45b 100644 --- a/sql/updates/world/2012_10_06_05_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_10_06_05_world_spell_script_names.sql diff --git a/sql/updates/world/2012_10_07_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_10_07_00_world_creature_loot_template.sql index 2829725c76c..2829725c76c 100644 --- a/sql/updates/world/2012_10_07_00_world_creature_loot_template.sql +++ b/sql/old/3.3.5a/2012_10_07_00_world_creature_loot_template.sql diff --git a/sql/updates/world/2012_10_07_01_world_spell_proc_event.sql b/sql/old/3.3.5a/2012_10_07_01_world_spell_proc_event.sql index 810cd90290c..810cd90290c 100644 --- a/sql/updates/world/2012_10_07_01_world_spell_proc_event.sql +++ b/sql/old/3.3.5a/2012_10_07_01_world_spell_proc_event.sql diff --git a/sql/updates/characters/2012_10_09_00_character_glyphs.sql b/sql/old/3.3.5a/2012_10_09_00_character_glyphs.sql index b90fa7d7682..b90fa7d7682 100644 --- a/sql/updates/characters/2012_10_09_00_character_glyphs.sql +++ b/sql/old/3.3.5a/2012_10_09_00_character_glyphs.sql diff --git a/sql/updates/world/2012_10_09_00_world_spell_groups.sql b/sql/old/3.3.5a/2012_10_09_00_world_spell_groups.sql index 71f58c6322e..71f58c6322e 100644 --- a/sql/updates/world/2012_10_09_00_world_spell_groups.sql +++ b/sql/old/3.3.5a/2012_10_09_00_world_spell_groups.sql diff --git a/sql/updates/world/2012_10_09_01_world_spell_groups.sql b/sql/old/3.3.5a/2012_10_09_01_world_spell_groups.sql index 75c57d0f77f..75c57d0f77f 100644 --- a/sql/updates/world/2012_10_09_01_world_spell_groups.sql +++ b/sql/old/3.3.5a/2012_10_09_01_world_spell_groups.sql diff --git a/sql/updates/world/2012_10_09_02_world_spell_groups.sql b/sql/old/3.3.5a/2012_10_09_02_world_spell_groups.sql index 8e4864bc039..8e4864bc039 100644 --- a/sql/updates/world/2012_10_09_02_world_spell_groups.sql +++ b/sql/old/3.3.5a/2012_10_09_02_world_spell_groups.sql diff --git a/sql/updates/world/2012_10_10_00_world_battleground_template.sql b/sql/old/3.3.5a/2012_10_10_00_world_battleground_template.sql index 2dcafc51161..2dcafc51161 100644 --- a/sql/updates/world/2012_10_10_00_world_battleground_template.sql +++ b/sql/old/3.3.5a/2012_10_10_00_world_battleground_template.sql diff --git a/sql/updates/world/2012_10_11_00_world_gameobject.sql b/sql/old/3.3.5a/2012_10_11_00_world_gameobject.sql index e58d60590cb..e58d60590cb 100644 --- a/sql/updates/world/2012_10_11_00_world_gameobject.sql +++ b/sql/old/3.3.5a/2012_10_11_00_world_gameobject.sql diff --git a/sql/updates/world/2012_10_13_00_world_creature_template.sql b/sql/old/3.3.5a/2012_10_13_00_world_creature_template.sql index 7dc7a463f3f..7dc7a463f3f 100644 --- a/sql/updates/world/2012_10_13_00_world_creature_template.sql +++ b/sql/old/3.3.5a/2012_10_13_00_world_creature_template.sql diff --git a/sql/updates/world/2012_10_14_00_world_creature.sql b/sql/old/3.3.5a/2012_10_14_00_world_creature.sql index dd650f37aef..dd650f37aef 100644 --- a/sql/updates/world/2012_10_14_00_world_creature.sql +++ b/sql/old/3.3.5a/2012_10_14_00_world_creature.sql diff --git a/sql/updates/world/2012_10_16_00_world_spell_area.sql b/sql/old/3.3.5a/2012_10_16_00_world_spell_area.sql index 3dbc29d077f..3dbc29d077f 100644 --- a/sql/updates/world/2012_10_16_00_world_spell_area.sql +++ b/sql/old/3.3.5a/2012_10_16_00_world_spell_area.sql diff --git a/sql/updates/characters/2012_10_17_00_character_gm_tickets.sql b/sql/old/3.3.5a/2012_10_17_00_character_gm_tickets.sql index affb23f836c..affb23f836c 100644 --- a/sql/updates/characters/2012_10_17_00_character_gm_tickets.sql +++ b/sql/old/3.3.5a/2012_10_17_00_character_gm_tickets.sql diff --git a/sql/updates/world/2012_10_20_00_world_transports.sql b/sql/old/3.3.5a/2012_10_20_00_world_transports.sql index 8cc2bae4b47..8cc2bae4b47 100644 --- a/sql/updates/world/2012_10_20_00_world_transports.sql +++ b/sql/old/3.3.5a/2012_10_20_00_world_transports.sql diff --git a/sql/updates/world/2012_10_20_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_10_20_01_world_spell_script_names.sql index 814f1b40e65..814f1b40e65 100644 --- a/sql/updates/world/2012_10_20_01_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_10_20_01_world_spell_script_names.sql diff --git a/sql/updates/world/2012_10_20_02_world_creature_text.sql b/sql/old/3.3.5a/2012_10_20_02_world_creature_text.sql index bb153c6b2f6..bb153c6b2f6 100644 --- a/sql/updates/world/2012_10_20_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_10_20_02_world_creature_text.sql diff --git a/sql/updates/world/2012_10_21_00_world_conditions.sql b/sql/old/3.3.5a/2012_10_21_00_world_conditions.sql index 62161a932f9..62161a932f9 100644 --- a/sql/updates/world/2012_10_21_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_10_21_00_world_conditions.sql diff --git a/sql/updates/world/2012_10_21_01_world_misc.sql b/sql/old/3.3.5a/2012_10_21_01_world_misc.sql index fe74f8a7a80..fe74f8a7a80 100644 --- a/sql/updates/world/2012_10_21_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_10_21_01_world_misc.sql diff --git a/sql/updates/world/2012_10_23_00_world_trinity_string.sql b/sql/old/3.3.5a/2012_10_23_00_world_trinity_string.sql index 60318667fbc..60318667fbc 100644 --- a/sql/updates/world/2012_10_23_00_world_trinity_string.sql +++ b/sql/old/3.3.5a/2012_10_23_00_world_trinity_string.sql diff --git a/sql/updates/world/2012_10_23_01_world_command.sql b/sql/old/3.3.5a/2012_10_23_01_world_command.sql index b46882c5949..b46882c5949 100644 --- a/sql/updates/world/2012_10_23_01_world_command.sql +++ b/sql/old/3.3.5a/2012_10_23_01_world_command.sql diff --git a/sql/updates/world/2012_10_25_00_world_childrens_week.sql b/sql/old/3.3.5a/2012_10_25_00_world_childrens_week.sql index f10cf92b409..f10cf92b409 100644 --- a/sql/updates/world/2012_10_25_00_world_childrens_week.sql +++ b/sql/old/3.3.5a/2012_10_25_00_world_childrens_week.sql diff --git a/sql/updates/world/2012_10_26_00_world_sai.sql b/sql/old/3.3.5a/2012_10_26_00_world_sai.sql index 8e4c2fa0922..8e4c2fa0922 100644 --- a/sql/updates/world/2012_10_26_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_10_26_00_world_sai.sql diff --git a/sql/updates/world/2012_10_27_00_world_creature.sql b/sql/old/3.3.5a/2012_10_27_00_world_creature.sql index c00c450aeca..c00c450aeca 100644 --- a/sql/updates/world/2012_10_27_00_world_creature.sql +++ b/sql/old/3.3.5a/2012_10_27_00_world_creature.sql diff --git a/sql/updates/world/2012_10_27_01_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_10_27_01_world_creature_loot_template.sql index 3367dbf0fa8..3367dbf0fa8 100644 --- a/sql/updates/world/2012_10_27_01_world_creature_loot_template.sql +++ b/sql/old/3.3.5a/2012_10_27_01_world_creature_loot_template.sql diff --git a/sql/updates/world/2012_10_29_00_world_conditions.sql b/sql/old/3.3.5a/2012_10_29_00_world_conditions.sql index d1fac5361fb..d1fac5361fb 100644 --- a/sql/updates/world/2012_10_29_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_10_29_00_world_conditions.sql diff --git a/sql/updates/characters/2012_11_02_00_character_misc.sql b/sql/old/3.3.5a/2012_11_02_00_character_misc.sql index 9cbbd423bb8..9cbbd423bb8 100644 --- a/sql/updates/characters/2012_11_02_00_character_misc.sql +++ b/sql/old/3.3.5a/2012_11_02_00_character_misc.sql diff --git a/sql/updates/world/2012_11_03_00_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_11_03_00_world_creature_loot_template.sql index 0e5c39b796d..0e5c39b796d 100644 --- a/sql/updates/world/2012_11_03_00_world_creature_loot_template.sql +++ b/sql/old/3.3.5a/2012_11_03_00_world_creature_loot_template.sql diff --git a/sql/updates/world/2012_11_07_00_world_misc.sql b/sql/old/3.3.5a/2012_11_07_00_world_misc.sql index db7c8f66fb1..db7c8f66fb1 100644 --- a/sql/updates/world/2012_11_07_00_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_07_00_world_misc.sql diff --git a/sql/updates/world/2012_11_11_00_world_sai.sql b/sql/old/3.3.5a/2012_11_11_00_world_sai.sql index b5eedd86898..b5eedd86898 100644 --- a/sql/updates/world/2012_11_11_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_11_11_00_world_sai.sql diff --git a/sql/updates/world/2012_11_11_01_world_quest_template.sql b/sql/old/3.3.5a/2012_11_11_01_world_quest_template.sql index 9abf2ea3cd1..9abf2ea3cd1 100644 --- a/sql/updates/world/2012_11_11_01_world_quest_template.sql +++ b/sql/old/3.3.5a/2012_11_11_01_world_quest_template.sql diff --git a/sql/updates/world/2012_11_11_02_world_gossip_menu.sql b/sql/old/3.3.5a/2012_11_11_02_world_gossip_menu.sql index 59d1a10b337..59d1a10b337 100644 --- a/sql/updates/world/2012_11_11_02_world_gossip_menu.sql +++ b/sql/old/3.3.5a/2012_11_11_02_world_gossip_menu.sql diff --git a/sql/updates/world/2012_11_11_03_world_gossip_menu.sql b/sql/old/3.3.5a/2012_11_11_03_world_gossip_menu.sql index 4f250597388..4f250597388 100644 --- a/sql/updates/world/2012_11_11_03_world_gossip_menu.sql +++ b/sql/old/3.3.5a/2012_11_11_03_world_gossip_menu.sql diff --git a/sql/updates/world/2012_11_12_00_world_quest_template.sql b/sql/old/3.3.5a/2012_11_12_00_world_quest_template.sql index ee2206146b3..ee2206146b3 100644 --- a/sql/updates/world/2012_11_12_00_world_quest_template.sql +++ b/sql/old/3.3.5a/2012_11_12_00_world_quest_template.sql diff --git a/sql/updates/world/2012_11_12_01_world_misc.sql b/sql/old/3.3.5a/2012_11_12_01_world_misc.sql index 7a5e81c4b1a..7a5e81c4b1a 100644 --- a/sql/updates/world/2012_11_12_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_12_01_world_misc.sql diff --git a/sql/updates/world/2012_11_12_02_world_quest_template.sql b/sql/old/3.3.5a/2012_11_12_02_world_quest_template.sql index 8f988bfa4ab..8f988bfa4ab 100644 --- a/sql/updates/world/2012_11_12_02_world_quest_template.sql +++ b/sql/old/3.3.5a/2012_11_12_02_world_quest_template.sql diff --git a/sql/updates/world/2012_11_12_03_world_misc.sql b/sql/old/3.3.5a/2012_11_12_03_world_misc.sql index 20c91974bbb..20c91974bbb 100644 --- a/sql/updates/world/2012_11_12_03_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_12_03_world_misc.sql diff --git a/sql/updates/world/2012_11_13_00_world_waypoints.sql b/sql/old/3.3.5a/2012_11_13_00_world_waypoints.sql index 64e16cb2d0e..64e16cb2d0e 100644 --- a/sql/updates/world/2012_11_13_00_world_waypoints.sql +++ b/sql/old/3.3.5a/2012_11_13_00_world_waypoints.sql diff --git a/sql/updates/world/2012_11_13_01_world_misc.sql b/sql/old/3.3.5a/2012_11_13_01_world_misc.sql index 97e3cd8b499..97e3cd8b499 100644 --- a/sql/updates/world/2012_11_13_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_13_01_world_misc.sql diff --git a/sql/updates/world/2012_11_13_02_world_creature.sql b/sql/old/3.3.5a/2012_11_13_02_world_creature.sql index 19f278ca5c6..19f278ca5c6 100644 --- a/sql/updates/world/2012_11_13_02_world_creature.sql +++ b/sql/old/3.3.5a/2012_11_13_02_world_creature.sql diff --git a/sql/updates/world/2012_11_13_03_world_gameevent.sql b/sql/old/3.3.5a/2012_11_13_03_world_gameevent.sql index fbb24b863f2..fbb24b863f2 100644 --- a/sql/updates/world/2012_11_13_03_world_gameevent.sql +++ b/sql/old/3.3.5a/2012_11_13_03_world_gameevent.sql diff --git a/sql/updates/world/2012_11_13_04_world_gameeventquest.sql b/sql/old/3.3.5a/2012_11_13_04_world_gameeventquest.sql index cce654859e0..cce654859e0 100644 --- a/sql/updates/world/2012_11_13_04_world_gameeventquest.sql +++ b/sql/old/3.3.5a/2012_11_13_04_world_gameeventquest.sql diff --git a/sql/updates/world/2012_11_13_05_world_player_factionchange_items.sql b/sql/old/3.3.5a/2012_11_13_05_world_player_factionchange_items.sql index 17b9616624a..17b9616624a 100644 --- a/sql/updates/world/2012_11_13_05_world_player_factionchange_items.sql +++ b/sql/old/3.3.5a/2012_11_13_05_world_player_factionchange_items.sql diff --git a/sql/updates/world/2012_11_13_06_world_trinity_string.sql b/sql/old/3.3.5a/2012_11_13_06_world_trinity_string.sql index 2834a8f900b..2834a8f900b 100644 --- a/sql/updates/world/2012_11_13_06_world_trinity_string.sql +++ b/sql/old/3.3.5a/2012_11_13_06_world_trinity_string.sql diff --git a/sql/updates/world/2012_11_14_00_world_sai.sql b/sql/old/3.3.5a/2012_11_14_00_world_sai.sql index 98467fe4f3a..98467fe4f3a 100644 --- a/sql/updates/world/2012_11_14_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_11_14_00_world_sai.sql diff --git a/sql/updates/world/2012_11_14_00_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_14_00_world_various_fixes.sql index 01655b674b1..01655b674b1 100644 --- a/sql/updates/world/2012_11_14_00_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_14_00_world_various_fixes.sql diff --git a/sql/updates/world/2012_11_14_02_world_battleground_template.sql b/sql/old/3.3.5a/2012_11_14_02_world_battleground_template.sql index b69216ea380..b69216ea380 100644 --- a/sql/updates/world/2012_11_14_02_world_battleground_template.sql +++ b/sql/old/3.3.5a/2012_11_14_02_world_battleground_template.sql diff --git a/sql/updates/world/2012_11_16_00_world_utgarde.sql b/sql/old/3.3.5a/2012_11_16_00_world_utgarde.sql index 1948796a77b..1948796a77b 100644 --- a/sql/updates/world/2012_11_16_00_world_utgarde.sql +++ b/sql/old/3.3.5a/2012_11_16_00_world_utgarde.sql diff --git a/sql/updates/world/2012_11_16_01_world_utgarde.sql b/sql/old/3.3.5a/2012_11_16_01_world_utgarde.sql index 30a64b02e3a..30a64b02e3a 100644 --- a/sql/updates/world/2012_11_16_01_world_utgarde.sql +++ b/sql/old/3.3.5a/2012_11_16_01_world_utgarde.sql diff --git a/sql/updates/world/2012_11_16_02_world_creature_ai_summons.sql b/sql/old/3.3.5a/2012_11_16_02_world_creature_ai_summons.sql index 7d2caf76e33..7d2caf76e33 100644 --- a/sql/updates/world/2012_11_16_02_world_creature_ai_summons.sql +++ b/sql/old/3.3.5a/2012_11_16_02_world_creature_ai_summons.sql diff --git a/sql/updates/world/2012_11_17_00_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_17_00_world_various_fixes.sql index 981d378217f..981d378217f 100644 --- a/sql/updates/world/2012_11_17_00_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_17_00_world_various_fixes.sql diff --git a/sql/updates/characters/2012_11_18_00_character_calendar.sql b/sql/old/3.3.5a/2012_11_18_00_character_calendar.sql index a3e7c352788..a3e7c352788 100644 --- a/sql/updates/characters/2012_11_18_00_character_calendar.sql +++ b/sql/old/3.3.5a/2012_11_18_00_character_calendar.sql diff --git a/sql/updates/world/2012_11_18_00_world_ormorok.sql b/sql/old/3.3.5a/2012_11_18_00_world_ormorok.sql index 0ec8d13fd64..0ec8d13fd64 100644 --- a/sql/updates/world/2012_11_18_00_world_ormorok.sql +++ b/sql/old/3.3.5a/2012_11_18_00_world_ormorok.sql diff --git a/sql/updates/world/2012_11_18_01_world_creature_text.sql b/sql/old/3.3.5a/2012_11_18_01_world_creature_text.sql index 5d8da97f1f0..5d8da97f1f0 100644 --- a/sql/updates/world/2012_11_18_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_11_18_01_world_creature_text.sql diff --git a/sql/updates/world/2012_11_18_01_world_gameobject.sql b/sql/old/3.3.5a/2012_11_18_01_world_gameobject.sql index d82f9a07e7e..d82f9a07e7e 100644 --- a/sql/updates/world/2012_11_18_01_world_gameobject.sql +++ b/sql/old/3.3.5a/2012_11_18_01_world_gameobject.sql diff --git a/sql/updates/world/2012_11_18_02_world_toc.sql b/sql/old/3.3.5a/2012_11_18_02_world_toc.sql index 9262aceed7a..9262aceed7a 100644 --- a/sql/updates/world/2012_11_18_02_world_toc.sql +++ b/sql/old/3.3.5a/2012_11_18_02_world_toc.sql diff --git a/sql/updates/world/2012_11_19_00_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_19_00_world_various_fixes.sql index ca78611fc0b..ca78611fc0b 100644 --- a/sql/updates/world/2012_11_19_00_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_19_00_world_various_fixes.sql diff --git a/sql/updates/world/2012_11_19_01_world_pilgrims_bounty.sql b/sql/old/3.3.5a/2012_11_19_01_world_pilgrims_bounty.sql index 56cda092be6..56cda092be6 100644 --- a/sql/updates/world/2012_11_19_01_world_pilgrims_bounty.sql +++ b/sql/old/3.3.5a/2012_11_19_01_world_pilgrims_bounty.sql diff --git a/sql/updates/world/2012_11_19_02_world_misc.sql b/sql/old/3.3.5a/2012_11_19_02_world_misc.sql index 1f792b8da41..1f792b8da41 100644 --- a/sql/updates/world/2012_11_19_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_19_02_world_misc.sql diff --git a/sql/updates/world/2012_11_19_03_world_ysera.sql b/sql/old/3.3.5a/2012_11_19_03_world_ysera.sql index 24a729f96dd..24a729f96dd 100644 --- a/sql/updates/world/2012_11_19_03_world_ysera.sql +++ b/sql/old/3.3.5a/2012_11_19_03_world_ysera.sql diff --git a/sql/updates/world/2012_11_20_00_world_creature_text.sql b/sql/old/3.3.5a/2012_11_20_00_world_creature_text.sql index 5b89db507d8..5b89db507d8 100644 --- a/sql/updates/world/2012_11_20_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_11_20_00_world_creature_text.sql diff --git a/sql/updates/world/2012_11_21_00_world_sai.sql b/sql/old/3.3.5a/2012_11_21_00_world_sai.sql index 9cdd314bb8f..9cdd314bb8f 100644 --- a/sql/updates/world/2012_11_21_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_11_21_00_world_sai.sql diff --git a/sql/updates/world/2012_11_24_00_world_conditions.sql b/sql/old/3.3.5a/2012_11_24_00_world_conditions.sql index 1a5e5963c8e..1a5e5963c8e 100644 --- a/sql/updates/world/2012_11_24_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_11_24_00_world_conditions.sql diff --git a/sql/updates/world/2012_11_24_00_world_creature_text.sql b/sql/old/3.3.5a/2012_11_24_00_world_creature_text.sql index 60e0f9c3aa1..60e0f9c3aa1 100644 --- a/sql/updates/world/2012_11_24_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_11_24_00_world_creature_text.sql diff --git a/sql/updates/world/2012_11_24_01_world_quest_start_scripts.sql b/sql/old/3.3.5a/2012_11_24_01_world_quest_start_scripts.sql index 0f0506206a2..0f0506206a2 100644 --- a/sql/updates/world/2012_11_24_01_world_quest_start_scripts.sql +++ b/sql/old/3.3.5a/2012_11_24_01_world_quest_start_scripts.sql diff --git a/sql/updates/world/2012_11_24_02_world_creature_text.sql b/sql/old/3.3.5a/2012_11_24_02_world_creature_text.sql index 8797039d967..8797039d967 100644 --- a/sql/updates/world/2012_11_24_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_11_24_02_world_creature_text.sql diff --git a/sql/updates/world/2012_11_24_02_world_gossip_menu_option.sql b/sql/old/3.3.5a/2012_11_24_02_world_gossip_menu_option.sql index e6f9ab551d3..e6f9ab551d3 100644 --- a/sql/updates/world/2012_11_24_02_world_gossip_menu_option.sql +++ b/sql/old/3.3.5a/2012_11_24_02_world_gossip_menu_option.sql diff --git a/sql/updates/world/2012_11_24_03_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_24_03_world_various_fixes.sql index dfa2d277564..dfa2d277564 100644 --- a/sql/updates/world/2012_11_24_03_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_24_03_world_various_fixes.sql diff --git a/sql/updates/world/2012_11_24_04_world_sai.sql b/sql/old/3.3.5a/2012_11_24_04_world_sai.sql index 76cf4c18963..76cf4c18963 100644 --- a/sql/updates/world/2012_11_24_04_world_sai.sql +++ b/sql/old/3.3.5a/2012_11_24_04_world_sai.sql diff --git a/sql/updates/world/2012_11_25_00_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_25_00_world_various_fixes.sql index 3aabc755dde..3aabc755dde 100644 --- a/sql/updates/world/2012_11_25_00_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_25_00_world_various_fixes.sql diff --git a/sql/updates/world/2012_11_25_01_world_various_fixes.sql b/sql/old/3.3.5a/2012_11_25_01_world_various_fixes.sql index 6114451174a..6114451174a 100644 --- a/sql/updates/world/2012_11_25_01_world_various_fixes.sql +++ b/sql/old/3.3.5a/2012_11_25_01_world_various_fixes.sql diff --git a/sql/updates/world/2012_11_26_02_world_conditions.sql b/sql/old/3.3.5a/2012_11_26_02_world_conditions.sql index 861e999236d..861e999236d 100644 --- a/sql/updates/world/2012_11_26_02_world_conditions.sql +++ b/sql/old/3.3.5a/2012_11_26_02_world_conditions.sql diff --git a/sql/updates/world/2012_11_26_03_world_misc.sql b/sql/old/3.3.5a/2012_11_26_03_world_misc.sql index 5a6140e6bf3..5a6140e6bf3 100644 --- a/sql/updates/world/2012_11_26_03_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_26_03_world_misc.sql diff --git a/sql/updates/world/2012_11_27_00_world_misc.sql b/sql/old/3.3.5a/2012_11_27_00_world_misc.sql index 8c815a856fd..8c815a856fd 100644 --- a/sql/updates/world/2012_11_27_00_world_misc.sql +++ b/sql/old/3.3.5a/2012_11_27_00_world_misc.sql diff --git a/sql/updates/world/2012_11_27_01_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2012_11_27_01_world_achievement_criteria_data.sql index 65cfced17f3..65cfced17f3 100644 --- a/sql/updates/world/2012_11_27_01_world_achievement_criteria_data.sql +++ b/sql/old/3.3.5a/2012_11_27_01_world_achievement_criteria_data.sql diff --git a/sql/updates/world/2012_11_30_00_world_spell_script_names.sql b/sql/old/3.3.5a/2012_11_30_00_world_spell_script_names.sql index cedee2fe51d..cedee2fe51d 100644 --- a/sql/updates/world/2012_11_30_00_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_11_30_00_world_spell_script_names.sql diff --git a/sql/updates/world/2012_12_01_00_world_assembly_of_iron.sql b/sql/old/3.3.5a/2012_12_01_00_world_assembly_of_iron.sql index 090780d2bd4..090780d2bd4 100644 --- a/sql/updates/world/2012_12_01_00_world_assembly_of_iron.sql +++ b/sql/old/3.3.5a/2012_12_01_00_world_assembly_of_iron.sql diff --git a/sql/updates/world/2012_12_01_01_world_misc.sql b/sql/old/3.3.5a/2012_12_01_01_world_misc.sql index 7523484d179..7523484d179 100644 --- a/sql/updates/world/2012_12_01_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_01_01_world_misc.sql diff --git a/sql/updates/world/2012_12_01_02_world_creature_text.sql b/sql/old/3.3.5a/2012_12_01_02_world_creature_text.sql index 6d4b50b9e88..6d4b50b9e88 100644 --- a/sql/updates/world/2012_12_01_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_01_02_world_creature_text.sql diff --git a/sql/updates/world/2012_12_01_03_world_ulduar_creature_text.sql b/sql/old/3.3.5a/2012_12_01_03_world_ulduar_creature_text.sql index 82d93d7b7ae..82d93d7b7ae 100644 --- a/sql/updates/world/2012_12_01_03_world_ulduar_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_01_03_world_ulduar_creature_text.sql diff --git a/sql/updates/world/2012_12_01_04_world_spelldifficulty_dbc.sql b/sql/old/3.3.5a/2012_12_01_04_world_spelldifficulty_dbc.sql index fe5df812c71..fe5df812c71 100644 --- a/sql/updates/world/2012_12_01_04_world_spelldifficulty_dbc.sql +++ b/sql/old/3.3.5a/2012_12_01_04_world_spelldifficulty_dbc.sql diff --git a/sql/updates/world/2012_12_01_05_world_creature_template.sql b/sql/old/3.3.5a/2012_12_01_05_world_creature_template.sql index aa2c6ebb898..aa2c6ebb898 100644 --- a/sql/updates/world/2012_12_01_05_world_creature_template.sql +++ b/sql/old/3.3.5a/2012_12_01_05_world_creature_template.sql diff --git a/sql/updates/world/2012_12_02_00_world_game_object.sql b/sql/old/3.3.5a/2012_12_02_00_world_game_object.sql index 3205159a703..3205159a703 100644 --- a/sql/updates/world/2012_12_02_00_world_game_object.sql +++ b/sql/old/3.3.5a/2012_12_02_00_world_game_object.sql diff --git a/sql/updates/world/2012_12_02_01_world_creature_text.sql b/sql/old/3.3.5a/2012_12_02_01_world_creature_text.sql index bd98fc8527c..bd98fc8527c 100644 --- a/sql/updates/world/2012_12_02_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_02_01_world_creature_text.sql diff --git a/sql/updates/world/2012_12_02_02_world_waypoint_data.sql b/sql/old/3.3.5a/2012_12_02_02_world_waypoint_data.sql index 6413ad00b62..6413ad00b62 100644 --- a/sql/updates/world/2012_12_02_02_world_waypoint_data.sql +++ b/sql/old/3.3.5a/2012_12_02_02_world_waypoint_data.sql diff --git a/sql/updates/characters/2012_12_03_00_character_character_queststatus_monthly.sql b/sql/old/3.3.5a/2012_12_03_00_character_character_queststatus_monthly.sql index 256bb1f7ad6..256bb1f7ad6 100644 --- a/sql/updates/characters/2012_12_03_00_character_character_queststatus_monthly.sql +++ b/sql/old/3.3.5a/2012_12_03_00_character_character_queststatus_monthly.sql diff --git a/sql/updates/world/2012_12_04_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_04_00_world_creature_text.sql index 654ed11de4f..654ed11de4f 100644 --- a/sql/updates/world/2012_12_04_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_04_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_04_01_world_quest_start_scripts.sql b/sql/old/3.3.5a/2012_12_04_01_world_quest_start_scripts.sql index f2ac40c7880..f2ac40c7880 100644 --- a/sql/updates/world/2012_12_04_01_world_quest_start_scripts.sql +++ b/sql/old/3.3.5a/2012_12_04_01_world_quest_start_scripts.sql diff --git a/sql/updates/world/2012_12_04_02_world_reputation_reward_rate.sql b/sql/old/3.3.5a/2012_12_04_02_world_reputation_reward_rate.sql index a6b58583532..a6b58583532 100644 --- a/sql/updates/world/2012_12_04_02_world_reputation_reward_rate.sql +++ b/sql/old/3.3.5a/2012_12_04_02_world_reputation_reward_rate.sql diff --git a/sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql b/sql/old/3.3.5a/2012_12_04_03_world_reputation_reward_rate.sql index 9f8341ea464..9f8341ea464 100644 --- a/sql/updates/world/2012_12_04_03_world_reputation_reward_rate.sql +++ b/sql/old/3.3.5a/2012_12_04_03_world_reputation_reward_rate.sql diff --git a/sql/updates/world/2012_12_04_04_world_creature_text.sql b/sql/old/3.3.5a/2012_12_04_04_world_creature_text.sql index 1cf52a1417f..1cf52a1417f 100644 --- a/sql/updates/world/2012_12_04_04_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_04_04_world_creature_text.sql diff --git a/sql/updates/world/2012_12_04_05_world_spell_script_names.sql b/sql/old/3.3.5a/2012_12_04_05_world_spell_script_names.sql index f325ac731d4..f325ac731d4 100644 --- a/sql/updates/world/2012_12_04_05_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_12_04_05_world_spell_script_names.sql diff --git a/sql/updates/world/2012_12_04_06_world_spell_creature_text.sql b/sql/old/3.3.5a/2012_12_04_06_world_spell_creature_text.sql index 04f10fa494f..04f10fa494f 100644 --- a/sql/updates/world/2012_12_04_06_world_spell_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_04_06_world_spell_creature_text.sql diff --git a/sql/updates/world/2012_12_05_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_05_00_world_creature_text.sql index b3b382e46e2..b3b382e46e2 100644 --- a/sql/updates/world/2012_12_05_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_05_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_06_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_06_00_world_creature_text.sql index c0fec8e041e..c0fec8e041e 100644 --- a/sql/updates/world/2012_12_06_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_06_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_07_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_07_00_world_creature_text.sql index 6763834d668..6763834d668 100644 --- a/sql/updates/world/2012_12_07_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_07_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_07_00_world_script_texts.sql b/sql/old/3.3.5a/2012_12_07_00_world_script_texts.sql index b1362aac796..b1362aac796 100644 --- a/sql/updates/world/2012_12_07_00_world_script_texts.sql +++ b/sql/old/3.3.5a/2012_12_07_00_world_script_texts.sql diff --git a/sql/updates/world/2012_12_07_01_world_misc.sql b/sql/old/3.3.5a/2012_12_07_01_world_misc.sql index aaee366bfce..aaee366bfce 100644 --- a/sql/updates/world/2012_12_07_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_07_01_world_misc.sql diff --git a/sql/updates/world/2012_12_07_02_world_tracker_pitcrawler.sql b/sql/old/3.3.5a/2012_12_07_02_world_tracker_pitcrawler.sql index 345a61cb7f5..345a61cb7f5 100644 --- a/sql/updates/world/2012_12_07_02_world_tracker_pitcrawler.sql +++ b/sql/old/3.3.5a/2012_12_07_02_world_tracker_pitcrawler.sql diff --git a/sql/updates/world/2012_12_07_03_world_tracker_trista.sql b/sql/old/3.3.5a/2012_12_07_03_world_tracker_trista.sql index b717f4e53e8..b717f4e53e8 100644 --- a/sql/updates/world/2012_12_07_03_world_tracker_trista.sql +++ b/sql/old/3.3.5a/2012_12_07_03_world_tracker_trista.sql diff --git a/sql/updates/world/2012_12_07_04_world_misc.sql b/sql/old/3.3.5a/2012_12_07_04_world_misc.sql index fb4c466d91c..fb4c466d91c 100644 --- a/sql/updates/world/2012_12_07_04_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_07_04_world_misc.sql diff --git a/sql/updates/world/2012_12_07_05_world_creature_text.sql b/sql/old/3.3.5a/2012_12_07_05_world_creature_text.sql index 8e3e2cd737f..8e3e2cd737f 100644 --- a/sql/updates/world/2012_12_07_05_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_07_05_world_creature_text.sql diff --git a/sql/updates/world/2012_12_07_06_world_sai.sql b/sql/old/3.3.5a/2012_12_07_06_world_sai.sql index d0d1be35766..d0d1be35766 100644 --- a/sql/updates/world/2012_12_07_06_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_07_06_world_sai.sql diff --git a/sql/updates/world/2012_12_07_07_world_sai.sql b/sql/old/3.3.5a/2012_12_07_07_world_sai.sql index d9acb9c310c..d9acb9c310c 100644 --- a/sql/updates/world/2012_12_07_07_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_07_07_world_sai.sql diff --git a/sql/updates/world/2012_12_07_08_world_misc.sql b/sql/old/3.3.5a/2012_12_07_08_world_misc.sql index a696ba401cc..a696ba401cc 100644 --- a/sql/updates/world/2012_12_07_08_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_07_08_world_misc.sql diff --git a/sql/updates/world/2012_12_07_09_world_db_script_string.sql b/sql/old/3.3.5a/2012_12_07_09_world_db_script_string.sql index 4880b84dff0..4880b84dff0 100644 --- a/sql/updates/world/2012_12_07_09_world_db_script_string.sql +++ b/sql/old/3.3.5a/2012_12_07_09_world_db_script_string.sql diff --git a/sql/updates/world/2012_12_08_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_08_00_world_creature_text.sql index 5a5cd579e2b..5a5cd579e2b 100644 --- a/sql/updates/world/2012_12_08_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_08_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_08_01_world_sai.sql b/sql/old/3.3.5a/2012_12_08_01_world_sai.sql index 2880b01d07a..2880b01d07a 100644 --- a/sql/updates/world/2012_12_08_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_08_01_world_sai.sql diff --git a/sql/updates/world/2012_12_09_00_world_conditions.sql b/sql/old/3.3.5a/2012_12_09_00_world_conditions.sql index dbb3dac7fc3..dbb3dac7fc3 100644 --- a/sql/updates/world/2012_12_09_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_09_00_world_conditions.sql diff --git a/sql/updates/world/2012_12_09_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_09_00_world_creature_text.sql index 6d850191938..6d850191938 100644 --- a/sql/updates/world/2012_12_09_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_09_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_09_01_world_misc.sql b/sql/old/3.3.5a/2012_12_09_01_world_misc.sql index 7c8bdfbb1c5..7c8bdfbb1c5 100644 --- a/sql/updates/world/2012_12_09_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_09_01_world_misc.sql diff --git a/sql/updates/world/2012_12_09_02_world_quest_template.sql b/sql/old/3.3.5a/2012_12_09_02_world_quest_template.sql index 52d0202d2a1..52d0202d2a1 100644 --- a/sql/updates/world/2012_12_09_02_world_quest_template.sql +++ b/sql/old/3.3.5a/2012_12_09_02_world_quest_template.sql diff --git a/sql/updates/world/2012_12_10_00_world_smart_scripts.sql b/sql/old/3.3.5a/2012_12_10_00_world_smart_scripts.sql index ed0ee9bf764..ed0ee9bf764 100644 --- a/sql/updates/world/2012_12_10_00_world_smart_scripts.sql +++ b/sql/old/3.3.5a/2012_12_10_00_world_smart_scripts.sql diff --git a/sql/updates/world/2012_12_10_01_world_spell_script_names.sql b/sql/old/3.3.5a/2012_12_10_01_world_spell_script_names.sql index bc3684011e8..bc3684011e8 100644 --- a/sql/updates/world/2012_12_10_01_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_12_10_01_world_spell_script_names.sql diff --git a/sql/updates/world/2012_12_10_02_world_spawns_waypoints.sql b/sql/old/3.3.5a/2012_12_10_02_world_spawns_waypoints.sql index 68613f3aaa9..68613f3aaa9 100644 --- a/sql/updates/world/2012_12_10_02_world_spawns_waypoints.sql +++ b/sql/old/3.3.5a/2012_12_10_02_world_spawns_waypoints.sql diff --git a/sql/updates/world/2012_12_13_00_world.sql b/sql/old/3.3.5a/2012_12_13_00_world.sql index ab27796f933..ab27796f933 100644 --- a/sql/updates/world/2012_12_13_00_world.sql +++ b/sql/old/3.3.5a/2012_12_13_00_world.sql diff --git a/sql/updates/world/2012_12_14_00_world_conditions.sql b/sql/old/3.3.5a/2012_12_14_00_world_conditions.sql index 6b6fbfd02c0..6b6fbfd02c0 100644 --- a/sql/updates/world/2012_12_14_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_14_00_world_conditions.sql diff --git a/sql/updates/world/2012_12_14_01_world_waypoint_data.sql b/sql/old/3.3.5a/2012_12_14_01_world_waypoint_data.sql index e3589c53340..e3589c53340 100644 --- a/sql/updates/world/2012_12_14_01_world_waypoint_data.sql +++ b/sql/old/3.3.5a/2012_12_14_01_world_waypoint_data.sql diff --git a/sql/updates/world/2012_12_14_02_world_misc.sql b/sql/old/3.3.5a/2012_12_14_02_world_misc.sql index 29aa47909e1..29aa47909e1 100644 --- a/sql/updates/world/2012_12_14_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_14_02_world_misc.sql diff --git a/sql/updates/world/2012_12_14_03_world_npc_spellclick_spells.sql b/sql/old/3.3.5a/2012_12_14_03_world_npc_spellclick_spells.sql index 2669abbc562..2669abbc562 100644 --- a/sql/updates/world/2012_12_14_03_world_npc_spellclick_spells.sql +++ b/sql/old/3.3.5a/2012_12_14_03_world_npc_spellclick_spells.sql diff --git a/sql/updates/world/2012_12_14_04_world_misc.sql b/sql/old/3.3.5a/2012_12_14_04_world_misc.sql index 2cd99cfb12a..2cd99cfb12a 100644 --- a/sql/updates/world/2012_12_14_04_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_14_04_world_misc.sql diff --git a/sql/updates/world/2012_12_14_05_world_spell_script_names.sql b/sql/old/3.3.5a/2012_12_14_05_world_spell_script_names.sql index 6d6ab651365..6d6ab651365 100644 --- a/sql/updates/world/2012_12_14_05_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2012_12_14_05_world_spell_script_names.sql diff --git a/sql/updates/world/2012_12_15_00_world_waypoint_data.sql b/sql/old/3.3.5a/2012_12_15_00_world_waypoint_data.sql index c63180ebe5e..c63180ebe5e 100644 --- a/sql/updates/world/2012_12_15_00_world_waypoint_data.sql +++ b/sql/old/3.3.5a/2012_12_15_00_world_waypoint_data.sql diff --git a/sql/updates/world/2012_12_15_01_world_sai.sql b/sql/old/3.3.5a/2012_12_15_01_world_sai.sql index 6d43bedc446..6d43bedc446 100644 --- a/sql/updates/world/2012_12_15_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_15_01_world_sai.sql diff --git a/sql/updates/world/2012_12_15_02_world_sai.sql b/sql/old/3.3.5a/2012_12_15_02_world_sai.sql index bf092bfb88d..bf092bfb88d 100644 --- a/sql/updates/world/2012_12_15_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_15_02_world_sai.sql diff --git a/sql/updates/world/2012_12_15_03_world_quest_end_scripts.sql b/sql/old/3.3.5a/2012_12_15_03_world_quest_end_scripts.sql index 91838bda93d..91838bda93d 100644 --- a/sql/updates/world/2012_12_15_03_world_quest_end_scripts.sql +++ b/sql/old/3.3.5a/2012_12_15_03_world_quest_end_scripts.sql diff --git a/sql/updates/world/2012_12_16_00_world_creature_addon.sql b/sql/old/3.3.5a/2012_12_16_00_world_creature_addon.sql index a79bb407321..a79bb407321 100644 --- a/sql/updates/world/2012_12_16_00_world_creature_addon.sql +++ b/sql/old/3.3.5a/2012_12_16_00_world_creature_addon.sql diff --git a/sql/updates/world/2012_12_16_01_world_npc_vendor.sql b/sql/old/3.3.5a/2012_12_16_01_world_npc_vendor.sql index 0e5ed38c88d..0e5ed38c88d 100644 --- a/sql/updates/world/2012_12_16_01_world_npc_vendor.sql +++ b/sql/old/3.3.5a/2012_12_16_01_world_npc_vendor.sql diff --git a/sql/updates/world/2012_12_16_02_world_creature_text.sql b/sql/old/3.3.5a/2012_12_16_02_world_creature_text.sql index f2d605469f8..f2d605469f8 100644 --- a/sql/updates/world/2012_12_16_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_16_02_world_creature_text.sql diff --git a/sql/updates/world/2012_12_16_03_world_sai.sql b/sql/old/3.3.5a/2012_12_16_03_world_sai.sql index 40b1e32dbeb..40b1e32dbeb 100644 --- a/sql/updates/world/2012_12_16_03_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_16_03_world_sai.sql diff --git a/sql/updates/world/2012_12_17_00_world_creature_template.sql b/sql/old/3.3.5a/2012_12_17_00_world_creature_template.sql index dfe9132e7a6..dfe9132e7a6 100644 --- a/sql/updates/world/2012_12_17_00_world_creature_template.sql +++ b/sql/old/3.3.5a/2012_12_17_00_world_creature_template.sql diff --git a/sql/updates/world/2012_12_17_00_world_song_of_wind_and_water.sql b/sql/old/3.3.5a/2012_12_17_00_world_song_of_wind_and_water.sql index 52c80334c0c..52c80334c0c 100644 --- a/sql/updates/world/2012_12_17_00_world_song_of_wind_and_water.sql +++ b/sql/old/3.3.5a/2012_12_17_00_world_song_of_wind_and_water.sql diff --git a/sql/updates/world/2012_12_17_00_world_spell_linked_spell.sql b/sql/old/3.3.5a/2012_12_17_00_world_spell_linked_spell.sql index a2cfc7073d0..a2cfc7073d0 100644 --- a/sql/updates/world/2012_12_17_00_world_spell_linked_spell.sql +++ b/sql/old/3.3.5a/2012_12_17_00_world_spell_linked_spell.sql diff --git a/sql/updates/characters/2012_12_18_00_character_worldstates.sql b/sql/old/3.3.5a/2012_12_18_00_character_worldstates.sql index 98fabde6776..98fabde6776 100644 --- a/sql/updates/characters/2012_12_18_00_character_worldstates.sql +++ b/sql/old/3.3.5a/2012_12_18_00_character_worldstates.sql diff --git a/sql/updates/world/2012_12_18_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_18_00_world_creature_text.sql index 1cf9211343f..1cf9211343f 100644 --- a/sql/updates/world/2012_12_18_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_18_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_18_00_world_waking_the_sleeper.sql b/sql/old/3.3.5a/2012_12_18_00_world_waking_the_sleeper.sql index 4f8a203100d..4f8a203100d 100644 --- a/sql/updates/world/2012_12_18_00_world_waking_the_sleeper.sql +++ b/sql/old/3.3.5a/2012_12_18_00_world_waking_the_sleeper.sql diff --git a/sql/updates/world/2012_12_18_01_world_creature_text.sql b/sql/old/3.3.5a/2012_12_18_01_world_creature_text.sql index 24779f67fc7..24779f67fc7 100644 --- a/sql/updates/world/2012_12_18_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_18_01_world_creature_text.sql diff --git a/sql/updates/world/2012_12_18_02_world_misc.sql b/sql/old/3.3.5a/2012_12_18_02_world_misc.sql index 5df6ef8eb95..5df6ef8eb95 100644 --- a/sql/updates/world/2012_12_18_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_18_02_world_misc.sql diff --git a/sql/updates/world/2012_12_18_02_world_sai.sql b/sql/old/3.3.5a/2012_12_18_02_world_sai.sql index 0843285550f..0843285550f 100644 --- a/sql/updates/world/2012_12_18_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_18_02_world_sai.sql diff --git a/sql/updates/world/2012_12_19_00_world_sai.sql b/sql/old/3.3.5a/2012_12_19_00_world_sai.sql index e11891cdfbd..e11891cdfbd 100644 --- a/sql/updates/world/2012_12_19_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_19_00_world_sai.sql diff --git a/sql/updates/world/2012_12_19_01_world_viscidus.sql b/sql/old/3.3.5a/2012_12_19_01_world_viscidus.sql index 16d33b80b8f..16d33b80b8f 100644 --- a/sql/updates/world/2012_12_19_01_world_viscidus.sql +++ b/sql/old/3.3.5a/2012_12_19_01_world_viscidus.sql diff --git a/sql/updates/world/2012_12_19_02_world_sai.sql b/sql/old/3.3.5a/2012_12_19_02_world_sai.sql index c6367e1a8ca..c6367e1a8ca 100644 --- a/sql/updates/world/2012_12_19_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_19_02_world_sai.sql diff --git a/sql/updates/characters/2012_12_20_00_characters_create_item_loot.sql b/sql/old/3.3.5a/2012_12_20_00_characters_create_item_loot.sql index 3c1529e8bdf..3c1529e8bdf 100644 --- a/sql/updates/characters/2012_12_20_00_characters_create_item_loot.sql +++ b/sql/old/3.3.5a/2012_12_20_00_characters_create_item_loot.sql diff --git a/sql/updates/world/2012_12_20_00_world_conditions.sql b/sql/old/3.3.5a/2012_12_20_00_world_conditions.sql index 53fc5733e53..53fc5733e53 100644 --- a/sql/updates/world/2012_12_20_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_20_00_world_conditions.sql diff --git a/sql/updates/world/2012_12_20_01_world_conditions.sql b/sql/old/3.3.5a/2012_12_20_01_world_conditions.sql index 9d1851305a3..9d1851305a3 100644 --- a/sql/updates/world/2012_12_20_01_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_20_01_world_conditions.sql diff --git a/sql/updates/world/2012_12_20_02_world_misc.sql b/sql/old/3.3.5a/2012_12_20_02_world_misc.sql index c04965d8258..c04965d8258 100644 --- a/sql/updates/world/2012_12_20_02_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_20_02_world_misc.sql diff --git a/sql/updates/world/2012_12_20_03_world_conditions.sql b/sql/old/3.3.5a/2012_12_20_03_world_conditions.sql index f07b18ed2e4..f07b18ed2e4 100644 --- a/sql/updates/world/2012_12_20_03_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_20_03_world_conditions.sql diff --git a/sql/updates/world/2012_12_21_00_world_conditions.sql b/sql/old/3.3.5a/2012_12_21_00_world_conditions.sql index eddf541eaf3..eddf541eaf3 100644 --- a/sql/updates/world/2012_12_21_00_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_21_00_world_conditions.sql diff --git a/sql/updates/world/2012_12_21_01_world_conditions.sql b/sql/old/3.3.5a/2012_12_21_01_world_conditions.sql index fdc5becd963..fdc5becd963 100644 --- a/sql/updates/world/2012_12_21_01_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_21_01_world_conditions.sql diff --git a/sql/updates/world/2012_12_22_01_world_sai.sql b/sql/old/3.3.5a/2012_12_22_01_world_sai.sql index e2a61426679..e2a61426679 100644 --- a/sql/updates/world/2012_12_22_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_22_01_world_sai.sql diff --git a/sql/updates/world/2012_12_22_02_world_the_crusaders_pinnacle.sql b/sql/old/3.3.5a/2012_12_22_02_world_the_crusaders_pinnacle.sql index 5debd41a160..5debd41a160 100644 --- a/sql/updates/world/2012_12_22_02_world_the_crusaders_pinnacle.sql +++ b/sql/old/3.3.5a/2012_12_22_02_world_the_crusaders_pinnacle.sql diff --git a/sql/updates/world/2012_12_23_00_world_creature_text.sql b/sql/old/3.3.5a/2012_12_23_00_world_creature_text.sql index 37b4d66b3fe..37b4d66b3fe 100644 --- a/sql/updates/world/2012_12_23_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_23_00_world_creature_text.sql diff --git a/sql/updates/world/2012_12_23_01_world_creature_text.sql b/sql/old/3.3.5a/2012_12_23_01_world_creature_text.sql index b663c5269e9..b663c5269e9 100644 --- a/sql/updates/world/2012_12_23_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_23_01_world_creature_text.sql diff --git a/sql/updates/world/2012_12_23_02_world_trinity_string.sql b/sql/old/3.3.5a/2012_12_23_02_world_trinity_string.sql index ac99945d5a5..ac99945d5a5 100644 --- a/sql/updates/world/2012_12_23_02_world_trinity_string.sql +++ b/sql/old/3.3.5a/2012_12_23_02_world_trinity_string.sql diff --git a/sql/updates/world/2012_12_23_03_world_misc.sql b/sql/old/3.3.5a/2012_12_23_03_world_misc.sql index c9a42df10dd..c9a42df10dd 100644 --- a/sql/updates/world/2012_12_23_03_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_23_03_world_misc.sql diff --git a/sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql b/sql/old/3.3.5a/2012_12_24_00_world_defending_wyrmrest_temple.sql index edf1f887d1c..edf1f887d1c 100644 --- a/sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql +++ b/sql/old/3.3.5a/2012_12_24_00_world_defending_wyrmrest_temple.sql diff --git a/sql/updates/world/2012_12_24_01_world_sai.sql b/sql/old/3.3.5a/2012_12_24_01_world_sai.sql index d151ee4aa2c..d151ee4aa2c 100644 --- a/sql/updates/world/2012_12_24_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_24_01_world_sai.sql diff --git a/sql/updates/world/2012_12_24_02_world_sai.sql b/sql/old/3.3.5a/2012_12_24_02_world_sai.sql index 03d0a9ef5c6..03d0a9ef5c6 100644 --- a/sql/updates/world/2012_12_24_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_24_02_world_sai.sql diff --git a/sql/updates/world/2012_12_24_03_world_sai.sql b/sql/old/3.3.5a/2012_12_24_03_world_sai.sql index f89f3c968aa..f89f3c968aa 100644 --- a/sql/updates/world/2012_12_24_03_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_24_03_world_sai.sql diff --git a/sql/updates/world/2012_12_24_04_world_creature.sql b/sql/old/3.3.5a/2012_12_24_04_world_creature.sql index 42f69d97a9e..42f69d97a9e 100644 --- a/sql/updates/world/2012_12_24_04_world_creature.sql +++ b/sql/old/3.3.5a/2012_12_24_04_world_creature.sql diff --git a/sql/updates/world/2012_12_24_05_world_object.sql b/sql/old/3.3.5a/2012_12_24_05_world_object.sql index 2b9947a6bd5..2b9947a6bd5 100644 --- a/sql/updates/world/2012_12_24_05_world_object.sql +++ b/sql/old/3.3.5a/2012_12_24_05_world_object.sql diff --git a/sql/updates/world/2012_12_24_06_world_reputation.sql b/sql/old/3.3.5a/2012_12_24_06_world_reputation.sql index 9320d76365d..9320d76365d 100644 --- a/sql/updates/world/2012_12_24_06_world_reputation.sql +++ b/sql/old/3.3.5a/2012_12_24_06_world_reputation.sql diff --git a/sql/updates/world/2012_12_24_07_world_sai.sql b/sql/old/3.3.5a/2012_12_24_07_world_sai.sql index 3cce37295fd..3cce37295fd 100644 --- a/sql/updates/world/2012_12_24_07_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_24_07_world_sai.sql diff --git a/sql/updates/world/2012_12_24_08_world_conditions.sql b/sql/old/3.3.5a/2012_12_24_08_world_conditions.sql index ad641203453..ad641203453 100644 --- a/sql/updates/world/2012_12_24_08_world_conditions.sql +++ b/sql/old/3.3.5a/2012_12_24_08_world_conditions.sql diff --git a/sql/updates/world/2012_12_24_09_world_sai.sql b/sql/old/3.3.5a/2012_12_24_09_world_sai.sql index d75dd937598..d75dd937598 100644 --- a/sql/updates/world/2012_12_24_09_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_24_09_world_sai.sql diff --git a/sql/updates/world/2012_12_25_00_world_sai.sql b/sql/old/3.3.5a/2012_12_25_00_world_sai.sql index 33363d33573..33363d33573 100644 --- a/sql/updates/world/2012_12_25_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_25_00_world_sai.sql diff --git a/sql/updates/world/2012_12_25_01_world_sai.sql b/sql/old/3.3.5a/2012_12_25_01_world_sai.sql index cad0ce2aec3..cad0ce2aec3 100644 --- a/sql/updates/world/2012_12_25_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_25_01_world_sai.sql diff --git a/sql/updates/world/2012_12_25_02_world_sai.sql b/sql/old/3.3.5a/2012_12_25_02_world_sai.sql index 35ac4ebb97b..35ac4ebb97b 100644 --- a/sql/updates/world/2012_12_25_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_25_02_world_sai.sql diff --git a/sql/updates/world/2012_12_25_03_world_sai.sql b/sql/old/3.3.5a/2012_12_25_03_world_sai.sql index 2a7553aabb3..2a7553aabb3 100644 --- a/sql/updates/world/2012_12_25_03_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_25_03_world_sai.sql diff --git a/sql/updates/world/2012_12_25_04_world_sai.sql b/sql/old/3.3.5a/2012_12_25_04_world_sai.sql index 46b2c4c2fd1..46b2c4c2fd1 100644 --- a/sql/updates/world/2012_12_25_04_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_25_04_world_sai.sql diff --git a/sql/updates/world/2012_12_26_01_world_creature_text.sql b/sql/old/3.3.5a/2012_12_26_01_world_creature_text.sql index ae4170ae5a8..ae4170ae5a8 100644 --- a/sql/updates/world/2012_12_26_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2012_12_26_01_world_creature_text.sql diff --git a/sql/updates/world/2012_12_26_02_world_sai.sql b/sql/old/3.3.5a/2012_12_26_02_world_sai.sql index b88b4044edb..b88b4044edb 100644 --- a/sql/updates/world/2012_12_26_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_02_world_sai.sql diff --git a/sql/updates/world/2012_12_26_03_world_sai.sql b/sql/old/3.3.5a/2012_12_26_03_world_sai.sql index 2e9ed5090e0..2e9ed5090e0 100644 --- a/sql/updates/world/2012_12_26_03_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_03_world_sai.sql diff --git a/sql/updates/world/2012_12_26_04_world_sai.sql b/sql/old/3.3.5a/2012_12_26_04_world_sai.sql index a29c8a22fdc..a29c8a22fdc 100644 --- a/sql/updates/world/2012_12_26_04_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_04_world_sai.sql diff --git a/sql/updates/world/2012_12_26_05_world_sai.sql b/sql/old/3.3.5a/2012_12_26_05_world_sai.sql index 143f1e9bdb0..143f1e9bdb0 100644 --- a/sql/updates/world/2012_12_26_05_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_05_world_sai.sql diff --git a/sql/updates/world/2012_12_26_06_world_sai.sql b/sql/old/3.3.5a/2012_12_26_06_world_sai.sql index 184282fe907..184282fe907 100644 --- a/sql/updates/world/2012_12_26_06_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_06_world_sai.sql diff --git a/sql/updates/world/2012_12_26_07_world_game_event.sql b/sql/old/3.3.5a/2012_12_26_07_world_game_event.sql index 21dcf12e1c4..21dcf12e1c4 100644 --- a/sql/updates/world/2012_12_26_07_world_game_event.sql +++ b/sql/old/3.3.5a/2012_12_26_07_world_game_event.sql diff --git a/sql/updates/world/2012_12_26_08_world_sai.sql b/sql/old/3.3.5a/2012_12_26_08_world_sai.sql index 8fde794613e..8fde794613e 100644 --- a/sql/updates/world/2012_12_26_08_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_08_world_sai.sql diff --git a/sql/updates/world/2012_12_26_09_world_sai.sql b/sql/old/3.3.5a/2012_12_26_09_world_sai.sql index fe81c15fb3a..fe81c15fb3a 100644 --- a/sql/updates/world/2012_12_26_09_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_09_world_sai.sql diff --git a/sql/updates/world/2012_12_26_10_world_sai.sql b/sql/old/3.3.5a/2012_12_26_10_world_sai.sql index b6b925d8255..b6b925d8255 100644 --- a/sql/updates/world/2012_12_26_10_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_10_world_sai.sql diff --git a/sql/updates/world/2012_12_26_11_world_sai.sql b/sql/old/3.3.5a/2012_12_26_11_world_sai.sql index abbdfb88c24..abbdfb88c24 100644 --- a/sql/updates/world/2012_12_26_11_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_11_world_sai.sql diff --git a/sql/updates/world/2012_12_26_12_world_quest_end_scripts.sql b/sql/old/3.3.5a/2012_12_26_12_world_quest_end_scripts.sql index 501bb796557..501bb796557 100644 --- a/sql/updates/world/2012_12_26_12_world_quest_end_scripts.sql +++ b/sql/old/3.3.5a/2012_12_26_12_world_quest_end_scripts.sql diff --git a/sql/updates/world/2012_12_26_13_world_sai.sql b/sql/old/3.3.5a/2012_12_26_13_world_sai.sql index d36affe8eb3..d36affe8eb3 100644 --- a/sql/updates/world/2012_12_26_13_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_13_world_sai.sql diff --git a/sql/updates/world/2012_12_26_14_world_sai.sql b/sql/old/3.3.5a/2012_12_26_14_world_sai.sql index 2929d590637..2929d590637 100644 --- a/sql/updates/world/2012_12_26_14_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_14_world_sai.sql diff --git a/sql/updates/world/2012_12_26_15_world_sai.sql b/sql/old/3.3.5a/2012_12_26_15_world_sai.sql index a40f73bffc8..a40f73bffc8 100644 --- a/sql/updates/world/2012_12_26_15_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_15_world_sai.sql diff --git a/sql/updates/world/2012_12_26_16_world_sai.sql b/sql/old/3.3.5a/2012_12_26_16_world_sai.sql index 39a246c9ccd..39a246c9ccd 100644 --- a/sql/updates/world/2012_12_26_16_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_16_world_sai.sql diff --git a/sql/updates/world/2012_12_26_17_world_sai.sql b/sql/old/3.3.5a/2012_12_26_17_world_sai.sql index 6f35bcc230b..6f35bcc230b 100644 --- a/sql/updates/world/2012_12_26_17_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_17_world_sai.sql diff --git a/sql/updates/world/2012_12_26_18_world_sai.sql b/sql/old/3.3.5a/2012_12_26_18_world_sai.sql index cd4989de5e0..cd4989de5e0 100644 --- a/sql/updates/world/2012_12_26_18_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_18_world_sai.sql diff --git a/sql/updates/world/2012_12_26_19_world_sai.sql b/sql/old/3.3.5a/2012_12_26_19_world_sai.sql index 5cfd2a29c62..5cfd2a29c62 100644 --- a/sql/updates/world/2012_12_26_19_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_19_world_sai.sql diff --git a/sql/updates/world/2012_12_26_20_world_sai.sql b/sql/old/3.3.5a/2012_12_26_20_world_sai.sql index 3574835ce32..3574835ce32 100644 --- a/sql/updates/world/2012_12_26_20_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_26_20_world_sai.sql diff --git a/sql/updates/world/2012_12_27_00_world_orgrims_hammer.sql b/sql/old/3.3.5a/2012_12_27_00_world_orgrims_hammer.sql index a7c8af76fa0..a7c8af76fa0 100644 --- a/sql/updates/world/2012_12_27_00_world_orgrims_hammer.sql +++ b/sql/old/3.3.5a/2012_12_27_00_world_orgrims_hammer.sql diff --git a/sql/updates/world/2012_12_27_01_world_locales_quest.sql b/sql/old/3.3.5a/2012_12_27_01_world_locales_quest.sql index 047f8bb499f..047f8bb499f 100644 --- a/sql/updates/world/2012_12_27_01_world_locales_quest.sql +++ b/sql/old/3.3.5a/2012_12_27_01_world_locales_quest.sql diff --git a/sql/updates/world/2012_12_27_02_world_locales.sql b/sql/old/3.3.5a/2012_12_27_02_world_locales.sql index 5caeb009447..5caeb009447 100644 --- a/sql/updates/world/2012_12_27_02_world_locales.sql +++ b/sql/old/3.3.5a/2012_12_27_02_world_locales.sql diff --git a/sql/updates/world/2012_12_27_03_world_sai.sql b/sql/old/3.3.5a/2012_12_27_03_world_sai.sql index acd5c931c50..acd5c931c50 100644 --- a/sql/updates/world/2012_12_27_03_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_27_03_world_sai.sql diff --git a/sql/updates/world/2012_12_27_04_world_the_shadows_vault.sql b/sql/old/3.3.5a/2012_12_27_04_world_the_shadows_vault.sql index 96d176d6d1b..96d176d6d1b 100644 --- a/sql/updates/world/2012_12_27_04_world_the_shadows_vault.sql +++ b/sql/old/3.3.5a/2012_12_27_04_world_the_shadows_vault.sql diff --git a/sql/updates/world/2012_12_28_00_world_command.sql b/sql/old/3.3.5a/2012_12_28_00_world_command.sql index 6de970d3b81..6de970d3b81 100644 --- a/sql/updates/world/2012_12_28_00_world_command.sql +++ b/sql/old/3.3.5a/2012_12_28_00_world_command.sql diff --git a/sql/updates/world/2012_12_28_01_world_misc.sql b/sql/old/3.3.5a/2012_12_28_01_world_misc.sql index 44501390d9e..44501390d9e 100644 --- a/sql/updates/world/2012_12_28_01_world_misc.sql +++ b/sql/old/3.3.5a/2012_12_28_01_world_misc.sql diff --git a/sql/updates/world/2012_12_28_02_world_sai.sql b/sql/old/3.3.5a/2012_12_28_02_world_sai.sql index 7a518449fde..7a518449fde 100644 --- a/sql/updates/world/2012_12_28_02_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_28_02_world_sai.sql diff --git a/sql/updates/world/2012_12_28_03_world_disables.sql b/sql/old/3.3.5a/2012_12_28_03_world_disables.sql index 017e3aea8c1..017e3aea8c1 100644 --- a/sql/updates/world/2012_12_28_03_world_disables.sql +++ b/sql/old/3.3.5a/2012_12_28_03_world_disables.sql diff --git a/sql/updates/world/2012_12_28_04_world_citadel_footsteps.sql b/sql/old/3.3.5a/2012_12_28_04_world_citadel_footsteps.sql index 3d0ad779dc2..3d0ad779dc2 100644 --- a/sql/updates/world/2012_12_28_04_world_citadel_footsteps.sql +++ b/sql/old/3.3.5a/2012_12_28_04_world_citadel_footsteps.sql diff --git a/sql/updates/world/2012_12_30_01_world_trinity_string.sql b/sql/old/3.3.5a/2012_12_30_01_world_trinity_string.sql index ce0578168f4..ce0578168f4 100644 --- a/sql/updates/world/2012_12_30_01_world_trinity_string.sql +++ b/sql/old/3.3.5a/2012_12_30_01_world_trinity_string.sql diff --git a/sql/updates/world/2012_12_31_00_world_sai.sql b/sql/old/3.3.5a/2012_12_31_00_world_sai.sql index 9e30c29f784..9e30c29f784 100644 --- a/sql/updates/world/2012_12_31_00_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_31_00_world_sai.sql diff --git a/sql/updates/world/2012_12_31_01_world_sai.sql b/sql/old/3.3.5a/2012_12_31_01_world_sai.sql index 96cf4d1e724..96cf4d1e724 100644 --- a/sql/updates/world/2012_12_31_01_world_sai.sql +++ b/sql/old/3.3.5a/2012_12_31_01_world_sai.sql diff --git a/sql/updates/world/2013_01_01_00_item_template_restore.sql b/sql/old/3.3.5a/2013_01_01_00_item_template_restore.sql index dc18ff71fe8..dc18ff71fe8 100644 --- a/sql/updates/world/2013_01_01_00_item_template_restore.sql +++ b/sql/old/3.3.5a/2013_01_01_00_item_template_restore.sql diff --git a/sql/updates/world/2013_01_01_01_world_creature_text.sql b/sql/old/3.3.5a/2013_01_01_01_world_creature_text.sql index c0055f8e1d0..c0055f8e1d0 100644 --- a/sql/updates/world/2013_01_01_01_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_01_01_world_creature_text.sql diff --git a/sql/updates/world/2013_01_02_00_world_misc.sql b/sql/old/3.3.5a/2013_01_02_00_world_misc.sql index 8527b8ab145..8527b8ab145 100644 --- a/sql/updates/world/2013_01_02_00_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_02_00_world_misc.sql diff --git a/sql/updates/world/2013_01_02_01_world_spell_script.sql b/sql/old/3.3.5a/2013_01_02_01_world_spell_script.sql index a839ca6dc7b..a839ca6dc7b 100644 --- a/sql/updates/world/2013_01_02_01_world_spell_script.sql +++ b/sql/old/3.3.5a/2013_01_02_01_world_spell_script.sql diff --git a/sql/updates/world/2013_01_02_02_world_instance_template.sql b/sql/old/3.3.5a/2013_01_02_02_world_instance_template.sql index f63a2c3ba2e..f63a2c3ba2e 100644 --- a/sql/updates/world/2013_01_02_02_world_instance_template.sql +++ b/sql/old/3.3.5a/2013_01_02_02_world_instance_template.sql diff --git a/sql/updates/world/2013_01_02_03_world_sai.sql b/sql/old/3.3.5a/2013_01_02_03_world_sai.sql index 6f6318b55bd..6f6318b55bd 100644 --- a/sql/updates/world/2013_01_02_03_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_02_03_world_sai.sql diff --git a/sql/updates/world/2013_01_02_04_world_creature.sql b/sql/old/3.3.5a/2013_01_02_04_world_creature.sql index 686909ce57e..686909ce57e 100644 --- a/sql/updates/world/2013_01_02_04_world_creature.sql +++ b/sql/old/3.3.5a/2013_01_02_04_world_creature.sql diff --git a/sql/updates/world/2013_01_02_05_eye_of_eternity.sql b/sql/old/3.3.5a/2013_01_02_05_eye_of_eternity.sql index 89cc8f08cce..89cc8f08cce 100644 --- a/sql/updates/world/2013_01_02_05_eye_of_eternity.sql +++ b/sql/old/3.3.5a/2013_01_02_05_eye_of_eternity.sql diff --git a/sql/updates/world/2013_01_02_06_world_sai.sql b/sql/old/3.3.5a/2013_01_02_06_world_sai.sql index 2ce089188d6..2ce089188d6 100644 --- a/sql/updates/world/2013_01_02_06_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_02_06_world_sai.sql diff --git a/sql/updates/world/2013_01_02_06_world_waypoints.sql b/sql/old/3.3.5a/2013_01_02_06_world_waypoints.sql index c7302a457a2..c7302a457a2 100644 --- a/sql/updates/world/2013_01_02_06_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_02_06_world_waypoints.sql diff --git a/sql/updates/world/2013_01_02_07_world_waypoints.sql b/sql/old/3.3.5a/2013_01_02_07_world_waypoints.sql index b49fd0b28a6..b49fd0b28a6 100644 --- a/sql/updates/world/2013_01_02_07_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_02_07_world_waypoints.sql diff --git a/sql/updates/world/2013_01_02_08_world_sai.sql b/sql/old/3.3.5a/2013_01_02_08_world_sai.sql index a3f0dde4658..a3f0dde4658 100644 --- a/sql/updates/world/2013_01_02_08_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_02_08_world_sai.sql diff --git a/sql/updates/world/2013_01_02_09_world_waypoints.sql b/sql/old/3.3.5a/2013_01_02_09_world_waypoints.sql index 1c2492fcce8..1c2492fcce8 100644 --- a/sql/updates/world/2013_01_02_09_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_02_09_world_waypoints.sql diff --git a/sql/updates/world/2013_01_02_10_world_sai.sql b/sql/old/3.3.5a/2013_01_02_10_world_sai.sql index 0be2c5c2d6b..0be2c5c2d6b 100644 --- a/sql/updates/world/2013_01_02_10_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_02_10_world_sai.sql diff --git a/sql/updates/world/2013_01_02_11_world_sai.sql b/sql/old/3.3.5a/2013_01_02_11_world_sai.sql index 7496a765470..7496a765470 100644 --- a/sql/updates/world/2013_01_02_11_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_02_11_world_sai.sql diff --git a/sql/updates/world/2013_01_02_12_world_go_script.sql b/sql/old/3.3.5a/2013_01_02_12_world_go_script.sql index aea0a67c47e..aea0a67c47e 100644 --- a/sql/updates/world/2013_01_02_12_world_go_script.sql +++ b/sql/old/3.3.5a/2013_01_02_12_world_go_script.sql diff --git a/sql/updates/world/2013_01_02_12_world_waypoints.sql b/sql/old/3.3.5a/2013_01_02_12_world_waypoints.sql index 6ec7875d8ef..6ec7875d8ef 100644 --- a/sql/updates/world/2013_01_02_12_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_02_12_world_waypoints.sql diff --git a/sql/updates/world/2013_01_03_00_world_gameobject_scripts.sql b/sql/old/3.3.5a/2013_01_03_00_world_gameobject_scripts.sql index 32faf4b03a0..32faf4b03a0 100644 --- a/sql/updates/world/2013_01_03_00_world_gameobject_scripts.sql +++ b/sql/old/3.3.5a/2013_01_03_00_world_gameobject_scripts.sql diff --git a/sql/updates/world/2013_01_03_01_world_sai.sql b/sql/old/3.3.5a/2013_01_03_01_world_sai.sql index 9e0e56eb645..9e0e56eb645 100644 --- a/sql/updates/world/2013_01_03_01_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_01_world_sai.sql diff --git a/sql/updates/world/2013_01_03_02_world_sai.sql b/sql/old/3.3.5a/2013_01_03_02_world_sai.sql index ecd84c96800..ecd84c96800 100644 --- a/sql/updates/world/2013_01_03_02_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_02_world_sai.sql diff --git a/sql/updates/world/2013_01_03_03_world_spelldifficulty_dbc.sql b/sql/old/3.3.5a/2013_01_03_03_world_spelldifficulty_dbc.sql index 6a41f705491..6a41f705491 100644 --- a/sql/updates/world/2013_01_03_03_world_spelldifficulty_dbc.sql +++ b/sql/old/3.3.5a/2013_01_03_03_world_spelldifficulty_dbc.sql diff --git a/sql/updates/world/2013_01_03_04_world_sai.sql b/sql/old/3.3.5a/2013_01_03_04_world_sai.sql index ccac9266af2..ccac9266af2 100644 --- a/sql/updates/world/2013_01_03_04_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_04_world_sai.sql diff --git a/sql/updates/world/2013_01_03_05_world_sai.sql b/sql/old/3.3.5a/2013_01_03_05_world_sai.sql index 9e5537835ff..9e5537835ff 100644 --- a/sql/updates/world/2013_01_03_05_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_05_world_sai.sql diff --git a/sql/updates/world/2013_01_03_06_world_sai.sql b/sql/old/3.3.5a/2013_01_03_06_world_sai.sql index e77122e908e..e77122e908e 100644 --- a/sql/updates/world/2013_01_03_06_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_06_world_sai.sql diff --git a/sql/updates/world/2013_01_03_07_world_sai.sql b/sql/old/3.3.5a/2013_01_03_07_world_sai.sql index 35a03b9078c..35a03b9078c 100644 --- a/sql/updates/world/2013_01_03_07_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_07_world_sai.sql diff --git a/sql/updates/world/2013_01_03_08_world_misc.sql b/sql/old/3.3.5a/2013_01_03_08_world_misc.sql index 816b4b4dcf6..816b4b4dcf6 100644 --- a/sql/updates/world/2013_01_03_08_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_03_08_world_misc.sql diff --git a/sql/updates/world/2013_01_03_09_world_sai.sql b/sql/old/3.3.5a/2013_01_03_09_world_sai.sql index c15eeb88843..c15eeb88843 100644 --- a/sql/updates/world/2013_01_03_09_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_03_09_world_sai.sql diff --git a/sql/updates/world/2013_01_03_10_world_gameobject.sql b/sql/old/3.3.5a/2013_01_03_10_world_gameobject.sql index 11700da1dc9..11700da1dc9 100644 --- a/sql/updates/world/2013_01_03_10_world_gameobject.sql +++ b/sql/old/3.3.5a/2013_01_03_10_world_gameobject.sql diff --git a/sql/updates/world/2013_01_03_11_world_item_template.sql b/sql/old/3.3.5a/2013_01_03_11_world_item_template.sql index df0bd5cd1e7..df0bd5cd1e7 100644 --- a/sql/updates/world/2013_01_03_11_world_item_template.sql +++ b/sql/old/3.3.5a/2013_01_03_11_world_item_template.sql diff --git a/sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql b/sql/old/3.3.5a/2013_01_03_12_world_gameobject_scripts.sql index aede83aa0c8..aede83aa0c8 100644 --- a/sql/updates/world/2013_01_03_12_world_gameobject_scripts.sql +++ b/sql/old/3.3.5a/2013_01_03_12_world_gameobject_scripts.sql diff --git a/sql/updates/world/2013_01_03_12_world_misc.sql b/sql/old/3.3.5a/2013_01_03_12_world_misc.sql index 79d2e2daea9..79d2e2daea9 100644 --- a/sql/updates/world/2013_01_03_12_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_03_12_world_misc.sql diff --git a/sql/updates/world/2013_01_03_13_world_quest_template.sql b/sql/old/3.3.5a/2013_01_03_13_world_quest_template.sql index 12adb1e94ba..12adb1e94ba 100644 --- a/sql/updates/world/2013_01_03_13_world_quest_template.sql +++ b/sql/old/3.3.5a/2013_01_03_13_world_quest_template.sql diff --git a/sql/updates/world/2013_01_03_14_world_spell_area.sql b/sql/old/3.3.5a/2013_01_03_14_world_spell_area.sql index 352fe0e9d85..352fe0e9d85 100644 --- a/sql/updates/world/2013_01_03_14_world_spell_area.sql +++ b/sql/old/3.3.5a/2013_01_03_14_world_spell_area.sql diff --git a/sql/updates/world/2013_01_03_15_world_various_fixes.sql b/sql/old/3.3.5a/2013_01_03_15_world_various_fixes.sql index d3db9afa6e5..d3db9afa6e5 100644 --- a/sql/updates/world/2013_01_03_15_world_various_fixes.sql +++ b/sql/old/3.3.5a/2013_01_03_15_world_various_fixes.sql diff --git a/sql/updates/world/2013_01_03_16_world_various_fixes.sql b/sql/old/3.3.5a/2013_01_03_16_world_various_fixes.sql index bc5f4f4b6ec..bc5f4f4b6ec 100644 --- a/sql/updates/world/2013_01_03_16_world_various_fixes.sql +++ b/sql/old/3.3.5a/2013_01_03_16_world_various_fixes.sql diff --git a/sql/updates/world/2013_01_04_00_world_creature_text.sql b/sql/old/3.3.5a/2013_01_04_00_world_creature_text.sql index ae38180e1ac..ae38180e1ac 100644 --- a/sql/updates/world/2013_01_04_00_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_04_00_world_creature_text.sql diff --git a/sql/updates/world/2013_01_04_01_world_sai.sql b/sql/old/3.3.5a/2013_01_04_01_world_sai.sql index 8e7127e5728..8e7127e5728 100644 --- a/sql/updates/world/2013_01_04_01_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_04_01_world_sai.sql diff --git a/sql/updates/world/2013_01_04_02_world_misc.sql b/sql/old/3.3.5a/2013_01_04_02_world_misc.sql index 6833a22ff23..6833a22ff23 100644 --- a/sql/updates/world/2013_01_04_02_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_04_02_world_misc.sql diff --git a/sql/updates/world/2013_01_04_02_world_novos_the_summoner.sql b/sql/old/3.3.5a/2013_01_04_02_world_novos_the_summoner.sql index 49f8b21e3a7..49f8b21e3a7 100644 --- a/sql/updates/world/2013_01_04_02_world_novos_the_summoner.sql +++ b/sql/old/3.3.5a/2013_01_04_02_world_novos_the_summoner.sql diff --git a/sql/updates/world/2013_01_05_00_world_waypoints.sql b/sql/old/3.3.5a/2013_01_05_00_world_waypoints.sql index 4a2d273c552..4a2d273c552 100644 --- a/sql/updates/world/2013_01_05_00_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_05_00_world_waypoints.sql diff --git a/sql/updates/world/2013_01_06_00_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_06_00_world_creature_addon.sql index e4412241dce..e4412241dce 100644 --- a/sql/updates/world/2013_01_06_00_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_06_00_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_06_00_world_creature_template.sql b/sql/old/3.3.5a/2013_01_06_00_world_creature_template.sql index 023dc88c870..023dc88c870 100644 --- a/sql/updates/world/2013_01_06_00_world_creature_template.sql +++ b/sql/old/3.3.5a/2013_01_06_00_world_creature_template.sql diff --git a/sql/updates/world/2013_01_06_01_world_waypoints.sql b/sql/old/3.3.5a/2013_01_06_01_world_waypoints.sql index a460d33b086..a460d33b086 100644 --- a/sql/updates/world/2013_01_06_01_world_waypoints.sql +++ b/sql/old/3.3.5a/2013_01_06_01_world_waypoints.sql diff --git a/sql/updates/world/2013_01_06_02_world_misc.sql b/sql/old/3.3.5a/2013_01_06_02_world_misc.sql index 8c24975754a..8c24975754a 100644 --- a/sql/updates/world/2013_01_06_02_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_06_02_world_misc.sql diff --git a/sql/updates/world/2013_01_06_03_world_sai.sql b/sql/old/3.3.5a/2013_01_06_03_world_sai.sql index 1cc0962781b..1cc0962781b 100644 --- a/sql/updates/world/2013_01_06_03_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_06_03_world_sai.sql diff --git a/sql/updates/world/2013_01_06_04_world_misc.sql b/sql/old/3.3.5a/2013_01_06_04_world_misc.sql index fb1e256fa1b..fb1e256fa1b 100644 --- a/sql/updates/world/2013_01_06_04_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_06_04_world_misc.sql diff --git a/sql/updates/world/2013_01_07_00_world_sai.sql b/sql/old/3.3.5a/2013_01_07_00_world_sai.sql index e289130ddef..e289130ddef 100644 --- a/sql/updates/world/2013_01_07_00_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_07_00_world_sai.sql diff --git a/sql/updates/world/2013_01_07_01_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_07_01_world_creature_addon.sql index a83bd028343..a83bd028343 100644 --- a/sql/updates/world/2013_01_07_01_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_07_01_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_07_02_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_02_world_creature_text.sql index 3e916464615..3e916464615 100644 --- a/sql/updates/world/2013_01_07_02_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_02_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_03_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_03_world_creature_text.sql index c006dc5ef99..c006dc5ef99 100644 --- a/sql/updates/world/2013_01_07_03_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_03_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_04_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_04_world_creature_text.sql index 6fd1d3b95a7..6fd1d3b95a7 100644 --- a/sql/updates/world/2013_01_07_04_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_04_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_05_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_05_world_creature_text.sql index d9d91e784ba..d9d91e784ba 100644 --- a/sql/updates/world/2013_01_07_05_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_05_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_06_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_06_world_creature_text.sql index 5c7d09f9887..5c7d09f9887 100644 --- a/sql/updates/world/2013_01_07_06_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_06_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_07_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_07_world_creature_text.sql index 6f6a0b75713..6f6a0b75713 100644 --- a/sql/updates/world/2013_01_07_07_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_07_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_08_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_08_world_creature_text.sql index 94ab4d925ee..94ab4d925ee 100644 --- a/sql/updates/world/2013_01_07_08_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_08_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_09_world_buru.sql b/sql/old/3.3.5a/2013_01_07_09_world_buru.sql index a7e1d5a0ef1..a7e1d5a0ef1 100644 --- a/sql/updates/world/2013_01_07_09_world_buru.sql +++ b/sql/old/3.3.5a/2013_01_07_09_world_buru.sql diff --git a/sql/updates/world/2013_01_07_10_world_skeram.sql b/sql/old/3.3.5a/2013_01_07_10_world_skeram.sql index fb62da5e994..fb62da5e994 100644 --- a/sql/updates/world/2013_01_07_10_world_skeram.sql +++ b/sql/old/3.3.5a/2013_01_07_10_world_skeram.sql diff --git a/sql/updates/world/2013_01_07_11_world_sai.sql b/sql/old/3.3.5a/2013_01_07_11_world_sai.sql index bf4a1ed3c78..bf4a1ed3c78 100644 --- a/sql/updates/world/2013_01_07_11_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_07_11_world_sai.sql diff --git a/sql/updates/world/2013_01_07_12_world_sai.sql b/sql/old/3.3.5a/2013_01_07_12_world_sai.sql index bfa06980983..bfa06980983 100644 --- a/sql/updates/world/2013_01_07_12_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_07_12_world_sai.sql diff --git a/sql/updates/world/2013_01_07_13_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_13_world_creature_text.sql index 60d69e3c32a..60d69e3c32a 100644 --- a/sql/updates/world/2013_01_07_13_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_13_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_14_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_14_world_creature_text.sql index d68eb93ff4e..d68eb93ff4e 100644 --- a/sql/updates/world/2013_01_07_14_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_14_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_15_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_07_15_world_creature_addon.sql index 2b5ec6c2413..2b5ec6c2413 100644 --- a/sql/updates/world/2013_01_07_15_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_07_15_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_07_16_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_07_16_world_creature_addon.sql index bd5c17c6f67..bd5c17c6f67 100644 --- a/sql/updates/world/2013_01_07_16_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_07_16_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_07_17_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_17_world_creature_text.sql index 137308da214..137308da214 100644 --- a/sql/updates/world/2013_01_07_17_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_17_world_creature_text.sql diff --git a/sql/updates/world/2013_01_07_18_world_creature_text.sql b/sql/old/3.3.5a/2013_01_07_18_world_creature_text.sql index b9c6ef8d0c1..b9c6ef8d0c1 100644 --- a/sql/updates/world/2013_01_07_18_world_creature_text.sql +++ b/sql/old/3.3.5a/2013_01_07_18_world_creature_text.sql diff --git a/sql/updates/world/2013_01_08_01_world_raise_the_barricades.sql b/sql/old/3.3.5a/2013_01_08_01_world_raise_the_barricades.sql index 636beb404de..636beb404de 100644 --- a/sql/updates/world/2013_01_08_01_world_raise_the_barricades.sql +++ b/sql/old/3.3.5a/2013_01_08_01_world_raise_the_barricades.sql diff --git a/sql/updates/world/2013_01_09_00_world_misc.sql b/sql/old/3.3.5a/2013_01_09_00_world_misc.sql index a5402c60534..a5402c60534 100644 --- a/sql/updates/world/2013_01_09_00_world_misc.sql +++ b/sql/old/3.3.5a/2013_01_09_00_world_misc.sql diff --git a/sql/updates/world/2013_01_09_01_world_lfg_dungeon_rewards.sql b/sql/old/3.3.5a/2013_01_09_01_world_lfg_dungeon_rewards.sql index dfc5f7cf075..dfc5f7cf075 100644 --- a/sql/updates/world/2013_01_09_01_world_lfg_dungeon_rewards.sql +++ b/sql/old/3.3.5a/2013_01_09_01_world_lfg_dungeon_rewards.sql diff --git a/sql/updates/world/2013_01_09_02_world_sai.sql b/sql/old/3.3.5a/2013_01_09_02_world_sai.sql index bd164ff4b5e..bd164ff4b5e 100644 --- a/sql/updates/world/2013_01_09_02_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_09_02_world_sai.sql diff --git a/sql/updates/world/2013_01_09_03_world_spell_script_names.sql b/sql/old/3.3.5a/2013_01_09_03_world_spell_script_names.sql index 14d0eb8bfd9..14d0eb8bfd9 100644 --- a/sql/updates/world/2013_01_09_03_world_spell_script_names.sql +++ b/sql/old/3.3.5a/2013_01_09_03_world_spell_script_names.sql diff --git a/sql/updates/world/2013_01_10_00_world_trinity_string.sql b/sql/old/3.3.5a/2013_01_10_00_world_trinity_string.sql index 35d0c1eba99..35d0c1eba99 100644 --- a/sql/updates/world/2013_01_10_00_world_trinity_string.sql +++ b/sql/old/3.3.5a/2013_01_10_00_world_trinity_string.sql diff --git a/sql/updates/world/2013_01_10_01_world_sai.sql b/sql/old/3.3.5a/2013_01_10_01_world_sai.sql index da6c5f994f2..da6c5f994f2 100644 --- a/sql/updates/world/2013_01_10_01_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_10_01_world_sai.sql diff --git a/sql/updates/world/2013_01_10_02_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_10_02_world_creature_addon.sql index 4ad14575d36..4ad14575d36 100644 --- a/sql/updates/world/2013_01_10_02_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_10_02_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_10_03_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_10_03_world_creature_addon.sql index ef633331937..ef633331937 100644 --- a/sql/updates/world/2013_01_10_03_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_10_03_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_10_04_world_creature_addon.sql b/sql/old/3.3.5a/2013_01_10_04_world_creature_addon.sql index 74f2356e7a7..74f2356e7a7 100644 --- a/sql/updates/world/2013_01_10_04_world_creature_addon.sql +++ b/sql/old/3.3.5a/2013_01_10_04_world_creature_addon.sql diff --git a/sql/updates/world/2013_01_10_05_world_sai.sql b/sql/old/3.3.5a/2013_01_10_05_world_sai.sql index 82f2a16a113..82f2a16a113 100644 --- a/sql/updates/world/2013_01_10_05_world_sai.sql +++ b/sql/old/3.3.5a/2013_01_10_05_world_sai.sql diff --git a/sql/old/3.3.5a/2013_01_11_00_world_ayamiss.sql b/sql/old/3.3.5a/2013_01_11_00_world_ayamiss.sql new file mode 100644 index 00000000000..cbdb7a2ed16 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_00_world_ayamiss.sql @@ -0,0 +1,4 @@ +DELETE FROM `creature_text` WHERE `entry`=15369; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(15369,0,0,'%s goes into a frenzy!',16,0,100,0,0,0,'Ayamiss frenzy'); +UPDATE `creature_template` SET ScriptName='npc_hive_zara_larva' WHERE entry=15555; diff --git a/sql/old/3.3.5a/2013_01_11_01_world_conditions.sql b/sql/old/3.3.5a/2013_01_11_01_world_conditions.sql new file mode 100644 index 00000000000..352efb792b4 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_01_world_conditions.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=36554; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=36554; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 36554, 0, 0, 21, 0, 1024, 0, 0, 1, 103, 0, '', 'Shadowstep - not using Shadowstep while rooted'); diff --git a/sql/old/3.3.5a/2013_01_11_02_world_sai.sql b/sql/old/3.3.5a/2013_01_11_02_world_sai.sql new file mode 100644 index 00000000000..09466db2e94 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_02_world_sai.sql @@ -0,0 +1,109 @@ +-- Colonel Zerran SAI +SET @ENTRY := 15385; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,8000,9000,11,25462,0,0,0,0,0,6,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Cast Enlarge'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Colonel Zerran - In Combat - Decrement phase (Phase 1)'); + +-- Major Yeggeth SAI +SET @ENTRY := 15386; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,8000,9000,11,25282,0,0,0,0,0,6,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Cast Shield of Rajaxx'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Yeggeth - In Combat - Decrement phase (Phase 1)'); + +-- Qiraji Warrior SAI +SET @ENTRY := 15387; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,1,2,0,100,3,0,25,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Qiraji Warrior - @25%HP - Cast Enrage'), +(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Qiraji Warrior - @20%HP - Say 0'); + +-- Add aura for Qiraji Warrior +DELETE FROM `creature_template_addon` WHERE `entry`=15387; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES +(15387,1, '18950'); + +-- NPC talk text for Qiraji Warrior +DELETE FROM `creature_text` WHERE `entry` IN (15387); +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(15387,0,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Qiraji Warrior'); + +-- Major Pakkon SAI +SET @ENTRY := 15388; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,14000,15000,11,25322,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Cast Sweeping Slam'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Major Pakkon - In Combat - Decrement phase (Phase 1)'); + +-- Captain Drenn SAI +SET @ENTRY := 15389; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,14000,15000,11,26550,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Cast Lightning Cloud'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Drenn - In Combat - Decrement phase (Phase 1)'); + +-- Captain Xurrem SAI +SET @ENTRY := 15390; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,14000,15000,11,25425,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Cast Shockwave'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Xurrem - In Combat - Decrement phase (Phase 1)'); + +-- Captain Qeez SAI +SET @ENTRY := 15391; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,14000,15000,11,19134,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Cast Frightening Shout'), +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Qeez - In Combat - Decrement phase (Phase 1)'); + +-- Captain Tuubid SAI +SET @ENTRY := 15392; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,2,10000,11000,8000,9000,11,24317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Cast Sunder Armor'), +(@ENTRY,0,1,0,0,0,100,2,12000,13000,14000,15000,11,25471,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Cast Attack Order'), -- Needs scripting +(@ENTRY,0,2,0,0,0,100,2,13000,17000,14000,18000,23,1,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Increment phase'), +(@ENTRY,0,3,0,0,1,100,2,1000,1000,1000,1000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,4,0,0,1,100,2,2000,2000,2000,2000,11,40504,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Cast Cleave (Phase 1)'), +(@ENTRY,0,5,0,0,1,100,2,3000,3000,3000,3000,23,0,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Captain Tuubid - In Combat - Decrement phase (Phase 1)'); diff --git a/sql/old/3.3.5a/2013_01_11_03_world_sai.sql b/sql/old/3.3.5a/2013_01_11_03_world_sai.sql new file mode 100644 index 00000000000..e08252a4894 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_03_world_sai.sql @@ -0,0 +1,2 @@ +UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=24683 AND `id`=13; +UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=24696 AND `id`=12; diff --git a/sql/old/3.3.5a/2013_01_11_04_world_sai.sql b/sql/old/3.3.5a/2013_01_11_04_world_sai.sql new file mode 100644 index 00000000000..3c885d85cc1 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_04_world_sai.sql @@ -0,0 +1,3 @@ +UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=23689 AND `id`=5; +UPDATE `smart_scripts` SET `link`=0, `action_param2`=1 WHERE `entryorguid`=16357 AND `id`=3; +DELETE FROM `smart_scripts` WHERE `entryorguid`=16357 AND `id`=4; diff --git a/sql/old/3.3.5a/2013_01_11_05_world_creature_text.sql b/sql/old/3.3.5a/2013_01_11_05_world_creature_text.sql new file mode 100644 index 00000000000..1283fd86106 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_11_05_world_creature_text.sql @@ -0,0 +1,13 @@ +-- NPC talk text for Gatewatcher Gyro-Kill +DELETE FROM `creature_text` WHERE `entry`=19218; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(19218,0,0, 'I predict a painful death.',14,0,100,0,0,11101, 'Gatewatcher Gyro-Kill - Aggro'), +(19218,1,0, 'Your strategy was flawed.',14,0,100,0,0,11102, 'Gatewatcher Gyro-Kill - On Kill'), +(19218,1,1, 'Yes, the only logical outcome.',12,0,100,0,0,11103, 'Gatewatcher Gyro-Kill - On Kill'), +(19218,2,0, 'Measure twice; cut once.',14,0,100,0,0,11104, 'Gatewatcher Gyro-Kill - Sawblades'), +(19218,2,1, 'If my division is correct you should be quite dead.',14,0,100,0,0,11105, 'Gatewatcher Gyro-Kill - Sawblades'), +(19218,3,0, 'An unforeseen... contingency.',14,0,100,0,0,11106, 'Gatewatcher Gyro-Kill - On Death'); + +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=19218; +DELETE FROM `creature_ai_texts` WHERE `entry` BETWEEN -86 AND -81; +UPDATE `creature_template` SET `AIName`='', `ScriptName`= 'Boss_Gatewatcher_Gyrokill' WHERE `entry`=19218; diff --git a/sql/old/3.3.5a/2013_01_12_00_world_smart_scripts.sql b/sql/old/3.3.5a/2013_01_12_00_world_smart_scripts.sql new file mode 100644 index 00000000000..06562cbd122 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_00_world_smart_scripts.sql @@ -0,0 +1,7 @@ +-- Hulking Abomination +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=31140; +DELETE FROM `smart_scripts` WHERE `entryorguid`=31140 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`id`,`event_type`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`target_type`,`comment`) VALUES +(31140,0,6,0,0,0,0,0,11,58995,2,1,'Hulking Abomination - Just died - Cast Exploding Corpse'), +(31140,1,9,1,8,40,0,0,11,50335,0,7,'Hulking Abomination - Invoker in range of 8 to 40 yards - Cast Scourge Hook'), +(31140,2,0,0,3000,3000,7000,7000,11,40504,0,2,'Hulking Abomination - In combat - Cast Cleave'); diff --git a/sql/old/3.3.5a/2013_01_12_01_world_string.sql b/sql/old/3.3.5a/2013_01_12_01_world_string.sql new file mode 100644 index 00000000000..8766e97231d --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_01_world_string.sql @@ -0,0 +1,3 @@ +DELETE FROM `trinity_string` WHERE `entry`=2029; +INSERT INTO `trinity_string` (`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`) VALUES +(2029,'|cff00ff00Ticket Response|r: [%s]|r',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); diff --git a/sql/old/3.3.5a/2013_01_12_02_world_creature_template.sql b/sql/old/3.3.5a/2013_01_12_02_world_creature_template.sql new file mode 100644 index 00000000000..608af749f15 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_02_world_creature_template.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `ScriptName`= 'boss_gatewatcher_gyrokill' WHERE `entry`=19218; diff --git a/sql/old/3.3.5a/2013_01_12_03_world_gameobject.sql b/sql/old/3.3.5a/2013_01_12_03_world_gameobject.sql new file mode 100644 index 00000000000..a7a914fceec --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_03_world_gameobject.sql @@ -0,0 +1,7 @@ +-- Add missing doors to mechanar +SET @GUID := 6032; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @GUID AND @GUID+2; +INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES +(@GUID,184632,554,3,1,236.4597,52.36356,1.653544,3.141593,0,0,-1,0,120,0,1), +(@GUID+1,184322,554,3,1,242.874,52.314810,1.596334,3.141593,0,0,-1,0,120,0,1), +(@GUID+2,184449,554,3,1,267.9281,52.31481,27.04254,3.141593,0,0,-1,0,120,0,1); diff --git a/sql/old/3.3.5a/2013_01_12_03_world_waypoints.sql b/sql/old/3.3.5a/2013_01_12_03_world_waypoints.sql new file mode 100644 index 00000000000..3903e383ae8 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_03_world_waypoints.sql @@ -0,0 +1,53 @@ +-- Pathing for Mechano-Lord Capacitus Entry: 19219 +SET @NPC := 83160; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=207.2308,`position_y`=-14.30226,`position_z`=-2.192125 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,207.2308,-14.30226,-2.192125,0,7000,0,0,100,0), +(@PATH,2,204.4302,-15.78992,-2.192125,0,1000,0,0,100,0), +(@PATH,3,207.7613,-18.93377,-2.192125,0,0,0,0,100,0), +(@PATH,4,208.2819,-16.48228,-2.192125,0,1000,0,0,100,0), +(@PATH,5,228.1113,-0.829701,-0.8854336,0,0,0,0,100,0), +(@PATH,6,226.6032,19.45208,-1.726556,0,14000,0,0,100,0), +(@PATH,7,209.7744,-12.69758,-2.192125,0,1000,0,0,100,0), +(@PATH,8,209.7744,-12.69758,-2.192125,3.141593,1000,0,0,100,0), +(@PATH,9,228.1113,-0.829701,-0.8854336,0,0,0,0,100,0), +(@PATH,10,226.6032,19.45208,-1.726556,0,0,0,0,100,0), +(@PATH,11,204.9646,26.38312,-0.005853632,0,13000,0,0,100,0), +(@PATH,12,209.7744,-12.69758,-2.192125,0,1000,0,0,100,0), +(@PATH,13,209.7744,-12.69758,-2.192125,3.141593,1000,0,0,100,0), +(@PATH,14,224.3664,-23.35326,-2.192125,0,0,0,0,100,0), +(@PATH,15,231.1084,-38.22675,8.909556E-07,0,15000,0,0,100,0), +(@PATH,16,209.7744,-12.69758,-2.192125,0,0,0,0,100,0), +(@PATH,17,209.7744,-12.69758,-2.192125,3.141593,1000,0,0,100,0), +(@PATH,18,189.2316,-17.36449,-2.192126,0,0,0,0,100,0), +(@PATH,19,185.7177,-4.297129,-1.142366,0,0,0,0,100,0), +(@PATH,20,191.9589,6.435908,-0.7838742,0,0,0,0,100,0), +(@PATH,21,196.1359,21.01234,-1.426585,0,0,0,0,100,0), +(@PATH,22,207.8954,18.24695,-2.192125,0,0,0,0,100,0), +(@PATH,23,213.9077,10.01895,-2.192125,0,11000,0,0,100,0), +(@PATH,24,209.7744,-12.69758,-2.192125,0,0,0,0,100,0), +(@PATH,25,209.7744,-12.69758,-2.192125,3.141593,2000,0,0,100,0), +(@PATH,26,203.706,-11.63055,-2.192125,0,10000,0,0,100,0), +(@PATH,27,206.4484,-14.27736,-2.192125,0,0,0,0,100,0), +(@PATH,28,208.3172,-13.38252,-2.192125,0,0,0,0,100,0), +(@PATH,29,209.3133,-12.82924,-2.192125,0,7000,0,0,100,0), +(@PATH,30,204.3208,-10.91346,-2.192125,0,0,0,0,100,0), +(@PATH,31,207.38,-13.36442,-2.192125,0,0,0,0,100,0), +(@PATH,32,207.7303,-11.56095,-2.192125,0,7000,0,0,100,0), +(@PATH,33,195.6332,-15.0944,-2.192125,0,0,0,0,100,0), +(@PATH,34,195.4723,-29.45176,-2.192125,0,0,0,0,100,0), +(@PATH,35,202.765,-41.79265,-2.192125,0,7000,0,0,100,0), +(@PATH,36,209.7744,-12.69758,-2.192125,0,1000,0,0,100,0), +(@PATH,37,209.7744,-12.69758,-2.192125,3.141593,1000,0,0,100,0), +(@PATH,38,189.2316,-17.36449,-2.192126,0,0,0,0,100,0), +(@PATH,39,185.7177,-4.297129,-1.142366,0,0,0,0,100,0), +(@PATH,40,191.9589,6.435908,-0.7838742,0,0,0,0,100,0), +(@PATH,41,196.1359,21.01234,-1.426585,0,0,0,0,100,0), +(@PATH,42,207.8954,18.24695,-2.192125,0,0,0,0,100,0), +(@PATH,43,213.9077,10.01895,-2.192125,0,6000,0,0,100,0), +(@PATH,44,209.7744,-12.69758,-2.192125,0,20000,0,0,100,0), +(@PATH,45,210.4122,-9.19214,-2.192125,0,0,0,0,100,0); diff --git a/sql/old/3.3.5a/2013_01_12_04_world_misc.sql b/sql/old/3.3.5a/2013_01_12_04_world_misc.sql new file mode 100644 index 00000000000..5ba81aa39f1 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_04_world_misc.sql @@ -0,0 +1,28 @@ +UPDATE `creature_template` SET `AIName` = '',`ScriptName` = 'boss_mechano_lord_capacitus' WHERE `entry` =19219; +UPDATE `creature_template` SET `unit_flags`=`unit_flags` |2 |33554432 WHERE `entry` IN (20405,21534); -- Nether Charge + +DELETE FROM `creature_ai_scripts` WHERE `creature_id` IN (19219,20405); +DELETE FROM `creature_ai_texts` WHERE `entry` BETWEEN -92 AND -87; + +DELETE FROM `creature_template_addon` WHERE `entry` IN (20405,21534); +INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES +(20405,0,0,0,0,0,'37670 35150'), -- Nether Charge +(21534,0,0,0,0,0,'37670 35150'); -- Nether Charge (1) + +SET @ENTRY := 20405; -- Nether Charge + +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY; +UPDATE creature_template SET AIName="SmartAI" WHERE entry=@ENTRY LIMIT 1; +INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,0,0,0,100,0,14000,14000,1000,1000,11,35151,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Bomb - Nether Charge Pulse"), +(@ENTRY,0,1,0,0,0,100,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Charge - No Melee"), +(@ENTRY,0,2,0,0,0,100,0,0,0,14000,14000,21,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,"Nether Charge - Prevent Combat Movement When Start..."); + +DELETE FROM `creature_text` WHERE `entry` = 19219; +INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES +(19219, 0, 0, 'You should split while you can.', 14, 0, 100, 0, 0, 11162, 'Mechano-Lord Capacitus - Aggro'), +(19219, 1, 0, 'Go ahead, gimme your best shot. I can take it!', 14, 0, 100, 0, 0, 11166, 'Mechano-Lord Capacitus - Yells'), -- Reflective Damage Shield +(19219, 2, 0, 'Think you can hurt me, huh? Think I''m afraid a'' you?', 14, 0, 100, 0, 0, 11165, 'Mechano-Lord Capacitus - Yells'), -- Reflective Magic Shield +(19219, 3, 0, 'Can''t say I didn''t warn you!', 14, 0, 100, 0, 0, 11163, 'Mechano-Lord Capacitus - Killing a player'), +(19219, 3, 1, 'Damn, I''m good!', 14, 0, 100, 0, 0, 11164, 'Mechano-Lord Capacitus - Killing a player'), +(19219, 4, 0, 'Bully!', 14, 0, 100, 0, 0, 11167, 'Mechano-Lord Capacitus - Death'); diff --git a/sql/old/3.3.5a/2013_01_12_05_world_waypoint_script.sql b/sql/old/3.3.5a/2013_01_12_05_world_waypoint_script.sql new file mode 100644 index 00000000000..639b27b911e --- /dev/null +++ b/sql/old/3.3.5a/2013_01_12_05_world_waypoint_script.sql @@ -0,0 +1 @@ +DELETE FROM `waypoint_scripts` WHERE `id` = 8316001; diff --git a/sql/old/3.3.5a/2013_01_13_00_world_gameobject_template.sql b/sql/old/3.3.5a/2013_01_13_00_world_gameobject_template.sql new file mode 100644 index 00000000000..056dfea0bc9 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_13_00_world_gameobject_template.sql @@ -0,0 +1 @@ +UPDATE `gameobject_template` SET `ScriptName`='' WHERE `entry`=130511; diff --git a/sql/old/3.3.5a/2013_01_13_01_world_sai.sql b/sql/old/3.3.5a/2013_01_13_01_world_sai.sql new file mode 100644 index 00000000000..a8513d88ab0 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_13_01_world_sai.sql @@ -0,0 +1,41 @@ +SET @CONTROL_WATCHER := 58524; +SET @ETHREAL := 58548; +SET @GOSSIP := 10028; +SET @EYE := 193058; +SET @WATCHER := 31110; +SET @MIRROR_NPC := 31005; +SET @FIGMENT_SPELL := 57530; +SET @PLAYER_MIRROR := 58122; +SET @CONTROL_START := 58120; +SET @MIRROR_SPELL := 57528; +SET @WEAPON_COPY := 41055; +SET @COPY_OFF_HAND := 45205; + +UPDATE `creature_template` SET `spell1` = 58541, `spell2` = 58544, `spell3` = 58543, `spell4` = 58562, `spell5` = 58563, `spell6` = 58658 WHERE `entry` = @WATCHER; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@MIRROR_NPC; +UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`= @EYE; +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = @WATCHER; +DELETE FROM `smart_scripts` WHERE `entryorguid`= @EYE; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@EYE,1,0,1,62,0,100,0,@GOSSIP,0,0,0,85,@CONTROL_WATCHER,2,0,0,0,0,7,0,0,0,0,0,0,0, 'On Gossip Option Select - Cast Control Eidolon Watcher - Action Invoker'), +(@EYE,1,1,2,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Eye of Dominion - On link - Close Gossip Option'), +(@EYE,1,2,3,61,0,100,0,0,0,0,0,85,@PLAYER_MIRROR,2,0,0,0,0,7,0,0,0,0,0,0,0, 'Eye of Dominion - On link - Summon Player Mirror'), +(@EYE,1,3,0,61,0,100,0,0,0,0,0,15,13168,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Eye of Dominion - On link - Complete quest'); +DELETE FROM `smart_scripts` WHERE `entryorguid`= @MIRROR_NPC; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@MIRROR_NPC,0,0,1,54,0,100,1,0,0,0,0,85,@MIRROR_SPELL,2,0,0,0,0,1,0,0,0,0,0,0,0, 'On spawn - Cast Mirror Spell - Action Invoker'), +(@MIRROR_NPC,0,1,2,61,0,100,1,0,0,0,0,85,@WEAPON_COPY,2,0,0,0,0,1,0,0,0,0,0,0,0,'On Link - Copy Main Hand - Action Invoker'), +(@MIRROR_NPC,0,2,3,61,0,100,1,0,0,0,0,85,@COPY_OFF_HAND,2,0,0,0,0,1,0,0,0,0,0,0,0,'On Link - Copy Offhand - Action Invoker'), +(@MIRROR_NPC,0,3,0,61,0,100,1,0,0,0,0,11,@CONTROL_START,2,0,0,0,0,1,0,0,0,0,0,0,0,'On Spawn - Cast Start Control - Action Invoker'); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=@WATCHER; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@WATCHER,0,0,0,54,0,100,1,0,0,0,0,11,@ETHREAL,2,0,0,0,0,1,0,0,0,0,0,0,0, 'On spawn - Cast Ethreal Aura - On self'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` = @EYE; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22,4,@EYE,1,0,9,0,13168,0,0,0,0,'','Execute SAI line only if player has quest active'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=@MIRROR_SPELL; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,7,@MIRROR_SPELL,0,0,31,0,3,@MIRROR_NPC,0,0,0,'','Spell target Mirror npc'); diff --git a/sql/old/3.3.5a/2013_01_13_02_world_gluttonous_lurkers.sql b/sql/old/3.3.5a/2013_01_13_02_world_gluttonous_lurkers.sql new file mode 100644 index 00000000000..71f8efbe0c3 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_13_02_world_gluttonous_lurkers.sql @@ -0,0 +1,36 @@ +-- Quest: Gluttonous Lurkers (12527) +-- Zul'drak Rat: Spellclick spells +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=28202; +INSERT INTO `npc_spellclick_spells`(`npc_entry`,`spell_id`,`cast_flags`) VALUE +(28202,50926,1), +(28202,50927,2); + +-- Zul'drak Rat: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28202; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28202 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`target_type`,`comment`) VALUES +(28202,8,50926,41,1,'Zuldrak Rat - On spell hit of Gluttonous Lurkers: Create ZulDrak Rat Cover - Despawn'); + +-- Zul'drak Rat spell: Script assignment +DELETE FROM `spell_script_names` WHERE `spell_id`=50894; +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUE +(50894,'spell_zuldrak_rat'); + +-- Zul'drak Rat spell: Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=50894; +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ErrorType`,`Comment`) VALUE +(17,50894,31,1,3,28145,12,'Zuldrak Rat - Target has to be Lurking Basilisk'); + +-- Lurking Basilisk: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28145; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=28145; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28145 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`target_type`,`comment`) VALUE +(28145,0,5000,5000,17000,27000,11,54470,2,'Lurking Basilisk - In Combat - Cast Venemous Bite'); + +-- Gorged Lurking Basilisk: SAI +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=28203; +DELETE FROM `creature_ai_scripts` WHERE `creature_id`=28203; +DELETE FROM `smart_scripts` WHERE `entryorguid`=28203 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`action_type`,`target_type`,`comment`) VALUES +(28203,8,50918,41,1,'Gorged Lurking Basilisk - On Spell Hit of Create Basilisk Crystals Cover - Despawn'); diff --git a/sql/old/3.3.5a/2013_01_13_03_world_spell_script_names.sql b/sql/old/3.3.5a/2013_01_13_03_world_spell_script_names.sql new file mode 100644 index 00000000000..a776ea4a765 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_13_03_world_spell_script_names.sql @@ -0,0 +1,4 @@ +-- Zul'drak Rat spell: Script assignment +DELETE FROM `spell_script_names` WHERE `spell_id`=50894; +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUE +(50894,'spell_q12527_zuldrak_rat'); diff --git a/sql/old/3.3.5a/2013_01_13_04_world_conditions.sql b/sql/old/3.3.5a/2013_01_13_04_world_conditions.sql new file mode 100644 index 00000000000..eaf45d5d696 --- /dev/null +++ b/sql/old/3.3.5a/2013_01_13_04_world_conditions.sql @@ -0,0 +1,9 @@ +SET @EYE := 193058; +SET @MIRROR_SPELL := 57528; +SET @MIRROR_NPC := 31005; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` = @EYE; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (13,17) AND `SourceEntry`=@MIRROR_SPELL; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22,1,@EYE,1,0,9,0,13168,0,0,0,0,'','Execute SAI line only if player has quest active'), +(17,0,@MIRROR_SPELL,0,0,31,0,3,@MIRROR_NPC,0,0,0,'','Spell target Mirror npc'); diff --git a/sql/updates/world/2013_01_14_00_world_version.sql b/sql/updates/world/2013_01_14_00_world_version.sql new file mode 100644 index 00000000000..0bc0a89a8a4 --- /dev/null +++ b/sql/updates/world/2013_01_14_00_world_version.sql @@ -0,0 +1 @@ +UPDATE `version` SET `db_version`='TDB 335.50', `cache_id`=50 LIMIT 1; diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index a3cb57b3332..09ba2cc19b1 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -172,7 +172,9 @@ void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered) void UnitAI::DoCastVictim(uint32 spellId, bool triggered) { - // Why don't we check for casting unit_state and existing target as we do in DoCast(.. ? + if (!me->getVictim() || (me->HasUnitState(UNIT_STATE_CASTING) && !triggered)) + return; + me->CastSpell(me->getVictim(), spellId, triggered); } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 52183b9509d..e0a3943d70f 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -523,7 +523,7 @@ inline void Battleground::_ProcessJoin(uint32 diff) WorldPacket status; BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), GetPlayerTeam(itr->first)); player->GetSession()->SendPacket(&status); player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); @@ -919,7 +919,7 @@ void Battleground::EndBattleground(uint32 winner) player->GetSession()->SendPacket(&pvpLogData); WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, TIME_TO_AUTOREMOVE, GetStartTime(), GetArenaType(), GetPlayerTeam(player->GetGUID())); player->GetSession()->SendPacket(&data); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, 1); } @@ -1022,7 +1022,7 @@ void Battleground::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac if (SendPacket) { WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_NONE, 0, 0, 0, 0); player->GetSession()->SendPacket(&data); } @@ -1151,7 +1151,7 @@ void Battleground::AddPlayer(Player* player) WorldPacket status; BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(m_TypeID, GetArenaType()); uint32 queueSlot = player->GetBattlegroundQueueIndex(bgQueueTypeId); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), isArena() ? 0 : 1); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&status, this, queueSlot, STATUS_IN_PROGRESS, 0, GetStartTime(), GetArenaType(), team); player->GetSession()->SendPacket(&status); player->RemoveAurasByType(SPELL_AURA_MOUNTED); @@ -1846,7 +1846,7 @@ void Battleground::PlayerAddedToBGCheckIfBGIsRunning(Player* player) sBattlegroundMgr->BuildPvpLogDataPacket(&data, this); player->GetSession()->SendPacket(&data); - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, this, player->GetBattlegroundQueueIndex(bgQueueTypeId), STATUS_IN_PROGRESS, GetEndTime(), GetStartTime(), GetArenaType(), GetPlayerTeam(player->GetGUID())); player->GetSession()->SendPacket(&data); } diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 71ac8cf8180..24e69a151b5 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -162,7 +162,7 @@ void BattlegroundMgr::Update(uint32 diff) } } -void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint8 uiFrame) +void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 QueueSlot, uint8 StatusID, uint32 Time1, uint32 Time2, uint8 arenatype, uint32 arenaFaction) { // we can be in 2 queues in same time... @@ -179,35 +179,35 @@ void BattlegroundMgr::BuildBattlegroundStatusPacket(WorldPacket* data, Battlegro // The following segment is read as uint64 in client but can be appended as their original type. *data << uint8(arenatype); sLog->outDebug(LOG_FILTER_NETWORKIO, "BattlegroundMgr::BuildBattlegroundStatusPacket: arenatype = %u for bg instanceID %u, TypeID %u.", arenatype, bg->GetClientInstanceID(), bg->GetTypeID()); - *data << uint8(bg->isArena() ? 0xC : 0x2); + *data << uint8(bg->isArena() ? 0xE : 0x0); *data << uint32(bg->GetTypeID()); *data << uint16(0x1F90); // End of uint64 segment, decomposed this way for simplicity - *data << uint8(0); // 3.3.0, some level, only saw 80... - *data << uint8(0); // 3.3.0, some level, only saw 80... + *data << uint8(bg->GetMinLevel()); + *data << uint8(bg->GetMaxLevel()); *data << uint32(bg->GetClientInstanceID()); // alliance/horde for BG and skirmish/rated for Arenas // following displays the minimap-icon 0 = faction icon 1 = arenaicon - *data << uint8(bg->isRated()); // 1 for rated match, 0 for bg or non rated match + *data << uint8(bg->isRated()); // 1 for rated match, 0 for bg or non rated match - *data << uint32(StatusID); // status + *data << uint32(StatusID); // status switch (StatusID) { - case STATUS_WAIT_QUEUE: // status_in_queue - *data << uint32(Time1); // average wait time, milliseconds - *data << uint32(Time2); // time in queue, updated every minute!, milliseconds + case STATUS_WAIT_QUEUE: // status_in_queue + *data << uint32(Time1); // average wait time, milliseconds + *data << uint32(Time2); // time in queue, updated every minute!, milliseconds break; - case STATUS_WAIT_JOIN: // status_invite - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to remove from queue, milliseconds + case STATUS_WAIT_JOIN: // status_invite + *data << uint32(bg->GetMapId()); // map id + *data << uint64(0); // 3.3.5, unknown + *data << uint32(Time1); // time to remove from queue, milliseconds break; - case STATUS_IN_PROGRESS: // status_in_progress - *data << uint32(bg->GetMapId()); // map id - *data << uint64(0); // 3.3.5, unknown - *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds - *data << uint32(Time2); // time from bg start, milliseconds - *data << uint8(uiFrame); + case STATUS_IN_PROGRESS: // status_in_progress + *data << uint32(bg->GetMapId()); // map id + *data << uint64(0); // 3.3.5, unknown + *data << uint32(Time1); // time to bg auto leave, 0 at bg start, 120000 after bg end, milliseconds + *data << uint32(Time2); // time from bg start, milliseconds + *data << uint8(arenaFaction == ALLIANCE ? 1 : 0); // arenafaction (0 for horde, 1 for alliance) break; default: sLog->outError(LOG_FILTER_BATTLEGROUND, "Unknown BG status!"); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 236494792d4..c66d9d64ab8 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -80,7 +80,7 @@ class BattlegroundMgr void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result); void BuildUpdateWorldStatePacket(WorldPacket* data, uint32 field, uint32 value); void BuildPvpLogDataPacket(WorldPacket* data, Battleground* bg); - void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint8 uiFrame = 1); + void BuildBattlegroundStatusPacket(WorldPacket* data, Battleground* bg, uint8 queueSlot, uint8 statusId, uint32 time1, uint32 time2, uint8 arenaType, uint32 arenaFaction); void BuildPlaySoundPacket(WorldPacket* data, uint32 soundId); void SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, uint64 guid); diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 150cec08e3c..6d5f3d07bae 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -396,7 +396,7 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool decreaseInvitedCount) plr2->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to // queue->removeplayer, it causes bugs WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); plr2->GetSession()->SendPacket(&data); } // then actually delete, this may delete the group as well! @@ -481,7 +481,7 @@ bool BattlegroundQueue::InviteGroupToBG(GroupQueueInfo* ginfo, Battleground* bg, player->GetName().c_str(), player->GetGUIDLow(), bg->GetInstanceID(), queueSlot, bg->GetTypeID()); // send status packet - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME, 0, ginfo->ArenaType, 0); player->GetSession()->SendPacket(&data); } return true; @@ -1003,7 +1003,7 @@ bool BGQueueInviteEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) { WorldPacket data; //we must send remaining time in queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_JOIN, INVITE_ACCEPT_WAIT_TIME - INVITATION_REMIND_TIME, 0, m_ArenaType, 0); player->GetSession()->SendPacket(&data); } } @@ -1051,7 +1051,7 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) sBattlegroundMgr->ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId()); WorldPacket data; - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); player->GetSession()->SendPacket(&data); } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 4ddf7a8b052..b6452e76b5d 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -247,7 +247,7 @@ void BattlegroundEY::UpdatePointStatuses() if (player) { this->UpdateWorldStateForPlayer(PROGRESS_BAR_STATUS, m_PointBarStatus[point], player); - //if point owner changed we must evoke event! + //if point owner changed we must evoke event! if (pointOwnerTeamId != m_PointOwnedByTeam[point]) { //point was uncontrolled and player is from team which captured point @@ -258,6 +258,12 @@ void BattlegroundEY::UpdatePointStatuses() if (m_PointState[point] == EY_POINT_UNDER_CONTROL && player->GetTeam() != m_PointOwnedByTeam[point]) this->EventTeamLostPoint(player, point); } + + /// @workaround The original AreaTrigger is covered by a bigger one and not triggered on client side. + if (point == FEL_REAVER && m_PointOwnedByTeam[point] == player->GetTeam()) + if (m_FlagState && GetFlagPickerGUID() == player->GetGUID()) + if (player->GetDistance(2044.0f, 1729.729f, 1190.03f) < 3.0f) + EventPlayerCapturedFlag(player, BG_EY_OBJECT_FLAG_FEL_REAVER); } } } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 0526c9276f9..d476113edc4 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -311,6 +311,12 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) condMeets = ((1 << object->GetMap()->GetSpawnMode()) & ConditionValue1); break; } + case CONDITION_UNIT_STATE: + { + if (Unit* unit = object->ToUnit()) + condMeets = unit->HasUnitState(ConditionValue1); + break; + } default: condMeets = false; break; @@ -468,6 +474,9 @@ uint32 Condition::GetSearcherTypeMaskForCondition() case CONDITION_GENDER: mask |= GRID_MAP_TYPE_MASK_PLAYER; break; + case CONDITION_UNIT_STATE: + mask |= GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER; + break; default: ASSERT(false && "Condition::GetSearcherTypeMaskForCondition - missing condition handling!"); break; @@ -1957,9 +1966,15 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) } break; } - case CONDITION_UNUSED_21: - sLog->outError(LOG_FILTER_SQL, "Found ConditionTypeOrReference = CONDITION_UNUSED_21 in `conditions` table - ignoring"); - return false; + case CONDITION_UNIT_STATE: + { + if (cond->ConditionValue1 > uint32(UNIT_STATE_ALL_STATE)) + { + sLog->outError(LOG_FILTER_SQL, "UnitState condition has non existing UnitState in value1 (%u), skipped", cond->ConditionValue1); + return false; + } + break; + } case CONDITION_UNUSED_24: sLog->outError(LOG_FILTER_SQL, "Found ConditionTypeOrReference = CONDITION_UNUSED_24 in `conditions` table - ignoring"); return false; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index fec5cd6fc95..b49626747a6 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -54,7 +54,7 @@ enum ConditionTypes CONDITION_TITLE = 18, // title id 0 0 true if player has title CONDITION_SPAWNMASK = 19, // spawnMask 0 0 true if in spawnMask CONDITION_GENDER = 20, // gender 0 0 true if player's gender is equal to gender - CONDITION_UNUSED_21 = 21, // + CONDITION_UNIT_STATE = 21, // unitState 0 0 true if unit has unitState CONDITION_MAPID = 22, // map_id 0 0 true if in map_id CONDITION_AREAID = 23, // area_id 0 0 true if in area_id CONDITION_UNUSED_24 = 24, // diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h index 1395440fb6d..d0784f05c4d 100644 --- a/src/server/game/DataStores/DBCfmt.h +++ b/src/server/game/DataStores/DBCfmt.h @@ -31,7 +31,7 @@ char const AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx"; char const BankBagSlotPricesEntryfmt[]="ni"; char const BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii"; char const BattlemasterListEntryfmt[]="niiiiiiiiixssssssssssssssssxiixx"; -char const CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +char const CharStartOutfitEntryfmt[]="xniiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; char const CharTitlesEntryfmt[]="nxssssssssssssssssxxxxxxxxxxxxxxxxxxi"; char const ChatChannelsEntryfmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxx"; // ChatChannelsEntryfmt, index not used (more compact store) diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 9d5d8e40b54..09be64813af 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1563,7 +1563,6 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId) LfgPlayerRewardData data = LfgPlayerRewardData(dungeon->Entry(), GetDungeon(gguid, false), done, quest); player->GetSession()->SendLfgPlayerReward(data); } - SetDungeon(gguid, 0); } // --------------------------------------------------------------------------// @@ -1632,6 +1631,18 @@ LfgState LFGMgr::GetState(uint64 guid) return state; } +LfgState LFGMgr::GetOldState(uint64 guid) +{ + LfgState state; + if (IS_GROUP_GUID(guid)) + state = GroupsStore[guid].GetOldState(); + else + state = PlayersStore[guid].GetOldState(); + + sLog->outTrace(LOG_FILTER_LFG, "LFGMgr::GetOldState: [" UI64FMTD "] = %u", guid, state); + return state; +} + uint32 LFGMgr::GetDungeon(uint64 guid, bool asId /*= true */) { uint32 dungeon = GroupsStore[guid].GetDungeon(asId); diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 0a1b90ee04d..33626467486 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -347,6 +347,7 @@ class LFGMgr uint32 GetDungeon(uint64 guid, bool asId = true); uint32 GetDungeonMapId(uint64 guid); LfgState GetState(uint64 guid); + LfgState GetOldState(uint64 guid); uint8 GetKicksLeft(uint64 gguid); uint64 GetLeader(uint64 guid); bool IsLfgGroup(uint64 guid); diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index e75a1bdc4b3..f1d2dbb313d 100644 --- a/src/server/game/DungeonFinding/LFGQueue.cpp +++ b/src/server/game/DungeonFinding/LFGQueue.cpp @@ -483,7 +483,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check) uint64 gguid = *check.begin(); proposal.queues = check; - proposal.isNew = numLfgGroups != 1 || !sLFGMgr->GetDungeon(gguid); + proposal.isNew = numLfgGroups != 1 || sLFGMgr->GetOldState(gguid) != LFG_STATE_DUNGEON; if (!sLFGMgr->AllQueued(check)) { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e501471b688..14878b078bd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1120,20 +1120,7 @@ bool Player::Create(uint32 guidlow, CharacterCreateInfo* createInfo) addActionButton(action_itr->button, action_itr->action, action_itr->type); // original items - CharStartOutfitEntry const* oEntry = NULL; - for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) - { - if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) - { - if (entry->RaceClassGender == RaceClassGender) - { - oEntry = entry; - break; - } - } - } - - if (oEntry) + if (CharStartOutfitEntry const* oEntry = sCharStartOutfitStore.LookupEntry(RaceClassGender)) { for (int j = 0; j < MAX_OUTFIT_ITEMS; ++j) { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index b41b61904e6..2ba456b5b3c 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2957,32 +2957,23 @@ void ObjectMgr::PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint3 sLog->outError(LOG_FILTER_SQL, "Invalid count %i specified on item %u be removed from original player create info (use -1)!", count, itemId); uint32 RaceClass = (race_) | (class_ << 8); - bool doneOne = false; - for (uint32 i = 1; i < sCharStartOutfitStore.GetNumRows(); ++i) + for (uint32 gender = 0; gender < GENDER_NONE; ++gender) { - if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(i)) + if (CharStartOutfitEntry const* entry = sCharStartOutfitStore.LookupEntry(RaceClass | (gender << 16))) { - if (entry->RaceClassGender == RaceClass || entry->RaceClassGender == (RaceClass | (1 << 16))) + bool found = false; + for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x) { - bool found = false; - for (uint8 x = 0; x < MAX_OUTFIT_ITEMS; ++x) + if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId) { - if (entry->ItemId[x] > 0 && uint32(entry->ItemId[x]) == itemId) - { - found = true; - const_cast<CharStartOutfitEntry*>(entry)->ItemId[x] = 0; - break; - } - } - - if (!found) - sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId); - - if (!doneOne) - doneOne = true; - else + found = true; + const_cast<CharStartOutfitEntry*>(entry)->ItemId[x] = 0; break; + } } + + if (!found) + sLog->outError(LOG_FILTER_SQL, "Item %u specified to be removed from original create info not found in dbc!", itemId); } } } diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index a7df171b1c5..99056960893 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -187,7 +187,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) WorldPacket data; // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); SendPacket(&data); sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, _player->GetGUIDLow(), _player->GetName().c_str()); @@ -233,7 +233,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recvData) uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, ginfo->ArenaType, 0); member->GetSession()->SendPacket(&data); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); member->GetSession()->SendPacket(&data); @@ -453,7 +453,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) _player->CleanupAfterTaxiFlight(); } - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType()); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), bg->GetPlayerTeam(_player->GetGUID())); _player->GetSession()->SendPacket(&data); // remove battleground queue status from BGmgr bgQueue.RemovePlayer(_player->GetGUID(), false); @@ -489,7 +489,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket &recvData) } } _player->RemoveBattlegroundQueueId(bgQueueTypeId); // must be called this way, because if you move this call to queue->removeplayer, it causes bugs - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0, 0); bgQueue.RemovePlayer(_player->GetGUID(), true); // player left queue, we should update it - do not update Arena Queue if (!ginfo.ArenaType) @@ -541,7 +541,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) { // this line is checked, i only don't know if GetStartTime is changing itself after bg end! // send status in Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_IN_PROGRESS, bg->GetEndTime(), bg->GetStartTime(), arenaType, bg->GetPlayerTeam(_player->GetGUID())); SendPacket(&data); continue; } @@ -559,7 +559,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) continue; uint32 remainingTime = getMSTimeDiff(getMSTime(), ginfo.RemoveInviteTime); // send status invited to Battleground - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_JOIN, remainingTime, 0, arenaType, 0); SendPacket(&data); } else @@ -575,7 +575,7 @@ void WorldSession::HandleBattlefieldStatusOpcode(WorldPacket & /*recvData*/) uint32 avgTime = bgQueue.GetAverageQueueWaitTime(&ginfo, bracketEntry->GetBracketId()); // send status in Battleground Queue - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, getMSTime()), arenaType); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, i, STATUS_WAIT_QUEUE, avgTime, getMSTimeDiff(ginfo.JoinTime, getMSTime()), arenaType, 0); SendPacket(&data); } } @@ -727,7 +727,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) uint32 queueSlot = member->AddBattlegroundQueueId(bgQueueTypeId); // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); member->GetSession()->SendPacket(&data); sBattlegroundMgr->BuildGroupJoinedBattlegroundPacket(&data, err); member->GetSession()->SendPacket(&data); @@ -742,7 +742,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPacket& recvData) WorldPacket data; // send status packet (in queue) - sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype); + sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_WAIT_QUEUE, avgTime, 0, arenatype, 0); SendPacket(&data); sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, _player->GetGUIDLow(), _player->GetName().c_str()); } diff --git a/src/server/game/Handlers/ReferAFriendHandler.cpp b/src/server/game/Handlers/ReferAFriendHandler.cpp index a40e763b030..8a1793af557 100644 --- a/src/server/game/Handlers/ReferAFriendHandler.cpp +++ b/src/server/game/Handlers/ReferAFriendHandler.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index f116d695e17..292833c3955 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -928,6 +928,7 @@ enum TrinityStrings LANG_COMMAND_TICKETSHOWESCALATEDLIST = 2026, LANG_COMMAND_TICKETPENDING = 2027, LANG_COMMAND_TICKETRESET = 2028, + LANG_COMMAND_TICKETLISTRESPONSE = 2029, // Trinity strings 5000-9999 LANG_COMMAND_FREEZE = 5000, diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 479979f177f..3e30e95639f 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -590,6 +590,7 @@ void AddSC_boss_high_astromancer_solarian(); void AddSC_instance_the_eye(); void AddSC_the_eye(); void AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar +void AddSC_boss_gatewatcher_gyrokill(); void AddSC_boss_nethermancer_sepethrea(); void AddSC_boss_pathaleon_the_calculator(); void AddSC_boss_mechano_lord_capacitus(); @@ -1073,6 +1074,7 @@ void AddOutlandScripts() AddSC_instance_the_eye(); AddSC_the_eye(); AddSC_boss_gatewatcher_iron_hand(); //TK The Mechanar + AddSC_boss_gatewatcher_gyrokill(); AddSC_boss_nethermancer_sepethrea(); AddSC_boss_pathaleon_the_calculator(); AddSC_boss_mechano_lord_capacitus(); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8913cf2ac20..4e4698eb01b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -6162,7 +6162,7 @@ void Spell::EffectPlaySound(SpellEffIndex effIndex) if (!sSoundEntriesStore.LookupEntry(soundId)) { - sLog->outError(LOG_FILTER_SPELLS_AURAS, "EffectPlayerSound: Sound (Id: %u) not exist in spell %u.", soundId, m_spellInfo->Id); + sLog->outError(LOG_FILTER_SPELLS_AURAS, "EffectPlaySound: Sound (Id: %u) not exist in spell %u.", soundId, m_spellInfo->Id); return; } diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 1b7ecd34051..fe10b81b09d 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -182,6 +182,8 @@ std::string GmTicket::FormatMessageString(ChatHandler& handler, bool detailed) c ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTMESSAGE, _message.c_str()); if (!_comment.empty()) ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTCOMMENT, _comment.c_str()); + if (!_response.empty()) + ss << handler.PGetParseString(LANG_COMMAND_TICKETLISTRESPONSE, _response.c_str()); } return ss.str(); } diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 59315e1a813..54fe41a8a4d 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1534,7 +1534,7 @@ public: return false; Field* fields = result->Fetch(); - totalPlayerTime = fields[0].GetUInt32(); + totalPlayerTime = fields[0].GetUInt32(); level = fields[1].GetUInt8(); money = fields[2].GetUInt32(); accId = fields[3].GetUInt32(); @@ -1617,7 +1617,7 @@ public: if (result2) { Field* fields = result2->Fetch(); - banTime = int64(fields[1].GetBool() ? 0 : fields[0].GetUInt32()); + banTime = int64(fields[1].GetUInt64() ? 0 : fields[0].GetUInt32()); bannedby = fields[2].GetString(); banreason = fields[3].GetString(); } diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index 3215b533bce..aee01f47581 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -386,12 +386,13 @@ public: return true; } + std::string assignedTo = ticket->GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned SQLTransaction trans = SQLTransaction(NULL); ticket->SetUnassigned(); ticket->SaveToDB(trans); sTicketMgr->UpdateLastChange(); - std::string msg = ticket->FormatMessageString(*handler, NULL, ticket->GetAssignedToName().c_str(), + std::string msg = ticket->FormatMessageString(*handler, NULL, assignedTo.c_str(), handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console", NULL); handler->SendGlobalGMSysMessage(msg.c_str()); diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp index 047ad3f7096..da38fe9f54b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -66,7 +66,6 @@ public: { if (instance->GetBossState(DATA_PYROGAURD_EMBERSEER) == IN_PROGRESS) OpenDoors(false); - instance->SetBossState(DATA_PYROGAURD_EMBERSEER,NOT_STARTED); // respawn any dead Blackhand Incarcerators DoCast(me, SPELL_ENCAGED_EMBERSEER); //DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); @@ -83,7 +82,6 @@ public: void JustDied(Unit* /*killer*/) { - instance->SetBossState(DATA_PYROGAURD_EMBERSEER,DONE); OpenDoors(true); _JustDied(); } @@ -102,7 +100,6 @@ public: void UpdateAI(uint32 const diff) { if (!UpdateVictim()) - return; events.Update(diff); @@ -115,11 +112,11 @@ public: switch (eventId) { case EVENT_FIRENOVA: - DoCast(me->getVictim(), SPELL_FIRENOVA); + DoCastVictim(SPELL_FIRENOVA); events.ScheduleEvent(EVENT_FIRENOVA, 6 * IN_MILLISECONDS); break; case EVENT_FLAMEBUFFET: - DoCast(me->getVictim(), SPELL_FLAMEBUFFET); + DoCastVictim(SPELL_FLAMEBUFFET); events.ScheduleEvent(EVENT_FLAMEBUFFET, 14 * IN_MILLISECONDS); break; case EVENT_PYROBLAST: @@ -129,6 +126,7 @@ public: break; } } + DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp index 72a5712181e..06ba0036ef3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp @@ -215,7 +215,8 @@ public: switch (eventId) { case EVENT_PYROGUARD_EMBERSEER: - SetBossState(DATA_PYROGAURD_EMBERSEER,IN_PROGRESS); + if (GetBossState(DATA_PYROGAURD_EMBERSEER) == NOT_STARTED) + SetBossState(DATA_PYROGAURD_EMBERSEER, IN_PROGRESS); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 97fe57c5434..96293c635d6 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -146,7 +146,7 @@ public: me->CastSpell(me, SPELL_DK_INITIATE_VISUAL, true); if (Player* starter = Unit::GetPlayer(*me, playerGUID)) - Talk(SAY_EVENT_ATTACK); + sCreatureTextMgr->SendChat(me, SAY_EVENT_ATTACK, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, starter); phase = PHASE_TO_ATTACK; } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 4e2a1b6fa19..b596ad3f609 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -58,20 +58,21 @@ class boss_darkmaster_gandling : public CreatureScript void Reset() { + _Reset(); if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_GANDLING))) gate->SetGoState(GO_STATE_ACTIVE); } void JustDied(Unit* /*killer*/) { - if (instance) - instance->SetData(DATA_DARKMASTERGANDLING, DONE); + _JustDied(); if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_GATE_GANDLING))) gate->SetGoState(GO_STATE_ACTIVE); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_ARCANEMISSILES, 4500); events.ScheduleEvent(EVENT_SHADOWSHIELD, 12000); events.ScheduleEvent(EVENT_CURSE, 2000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp index fc54b90ab45..b2a91f4efe4 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp @@ -53,16 +53,9 @@ class boss_doctor_theolen_krastinov : public CreatureScript { boss_theolenkrastinovAI(Creature* creature) : BossAI(creature, DATA_DOCTORTHEOLENKRASTINOV) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_DOCTORTHEOLENKRASTINOV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_REND, 8000); events.ScheduleEvent(EVENT_BACKHAND, 9000); events.ScheduleEvent(EVENT_FRENZY, 1000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp index 64d827e41f1..d09a5ae96c9 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp @@ -50,16 +50,9 @@ class boss_illucia_barov : public CreatureScript { boss_illuciabarovAI(Creature* creature) : BossAI(creature,DATA_LADYILLUCIABAROV) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LADYILLUCIABAROV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_CURSEOFAGONY, 18000); events.ScheduleEvent(EVENT_SHADOWSHOCK, 9000); events.ScheduleEvent(EVENT_SILENCE, 5000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp index 1f55666acc3..5036158cae2 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp @@ -57,18 +57,14 @@ class boss_instructor_malicia : public CreatureScript void Reset() { + _Reset(); FlashCounter = 0; TouchCounter = 0; } - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_INSTRUCTORMALICIA, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_CALLOFGRAVES, 4000); events.ScheduleEvent(EVENT_CORRUPTION, 8000); events.ScheduleEvent(EVENT_RENEW, 32000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index 9d8f448964c..32c16a1c70c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -103,8 +103,7 @@ class boss_kirtonos_the_herald : public CreatureScript brazier->ResetDoorOrButton(); brazier->SetGoState(GO_STATE_READY); } - if (instance) - instance->SetData(DATA_KIRTONOS, DONE); + _JustDied(); } void EnterEvadeMode() diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp index c246e781bd8..e8fb4324d00 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp @@ -48,17 +48,13 @@ class boss_lord_alexei_barov : public CreatureScript void Reset() { + _Reset(); me->LoadCreaturesAddon(); } - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LORDALEXEIBAROV, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_IMMOLATE, 7000); events.ScheduleEvent(EVENT_VEILOFSHADOW, 15000); } diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp index 2239194a5e3..d06189d5054 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp @@ -50,16 +50,9 @@ class boss_lorekeeper_polkelt : public CreatureScript { boss_lorekeeperpolkeltAI(Creature* creature) : BossAI(creature, DATA_LOREKEEPERPOLKELT) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_LOREKEEPERPOLKELT, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_VOLATILEINFECTION, 38000); events.ScheduleEvent(EVENT_DARKPLAGUE, 8000); events.ScheduleEvent(EVENT_CORROSIVEACID, 45000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp index e2e04ae7b81..99b9fba958c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp @@ -42,7 +42,6 @@ enum Events EVENT_KNOCKAWAY = 4 }; - class boss_the_ravenian : public CreatureScript { public: boss_the_ravenian() : CreatureScript("boss_the_ravenian") { } @@ -51,16 +50,9 @@ class boss_the_ravenian : public CreatureScript { boss_theravenianAI(Creature* creature) : BossAI(creature, DATA_THERAVENIAN) {} - void Reset() {} - - void JustDied(Unit* /*killer*/) - { - if (instance) - instance->SetData(DATA_THERAVENIAN, DONE); - } - void EnterCombat(Unit* /*who*/) { + _EnterCombat(); events.ScheduleEvent(EVENT_TRAMPLE, 24000); events.ScheduleEvent(EVENT_CLEAVE, 15000); events.ScheduleEvent(EVENT_SUNDERINCLEAVE, 40000); diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp index d97372d4379..0da31fbe428 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp @@ -15,160 +15,215 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -Name: Instance_Scholomance -%Complete: 100 -Comment: -Category: Scholomance -EndScriptData */ - #include "ScriptMgr.h" #include "InstanceScript.h" -#include "scholomance.h" #include "Player.h" +#include "scholomance.h" -enum CreatureId -{ - NPC_DARKMASTER_GANDLING = 1853 -}; - -Position const GandlingLoc = {180.7712f, -5.428603f, 75.57024f, 1.291544f}; +Position const GandlingLoc = { 180.7712f, -5.428603f, 75.57024f, 1.291544f }; class instance_scholomance : public InstanceMapScript { -public: - instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { } - - InstanceScript* GetInstanceScript(InstanceMap* map) const - { - return new instance_scholomance_InstanceMapScript(map); - } - - struct instance_scholomance_InstanceMapScript : public InstanceScript - { - instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map) {} - - //Lord Alexei Barov, Doctor Theolen Krastinov, The Ravenian, Lorekeeper Polkelt, Instructor Malicia and the Lady Illucia Barov. - uint32 m_auiEncounter[MAX_ENCOUNTER]; - uint64 GateKirtonosGUID; - uint64 GateGandlingGUID; - uint64 GateMiliciaGUID; - uint64 GateTheolenGUID; - uint64 GatePolkeltGUID; - uint64 GateRavenianGUID; - uint64 GateBarovGUID; - uint64 GateIlluciaGUID; - uint64 BrazierOfTheHeraldGUID; - - void Initialize() + public: + instance_scholomance() : InstanceMapScript("instance_scholomance", 289) { } + + InstanceScript* GetInstanceScript(InstanceMap* map) const { - GateKirtonosGUID = 0; - GateGandlingGUID = 0; - GateMiliciaGUID = 0; - GateTheolenGUID = 0; - GatePolkeltGUID = 0; - GateRavenianGUID = 0; - GateBarovGUID = 0; - GateIlluciaGUID = 0; - BrazierOfTheHeraldGUID = 0; - - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - m_auiEncounter[i] = NOT_STARTED; + return new instance_scholomance_InstanceMapScript(map); } - void OnGameObjectCreate(GameObject* go) + struct instance_scholomance_InstanceMapScript : public InstanceScript { - switch (go->GetEntry()) + instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map) { - case GO_GATE_KIRTONOS: GateKirtonosGUID = go->GetGUID(); break; - case GO_GATE_GANDLING: GateGandlingGUID = go->GetGUID(); break; - case GO_GATE_MALICIA: GateMiliciaGUID = go->GetGUID(); break; - case GO_GATE_THEOLEN: GateTheolenGUID = go->GetGUID(); break; - case GO_GATE_POLKELT: GatePolkeltGUID = go->GetGUID(); break; - case GO_GATE_RAVENIAN: GateRavenianGUID = go->GetGUID(); break; - case GO_GATE_BAROV: GateBarovGUID = go->GetGUID(); break; - case GO_GATE_ILLUCIA: GateIlluciaGUID = go->GetGUID(); break; - case GO_BRAZIER_OF_THE_HERALD: BrazierOfTheHeraldGUID = go->GetGUID(); break; + SetBossNumber(EncounterCount); + GateKirtonosGUID = 0; + GateGandlingGUID = 0; + GateMiliciaGUID = 0; + GateTheolenGUID = 0; + GatePolkeltGUID = 0; + GateRavenianGUID = 0; + GateBarovGUID = 0; + GateIlluciaGUID = 0; + BrazierOfTheHeraldGUID = 0; } - } - void SetData(uint32 type, uint32 data) - { - switch (type) + void OnGameObjectCreate(GameObject* go) { - case DATA_LORDALEXEIBAROV: - m_auiEncounter[DATA_LORDALEXEIBAROV] = data; - CheckToSpawnGandling(); - break; - case DATA_DOCTORTHEOLENKRASTINOV: - m_auiEncounter[DATA_DOCTORTHEOLENKRASTINOV] = data; - CheckToSpawnGandling(); - break; - case DATA_THERAVENIAN: - m_auiEncounter[DATA_THERAVENIAN] = data; - CheckToSpawnGandling(); - break; - case DATA_LOREKEEPERPOLKELT: - m_auiEncounter[DATA_LOREKEEPERPOLKELT] = data; - CheckToSpawnGandling(); - break; - case DATA_INSTRUCTORMALICIA: - m_auiEncounter[DATA_INSTRUCTORMALICIA] = data; - CheckToSpawnGandling(); - break; - case DATA_LADYILLUCIABAROV: - m_auiEncounter[DATA_LADYILLUCIABAROV] = data; - CheckToSpawnGandling(); - break; - case DATA_DARKMASTERGANDLING: - m_auiEncounter[DATA_DARKMASTERGANDLING] = data; - break; - case DATA_KIRTONOS: - m_auiEncounter[DATA_KIRTONOS] = data; - break; + switch (go->GetEntry()) + { + case GO_GATE_KIRTONOS: + GateKirtonosGUID = go->GetGUID(); + break; + case GO_GATE_GANDLING: + GateGandlingGUID = go->GetGUID(); + break; + case GO_GATE_MALICIA: + GateMiliciaGUID = go->GetGUID(); + break; + case GO_GATE_THEOLEN: + GateTheolenGUID = go->GetGUID(); + break; + case GO_GATE_POLKELT: + GatePolkeltGUID = go->GetGUID(); + break; + case GO_GATE_RAVENIAN: + GateRavenianGUID = go->GetGUID(); + break; + case GO_GATE_BAROV: + GateBarovGUID = go->GetGUID(); + break; + case GO_GATE_ILLUCIA: + GateIlluciaGUID = go->GetGUID(); + break; + case GO_BRAZIER_OF_THE_HERALD: + BrazierOfTheHeraldGUID = go->GetGUID(); + break; + default: + break; + } } - } - uint32 GetData(uint32 type) const - { - return type == (m_auiEncounter[DATA_LORDALEXEIBAROV] == DONE) && (m_auiEncounter[DATA_DOCTORTHEOLENKRASTINOV] == DONE) && - (m_auiEncounter[DATA_THERAVENIAN] == DONE) && (m_auiEncounter[DATA_LOREKEEPERPOLKELT] == DONE) && - (m_auiEncounter[DATA_INSTRUCTORMALICIA] == DONE) && (m_auiEncounter[DATA_LADYILLUCIABAROV] == DONE) - ? IN_PROGRESS : 0; - } + bool SetBossState(uint32 type, EncounterState state) + { + if (!InstanceScript::SetBossState(type, state)) + return false; + + switch (type) + { + case DATA_LORDALEXEIBAROV: + case DATA_DOCTORTHEOLENKRASTINOV: + case DATA_THERAVENIAN: + case DATA_LOREKEEPERPOLKELT: + case DATA_INSTRUCTORMALICIA: + case DATA_LADYILLUCIABAROV: + CheckToSpawnGandling(); + break; + default: + break; + } + + return true; + } - uint64 GetData64(uint32 type) const - { - switch (type) + uint64 GetData64(uint32 type) const { - case GO_GATE_KIRTONOS: return GateKirtonosGUID; break; - case GO_GATE_GANDLING: return GateGandlingGUID; break; - case GO_GATE_MALICIA: return GateMiliciaGUID; break; - case GO_GATE_THEOLEN: return GateTheolenGUID; break; - case GO_GATE_POLKELT: return GatePolkeltGUID; break; - case GO_GATE_RAVENIAN: return GateRavenianGUID; break; - case GO_GATE_BAROV: return GateBarovGUID; break; - case GO_GATE_ILLUCIA: return GateIlluciaGUID; break; - case GO_BRAZIER_OF_THE_HERALD: return BrazierOfTheHeraldGUID; break; + switch (type) + { + case GO_GATE_KIRTONOS: + return GateKirtonosGUID; + case GO_GATE_GANDLING: + return GateGandlingGUID; + case GO_GATE_MALICIA: + return GateMiliciaGUID; + case GO_GATE_THEOLEN: + return GateTheolenGUID; + case GO_GATE_POLKELT: + return GatePolkeltGUID; + case GO_GATE_RAVENIAN: + return GateRavenianGUID; + case GO_GATE_BAROV: + return GateBarovGUID; + case GO_GATE_ILLUCIA: + return GateIlluciaGUID; + case GO_BRAZIER_OF_THE_HERALD: + return BrazierOfTheHeraldGUID; + default: + break; + } + + return 0; } - return 0; - } + bool CheckPreBosses(uint32 bossId) const + { + switch (bossId) + { + case DATA_DARKMASTERGANDLING: + if (GetBossState(DATA_LORDALEXEIBAROV) != DONE) + return false; + if (GetBossState(DATA_DOCTORTHEOLENKRASTINOV) != DONE) + return false; + if (GetBossState(DATA_THERAVENIAN) != DONE) + return false; + if (GetBossState(DATA_LOREKEEPERPOLKELT) != DONE) + return false; + if (GetBossState(DATA_INSTRUCTORMALICIA) != DONE) + return false; + if (GetBossState(DATA_LADYILLUCIABAROV) != DONE) + return false; + if (GetBossState(DATA_DARKMASTERGANDLING) == DONE) + return false; + break; + default: + break; + } + + return true; + } - void CheckToSpawnGandling() - { - if (GetData(DATA_DARKMASTERGANDLING) == IN_PROGRESS) + void CheckToSpawnGandling() + { + if (CheckPreBosses(DATA_DARKMASTERGANDLING)) + instance->SummonCreature(NPC_DARKMASTER_GANDLING, GandlingLoc); + } + + std::string GetSaveData() + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "S O " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); + } + + void Load(const char* str) { - Map::PlayerList const &PlayerList = instance->GetPlayers(); - if (PlayerList.isEmpty()) + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; - Map::PlayerList::const_iterator i = PlayerList.begin(); - if (Player* i_pl = i->getSource()) - i_pl->SummonCreature(NPC_DARKMASTER_GANDLING, GandlingLoc); + if (dataHead1 == 'S' && dataHead2 == 'O') + { + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } + + CheckToSpawnGandling(); + } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; } - } - }; + + protected: + uint64 GateKirtonosGUID; + uint64 GateGandlingGUID; + uint64 GateMiliciaGUID; + uint64 GateTheolenGUID; + uint64 GatePolkeltGUID; + uint64 GateRavenianGUID; + uint64 GateBarovGUID; + uint64 GateIlluciaGUID; + uint64 BrazierOfTheHeraldGUID; + }; }; void AddSC_instance_scholomance() diff --git a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h index 2d9c8c7bbe7..5c38cc39e3d 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h +++ b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h @@ -18,6 +18,8 @@ #ifndef DEF_SCHOLOMANCE_H #define DEF_SCHOLOMANCE_H +uint32 const EncounterCount = 8; + enum DataTypes { DATA_DOCTORTHEOLENKRASTINOV = 0, @@ -30,6 +32,11 @@ enum DataTypes DATA_KIRTONOS = 7 }; +enum CreatureIds +{ + NPC_DARKMASTER_GANDLING = 1853 +}; + enum GameobjectIds { GO_GATE_KIRTONOS = 175570, @@ -43,9 +50,4 @@ enum GameobjectIds GO_BRAZIER_OF_THE_HERALD = 175564 }; -enum Misc -{ - MAX_ENCOUNTER = 8 -}; - #endif diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index 87301f43745..22c4da74d44 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -399,35 +399,6 @@ class go_altar_of_archaedas : public GameObjectScript } }; -/* ScriptData -SDName: go_altar_of_the_keepers -SD%Complete: 100 -SDComment: Need 1 person to activate to open the altar. One by one the StoneKeepers will activate. After all four are dead than the door will open. -SDCategory: Uldaman -EndScriptData */ - -class go_altar_of_the_keepers : public GameObjectScript -{ - public: - - go_altar_of_the_keepers() - : GameObjectScript("go_altar_of_the_keepers") - { - } - - bool OnGossipHello(Player* player, GameObject* /*go*/) - { - InstanceScript* instance = player->GetInstanceScript(); - if (!instance) - return false; - - player->CastSpell (player, SPELL_BOSS_OBJECT_VISUAL, false); - - instance->SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate the Stone Keepers - return false; - } -}; - //This is the actual function called only once durring InitScripts() //It must define all handled functions that are to be run in this script void AddSC_boss_archaedas() @@ -436,6 +407,5 @@ void AddSC_boss_archaedas() new mob_archaedas_minions(); new mob_stonekeepers(); new go_altar_of_archaedas(); - new go_altar_of_the_keepers(); } diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index 138243a9ce2..ac26056c6e6 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -33,38 +33,38 @@ enum eSpells SPELL_AWAKEN_VAULT_WALKER = 10258, }; +enum Events +{ + EVENT_SUB_BOSS_AGGRO = 2228 +}; + class instance_uldaman : public InstanceMapScript { public: - instance_uldaman() - : InstanceMapScript("instance_uldaman", 70) - { - } + instance_uldaman() : InstanceMapScript("instance_uldaman", 70) {} struct instance_uldaman_InstanceMapScript : public InstanceScript { - instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) - { - } + instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) {} void Initialize() { memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - uiArchaedasGUID = 0; - uiIronayaGUID = 0; - uiWhoWokeuiArchaedasGUID = 0; + archaedasGUID = 0; + ironayaGUID = 0; + whoWokeuiArchaedasGUID = 0; - uiAltarOfTheKeeperTempleDoor = 0; - uiArchaedasTempleDoor = 0; - uiAncientVaultDoor = 0; + altarOfTheKeeperTempleDoor = 0; + archaedasTempleDoor = 0; + ancientVaultDoor = 0; - uiIronayaSealDoor = 0; + ironayaSealDoor = 0; - uiKeystoneGUID = 0; + keystoneGUID = 0; - uiIronayaSealDoorTimer = 27000; //animation time - bKeystoneCheck = false; + ironayaSealDoorTimer = 27000; //animation time + keystoneCheck = false; } bool IsEncounterInProgress() const @@ -76,25 +76,25 @@ class instance_uldaman : public InstanceMapScript return false; } - uint64 uiArchaedasGUID; - uint64 uiIronayaGUID; - uint64 uiWhoWokeuiArchaedasGUID; + uint64 archaedasGUID; + uint64 ironayaGUID; + uint64 whoWokeuiArchaedasGUID; - uint64 uiAltarOfTheKeeperTempleDoor; - uint64 uiArchaedasTempleDoor; - uint64 uiAncientVaultDoor; - uint64 uiIronayaSealDoor; + uint64 altarOfTheKeeperTempleDoor; + uint64 archaedasTempleDoor; + uint64 ancientVaultDoor; + uint64 ironayaSealDoor; - uint64 uiKeystoneGUID; + uint64 keystoneGUID; - uint32 uiIronayaSealDoorTimer; - bool bKeystoneCheck; + uint32 ironayaSealDoorTimer; + bool keystoneCheck; - std::vector<uint64> vStoneKeeper; - std::vector<uint64> vAltarOfTheKeeperCount; - std::vector<uint64> vVaultWalker; - std::vector<uint64> vEarthenGuardian; - std::vector<uint64> vArchaedasWallMinions; // minions lined up around the wall + std::vector<uint64> stoneKeepers; + std::vector<uint64> altarOfTheKeeperCounts; + std::vector<uint64> vaultWalkers; + std::vector<uint64> earthenGuardians; + std::vector<uint64> archaedasWallMinions; // minions lined up around the wall uint32 m_auiEncounter[MAX_ENCOUNTER]; std::string str_data; @@ -104,14 +104,14 @@ class instance_uldaman : public InstanceMapScript switch (go->GetEntry()) { case GO_ALTAR_OF_THE_KEEPER_TEMPLE_DOOR: // lock the door - uiAltarOfTheKeeperTempleDoor = go->GetGUID(); + altarOfTheKeeperTempleDoor = go->GetGUID(); if (m_auiEncounter[0] == DONE) HandleGameObject(0, true, go); break; case GO_ARCHAEDAS_TEMPLE_DOOR: - uiArchaedasTempleDoor = go->GetGUID(); + archaedasTempleDoor = go->GetGUID(); if (m_auiEncounter[0] == DONE) HandleGameObject(0, true, go); @@ -120,21 +120,21 @@ class instance_uldaman : public InstanceMapScript case GO_ANCIENT_VAULT_DOOR: go->SetGoState(GO_STATE_READY); go->SetUInt32Value(GAMEOBJECT_FLAGS, 33); - uiAncientVaultDoor = go->GetGUID(); + ancientVaultDoor = go->GetGUID(); if (m_auiEncounter[1] == DONE) HandleGameObject(0, true, go); break; case GO_IRONAYA_SEAL_DOOR: - uiIronayaSealDoor = go->GetGUID(); + ironayaSealDoor = go->GetGUID(); if (m_auiEncounter[2] == DONE) HandleGameObject(0, true, go); break; case GO_KEYSTONE: - uiKeystoneGUID = go->GetGUID(); + keystoneGUID = go->GetGUID(); if (m_auiEncounter[2] == DONE) { @@ -174,28 +174,31 @@ class instance_uldaman : public InstanceMapScript void ActivateStoneKeepers() { - for (std::vector<uint64>::const_iterator i = vStoneKeeper.begin(); i != vStoneKeeper.end(); ++i) + if (GetData(DATA_ALTAR_DOORS) != DONE) { - Creature* target = instance->GetCreature(*i); - if (!target || !target->isAlive() || target->getFaction() == 14) - continue; - target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); - target->setFaction(14); - target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - return; // only want the first one we find + for (std::vector<uint64>::const_iterator i = stoneKeepers.begin(); i != stoneKeepers.end(); ++i) + { + Creature* target = instance->GetCreature(*i); + if (!target || !target->isAlive()) + continue; + target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE); + target->setFaction(14); + target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + return; // only want the first one we find + } + // if we get this far than all four are dead so open the door + SetData(DATA_ALTAR_DOORS, DONE); + SetDoor(archaedasTempleDoor, true); //open next the door too } - // if we get this far than all four are dead so open the door - SetData(DATA_ALTAR_DOORS, DONE); - SetDoor(uiArchaedasTempleDoor, true); //open next the door too } void ActivateWallMinions() { - Creature* archaedas = instance->GetCreature(uiArchaedasGUID); + Creature* archaedas = instance->GetCreature(archaedasGUID); if (!archaedas) return; - for (std::vector<uint64>::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector<uint64>::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || !target->isAlive() || target->getFaction() == 14) @@ -213,7 +216,7 @@ class instance_uldaman : public InstanceMapScript void DeActivateMinions() { // first despawn any aggroed wall minions - for (std::vector<uint64>::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector<uint64>::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -223,7 +226,7 @@ class instance_uldaman : public InstanceMapScript } // Vault Walkers - for (std::vector<uint64>::const_iterator i = vVaultWalker.begin(); i != vVaultWalker.end(); ++i) + for (std::vector<uint64>::const_iterator i = vaultWalkers.begin(); i != vaultWalkers.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -233,7 +236,7 @@ class instance_uldaman : public InstanceMapScript } // Earthen Guardians - for (std::vector<uint64>::const_iterator i = vEarthenGuardian.begin(); i != vEarthenGuardian.end(); ++i) + for (std::vector<uint64>::const_iterator i = earthenGuardians.begin(); i != earthenGuardians.end(); ++i) { Creature* target = instance->GetCreature(*i); if (!target || target->isDead() || target->getFaction() != 14) @@ -245,20 +248,20 @@ class instance_uldaman : public InstanceMapScript void ActivateArchaedas(uint64 target) { - Creature* archaedas = instance->GetCreature(uiArchaedasGUID); + Creature* archaedas = instance->GetCreature(archaedasGUID); if (!archaedas) return; if (Unit::GetUnit(*archaedas, target)) { archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN, false); - uiWhoWokeuiArchaedasGUID = target; + whoWokeuiArchaedasGUID = target; } } void ActivateIronaya() { - Creature* ironaya = instance->GetCreature(uiIronayaGUID); + Creature* ironaya = instance->GetCreature(ironayaGUID); if (!ironaya) return; @@ -270,7 +273,7 @@ class instance_uldaman : public InstanceMapScript void RespawnMinions() { // first respawn any aggroed wall minions - for (std::vector<uint64>::const_iterator i = vArchaedasWallMinions.begin(); i != vArchaedasWallMinions.end(); ++i) + for (std::vector<uint64>::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -282,7 +285,7 @@ class instance_uldaman : public InstanceMapScript } // Vault Walkers - for (std::vector<uint64>::const_iterator i = vVaultWalker.begin(); i != vVaultWalker.end(); ++i) + for (std::vector<uint64>::const_iterator i = vaultWalkers.begin(); i != vaultWalkers.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -294,7 +297,7 @@ class instance_uldaman : public InstanceMapScript } // Earthen Guardians - for (std::vector<uint64>::const_iterator i = vEarthenGuardian.begin(); i != vEarthenGuardian.end(); ++i) + for (std::vector<uint64>::const_iterator i = earthenGuardians.begin(); i != earthenGuardians.end(); ++i) { Creature* target = instance->GetCreature(*i); if (target && target->isDead()) @@ -307,21 +310,21 @@ class instance_uldaman : public InstanceMapScript } void Update(uint32 diff) { - if (!bKeystoneCheck) + if (!keystoneCheck) return; - if (uiIronayaSealDoorTimer <= diff) + if (ironayaSealDoorTimer <= diff) { ActivateIronaya(); - SetDoor(uiIronayaSealDoor, true); - BlockGO(uiKeystoneGUID); + SetDoor(ironayaSealDoor, true); + BlockGO(keystoneGUID); SetData(DATA_IRONAYA_DOOR, DONE); //save state - bKeystoneCheck = false; + keystoneCheck = false; } else - uiIronayaSealDoorTimer -= diff; + ironayaSealDoorTimer -= diff; } void SetData(uint32 type, uint32 data) @@ -331,15 +334,15 @@ class instance_uldaman : public InstanceMapScript case DATA_ALTAR_DOORS: m_auiEncounter[0] = data; if (data == DONE) - SetDoor(uiAltarOfTheKeeperTempleDoor, true); + SetDoor(altarOfTheKeeperTempleDoor, true); break; case DATA_ANCIENT_DOOR: m_auiEncounter[1] = data; if (data == DONE) //archeadas defeat { - SetDoor(uiArchaedasTempleDoor, true); //re open enter door - SetDoor(uiAncientVaultDoor, true); + SetDoor(archaedasTempleDoor, true); //re open enter door + SetDoor(ancientVaultDoor, true); } break; @@ -356,7 +359,7 @@ class instance_uldaman : public InstanceMapScript { case NOT_STARTED: if (m_auiEncounter[0] == DONE) //if players opened the doors - SetDoor(uiArchaedasTempleDoor, true); + SetDoor(archaedasTempleDoor, true); RespawnMinions(); break; @@ -372,7 +375,7 @@ class instance_uldaman : public InstanceMapScript break; case DATA_IRONAYA_SEAL: - bKeystoneCheck = true; + keystoneCheck = true; break; } @@ -396,7 +399,7 @@ class instance_uldaman : public InstanceMapScript if (type == 0) { ActivateArchaedas (data); - SetDoor(uiArchaedasTempleDoor, false); //close when event is started + SetDoor(archaedasTempleDoor, false); //close when event is started } } @@ -433,34 +436,34 @@ class instance_uldaman : public InstanceMapScript { case 4857: // Stone Keeper SetFrozenState (creature); - vStoneKeeper.push_back(creature->GetGUID()); + stoneKeepers.push_back(creature->GetGUID()); break; case 7309: // Earthen Custodian - vArchaedasWallMinions.push_back(creature->GetGUID()); + archaedasWallMinions.push_back(creature->GetGUID()); break; case 7077: // Earthen Hallshaper - vArchaedasWallMinions.push_back(creature->GetGUID()); + archaedasWallMinions.push_back(creature->GetGUID()); break; case 7076: // Earthen Guardian - vEarthenGuardian.push_back(creature->GetGUID()); + earthenGuardians.push_back(creature->GetGUID()); break; case 7228: // Ironaya - uiIronayaGUID = creature->GetGUID(); + ironayaGUID = creature->GetGUID(); if (m_auiEncounter[2] != DONE) SetFrozenState (creature); break; case 10120: // Vault Walker - vVaultWalker.push_back(creature->GetGUID()); + vaultWalkers.push_back(creature->GetGUID()); break; case 2748: // Archaedas - uiArchaedasGUID = creature->GetGUID(); + archaedasGUID = creature->GetGUID(); break; } @@ -471,25 +474,37 @@ class instance_uldaman : public InstanceMapScript switch (identifier) { case 0: - return uiWhoWokeuiArchaedasGUID; + return whoWokeuiArchaedasGUID; case 1: case 2: case 3: case 4: - return vVaultWalker.at(identifier - 1); + return vaultWalkers.at(identifier - 1); case 5: case 6: case 7: case 8: case 9: case 10: - return vEarthenGuardian.at(identifier - 5); + return earthenGuardians.at(identifier - 5); default: break; } return 0; } // end GetData64 + + void ProcessEvent(WorldObject* /*gameObject*/, uint32 eventId) + { + switch (eventId) + { + case EVENT_SUB_BOSS_AGGRO: + SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate the Stone Keepers + break; + default: + break; + } + } }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index 935e54eae0c..577423adb39 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -45,32 +45,37 @@ EndScriptData */ #define YELL_BERSERK "Whatch you be doing? Pissin' yourselves..." #define SOUND_BERSERK 12025 -#define SPELL_DUAL_WIELD 29651 -#define SPELL_SABER_LASH 43267 -#define SPELL_FRENZY 43139 -#define SPELL_FLAMESHOCK 43303 -#define SPELL_EARTHSHOCK 43305 -#define SPELL_TRANSFORM_SPLIT 43142 -#define SPELL_TRANSFORM_SPLIT2 43573 -#define SPELL_TRANSFORM_MERGE 43271 -#define SPELL_SUMMON_LYNX 43143 -#define SPELL_SUMMON_TOTEM 43302 -#define SPELL_BERSERK 45078 - -#define MOB_SPIRIT_LYNX 24143 -#define SPELL_LYNX_FRENZY 43290 -#define SPELL_SHRED_ARMOR 43243 - -#define MOB_TOTEM 24224 +enum Spells +{ + SPELL_DUAL_WIELD = 29651, + SPELL_SABER_LASH = 43267, + SPELL_FRENZY = 43139, + SPELL_FLAMESHOCK = 43303, + SPELL_EARTHSHOCK = 43305, + SPELL_TRANSFORM_SPLIT = 43142, + SPELL_TRANSFORM_SPLIT2 = 43573, + SPELL_TRANSFORM_MERGE = 43271, + SPELL_SUMMON_LYNX = 43143, + SPELL_SUMMON_TOTEM = 43302, + SPELL_BERSERK = 45078, + SPELL_LYNX_FRENZY = 43290, // Used by Spirit Lynx + SPELL_SHRED_ARMOR = 43243 // Used by Spirit Lynx +}; + +enum Hal_CreatureIds +{ + NPC_SPIRIT_LYNX = 24143, + NPC_TOTEM = 24224 +}; enum PhaseHalazzi { - PHASE_NONE = 0, - PHASE_LYNX = 1, - PHASE_SPLIT = 2, - PHASE_HUMAN = 3, - PHASE_MERGE = 4, - PHASE_ENRAGE = 5 + PHASE_NONE = 0, + PHASE_LYNX = 1, + PHASE_SPLIT = 2, + PHASE_HUMAN = 3, + PHASE_MERGE = 4, + PHASE_ENRAGE = 5 }; class boss_halazzi : public CreatureScript @@ -134,7 +139,7 @@ class boss_halazzi : public CreatureScript void JustSummoned(Creature* summon) { summon->AI()->AttackStart(me->getVictim()); - if (summon->GetEntry() == MOB_SPIRIT_LYNX) + if (summon->GetEntry() == NPC_SPIRIT_LYNX) LynxGUID = summon->GetGUID(); } @@ -183,7 +188,7 @@ class boss_halazzi : public CreatureScript break; case PHASE_HUMAN: //DoCast(me, SPELL_SUMMON_LYNX, true); - DoSpawnCreature(MOB_SPIRIT_LYNX, 5, 5, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); + DoSpawnCreature(NPC_SPIRIT_LYNX, 5, 5, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); me->SetMaxHealth(400000); me->SetHealth(400000); ShockTimer = 10000; @@ -413,3 +418,4 @@ void AddSC_boss_halazzi() new mob_halazzi_lynx(); } + diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 54a5f5c706c..1334d587464 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -27,85 +27,87 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum eYells +enum Says { SAY_AGGRO = 0, SAY_FEAST_PANTHER = 1, - SAY_DEATH = 2, + SAY_DEATH = 2 }; -enum eSpells +enum Spells { - SPELL_SHADOWWORDPAIN = 23952, + SPELL_SHADOW_WORD_PAIN = 23952, SPELL_GOUGE = 24698, SPELL_MARK = 24210, - SPELL_CLEAVE = 26350, //Perhaps not right. Not a red aura... - SPELL_PANTHER_TRANSFORM = 24190, + SPELL_CLEAVE = 26350, // Perhaps not right. Not a red aura... + SPELL_PANTHER_TRANSFORM = 24190 +}; + +enum Events +{ + EVENT_SHADOW_WORD_PAIN = 0, + EVENT_GOUGE = 1, + EVENT_MARK = 2, + EVENT_CLEAVE = 3, + EVENT_VANISH = 4, + EVENT_VISIBLE = 5, + EVENT_SUMMON = 6 +}; + +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2 +}; +enum ModelIds +{ MODEL_ID_NORMAL = 15218, MODEL_ID_PANTHER = 15215, - MODEL_ID_BLANK = 11686, + MODEL_ID_BLANK = 11686 +}; - NPC_ZULIAN_PROWLER = 15101 +Position const PosSummonProwlers[2] = +{ + { -11532.7998f, -1649.6734f, 41.4800f, 0.0f }, + { -11532.9970f, -1606.4840f, 41.2979f, 0.0f } }; class boss_arlokk : public CreatureScript { - public: + public: boss_arlokk() : CreatureScript("boss_arlokk") {} - boss_arlokk() - : CreatureScript("boss_arlokk") + struct boss_arlokkAI : public BossAI { - } - - struct boss_arlokkAI : public ScriptedAI - { - boss_arlokkAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; - - uint32 m_uiShadowWordPain_Timer; - uint32 m_uiGouge_Timer; - uint32 m_uiMark_Timer; - uint32 m_uiCleave_Timer; - uint32 m_uiVanish_Timer; - uint32 m_uiVisible_Timer; - - uint32 m_uiSummon_Timer; - uint32 m_uiSummonCount; - - Unit* m_pMarkedTarget; - uint64 MarkedTargetGUID; + boss_arlokkAI(Creature* creature) : BossAI(creature, DATA_ARLOKK) {} - bool m_bIsPhaseTwo; - bool m_bIsVanished; + uint32 summonCount; + // Unit* markedTarget; + uint64 markedTargetGUID; void Reset() { - m_uiShadowWordPain_Timer = 8000; - m_uiGouge_Timer = 14000; - m_uiMark_Timer = 35000; - m_uiCleave_Timer = 4000; - m_uiVanish_Timer = 60000; - m_uiVisible_Timer = 6000; - - m_uiSummon_Timer = 5000; - m_uiSummonCount = 0; - - m_bIsPhaseTwo = false; - m_bIsVanished = false; - - MarkedTargetGUID = 0; + summonCount = 0; + markedTargetGUID = 0; + me->SetDisplayId(MODEL_ID_NORMAL); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_DEATH); me->SetDisplayId(MODEL_ID_NORMAL); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 8000, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_MARK, 35000, 0, PHASE_ONE); + events.ScheduleEvent(EVENT_SUMMON, 5000); + events.ScheduleEvent(EVENT_VANISH, 60000); Talk(SAY_AGGRO); } @@ -113,147 +115,88 @@ class boss_arlokk : public CreatureScript { if (instance) instance->SetData(DATA_ARLOKK, NOT_STARTED); - - //we should be summoned, so despawn me->DespawnOrUnsummon(); } - void JustDied(Unit* /*killer*/) - { - Talk(SAY_DEATH); - - me->SetDisplayId(MODEL_ID_NORMAL); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - if (instance) - instance->SetData(DATA_ARLOKK, DONE); - } - void DoSummonPhanters() { - if (MarkedTargetGUID) - Talk(SAY_FEAST_PANTHER, MarkedTargetGUID); - - me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.7998f, -1649.6734f, 41.4800f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - me->SummonCreature(NPC_ZULIAN_PROWLER, -11532.9970f, -1606.4840f, 41.2979f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (markedTargetGUID) + Talk(SAY_FEAST_PANTHER, markedTargetGUID); + me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + me->SummonCreature(NPC_ZULIAN_PROWLER, PosSummonProwlers[1], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); } void JustSummoned(Creature* summoned) { - if (Unit* pMarkedTarget = Unit::GetUnit(*me, MarkedTargetGUID)) - summoned->AI()->AttackStart(pMarkedTarget); - - ++m_uiSummonCount; + if (Unit* markedTarget = Unit::GetUnit(*me, markedTargetGUID)) + summoned->AI()->AttackStart(markedTarget); + ++summonCount; } - void UpdateAI(const uint32 uiDiff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - if (!m_bIsPhaseTwo) - { - if (m_uiShadowWordPain_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_SHADOWWORDPAIN); - m_uiShadowWordPain_Timer = 15000; - } - else - m_uiShadowWordPain_Timer -= uiDiff; - - if (m_uiMark_Timer <= uiDiff) - { - Unit* pMarkedTarget = SelectTarget(SELECT_TARGET_RANDOM, 0); + events.Update(diff); - if (pMarkedTarget) - { - DoCast(pMarkedTarget, SPELL_MARK); - MarkedTargetGUID = pMarkedTarget->GetGUID(); - } - else - sLog->outError(LOG_FILTER_TSCR, "boss_arlokk could not accuire pMarkedTarget."); - - m_uiMark_Timer = 15000; - } - else - m_uiMark_Timer -= uiDiff; - } - else - { - //Cleave_Timer - if (m_uiCleave_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_CLEAVE); - m_uiCleave_Timer = 16000; - } - else - m_uiCleave_Timer -= uiDiff; - - //Gouge_Timer - if (m_uiGouge_Timer <= uiDiff) - { - DoCast(me->getVictim(), SPELL_GOUGE); - - DoModifyThreatPercent(me->getVictim(), -80); - - m_uiGouge_Timer = 17000+rand()%10000; - } - else - m_uiGouge_Timer -= uiDiff; - } + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (m_uiSummonCount <= 30) + while (uint32 eventId = events.ExecuteEvent()) { - if (m_uiSummon_Timer <= uiDiff) + switch (eventId) { - DoSummonPhanters(); - m_uiSummon_Timer = 5000; + case EVENT_SHADOW_WORD_PAIN: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 15000, 0, PHASE_ONE); + break; + case EVENT_MARK: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_MARK); + events.ScheduleEvent(EVENT_MARK, 15000, 0, PHASE_ONE); + break; + case EVENT_CLEAVE: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_CLEAVE, 16000, 0, PHASE_TWO); + break; + case EVENT_GOUGE: + DoCastVictim(SPELL_SHADOW_WORD_PAIN, true); + events.ScheduleEvent(EVENT_GOUGE, urand(17000, 27000), 0, PHASE_TWO); + break; + case EVENT_SUMMON: + if (summonCount <= 30) + DoSummonPhanters(); + events.ScheduleEvent(EVENT_SUMMON, 5000); + break; + case EVENT_VANISH: + me->SetDisplayId(MODEL_ID_BLANK); + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->AttackStop(); + DoResetThreat(); + events.ScheduleEvent(EVENT_VISIBLE, 6000); + break; + case EVENT_VISIBLE: + { + me->SetDisplayId(MODEL_ID_PANTHER); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + me->UpdateDamagePhysical(BASE_ATTACK); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + AttackStart(target); + events.ScheduleEvent(EVENT_VANISH, 39000); + events.ScheduleEvent(EVENT_CLEAVE, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_GOUGE, 14000, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; + } + default: + break; } - else - m_uiSummon_Timer -= uiDiff; } - if (m_uiVanish_Timer <= uiDiff) - { - //Invisble Model - me->SetDisplayId(MODEL_ID_BLANK); - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - me->AttackStop(); - DoResetThreat(); - - m_bIsVanished = true; - - m_uiVanish_Timer = 45000; - m_uiVisible_Timer = 6000; - } - else - m_uiVanish_Timer -= uiDiff; - - if (m_bIsVanished) - { - if (m_uiVisible_Timer <= uiDiff) - { - //The Panther Model - me->SetDisplayId(MODEL_ID_PANTHER); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); - me->UpdateDamagePhysical(BASE_ATTACK); - - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - AttackStart(target); - - m_bIsPhaseTwo = true; - m_bIsVanished = false; - } - else - m_uiVisible_Timer -= uiDiff; - } - else - DoMeleeAttackIfReady(); + DoMeleeAttackIfReady(); } }; @@ -265,10 +208,7 @@ class boss_arlokk : public CreatureScript class go_gong_of_bethekk : public GameObjectScript { - public: - go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") - { - } + public: go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") {} bool OnGossipHello(Player* /*player*/, GameObject* go) { @@ -276,7 +216,6 @@ class go_gong_of_bethekk : public GameObjectScript { if (instance->GetData(DATA_ARLOKK) == DONE || instance->GetData(DATA_ARLOKK) == IN_PROGRESS) return true; - instance->SetData(DATA_ARLOKK, IN_PROGRESS); return true; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp index e7d54aecb31..70399b6934c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp @@ -25,62 +25,78 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "zulgurub.h" -#define SPELL_FROSTBREATH 16099 -#define SPELL_MASSIVEGEYSER 22421 //Not working. Cause its a summon... -#define SPELL_SLAM 24326 +enum Spells +{ + SPELL_FROSTBREATH = 16099, + SPELL_MASSIVEGEYSER = 22421, // Not working. (summon) + SPELL_SLAM = 24326 +}; + +enum Events +{ + EVENT_FROSTBREATH = 0, + EVENT_MASSIVEGEYSER = 1, + EVENT_SLAM = 2 +}; -class boss_gahzranka : public CreatureScript +class boss_gahzranka : public CreatureScript // gahzranka { - public: - boss_gahzranka() : CreatureScript("boss_gahzranka") { } + public: boss_gahzranka() : CreatureScript("boss_gahzranka") {} - struct boss_gahzrankaAI : public ScriptedAI + struct boss_gahzrankaAI : public BossAI { - boss_gahzrankaAI(Creature* creature) : ScriptedAI(creature) { } - uint32 Frostbreath_Timer; - uint32 MassiveGeyser_Timer; - uint32 Slam_Timer; + boss_gahzrankaAI(Creature* creature) : BossAI(creature, DATA_GAHZRANKA) {} void Reset() { - Frostbreath_Timer = 8000; - MassiveGeyser_Timer = 25000; - Slam_Timer = 17000; + _Reset(); + } + + void JustDied(Unit* /*killer*/) + { + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_FROSTBREATH, 8000); + events.ScheduleEvent(EVENT_MASSIVEGEYSER, 25000); + events.ScheduleEvent(EVENT_SLAM, 17000); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Frostbreath_Timer - if (Frostbreath_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_FROSTBREATH); - Frostbreath_Timer = urand(7000, 11000); - } else Frostbreath_Timer -= diff; - - //MassiveGeyser_Timer - if (MassiveGeyser_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MASSIVEGEYSER); - DoResetThreat(); + events.Update(diff); - MassiveGeyser_Timer = urand(22000, 32000); - } else MassiveGeyser_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Slam_Timer - if (Slam_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_SLAM); - Slam_Timer = urand(12000, 20000); - } else Slam_Timer -= diff; + switch (eventId) + { + case EVENT_FROSTBREATH: + DoCastVictim(SPELL_FROSTBREATH, true); + events.ScheduleEvent(EVENT_FROSTBREATH, urand(7000, 11000)); + break; + case EVENT_MASSIVEGEYSER: + DoCastVictim(SPELL_MASSIVEGEYSER, true); + events.ScheduleEvent(EVENT_MASSIVEGEYSER, urand(22000, 32000)); + break; + case EVENT_SLAM: + DoCastVictim(SPELL_SLAM, true); + events.ScheduleEvent(EVENT_SLAM, urand(12000, 20000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 4ccdbceb466..f06500694a5 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -27,60 +27,73 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -#define SPELL_AVARTAR 24646 //The Enrage Spell -#define SPELL_GROUNDTREMOR 6524 +enum Spells +{ + SPELL_AVATAR = 24646, // Enrage Spell + SPELL_GROUND_TREMOR = 6524 +}; -class boss_grilek : public CreatureScript +enum Events { - public: - boss_grilek() : CreatureScript("boss_grilek") { } + EVENT_AVATAR = 0, + EVENT_GROUND_TREMOR = 1 +}; - struct boss_grilekAI : public ScriptedAI - { - boss_grilekAI(Creature* creature) : ScriptedAI(creature) { } +class boss_grilek : public CreatureScript // grilek +{ + public: boss_grilek() : CreatureScript("boss_grilek") {} - uint32 Avartar_Timer; - uint32 GroundTremor_Timer; + struct boss_grilekAI : public BossAI + { + boss_grilekAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} void Reset() { - Avartar_Timer = urand(15000, 25000); - GroundTremor_Timer = urand(8000, 16000); + _Reset(); + } + + void JustDied(Unit* /*killer*/) + { + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_AVATAR, urand(15000, 25000)); + events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(15000, 25000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Avartar_Timer - if (Avartar_Timer <= diff) - { - - DoCast(me, SPELL_AVARTAR); - Unit* target = NULL; + events.Update(diff); - target = SelectTarget(SELECT_TARGET_RANDOM, 1); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -50); - if (target) - AttackStart(target); - - Avartar_Timer = urand(25000, 35000); - } else Avartar_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //GroundTremor_Timer - if (GroundTremor_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_GROUNDTREMOR); - GroundTremor_Timer = urand(12000, 16000); - } else GroundTremor_Timer -= diff; + switch (eventId) + { + case EVENT_AVATAR: + DoCast(me, SPELL_AVATAR); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -50); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) + AttackStart(target); + events.ScheduleEvent(EVENT_AVATAR, urand(25000, 35000)); + break; + case EVENT_GROUND_TREMOR: + DoCastVictim(SPELL_GROUND_TREMOR, true); + events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(12000, 16000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 781b68bfcb0..8003f4a1ed7 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -16,31 +15,33 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: Boss_Hakkar -SD%Complete: 95 -SDComment: Blood siphon spell buggy cause of Core Issue. -SDCategory: Zul'Gurub -EndScriptData */ +/* +Name: Boss_Hakkar +%Complete: 95 +Comment: Blood siphon spell buggy cause of Core Issue. +Category: Zul'Gurub +*/ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "zulgurub.h" -enum Hakkar +enum Says { SAY_AGGRO = 0, SAY_FLEEING = 1, - SAY_MINION_DESTROY = 2, //where does it belong? - SAY_PROTECT_ALTAR = 3, //where does it belong? + SAY_MINION_DESTROY = 2, // Where does it belong? + SAY_PROTECT_ALTAR = 3 // Where does it belong? +}; - SPELL_BLOODSIPHON = 24322, - SPELL_CORRUPTEDBLOOD = 24328, - SPELL_CAUSEINSANITY = 24327, //Not working disabled. - SPELL_WILLOFHAKKAR = 24178, +enum Spells +{ + SPELL_BLOOD_SIPHON = 24322, // Buggy ? + SPELL_CORRUPTED_BLOOD = 24328, + SPELL_CAUSE_INSANITY = 24327, // Spell needs scripting. + SPELL_WILL_OF_HAKKAR = 24178, SPELL_ENRAGE = 24318, - -// The Aspects of all High Priests + // The Aspects of all High Priests spells SPELL_ASPECT_OF_JEKLIK = 24687, SPELL_ASPECT_OF_VENOXIS = 24688, SPELL_ASPECT_OF_MARLI = 24686, @@ -48,202 +49,119 @@ enum Hakkar SPELL_ASPECT_OF_ARLOKK = 24690 }; +enum Events +{ + EVENT_BLOOD_SIPHON = 0, + EVENT_CORRUPTED_BLOOD = 1, + EVENT_CAUSE_INSANITY = 2, // Spell needs scripting. Event disabled + EVENT_WILL_OF_HAKKAR = 3, + EVENT_ENRAGE = 4, + // The Aspects of all High Priests events + EVENT_ASPECT_OF_JEKLIK = 5, + EVENT_ASPECT_OF_VENOXIS = 6, + EVENT_ASPECT_OF_MARLI = 7, + EVENT_ASPECT_OF_THEKAL = 8, + EVENT_ASPECT_OF_ARLOKK = 9 +}; + class boss_hakkar : public CreatureScript { - public: + public: boss_hakkar() : CreatureScript("boss_hakkar") {} - boss_hakkar() - : CreatureScript("boss_hakkar") + struct boss_hakkarAI : public BossAI { - } + boss_hakkarAI(Creature* creature) : BossAI(creature, DATA_HAKKAR) {} - struct boss_hakkarAI : public ScriptedAI - { - boss_hakkarAI(Creature* creature) : ScriptedAI(creature) + void Reset() { - instance = creature->GetInstanceScript(); + _Reset(); } - InstanceScript* instance; - - uint32 BloodSiphon_Timer; - uint32 CorruptedBlood_Timer; - uint32 CauseInsanity_Timer; - uint32 WillOfHakkar_Timer; - uint32 Enrage_Timer; - - uint32 CheckJeklik_Timer; - uint32 CheckVenoxis_Timer; - uint32 CheckMarli_Timer; - uint32 CheckThekal_Timer; - uint32 CheckArlokk_Timer; - - uint32 AspectOfJeklik_Timer; - uint32 AspectOfVenoxis_Timer; - uint32 AspectOfMarli_Timer; - uint32 AspectOfThekal_Timer; - uint32 AspectOfArlokk_Timer; - - bool Enraged; - - void Reset() + void JustDied(Unit* /*killer*/) { - BloodSiphon_Timer = 90000; - CorruptedBlood_Timer = 25000; - CauseInsanity_Timer = 17000; - WillOfHakkar_Timer = 17000; - Enrage_Timer = 600000; - - CheckJeklik_Timer = 1000; - CheckVenoxis_Timer = 2000; - CheckMarli_Timer = 3000; - CheckThekal_Timer = 4000; - CheckArlokk_Timer = 5000; - - AspectOfJeklik_Timer = 4000; - AspectOfVenoxis_Timer = 7000; - AspectOfMarli_Timer = 12000; - AspectOfThekal_Timer = 8000; - AspectOfArlokk_Timer = 18000; - - Enraged = false; + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000); + events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, 25000); + events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17000); + events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, 17000); + events.ScheduleEvent(EVENT_ENRAGE, 600000); + if (instance->GetData(DATA_JEKLIK) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 4000); + if (instance->GetData(DATA_VENOXIS) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 7000); + if (instance->GetData(DATA_MARLI) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000); + if (instance->GetData(DATA_THEKAL) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 8000); + if (instance->GetData(DATA_ARLOKK) != DONE) + events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18000); Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //BloodSiphon_Timer - if (BloodSiphon_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_BLOODSIPHON); - BloodSiphon_Timer = 90000; - } else BloodSiphon_Timer -= diff; - - //CorruptedBlood_Timer - if (CorruptedBlood_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_CORRUPTEDBLOOD); - CorruptedBlood_Timer = urand(30000, 45000); - } else CorruptedBlood_Timer -= diff; - - //CauseInsanity_Timer - /*if (CauseInsanity_Timer <= diff) - { - if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_CAUSEINSANITY); - - CauseInsanity_Timer = urand(35000, 43000); - } else CauseInsanity_Timer -= diff;*/ - - //WillOfHakkar_Timer - if (WillOfHakkar_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, SPELL_WILLOFHAKKAR); - - WillOfHakkar_Timer = urand(25000, 35000); - } else WillOfHakkar_Timer -= diff; - - if (!Enraged && Enrage_Timer <= diff) - { - DoCast(me, SPELL_ENRAGE); - Enraged = true; - } else Enrage_Timer -= diff; - - //Checking if Jeklik is dead. If not we cast her Aspect - if (CheckJeklik_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_JEKLIK) != DONE) - { - if (AspectOfJeklik_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_JEKLIK); - AspectOfJeklik_Timer = urand(10000, 14000); - } else AspectOfJeklik_Timer -= diff; - } - } - CheckJeklik_Timer = 1000; - } else CheckJeklik_Timer -= diff; - - //Checking if Venoxis is dead. If not we cast his Aspect - if (CheckVenoxis_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_VENOXIS) != DONE) - { - if (AspectOfVenoxis_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_VENOXIS); - AspectOfVenoxis_Timer = 8000; - } else AspectOfVenoxis_Timer -= diff; - } - } - CheckVenoxis_Timer = 1000; - } else CheckVenoxis_Timer -= diff; - - //Checking if Marli is dead. If not we cast her Aspect - if (CheckMarli_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_MARLI) != DONE) - { - if (AspectOfMarli_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI); - AspectOfMarli_Timer = 10000; - } else AspectOfMarli_Timer -= diff; - - } - } - CheckMarli_Timer = 1000; - } else CheckMarli_Timer -= diff; + events.Update(diff); - //Checking if Thekal is dead. If not we cast his Aspect - if (CheckThekal_Timer <= diff) - { - if (instance) - { - if (instance->GetData(DATA_THEKAL) != DONE) - { - if (AspectOfThekal_Timer <= diff) - { - DoCast(me, SPELL_ASPECT_OF_THEKAL); - AspectOfThekal_Timer = 15000; - } else AspectOfThekal_Timer -= diff; - } - } - CheckThekal_Timer = 1000; - } else CheckThekal_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Checking if Arlokk is dead. If yes we cast her Aspect - if (CheckArlokk_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - if (instance) + switch (eventId) { - if (instance->GetData(DATA_ARLOKK) != DONE) - { - if (AspectOfArlokk_Timer <= diff) - { - DoCast(me, SPELL_ASPECT_OF_ARLOKK); - DoResetThreat(); - - AspectOfArlokk_Timer = urand(10000, 15000); - } else AspectOfArlokk_Timer -= diff; - } + case EVENT_BLOOD_SIPHON: + DoCastVictim(SPELL_BLOOD_SIPHON, true); + events.ScheduleEvent(EVENT_BLOOD_SIPHON, 90000); + break; + case EVENT_CORRUPTED_BLOOD: + DoCastVictim(SPELL_CORRUPTED_BLOOD, true); + events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000)); + break; + case EVENT_CAUSE_INSANITY: + // DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CAUSE_INSANITY); + // events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000)); + break; + case EVENT_WILL_OF_HAKKAR: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_WILL_OF_HAKKAR); + events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, urand(25000, 35000)); + break; + case EVENT_ENRAGE: + if (!me->HasAura(SPELL_ENRAGE)) + DoCast(me, SPELL_ENRAGE); + events.ScheduleEvent(EVENT_ENRAGE, 90000); + break; + case EVENT_ASPECT_OF_JEKLIK: + DoCastVictim(SPELL_ASPECT_OF_JEKLIK, true); + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, urand(10000, 14000)); + break; + case EVENT_ASPECT_OF_VENOXIS: + DoCastVictim(SPELL_ASPECT_OF_VENOXIS, true); + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 8000); + break; + case EVENT_ASPECT_OF_MARLI: + DoCastVictim(SPELL_ASPECT_OF_MARLI, true); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 10000); + break; + case EVENT_ASPECT_OF_THEKAL: + DoCastVictim(SPELL_ASPECT_OF_THEKAL, true); + events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 15000); + break; + case EVENT_ASPECT_OF_ARLOKK: + DoCastVictim(SPELL_ASPECT_OF_ARLOKK, true); + events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, urand(10000, 15000)); + break; + default: + break; } - CheckArlokk_Timer = 1000; - } else CheckArlokk_Timer -= diff; + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index bbdc2905874..15228815d69 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -27,75 +27,85 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -#define SPELL_MANABURN 26046 -#define SPELL_SLEEP 24664 +enum Spells +{ + SPELL_MANABURN = 26046, + SPELL_SLEEP = 24664 +}; -class boss_hazzarah : public CreatureScript +enum Events { - public: + EVENT_MANABURN = 0, + EVENT_SLEEP = 1, + EVENT_ILLUSIONS = 2 +}; - boss_hazzarah() - : CreatureScript("boss_hazzarah") - { - } +class boss_hazzarah : public CreatureScript +{ + public: boss_hazzarah() : CreatureScript("boss_hazzarah") {} - struct boss_hazzarahAI : public ScriptedAI + struct boss_hazzarahAI : public BossAI { - boss_hazzarahAI(Creature* creature) : ScriptedAI(creature) {} - - uint32 ManaBurn_Timer; - uint32 Sleep_Timer; - uint32 Illusions_Timer; + boss_hazzarahAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} void Reset() { - ManaBurn_Timer = urand(4000, 10000); - Sleep_Timer = urand(10000, 18000); - Illusions_Timer = urand(10000, 18000); + _Reset(); + } + + void JustDied(Unit* /*killer*/) + { + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_MANABURN, urand(4000, 10000)); + events.ScheduleEvent(EVENT_SLEEP, urand(10000, 18000)); + events.ScheduleEvent(EVENT_ILLUSIONS, urand(10000, 18000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //ManaBurn_Timer - if (ManaBurn_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MANABURN); - ManaBurn_Timer = urand(8000, 16000); - } else ManaBurn_Timer -= diff; + events.Update(diff); - //Sleep_Timer - if (Sleep_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SLEEP); - Sleep_Timer = urand(12000, 20000); - } else Sleep_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Illusions_Timer - if (Illusions_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - //We will summon 3 illusions that will spawn on a random gamer and attack this gamer - //We will just use one model for the beginning - Unit* target = NULL; - for (uint8 i = 0; i < 3; ++i) + switch (eventId) { - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Illusion = me->SummonCreature(15163, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); - if (Illusion) - Illusion->AI()->AttackStart(target); + case EVENT_MANABURN: + DoCastVictim(SPELL_MANABURN, true); + events.ScheduleEvent(EVENT_MANABURN, urand(8000, 16000)); + break; + case EVENT_SLEEP: + DoCastVictim(SPELL_SLEEP, true); + events.ScheduleEvent(EVENT_SLEEP, urand(12000, 20000)); + break; + case EVENT_ILLUSIONS: + // We will summon 3 illusions that will spawn on a random gamer and attack this gamer + // We will just use one model for the beginning + for (uint8 i = 0; i < 3; ++i) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + Creature* Illusion = me->SummonCreature(NPC_NIGHTMARE_ILLUSION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); + if (Illusion) + Illusion->AI()->AttackStart(target); + } + } + events.ScheduleEvent(EVENT_ILLUSIONS, urand(15000, 25000)); + break; + default: + break; } - - Illusions_Timer = urand(15000, 25000); - } else Illusions_Timer -= diff; + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp index 10431ec84bd..7f19962e719 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp @@ -27,42 +27,34 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Jeklik +enum Says { SAY_AGGRO = 0, SAY_RAIN_FIRE = 1, - SAY_DEATH = 2, + SAY_DEATH = 2 +}; +enum Spells +{ SPELL_CHARGE = 22911, SPELL_SONICBURST = 23918, SPELL_SCREECH = 6605, SPELL_SHADOW_WORD_PAIN = 23952, SPELL_MIND_FLAY = 23953, - SPELL_CHAIN_MIND_FLAY = 26044, //Right ID unknown. So disabled + SPELL_CHAIN_MIND_FLAY = 26044, // Right ID unknown. So disabled SPELL_GREATERHEAL = 23954, SPELL_BAT_FORM = 23966, - // Batriders Spell - SPELL_BOMB = 40332 //Wrong ID but Magmadars bomb is not working... + SPELL_BOMB = 40332 // Wrong ID but Magmadars bomb is not working... }; -class boss_jeklik : public CreatureScript +class boss_jeklik : public CreatureScript //jeklik { - public: - - boss_jeklik() - : CreatureScript("boss_jeklik") - { - } + public: boss_jeklik() : CreatureScript("boss_jeklik") {} - struct boss_jeklikAI : public ScriptedAI + struct boss_jeklikAI : public BossAI { - boss_jeklikAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; + boss_jeklikAI(Creature* creature) : BossAI(creature, DATA_JEKLIK) {} uint32 Charge_Timer; uint32 SonicBurst_Timer; @@ -78,6 +70,7 @@ class boss_jeklik : public CreatureScript void Reset() { + _Reset(); Charge_Timer = 20000; SonicBurst_Timer = 8000; Screech_Timer = 13000; @@ -91,18 +84,17 @@ class boss_jeklik : public CreatureScript PhaseTwo = false; } - void EnterCombat(Unit* /*who*/) - { - Talk(SAY_AGGRO); - DoCast(me, SPELL_BAT_FORM); - } - void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); + } - if (instance) - instance->SetData(DATA_JEKLIK, DONE); + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + Talk(SAY_AGGRO); + DoCast(me, SPELL_BAT_FORM); } void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 7c4c9626f9a..005609e88db 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -27,147 +27,147 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Jindo +enum Say { - SAY_AGGRO = 1, + SAY_AGGRO = 1 +}; +enum Spells +{ SPELL_BRAINWASHTOTEM = 24262, - SPELL_POWERFULLHEALINGWARD = 24309, //We will not use this spell. We will summon a totem by script cause the spell totems will not cast. + SPELL_POWERFULLHEALINGWARD = 24309, // HACKED Totem summoned by script because the spell totems will not cast. SPELL_HEX = 24053, SPELL_DELUSIONSOFJINDO = 24306, - SPELL_SHADEOFJINDO = 24308, //We will not use this spell. We will summon a shade by script. - + SPELL_SHADEOFJINDO = 24308, // HACKED //Healing Ward Spell - SPELL_HEAL = 38588, //Totems are not working right. Right heal spell ID is 24311 but this spell is not casting... - + SPELL_HEAL = 38588, // HACKED Totems are not working right. Right heal spell ID is 24311 but this spell is not casting... //Shade of Jindo Spell SPELL_SHADOWSHOCK = 19460, SPELL_INVISIBLE = 24699 }; -class boss_jindo : public CreatureScript +enum Events { - public: + EVENT_BRAINWASHTOTEM = 0, + EVENT_POWERFULLHEALINGWARD = 1, + EVENT_HEX = 2, + EVENT_DELUSIONSOFJINDO = 3, + EVENT_TELEPORT = 4 +}; - boss_jindo() - : CreatureScript("boss_jindo") - { - } +Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f}; - struct boss_jindoAI : public ScriptedAI - { - boss_jindoAI(Creature* creature) : ScriptedAI(creature) {} +class boss_jindo : public CreatureScript +{ + public: boss_jindo() : CreatureScript("boss_jindo") {} - uint32 BrainWashTotem_Timer; - uint32 HealingWard_Timer; - uint32 Hex_Timer; - uint32 Delusions_Timer; - uint32 Teleport_Timer; + struct boss_jindoAI : public BossAI + { + boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) {} void Reset() { - BrainWashTotem_Timer = 20000; - HealingWard_Timer = 16000; - Hex_Timer = 8000; - Delusions_Timer = 10000; - Teleport_Timer = 5000; + _Reset(); + } + + void JustDied(Unit* /*killer*/) + { + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_BRAINWASHTOTEM, 20000); + events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, 16000); + events.ScheduleEvent(EVENT_HEX, 8000); + events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, 10000); + events.ScheduleEvent(EVENT_TELEPORT, 5000); Talk(SAY_AGGRO); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //BrainWashTotem_Timer - if (BrainWashTotem_Timer <= diff) - { - DoCast(me, SPELL_BRAINWASHTOTEM); - BrainWashTotem_Timer = urand(18000, 26000); - } else BrainWashTotem_Timer -= diff; - - //HealingWard_Timer - if (HealingWard_Timer <= diff) - { - //DoCast(me, SPELL_POWERFULLHEALINGWARD); - me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000); - HealingWard_Timer = urand(14000, 20000); - } else HealingWard_Timer -= diff; - - //Hex_Timer - if (Hex_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_HEX); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -80); + events.Update(diff); - Hex_Timer = urand(12000, 20000); - } else Hex_Timer -= diff; - - //Casting the delusion curse with a shade. So shade will attack the same target with the curse. - if (Delusions_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - DoCast(target, SPELL_DELUSIONSOFJINDO); - - Creature* Shade = me->SummonCreature(14986, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Shade) - Shade->AI()->AttackStart(target); - } - - Delusions_Timer = urand(4000, 12000); - } else Delusions_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Teleporting a random gamer and spawning 9 skeletons that will attack this gamer - if (Teleport_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - Unit* target = NULL; - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target && target->GetTypeId() == TYPEID_PLAYER) + switch (eventId) { - DoTeleportPlayer(target, -11583.7783f, -1249.4278f, 77.5471f, 4.745f); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(target, -100); - - Creature* Skeletons; - Skeletons = me->SummonCreature(14826, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); - Skeletons = me->SummonCreature(14826, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Skeletons) - Skeletons->AI()->AttackStart(target); + case EVENT_BRAINWASHTOTEM: + DoCast(me, SPELL_BRAINWASHTOTEM); + events.ScheduleEvent(EVENT_BRAINWASHTOTEM, urand(18000, 26000)); + break; + case EVENT_POWERFULLHEALINGWARD: // HACK + //DoCast(me, SPELL_POWERFULLHEALINGWARD); + me->SummonCreature(14987, me->GetPositionX()+3, me->GetPositionY()-2, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 30000); + events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, urand(14000, 20000)); + break; + case EVENT_HEX: + DoCastVictim(SPELL_HEX, true); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -80); + events.ScheduleEvent(EVENT_HEX, urand(12000, 20000)); + break; + case EVENT_DELUSIONSOFJINDO: // HACK + // Casting the delusion curse with a shade so shade will attack the same target with the curse. + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, SPELL_DELUSIONSOFJINDO); + Creature* Shade = me->SummonCreature(NPC_SHADE_OF_JINDO, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Shade) + Shade->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, urand(4000, 12000)); + break; + case EVENT_TELEPORT: // Possible HACK + // Teleports a random player and spawns 9 Sacrificed Trolls to attack player + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoTeleportPlayer(target, TeleportLoc.m_positionX, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, TeleportLoc.m_orientation); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(target, -100); + Creature* SacrificedTroll; + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()-2, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()-4, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()+2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()-2, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()+4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX(), target->GetPositionY()-4, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, target->GetPositionX()+3, target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (SacrificedTroll) + SacrificedTroll->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_TELEPORT, urand(15000, 23000)); + break; + default: + break; } - - Teleport_Timer = urand(15000, 23000); - } else Teleport_Timer -= diff; + } DoMeleeAttackIfReady(); } @@ -283,4 +283,3 @@ void AddSC_boss_jindo() new mob_healing_ward(); new mob_shade_of_jindo(); } - diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index bcc080bb8a5..258dda26c11 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -27,44 +27,37 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Mandokir +enum Says { - SAY_AGGRO = 0, - SAY_DING_KILL = 1, - SAY_WATCH = 2, - SAY_WATCH_WHISPER = 3, //is this text for real? easter egg? - SAY_GRATS_JINDO = 0, - - SPELL_CHARGE = 24408, - SPELL_CLEAVE = 7160, - SPELL_FEAR = 29321, - SPELL_WHIRLWIND = 15589, - SPELL_MORTAL_STRIKE = 16856, - SPELL_ENRAGE = 24318, - SPELL_WATCH = 24314, - SPELL_LEVEL_UP = 24312, - -//Ohgans Spells - SPELL_SUNDERARMOR = 24317, - - NPC_SPEAKER = 11391 + SAY_AGGRO = 0, + SAY_DING_KILL = 1, + SAY_WATCH = 2, + SAY_WATCH_WHISPER = 3, // is this text for real? easter egg? + SAY_GRATS_JINDO = 0, }; -class boss_mandokir : public CreatureScript +enum Spells { - public: + SPELL_CHARGE = 24408, + SPELL_CLEAVE = 7160, + SPELL_FEAR = 29321, + SPELL_WHIRLWIND = 15589, + SPELL_MORTAL_STRIKE = 16856, + SPELL_ENRAGE = 24318, + SPELL_WATCH = 24314, + SPELL_LEVEL_UP = 24312, + SPELL_SWIFT_ORANGE_RAPTOR = 23243, + // Ohgans Spell + SPELL_SUNDERARMOR = 24317 +}; - boss_mandokir() - : CreatureScript("boss_mandokir") - { - } +class boss_mandokir : public CreatureScript +{ + public: boss_mandokir() : CreatureScript("boss_mandokir") {} - struct boss_mandokirAI : public ScriptedAI + struct boss_mandokirAI : public BossAI { - boss_mandokirAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + boss_mandokirAI(Creature* creature) : BossAI(creature, DATA_MANDOKIR) {} uint32 KillCount; uint32 Watch_Timer; @@ -114,6 +107,11 @@ class boss_mandokir : public CreatureScript DoCast(me, 23243); } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) @@ -144,6 +142,7 @@ class boss_mandokir : public CreatureScript void EnterCombat(Unit* /*who*/) { + _EnterCombat(); Talk(SAY_AGGRO); } @@ -302,15 +301,10 @@ class boss_mandokir : public CreatureScript } }; -//Ohgan +// Ohgan class mob_ohgan : public CreatureScript { - public: - - mob_ohgan() - : CreatureScript("mob_ohgan") - { - } + public: mob_ohgan() : CreatureScript("mob_ohgan") {} struct mob_ohganAI : public ScriptedAI { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp index 56aeee93ee2..40850a988e4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp @@ -27,192 +27,189 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Marli +enum Says { SAY_AGGRO = 0, SAY_TRANSFORM = 1, SAY_SPIDER_SPAWN = 2, - SAY_DEATH = 3, + SAY_DEATH = 3 +}; + +enum Spells +{ + SPELL_CHARGE = 22911, + SPELL_ASPECT_OF_MARLI = 24686, // A stun spell + SPELL_ENVOLWINGWEB = 24110, + SPELL_POISON_VOLLEY = 24099, + SPELL_SPIDER_FORM = 24084, + // The Spider Spell + SPELL_LEVELUP = 24312 // Not right Spell. +}; - SPELL_CHARGE = 22911, - SPELL_ASPECT_OF_MARLI = 24686, // A stun spell - SPELL_ENVOLWINGWEB = 24110, - SPELL_POISONVOLLEY = 24099, - SPELL_SPIDER_FORM = 24084, +enum Events +{ + EVENT_SPAWN_START_SPIDERS = 0, // Phase 1 + EVENT_POISON_VOLLEY = 1, // Phase All + EVENT_SPAWN_SPIDER = 2, // Phase All + EVENT_CHARGE_PLAYER = 3, // Phase 3 + EVENT_ASPECT_OF_MARLI = 4, // Phase 2 + EVENT_TRANSFORM = 5, // Phase 2 + EVENT_TRANSFORM_BACK = 6 // Phase 3 +}; -//The Spider Spells - SPELL_LEVELUP = 24312 //Not right Spell. +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2, + PHASE_THREE = 3 +}; + +enum ModelId +{ + MODEL_MARLI = 15220 }; class boss_marli : public CreatureScript { - public: + public: boss_marli() : CreatureScript("boss_marli") {} - boss_marli() - : CreatureScript("boss_marli") + struct boss_marliAI : public BossAI { - } + boss_marliAI(Creature* creature) : BossAI(creature, DATA_MARLI) {} - struct boss_marliAI : public ScriptedAI - { - boss_marliAI(Creature* creature) : ScriptedAI(creature) + void Reset() { - instance = creature->GetInstanceScript(); + _Reset(); } - InstanceScript* instance; - - uint32 SpawnStartSpiders_Timer; - uint32 PoisonVolley_Timer; - uint32 SpawnSpider_Timer; - uint32 Charge_Timer; - uint32 Aspect_Timer; - uint32 Transform_Timer; - uint32 TransformBack_Timer; - - bool Spawned; - bool PhaseTwo; - - void Reset() + void JustDied(Unit* /*killer*/) { - SpawnStartSpiders_Timer = 1000; - PoisonVolley_Timer = 15000; - SpawnSpider_Timer = 30000; - Charge_Timer = 1500; - Aspect_Timer = 12000; - Transform_Timer = 45000; - TransformBack_Timer = 25000; - - Spawned = false; - PhaseTwo = false; + _JustDied(); + Talk(SAY_DEATH); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_SPAWN_START_SPIDERS, 1000, 0, PHASE_ONE); Talk(SAY_AGGRO); } - void JustDied(Unit* /*killer*/) - { - Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_MARLI, DONE); - } - - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - if (me->getVictim() && me->isAlive()) - { - if (PoisonVolley_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_POISONVOLLEY); - PoisonVolley_Timer = urand(10000, 20000); - } else PoisonVolley_Timer -= diff; + events.Update(diff); - if (!PhaseTwo && Aspect_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ASPECT_OF_MARLI); - Aspect_Timer = urand(13000, 18000); - } else Aspect_Timer -= diff; - - if (!Spawned && SpawnStartSpiders_Timer <= diff) - { - Talk(SAY_SPIDER_SPAWN); - - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Spider = NULL; - - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - - Spawned = true; - } else SpawnStartSpiders_Timer -= diff; - - if (SpawnSpider_Timer <= diff) - { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (!target) - return; - - Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Spider) - Spider->AI()->AttackStart(target); - SpawnSpider_Timer = urand(12000, 17000); - } else SpawnSpider_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (!PhaseTwo && Transform_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - Talk(SAY_TRANSFORM); - DoCast(me, SPELL_SPIDER_FORM); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); - me->UpdateDamagePhysical(BASE_ATTACK); - DoCast(me->getVictim(), SPELL_ENVOLWINGWEB); - - if (DoGetThreat(me->getVictim())) - DoModifyThreatPercent(me->getVictim(), -100); + case EVENT_SPAWN_START_SPIDERS: - PhaseTwo = true; - Transform_Timer = urand(35000, 60000); - } else Transform_Timer -= diff; - - if (PhaseTwo) - { - if (Charge_Timer <= diff) - { - Unit* target = NULL; - int i = 0; - while (i < 3) // max 3 tries to get a random target with power_mana + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - ++i; - target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader - if (target && target->getPowerType() == POWER_MANA) + Talk(SAY_SPIDER_SPAWN); + Creature* Spider = NULL; + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000); + events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; + case EVENT_POISON_VOLLEY: + DoCastVictim(SPELL_POISON_VOLLEY, true); + events.ScheduleEvent(EVENT_POISON_VOLLEY, urand(10000, 20000)); + break; + case EVENT_ASPECT_OF_MARLI: + DoCastVictim(SPELL_ASPECT_OF_MARLI, true); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, urand(13000, 18000), 0, PHASE_TWO); + break; + case EVENT_SPAWN_SPIDER: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); + if (Spider) + Spider->AI()->AttackStart(target); + } + events.ScheduleEvent(EVENT_SPAWN_SPIDER, urand(12000, 17000)); + break; + case EVENT_TRANSFORM: + { + Talk(SAY_TRANSFORM); + DoCast(me, SPELL_SPIDER_FORM); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 35))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 35))); + me->UpdateDamagePhysical(BASE_ATTACK); + DoCast(me->getVictim(), SPELL_ENVOLWINGWEB); + if (DoGetThreat(me->getVictim())) + DoModifyThreatPercent(me->getVictim(), -100); + events.ScheduleEvent(EVENT_CHARGE_PLAYER, 1500, 0, PHASE_THREE); + events.ScheduleEvent(EVENT_TRANSFORM_BACK, 25000, 0, PHASE_THREE); + events.SetPhase(PHASE_THREE); + break; + } + case EVENT_CHARGE_PLAYER: + { + Unit* target = NULL; + int i = 0; + while (i < 3) // max 3 tries to get a random target with power_mana + { + ++i; + Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader + if (target && target->getPowerType() == POWER_MANA) i = 3; + } + if (target) + { + DoCast(target, SPELL_CHARGE); + //me->SetPosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); + //me->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true, 1); + AttackStart(target); + } + events.ScheduleEvent(EVENT_CHARGE_PLAYER, 8000, 0, PHASE_THREE); + break; } - if (target) + case EVENT_TRANSFORM_BACK: { - DoCast(target, SPELL_CHARGE); - //me->SetPosition(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0); - //me->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true, 1); - AttackStart(target); + me->SetDisplayId(MODEL_MARLI); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); + me->UpdateDamagePhysical(BASE_ATTACK); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_TRANSFORM, 45000, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_POISON_VOLLEY, 15000); + events.ScheduleEvent(EVENT_SPAWN_SPIDER, 30000); + events.ScheduleEvent(EVENT_TRANSFORM, urand(35000, 60000), 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + break; } - - Charge_Timer = 8000; - } else Charge_Timer -= diff; - - if (TransformBack_Timer <= diff) - { - me->SetDisplayId(15220); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 1))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 1))); - me->UpdateDamagePhysical(BASE_ATTACK); - - PhaseTwo = false; - TransformBack_Timer = urand(25000, 40000); - } else TransformBack_Timer -= diff; - + default: + break; } - - DoMeleeAttackIfReady(); } + + DoMeleeAttackIfReady(); } }; @@ -222,15 +219,10 @@ class boss_marli : public CreatureScript } }; -//Spawn of Marli +// Spawn of Marli class mob_spawn_of_marli : public CreatureScript { - public: - - mob_spawn_of_marli() - : CreatureScript("mob_spawn_of_marli") - { - } + public: mob_spawn_of_marli() : CreatureScript("mob_spawn_of_marli") {} struct mob_spawn_of_marliAI : public ScriptedAI { @@ -275,4 +267,3 @@ void AddSC_boss_marli() new boss_marli(); new mob_spawn_of_marli(); } - diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index d562b7cdf9b..6bf87decf7e 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -40,16 +40,11 @@ enum Misc class boss_renataki : public CreatureScript { - public: + public: boss_renataki() : CreatureScript("boss_renataki") {} - boss_renataki() - : CreatureScript("boss_renataki") + struct boss_renatakiAI : public BossAI { - } - - struct boss_renatakiAI : public ScriptedAI - { - boss_renatakiAI(Creature* creature) : ScriptedAI(creature) {} + boss_renatakiAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} uint32 Invisible_Timer; uint32 Ambush_Timer; @@ -62,6 +57,7 @@ class boss_renataki : public CreatureScript void Reset() { + _Reset(); Invisible_Timer = urand(8000, 18000); Ambush_Timer = 3000; Visible_Timer = 4000; @@ -72,8 +68,14 @@ class boss_renataki : public CreatureScript Ambushed = false; } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); } void UpdateAI(const uint32 diff) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index d91b8f0b483..ab45162fc35 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -27,28 +27,29 @@ EndScriptData */ #include "ScriptedCreature.h" #include "zulgurub.h" -enum Thekal +enum Says { SAY_AGGRO = 0, - SAY_DEATH = 1, - - SPELL_MORTALCLEAVE = 22859, - SPELL_SILENCE = 22666, - SPELL_FRENZY = 8269, - SPELL_FORCEPUNCH = 24189, - SPELL_CHARGE = 24193, - SPELL_ENRAGE = 8269, - SPELL_SUMMONTIGERS = 24183, - SPELL_TIGER_FORM = 24169, - SPELL_RESURRECT = 24173, //We will not use this spell. - -//Zealot Lor'Khan Spells + SAY_DEATH = 1 +}; + +enum Spells +{ + SPELL_MORTALCLEAVE = 22859, // Phase 1 + SPELL_SILENCE = 22666, // Phase 1 + SPELL_TIGER_FORM = 24169, // Phase 1 + SPELL_RESURRECT = 24173, // Phase 1 // Not used in script. + SPELL_FRENZY = 8269, // Phase 2 + SPELL_FORCEPUNCH = 24189, // Phase 2 + SPELL_CHARGE = 24193, // Phase 2 + SPELL_ENRAGE = 8269, // Phase 2 + SPELL_SUMMONTIGERS = 24183, // Phase 2 + // Zealot Lor'Khan Spells SPELL_SHIELD = 20545, SPELL_BLOODLUST = 24185, SPELL_GREATERHEAL = 24208, SPELL_DISARM = 6713, - -//Zealot Zath Spells + // Zealot Zath Spells SPELL_SWEEPINGSTRIKES = 18765, SPELL_SINISTERSTRIKE = 15581, SPELL_GOUGE = 12540, @@ -56,64 +57,57 @@ enum Thekal SPELL_BLIND = 21060 }; -class boss_thekal : public CreatureScript +enum Events { - public: + EVENT_MORTALCLEAVE = 0, // Phase 1 + EVENT_SILENCE = 1, // Phase 1 + EVENT_CHECK_TIMER = 2, // Phase 1 + EVENT_RESURRECT_TIMER = 3, // Phase 1 + EVENT_FRENZY = 4, // Phase 2 + EVENT_FORCEPUNCH = 5, // Phase 2 + EVENT_SPELL_CHARGE = 6, // Phase 2 + EVENT_ENRAGE = 7, // Phase 2 + EVENT_SUMMONTIGERS = 8 // Phase 2 +}; - boss_thekal() - : CreatureScript("boss_thekal") - { - } +enum Phases +{ + PHASE_ONE = 1, + PHASE_TWO = 2 +}; - struct boss_thekalAI : public ScriptedAI - { - boss_thekalAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } +class boss_thekal : public CreatureScript +{ + public: boss_thekal() : CreatureScript("boss_thekal") {} - uint32 MortalCleave_Timer; - uint32 Silence_Timer; - uint32 Frenzy_Timer; - uint32 ForcePunch_Timer; - uint32 Charge_Timer; - uint32 Enrage_Timer; - uint32 SummonTigers_Timer; - uint32 Check_Timer; - uint32 Resurrect_Timer; + struct boss_thekalAI : public BossAI + { + boss_thekalAI(Creature* creature) : BossAI(creature, DATA_THEKAL) {} - InstanceScript* instance; bool Enraged; - bool PhaseTwo; bool WasDead; void Reset() { - MortalCleave_Timer = 4000; - Silence_Timer = 9000; - Frenzy_Timer = 30000; - ForcePunch_Timer = 4000; - Charge_Timer = 12000; - Enrage_Timer = 32000; - SummonTigers_Timer = 25000; - Check_Timer = 10000; - Resurrect_Timer = 10000; - + _Reset(); Enraged = false; - PhaseTwo = false; WasDead = false; } - void EnterCombat(Unit* /*who*/) + void JustDied(Unit* /*killer*/) { - Talk(SAY_AGGRO); + _JustDied(); + Talk(SAY_DEATH); } - void JustDied(Unit* /*killer*/) + void EnterCombat(Unit* /*who*/) { - Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_THEKAL, DONE); + _EnterCombat(); + events.ScheduleEvent(EVENT_MORTALCLEAVE, 4000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_SILENCE, 9000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_CHECK_TIMER, 10000, 0, PHASE_ONE); // Phase 1 + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000, 0, PHASE_ONE); // Phase 1 + Talk(SAY_AGGRO); } void JustReachedHome() @@ -122,62 +116,123 @@ class boss_thekal : public CreatureScript instance->SetData(DATA_THEKAL, NOT_STARTED); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //Check_Timer for the death of LorKhan and Zath. - if (!WasDead && Check_Timer <= diff) + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - if (instance) - { - if (instance->GetData(DATA_LORKHAN) == SPECIAL) + case EVENT_MORTALCLEAVE: + DoCastVictim(SPELL_MORTALCLEAVE, true); + events.ScheduleEvent(EVENT_MORTALCLEAVE, urand(15000, 20000), 0, PHASE_ONE); + break; + case EVENT_SILENCE: + DoCastVictim(SPELL_SILENCE, true); + events.ScheduleEvent(EVENT_SILENCE, urand(20000, 25000), 0, PHASE_ONE); + break; + case EVENT_RESURRECT_TIMER: + //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. + if (WasDead) { - //Resurrect LorKhan - if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) - { - pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pLorKhan->setFaction(14); - pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pLorKhan->SetFullHealth(); - - instance->SetData(DATA_LORKHAN, DONE); - } + DoCast(me, SPELL_TIGER_FORM); + me->SetObjectScale(2.00f); + me->SetStandState(UNIT_STAND_STATE_STAND); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetFullHealth(); + const CreatureTemplate* cinfo = me->GetCreatureTemplate(); + me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); + me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); + me->UpdateDamagePhysical(BASE_ATTACK); + DoResetThreat(); + events.ScheduleEvent(EVENT_FRENZY, 30000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_FORCEPUNCH, 4000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_SPELL_CHARGE, 12000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_ENRAGE, 32000, 0, PHASE_TWO); // Phase 2 + events.ScheduleEvent(EVENT_SUMMONTIGERS, 25000, 0, PHASE_TWO); // Phase 2 + events.SetPhase(PHASE_TWO); } - - if (instance->GetData(DATA_ZATH) == SPECIAL) + events.ScheduleEvent(EVENT_RESURRECT_TIMER, 10000, 0, PHASE_ONE); + break; + case EVENT_CHECK_TIMER: + //Check_Timer for the death of LorKhan and Zath. + if (!WasDead) { - //Resurrect Zath - Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH)); - if (pZath) + if (instance) { - pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - pZath->setFaction(14); - pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - pZath->SetFullHealth(); - - instance->SetData(DATA_ZATH, DONE); + if (instance->GetData(DATA_LORKHAN) == SPECIAL) + { + //Resurrect LorKhan + if (Unit* pLorKhan = Unit::GetUnit(*me, instance->GetData64(DATA_LORKHAN))) + { + pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pLorKhan->setFaction(14); + pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pLorKhan->SetFullHealth(); + instance->SetData(DATA_LORKHAN, DONE); + } + } + + if (instance->GetData(DATA_ZATH) == SPECIAL) + { + //Resurrect Zath + if (Unit* pZath = Unit::GetUnit(*me, instance->GetData64(DATA_ZATH))) + { + pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); + pZath->setFaction(14); + pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + pZath->SetFullHealth(); + instance->SetData(DATA_ZATH, DONE); + } + } } } - } - - Check_Timer = 5000; - } else Check_Timer -= diff; - - if (!PhaseTwo && MortalCleave_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MORTALCLEAVE); - MortalCleave_Timer = urand(15000, 20000); - } else MortalCleave_Timer -= diff; + events.ScheduleEvent(EVENT_CHECK_TIMER, 5000, 0, PHASE_ONE); + break; + case EVENT_FRENZY: + DoCast(me, SPELL_FRENZY); + events.ScheduleEvent(EVENT_FRENZY, 30000, 0, PHASE_TWO); + break; + case EVENT_FORCEPUNCH: + DoCastVictim(SPELL_FORCEPUNCH, true); + events.ScheduleEvent(EVENT_FORCEPUNCH, urand(16000, 21000), 0, PHASE_TWO); + break; + case EVENT_CHARGE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + DoCast(target, SPELL_CHARGE); + DoResetThreat(); + AttackStart(target); + } + events.ScheduleEvent(EVENT_CHARGE, urand(15000, 22000), 0, PHASE_TWO); + break; + case EVENT_ENRAGE: + if (HealthBelowPct(11) && !Enraged) + { + DoCast(me, SPELL_ENRAGE); + Enraged = true; + } + events.ScheduleEvent(EVENT_ENRAGE, 30000); + break; + case EVENT_SUMMONTIGERS: + DoCastVictim(SPELL_SUMMONTIGERS, true); + events.ScheduleEvent(EVENT_SUMMONTIGERS, urand(10000, 14000), 0, PHASE_TWO); + break; + default: + break; + } - if (!PhaseTwo && Silence_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SILENCE); - Silence_Timer = urand(20000, 25000); - } else Silence_Timer -= diff; + if (me->IsFullHealth() && WasDead) + WasDead = false; - if (!PhaseTwo && !WasDead && !HealthAbovePct(5)) + if ((events.GetPhaseMask() == PHASE_ONE) && !WasDead && !HealthAbovePct(5)) { me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT); me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE); @@ -185,78 +240,12 @@ class boss_thekal : public CreatureScript me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetStandState(UNIT_STAND_STATE_SLEEP); me->AttackStop(); - if (instance) instance->SetData(DATA_THEKAL, SPECIAL); - WasDead=true; } - - //Thekal will transform to Tiger if he died and was not resurrected after 10 seconds. - if (!PhaseTwo && WasDead) - { - if (Resurrect_Timer <= diff) - { - DoCast(me, SPELL_TIGER_FORM); - me->SetObjectScale(2.00f); - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetFullHealth(); - const CreatureTemplate* cinfo = me->GetCreatureTemplate(); - me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40))); - me->SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, (cinfo->maxdmg +((cinfo->maxdmg/100) * 40))); - me->UpdateDamagePhysical(BASE_ATTACK); - DoResetThreat(); - PhaseTwo = true; - } else Resurrect_Timer -= diff; - } - - if (me->IsFullHealth() && WasDead) - { - WasDead = false; - } - - if (PhaseTwo) - { - if (Charge_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - DoCast(target, SPELL_CHARGE); - DoResetThreat(); - AttackStart(target); - } - - Charge_Timer = urand(15000, 22000); - } else Charge_Timer -= diff; - - if (Frenzy_Timer <= diff) - { - DoCast(me, SPELL_FRENZY); - Frenzy_Timer = 30000; - } else Frenzy_Timer -= diff; - - if (ForcePunch_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SILENCE); - ForcePunch_Timer = urand(16000, 21000); - } else ForcePunch_Timer -= diff; - - if (SummonTigers_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SUMMONTIGERS); - SummonTigers_Timer = urand(10000, 14000); - } else SummonTigers_Timer -= diff; - - if (HealthBelowPct(11) && !Enraged) - { - DoCast(me, SPELL_ENRAGE); - Enraged = true; - } - } - - DoMeleeAttackIfReady(); - + } + DoMeleeAttackIfReady(); } }; @@ -269,12 +258,7 @@ class boss_thekal : public CreatureScript //Zealot Lor'Khan class mob_zealot_lorkhan : public CreatureScript { - public: - - mob_zealot_lorkhan() - : CreatureScript("mob_zealot_lorkhan") - { - } + public: mob_zealot_lorkhan() : CreatureScript("mob_zealot_lorkhan") {} struct mob_zealot_lorkhanAI : public ScriptedAI { @@ -585,4 +569,3 @@ void AddSC_boss_thekal() new mob_zealot_lorkhan(); new mob_zealot_zath(); } - diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index ff63e4a8adb..11a6e710c3c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -27,10 +27,10 @@ * - Fix timers (research some more) */ -enum Texts +enum Says { SAY_VENOXIS_TRANSFORM = 1, // Let the coils of hate unfurl! - SAY_VENOXIS_DEATH = 2, // Ssserenity.. at lassst! + SAY_VENOXIS_DEATH = 2 // Ssserenity.. at lassst! }; enum Spells @@ -42,7 +42,6 @@ enum Spells SPELL_HOLY_NOVA = 23858, SPELL_HOLY_FIRE = 23860, SPELL_HOLY_WRATH = 23979, - // snake form SPELL_POISON_CLOUD = 23861, SPELL_VENOM_SPIT = 23862, @@ -50,15 +49,9 @@ enum Spells SPELL_PARASITIC_SERPENT = 23865, SPELL_SUMMON_PARASITIC_SERPENT = 23866, SPELL_PARASITIC_SERPENT_TRIGGER = 23867, - // used when swapping event-stages SPELL_VENOXIS_TRANSFORM = 23849, // 50% health - shapechange to cobra - SPELL_FRENZY = 8269, // 20% health - frenzy -}; - -enum NPCs -{ - NPC_PARASITIC_SERPENT = 14884, + SPELL_FRENZY = 8269 // 20% health - frenzy }; enum Events @@ -70,10 +63,8 @@ enum Events EVENT_HOLY_NOVA = 4, EVENT_HOLY_FIRE = 5, EVENT_HOLY_WRATH = 6, - // phase-changing EVENT_TRANSFORM = 7, - // snake form events EVENT_POISON_CLOUD = 8, EVENT_VENOM_SPIT = 9, @@ -84,49 +75,48 @@ enum Events enum Phases { PHASE_ONE = 1, // troll form - PHASE_TWO = 2, // snake form + PHASE_TWO = 2 // snake form +}; + +enum NPCs +{ + NPC_PARASITIC_SERPENT = 14884 }; class boss_venoxis : public CreatureScript { - public: - boss_venoxis() : CreatureScript("boss_venoxis") {} + public: boss_venoxis() : CreatureScript("boss_venoxis") {} struct boss_venoxisAI : public BossAI { - boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS) - { - } + boss_venoxisAI(Creature* creature) : BossAI(creature, DATA_VENOXIS) {} void Reset() { - events.Reset(); - summons.DespawnAll(); - - // make sure this boss is properly reset - instance->SetBossState(DATA_VENOXIS, NOT_STARTED); - + _Reset(); // remove all spells and auras from previous attempts me->RemoveAllAuras(); me->SetReactState(REACT_PASSIVE); - // set some internally used variables to their defaults _inMeleeRange = 0; _transformed = false; _frenzied = false; - events.SetPhase(PHASE_ONE); } + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_VENOXIS_DEATH); + me->RemoveAllAuras(); + } + void EnterCombat(Unit* /*who*/) { + _EnterCombat(); me->SetReactState(REACT_AGGRESSIVE); - - instance->SetBossState(DATA_VENOXIS, IN_PROGRESS); - // Always running events events.ScheduleEvent(EVENT_THRASH, 5000); - // Phase one events (regular form) events.ScheduleEvent(EVENT_HOLY_NOVA, 5000, 0, PHASE_ONE); events.ScheduleEvent(EVENT_DISPEL_MAGIC, 35000, 0, PHASE_ONE); @@ -157,14 +147,6 @@ class boss_venoxis : public CreatureScript } } - void JustDied(Unit* /*killer*/) - { - Talk(SAY_VENOXIS_DEATH); - // venoxis is dead, mark him as such for the instance - instance->SetBossState(DATA_VENOXIS, DONE); - me->RemoveAllAuras(); - } - void UpdateAI(const uint32 diff) { if (!UpdateVictim()) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 810ee5e900e..d1e7edf0218 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -33,53 +33,63 @@ enum Spells SPELL_LIGHTNINGWAVE = 24819 }; -class boss_wushoolay : public CreatureScript +enum Events { - public: + EVENT_LIGHTNINGCLOUD = 0, + EVENT_LIGHTNINGWAVE = 1 +}; - boss_wushoolay() - : CreatureScript("boss_wushoolay") - { - } +class boss_wushoolay : public CreatureScript +{ + public: boss_wushoolay() : CreatureScript("boss_wushoolay") {} - struct boss_wushoolayAI : public ScriptedAI + struct boss_wushoolayAI : public BossAI { - boss_wushoolayAI(Creature* creature) : ScriptedAI(creature) {} - - uint32 LightningCloud_Timer; - uint32 LightningWave_Timer; + boss_wushoolayAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) {} void Reset() { - LightningCloud_Timer = urand(5000, 10000); - LightningWave_Timer = urand(8000, 16000); + _Reset(); + } + + void JustDied(Unit* /*killer*/) + { + _JustDied(); } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_LIGHTNINGCLOUD, urand(5000, 10000)); + events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(8000, 16000)); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - //LightningCloud_Timer - if (LightningCloud_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_LIGHTNINGCLOUD); - LightningCloud_Timer = urand(15000, 20000); - } else LightningCloud_Timer -= diff; + events.Update(diff); - //LightningWave_Timer - if (LightningWave_Timer <= diff) - { - Unit* target = NULL; - target = SelectTarget(SELECT_TARGET_RANDOM, 0); - if (target) DoCast(target, SPELL_LIGHTNINGWAVE); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - LightningWave_Timer = urand(12000, 16000); - } else LightningWave_Timer -= diff; + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_LIGHTNINGCLOUD: + DoCastVictim(SPELL_LIGHTNINGCLOUD, true); + events.ScheduleEvent(EVENT_LIGHTNINGCLOUD, urand(15000, 20000)); + break; + case EVENT_LIGHTNINGWAVE: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_LIGHTNINGWAVE); + events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(12000, 16000)); + break; + default: + break; + } + } DoMeleeAttackIfReady(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index cfaf19642f2..b997d277c95 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -29,33 +29,28 @@ EndScriptData */ class instance_zulgurub : public InstanceMapScript { - public: - instance_zulgurub() - : InstanceMapScript("instance_zulgurub", 309) - { - } + public: instance_zulgurub(): InstanceMapScript("instance_zulgurub", 309) {} struct instance_zulgurub_InstanceMapScript : public InstanceScript { - instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map) {} + instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetBossNumber(EncounterCount); + } //If all High Priest bosses were killed. Lorkhan, Zath and Ohgan are added too. - uint32 m_auiEncounter[MAX_ENCOUNTERS]; - //Storing Lorkhan, Zath and Thekal because we need to cast on them later. Jindo is needed for healfunction too. - uint64 m_uiLorKhanGUID; - uint64 m_uiZathGUID; - uint64 m_uiThekalGUID; - uint64 m_uiJindoGUID; + uint64 LorKhanGUID; + uint64 ZathGUID; + uint64 ThekalGUID; + uint64 JindoGUID; void Initialize() { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - m_uiLorKhanGUID = 0; - m_uiZathGUID = 0; - m_uiThekalGUID = 0; - m_uiJindoGUID = 0; + LorKhanGUID = 0; + ZathGUID = 0; + ThekalGUID = 0; + JindoGUID = 0; } bool IsEncounterInProgress() const @@ -68,90 +63,124 @@ class instance_zulgurub : public InstanceMapScript { switch (creature->GetEntry()) { - case 11347: m_uiLorKhanGUID = creature->GetGUID(); break; - case 11348: m_uiZathGUID = creature->GetGUID(); break; - case 14509: m_uiThekalGUID = creature->GetGUID(); break; - case 11380: m_uiJindoGUID = creature->GetGUID(); break; + case NPC_ZEALOT_LORKHAN: LorKhanGUID = creature->GetGUID(); break; + case NPC_ZEALOT_ZATH: ZathGUID = creature->GetGUID(); break; + case NPC_HIGH_PRIEST_THEKAL: ThekalGUID = creature->GetGUID(); break; + case NPC_JINDO_THE_HEXXER: JindoGUID = creature->GetGUID(); break; } } - void SetData(uint32 uiType, uint32 uiData) + bool SetBossState(uint32 type, EncounterState state) { - switch (uiType) - { - case DATA_ARLOKK: - m_auiEncounter[0] = uiData; - break; + if (!InstanceScript::SetBossState(type, state)) + return false; + switch (type) + { case DATA_JEKLIK: - m_auiEncounter[1] = uiData; - break; - case DATA_VENOXIS: - m_auiEncounter[2] = uiData; - break; - case DATA_MARLI: - m_auiEncounter[3] = uiData; - break; - + case DATA_ARLOKK: + case DATA_HAKKAR: + case DATA_MANDOKIR: + case DATA_JINDO: + case DATA_GAHZRANKA: + case DATA_EDGE_OF_MADNESS: case DATA_THEKAL: - m_auiEncounter[4] = uiData; - break; - case DATA_LORKHAN: - m_auiEncounter[5] = uiData; - break; - case DATA_ZATH: - m_auiEncounter[6] = uiData; - break; - case DATA_OHGAN: - m_auiEncounter[7] = uiData; + break; + default: break; } + + return true; } - uint32 GetData(uint32 uiType) const + uint32 GetData(uint32 type) const + { + switch (type) { - switch (uiType) - { - case DATA_ARLOKK: - return m_auiEncounter[0]; - case DATA_JEKLIK: - return m_auiEncounter[1]; - case DATA_VENOXIS: - return m_auiEncounter[2]; - case DATA_MARLI: - return m_auiEncounter[3]; - case DATA_THEKAL: - return m_auiEncounter[4]; - case DATA_LORKHAN: - return m_auiEncounter[5]; - case DATA_ZATH: - return m_auiEncounter[6]; - case DATA_OHGAN: - return m_auiEncounter[7]; - } - return 0; + case DATA_JEKLIK: return GetBossState(DATA_JEKLIK); + case DATA_VENOXIS: return GetBossState(DATA_VENOXIS); + case DATA_MARLI: return GetBossState(DATA_MARLI); + case DATA_ARLOKK: return GetBossState(DATA_ARLOKK); + case DATA_HAKKAR: return GetBossState(DATA_HAKKAR); + case DATA_MANDOKIR: return GetBossState(DATA_MANDOKIR); + case DATA_JINDO: return GetBossState(DATA_JINDO); + case DATA_GAHZRANKA: return GetBossState(DATA_GAHZRANKA); + case DATA_EDGE_OF_MADNESS: return GetBossState(DATA_EDGE_OF_MADNESS); + case DATA_THEKAL: return GetBossState(DATA_THEKAL); + case DATA_LORKHAN: return GetBossState(DATA_LORKHAN); + case DATA_ZATH: return GetBossState(DATA_ZATH); + case DATA_OHGAN: return GetBossState(DATA_OHGAN); + break; + default: + break; } + return 0; + } + uint64 GetData64(uint32 uiData) const { switch (uiData) { case DATA_LORKHAN: - return m_uiLorKhanGUID; + return LorKhanGUID; case DATA_ZATH: - return m_uiZathGUID; + return ZathGUID; case DATA_THEKAL: - return m_uiThekalGUID; + return ThekalGUID; case DATA_JINDO: - return m_uiJindoGUID; + return JindoGUID; } return 0; } + + std::string GetSaveData() + { + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "Z G " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); + } + + void Load(const char* str) + { + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; + + if (dataHead1 == 'Z' && dataHead2 == 'G') + { + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } + } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; + } }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 22637315066..2544e4f4d5f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -19,20 +18,36 @@ #ifndef DEF_ZULGURUB_H #define DEF_ZULGURUB_H +uint32 const EncounterCount = 13; + enum DataTypes { - MAX_ENCOUNTERS = 8, + DATA_JEKLIK = 0, // Main boss + DATA_VENOXIS = 1, // Main boss + DATA_MARLI = 2, // Main boss + DATA_ARLOKK = 3, // Main boss + DATA_THEKAL = 4, // Main boss + DATA_HAKKAR = 5, // End boss + DATA_MANDOKIR = 6, // Optional boss + DATA_JINDO = 7, // Optional boss + DATA_GAHZRANKA = 8, // Optional boss + DATA_EDGE_OF_MADNESS = 9, // Optional Event Edge of Madness - one of: Gri'lek, Renataki, Hazza'rah, or Wushoolay + DATA_LORKHAN = 10, // Zealot Lor'Khan add to High priest Thekal! + DATA_ZATH = 11, // Zealot Zath add to High priest Thekal! + DATA_OHGAN = 12 // Bloodlord Mandokir's raptor mount +}; - DATA_ARLOKK = 1, - DATA_JEKLIK = 2, - DATA_VENOXIS = 3, - DATA_MARLI = 4, - DATA_OHGAN = 5, - DATA_THEKAL = 6, - DATA_ZATH = 7, - DATA_LORKHAN = 8, - DATA_JINDO = 10, +enum CreatureIds +{ + NPC_ZEALOT_LORKHAN = 11347, + NPC_ZEALOT_ZATH = 11348, + NPC_HIGH_PRIEST_THEKAL = 14509, + NPC_JINDO_THE_HEXXER = 11380, + NPC_NIGHTMARE_ILLUSION = 15163, + NPC_ZULIAN_PROWLER = 15101, + NPC_SPEAKER = 11391, + NPC_SHADE_OF_JINDO = 14986, + NPC_SACRIFICED_TROLL = 14826 }; #endif - diff --git a/src/server/scripts/EasternKingdoms/boss_kruul.cpp b/src/server/scripts/EasternKingdoms/boss_kruul.cpp index 226ff794a9f..158861e90c7 100644 --- a/src/server/scripts/EasternKingdoms/boss_kruul.cpp +++ b/src/server/scripts/EasternKingdoms/boss_kruul.cpp @@ -26,13 +26,16 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" -#define SPELL_SHADOWVOLLEY 21341 -#define SPELL_CLEAVE 20677 -#define SPELL_THUNDERCLAP 23931 -#define SPELL_TWISTEDREFLECTION 21063 -#define SPELL_VOIDBOLT 21066 -#define SPELL_RAGE 21340 -#define SPELL_CAPTURESOUL 21054 +enum Spells +{ + SPELL_SHADOWVOLLEY = 21341, + SPELL_CLEAVE = 20677, + SPELL_THUNDERCLAP = 23931, + SPELL_TWISTEDREFLECTION = 21063, + SPELL_VOIDBOLT = 21066, + SPELL_RAGE = 21340, + SPELL_CAPTURESOUL = 21054 +}; class boss_kruul : public CreatureScript { diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index e72e6dff9cf..cfc35b676ea 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -16,25 +16,59 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ObjectMgr.h" #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "Player.h" #include "ruins_of_ahnqiraj.h" enum Spells { - SPELL_STINGERSPRAY = 25749, - SPELL_POISONSTINGER = 25748, // Only used in phase 1 + SPELL_STINGER_SPRAY = 25749, + SPELL_POISON_STINGER = 25748, SPELL_PARALYZE = 25725, SPELL_TRASH = 3391, - SPELL_FRENZY = 8269, // Not used + SPELL_FRENZY = 8269, SPELL_LASH = 25852, - SPELL_FEED = 25721, + SPELL_FEED = 25721 }; -enum Says +enum Events { - EMOTE_FRENZY = 0 // Not used + EVENT_STINGER_SPRAY = 0, + EVENT_POISON_STINGER = 1, + EVENT_SUMMON_SWARMER = 2, + EVENT_SWARMER_ATTACK = 3, + EVENT_PARALYZE = 4, + EVENT_LASH = 5, + EVENT_TRASH = 6 +}; + +enum Emotes +{ + EMOTE_FRENZY = 0 +}; + +enum Phases +{ + PHASE_AIR = 0, + PHASE_GROUND = 1 +}; + +enum Points +{ + POINT_AIR = 0, + POINT_GROUND = 1, + POINT_PARALYZE = 2 +}; + +const Position AyamissAirPos = { -9689.292f, 1547.912f, 48.02729f, 0.0f }; +const Position AltarPos = { -9717.18f, 1517.72f, 27.4677f, 0.0f }; +// TODO: These below are probably incorrect, taken from SD2 +const Position SwarmerPos = { -9647.352f, 1578.062f, 55.32f, 0.0f }; +const Position LarvaPos[2] = +{ + { -9674.4707f, 1528.4133f, 22.457f, 0.0f }, + { -9701.6005f, 1566.9993f, 24.118f, 0.0f } }; class boss_ayamiss : public CreatureScript @@ -42,27 +76,72 @@ class boss_ayamiss : public CreatureScript public: boss_ayamiss() : CreatureScript("boss_ayamiss") { } - struct boss_ayamissAI : public ScriptedAI + struct boss_ayamissAI : public BossAI { - boss_ayamissAI(Creature* creature) : ScriptedAI(creature) + boss_ayamissAI(Creature* creature) : BossAI(creature, DATA_AYAMISS) { - instance = creature->GetInstanceScript(); } - uint32 STINGERSPRAY_Timer; - uint32 POISONSTINGER_Timer; - uint32 SUMMONSWARMER_Timer; - uint32 phase; + void Reset() + { + _Reset(); + _phase = PHASE_AIR; + _enraged = false; + SetCombatMovement(false); + } - InstanceScript* instance; + void JustSummoned(Creature* who) + { + switch (who->GetEntry()) + { + case NPC_SWARMER: + _swarmers.push_back(who->GetGUID()); + break; + case NPC_LARVA: + who->GetMotionMaster()->MovePoint(POINT_PARALYZE, AltarPos); + break; + case NPC_HORNET: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM)) + who->AI()->AttackStart(target); + break; + } + } - void Reset() + void MovementInform(uint32 type, uint32 id) + { + if (type == POINT_MOTION_TYPE) + { + switch (id) + { + case POINT_AIR: + me->AddUnitState(UNIT_STATE_ROOT); + break; + case POINT_GROUND: + me->ClearUnitState(UNIT_STATE_ROOT); + break; + } + } + } + + void EnterEvadeMode() { - STINGERSPRAY_Timer = 30000; - POISONSTINGER_Timer = 30000; - SUMMONSWARMER_Timer = 60000; - phase = 1; + me->ClearUnitState(UNIT_STATE_ROOT); + BossAI::EnterEvadeMode(); + } + + void EnterCombat(Unit* attacker) + { + BossAI::EnterCombat(attacker); + + events.ScheduleEvent(EVENT_STINGER_SPRAY, urand(20000, 30000)); + events.ScheduleEvent(EVENT_POISON_STINGER, 5000); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 5000); + events.ScheduleEvent(EVENT_SWARMER_ATTACK, 60000); + events.ScheduleEvent(EVENT_PARALYZE, 15000); + me->SetCanFly(true); + me->SetDisableGravity(true); + me->GetMotionMaster()->MovePoint(POINT_AIR, AyamissAirPos); } void UpdateAI(uint32 const diff) @@ -70,37 +149,148 @@ class boss_ayamiss : public CreatureScript if (!UpdateVictim()) return; - //If he is 70% start phase 2 - if (phase == 1 && !HealthAbovePct(70) && !me->IsNonMeleeSpellCasted(false)) + events.Update(diff); + + if (_phase == PHASE_AIR && me->GetHealthPct() < 70.0f) + { + _phase = PHASE_GROUND; + SetCombatMovement(true); + me->SetCanFly(false); + Position VictimPos; + me->getVictim()->GetPosition(&VictimPos); + me->GetMotionMaster()->MovePoint(POINT_GROUND, VictimPos); + DoResetThreat(); + events.ScheduleEvent(EVENT_LASH, urand(5000, 8000)); + events.ScheduleEvent(EVENT_TRASH, urand(3000, 6000)); + events.CancelEvent(EVENT_POISON_STINGER); + } + else { - phase=2; + DoMeleeAttackIfReady(); } - //STINGERSPRAY_Timer (only in phase2) - if (phase == 2 && STINGERSPRAY_Timer <= diff) + if (!_enraged && me->GetHealthPct() < 20.0f) { - DoCast(me->getVictim(), SPELL_STINGERSPRAY); - STINGERSPRAY_Timer = 30000; - } else STINGERSPRAY_Timer -= diff; + DoCast(me, SPELL_FRENZY); + Talk(EMOTE_FRENZY); + _enraged = true; + } - //POISONSTINGER_Timer (only in phase1) - if (phase == 1 && POISONSTINGER_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_POISONSTINGER); - POISONSTINGER_Timer = 30000; - } else POISONSTINGER_Timer -= diff; + switch (eventId) + { + case EVENT_STINGER_SPRAY: + DoCast(me, SPELL_STINGER_SPRAY); + events.ScheduleEvent(EVENT_STINGER_SPRAY, urand(15000, 20000)); + break; + case EVENT_POISON_STINGER: + DoCastVictim(SPELL_POISON_STINGER); + events.ScheduleEvent(EVENT_POISON_STINGER, urand(2000, 3000)); + break; + case EVENT_PARALYZE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true)) + { + DoCast(target, SPELL_PARALYZE); + instance->SetData64(DATA_PARALYZED, target->GetGUID()); + uint8 Index = urand(0, 1); + me->SummonCreature(NPC_LARVA, LarvaPos[Index], TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000); + } + events.ScheduleEvent(EVENT_PARALYZE, 15000); + break; + case EVENT_SWARMER_ATTACK: + for (std::list<uint64>::iterator i = _swarmers.begin(); i != _swarmers.end(); ++i) + if (Creature* swarmer = me->GetMap()->GetCreature(*i)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM)) + swarmer->AI()->AttackStart(target); + + _swarmers.clear(); + events.ScheduleEvent(EVENT_SWARMER_ATTACK, 60000); + break; + case EVENT_SUMMON_SWARMER: + Position Pos; + me->GetRandomPoint(SwarmerPos, 80.0f, Pos); + me->SummonCreature(NPC_SWARMER, Pos); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 5000); + break; + case EVENT_TRASH: + DoCastVictim(SPELL_TRASH); + events.ScheduleEvent(EVENT_TRASH, urand(5000, 7000)); + break; + case EVENT_LASH: + DoCastVictim(SPELL_LASH); + events.ScheduleEvent(EVENT_LASH, urand(8000, 15000)); + break; + } + } + } + private: + std::list<uint64> _swarmers; + uint8 _phase; + bool _enraged; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_ayamissAI(creature); + } +}; + +class npc_hive_zara_larva : public CreatureScript +{ + public: + npc_hive_zara_larva() : CreatureScript("npc_hive_zara_larva") { } + + struct npc_hive_zara_larvaAI : public ScriptedAI + { + npc_hive_zara_larvaAI(Creature* creature) : ScriptedAI(creature) + { + _instance = me->GetInstanceScript(); + } + + void MovementInform(uint32 type, uint32 id) + { + if (type == POINT_MOTION_TYPE) + if (id == POINT_PARALYZE) + if (Player* target = ObjectAccessor::GetPlayer(*me, _instance->GetData64(DATA_PARALYZED))) + DoCast(target, SPELL_FEED); // Omnomnom + } + + void MoveInLineOfSight(Unit* who) + { + if (_instance->GetBossState(DATA_AYAMISS) == IN_PROGRESS) + return; + + ScriptedAI::MoveInLineOfSight(who); + } + + void AttackStart(Unit* victim) + { + if (_instance->GetBossState(DATA_AYAMISS) == IN_PROGRESS) + return; + + ScriptedAI::AttackStart(victim); + } + + void UpdateAI(uint32 const diff) + { + if (_instance->GetBossState(DATA_AYAMISS) == IN_PROGRESS) + return; - DoMeleeAttackIfReady(); + ScriptedAI::UpdateAI(diff); } + private: + InstanceScript* _instance; }; CreatureAI* GetAI(Creature* creature) const { - return new boss_ayamissAI (creature); + return new npc_hive_zara_larvaAI(creature); } }; void AddSC_boss_ayamiss() { new boss_ayamiss(); + new npc_hive_zara_larva(); } diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp index e26cba9cb6e..285d893fe41 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp @@ -70,11 +70,11 @@ class boss_buru : public CreatureScript boss_buruAI(Creature* creature) : BossAI(creature, DATA_BURU) { } - + void EnterEvadeMode() { BossAI::EnterEvadeMode(); - + for (std::list<uint64>::iterator i = Eggs.begin(); i != Eggs.end(); ++i) if (Creature* egg = me->GetMap()->GetCreature(*Eggs.begin())) egg->Respawn(); @@ -101,7 +101,7 @@ class boss_buru : public CreatureScript if (_phase == PHASE_EGG) me->DealDamage(me, 45000); } - + void KilledUnit(Unit* victim) { if (victim->GetTypeId() == TYPEID_PLAYER) @@ -112,12 +112,12 @@ class boss_buru : public CreatureScript { if (_phase != PHASE_EGG) return; - + me->RemoveAurasDueToSpell(SPELL_FULL_SPEED); me->RemoveAurasDueToSpell(SPELL_GATHERING_SPEED); events.ScheduleEvent(EVENT_GATHERING_SPEED, 9000); events.ScheduleEvent(EVENT_FULL_SPEED, 60000); - + if (Unit* victim = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { DoResetThreat(); @@ -125,21 +125,21 @@ class boss_buru : public CreatureScript Talk(EMOTE_TARGET, victim->GetGUID()); } } - + void ManageRespawn(uint64 EggGUID) { ChaseNewVictim(); Eggs.push_back(EggGUID); events.ScheduleEvent(EVENT_RESPAWN_EGG, 100000); } - + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; events.Update(diff); - + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) @@ -170,7 +170,7 @@ class boss_buru : public CreatureScript break; } } - + if (me->GetHealthPct() < 20.0f && _phase == PHASE_EGG) { DoCast(me, SPELL_BURU_TRANSFORM); // Enrage @@ -178,7 +178,7 @@ class boss_buru : public CreatureScript me->RemoveAurasDueToSpell(SPELL_THORNS); _phase = PHASE_TRANSFORM; } - + DoMeleeAttackIfReady(); } private: @@ -203,14 +203,14 @@ class npc_buru_egg : public CreatureScript { _instance = me->GetInstanceScript(); } - + void EnterCombat(Unit* attacker) { if (Creature* buru = me->GetMap()->GetCreature(_instance->GetData64(DATA_BURU))) if (!buru->isInCombat()) buru->AI()->AttackStart(attacker); } - + void JustSummoned(Creature* who) { if (who->GetEntry() == NPC_HATCHLING) @@ -218,7 +218,7 @@ class npc_buru_egg : public CreatureScript if (Unit* target = buru->AI()->SelectTarget(SELECT_TARGET_RANDOM)) who->AI()->AttackStart(target); } - + void JustDied(Unit* /*killer*/) { DoCastAOE(SPELL_EXPLODE, true); @@ -247,13 +247,13 @@ class spell_egg_explosion : public SpellScriptLoader class spell_egg_explosion_SpellScript : public SpellScript { PrepareSpellScript(spell_egg_explosion_SpellScript); - + void HandleAfterCast() { if (Creature* buru = GetCaster()->FindNearestCreature(NPC_BURU, 5.f)) buru->AI()->DoAction(ACTION_EXPLODE); } - + void HandleDummyHitTarget(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp index fcb6364244e..20c0dd035a4 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp @@ -89,7 +89,6 @@ class boss_ossirian : public CreatureScript boss_ossirianAI(Creature* creature) : BossAI(creature, DATA_OSSIRIAN) { SaidIntro = false; - Reset(); } uint64 TriggerGUID; @@ -121,13 +120,9 @@ class boss_ossirian : public CreatureScript void DoAction(const int32 action) { if (action == ACTION_TRIGGER_WEAKNESS) - { if (Creature* Trigger = me->GetMap()->GetCreature(TriggerGUID)) - { if (!Trigger->HasUnitState(UNIT_STATE_CASTING)) Trigger->CastSpell(Trigger, SpellWeakness[urand(0, 4)], false); - } - } } void EnterCombat(Unit* /*who*/) @@ -172,7 +167,7 @@ class boss_ossirian : public CreatureScript { Cleanup(); summons.DespawnAll(); - ScriptedAI::EnterEvadeMode(); + BossAI::EnterEvadeMode(); } void JustDied(Unit* /*killer*/) @@ -207,13 +202,14 @@ class boss_ossirian : public CreatureScript } } - void MoveInLineOfSight(Unit* /*who*/) + void MoveInLineOfSight(Unit* who) { if (!SaidIntro) { Talk(SAY_INTRO); SaidIntro = true; } + BossAI::MoveInLineOfSight(who); } void UpdateAI(uint32 const diff) diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp index 6dbeaed9e5d..658528f1fb4 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp @@ -36,6 +36,7 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript _buruGUID = 0; _ayamissGUID = 0; _ossirianGUID = 0; + _paralyzedGUID = 0; } void OnCreatureCreate(Creature* creature) @@ -71,6 +72,12 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript return true; } + void SetData64(uint32 type, uint64 data) + { + if (type == DATA_PARALYZED) + _paralyzedGUID = data; + } + uint64 GetData64(uint32 type) const { switch (type) @@ -87,6 +94,8 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript return _ayamissGUID; case DATA_OSSIRIAN: return _ossirianGUID; + case DATA_PARALYZED: + return _paralyzedGUID; } return 0; @@ -142,6 +151,7 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript uint64 _buruGUID; uint64 _ayamissGUID; uint64 _ossirianGUID; + uint64 _paralyzedGUID; }; InstanceScript* GetInstanceScript(InstanceMap* map) const diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h index 6ece21f627b..419aaf1c303 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h @@ -26,7 +26,9 @@ enum DataTypes DATA_BURU = 3, DATA_AYAMISS = 4, DATA_OSSIRIAN = 5, - NUM_ENCOUNTER = 6 + NUM_ENCOUNTER = 6, + + DATA_PARALYZED = 7 }; enum Creatures @@ -42,12 +44,15 @@ enum Creatures NPC_HIVEZARA_LARVA = 15555, NPC_SAND_VORTEX = 15428, NPC_OSSIRIAN_TRIGGER = 15590, - NPC_HATCHLING = 15521 + NPC_HATCHLING = 15521, + NPC_LARVA = 15555, + NPC_SWARMER = 15546, + NPC_HORNET = 15934 }; enum GameObjects { - GO_OSSIRIAN_CRYSTAL = 180619, + GO_OSSIRIAN_CRYSTAL = 180619 }; #endif diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 1186459218c..8030358a068 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -68,7 +68,7 @@ class boss_skeram : public CreatureScript { Talk(SAY_SLAY); } - + void EnterEvadeMode() { ScriptedAI::EnterEvadeMode(); @@ -93,10 +93,10 @@ class boss_skeram : public CreatureScript rand = urand(0, 2); creature->CastSpell(creature, BlinkSpells[rand]); _flag |= (1 << rand); - + if (_flag & (1 << 7)) _flag = 0; - + if (Unit* Target = SelectTarget(SELECT_TARGET_RANDOM)) creature->AI()->AttackStart(Target); @@ -183,12 +183,12 @@ class boss_skeram : public CreatureScript DoMeleeAttackIfReady(); } } - + private: float _hpct; uint8 _flag; }; - + CreatureAI* GetAI(Creature* creature) const { return new boss_skeramAI(creature); diff --git a/src/server/scripts/Kalimdor/zone_feralas.cpp b/src/server/scripts/Kalimdor/zone_feralas.cpp index b2326de86ab..2d5b383cefc 100644 --- a/src/server/scripts/Kalimdor/zone_feralas.cpp +++ b/src/server/scripts/Kalimdor/zone_feralas.cpp @@ -221,7 +221,10 @@ class spell_gordunni_trap : public SpellScriptLoader { if (Unit* caster = GetCaster()) if (GameObject* chest = caster->SummonGameObject(GO_GORDUNNI_DIRT_MOUND, caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0)) + { chest->SetSpellId(GetSpellInfo()->Id); + caster->RemoveGameObject(chest, false); + } } void Register() diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index f3f2e587178..536c2af2bd8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -20,25 +20,33 @@ #include "naxxramas.h" #include "SpellInfo.h" -#define SPELL_BOMBARD_SLIME 28280 - -#define SPELL_POISON_CLOUD 28240 -#define SPELL_MUTATING_INJECTION 28169 -#define SPELL_SLIME_SPRAY RAID_MODE(28157, 54364) -#define SPELL_BERSERK 26662 -#define SPELL_POISON_CLOUD_ADD 59116 +enum Spells +{ + SPELL_BOMBARD_SLIME = 28280, + SPELL_POISON_CLOUD = 28240, + SPELL_MUTATING_INJECTION = 28169, + SPELL_SLIME_SPRAY = 28157, + H_SPELL_SLIME_SPRAY = 54364, + SPELL_BERSERK = 26662, + SPELL_POISON_CLOUD_ADD = 59116 +}; -#define EVENT_BERSERK 1 -#define EVENT_CLOUD 2 -#define EVENT_INJECT 3 -#define EVENT_SPRAY 4 +enum Events +{ + EVENT_BERSERK = 0, + EVENT_CLOUD = 1, + EVENT_INJECT = 2, + EVENT_SPRAY = 3 +}; -#define MOB_FALLOUT_SLIME 16290 +enum CreatureId +{ + MOB_FALLOUT_SLIME = 16290 +}; class boss_grobbulus : public CreatureScript { -public: - boss_grobbulus() : CreatureScript("boss_grobbulus") { } +public: boss_grobbulus() : CreatureScript("boss_grobbulus") { } CreatureAI* GetAI(Creature* creature) const { diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 92ced3c702f..891b91c6dfb 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -28,7 +28,7 @@ enum Spells SPELL_ARCANE_BUFFET_H = 59485, SPELL_SUMMON_ETHEREAL_SPHERE_1 = 54102, SPELL_SUMMON_ETHEREAL_SPHERE_2 = 54137, - SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138, + SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138 }; enum NPCs @@ -42,7 +42,7 @@ enum CreatureSpells SPELL_ARCANE_POWER = 54160, H_SPELL_ARCANE_POWER = 59474, SPELL_SUMMON_PLAYERS = 54164, - SPELL_POWER_BALL_VISUAL = 54141, + SPELL_POWER_BALL_VISUAL = 54141 }; enum Yells diff --git a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp index 9fa5a1a51f5..c55e93726a9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/underbog/boss_hungarfen.cpp @@ -26,8 +26,11 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" -#define SPELL_FOUL_SPORES 31673 -#define SPELL_ACID_GEYSER 38739 +enum Spells +{ + SPELL_FOUL_SPORES = 31673, + SPELL_ACID_GEYSER = 38739 +}; class boss_hungarfen : public CreatureScript { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp index 3c72c8353aa..dc9940c87b8 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,26 +16,112 @@ */ /* ScriptData -SDName: Boss_Gatewatcher_Gyrokill -SD%Complete: 0 -SDComment: Place Holder +SDName: boss_gatewatcher_gyrokill +SD%Complete: 99% +SDComment: SDCategory: Tempest Keep, The Mechanar EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -//not used -#define SAY_AGGRO -1554000 -#define SAY_SAW_ATTACK1 -1554001 -#define SAY_SAW_ATTACK2 -1554002 -#define SAY_SLAY1 -1554003 -#define SAY_SLAY2 -1554004 -#define SAY_DEATH -1554005 +enum Say +{ + SAY_AGGRO = 0, + SAY_SLAY = 1, + SAY_SAW_BLADEs = 2, + SAY_DEATH = 3 +}; -#define SPELL_STREAM_OF_MACHINE_FLUID 35311 -#define SPELL_SAW_BLADE 35318 -#define H_SPELL_SAW_BLADE 39192 -#define SPELL_SHADOW_POWER 35322 -#define H_SPELL_SHADOW_POWER 39193 +enum Spells +{ + SPELL_STREAM_OF_MACHINE_FLUID = 35311, + SPELL_SAW_BLADE = 35318, + H_SPELL_SAW_BLADE = 39192, + SPELL_SHADOW_POWER = 35322, + H_SPELL_SHADOW_POWER = 39193 +}; +enum Events +{ + EVENT_STREAM_OF_MACHINE_FLUID = 0, + EVENT_SAW_BLADE = 1, + EVENT_SHADOW_POWER = 2 +}; + +class boss_gatewatcher_gyrokill : public CreatureScript +{ + public: + boss_gatewatcher_gyrokill() : CreatureScript("boss_gatewatcher_gyrokill") {} + + struct boss_gatewatcher_gyrokillAI : public BossAI + { + boss_gatewatcher_gyrokillAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_GYROKILL) {} + + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_DEATH); + } + + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 10000); + events.ScheduleEvent(EVENT_SAW_BLADE, 20000); + events.ScheduleEvent(EVENT_SHADOW_POWER, 25000); + Talk(SAY_AGGRO); + } + + void KilledUnit(Unit* /*victim*/) + { + Talk(SAY_SLAY); + } + + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_STREAM_OF_MACHINE_FLUID: + DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID, true); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, urand(13000, 17000)); + break; + case EVENT_SAW_BLADE: + DoCast(me, SPELL_SAW_BLADE); + Talk(SAY_SAW_BLADEs); + events.ScheduleEvent(EVENT_SAW_BLADE, urand(20000, 30000)); + break; + case EVENT_SHADOW_POWER: + DoCast(me, SPELL_SHADOW_POWER); + events.ScheduleEvent(EVENT_SAW_BLADE, urand(25000, 35000)); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_gatewatcher_gyrokillAI (creature); + } +}; + +void AddSC_boss_gatewatcher_gyrokill() +{ + new boss_gatewatcher_gyrokill(); +} diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp index 09ff6cf8e49..440e17a29cf 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -25,8 +25,9 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -enum eSays +enum Says { SAY_AGGRO = 0, SAY_HAMMER = 1, @@ -35,111 +36,96 @@ enum eSays EMOTE_HAMMER = 4 }; -enum eSpells +enum Spells { - // Spells to be casted SPELL_SHADOW_POWER = 35322, H_SPELL_SHADOW_POWER = 39193, SPELL_HAMMER_PUNCH = 35326, SPELL_JACKHAMMER = 35327, H_SPELL_JACKHAMMER = 39194, - SPELL_STREAM_OF_MACHINE_FLUID = 35311, + SPELL_STREAM_OF_MACHINE_FLUID = 35311 +}; + +enum Events +{ + EVENT_STREAM_OF_MACHINE_FLUID = 0, + EVENT_JACKHAMMER = 1, + EVENT_SHADOW_POWER = 2 }; class boss_gatewatcher_iron_hand : public CreatureScript { public: + boss_gatewatcher_iron_hand(): CreatureScript("boss_gatewatcher_iron_hand") {} - boss_gatewatcher_iron_hand() - : CreatureScript("boss_gatewatcher_iron_hand") + struct boss_gatewatcher_iron_handAI : public BossAI { - } - // Gatewatcher Iron-Hand AI - struct boss_gatewatcher_iron_handAI : public ScriptedAI - { - boss_gatewatcher_iron_handAI(Creature* creature) : ScriptedAI(creature) - { - } - - uint32 Shadow_Power_Timer; - uint32 Jackhammer_Timer; - uint32 Stream_of_Machine_Fluid_Timer; - - void Reset() - { - Shadow_Power_Timer = 25000; - Jackhammer_Timer = 45000; - Stream_of_Machine_Fluid_Timer = 55000; + boss_gatewatcher_iron_handAI(Creature* creature) : BossAI(creature, DATA_GATEWATCHER_IRON_HAND) {} - } - void EnterCombat(Unit* /*who*/) - { - Talk(SAY_AGGRO); - } - - void KilledUnit(Unit* /*victim*/) - { - if (rand()%2) - return; + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 55000); + events.ScheduleEvent(EVENT_JACKHAMMER, 45000); + events.ScheduleEvent(EVENT_SHADOW_POWER, 25000); + Talk(SAY_AGGRO); + } + void KilledUnit(Unit* /*victim*/) + { + if (roll_chance_i(50)) Talk(SAY_SLAY); - } - - void JustDied(Unit* /*killer*/) - { - Talk(SAY_DEATH); - //TODO: Add door check/open code - } - - void UpdateAI(const uint32 diff) - { - //Return since we have no target - if (!UpdateVictim()) - return; + } - //Shadow Power - if (Shadow_Power_Timer <= diff) - { - DoCast(me, SPELL_SHADOW_POWER); - Shadow_Power_Timer = urand(20000, 28000); - } - else - Shadow_Power_Timer -= diff; + void JustDied(Unit* /*killer*/) + { + _JustDied(); + Talk(SAY_DEATH); + } - //Jack Hammer - if (Jackhammer_Timer <= diff) - { - //TODO: expect cast this about 5 times in a row (?), announce it by emote only once - Talk(EMOTE_HAMMER); - DoCast(me->getVictim(), SPELL_JACKHAMMER); + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; - //chance to yell, but not same time as emote (after spell in fact casted) - if (rand()%2) - return; + events.Update(diff); - Talk(SAY_HAMMER); - Jackhammer_Timer = 30000; - } - else - Jackhammer_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Stream of Machine Fluid - if (Stream_of_Machine_Fluid_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) { - DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID); - Stream_of_Machine_Fluid_Timer = urand(35000, 50000); + case EVENT_STREAM_OF_MACHINE_FLUID: + DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID, true); + events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, urand(35000, 50000)); + break; + case EVENT_JACKHAMMER: + Talk(EMOTE_HAMMER); + //TODO: expect cast this about 5 times in a row (?), announce it by emote only once + DoCastVictim(SPELL_JACKHAMMER, true); + if (roll_chance_i(50)) + Talk(SAY_HAMMER); + events.ScheduleEvent(EVENT_JACKHAMMER, 30000); + break; + case EVENT_SHADOW_POWER: + DoCast(me, SPELL_SHADOW_POWER); + events.ScheduleEvent(EVENT_SHADOW_POWER, urand(20000, 28000)); + break; + default: + break; } - else - Stream_of_Machine_Fluid_Timer -= diff; - - DoMeleeAttackIfReady(); } - }; - CreatureAI* GetAI(Creature* creature) const - { - return new boss_gatewatcher_iron_handAI(creature); + DoMeleeAttackIfReady(); } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_gatewatcher_iron_handAI(creature); + } }; void AddSC_boss_gatewatcher_iron_hand() diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index f8c44471b30..1a43798ccef 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -15,21 +15,144 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -//! TODO - Boss not scripted, just ported required spellscript from core - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellScript.h" +#include "mechanar.h" #include "Player.h" enum Spells { + SPELL_HEADCRACK = 35161, + SPELL_REFLECTIVE_MAGIC_SHIELD = 35158, + SPELL_REFLECTIVE_DAMAGE_SHIELD = 35159, + SPELL_POLARITY_SHIFT = 39096, + SPELL_BERSERK = 26662, + SPELL_NETHER_CHARGE_TIMER = 37670, + SPELL_NETHER_CHARGE_PASSIVE = 37670, + SPELL_POSITIVE_POLARITY = 39088, SPELL_POSITIVE_CHARGE_STACK = 39089, SPELL_POSITIVE_CHARGE = 39090, + SPELL_NEGATIVE_POLARITY = 39091, SPELL_NEGATIVE_CHARGE_STACK = 39092, - SPELL_NEGATIVE_CHARGE = 39093, + SPELL_NEGATIVE_CHARGE = 39093 +}; + +enum Yells +{ + YELL_AGGRO = 0, + YELL_REFLECTIVE_MAGIC_SHIELD = 1, + YELL_REFLECTIVE_DAMAGE_SHIELD = 2, + YELL_KILL = 3, + YELL_DEATH = 4 +}; + +enum Creatures +{ + NPC_NETHER_CHARGE = 20405 +}; + +enum Events +{ + EVENT_NONE = 0, + + EVENT_HEADCRACK = 1, + EVENT_REFLECTIVE_DAMAGE_SHIELD = 2, + EVENT_REFLECTIVE_MAGIE_SHIELD = 3, + EVENT_POSITIVE_SHIFT = 4, + EVENT_SUMMON_NETHER_CHARGE = 5, + EVENT_BERSERK = 6 +}; + +class boss_mechano_lord_capacitus : public CreatureScript +{ + public: + boss_mechano_lord_capacitus() : CreatureScript("boss_mechano_lord_capacitus") { } + + struct boss_mechano_lord_capacitusAI : public BossAI + { + boss_mechano_lord_capacitusAI(Creature* creature) : BossAI(creature, DATA_MECHANOLORD_CAPACITUS) { } + + void EnterCombat(Unit* /*who*/) + { + _EnterCombat(); + Talk(YELL_AGGRO); + events.ScheduleEvent(EVENT_HEADCRACK, 10 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_REFLECTIVE_DAMAGE_SHIELD, 15 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SUMMON_NETHER_CHARGE, 10 * IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BERSERK, 3 * MINUTE * IN_MILLISECONDS); + + if (IsHeroic()) + events.ScheduleEvent(EVENT_POSITIVE_SHIFT, 15 * IN_MILLISECONDS); + } + + void KilledUnit(Unit* /*victim*/) + { + Talk(YELL_KILL); + } + + void JustDied(Unit* /*victim*/) + { + _JustDied(); + Talk(YELL_DEATH); + } + + void UpdateAI(uint32 const diff) + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_HEADCRACK: + DoCastVictim(SPELL_HEADCRACK); + events.ScheduleEvent(EVENT_HEADCRACK, 10 * IN_MILLISECONDS); + break; + case EVENT_REFLECTIVE_DAMAGE_SHIELD: + Talk(YELL_REFLECTIVE_DAMAGE_SHIELD); + DoCast(me, SPELL_REFLECTIVE_DAMAGE_SHIELD); + events.ScheduleEvent(EVENT_REFLECTIVE_MAGIE_SHIELD, 30 * IN_MILLISECONDS); + break; + case EVENT_REFLECTIVE_MAGIE_SHIELD: + Talk(YELL_REFLECTIVE_MAGIC_SHIELD); + DoCast(me, SPELL_REFLECTIVE_MAGIC_SHIELD); + events.ScheduleEvent(EVENT_REFLECTIVE_DAMAGE_SHIELD, 30 * IN_MILLISECONDS); + break; + case EVENT_POSITIVE_SHIFT: + DoCastAOE(SPELL_POLARITY_SHIFT); + events.ScheduleEvent(EVENT_POSITIVE_SHIFT, urand(45, 60) * IN_MILLISECONDS); + break; + case EVENT_SUMMON_NETHER_CHARGE: + Position pos; + me->GetRandomNearPosition(pos, 5.0f); + me->SummonCreature(NPC_NETHER_CHARGE, pos, TEMPSUMMON_TIMED_DESPAWN, 18000); + events.ScheduleEvent(EVENT_SUMMON_NETHER_CHARGE, 10 * IN_MILLISECONDS); + break; + case EVENT_BERSERK: + DoCast(me, SPELL_BERSERK); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_mechano_lord_capacitusAI(creature); + } }; class spell_capacitus_polarity_charge : public SpellScriptLoader @@ -138,6 +261,7 @@ class spell_capacitus_polarity_shift : public SpellScriptLoader void AddSC_boss_mechano_lord_capacitus() { + new boss_mechano_lord_capacitus(); new spell_capacitus_polarity_charge(); new spell_capacitus_polarity_shift(); } diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 5a9e551375b..0b2370e1b17 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -36,60 +36,45 @@ enum eSays SAY_DEATH = 4 }; -enum eSpells +enum Spells { - SPELL_SUMMON_RAGIN_FLAMES = 35275, + SPELL_SUMMON_RAGIN_FLAMES = 35275, // Not scripted SPELL_FROST_ATTACK = 35263, SPELL_ARCANE_BLAST = 35314, SPELL_DRAGONS_BREATH = 35250, SPELL_KNOCKBACK = 37317, SPELL_SOLARBURN = 35267, - H_SPELL_SUMMON_RAGIN_FLAMES = 39084, - SPELL_INFERNO = 35268, - H_SPELL_INFERNO = 39346, - SPELL_FIRE_TAIL = 35278, + H_SPELL_SUMMON_RAGIN_FLAMES = 39084, // Not scripted + SPELL_INFERNO = 35268, // Not scripted + H_SPELL_INFERNO = 39346, // Not scripted + SPELL_FIRE_TAIL = 35278 // Not scripted +}; + +enum Events +{ + EVENT_FROST_ATTACK = 0, + EVENT_ARCANE_BLAST = 1, + EVENT_DRAGONS_BREATH = 2, + EVENT_KNOCKBACK = 3, + EVENT_SOLARBURN = 4 }; class boss_nethermancer_sepethrea : public CreatureScript { - public: + public: boss_nethermancer_sepethrea(): CreatureScript("boss_nethermancer_sepethrea") {} - boss_nethermancer_sepethrea() - : CreatureScript("boss_nethermancer_sepethrea") + struct boss_nethermancer_sepethreaAI : public BossAI { - } - struct boss_nethermancer_sepethreaAI : public ScriptedAI - { - boss_nethermancer_sepethreaAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } - - InstanceScript* instance; - - uint32 frost_attack_Timer; - uint32 arcane_blast_Timer; - uint32 dragons_breath_Timer; - uint32 knockback_Timer; - uint32 solarburn_Timer; - - void Reset() - { - frost_attack_Timer = urand(7000, 10000); - arcane_blast_Timer = urand(12000, 18000); - dragons_breath_Timer = urand(18000, 22000); - knockback_Timer = urand(22000, 28000); - solarburn_Timer = 30000; - - if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, NOT_STARTED); - } + boss_nethermancer_sepethreaAI(Creature* creature) : BossAI(creature,DATA_NETHERMANCER_SEPRETHREA) {} void EnterCombat(Unit* who) { - if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS); - + _EnterCombat(); + events.ScheduleEvent(EVENT_FROST_ATTACK, urand(7000, 10000)); + events.ScheduleEvent(EVENT_ARCANE_BLAST, urand(12000, 18000)); + events.ScheduleEvent(EVENT_DRAGONS_BREATH, urand(18000, 22000)); + events.ScheduleEvent(EVENT_KNOCKBACK, urand(22000, 28000)); + events.ScheduleEvent(EVENT_SOLARBURN, 30000); Talk(SAY_AGGRO); DoCast(who, SPELL_SUMMON_RAGIN_FLAMES); Talk(SAY_SUMMON); @@ -102,66 +87,50 @@ class boss_nethermancer_sepethrea : public CreatureScript void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_NETHERMANCER_EVENT, DONE); } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - //Frost Attack - if (frost_attack_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_FROST_ATTACK); + events.Update(diff); - frost_attack_Timer = urand(7000, 10000); - } - else - frost_attack_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Arcane Blast - if (arcane_blast_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ARCANE_BLAST); - arcane_blast_Timer = 15000; - } - else - arcane_blast_Timer -= diff; - //Dragons Breath - if (dragons_breath_Timer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me->getVictim(), SPELL_DRAGONS_BREATH); + switch (eventId) { - if (rand()%2) - return; - Talk(SAY_DRAGONS_BREATH); + case EVENT_FROST_ATTACK: + DoCastVictim(SPELL_FROST_ATTACK, true); + events.ScheduleEvent(EVENT_FROST_ATTACK, urand(7000, 10000)); + break; + case EVENT_ARCANE_BLAST: + DoCastVictim(SPELL_ARCANE_BLAST, true); + events.ScheduleEvent(EVENT_ARCANE_BLAST, 15000); + break; + case EVENT_DRAGONS_BREATH: + DoCastVictim(SPELL_DRAGONS_BREATH, true); + events.ScheduleEvent(EVENT_DRAGONS_BREATH, urand(12000, 22000)); + if (roll_chance_i(50)) + Talk(SAY_DRAGONS_BREATH); + break; + case EVENT_KNOCKBACK: + DoCastVictim(SPELL_KNOCKBACK, true); + events.ScheduleEvent(EVENT_KNOCKBACK, urand(15000, 25000)); + break; + case EVENT_SOLARBURN: + DoCastVictim(SPELL_SOLARBURN, true); + events.ScheduleEvent(EVENT_SOLARBURN, 30000); + break; + default: + break; } - dragons_breath_Timer = urand(12000, 22000); } - else - dragons_breath_Timer -= diff; - - //Knockback - if (knockback_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_KNOCKBACK); - knockback_Timer = urand(15000, 25000); - } - else - knockback_Timer -= diff; - - //Solarburn - if (solarburn_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_SOLARBURN); - solarburn_Timer = 30000; - } - else - solarburn_Timer -= diff; DoMeleeAttackIfReady(); } @@ -172,13 +141,11 @@ class boss_nethermancer_sepethrea : public CreatureScript return new boss_nethermancer_sepethreaAI(creature); } }; + class mob_ragin_flames : public CreatureScript { public: - mob_ragin_flames() - : CreatureScript("mob_ragin_flames") - { - } + mob_ragin_flames() : CreatureScript("mob_ragin_flames") { } struct mob_ragin_flamesAI : public ScriptedAI { @@ -217,7 +184,7 @@ class mob_ragin_flames : public CreatureScript { if (instance) { - if (instance->GetData(DATA_NETHERMANCER_EVENT) != IN_PROGRESS) + if (instance->GetData(DATA_NETHERMANCER_SEPRETHREA) != IN_PROGRESS) { //remove me->setDeathState(JUST_DIED); @@ -259,9 +226,9 @@ class mob_ragin_flames : public CreatureScript return new mob_ragin_flamesAI(creature); } }; + void AddSC_boss_nethermancer_sepethrea() { new boss_nethermancer_sepethrea(); new mob_ragin_flames(); } - diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp index 41296daf1fa..9d894e41b60 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp @@ -25,8 +25,9 @@ EndScriptData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mechanar.h" -enum eSays +enum Says { SAY_AGGRO = 0, SAY_DOMINATION = 1, @@ -35,65 +36,53 @@ enum eSays SAY_SLAY = 4, SAY_DEATH = 5 }; -// Spells to be casted -enum eSpells + +enum Spells { SPELL_MANA_TAP = 36021, SPELL_ARCANE_TORRENT = 36022, SPELL_DOMINATION = 35280, H_SPELL_ARCANE_EXPLOSION = 15453, SPELL_FRENZY = 36992, - //Spells work, but not implemented - SPELL_SUMMON_NETHER_WRAITH_1 = 35285, - SPELL_SUMMON_NETHER_WRAITH_2 = 35286, - SPELL_SUMMON_NETHER_WRAITH_3 = 35287, - SPELL_SUMMON_NETHER_WRAITH_4 = 35288, - // Add Spells - SPELL_DETONATION = 35058, - SPELL_ARCANE_MISSILES = 35034, + SPELL_SUMMON_NETHER_WRAITH_1 = 35285, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_2 = 35286, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_3 = 35287, // Not scripted + SPELL_SUMMON_NETHER_WRAITH_4 = 35288, // Not scripted + SPELL_DETONATION = 35058, // Used by Nether Wraith + SPELL_ARCANE_MISSILES = 35034 // Used by Nether Wraith +}; + +enum Events +{ + EVENT_SUMMON = 0, + EVENT_MANA_TAP = 1, + EVENT_ARCANE_TORRENT = 2, + EVENT_DOMINATION = 3, + EVENT_ARCANE_EXPLOSION = 4 +}; + +enum Creatures +{ + NPC_NETHER_WRAITH = 21062 }; class boss_pathaleon_the_calculator : public CreatureScript { public: + boss_pathaleon_the_calculator(): CreatureScript("boss_pathaleon_the_calculator") {} - boss_pathaleon_the_calculator() - : CreatureScript("boss_pathaleon_the_calculator") - { - } - - struct boss_pathaleon_the_calculatorAI : public ScriptedAI + struct boss_pathaleon_the_calculatorAI : public BossAI { - boss_pathaleon_the_calculatorAI(Creature* creature) : ScriptedAI(creature), summons(me) - { - } + boss_pathaleon_the_calculatorAI(Creature* creature) : BossAI(creature, DATA_PATHALEON_THE_CALCULATOR) { } - uint32 Summon_Timer; - SummonList summons; - uint32 ManaTap_Timer; - uint32 ArcaneTorrent_Timer; - uint32 Domination_Timer; - uint32 ArcaneExplosion_Timer; - - bool Enraged; - - uint32 Counter; - - void Reset() - { - Summon_Timer = 30000; - ManaTap_Timer = urand(12000, 20000); - ArcaneTorrent_Timer = urand(16000, 25000); - Domination_Timer = urand(25000, 40000); - ArcaneExplosion_Timer = urand(8000, 13000); - - Enraged = false; - - Counter = 0; - summons.DespawnAll(); - } void EnterCombat(Unit* /*who*/) { + _EnterCombat(); + events.ScheduleEvent(EVENT_SUMMON, 30000); + events.ScheduleEvent(EVENT_MANA_TAP, urand(12000, 20000)); + events.ScheduleEvent(EVENT_ARCANE_TORRENT, urand(16000, 25000)); + events.ScheduleEvent(EVENT_DOMINATION, urand(25000, 40000)); + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(8000, 13000)); Talk(SAY_AGGRO); } @@ -104,107 +93,82 @@ class boss_pathaleon_the_calculator : public CreatureScript void JustDied(Unit* /*killer*/) { + _JustDied(); Talk(SAY_DEATH); - - summons.DespawnAll(); } - void JustSummoned(Creature* summon) - { - summons.Summon(summon); - } - void SummonedCreatureDespawn(Creature* summon) + void DamageTaken(Unit* /*attacker*/, uint32& damage) { - summons.Despawn(summon); + if (me->HealthBelowPctDamaged(20, damage) && !me->HasAura(SPELL_FRENZY)) + { + DoCast(me, SPELL_FRENZY); + Talk(SAY_ENRAGE); + } } - void UpdateAI(const uint32 diff) + void UpdateAI(uint32 const diff) { - //Return since we have no target if (!UpdateVictim()) return; - if (Summon_Timer <= diff) - { - for (uint8 i = 0; i < 3; ++i) - { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0); - Creature* Wraith = me->SummonCreature(21062, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000); - if (target && Wraith) - Wraith->AI()->AttackStart(target); - } - Talk(SAY_SUMMON); - Summon_Timer = urand(30000, 45000); - } - else - Summon_Timer -= diff; - - if (ManaTap_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_MANA_TAP); - ManaTap_Timer = urand(14000, 22000); - } - else - ManaTap_Timer -= diff; - - if (ArcaneTorrent_Timer <= diff) - { - DoCast(me->getVictim(), SPELL_ARCANE_TORRENT); - ArcaneTorrent_Timer = urand(12000, 18000); - } - else - ArcaneTorrent_Timer -= diff; + events.Update(diff); - if (Domination_Timer <= diff) - { - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) - { - Talk(SAY_DOMINATION); - DoCast(target, SPELL_DOMINATION); - } - Domination_Timer = urand(25000, 30000); - } - else - Domination_Timer -= diff; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - //Only casting if Heroic Mode is used - if (IsHeroic()) + while (uint32 eventId = events.ExecuteEvent()) { - if (ArcaneExplosion_Timer <= diff) + switch (eventId) { - DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION); - ArcaneExplosion_Timer = urand(10000, 14000); + case EVENT_SUMMON: + for (uint8 i = 0; i < 3; ++i) + { + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + { + if (Creature* Wraith = me->SummonCreature(NPC_NETHER_WRAITH, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000)) + Wraith->AI()->AttackStart(target); + } + } + Talk(SAY_SUMMON); + events.ScheduleEvent(EVENT_SUMMON, urand(30000, 45000)); + break; + case EVENT_MANA_TAP: + DoCastVictim(SPELL_MANA_TAP, true); + events.ScheduleEvent(EVENT_MANA_TAP, urand(14000, 22000)); + break; + case EVENT_ARCANE_TORRENT: + DoCastVictim(SPELL_ARCANE_TORRENT, true); + events.ScheduleEvent(EVENT_ARCANE_TORRENT, urand(12000, 18000)); + break; + case EVENT_DOMINATION: + Talk(SAY_DOMINATION); + DoCastVictim(SPELL_DOMINATION, true); + events.ScheduleEvent(EVENT_DOMINATION, urand(25000, 30000)); + break; + case EVENT_ARCANE_EXPLOSION: // Heroic only + DoCastVictim(H_SPELL_ARCANE_EXPLOSION, true); + events.ScheduleEvent(EVENT_ARCANE_EXPLOSION, urand(10000, 14000)); + break; + default: + break; } - else - ArcaneExplosion_Timer -= diff; - } - - if (!Enraged && HealthBelowPct(21)) - { - DoCast(me, SPELL_FRENZY); - Talk(SAY_ENRAGE); - Enraged = true; - } DoMeleeAttackIfReady(); } }; - CreatureAI* GetAI(Creature* creature) const - { - return new boss_pathaleon_the_calculatorAI (creature); - } + CreatureAI* GetAI(Creature* creature) const + { + return new boss_pathaleon_the_calculatorAI (creature); + } }; class mob_nether_wraith : public CreatureScript { public: - mob_nether_wraith() - : CreatureScript("mob_nether_wraith") - { - } + mob_nether_wraith() : CreatureScript("mob_nether_wraith") { } struct mob_nether_wraithAI : public ScriptedAI { diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 1f9ddfcdd0b..e6cb05084ad 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -16,68 +16,122 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* ScriptData -SDName: Instance_Mechanar -SD%Complete: 100 -SDComment: -SDCategory: Mechanar -EndScriptData */ #include "ScriptMgr.h" #include "InstanceScript.h" #include "mechanar.h" -#define MAX_ENCOUNTER 1 +static DoorData const doorData[] = +{ + { GO_DOOR_MOARG_1, DATA_GATEWATCHER_IRON_HAND, DOOR_TYPE_PASSAGE, BOUNDARY_NONE }, + { GO_DOOR_MOARG_2, DATA_GATEWATCHER_GYROKILL, DOOR_TYPE_PASSAGE, BOUNDARY_NONE }, + { GO_DOOR_NETHERMANCER, DATA_NETHERMANCER_SEPRETHREA, DOOR_TYPE_ROOM, BOUNDARY_NONE }, + {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } +}; class instance_mechanar : public InstanceMapScript { public: - instance_mechanar() - : InstanceMapScript("instance_mechanar", 554) - { - } + instance_mechanar(): InstanceMapScript("instance_mechanar", 554) { } struct instance_mechanar_InstanceMapScript : public InstanceScript { - instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) {} - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - - void Initialize() + instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map) { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + SetBossNumber(EncounterCount); + LoadDoorData(doorData); } + - bool IsEncounterInProgress() const + void OnGameObjectCreate(GameObject* gameObject) { - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - if (m_auiEncounter[i] == IN_PROGRESS) - return true; + switch (gameObject->GetEntry()) + { + case GO_DOOR_MOARG_1: + case GO_DOOR_MOARG_2: + case GO_DOOR_NETHERMANCER: + AddDoor(gameObject, true); + break; + default: + break; + } + } - return false; + void OnGameObjectRemove(GameObject* gameObject) + { + switch (gameObject->GetEntry()) + { + case GO_DOOR_MOARG_1: + case GO_DOOR_MOARG_2: + case GO_DOOR_NETHERMANCER: + AddDoor(gameObject, false); + break; + default: + break; + } } - uint32 GetData(uint32 type) const + bool SetBossState(uint32 type, EncounterState state) { + if (!InstanceScript::SetBossState(type, state)) + return false; + switch (type) { - case DATA_NETHERMANCER_EVENT: return m_auiEncounter[0]; + case DATA_GATEWATCHER_GYROKILL: + case DATA_GATEWATCHER_IRON_HAND: + case DATA_MECHANOLORD_CAPACITUS: + case DATA_NETHERMANCER_SEPRETHREA: + case DATA_PATHALEON_THE_CALCULATOR: + break; + default: + break; } - return false; + return true; } - uint64 GetData64(uint32 /*identifier*/) const + std::string GetSaveData() { - return 0; + OUT_SAVE_INST_DATA; + + std::ostringstream saveStream; + saveStream << "M C " << GetBossSaveData(); + + OUT_SAVE_INST_DATA_COMPLETE; + return saveStream.str(); } - void SetData(uint32 type, uint32 data) + void Load(const char* str) { - switch (type) + if (!str) + { + OUT_LOAD_INST_DATA_FAIL; + return; + } + + OUT_LOAD_INST_DATA(str); + + char dataHead1, dataHead2; + + std::istringstream loadStream(str); + loadStream >> dataHead1 >> dataHead2; + + if (dataHead1 == 'M' && dataHead2 == 'C') { - case DATA_NETHERMANCER_EVENT: m_auiEncounter[0] = data; break; + for (uint32 i = 0; i < EncounterCount; ++i) + { + uint32 tmpState; + loadStream >> tmpState; + if (tmpState == IN_PROGRESS || tmpState > SPECIAL) + tmpState = NOT_STARTED; + SetBossState(i, EncounterState(tmpState)); + } } + else + OUT_LOAD_INST_DATA_FAIL; + + OUT_LOAD_INST_DATA_COMPLETE; } }; @@ -89,6 +143,5 @@ class instance_mechanar : public InstanceMapScript void AddSC_instance_mechanar() { - new instance_mechanar; + new instance_mechanar(); } - diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h index c933c90afef..0d3a4ea241d 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -19,6 +18,22 @@ #ifndef DEF_MECHANAR_H #define DEF_MECHANAR_H -#define DATA_NETHERMANCER_EVENT 1 -#endif +uint32 const EncounterCount = 5; + +enum DataTypes +{ + DATA_GATEWATCHER_GYROKILL = 0, + DATA_GATEWATCHER_IRON_HAND = 1, + DATA_MECHANOLORD_CAPACITUS = 2, + DATA_NETHERMANCER_SEPRETHREA = 3, + DATA_PATHALEON_THE_CALCULATOR = 4 +}; +enum GameobjectIds +{ + GO_DOOR_MOARG_1 = 184632, + GO_DOOR_MOARG_2 = 184322, + GO_DOOR_NETHERMANCER = 184449 +}; + +#endif diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index afb9a625761..060db02d53c 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -172,7 +172,7 @@ class spell_dk_anti_magic_zone : public SpellScriptLoader return true; } - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_DK_ANTI_MAGIC_SHELL_TALENT)) return false; diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index a0307f994c9..6dd453597de 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -29,18 +29,19 @@ enum DruidSpells { - DRUID_INCREASED_MOONFIRE_DURATION = 38414, - DRUID_NATURES_SPLENDOR = 57865, - DRUID_LIFEBLOOM_FINAL_HEAL = 33778, - DRUID_LIFEBLOOM_ENERGIZE = 64372, - DRUID_SURVIVAL_INSTINCTS = 50322, - DRUID_SAVAGE_ROAR = 62071, - SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950, - SPELL_KING_OF_THE_JUNGLE = 48492, - SPELL_TIGER_S_FURY_ENERGIZE = 51178, - SPELL_ENRAGE_MOD_DAMAGE = 51185, + SPELL_DRUID_ENRAGE_MOD_DAMAGE = 51185, + SPELL_DRUID_INCREASED_MOONFIRE_DURATION = 38414, + SPELL_DRUID_KING_OF_THE_JUNGLE = 48492, + SPELL_DRUID_LIFEBLOOM_ENERGIZE = 64372, + SPELL_DRUID_LIFEBLOOM_FINAL_HEAL = 33778, + SPELL_DRUID_NATURES_SPLENDOR = 57865, + SPELL_DRUID_SURVIVAL_INSTINCTS = 50322, + SPELL_DRUID_SAVAGE_ROAR = 62071, + SPELL_DRUID_TIGER_S_FURY_ENERGIZE = 51178, + SPELL_DRUID_ITEM_T8_BALANCE_RELIC = 64950, }; +// -5229 - Enrage class spell_dru_enrage : public SpellScriptLoader { public: @@ -52,8 +53,8 @@ class spell_dru_enrage : public SpellScriptLoader void OnHit() { - if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_KING_OF_THE_JUNGLE, EFFECT_0)) - GetHitUnit()->CastCustomSpell(SPELL_ENRAGE_MOD_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); + if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_0)) + GetHitUnit()->CastCustomSpell(SPELL_DRUID_ENRAGE_MOD_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); } void Register() @@ -68,7 +69,7 @@ class spell_dru_enrage : public SpellScriptLoader } }; -// 54846 Glyph of Starfire +// 54846 - Glyph of Starfire class spell_dru_glyph_of_starfire : public SpellScriptLoader { public: @@ -78,9 +79,9 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader { PrepareSpellScript(spell_dru_glyph_of_starfire_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_INCREASED_MOONFIRE_DURATION) || !sSpellMgr->GetSpellInfo(DRUID_NATURES_SPLENDOR)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_INCREASED_MOONFIRE_DURATION) || !sSpellMgr->GetSpellInfo(SPELL_DRUID_NATURES_SPLENDOR)) return false; return true; } @@ -95,9 +96,9 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader uint32 countMin = aura->GetMaxDuration(); uint32 countMax = aura->GetSpellInfo()->GetMaxDuration() + 9000; - if (caster->HasAura(DRUID_INCREASED_MOONFIRE_DURATION)) + if (caster->HasAura(SPELL_DRUID_INCREASED_MOONFIRE_DURATION)) countMax += 3000; - if (caster->HasAura(DRUID_NATURES_SPLENDOR)) + if (caster->HasAura(SPELL_DRUID_NATURES_SPLENDOR)) countMax += 3000; if (countMin < countMax) @@ -120,6 +121,7 @@ class spell_dru_glyph_of_starfire : public SpellScriptLoader } }; +// -5570 - Insect Swarm class spell_dru_insect_swarm : public SpellScriptLoader { public: @@ -148,6 +150,7 @@ class spell_dru_insect_swarm : public SpellScriptLoader } }; +// -33763 - Lifebloom class spell_dru_lifebloom : public SpellScriptLoader { public: @@ -159,9 +162,9 @@ class spell_dru_lifebloom : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_LIFEBLOOM_FINAL_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_FINAL_HEAL)) return false; - if (!sSpellMgr->GetSpellInfo(DRUID_LIFEBLOOM_ENERGIZE)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_LIFEBLOOM_ENERGIZE)) return false; return true; } @@ -180,15 +183,15 @@ class spell_dru_lifebloom : public SpellScriptLoader healAmount = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), healAmount, HEAL, stack); healAmount = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, stack); - GetTarget()->CastCustomSpell(GetTarget(), DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); // restore mana int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * stack / 2; - caster->CastCustomSpell(caster, DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); return; } - GetTarget()->CastCustomSpell(GetTarget(), DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); } void HandleDispel(DispelInfo* dispelInfo) @@ -203,15 +206,15 @@ class spell_dru_lifebloom : public SpellScriptLoader { healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges()); healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges()); - target->CastCustomSpell(target, DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); // restore mana int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * dispelInfo->GetRemovedCharges() / 2; - caster->CastCustomSpell(caster, DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, NULL, NULL, true, NULL, NULL, GetCasterGUID()); return; } - target->CastCustomSpell(target, DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); + target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, NULL, NULL, true, NULL, NULL, GetCasterGUID()); } } } @@ -273,6 +276,7 @@ class spell_dru_moonkin_form_passive : public SpellScriptLoader } }; +// -16972 - Predatory Strikes class spell_dru_predatory_strikes : public SpellScriptLoader { public: @@ -388,6 +392,7 @@ class spell_dru_savage_defense : public SpellScriptLoader } }; +// 52610 - Savage Roar class spell_dru_savage_roar : public SpellScriptLoader { public: @@ -418,7 +423,7 @@ class spell_dru_savage_roar : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_SAVAGE_ROAR)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SAVAGE_ROAR)) return false; return true; } @@ -426,12 +431,12 @@ class spell_dru_savage_roar : public SpellScriptLoader void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->CastSpell(target, DRUID_SAVAGE_ROAR, true, NULL, aurEff, GetCasterGUID()); + target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, true, NULL, aurEff, GetCasterGUID()); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(DRUID_SAVAGE_ROAR); + GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SAVAGE_ROAR); } void Register() @@ -452,6 +457,7 @@ class spell_dru_savage_roar : public SpellScriptLoader } }; +// -50294 - Starfall (AOE) class spell_dru_starfall_aoe : public SpellScriptLoader { public: @@ -478,6 +484,7 @@ class spell_dru_starfall_aoe : public SpellScriptLoader } }; +// -50286 - Starfall (Dummy) class spell_dru_starfall_dummy : public SpellScriptLoader { public: @@ -523,6 +530,7 @@ class spell_dru_starfall_dummy : public SpellScriptLoader } }; +// 61336 - Survival Instincts class spell_dru_survival_instincts : public SpellScriptLoader { public: @@ -553,7 +561,7 @@ class spell_dru_survival_instincts : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(DRUID_SURVIVAL_INSTINCTS)) + if (!sSpellMgr->GetSpellInfo(SPELL_DRUID_SURVIVAL_INSTINCTS)) return false; return true; } @@ -562,12 +570,12 @@ class spell_dru_survival_instincts : public SpellScriptLoader { Unit* target = GetTarget(); int32 bp0 = target->CountPctFromMaxHealth(aurEff->GetAmount()); - target->CastCustomSpell(target, DRUID_SURVIVAL_INSTINCTS, &bp0, NULL, NULL, true); + target->CastCustomSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, &bp0, NULL, NULL, true); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(DRUID_SURVIVAL_INSTINCTS); + GetTarget()->RemoveAurasDueToSpell(SPELL_DRUID_SURVIVAL_INSTINCTS); } void Register() @@ -622,6 +630,7 @@ class spell_dru_swift_flight_passive : public SpellScriptLoader } }; +// -5217 - Tiger's Fury class spell_dru_tiger_s_fury : public SpellScriptLoader { public: @@ -633,8 +642,8 @@ class spell_dru_tiger_s_fury : public SpellScriptLoader void OnHit() { - if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_KING_OF_THE_JUNGLE, EFFECT_1)) - GetHitUnit()->CastCustomSpell(SPELL_TIGER_S_FURY_ENERGIZE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); + if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_1)) + GetHitUnit()->CastCustomSpell(SPELL_DRUID_TIGER_S_FURY_ENERGIZE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true); } void Register() @@ -649,6 +658,7 @@ class spell_dru_tiger_s_fury : public SpellScriptLoader } }; +// 70691 - Item T10 Restoration 4P Bonus class spell_dru_t10_restoration_4p_bonus : public SpellScriptLoader { public: diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 83532e7d72d..d883b4d7da7 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -17,6 +17,7 @@ /* * Spells used in holidays/game events that do not fit any other category. + * Ordered alphabetically using scriptname. * Scriptnames in this file should be prefixed with "spell_#holidayname_". */ @@ -133,6 +134,7 @@ class spell_hallow_end_trick : public SpellScriptLoader class spell_hallow_end_trick_SpellScript : public SpellScript { PrepareSpellScript(spell_hallow_end_trick_SpellScript); + bool Validate(SpellInfo const* /*spell*/) { if (!sSpellMgr->GetSpellInfo(SPELL_PIRATE_COSTUME_MALE) || !sSpellMgr->GetSpellInfo(SPELL_PIRATE_COSTUME_FEMALE) || !sSpellMgr->GetSpellInfo(SPELL_NINJA_COSTUME_MALE) @@ -170,7 +172,7 @@ class spell_hallow_end_trick : public SpellScriptLoader break; } - caster->CastSpell(target, spellId, true, NULL); + caster->CastSpell(target, spellId, true); } } @@ -218,8 +220,8 @@ class spell_hallow_end_trick_or_treat : public SpellScriptLoader Unit* caster = GetCaster(); if (Player* target = GetHitPlayer()) { - caster->CastSpell(target, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true, NULL); - caster->CastSpell(target, SPELL_TRICKED_OR_TREATED, true, NULL); + caster->CastSpell(target, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true); + caster->CastSpell(target, SPELL_TRICKED_OR_TREATED, true); } } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 36194a596ce..a9b21807899 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -32,7 +32,7 @@ enum HunterSpells { - SPELL_HUNTER_ASPECT_OF_THE_BEAST_PET = 61669, + SPELL_HUNTER_ASPECT_OF_THE_BEAST_PET = 61669, SPELL_HUNTER_BESTIAL_WRATH = 19574, SPELL_HUNTER_CHIMERA_SHOT_SERPENT = 53353, SPELL_HUNTER_CHIMERA_SHOT_VIPER = 53358, @@ -286,7 +286,6 @@ class spell_hun_last_stand_pet : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHitTarget += SpellEffectFn(spell_hun_last_stand_pet_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -452,7 +451,6 @@ class spell_hun_pet_carrion_feeder : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHit += SpellEffectFn(spell_hun_pet_carrion_feeder_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); OnCheckCast += SpellCheckCastFn(spell_hun_pet_carrion_feeder_SpellScript::CheckIfCorpseNear); } @@ -501,7 +499,6 @@ class spell_hun_pet_heart_of_the_phoenix : public SpellScriptLoader void Register() { - // add dummy effect spell handler to pet's Last Stand OnEffectHitTarget += SpellEffectFn(spell_hun_pet_heart_of_the_phoenix_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -551,7 +548,6 @@ class spell_hun_readiness : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Readiness OnEffectHitTarget += SpellEffectFn(spell_hun_readiness_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index cf10cfdab5c..61f0579190f 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -29,6 +29,10 @@ enum MageSpells { SPELL_MAGE_COLD_SNAP = 11958, + SPELL_MAGE_FROST_WARDING_R1 = 28332, + SPELL_MAGE_FROST_WARDING_TRIGGERED = 57776, + SPELL_MAGE_INCANTERS_ABSORBTION_R1 = 44394, + SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED = 44413, SPELL_MAGE_SQUIRREL_FORM = 32813, SPELL_MAGE_GIRAFFE_FORM = 32816, SPELL_MAGE_SERPENT_FORM = 32817, @@ -41,6 +45,7 @@ enum MageSpells SPELL_MAGE_GLYPH_OF_BLAST_WAVE = 62126, }; +// -11113 - Blast Wave class spell_mage_blast_wave : public SpellScriptLoader { public: @@ -50,7 +55,7 @@ class spell_mage_blast_wave : public SpellScriptLoader { PrepareSpellScript(spell_mage_blast_wave_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_BLAST_WAVE)) return false; @@ -75,6 +80,7 @@ class spell_mage_blast_wave : public SpellScriptLoader } }; +// 11958 - Cold Snap class spell_mage_cold_snap : public SpellScriptLoader { public: @@ -91,7 +97,6 @@ class spell_mage_cold_snap : public SpellScriptLoader void HandleDummy(SpellEffIndex /*effIndex*/) { - Player* caster = GetCaster()->ToPlayer(); // immediately finishes the cooldown on Frost spells const SpellCooldowns& cm = caster->GetSpellCooldownMap(); @@ -112,7 +117,6 @@ class spell_mage_cold_snap : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Cold Snap OnEffectHit += SpellEffectFn(spell_mage_cold_snap_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -123,102 +127,7 @@ class spell_mage_cold_snap : public SpellScriptLoader } }; -enum SilvermoonPolymorph -{ - NPC_AUROSALIA = 18744, -}; - -// TODO: move out of here and rename - not a mage spell -class spell_mage_polymorph_cast_visual : public SpellScriptLoader -{ - public: - spell_mage_polymorph_cast_visual() : SpellScriptLoader("spell_mage_polymorph_visual") { } - - class spell_mage_polymorph_cast_visual_SpellScript : public SpellScript - { - PrepareSpellScript(spell_mage_polymorph_cast_visual_SpellScript); - - static const uint32 PolymorhForms[6]; - - bool Validate(SpellInfo const* /*spellEntry*/) - { - // check if spell ids exist in dbc - for (uint32 i = 0; i < 6; i++) - if (!sSpellMgr->GetSpellInfo(PolymorhForms[i])) - return false; - return true; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetCaster()->FindNearestCreature(NPC_AUROSALIA, 30.0f)) - if (target->GetTypeId() == TYPEID_UNIT) - target->CastSpell(target, PolymorhForms[urand(0, 5)], true); - } - - void Register() - { - // add dummy effect spell handler to Polymorph visual - OnEffectHitTarget += SpellEffectFn(spell_mage_polymorph_cast_visual_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_mage_polymorph_cast_visual_SpellScript(); - } -}; - -const uint32 spell_mage_polymorph_cast_visual::spell_mage_polymorph_cast_visual_SpellScript::PolymorhForms[6] = -{ - SPELL_MAGE_SQUIRREL_FORM, - SPELL_MAGE_GIRAFFE_FORM, - SPELL_MAGE_SERPENT_FORM, - SPELL_MAGE_DRAGONHAWK_FORM, - SPELL_MAGE_WORGEN_FORM, - SPELL_MAGE_SHEEP_FORM -}; - -class spell_mage_summon_water_elemental : public SpellScriptLoader -{ - public: - spell_mage_summon_water_elemental() : SpellScriptLoader("spell_mage_summon_water_elemental") { } - - class spell_mage_summon_water_elemental_SpellScript : public SpellScript - { - PrepareSpellScript(spell_mage_summon_water_elemental_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT)) - return false; - return true; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - // Glyph of Eternal Water - if (caster->HasAura(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER)) - caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT, true); - else - caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY, true); - } - - void Register() - { - // add dummy effect spell handler to Summon Water Elemental - OnEffectHit += SpellEffectFn(spell_mage_summon_water_elemental_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_mage_summon_water_elemental_SpellScript(); - } -}; - -// Frost Warding +// -543, -6143 - Frost Warding class spell_mage_frost_warding_trigger : public SpellScriptLoader { public: @@ -228,13 +137,7 @@ class spell_mage_frost_warding_trigger : public SpellScriptLoader { PrepareAuraScript(spell_mage_frost_warding_trigger_AuraScript); - enum Spells - { - SPELL_MAGE_FROST_WARDING_TRIGGERED = 57776, - SPELL_MAGE_FROST_WARDING_R1 = 28332, - }; - - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FROST_WARDING_TRIGGERED) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_FROST_WARDING_R1)) return false; @@ -274,13 +177,8 @@ class spell_mage_frost_warding_trigger : public SpellScriptLoader class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript { public: - enum Spells - { - SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED = 44413, - SPELL_MAGE_INCANTERS_ABSORBTION_R1 = 44394, - }; - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { return sSpellMgr->GetSpellInfo(SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED) && sSpellMgr->GetSpellInfo(SPELL_MAGE_INCANTERS_ABSORBTION_R1); @@ -298,50 +196,51 @@ class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript } }; -// Incanter's Absorption +// -543, -6143, -11426 - Incanter's Absorption class spell_mage_incanters_absorbtion_absorb : public SpellScriptLoader { -public: - spell_mage_incanters_absorbtion_absorb() : SpellScriptLoader("spell_mage_incanters_absorbtion_absorb") { } + public: + spell_mage_incanters_absorbtion_absorb() : SpellScriptLoader("spell_mage_incanters_absorbtion_absorb") { } + + class spell_mage_incanters_absorbtion_absorb_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript + { + PrepareAuraScript(spell_mage_incanters_absorbtion_absorb_AuraScript); - class spell_mage_incanters_absorbtion_absorb_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript - { - PrepareAuraScript(spell_mage_incanters_absorbtion_absorb_AuraScript); + void Register() + { + AfterEffectAbsorb += AuraEffectAbsorbFn(spell_mage_incanters_absorbtion_absorb_AuraScript::Trigger, EFFECT_0); + } + }; - void Register() + AuraScript* GetAuraScript() const { - AfterEffectAbsorb += AuraEffectAbsorbFn(spell_mage_incanters_absorbtion_absorb_AuraScript::Trigger, EFFECT_0); + return new spell_mage_incanters_absorbtion_absorb_AuraScript(); } - }; - - AuraScript* GetAuraScript() const - { - return new spell_mage_incanters_absorbtion_absorb_AuraScript(); - } }; -// Incanter's Absorption +// -1463 - Incanter's Absorption class spell_mage_incanters_absorbtion_manashield : public SpellScriptLoader { -public: - spell_mage_incanters_absorbtion_manashield() : SpellScriptLoader("spell_mage_incanters_absorbtion_manashield") { } + public: + spell_mage_incanters_absorbtion_manashield() : SpellScriptLoader("spell_mage_incanters_absorbtion_manashield") { } - class spell_mage_incanters_absorbtion_manashield_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript - { - PrepareAuraScript(spell_mage_incanters_absorbtion_manashield_AuraScript); + class spell_mage_incanters_absorbtion_manashield_AuraScript : public spell_mage_incanters_absorbtion_base_AuraScript + { + PrepareAuraScript(spell_mage_incanters_absorbtion_manashield_AuraScript); - void Register() + void Register() + { + AfterEffectManaShield += AuraEffectManaShieldFn(spell_mage_incanters_absorbtion_manashield_AuraScript::Trigger, EFFECT_0); + } + }; + + AuraScript* GetAuraScript() const { - AfterEffectManaShield += AuraEffectManaShieldFn(spell_mage_incanters_absorbtion_manashield_AuraScript::Trigger, EFFECT_0); + return new spell_mage_incanters_absorbtion_manashield_AuraScript(); } - }; - - AuraScript* GetAuraScript() const - { - return new spell_mage_incanters_absorbtion_manashield_AuraScript(); - } }; +// -44457 - Living Bomb class spell_mage_living_bomb : public SpellScriptLoader { public: @@ -380,6 +279,101 @@ class spell_mage_living_bomb : public SpellScriptLoader } }; +enum SilvermoonPolymorph +{ + NPC_AUROSALIA = 18744, +}; + +// TODO: move out of here and rename - not a mage spell +// 32826 - Polymorph (Visual) +class spell_mage_polymorph_cast_visual : public SpellScriptLoader +{ + public: + spell_mage_polymorph_cast_visual() : SpellScriptLoader("spell_mage_polymorph_visual") { } + + class spell_mage_polymorph_cast_visual_SpellScript : public SpellScript + { + PrepareSpellScript(spell_mage_polymorph_cast_visual_SpellScript); + + static const uint32 PolymorhForms[6]; + + bool Validate(SpellInfo const* /*spellInfo*/) + { + // check if spell ids exist in dbc + for (uint32 i = 0; i < 6; ++i) + if (!sSpellMgr->GetSpellInfo(PolymorhForms[i])) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetCaster()->FindNearestCreature(NPC_AUROSALIA, 30.0f)) + if (target->GetTypeId() == TYPEID_UNIT) + target->CastSpell(target, PolymorhForms[urand(0, 5)], true); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_mage_polymorph_cast_visual_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_mage_polymorph_cast_visual_SpellScript(); + } +}; + +const uint32 spell_mage_polymorph_cast_visual::spell_mage_polymorph_cast_visual_SpellScript::PolymorhForms[6] = +{ + SPELL_MAGE_SQUIRREL_FORM, + SPELL_MAGE_GIRAFFE_FORM, + SPELL_MAGE_SERPENT_FORM, + SPELL_MAGE_DRAGONHAWK_FORM, + SPELL_MAGE_WORGEN_FORM, + SPELL_MAGE_SHEEP_FORM +}; + +// 31687 - Summon Water Elemental +class spell_mage_summon_water_elemental : public SpellScriptLoader +{ + public: + spell_mage_summon_water_elemental() : SpellScriptLoader("spell_mage_summon_water_elemental") { } + + class spell_mage_summon_water_elemental_SpellScript : public SpellScript + { + PrepareSpellScript(spell_mage_summon_water_elemental_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY) || !sSpellMgr->GetSpellInfo(SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT)) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + // Glyph of Eternal Water + if (caster->HasAura(SPELL_MAGE_GLYPH_OF_ETERNAL_WATER)) + caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_PERMANENT, true); + else + caster->CastSpell(caster, SPELL_MAGE_SUMMON_WATER_ELEMENTAL_TEMPORARY, true); + } + + void Register() + { + OnEffectHit += SpellEffectFn(spell_mage_summon_water_elemental_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_mage_summon_water_elemental_SpellScript(); + } +}; + void AddSC_mage_spell_scripts() { new spell_mage_blast_wave(); @@ -387,7 +381,7 @@ void AddSC_mage_spell_scripts() new spell_mage_frost_warding_trigger(); new spell_mage_incanters_absorbtion_absorb(); new spell_mage_incanters_absorbtion_manashield(); + new spell_mage_living_bomb(); new spell_mage_polymorph_cast_visual(); new spell_mage_summon_water_elemental(); - new spell_mage_living_bomb(); } diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 07d903c9587..d3fc86302e1 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -29,28 +29,28 @@ enum PaladinSpells { - PALADIN_SPELL_DIVINE_PLEA = 54428, - PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF = 67480, + SPELL_PALADIN_DIVINE_PLEA = 54428, + SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF = 67480, - PALADIN_SPELL_HOLY_SHOCK_R1 = 20473, - PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE = 25912, - PALADIN_SPELL_HOLY_SHOCK_R1_HEALING = 25914, + SPELL_PALADIN_HOLY_SHOCK_R1 = 20473, + SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE = 25912, + SPELL_PALADIN_HOLY_SHOCK_R1_HEALING = 25914, - SPELL_BLESSING_OF_LOWER_CITY_DRUID = 37878, - SPELL_BLESSING_OF_LOWER_CITY_PALADIN = 37879, - SPELL_BLESSING_OF_LOWER_CITY_PRIEST = 37880, - SPELL_BLESSING_OF_LOWER_CITY_SHAMAN = 37881, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID = 37878, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN = 37879, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST = 37880, + SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN = 37881, - SPELL_DIVINE_STORM = 53385, - SPELL_DIVINE_STORM_DUMMY = 54171, - SPELL_DIVINE_STORM_HEAL = 54172, + SPELL_PALADIN_DIVINE_STORM = 53385, + SPELL_PALADIN_DIVINE_STORM_DUMMY = 54171, + SPELL_PALADIN_DIVINE_STORM_HEAL = 54172, - SPELL_FORBEARANCE = 25771, - SPELL_AVENGING_WRATH_MARKER = 61987, - SPELL_IMMUNE_SHIELD_MARKER = 61988, + SPELL_PALADIN_FORBEARANCE = 25771, + SPELL_PALADIN_AVENGING_WRATH_MARKER = 61987, + SPELL_PALADIN_IMMUNE_SHIELD_MARKER = 61988, - SPELL_HAND_OF_SACRIFICE = 6940, - SPELL_DIVINE_SACRIFICE = 64205, + SPELL_PALADIN_HAND_OF_SACRIFICE = 6940, + SPELL_PALADIN_DIVINE_SACRIFICE = 64205, }; // 31850 - Ardent Defender @@ -129,6 +129,7 @@ class spell_pal_ardent_defender : public SpellScriptLoader } }; +// 37877 - Blessing of Faith class spell_pal_blessing_of_faith : public SpellScriptLoader { public: @@ -138,9 +139,9 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader { PrepareSpellScript(spell_pal_blessing_of_faith_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_DRUID) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_PALADIN) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_PRIEST) || !sSpellMgr->GetSpellInfo(SPELL_BLESSING_OF_LOWER_CITY_SHAMAN)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST) || !sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN)) return false; return true; } @@ -152,11 +153,20 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader uint32 spell_id = 0; switch (unitTarget->getClass()) { - case CLASS_DRUID: spell_id = SPELL_BLESSING_OF_LOWER_CITY_DRUID; break; - case CLASS_PALADIN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PALADIN; break; - case CLASS_PRIEST: spell_id = SPELL_BLESSING_OF_LOWER_CITY_PRIEST; break; - case CLASS_SHAMAN: spell_id = SPELL_BLESSING_OF_LOWER_CITY_SHAMAN; break; - default: return; // ignore for non-healing classes + case CLASS_DRUID: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_DRUID; + break; + case CLASS_PALADIN: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PALADIN; + break; + case CLASS_PRIEST: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_PRIEST; + break; + case CLASS_SHAMAN: + spell_id = SPELL_PALADIN_BLESSING_OF_LOWER_CITY_SHAMAN; + break; + default: + return; // ignore for non-healing classes } Unit* caster = GetCaster(); caster->CastSpell(caster, spell_id, true); @@ -165,7 +175,6 @@ class spell_pal_blessing_of_faith : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Blessing of Faith OnEffectHitTarget += SpellEffectFn(spell_pal_blessing_of_faith_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -187,9 +196,9 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader { PrepareAuraScript(spell_pal_blessing_of_sanctuary_AuraScript); - bool Validate(SpellInfo const* /*entry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF)) return false; return true; } @@ -198,13 +207,13 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader { Unit* target = GetTarget(); if (Unit* caster = GetCaster()) - caster->CastSpell(target, PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF, true); + caster->CastSpell(target, SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF, true); } void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->RemoveAura(PALADIN_SPELL_BLESSING_OF_SANCTUARY_BUFF, GetCasterGUID()); + target->RemoveAura(SPELL_PALADIN_BLESSING_OF_SANCTUARY_BUFF, GetCasterGUID()); } void Register() @@ -220,141 +229,63 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader } }; -// 63521 Guarded by The Light -class spell_pal_guarded_by_the_light : public SpellScriptLoader -{ - public: - spell_pal_guarded_by_the_light() : SpellScriptLoader("spell_pal_guarded_by_the_light") { } - - class spell_pal_guarded_by_the_light_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pal_guarded_by_the_light_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_DIVINE_PLEA)) - return false; - return true; - } - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - // Divine Plea - if (Aura* aura = GetCaster()->GetAura(PALADIN_SPELL_DIVINE_PLEA)) - aura->RefreshDuration(); - } - - void Register() - { - OnEffectHitTarget += SpellEffectFn(spell_pal_guarded_by_the_light_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_pal_guarded_by_the_light_SpellScript(); - } -}; - -class spell_pal_holy_shock : public SpellScriptLoader +// 64205 - Divine Sacrifice +class spell_pal_divine_sacrifice : public SpellScriptLoader { public: - spell_pal_holy_shock() : SpellScriptLoader("spell_pal_holy_shock") { } + spell_pal_divine_sacrifice() : SpellScriptLoader("spell_pal_divine_sacrifice") { } - class spell_pal_holy_shock_SpellScript : public SpellScript + class spell_pal_divine_sacrifice_AuraScript : public AuraScript { - PrepareSpellScript(spell_pal_holy_shock_SpellScript); - - bool Validate(SpellInfo const* spell) - { - if (!sSpellMgr->GetSpellInfo(PALADIN_SPELL_HOLY_SHOCK_R1)) - return false; - - // can't use other spell than holy shock due to spell_ranks dependency - if (sSpellMgr->GetFirstSpellInChain(PALADIN_SPELL_HOLY_SHOCK_R1) != sSpellMgr->GetFirstSpellInChain(spell->Id)) - return false; - - uint8 rank = sSpellMgr->GetSpellRank(spell->Id); - if (!sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_HEALING, rank, true)) - return false; + PrepareAuraScript(spell_pal_divine_sacrifice_AuraScript); - return true; - } + uint32 groupSize, minHpPct; + int32 remainingAmount; - void HandleDummy(SpellEffIndex /*effIndex*/) + bool Load() { - Unit* caster = GetCaster(); - if (Unit* unitTarget = GetHitUnit()) - { - uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); - if (caster->IsFriendlyTo(unitTarget)) - caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_HEALING, rank), true, 0); - else - caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(PALADIN_SPELL_HOLY_SHOCK_R1_DAMAGE, rank), true, 0); - } - } - SpellCastResult CheckCast() - { - Unit* caster = GetCaster(); - if (Unit* target = GetExplTargetUnit()) + if (Unit* caster = GetCaster()) { - if (!caster->IsFriendlyTo(target)) + if (caster->GetTypeId() == TYPEID_PLAYER) { - if (!caster->IsValidAttackTarget(target)) - return SPELL_FAILED_BAD_TARGETS; - - if (!caster->isInFront(target)) - return SPELL_FAILED_UNIT_NOT_INFRONT; + if (caster->ToPlayer()->GetGroup()) + groupSize = caster->ToPlayer()->GetGroup()->GetMembersCount(); + else + groupSize = 1; } - } - else - return SPELL_FAILED_BAD_TARGETS; - return SPELL_CAST_OK; - } + else + return false; - void Register() - { - // add dummy effect spell handler to Holy Shock - OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock_SpellScript::CheckCast); - OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + remainingAmount = (caster->CountPctFromMaxHealth(GetSpellInfo()->Effects[EFFECT_2].CalcValue(caster)) * groupSize); + minHpPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue(caster); + return true; + } + return false; } - }; - - SpellScript* GetSpellScript() const - { - return new spell_pal_holy_shock_SpellScript(); - } -}; -class spell_pal_judgement_of_command : public SpellScriptLoader -{ - public: - spell_pal_judgement_of_command() : SpellScriptLoader("spell_pal_judgement_of_command") { } - - class spell_pal_judgement_of_command_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pal_judgement_of_command_SpellScript) - void HandleDummy(SpellEffIndex /*effIndex*/) + void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) { - if (Unit* unitTarget = GetHitUnit()) - if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue())) - GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); + remainingAmount -= splitAmount; + // break when absorbed everything it could, or if the casters hp drops below 20% + if (Unit* caster = GetCaster()) + if (remainingAmount <= 0 || (caster->GetHealthPct() < minHpPct)) + caster->RemoveAura(SPELL_PALADIN_DIVINE_SACRIFICE); } void Register() { - // add dummy effect spell handler to Judgement of Command - OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectSplit += AuraEffectSplitFn(spell_pal_divine_sacrifice_AuraScript::Split, EFFECT_0); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_pal_judgement_of_command_SpellScript(); + return new spell_pal_divine_sacrifice_AuraScript(); } }; +// 53385 - Divine Storm class spell_pal_divine_storm : public SpellScriptLoader { public: @@ -366,9 +297,9 @@ class spell_pal_divine_storm : public SpellScriptLoader uint32 healPct; - bool Validate(SpellInfo const* /* spell */) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DIVINE_STORM_DUMMY)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_DUMMY)) return false; return true; } @@ -382,7 +313,7 @@ class spell_pal_divine_storm : public SpellScriptLoader void TriggerHeal() { Unit* caster = GetCaster(); - caster->CastCustomSpell(SPELL_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * healPct) / 100, caster, true); + caster->CastCustomSpell(SPELL_PALADIN_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * healPct) / 100, caster, true); } void Register() @@ -397,6 +328,7 @@ class spell_pal_divine_storm : public SpellScriptLoader } }; +// 54171 - Divine Storm (Dummy) class spell_pal_divine_storm_dummy : public SpellScriptLoader { public: @@ -406,9 +338,9 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader { PrepareSpellScript(spell_pal_divine_storm_dummy_SpellScript); - bool Validate(SpellInfo const* /* spell */) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DIVINE_STORM_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_HEAL)) return false; return true; } @@ -418,13 +350,13 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader _targetCount = targetList.size(); } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (!_targetCount || ! GetHitUnit()) return; int32 heal = GetEffectValue() / _targetCount; - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, &heal, NULL, NULL, true); } private: uint32 _targetCount; @@ -442,229 +374,314 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader } }; -class spell_pal_lay_on_hands : public SpellScriptLoader +// 33695 - Exorcism and Holy Wrath Damage +class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader { public: - spell_pal_lay_on_hands() : SpellScriptLoader("spell_pal_lay_on_hands") { } + spell_pal_exorcism_and_holy_wrath_damage() : SpellScriptLoader("spell_pal_exorcism_and_holy_wrath_damage") { } - class spell_pal_lay_on_hands_SpellScript : public SpellScript + class spell_pal_exorcism_and_holy_wrath_damage_AuraScript : public AuraScript { - PrepareSpellScript(spell_pal_lay_on_hands_SpellScript); + PrepareAuraScript(spell_pal_exorcism_and_holy_wrath_damage_AuraScript); - bool Validate(SpellInfo const* /*spell*/) + void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) { - if (!sSpellMgr->GetSpellInfo(SPELL_FORBEARANCE)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_AVENGING_WRATH_MARKER)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_IMMUNE_SHIELD_MARKER)) + if (!spellMod) + { + spellMod = new SpellModifier(aurEff->GetBase()); + spellMod->op = SPELLMOD_DAMAGE; + spellMod->type = SPELLMOD_FLAT; + spellMod->spellId = GetId(); + spellMod->mask[1] = 0x200002; + } + + spellMod->value = aurEff->GetAmount(); + } + + void Register() + { + DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_pal_exorcism_and_holy_wrath_damage_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_pal_exorcism_and_holy_wrath_damage_AuraScript(); + } +}; + +// 63521 - Guarded by The Light +class spell_pal_guarded_by_the_light : public SpellScriptLoader +{ + public: + spell_pal_guarded_by_the_light() : SpellScriptLoader("spell_pal_guarded_by_the_light") { } + + class spell_pal_guarded_by_the_light_SpellScript : public SpellScript + { + PrepareSpellScript(spell_pal_guarded_by_the_light_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_PLEA)) return false; return true; } - SpellCastResult CheckCast() + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetExplTargetUnit()) - if (caster == target) - if (target->HasAura(SPELL_FORBEARANCE) || target->HasAura(SPELL_AVENGING_WRATH_MARKER) || target->HasAura(SPELL_IMMUNE_SHIELD_MARKER)) - return SPELL_FAILED_TARGET_AURASTATE; + // Divine Plea + if (Aura* aura = GetCaster()->GetAura(SPELL_PALADIN_DIVINE_PLEA)) + aura->RefreshDuration(); + } - return SPELL_CAST_OK; + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_pal_guarded_by_the_light_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } + }; - void HandleScript() + SpellScript* GetSpellScript() const + { + return new spell_pal_guarded_by_the_light_SpellScript(); + } +}; + +// 6940 - Hand of Sacrifice +class spell_pal_hand_of_sacrifice : public SpellScriptLoader +{ + public: + spell_pal_hand_of_sacrifice() : SpellScriptLoader("spell_pal_hand_of_sacrifice") { } + + class spell_pal_hand_of_sacrifice_AuraScript : public AuraScript + { + PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); + + int32 remainingAmount; + + bool Load() { - Unit* caster = GetCaster(); - if (caster == GetHitUnit()) + if (Unit* caster = GetCaster()) + { + remainingAmount = caster->GetMaxHealth(); + return true; + } + return false; + } + + void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) + { + remainingAmount -= splitAmount; + + if (remainingAmount <= 0) { - caster->CastSpell(caster, SPELL_FORBEARANCE, true); - caster->CastSpell(caster, SPELL_AVENGING_WRATH_MARKER, true); - caster->CastSpell(caster, SPELL_IMMUNE_SHIELD_MARKER, true); + GetTarget()->RemoveAura(SPELL_PALADIN_HAND_OF_SACRIFICE); } } void Register() { - OnCheckCast += SpellCheckCastFn(spell_pal_lay_on_hands_SpellScript::CheckCast); - AfterHit += SpellHitFn(spell_pal_lay_on_hands_SpellScript::HandleScript); + OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice_AuraScript::Split, EFFECT_0); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_pal_lay_on_hands_SpellScript(); + return new spell_pal_hand_of_sacrifice_AuraScript(); } }; -class spell_pal_righteous_defense : public SpellScriptLoader +// -20473 - Holy Shock +class spell_pal_holy_shock : public SpellScriptLoader { public: - spell_pal_righteous_defense() : SpellScriptLoader("spell_pal_righteous_defense") { } + spell_pal_holy_shock() : SpellScriptLoader("spell_pal_holy_shock") { } - class spell_pal_righteous_defense_SpellScript : public SpellScript + class spell_pal_holy_shock_SpellScript : public SpellScript { - PrepareSpellScript(spell_pal_righteous_defense_SpellScript); + PrepareSpellScript(spell_pal_holy_shock_SpellScript); - SpellCastResult CheckCast() + bool Validate(SpellInfo const* spell) + { + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_HOLY_SHOCK_R1)) + return false; + + // can't use other spell than holy shock due to spell_ranks dependency + if (sSpellMgr->GetFirstSpellInChain(SPELL_PALADIN_HOLY_SHOCK_R1) != sSpellMgr->GetFirstSpellInChain(spell->Id)) + return false; + + uint8 rank = sSpellMgr->GetSpellRank(spell->Id); + if (!sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank, true) || !sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank, true)) + return false; + + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); - if (caster->GetTypeId() != TYPEID_PLAYER) - return SPELL_FAILED_DONT_REPORT; + if (Unit* unitTarget = GetHitUnit()) + { + uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); + if (caster->IsFriendlyTo(unitTarget)) + caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_HEALING, rank), true, 0); + else + caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HOLY_SHOCK_R1_DAMAGE, rank), true, 0); + } + } + SpellCastResult CheckCast() + { + Unit* caster = GetCaster(); if (Unit* target = GetExplTargetUnit()) { - if (!target->IsFriendlyTo(caster) || target->getAttackers().empty()) - return SPELL_FAILED_BAD_TARGETS; + if (!caster->IsFriendlyTo(target)) + { + if (!caster->IsValidAttackTarget(target)) + return SPELL_FAILED_BAD_TARGETS; + + if (!caster->isInFront(target)) + return SPELL_FAILED_UNIT_NOT_INFRONT; + } } else return SPELL_FAILED_BAD_TARGETS; - return SPELL_CAST_OK; } void Register() { - OnCheckCast += SpellCheckCastFn(spell_pal_righteous_defense_SpellScript::CheckCast); + OnCheckCast += SpellCheckCastFn(spell_pal_holy_shock_SpellScript::CheckCast); + OnEffectHitTarget += SpellEffectFn(spell_pal_holy_shock_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_pal_righteous_defense_SpellScript(); + return new spell_pal_holy_shock_SpellScript(); } }; -class spell_pal_exorcism_and_holy_wrath_damage : public SpellScriptLoader +// 20425 - Judgement of Command +class spell_pal_judgement_of_command : public SpellScriptLoader { public: - spell_pal_exorcism_and_holy_wrath_damage() : SpellScriptLoader("spell_pal_exorcism_and_holy_wrath_damage") { } + spell_pal_judgement_of_command() : SpellScriptLoader("spell_pal_judgement_of_command") { } - class spell_pal_exorcism_and_holy_wrath_damage_AuraScript : public AuraScript + class spell_pal_judgement_of_command_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_exorcism_and_holy_wrath_damage_AuraScript); + PrepareSpellScript(spell_pal_judgement_of_command_SpellScript); - void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (!spellMod) - { - spellMod = new SpellModifier(aurEff->GetBase()); - spellMod->op = SPELLMOD_DAMAGE; - spellMod->type = SPELLMOD_FLAT; - spellMod->spellId = GetId(); - spellMod->mask[1] = 0x200002; - } - - spellMod->value = aurEff->GetAmount(); + if (Unit* unitTarget = GetHitUnit()) + if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue())) + GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); } void Register() { - DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_pal_exorcism_and_holy_wrath_damage_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_exorcism_and_holy_wrath_damage_AuraScript(); + return new spell_pal_judgement_of_command_SpellScript(); } }; -class spell_pal_hand_of_sacrifice : public SpellScriptLoader +// -633 - Lay on Hands +class spell_pal_lay_on_hands : public SpellScriptLoader { public: - spell_pal_hand_of_sacrifice() : SpellScriptLoader("spell_pal_hand_of_sacrifice") { } + spell_pal_lay_on_hands() : SpellScriptLoader("spell_pal_lay_on_hands") { } - class spell_pal_hand_of_sacrifice_AuraScript : public AuraScript + class spell_pal_lay_on_hands_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); - - int32 remainingAmount; + PrepareSpellScript(spell_pal_lay_on_hands_SpellScript); - bool Load() + bool Validate(SpellInfo const* /*spell*/) { - if (Unit* caster = GetCaster()) - { - remainingAmount = caster->GetMaxHealth(); - return true; - } - return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_FORBEARANCE)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_AVENGING_WRATH_MARKER)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_IMMUNE_SHIELD_MARKER)) + return false; + return true; } - void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) + SpellCastResult CheckCast() { - remainingAmount -= splitAmount; + Unit* caster = GetCaster(); + if (Unit* target = GetExplTargetUnit()) + if (caster == target) + if (target->HasAura(SPELL_PALADIN_FORBEARANCE) || target->HasAura(SPELL_PALADIN_AVENGING_WRATH_MARKER) || target->HasAura(SPELL_PALADIN_IMMUNE_SHIELD_MARKER)) + return SPELL_FAILED_TARGET_AURASTATE; - if (remainingAmount <= 0) + return SPELL_CAST_OK; + } + + void HandleScript() + { + Unit* caster = GetCaster(); + if (caster == GetHitUnit()) { - GetTarget()->RemoveAura(SPELL_HAND_OF_SACRIFICE); + caster->CastSpell(caster, SPELL_PALADIN_FORBEARANCE, true); + caster->CastSpell(caster, SPELL_PALADIN_AVENGING_WRATH_MARKER, true); + caster->CastSpell(caster, SPELL_PALADIN_IMMUNE_SHIELD_MARKER, true); } } void Register() { - OnEffectSplit += AuraEffectSplitFn(spell_pal_hand_of_sacrifice_AuraScript::Split, EFFECT_0); + OnCheckCast += SpellCheckCastFn(spell_pal_lay_on_hands_SpellScript::CheckCast); + AfterHit += SpellHitFn(spell_pal_lay_on_hands_SpellScript::HandleScript); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_hand_of_sacrifice_AuraScript(); + return new spell_pal_lay_on_hands_SpellScript(); } }; -class spell_pal_divine_sacrifice : public SpellScriptLoader +// 31789 - Righteous Defense +class spell_pal_righteous_defense : public SpellScriptLoader { public: - spell_pal_divine_sacrifice() : SpellScriptLoader("spell_pal_divine_sacrifice") { } + spell_pal_righteous_defense() : SpellScriptLoader("spell_pal_righteous_defense") { } - class spell_pal_divine_sacrifice_AuraScript : public AuraScript + class spell_pal_righteous_defense_SpellScript : public SpellScript { - PrepareAuraScript(spell_pal_divine_sacrifice_AuraScript); - - uint32 groupSize, minHpPct; - int32 remainingAmount; + PrepareSpellScript(spell_pal_righteous_defense_SpellScript); - bool Load() + SpellCastResult CheckCast() { + Unit* caster = GetCaster(); + if (caster->GetTypeId() != TYPEID_PLAYER) + return SPELL_FAILED_DONT_REPORT; - if (Unit* caster = GetCaster()) + if (Unit* target = GetExplTargetUnit()) { - if (caster->GetTypeId() == TYPEID_PLAYER) - { - if (caster->ToPlayer()->GetGroup()) - groupSize = caster->ToPlayer()->GetGroup()->GetMembersCount(); - else - groupSize = 1; - } - else - return false; - - remainingAmount = (caster->CountPctFromMaxHealth(GetSpellInfo()->Effects[EFFECT_2].CalcValue(caster)) * groupSize); - minHpPct = GetSpellInfo()->Effects[EFFECT_1].CalcValue(caster); - return true; + if (!target->IsFriendlyTo(caster) || target->getAttackers().empty()) + return SPELL_FAILED_BAD_TARGETS; } - return false; - } + else + return SPELL_FAILED_BAD_TARGETS; - void Split(AuraEffect* /*aurEff*/, DamageInfo & /*dmgInfo*/, uint32 & splitAmount) - { - remainingAmount -= splitAmount; - // break when absorbed everything it could, or if the casters hp drops below 20% - if (Unit* caster = GetCaster()) - if (remainingAmount <= 0 || (caster->GetHealthPct() < minHpPct)) - caster->RemoveAura(SPELL_DIVINE_SACRIFICE); + return SPELL_CAST_OK; } void Register() { - OnEffectSplit += AuraEffectSplitFn(spell_pal_divine_sacrifice_AuraScript::Split, EFFECT_0); + OnCheckCast += SpellCheckCastFn(spell_pal_righteous_defense_SpellScript::CheckCast); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_pal_divine_sacrifice_AuraScript(); + return new spell_pal_righteous_defense_SpellScript(); } }; @@ -673,14 +690,14 @@ void AddSC_paladin_spell_scripts() new spell_pal_ardent_defender(); new spell_pal_blessing_of_faith(); new spell_pal_blessing_of_sanctuary(); + new spell_pal_divine_sacrifice(); + new spell_pal_divine_storm(); + new spell_pal_divine_storm_dummy(); + new spell_pal_exorcism_and_holy_wrath_damage(); new spell_pal_guarded_by_the_light(); + new spell_pal_hand_of_sacrifice(); new spell_pal_holy_shock(); new spell_pal_judgement_of_command(); - new spell_pal_divine_storm(); - new spell_pal_divine_storm_dummy(); new spell_pal_lay_on_hands(); new spell_pal_righteous_defense(); - new spell_pal_exorcism_and_holy_wrath_damage(); - new spell_pal_hand_of_sacrifice(); - new spell_pal_divine_sacrifice(); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 68a9337f8ea..1c416a0d28a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -249,7 +249,6 @@ class spell_pri_penance : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Penance OnEffectHitTarget += SpellEffectFn(spell_pri_penance_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); OnCheckCast += SpellCheckCastFn(spell_pri_penance_SpellScript::CheckCast); } @@ -282,7 +281,6 @@ class spell_pri_prayer_of_mending_heal : public SpellScriptLoader SetHitHeal(heal); } } - } void Register() diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 9cd94e9c7d5..49a47a17392 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -25,6 +25,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellScript.h" +#include "SpellAuras.h" #include "Vehicle.h" #include "GridNotifiers.h" #include "GridNotifiersImpl.h" @@ -1517,6 +1518,49 @@ class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScriptLoad } }; +enum SpellZuldrakRat +{ + SPELL_SUMMON_GORGED_LURKING_BASILISK = 50928 +}; + +class spell_q12527_zuldrak_rat : public SpellScriptLoader +{ + public: + spell_q12527_zuldrak_rat() : SpellScriptLoader("spell_q12527_zuldrak_rat") { } + + class spell_q12527_zuldrak_rat_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q12527_zuldrak_rat_SpellScript); + + bool Validate(SpellInfo const* /*spell*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_GORGED_LURKING_BASILISK)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (GetHitAura() && GetHitAura()->GetStackAmount() >= GetSpellInfo()->StackAmount) + { + GetHitUnit()->CastSpell((Unit*) NULL, SPELL_SUMMON_GORGED_LURKING_BASILISK, true); + if (Creature* basilisk = GetHitUnit()->ToCreature()) + basilisk->DespawnOrUnsummon(); + } + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_q12527_zuldrak_rat_SpellScript::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_q12527_zuldrak_rat_SpellScript(); + } +}; + void AddSC_quest_spell_scripts() { new spell_q55_sacred_cleansing(); @@ -1554,4 +1598,5 @@ void AddSC_quest_spell_scripts() new spell_q11010_q11102_q11023_choose_loc(); new spell_q11010_q11102_q11023_q11008_check_fly_mount(); new spell_q12372_azure_on_death_force_whisper(); + new spell_q12527_zuldrak_rat(); } diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 01a4225cc00..70b677f5aaa 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -250,7 +250,7 @@ class spell_rog_preparation : public SpellScriptLoader return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_GLYPH_OF_PREPARATION)) return false; @@ -292,7 +292,6 @@ class spell_rog_preparation : public SpellScriptLoader void Register() { - // add dummy effect spell handler to Preparation OnEffectHitTarget += SpellEffectFn(spell_rog_preparation_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -348,35 +347,6 @@ class spell_rog_prey_on_the_weak : public SpellScriptLoader } }; -// 36554 - Shadowstep -class spell_rog_shadowstep : public SpellScriptLoader -{ - public: - spell_rog_shadowstep() : SpellScriptLoader("spell_rog_shadowstep") { } - - class spell_rog_shadowstep_SpellScript : public SpellScript - { - PrepareSpellScript(spell_rog_shadowstep_SpellScript); - - SpellCastResult CheckCast() - { - if (GetCaster()->HasUnitState(UNIT_STATE_ROOT)) - return SPELL_FAILED_ROOTED; - return SPELL_CAST_OK; - } - - void Register() - { - OnCheckCast += SpellCheckCastFn(spell_rog_shadowstep_SpellScript::CheckCast); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_rog_shadowstep_SpellScript(); - } -}; - // 5938 - Shiv class spell_rog_shiv : public SpellScriptLoader { @@ -425,6 +395,5 @@ void AddSC_rogue_spell_scripts() new spell_rog_nerves_of_steel(); new spell_rog_preparation(); new spell_rog_prey_on_the_weak(); - new spell_rog_shadowstep(); new spell_rog_shiv(); } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index ff7c83b95a5..0d249953421 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -30,28 +30,69 @@ enum ShamanSpells { - SHAMAN_SPELL_GLYPH_OF_MANA_TIDE = 55441, - SHAMAN_SPELL_MANA_TIDE_TOTEM = 39609, - SHAMAN_SPELL_FIRE_NOVA_R1 = 1535, - SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1 = 8349, - SHAMAN_SPELL_SATED = 57724, - SHAMAN_SPELL_EXHAUSTION = 57723, + SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC = 52752, + SPELL_SHAMAN_BIND_SIGHT = 6277, + SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT = 52025, + SPELL_SHAMAN_EXHAUSTION = 57723, + SPELL_SHAMAN_FIRE_NOVA_R1 = 1535, + SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1 = 8349, + SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM = 55456, + SPELL_SHAMAN_GLYPH_OF_MANA_TIDE = 55441, + SPELL_SHAMAN_LAVA_FLOWS_R1 = 51480, + SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1 = 64694, + SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE = 52032, + SPELL_SHAMAN_MANA_TIDE_TOTEM = 39609, + SPELL_SHAMAN_SATED = 57724, + SPELL_SHAMAN_STORM_EARTH_AND_FIRE = 51483, + SPELL_SHAMAN_TOTEM_EARTHBIND_EARTHGRAB = 64695, + SPELL_SHAMAN_TOTEM_EARTHBIND_TOTEM = 6474, + SPELL_SHAMAN_TOTEM_EARTHEN_POWER = 59566, + SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL = 52042 +}; - SHAMAN_SPELL_STORM_EARTH_AND_FIRE = 51483, - EARTHBIND_TOTEM_SPELL_EARTHGRAB = 64695, +enum ShamanSpellIcons +{ + SHAMAN_ICON_ID_RESTORATIVE_TOTEMS = 338, + SHAMAN_ICON_ID_SHAMAN_LAVA_FLOW = 3087 +}; - // For Earthen Power - SHAMAN_TOTEM_SPELL_EARTHBIND_TOTEM = 6474, - SHAMAN_TOTEM_SPELL_EARTHEN_POWER = 59566, +// 52759 - Ancestral Awakening (Proc) +class spell_sha_ancestral_awakening_proc : public SpellScriptLoader +{ + public: + spell_sha_ancestral_awakening_proc() : SpellScriptLoader("spell_sha_ancestral_awakening_proc") { } - SHAMAN_BIND_SIGHT = 6277, + class spell_sha_ancestral_awakening_proc_SpellScript : public SpellScript + { + PrepareSpellScript(spell_sha_ancestral_awakening_proc_SpellScript); - ICON_ID_SHAMAN_LAVA_FLOW = 3087, - SHAMAN_LAVA_FLOWS_R1 = 51480, - SHAMAN_LAVA_FLOWS_TRIGGERED_R1 = 64694, + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC)) + return false; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + int32 damage = GetEffectValue(); + if (GetHitUnit()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC, &damage, NULL, NULL, true); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_sha_ancestral_awakening_proc_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_sha_ancestral_awakening_proc_SpellScript(); + } }; -// 51474 - Astral shift +// 51474 - Astral Shift class spell_sha_astral_shift : public SpellScriptLoader { public: @@ -95,115 +136,136 @@ class spell_sha_astral_shift : public SpellScriptLoader } }; -// 1535 Fire Nova -class spell_sha_fire_nova : public SpellScriptLoader +// 2825 - Bloodlust +class spell_sha_bloodlust : public SpellScriptLoader { public: - spell_sha_fire_nova() : SpellScriptLoader("spell_sha_fire_nova") { } + spell_sha_bloodlust() : SpellScriptLoader("spell_sha_bloodlust") { } - class spell_sha_fire_nova_SpellScript : public SpellScript + class spell_sha_bloodlust_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_fire_nova_SpellScript); + PrepareSpellScript(spell_sha_bloodlust_SpellScript); - bool Validate(SpellInfo const* spellEntry) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_FIRE_NOVA_R1) || sSpellMgr->GetFirstSpellInChain(SHAMAN_SPELL_FIRE_NOVA_R1) != sSpellMgr->GetFirstSpellInChain(spellEntry->Id)) - return false; - - uint8 rank = sSpellMgr->GetSpellRank(spellEntry->Id); - if (!sSpellMgr->GetSpellWithRank(SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1, rank, true)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_SATED)) return false; return true; } - SpellCastResult CheckFireTotem() + void RemoveInvalidTargets(std::list<WorldObject*>& targets) { - // fire totem - if (!GetCaster()->m_SummonSlot[1]) - { - SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_MUST_HAVE_FIRE_TOTEM); - return SPELL_FAILED_CUSTOM_ERROR; - } + targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED)); + } - return SPELL_CAST_OK; + void ApplyDebuff() + { + if (Unit* target = GetHitUnit()) + target->CastSpell(target, SPELL_SHAMAN_SATED, true); } - void HandleDummy(SpellEffIndex /*effIndex*/) + void Register() { - if (Unit* caster = GetCaster()) + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); + AfterHit += SpellHitFn(spell_sha_bloodlust_SpellScript::ApplyDebuff); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_sha_bloodlust_SpellScript(); + } +}; + +// -1064 - Chain Heal +class spell_sha_chain_heal : public SpellScriptLoader +{ + public: + spell_sha_chain_heal() : SpellScriptLoader("spell_sha_chain_heal") { } + + class spell_sha_chain_heal_SpellScript : public SpellScript + { + PrepareSpellScript(spell_sha_chain_heal_SpellScript); + + bool Load() + { + firstHeal = true; + riptide = false; + return true; + } + + void HandleHeal(SpellEffIndex /*effIndex*/) + { + if (firstHeal) { - uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); - if (uint32 spellId = sSpellMgr->GetSpellWithRank(SHAMAN_SPELL_FIRE_NOVA_TRIGGERED_R1, rank)) + // Check if the target has Riptide + if (AuraEffect* aurEff = GetHitUnit()->GetAuraEffect(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_SHAMAN, 0, 0, 0x10, GetCaster()->GetGUID())) { - Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[1]); - if (totem && totem->isTotem()) - caster->CastSpell(totem, spellId, true); + riptide = true; + // Consume it + GetHitUnit()->RemoveAura(aurEff->GetBase()); } + firstHeal = false; } + // Riptide increases the Chain Heal effect by 25% + if (riptide) + SetHitHeal(GetHitHeal() * 1.25f); } void Register() { - OnCheckCast += SpellCheckCastFn(spell_sha_fire_nova_SpellScript::CheckFireTotem); - OnEffectHitTarget += SpellEffectFn(spell_sha_fire_nova_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_sha_chain_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); } + + bool firstHeal; + bool riptide; }; SpellScript* GetSpellScript() const { - return new spell_sha_fire_nova_SpellScript(); + return new spell_sha_chain_heal_SpellScript(); } }; -// 39610 Mana Tide Totem -class spell_sha_mana_tide_totem : public SpellScriptLoader +// 8171 - Cleansing Totem (Pulse) +class spell_sha_cleansing_totem_pulse : public SpellScriptLoader { public: - spell_sha_mana_tide_totem() : SpellScriptLoader("spell_sha_mana_tide_totem") { } + spell_sha_cleansing_totem_pulse() : SpellScriptLoader("spell_sha_cleansing_totem_pulse") { } - class spell_sha_mana_tide_totem_SpellScript : public SpellScript + class spell_sha_cleansing_totem_pulse_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_mana_tide_totem_SpellScript); + PrepareSpellScript(spell_sha_cleansing_totem_pulse_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_GLYPH_OF_MANA_TIDE) || !sSpellMgr->GetSpellInfo(SHAMAN_SPELL_MANA_TIDE_TOTEM)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT)) return false; return true; } void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) - if (Unit* unitTarget = GetHitUnit()) - { - if (unitTarget->getPowerType() == POWER_MANA) - { - int32 effValue = GetEffectValue(); - // Glyph of Mana Tide - if (Unit* owner = caster->GetOwner()) - if (AuraEffect* dummy = owner->GetAuraEffect(SHAMAN_SPELL_GLYPH_OF_MANA_TIDE, 0)) - effValue += dummy->GetAmount(); - // Regenerate 6% of Total Mana Every 3 secs - int32 effBasePoints0 = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue)); - caster->CastCustomSpell(unitTarget, SHAMAN_SPELL_MANA_TIDE_TOTEM, &effBasePoints0, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); - } - } + int32 bp = 1; + if (GetCaster() && GetHitUnit() && GetOriginalCaster()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT, NULL, &bp, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_mana_tide_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_sha_cleansing_totem_pulse_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_sha_mana_tide_totem_SpellScript(); + return new spell_sha_cleansing_totem_pulse_SpellScript(); } }; -// 6474 - Earthbind Totem - Fix Talent:Earthen Power +// 6474 - Earthbind Totem - Fix Talent: Earthen Power class spell_sha_earthbind_totem : public SpellScriptLoader { public: @@ -213,9 +275,9 @@ class spell_sha_earthbind_totem : public SpellScriptLoader { PrepareAuraScript(spell_sha_earthbind_totem_AuraScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_TOTEM_SPELL_EARTHBIND_TOTEM) || !sSpellMgr->GetSpellInfo(SHAMAN_TOTEM_SPELL_EARTHEN_POWER)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_EARTHBIND_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_EARTHEN_POWER)) return false; return true; } @@ -227,7 +289,7 @@ class spell_sha_earthbind_totem : public SpellScriptLoader if (Player* owner = GetCaster()->GetCharmerOrOwnerPlayerOrPlayerItself()) if (AuraEffect* aur = owner->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, 2289, 0)) if (roll_chance_i(aur->GetBaseAmount())) - GetTarget()->CastSpell((Unit*)NULL, SHAMAN_TOTEM_SPELL_EARTHEN_POWER, true); + GetTarget()->CastSpell((Unit*)NULL, SPELL_SHAMAN_TOTEM_EARTHEN_POWER, true); } void Apply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -238,10 +300,10 @@ class spell_sha_earthbind_totem : public SpellScriptLoader if (!owner) return; // Storm, Earth and Fire - if (AuraEffect* aurEff = owner->GetAuraEffectOfRankedSpell(SHAMAN_SPELL_STORM_EARTH_AND_FIRE, EFFECT_1)) + if (AuraEffect* aurEff = owner->GetAuraEffectOfRankedSpell(SPELL_SHAMAN_STORM_EARTH_AND_FIRE, EFFECT_1)) { if (roll_chance_i(aurEff->GetAmount())) - GetCaster()->CastSpell(GetCaster(), EARTHBIND_TOTEM_SPELL_EARTHGRAB, false); + GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_TOTEM_EARTHBIND_EARTHGRAB, false); } } @@ -275,6 +337,7 @@ class EarthenPowerTargetSelector } }; +// 59566 - Earthen Power class spell_sha_earthen_power : public SpellScriptLoader { public: @@ -301,177 +364,112 @@ class spell_sha_earthen_power : public SpellScriptLoader } }; -class spell_sha_bloodlust : public SpellScriptLoader +// -1535 - Fire Nova +class spell_sha_fire_nova : public SpellScriptLoader { public: - spell_sha_bloodlust() : SpellScriptLoader("spell_sha_bloodlust") { } + spell_sha_fire_nova() : SpellScriptLoader("spell_sha_fire_nova") { } - class spell_sha_bloodlust_SpellScript : public SpellScript + class spell_sha_fire_nova_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_bloodlust_SpellScript); + PrepareSpellScript(spell_sha_fire_nova_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* spellInfo) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_SATED)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_FIRE_NOVA_R1) || sSpellMgr->GetFirstSpellInChain(SPELL_SHAMAN_FIRE_NOVA_R1) != sSpellMgr->GetFirstSpellInChain(spellInfo->Id)) return false; - return true; - } - void RemoveInvalidTargets(std::list<WorldObject*>& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SHAMAN_SPELL_SATED)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SHAMAN_SPELL_SATED, true); - } - - void Register() - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_bloodlust_SpellScript::ApplyDebuff); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_sha_bloodlust_SpellScript(); - } -}; - -class spell_sha_heroism : public SpellScriptLoader -{ - public: - spell_sha_heroism() : SpellScriptLoader("spell_sha_heroism") { } - - class spell_sha_heroism_SpellScript : public SpellScript - { - PrepareSpellScript(spell_sha_heroism_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SHAMAN_SPELL_EXHAUSTION)) + uint8 rank = sSpellMgr->GetSpellRank(spellInfo->Id); + if (!sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1, rank, true)) return false; return true; } - void RemoveInvalidTargets(std::list<WorldObject*>& targets) - { - targets.remove_if(Trinity::UnitAuraCheck(true, SHAMAN_SPELL_EXHAUSTION)); - } - - void ApplyDebuff() - { - if (Unit* target = GetHitUnit()) - target->CastSpell(target, SHAMAN_SPELL_EXHAUSTION, true); - } - - void Register() + SpellCastResult CheckFireTotem() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); - AfterHit += SpellHitFn(spell_sha_heroism_SpellScript::ApplyDebuff); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_sha_heroism_SpellScript(); - } -}; - -enum AncestralAwakeningProc -{ - SPELL_ANCESTRAL_AWAKENING_PROC = 52752, -}; - -class spell_sha_ancestral_awakening_proc : public SpellScriptLoader -{ - public: - spell_sha_ancestral_awakening_proc() : SpellScriptLoader("spell_sha_ancestral_awakening_proc") { } - - class spell_sha_ancestral_awakening_proc_SpellScript : public SpellScript - { - PrepareSpellScript(spell_sha_ancestral_awakening_proc_SpellScript); + // fire totem + if (!GetCaster()->m_SummonSlot[1]) + { + SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_MUST_HAVE_FIRE_TOTEM); + return SPELL_FAILED_CUSTOM_ERROR; + } - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_ANCESTRAL_AWAKENING_PROC)) - return false; - return true; + return SPELL_CAST_OK; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { - int32 damage = GetEffectValue(); - if (GetCaster() && GetHitUnit()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_ANCESTRAL_AWAKENING_PROC, &damage, NULL, NULL, true); + if (Unit* caster = GetCaster()) + { + uint8 rank = sSpellMgr->GetSpellRank(GetSpellInfo()->Id); + if (uint32 spellId = sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_FIRE_NOVA_TRIGGERED_R1, rank)) + { + Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[1]); + if (totem && totem->isTotem()) + caster->CastSpell(totem, spellId, true); + } + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_ancestral_awakening_proc_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnCheckCast += SpellCheckCastFn(spell_sha_fire_nova_SpellScript::CheckFireTotem); + OnEffectHitTarget += SpellEffectFn(spell_sha_fire_nova_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_sha_ancestral_awakening_proc_SpellScript(); + return new spell_sha_fire_nova_SpellScript(); } }; -enum CleansingTotemPulse -{ - SPELL_CLEANSING_TOTEM_EFFECT = 52025, -}; - -class spell_sha_cleansing_totem_pulse : public SpellScriptLoader +// -8050 - Flame Shock +class spell_sha_flame_shock : public SpellScriptLoader { public: - spell_sha_cleansing_totem_pulse() : SpellScriptLoader("spell_sha_cleansing_totem_pulse") { } + spell_sha_flame_shock() : SpellScriptLoader("spell_sha_flame_shock") { } - class spell_sha_cleansing_totem_pulse_SpellScript : public SpellScript + class spell_sha_flame_shock_AuraScript : public AuraScript { - PrepareSpellScript(spell_sha_cleansing_totem_pulse_SpellScript); + PrepareAuraScript(spell_sha_flame_shock_AuraScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_CLEANSING_TOTEM_EFFECT)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_LAVA_FLOWS_R1)) + return false; + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDispel(DispelInfo* /*dispelInfo*/) { - int32 bp = 1; - if (GetCaster() && GetHitUnit() && GetOriginalCaster()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_CLEANSING_TOTEM_EFFECT, NULL, &bp, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + if (Unit* caster = GetCaster()) + // Lava Flows + if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_SHAMAN_LAVA_FLOW, EFFECT_0)) + { + if (sSpellMgr->GetFirstSpellInChain(SPELL_SHAMAN_LAVA_FLOWS_R1) != sSpellMgr->GetFirstSpellInChain(aurEff->GetId())) + return; + + uint8 rank = sSpellMgr->GetSpellRank(aurEff->GetId()); + caster->CastSpell(caster, sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_LAVA_FLOWS_TRIGGERED_R1, rank), true); + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_cleansing_totem_pulse_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + AfterDispel += AuraDispelFn(spell_sha_flame_shock_AuraScript::HandleDispel); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_sha_cleansing_totem_pulse_SpellScript(); + return new spell_sha_flame_shock_AuraScript(); } }; -enum HealingStreamTotem -{ - SPELL_GLYPH_OF_HEALING_STREAM_TOTEM = 55456, - ICON_ID_RESTORATIVE_TOTEMS = 338, - SPELL_HEALING_STREAM_TOTEM_HEAL = 52042, -}; - +// 52041, 52046, 52047, 52048, 52049, 52050, 58759, 58760, 58761 - Healing Stream Totem class spell_sha_healing_stream_totem : public SpellScriptLoader { public: @@ -481,14 +479,14 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader { PrepareSpellScript(spell_sha_healing_stream_totem_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_GLYPH_OF_HEALING_STREAM_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_HEALING_STREAM_TOTEM_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { int32 damage = GetEffectValue(); SpellInfo const* triggeringSpell = GetTriggeringSpell(); @@ -501,16 +499,16 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL)); // Restorative Totems - if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, ICON_ID_RESTORATIVE_TOTEMS, 1)) + if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_RESTORATIVE_TOTEMS, 1)) AddPct(damage, dummy->GetAmount()); // Glyph of Healing Stream Totem - if (AuraEffect const* aurEff = owner->GetAuraEffect(SPELL_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) + if (AuraEffect const* aurEff = owner->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM, EFFECT_0)) AddPct(damage, aurEff->GetAmount()); damage = int32(target->SpellHealingBonusTaken(owner, triggeringSpell, damage, HEAL)); } - caster->CastCustomSpell(target, SPELL_HEALING_STREAM_TOTEM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); + caster->CastCustomSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); } } @@ -526,49 +524,50 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader } }; -enum ManaSpringTotem -{ - SPELL_MANA_SPRING_TOTEM_ENERGIZE = 52032, -}; - -class spell_sha_mana_spring_totem : public SpellScriptLoader +// 32182 - Heroism +class spell_sha_heroism : public SpellScriptLoader { public: - spell_sha_mana_spring_totem() : SpellScriptLoader("spell_sha_mana_spring_totem") { } + spell_sha_heroism() : SpellScriptLoader("spell_sha_heroism") { } - class spell_sha_mana_spring_totem_SpellScript : public SpellScript + class spell_sha_heroism_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_mana_spring_totem_SpellScript); + PrepareSpellScript(spell_sha_heroism_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_MANA_SPRING_TOTEM_ENERGIZE)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_EXHAUSTION)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void RemoveInvalidTargets(std::list<WorldObject*>& targets) + { + targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION)); + } + + void ApplyDebuff() { - int32 damage = GetEffectValue(); if (Unit* target = GetHitUnit()) - if (Unit* caster = GetCaster()) - if (target->getPowerType() == POWER_MANA) - caster->CastCustomSpell(target, SPELL_MANA_SPRING_TOTEM_ENERGIZE, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); + target->CastSpell(target, SPELL_SHAMAN_EXHAUSTION, true); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_mana_spring_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism_SpellScript::RemoveInvalidTargets, EFFECT_2, TARGET_UNIT_CASTER_AREA_RAID); + AfterHit += SpellHitFn(spell_sha_heroism_SpellScript::ApplyDebuff); } - }; SpellScript* GetSpellScript() const { - return new spell_sha_mana_spring_totem_SpellScript(); + return new spell_sha_heroism_SpellScript(); } }; +// 60103 - Lava Lash class spell_sha_lava_lash : public SpellScriptLoader { public: @@ -583,7 +582,7 @@ class spell_sha_lava_lash : public SpellScriptLoader return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (Player* caster = GetCaster()->ToPlayer()) { @@ -612,100 +611,94 @@ class spell_sha_lava_lash : public SpellScriptLoader } }; -// 1064 Chain Heal -class spell_sha_chain_heal : public SpellScriptLoader +// 52031, 52033, 52034, 52035, 52036, 58778, 58779, 58780 - Mana Spring Totem +class spell_sha_mana_spring_totem : public SpellScriptLoader { public: - spell_sha_chain_heal() : SpellScriptLoader("spell_sha_chain_heal") { } + spell_sha_mana_spring_totem() : SpellScriptLoader("spell_sha_mana_spring_totem") { } - class spell_sha_chain_heal_SpellScript : public SpellScript + class spell_sha_mana_spring_totem_SpellScript : public SpellScript { - PrepareSpellScript(spell_sha_chain_heal_SpellScript); + PrepareSpellScript(spell_sha_mana_spring_totem_SpellScript); - bool Load() + bool Validate(SpellInfo const* /*spellInfo*/) { - firstHeal = true; - riptide = false; + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE)) + return false; return true; } - void HandleHeal(SpellEffIndex /*effIndex*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (firstHeal) - { - // Check if the target has Riptide - if (AuraEffect* aurEff = GetHitUnit()->GetAuraEffect(SPELL_AURA_PERIODIC_HEAL, SPELLFAMILY_SHAMAN, 0, 0, 0x10, GetCaster()->GetGUID())) - { - riptide = true; - // Consume it - GetHitUnit()->RemoveAura(aurEff->GetBase()); - } - firstHeal = false; - } - // Riptide increases the Chain Heal effect by 25% - if (riptide) - SetHitHeal(GetHitHeal() * 1.25f); + int32 damage = GetEffectValue(); + if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) + if (target->getPowerType() == POWER_MANA) + caster->CastCustomSpell(target, SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE, &damage, 0, 0, true, 0, 0, GetOriginalCaster()->GetGUID()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_sha_chain_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + OnEffectHitTarget += SpellEffectFn(spell_sha_mana_spring_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } - bool firstHeal; - bool riptide; }; SpellScript* GetSpellScript() const { - return new spell_sha_chain_heal_SpellScript(); + return new spell_sha_mana_spring_totem_SpellScript(); } }; -class spell_sha_flame_shock : public SpellScriptLoader +// 39610 - Mana Tide Totem +class spell_sha_mana_tide_totem : public SpellScriptLoader { public: - spell_sha_flame_shock() : SpellScriptLoader("spell_sha_flame_shock") { } + spell_sha_mana_tide_totem() : SpellScriptLoader("spell_sha_mana_tide_totem") { } - class spell_sha_flame_shock_AuraScript : public AuraScript + class spell_sha_mana_tide_totem_SpellScript : public SpellScript { - PrepareAuraScript(spell_sha_flame_shock_AuraScript); + PrepareSpellScript(spell_sha_mana_tide_totem_SpellScript); - bool Validate(SpellInfo const* /*spell*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_LAVA_FLOWS_R1)) - return false; - if (!sSpellMgr->GetSpellInfo(SHAMAN_LAVA_FLOWS_TRIGGERED_R1)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_GLYPH_OF_MANA_TIDE) || !sSpellMgr->GetSpellInfo(SPELL_SHAMAN_MANA_TIDE_TOTEM)) return false; return true; } - void HandleDispel(DispelInfo* /*dispelInfo*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { if (Unit* caster = GetCaster()) - // Lava Flows - if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_SHAMAN, ICON_ID_SHAMAN_LAVA_FLOW, EFFECT_0)) + if (Unit* unitTarget = GetHitUnit()) { - if (sSpellMgr->GetFirstSpellInChain(SHAMAN_LAVA_FLOWS_R1) != sSpellMgr->GetFirstSpellInChain(aurEff->GetId())) - return; - - uint8 rank = sSpellMgr->GetSpellRank(aurEff->GetId()); - caster->CastSpell(caster, sSpellMgr->GetSpellWithRank(SHAMAN_LAVA_FLOWS_TRIGGERED_R1, rank), true); + if (unitTarget->getPowerType() == POWER_MANA) + { + int32 effValue = GetEffectValue(); + // Glyph of Mana Tide + if (Unit* owner = caster->GetOwner()) + if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_MANA_TIDE, 0)) + effValue += dummy->GetAmount(); + // Regenerate 6% of Total Mana Every 3 secs + int32 effBasePoints0 = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue)); + caster->CastCustomSpell(unitTarget, SPELL_SHAMAN_MANA_TIDE_TOTEM, &effBasePoints0, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + } } } void Register() { - AfterDispel += AuraDispelFn(spell_sha_flame_shock_AuraScript::HandleDispel); + OnEffectHitTarget += SpellEffectFn(spell_sha_mana_tide_totem_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_sha_flame_shock_AuraScript(); + return new spell_sha_mana_tide_totem_SpellScript(); } }; +// 6495 - Sentry Totem class spell_sha_sentry_totem : public SpellScriptLoader { public: @@ -717,7 +710,7 @@ class spell_sha_sentry_totem : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SHAMAN_BIND_SIGHT)) + if (!sSpellMgr->GetSpellInfo(SPELL_SHAMAN_BIND_SIGHT)) return false; return true; } @@ -727,7 +720,7 @@ class spell_sha_sentry_totem : public SpellScriptLoader if (Unit* caster = GetCaster()) if (Creature* totem = caster->GetMap()->GetCreature(caster->m_SummonSlot[4])) if (totem->isTotem()) - caster->CastSpell(totem, SHAMAN_BIND_SIGHT, true); + caster->CastSpell(totem, SPELL_SHAMAN_BIND_SIGHT, true); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -752,19 +745,19 @@ class spell_sha_sentry_totem : public SpellScriptLoader void AddSC_shaman_spell_scripts() { + new spell_sha_ancestral_awakening_proc(); new spell_sha_astral_shift(); - new spell_sha_fire_nova(); - new spell_sha_mana_tide_totem(); - new spell_sha_earthbind_totem(); - new spell_sha_earthen_power(); new spell_sha_bloodlust(); - new spell_sha_heroism(); - new spell_sha_ancestral_awakening_proc(); + new spell_sha_chain_heal(); new spell_sha_cleansing_totem_pulse(); + new spell_sha_earthbind_totem(); + new spell_sha_earthen_power(); + new spell_sha_fire_nova(); + new spell_sha_flame_shock(); new spell_sha_healing_stream_totem(); - new spell_sha_mana_spring_totem(); + new spell_sha_heroism(); new spell_sha_lava_lash(); - new spell_sha_chain_heal(); - new spell_sha_flame_shock(); + new spell_sha_mana_spring_totem(); + new spell_sha_mana_tide_totem(); new spell_sha_sentry_totem(); } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 2070933173b..89c69733daf 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -28,141 +28,88 @@ enum WarlockSpells { - WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS = 54435, - WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER = 54443, - WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD = 54508, - WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER = 54509, - WARLOCK_DEMONIC_EMPOWERMENT_IMP = 54444, - WARLOCK_IMPROVED_HEALTHSTONE_R1 = 18692, - WARLOCK_IMPROVED_HEALTHSTONE_R2 = 18693, - WARLOCK_DEMONIC_CIRCLE_SUMMON = 48018, - WARLOCK_DEMONIC_CIRCLE_TELEPORT = 48020, - WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST = 62388, - WARLOCK_HAUNT = 48181, - WARLOCK_HAUNT_HEAL = 48210, - WARLOCK_UNSTABLE_AFFLICTION_DISPEL = 31117, - WARLOCK_CURSE_OF_DOOM_EFFECT = 18662, - WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703, - WARLOCK_IMPROVED_HEALTH_FUNNEL_R2 = 18704, - WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1 = 60955, - WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2 = 60956, + SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT = 18662, + SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON = 48018, + SPELL_WARLOCK_DEMONIC_CIRCLE_TELEPORT = 48020, + SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST = 62388, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS = 54435, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER = 54443, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD = 54508, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER = 54509, + SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP = 54444, + SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1 = 18692, + SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2 = 18693, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R2 = 18704, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1 = 60955, + SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2 = 60956, + SPELL_WARLOCK_HAUNT = 48181, + SPELL_WARLOCK_HAUNT_HEAL = 48210, + SPELL_WARLOCK_LIFE_TAP_ENERGIZE = 31818, + SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2 = 32553, + SPELL_WARLOCK_SOULSHATTER = 32835, + SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL = 31117 }; -class spell_warl_banish : public SpellScriptLoader +enum WarlockSpellIcons { -public: - spell_warl_banish() : SpellScriptLoader("spell_warl_banish") { } - - class spell_warl_banish_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_banish_SpellScript); - - bool Load() - { - _removed = false; - return true; - } - - void HandleBanish() - { - if (Unit* target = GetHitUnit()) - { - if (target->GetAuraEffect(SPELL_AURA_SCHOOL_IMMUNITY, SPELLFAMILY_WARLOCK, 0, 0x08000000, 0)) - { - //No need to remove old aura since its removed due to not stack by current Banish aura - PreventHitDefaultEffect(EFFECT_0); - PreventHitDefaultEffect(EFFECT_1); - PreventHitDefaultEffect(EFFECT_2); - _removed = true; - } - } - } - - void RemoveAura() - { - if (_removed) - PreventHitAura(); - } - - void Register() - { - BeforeHit += SpellHitFn(spell_warl_banish_SpellScript::HandleBanish); - AfterHit += SpellHitFn(spell_warl_banish_SpellScript::RemoveAura); - } - - bool _removed; - }; - - SpellScript* GetSpellScript() const - { - return new spell_warl_banish_SpellScript(); - } + WARLOCK_ICON_ID_IMPROVED_LIFE_TAP = 208, + WARLOCK_ICON_ID_MANA_FEED = 1982 }; -// 47193 Demonic Empowerment -class spell_warl_demonic_empowerment : public SpellScriptLoader +// 710, 18647 - Banish +class spell_warl_banish : public SpellScriptLoader { public: - spell_warl_demonic_empowerment() : SpellScriptLoader("spell_warl_demonic_empowerment") { } + spell_warl_banish() : SpellScriptLoader("spell_warl_banish") { } - class spell_warl_demonic_empowerment_SpellScript : public SpellScript + class spell_warl_banish_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_demonic_empowerment_SpellScript); + PrepareSpellScript(spell_warl_banish_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + bool Load() { - if (!sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER) || !sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_IMP)) - return false; + _removed = false; return true; } - void HandleScriptEffect(SpellEffIndex /*effIndex*/) + void HandleBanish() { - if (Creature* targetCreature = GetHitCreature()) + if (Unit* target = GetHitUnit()) { - if (targetCreature->isPet()) + if (target->GetAuraEffect(SPELL_AURA_SCHOOL_IMMUNITY, SPELLFAMILY_WARLOCK, 0, 0x08000000, 0)) { - CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); - switch (ci->family) - { - case CREATURE_FAMILY_SUCCUBUS: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS, true); - break; - case CREATURE_FAMILY_VOIDWALKER: - { - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER); - int32 hp = int32(targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0))); - targetCreature->CastCustomSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, &hp, NULL, NULL, true); - //unitTarget->CastSpell(unitTarget, 54441, true); - break; - } - case CREATURE_FAMILY_FELGUARD: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD, true); - break; - case CREATURE_FAMILY_FELHUNTER: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER, true); - break; - case CREATURE_FAMILY_IMP: - targetCreature->CastSpell(targetCreature, WARLOCK_DEMONIC_EMPOWERMENT_IMP, true); - break; - } + // No need to remove old aura since its removed due to not stack by current Banish aura + PreventHitDefaultEffect(EFFECT_0); + PreventHitDefaultEffect(EFFECT_1); + PreventHitDefaultEffect(EFFECT_2); + _removed = true; } } } + void RemoveAura() + { + if (_removed) + PreventHitAura(); + } + void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_demonic_empowerment_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + BeforeHit += SpellHitFn(spell_warl_banish_SpellScript::HandleBanish); + AfterHit += SpellHitFn(spell_warl_banish_SpellScript::RemoveAura); } + + bool _removed; }; SpellScript* GetSpellScript() const { - return new spell_warl_demonic_empowerment_SpellScript(); + return new spell_warl_banish_SpellScript(); } }; -// 6201 Create Healthstone (and ranks) +// 6201 - Create Healthstone (and ranks) class spell_warl_create_healthstone : public SpellScriptLoader { public: @@ -174,9 +121,9 @@ class spell_warl_create_healthstone : public SpellScriptLoader static uint32 const iTypes[8][3]; - bool Validate(SpellInfo const* /*spellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_IMPROVED_HEALTHSTONE_R1) || !sSpellMgr->GetSpellInfo(WARLOCK_IMPROVED_HEALTHSTONE_R2)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2)) return false; return true; } @@ -204,8 +151,12 @@ class spell_warl_create_healthstone : public SpellScriptLoader { switch (aurEff->GetId()) { - case WARLOCK_IMPROVED_HEALTHSTONE_R1: rank = 1; break; - case WARLOCK_IMPROVED_HEALTHSTONE_R2: rank = 2; break; + case SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R1: + rank = 1; + break; + case SPELL_WARLOCK_IMPROVED_HEALTHSTONE_R2: + rank = 2; + break; default: sLog->outError(LOG_FILTER_SPELLS_AURAS, "Unknown rank of Improved Healthstone id: %d", aurEff->GetId()); break; @@ -241,142 +192,336 @@ uint32 const spell_warl_create_healthstone::spell_warl_create_healthstone_SpellS {36892, 36893, 36894} // Fel Healthstone }; -// 47422 Everlasting Affliction -class spell_warl_everlasting_affliction : public SpellScriptLoader +// -603 - Curse of Doom +class spell_warl_curse_of_doom : public SpellScriptLoader { public: - spell_warl_everlasting_affliction() : SpellScriptLoader("spell_warl_everlasting_affliction") { } + spell_warl_curse_of_doom() : SpellScriptLoader("spell_warl_curse_of_doom") { } - class spell_warl_everlasting_affliction_SpellScript : public SpellScript + class spell_warl_curse_of_doom_AuraScript : public AuraScript { - PrepareSpellScript(spell_warl_everlasting_affliction_SpellScript); + PrepareAuraScript(spell_warl_curse_of_doom_AuraScript); - void HandleScriptEffect(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spell*/) { - if (Unit* unitTarget = GetHitUnit()) - // Refresh corruption on target - if (AuraEffect* aur = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, GetCaster()->GetGUID())) - aur->GetBase()->RefreshDuration(); + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT)) + return false; + return true; + } + + bool Load() + { + return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; + } + + void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + if (!GetCaster()) + return; + + AuraRemoveMode removeMode = GetTargetApplication()->GetRemoveMode(); + if (removeMode != AURA_REMOVE_BY_DEATH || !IsExpired()) + return; + + if (GetCaster()->ToPlayer()->isHonorOrXPTarget(GetTarget())) + GetCaster()->CastSpell(GetTarget(), SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT, true, NULL, aurEff); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_everlasting_affliction_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + AfterEffectRemove += AuraEffectRemoveFn(spell_warl_curse_of_doom_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); } }; - SpellScript* GetSpellScript() const + AuraScript* GetAuraScript() const { - return new spell_warl_everlasting_affliction_SpellScript(); + return new spell_warl_curse_of_doom_AuraScript(); } }; -// 18541 Ritual of Doom Effect -class spell_warl_ritual_of_doom_effect : public SpellScriptLoader +// 48018 - Demonic Circle Summon +class spell_warl_demonic_circle_summon : public SpellScriptLoader { -public: - spell_warl_ritual_of_doom_effect() : SpellScriptLoader("spell_warl_ritual_of_doom_effect") { } + public: + spell_warl_demonic_circle_summon() : SpellScriptLoader("spell_warl_demonic_circle_summon") { } + + class spell_warl_demonic_circle_summon_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_demonic_circle_summon_AuraScript); + + void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes mode) + { + // If effect is removed by expire remove the summoned demonic circle too. + if (!(mode & AURA_EFFECT_HANDLE_REAPPLY)) + GetTarget()->RemoveGameObject(GetId(), true); + + GetTarget()->RemoveAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); + } + + void HandleDummyTick(AuraEffect const* /*aurEff*/) + { + if (GameObject* circle = GetTarget()->GetGameObject(GetId())) + { + // Here we check if player is in demonic circle teleport range, if so add + // WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST; allowing him to cast the WARLOCK_DEMONIC_CIRCLE_TELEPORT. + // If not in range remove the WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST. + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_CIRCLE_TELEPORT); + + if (GetTarget()->IsWithinDist(circle, spellInfo->GetMaxRange(true))) + { + if (!GetTarget()->HasAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST)) + GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST, true); + } + else + GetTarget()->RemoveAura(SPELL_WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); + } + } - class spell_warl_ritual_of_doom_effect_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_ritual_of_doom_effect_SpellScript); + void Register() + { + OnEffectRemove += AuraEffectApplyFn(spell_warl_demonic_circle_summon_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_warl_demonic_circle_summon_AuraScript::HandleDummyTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } + }; - void HandleDummy(SpellEffIndex /*effIndex*/) + AuraScript* GetAuraScript() const { - Unit* caster = GetCaster(); - caster->CastSpell(caster, GetEffectValue(), true); + return new spell_warl_demonic_circle_summon_AuraScript(); } +}; - void Register() +// 48020 - Demonic Circle Teleport +class spell_warl_demonic_circle_teleport : public SpellScriptLoader +{ + public: + spell_warl_demonic_circle_teleport() : SpellScriptLoader("spell_warl_demonic_circle_teleport") { } + + class spell_warl_demonic_circle_teleport_AuraScript : public AuraScript { - OnEffectHit += SpellEffectFn(spell_warl_ritual_of_doom_effect_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; + PrepareAuraScript(spell_warl_demonic_circle_teleport_AuraScript); - SpellScript* GetSpellScript() const - { - return new spell_warl_ritual_of_doom_effect_SpellScript(); - } + void HandleTeleport(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Player* player = GetTarget()->ToPlayer()) + { + if (GameObject* circle = player->GetGameObject(SPELL_WARLOCK_DEMONIC_CIRCLE_SUMMON)) + { + player->NearTeleportTo(circle->GetPositionX(), circle->GetPositionY(), circle->GetPositionZ(), circle->GetOrientation()); + player->RemoveMovementImpairingAuras(); + } + } + } + + void Register() + { + OnEffectApply += AuraEffectApplyFn(spell_warl_demonic_circle_teleport_AuraScript::HandleTeleport, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_warl_demonic_circle_teleport_AuraScript(); + } }; -class spell_warl_seed_of_corruption : public SpellScriptLoader +// 47193 - Demonic Empowerment +class spell_warl_demonic_empowerment : public SpellScriptLoader { public: - spell_warl_seed_of_corruption() : SpellScriptLoader("spell_warl_seed_of_corruption") { } + spell_warl_demonic_empowerment() : SpellScriptLoader("spell_warl_demonic_empowerment") { } - class spell_warl_seed_of_corruption_SpellScript : public SpellScript + class spell_warl_demonic_empowerment_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_seed_of_corruption_SpellScript); + PrepareSpellScript(spell_warl_demonic_empowerment_SpellScript); - void FilterTargets(std::list<WorldObject*>& targets) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (GetExplTargetUnit()) - targets.remove(GetExplTargetUnit()); + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Creature* targetCreature = GetHitCreature()) + { + if (targetCreature->isPet()) + { + CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(targetCreature->GetEntry()); + switch (ci->family) + { + case CREATURE_FAMILY_SUCCUBUS: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_SUCCUBUS, true); + break; + case CREATURE_FAMILY_VOIDWALKER: + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER); + int32 hp = int32(targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0))); + targetCreature->CastCustomSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, &hp, NULL, NULL, true); + //unitTarget->CastSpell(unitTarget, 54441, true); + break; + } + case CREATURE_FAMILY_FELGUARD: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELGUARD, true); + break; + case CREATURE_FAMILY_FELHUNTER: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_FELHUNTER, true); + break; + case CREATURE_FAMILY_IMP: + targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_IMP, true); + break; + } + } + } } void Register() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warl_seed_of_corruption_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_warl_demonic_empowerment_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; SpellScript* GetSpellScript() const { - return new spell_warl_seed_of_corruption_SpellScript(); + return new spell_warl_demonic_empowerment_SpellScript(); } }; -enum Soulshatter +// 47422 - Everlasting Affliction +class spell_warl_everlasting_affliction : public SpellScriptLoader { - SPELL_SOULSHATTER = 32835, + public: + spell_warl_everlasting_affliction() : SpellScriptLoader("spell_warl_everlasting_affliction") { } + + class spell_warl_everlasting_affliction_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warl_everlasting_affliction_SpellScript); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* unitTarget = GetHitUnit()) + // Refresh corruption on target + if (AuraEffect* aur = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x2, 0, 0, GetCaster()->GetGUID())) + aur->GetBase()->RefreshDuration(); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_warl_everlasting_affliction_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_warl_everlasting_affliction_SpellScript(); + } }; -class spell_warl_soulshatter : public SpellScriptLoader +// -48181 - Haunt +class spell_warl_haunt : public SpellScriptLoader { public: - spell_warl_soulshatter() : SpellScriptLoader("spell_warl_soulshatter") { } + spell_warl_haunt() : SpellScriptLoader("spell_warl_haunt") { } - class spell_warl_soulshatter_SpellScript : public SpellScript + class spell_warl_haunt_SpellScript : public SpellScript { - PrepareSpellScript(spell_warl_soulshatter_SpellScript); + PrepareSpellScript(spell_warl_haunt_SpellScript); + + void HandleOnHit() + { + if (Aura* aura = GetHitAura()) + if (AuraEffect* aurEff = aura->GetEffect(EFFECT_1)) + aurEff->SetAmount(CalculatePct(aurEff->GetAmount(), GetHitDamage())); + } + + void Register() + { + OnHit += SpellHitFn(spell_warl_haunt_SpellScript::HandleOnHit); + } + }; + + class spell_warl_haunt_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_haunt_AuraScript); bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_SOULSHATTER)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_HAUNT_HEAL)) return false; return true; } - void HandleDummy(SpellEffIndex /*effIndex*/) + void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) { - if (target->CanHaveThreatList() && target->getThreatManager().getThreat(caster) > 0.0f) - caster->CastSpell(target, SPELL_SOULSHATTER, true); + int32 amount = aurEff->GetAmount(); + GetTarget()->CastCustomSpell(caster, SPELL_WARLOCK_HAUNT_HEAL, &amount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warl_soulshatter_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectRemove += AuraEffectApplyFn(spell_warl_haunt_AuraScript::HandleRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); } }; SpellScript* GetSpellScript() const { - return new spell_warl_soulshatter_SpellScript(); + return new spell_warl_haunt_SpellScript(); + } + + AuraScript* GetAuraScript() const + { + return new spell_warl_haunt_AuraScript(); } }; -enum LifeTap +// -755 - Health Funnel +class spell_warl_health_funnel : public SpellScriptLoader { - SPELL_LIFE_TAP_ENERGIZE = 31818, - SPELL_LIFE_TAP_ENERGIZE_2 = 32553, - ICON_ID_IMPROVED_LIFE_TAP = 208, - ICON_ID_MANA_FEED = 1982, + public: + spell_warl_health_funnel() : SpellScriptLoader("spell_warl_health_funnel") { } + + class spell_warl_health_funnel_AuraScript : public AuraScript + { + PrepareAuraScript(spell_warl_health_funnel_AuraScript); + + void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* caster = GetCaster(); + if (!caster) + return; + + Unit* target = GetTarget(); + if (caster->HasAura(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R2)) + target->CastSpell(target, SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2, true); + else if (caster->HasAura(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1)) + target->CastSpell(target, SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1, true); + } + + void RemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->RemoveAurasDueToSpell(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1); + target->RemoveAurasDueToSpell(SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2); + } + + void Register() + { + OnEffectRemove += AuraEffectRemoveFn(spell_warl_health_funnel_AuraScript::RemoveEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); + OnEffectApply += AuraEffectApplyFn(spell_warl_health_funnel_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_warl_health_funnel_AuraScript(); + } }; +// -1454 - Life Tap class spell_warl_life_tap : public SpellScriptLoader { public: @@ -393,7 +538,7 @@ class spell_warl_life_tap : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_LIFE_TAP_ENERGIZE) || !sSpellMgr->GetSpellInfo(SPELL_LIFE_TAP_ENERGIZE_2)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_LIFE_TAP_ENERGIZE) || !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2)) return false; return true; } @@ -410,20 +555,20 @@ class spell_warl_life_tap : public SpellScriptLoader target->ModifyHealth(-damage); // Improved Life Tap mod - if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, ICON_ID_IMPROVED_LIFE_TAP, 0)) + if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0)) AddPct(mana, aurEff->GetAmount()); - caster->CastCustomSpell(target, SPELL_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false); + caster->CastCustomSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false); // Mana Feed int32 manaFeedVal = 0; - if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, ICON_ID_MANA_FEED, 0)) + if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0)) manaFeedVal = aurEff->GetAmount(); if (manaFeedVal > 0) { ApplyPct(manaFeedVal, mana); - caster->CastCustomSpell(caster, SPELL_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL); + caster->CastCustomSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL); } } } @@ -448,149 +593,102 @@ class spell_warl_life_tap : public SpellScriptLoader } }; -class spell_warl_demonic_circle_summon : public SpellScriptLoader +// 18541 - Ritual of Doom Effect +class spell_warl_ritual_of_doom_effect : public SpellScriptLoader { public: - spell_warl_demonic_circle_summon() : SpellScriptLoader("spell_warl_demonic_circle_summon") { } + spell_warl_ritual_of_doom_effect() : SpellScriptLoader("spell_warl_ritual_of_doom_effect") { } - class spell_warl_demonic_circle_summon_AuraScript : public AuraScript + class spell_warl_ritual_of_doom_effect_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_demonic_circle_summon_AuraScript); - - void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes mode) - { - // If effect is removed by expire remove the summoned demonic circle too. - if (!(mode & AURA_EFFECT_HANDLE_REAPPLY)) - GetTarget()->RemoveGameObject(GetId(), true); + PrepareSpellScript(spell_warl_ritual_of_doom_effect_SpellScript); - GetTarget()->RemoveAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); - } - - void HandleDummyTick(AuraEffect const* /*aurEff*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (GameObject* circle = GetTarget()->GetGameObject(GetId())) - { - // Here we check if player is in demonic circle teleport range, if so add - // WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST; allowing him to cast the WARLOCK_DEMONIC_CIRCLE_TELEPORT. - // If not in range remove the WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST. - - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(WARLOCK_DEMONIC_CIRCLE_TELEPORT); - - if (GetTarget()->IsWithinDist(circle, spellInfo->GetMaxRange(true))) - { - if (!GetTarget()->HasAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST)) - GetTarget()->CastSpell(GetTarget(), WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST, true); - } - else - GetTarget()->RemoveAura(WARLOCK_DEMONIC_CIRCLE_ALLOW_CAST); - } + Unit* caster = GetCaster(); + caster->CastSpell(caster, GetEffectValue(), true); } void Register() { - OnEffectRemove += AuraEffectApplyFn(spell_warl_demonic_circle_summon_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - OnEffectPeriodic += AuraEffectPeriodicFn(spell_warl_demonic_circle_summon_AuraScript::HandleDummyTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectHit += SpellEffectFn(spell_warl_ritual_of_doom_effect_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_warl_demonic_circle_summon_AuraScript(); + return new spell_warl_ritual_of_doom_effect_SpellScript(); } }; -class spell_warl_demonic_circle_teleport : public SpellScriptLoader +// -27285 - Seed of Corruption +class spell_warl_seed_of_corruption : public SpellScriptLoader { public: - spell_warl_demonic_circle_teleport() : SpellScriptLoader("spell_warl_demonic_circle_teleport") { } + spell_warl_seed_of_corruption() : SpellScriptLoader("spell_warl_seed_of_corruption") { } - class spell_warl_demonic_circle_teleport_AuraScript : public AuraScript + class spell_warl_seed_of_corruption_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_demonic_circle_teleport_AuraScript); + PrepareSpellScript(spell_warl_seed_of_corruption_SpellScript); - void HandleTeleport(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + void FilterTargets(std::list<WorldObject*>& targets) { - if (Player* player = GetTarget()->ToPlayer()) - { - if (GameObject* circle = player->GetGameObject(WARLOCK_DEMONIC_CIRCLE_SUMMON)) - { - player->NearTeleportTo(circle->GetPositionX(), circle->GetPositionY(), circle->GetPositionZ(), circle->GetOrientation()); - player->RemoveMovementImpairingAuras(); - } - } + if (GetExplTargetUnit()) + targets.remove(GetExplTargetUnit()); } void Register() { - OnEffectApply += AuraEffectApplyFn(spell_warl_demonic_circle_teleport_AuraScript::HandleTeleport, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warl_seed_of_corruption_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY); } }; - AuraScript* GetAuraScript() const + SpellScript* GetSpellScript() const { - return new spell_warl_demonic_circle_teleport_AuraScript(); + return new spell_warl_seed_of_corruption_SpellScript(); } }; -class spell_warl_haunt : public SpellScriptLoader +// 29858 - Soulshatter +class spell_warl_soulshatter : public SpellScriptLoader { public: - spell_warl_haunt() : SpellScriptLoader("spell_warl_haunt") { } - - class spell_warl_haunt_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warl_haunt_SpellScript); - - void HandleOnHit() - { - if (Aura* aura = GetHitAura()) - if (AuraEffect* aurEff = aura->GetEffect(EFFECT_1)) - aurEff->SetAmount(CalculatePct(aurEff->GetAmount(), GetHitDamage())); - } - - void Register() - { - OnHit += SpellHitFn(spell_warl_haunt_SpellScript::HandleOnHit); - } - }; + spell_warl_soulshatter() : SpellScriptLoader("spell_warl_soulshatter") { } - class spell_warl_haunt_AuraScript : public AuraScript + class spell_warl_soulshatter_SpellScript : public SpellScript { - PrepareAuraScript(spell_warl_haunt_AuraScript); + PrepareSpellScript(spell_warl_soulshatter_SpellScript); bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_HAUNT_HEAL)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_SOULSHATTER)) return false; return true; } - void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) + Unit* caster = GetCaster(); + if (Unit* target = GetHitUnit()) { - int32 amount = aurEff->GetAmount(); - GetTarget()->CastCustomSpell(caster, WARLOCK_HAUNT_HEAL, &amount, NULL, NULL, true, NULL, aurEff, GetCasterGUID()); + if (target->CanHaveThreatList() && target->getThreatManager().getThreat(caster) > 0.0f) + caster->CastSpell(target, SPELL_WARLOCK_SOULSHATTER, true); } } void Register() { - OnEffectRemove += AuraEffectApplyFn(spell_warl_haunt_AuraScript::HandleRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectHitTarget += SpellEffectFn(spell_warl_soulshatter_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warl_haunt_SpellScript(); - } - - AuraScript* GetAuraScript() const - { - return new spell_warl_haunt_AuraScript(); + return new spell_warl_soulshatter_SpellScript(); } }; +// -30108 - Unstable Affliction class spell_warl_unstable_affliction : public SpellScriptLoader { public: @@ -602,7 +700,7 @@ class spell_warl_unstable_affliction : public SpellScriptLoader bool Validate(SpellInfo const* /*spell*/) { - if (!sSpellMgr->GetSpellInfo(WARLOCK_UNSTABLE_AFFLICTION_DISPEL)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL)) return false; return true; } @@ -614,7 +712,7 @@ class spell_warl_unstable_affliction : public SpellScriptLoader { int32 damage = aurEff->GetAmount() * 9; // backfire damage and silence - caster->CastCustomSpell(dispelInfo->GetDispeller(), WARLOCK_UNSTABLE_AFFLICTION_DISPEL, &damage, NULL, NULL, true, NULL, aurEff); + caster->CastCustomSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, &damage, NULL, NULL, true, NULL, aurEff); } } @@ -630,108 +728,20 @@ class spell_warl_unstable_affliction : public SpellScriptLoader } }; -class spell_warl_curse_of_doom : public SpellScriptLoader -{ - public: - spell_warl_curse_of_doom() : SpellScriptLoader("spell_warl_curse_of_doom") { } - - class spell_warl_curse_of_doom_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_curse_of_doom_AuraScript); - - bool Validate(SpellInfo const* /*spell*/) - { - if (!sSpellMgr->GetSpellInfo(WARLOCK_CURSE_OF_DOOM_EFFECT)) - return false; - return true; - } - - bool Load() - { - return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) - { - if (!GetCaster()) - return; - - AuraRemoveMode removeMode = GetTargetApplication()->GetRemoveMode(); - if (removeMode != AURA_REMOVE_BY_DEATH || !IsExpired()) - return; - - if (GetCaster()->ToPlayer()->isHonorOrXPTarget(GetTarget())) - GetCaster()->CastSpell(GetTarget(), WARLOCK_CURSE_OF_DOOM_EFFECT, true, NULL, aurEff); - } - - void Register() - { - AfterEffectRemove += AuraEffectRemoveFn(spell_warl_curse_of_doom_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_warl_curse_of_doom_AuraScript(); - } -}; - -class spell_warl_health_funnel : public SpellScriptLoader -{ -public: - spell_warl_health_funnel() : SpellScriptLoader("spell_warl_health_funnel") { } - - class spell_warl_health_funnel_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_health_funnel_AuraScript); - - void ApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* caster = GetCaster(); - if (!caster) - return; - - Unit* target = GetTarget(); - if (caster->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R2)) - target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2, true); - else if (caster->HasAura(WARLOCK_IMPROVED_HEALTH_FUNNEL_R1)) - target->CastSpell(target, WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1, true); - } - - void RemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* target = GetTarget(); - target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R1); - target->RemoveAurasDueToSpell(WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2); - } - - void Register() - { - OnEffectRemove += AuraEffectRemoveFn(spell_warl_health_funnel_AuraScript::RemoveEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); - OnEffectApply += AuraEffectApplyFn(spell_warl_health_funnel_AuraScript::ApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const - { - return new spell_warl_health_funnel_AuraScript(); - } -}; - void AddSC_warlock_spell_scripts() { new spell_warl_banish(); - new spell_warl_demonic_empowerment(); new spell_warl_create_healthstone(); + new spell_warl_curse_of_doom(); + new spell_warl_demonic_circle_summon(); + new spell_warl_demonic_circle_teleport(); + new spell_warl_demonic_empowerment(); new spell_warl_everlasting_affliction(); + new spell_warl_haunt(); + new spell_warl_health_funnel(); + new spell_warl_life_tap(); new spell_warl_ritual_of_doom_effect(); new spell_warl_seed_of_corruption(); new spell_warl_soulshatter(); - new spell_warl_life_tap(); - new spell_warl_demonic_circle_summon(); - new spell_warl_demonic_circle_teleport(); - new spell_warl_haunt(); new spell_warl_unstable_affliction(); - new spell_warl_curse_of_doom(); - new spell_warl_health_funnel(); } diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 7b6ac8fed12..f84265b89de 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -28,137 +28,173 @@ enum WarriorSpells { - WARRIOR_SPELL_LAST_STAND_TRIGGERED = 12976, + SPELL_WARRIOR_BLOODTHIRST = 23885, + SPELL_WARRIOR_BLOODTHIRST_DAMAGE = 23881, + SPELL_WARRIOR_CHARGE = 34846, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_1 = 12162, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_2 = 12850, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_3 = 12868, + SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC = 12721, + SPELL_WARRIOR_EXECUTE = 20647, + SPELL_WARRIOR_GLYPH_OF_EXECUTION = 58367, + SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF = 65156, + SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT = 64976, + SPELL_WARRIOR_LAST_STAND_TRIGGERED = 12976, + SPELL_WARRIOR_SLAM = 50783, + SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_1 = 46859, + SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_2 = 46860, + SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_1 = 64849, + SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_2 = 64850, + + SPELL_PALADIN_BLESSING_OF_SANCTUARY = 20911, + SPELL_PALADIN_GREATER_BLESSING_OF_SANCTUARY = 25899, + SPELL_PRIEST_RENEWED_HOPE = 63944, + SPELL_GEN_DAMAGE_REDUCTION_AURA = 68066, }; -class spell_warr_last_stand : public SpellScriptLoader +enum WarriorSpellIcons +{ + WARRIOR_ICON_ID_SUDDEN_DEATH = 1989, +}; + +// 23881 - Bloodthirst +class spell_warr_bloodthirst : public SpellScriptLoader { public: - spell_warr_last_stand() : SpellScriptLoader("spell_warr_last_stand") { } + spell_warr_bloodthirst() : SpellScriptLoader("spell_warr_bloodthirst") { } - class spell_warr_last_stand_SpellScript : public SpellScript + class spell_warr_bloodthirst_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_last_stand_SpellScript); + PrepareSpellScript(spell_warr_bloodthirst_SpellScript); - bool Validate(SpellInfo const* /*spellEntry*/) + void HandleDamage(SpellEffIndex /*effIndex*/) { - if (!sSpellMgr->GetSpellInfo(WARRIOR_SPELL_LAST_STAND_TRIGGERED)) - return false; - return true; + int32 damage = GetEffectValue(); + ApplyPct(damage, GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK)); + + if (Unit* target = GetHitUnit()) + { + damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); + damage = target->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); + } + SetHitDamage(damage); } void HandleDummy(SpellEffIndex /*effIndex*/) { - if (Unit* caster = GetCaster()) - { - int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(30)); - caster->CastCustomSpell(caster, WARRIOR_SPELL_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, NULL, NULL, true, NULL); - } + int32 damage = GetEffectValue(); + GetCaster()->CastCustomSpell(GetCaster(), SPELL_WARRIOR_BLOODTHIRST, &damage, NULL, NULL, true, NULL); } void Register() { - // add dummy effect spell handler to Last Stand - OnEffectHit += SpellEffectFn(spell_warr_last_stand_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + OnEffectHit += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_last_stand_SpellScript(); + return new spell_warr_bloodthirst_SpellScript(); } }; -class spell_warr_improved_spell_reflection : public SpellScriptLoader +// 23880 - Bloodthirst (Heal) +class spell_warr_bloodthirst_heal : public SpellScriptLoader { public: - spell_warr_improved_spell_reflection() : SpellScriptLoader("spell_warr_improved_spell_reflection") { } + spell_warr_bloodthirst_heal() : SpellScriptLoader("spell_warr_bloodthirst_heal") { } - class spell_warr_improved_spell_reflection_SpellScript : public SpellScript + class spell_warr_bloodthirst_heal_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_improved_spell_reflection_SpellScript); + PrepareSpellScript(spell_warr_bloodthirst_heal_SpellScript); - void FilterTargets(std::list<WorldObject*>& unitList) + void HandleHeal(SpellEffIndex /*effIndex*/) { - if (GetCaster()) - unitList.remove(GetCaster()); + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_BLOODTHIRST_DAMAGE)) + SetHitHeal(GetCaster()->CountPctFromMaxHealth(spellInfo->Effects[EFFECT_1].CalcValue(GetCaster()))); } void Register() { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warr_improved_spell_reflection_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY); + OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); } }; SpellScript* GetSpellScript() const { - return new spell_warr_improved_spell_reflection_SpellScript(); + return new spell_warr_bloodthirst_heal_SpellScript(); } }; -enum DamageReductionAura +// -100 - Charge +class spell_warr_charge : public SpellScriptLoader { - SPELL_BLESSING_OF_SANCTUARY = 20911, - SPELL_GREATER_BLESSING_OF_SANCTUARY = 25899, - SPELL_RENEWED_HOPE = 63944, - SPELL_DAMAGE_REDUCTION_AURA = 68066, -}; + public: + spell_warr_charge() : SpellScriptLoader("spell_warr_charge") { } -class spell_warr_vigilance : public SpellScriptLoader -{ -public: - spell_warr_vigilance() : SpellScriptLoader("spell_warr_vigilance") { } + class spell_warr_charge_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warr_charge_SpellScript); - class spell_warr_vigilance_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warr_vigilance_AuraScript); + bool Validate(SpellInfo const* /*spellInfo*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_CHARGE)) + return false; + return true; + } - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_DAMAGE_REDUCTION_AURA)) - return false; - return true; - } + void HandleDummy(SpellEffIndex /*effIndex*/) + { + int32 chargeBasePoints0 = GetEffectValue(); + Unit* caster = GetCaster(); + caster->CastCustomSpell(caster, SPELL_WARRIOR_CHARGE, &chargeBasePoints0, NULL, NULL, true); - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* target = GetTarget()) - target->CastSpell(target, SPELL_DAMAGE_REDUCTION_AURA, true); - } + // Juggernaut crit bonus + if (caster->HasAura(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT)) + caster->CastSpell(caster, SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_BUFF, true); + } - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* target = GetTarget()) + void Register() { - if (target->HasAura(SPELL_DAMAGE_REDUCTION_AURA) && !(target->HasAura(SPELL_BLESSING_OF_SANCTUARY) || - target->HasAura(SPELL_GREATER_BLESSING_OF_SANCTUARY) || - target->HasAura(SPELL_RENEWED_HOPE))) - target->RemoveAurasDueToSpell(SPELL_DAMAGE_REDUCTION_AURA); + OnEffectHitTarget += SpellEffectFn(spell_warr_charge_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); } - } + }; - void Register() + SpellScript* GetSpellScript() const { - OnEffectApply += AuraEffectApplyFn(spell_warr_vigilance_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - OnEffectRemove += AuraEffectRemoveFn(spell_warr_vigilance_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + return new spell_warr_charge_SpellScript(); } - - }; - - AuraScript* GetAuraScript() const - { - return new spell_warr_vigilance_AuraScript(); - } }; -enum DeepWounds +// 12809 - Concussion Blow +class spell_warr_concussion_blow : public SpellScriptLoader { - SPELL_DEEP_WOUNDS_RANK_1 = 12162, - SPELL_DEEP_WOUNDS_RANK_2 = 12850, - SPELL_DEEP_WOUNDS_RANK_3 = 12868, - SPELL_DEEP_WOUNDS_RANK_PERIODIC = 12721, + public: + spell_warr_concussion_blow() : SpellScriptLoader("spell_warr_concussion_blow") { } + + class spell_warr_concussion_blow_SpellScript : public SpellScript + { + PrepareSpellScript(spell_warr_concussion_blow_SpellScript); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetEffectValue())); + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_warr_concussion_blow_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_warr_concussion_blow_SpellScript(); + } }; +// -12162 - Deep Wounds class spell_warr_deep_wounds : public SpellScriptLoader { public: @@ -168,14 +204,14 @@ class spell_warr_deep_wounds : public SpellScriptLoader { PrepareSpellScript(spell_warr_deep_wounds_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_1) || !sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_2) || !sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_3)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_2) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_3)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleDummy(SpellEffIndex /*effIndex*/) { int32 damage = GetEffectValue(); Unit* caster = GetCaster(); @@ -188,16 +224,16 @@ class spell_warr_deep_wounds : public SpellScriptLoader damage = target->SpellDamageBonusTaken(caster, GetSpellInfo(), damage, SPELL_DIRECT_DAMAGE); - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_DEEP_WOUNDS_RANK_PERIODIC); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC); uint32 ticks = spellInfo->GetDuration() / spellInfo->Effects[EFFECT_0].Amplitude; // Add remaining ticks to damage done - if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_DEEP_WOUNDS_RANK_PERIODIC, EFFECT_0, caster->GetGUID())) + if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC, EFFECT_0, caster->GetGUID())) damage += aurEff->GetAmount() * (ticks - aurEff->GetTickNumber()); - damage = damage / ticks; + damage /= ticks; - caster->CastCustomSpell(target, SPELL_DEEP_WOUNDS_RANK_PERIODIC, &damage, NULL, NULL, true); + caster->CastCustomSpell(target, SPELL_WARRIOR_DEEP_WOUNDS_RANK_PERIODIC, &damage, NULL, NULL, true); } } @@ -213,311 +249,261 @@ class spell_warr_deep_wounds : public SpellScriptLoader } }; -enum Charge -{ - SPELL_JUGGERNAUT_CRIT_BONUS_TALENT = 64976, - SPELL_JUGGERNAUT_CRIT_BONUS_BUFF = 65156, - SPELL_CHARGE = 34846, -}; - -class spell_warr_charge : public SpellScriptLoader +// -5308 - Execute +class spell_warr_execute : public SpellScriptLoader { public: - spell_warr_charge() : SpellScriptLoader("spell_warr_charge") { } + spell_warr_execute() : SpellScriptLoader("spell_warr_execute") { } - class spell_warr_charge_SpellScript : public SpellScript + class spell_warr_execute_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_charge_SpellScript); + PrepareSpellScript(spell_warr_execute_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_JUGGERNAUT_CRIT_BONUS_TALENT) || !sSpellMgr->GetSpellInfo(SPELL_JUGGERNAUT_CRIT_BONUS_BUFF) || !sSpellMgr->GetSpellInfo(SPELL_CHARGE)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_EXECUTE) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_GLYPH_OF_EXECUTION)) return false; return true; } - void HandleDummy(SpellEffIndex /* effIndex */) + + void HandleDummy(SpellEffIndex effIndex) { - int32 chargeBasePoints0 = GetEffectValue(); Unit* caster = GetCaster(); - caster->CastCustomSpell(caster, SPELL_CHARGE, &chargeBasePoints0, NULL, NULL, true); + if (Unit* target = GetHitUnit()) + { + SpellInfo const* spellInfo = GetSpellInfo(); + int32 rageUsed = std::min<int32>(300 - spellInfo->CalcPowerCost(caster, SpellSchoolMask(spellInfo->SchoolMask)), caster->GetPower(POWER_RAGE)); + int32 newRage = std::max<int32>(0, caster->GetPower(POWER_RAGE) - rageUsed); + + // Sudden Death rage save + if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_GENERIC, WARRIOR_ICON_ID_SUDDEN_DEATH, EFFECT_0)) + { + int32 ragesave = aurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue() * 10; + newRage = std::max(newRage, ragesave); + } - //Juggernaut crit bonus - if (caster->HasAura(SPELL_JUGGERNAUT_CRIT_BONUS_TALENT)) - caster->CastSpell(caster, SPELL_JUGGERNAUT_CRIT_BONUS_BUFF, true); + caster->SetPower(POWER_RAGE, uint32(newRage)); + // Glyph of Execution bonus + if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_WARRIOR_GLYPH_OF_EXECUTION, EFFECT_0)) + rageUsed += aurEff->GetAmount() * 10; + + + int32 bp = GetEffectValue() + int32(rageUsed * spellInfo->Effects[effIndex].DamageMultiplier + caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f); + caster->CastCustomSpell(target, SPELL_WARRIOR_EXECUTE, &bp, NULL, NULL, true, NULL, NULL, GetOriginalCaster()->GetGUID()); + } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_charge_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_execute_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_charge_SpellScript(); + return new spell_warr_execute_SpellScript(); } }; -enum Slam -{ - SPELL_SLAM = 50783, -}; - -class spell_warr_slam : public SpellScriptLoader +// 59725 - Improved Spell Reflection +class spell_warr_improved_spell_reflection : public SpellScriptLoader { public: - spell_warr_slam() : SpellScriptLoader("spell_warr_slam") { } + spell_warr_improved_spell_reflection() : SpellScriptLoader("spell_warr_improved_spell_reflection") { } - class spell_warr_slam_SpellScript : public SpellScript + class spell_warr_improved_spell_reflection_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_slam_SpellScript); + PrepareSpellScript(spell_warr_improved_spell_reflection_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) - { - if (!sSpellMgr->GetSpellInfo(SPELL_SLAM)) - return false; - return true; - } - void HandleDummy(SpellEffIndex /* effIndex */) + void FilterTargets(std::list<WorldObject*>& unitList) { - int32 bp0 = GetEffectValue(); - if (GetHitUnit()) - GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SLAM, &bp0, NULL, NULL, true, 0); + if (GetCaster()) + unitList.remove(GetCaster()); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_slam_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warr_improved_spell_reflection_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_slam_SpellScript(); + return new spell_warr_improved_spell_reflection_SpellScript(); } }; -enum Execute -{ - SPELL_EXECUTE = 20647, - SPELL_GLYPH_OF_EXECUTION = 58367, - ICON_ID_SUDDEN_DEATH = 1989, -}; - -class spell_warr_execute : public SpellScriptLoader +// 12975 - Last Stand +class spell_warr_last_stand : public SpellScriptLoader { public: - spell_warr_execute() : SpellScriptLoader("spell_warr_execute") { } + spell_warr_last_stand() : SpellScriptLoader("spell_warr_last_stand") { } - class spell_warr_execute_SpellScript : public SpellScript + class spell_warr_last_stand_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_execute_SpellScript); + PrepareSpellScript(spell_warr_last_stand_SpellScript); - bool Validate(SpellInfo const* /*SpellEntry*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (!sSpellMgr->GetSpellInfo(SPELL_EXECUTE) || !sSpellMgr->GetSpellInfo(SPELL_GLYPH_OF_EXECUTION)) + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_LAST_STAND_TRIGGERED)) return false; return true; } - void HandleDummy(SpellEffIndex effIndex) + + void HandleDummy(SpellEffIndex /*effIndex*/) { - Unit* caster = GetCaster(); - if (Unit* target = GetHitUnit()) + if (Unit* caster = GetCaster()) { - SpellInfo const* spellInfo = GetSpellInfo(); - int32 rageUsed = std::min<int32>(300 - spellInfo->CalcPowerCost(caster, SpellSchoolMask(spellInfo->SchoolMask)), caster->GetPower(POWER_RAGE)); - int32 newRage = std::max<int32>(0, caster->GetPower(POWER_RAGE) - rageUsed); - - // Sudden Death rage save - if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_PROC_TRIGGER_SPELL, SPELLFAMILY_GENERIC, ICON_ID_SUDDEN_DEATH, EFFECT_0)) - { - int32 ragesave = aurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue() * 10; - newRage = std::max(newRage, ragesave); - } - - caster->SetPower(POWER_RAGE, uint32(newRage)); - // Glyph of Execution bonus - if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_GLYPH_OF_EXECUTION, EFFECT_0)) - rageUsed += aurEff->GetAmount() * 10; - - - int32 bp = GetEffectValue() + int32(rageUsed * spellInfo->Effects[effIndex].DamageMultiplier + caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f); - caster->CastCustomSpell(target,SPELL_EXECUTE,&bp,0,0,true,0,0,GetOriginalCaster()->GetGUID()); + int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(30)); + caster->CastCustomSpell(caster, SPELL_WARRIOR_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, NULL, NULL, true, NULL); } } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_execute_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHit += SpellEffectFn(spell_warr_last_stand_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_execute_SpellScript(); + return new spell_warr_last_stand_SpellScript(); } }; -class spell_warr_concussion_blow : public SpellScriptLoader +// 7384, 7887, 11584, 11585 - Overpower +class spell_warr_overpower : public SpellScriptLoader { public: - spell_warr_concussion_blow() : SpellScriptLoader("spell_warr_concussion_blow") { } + spell_warr_overpower() : SpellScriptLoader("spell_warr_overpower") { } - class spell_warr_concussion_blow_SpellScript : public SpellScript + class spell_warr_overpower_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_concussion_blow_SpellScript); + PrepareSpellScript(spell_warr_overpower_SpellScript); - void HandleDummy(SpellEffIndex /* effIndex */) + void HandleEffect(SpellEffIndex /*effIndex*/) { - SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetEffectValue())); + uint32 spellId = 0; + if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_1)) + spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_1; + else if (GetCaster()->HasAura(SPELL_WARRIOR_UNRELENTING_ASSAULT_RANK_2)) + spellId = SPELL_WARRIOR_UNRELENTING_ASSAULT_TRIGGER_2; + + if (!spellId) + return; + + if (Player* target = GetHitPlayer()) + if (target->HasUnitState(UNIT_STATE_CASTING)) + target->CastSpell(target, spellId, true); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_concussion_blow_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_overpower_SpellScript::HandleEffect, EFFECT_0, SPELL_EFFECT_ANY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_concussion_blow_SpellScript(); + return new spell_warr_overpower_SpellScript(); } }; -enum Bloodthirst -{ - SPELL_BLOODTHIRST = 23885, -}; - -class spell_warr_bloodthirst : public SpellScriptLoader +// -1464 - Slam +class spell_warr_slam : public SpellScriptLoader { public: - spell_warr_bloodthirst() : SpellScriptLoader("spell_warr_bloodthirst") { } + spell_warr_slam() : SpellScriptLoader("spell_warr_slam") { } - class spell_warr_bloodthirst_SpellScript : public SpellScript + class spell_warr_slam_SpellScript : public SpellScript { - PrepareSpellScript(spell_warr_bloodthirst_SpellScript); + PrepareSpellScript(spell_warr_slam_SpellScript); - void HandleDamage(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - int32 damage = GetEffectValue(); - ApplyPct(damage, GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK)); - - if (Unit* target = GetHitUnit()) - { - damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); - damage = target->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE); - } - SetHitDamage(damage); + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SLAM)) + return false; + return true; } void HandleDummy(SpellEffIndex /*effIndex*/) { - int32 damage = GetEffectValue(); - GetCaster()->CastCustomSpell(GetCaster(), SPELL_BLOODTHIRST, &damage, NULL, NULL, true, NULL); + int32 bp0 = GetEffectValue(); + if (GetHitUnit()) + GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_WARRIOR_SLAM, &bp0, NULL, NULL, true, 0); } void Register() { - OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); - OnEffectHit += SpellEffectFn(spell_warr_bloodthirst_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_warr_slam_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; SpellScript* GetSpellScript() const { - return new spell_warr_bloodthirst_SpellScript(); + return new spell_warr_slam_SpellScript(); } }; -enum BloodthirstHeal -{ - SPELL_BLOODTHIRST_DAMAGE = 23881, -}; - -class spell_warr_bloodthirst_heal : public SpellScriptLoader +// 50720 - Vigilance +class spell_warr_vigilance : public SpellScriptLoader { public: - spell_warr_bloodthirst_heal() : SpellScriptLoader("spell_warr_bloodthirst_heal") { } + spell_warr_vigilance() : SpellScriptLoader("spell_warr_vigilance") { } - class spell_warr_bloodthirst_heal_SpellScript : public SpellScript + class spell_warr_vigilance_AuraScript : public AuraScript { - PrepareSpellScript(spell_warr_bloodthirst_heal_SpellScript); + PrepareAuraScript(spell_warr_vigilance_AuraScript); - void HandleHeal(SpellEffIndex /*effIndex*/) + bool Validate(SpellInfo const* /*spellInfo*/) { - if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_BLOODTHIRST_DAMAGE)) - SetHitHeal(GetCaster()->CountPctFromMaxHealth(spellInfo->Effects[EFFECT_1].CalcValue(GetCaster()))); + if (!sSpellMgr->GetSpellInfo(SPELL_GEN_DAMAGE_REDUCTION_AURA)) + return false; + return true; } - void Register() + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + if (Unit* target = GetTarget()) + target->CastSpell(target, SPELL_GEN_DAMAGE_REDUCTION_AURA, true); } - }; - SpellScript* GetSpellScript() const - { - return new spell_warr_bloodthirst_heal_SpellScript(); - } -}; - -enum Overpower -{ - SPELL_UNRELENTING_ASSAULT_RANK_1 = 46859, - SPELL_UNRELENTING_ASSAULT_RANK_2 = 46860, - SPELL_UNRELENTING_ASSAULT_TRIGGER_1 = 64849, - SPELL_UNRELENTING_ASSAULT_TRIGGER_2 = 64850, -}; - -class spell_warr_overpower : public SpellScriptLoader -{ -public: - spell_warr_overpower() : SpellScriptLoader("spell_warr_overpower") { } + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* target = GetTarget()) + { + if (target->HasAura(SPELL_GEN_DAMAGE_REDUCTION_AURA) && !(target->HasAura(SPELL_PALADIN_BLESSING_OF_SANCTUARY) || + target->HasAura(SPELL_PALADIN_GREATER_BLESSING_OF_SANCTUARY) || + target->HasAura(SPELL_PRIEST_RENEWED_HOPE))) + target->RemoveAurasDueToSpell(SPELL_GEN_DAMAGE_REDUCTION_AURA); + } + } - class spell_warr_overpower_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warr_overpower_SpellScript); + void Register() + { + OnEffectApply += AuraEffectApplyFn(spell_warr_vigilance_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectRemove += AuraEffectRemoveFn(spell_warr_vigilance_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } - void HandleEffect(SpellEffIndex /* effIndex */) - { - uint32 spellId = 0; - if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_1)) - spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_1; - else if (GetCaster()->HasAura(SPELL_UNRELENTING_ASSAULT_RANK_2)) - spellId = SPELL_UNRELENTING_ASSAULT_TRIGGER_2; - - if (!spellId) - return; - - if (Player* target = GetHitPlayer()) - if (target->HasUnitState(UNIT_STATE_CASTING)) - target->CastSpell(target, spellId, true); - } + }; - void Register() + AuraScript* GetAuraScript() const { - OnEffectHitTarget += SpellEffectFn(spell_warr_overpower_SpellScript::HandleEffect, EFFECT_0, SPELL_EFFECT_ANY); + return new spell_warr_vigilance_AuraScript(); } - }; - - SpellScript* GetSpellScript() const - { - return new spell_warr_overpower_SpellScript(); - } }; void AddSC_warrior_spell_scripts() { - new spell_warr_last_stand(); - new spell_warr_improved_spell_reflection(); - new spell_warr_vigilance(); - new spell_warr_deep_wounds(); - new spell_warr_charge(); - new spell_warr_slam(); - new spell_warr_execute(); - new spell_warr_concussion_blow(); new spell_warr_bloodthirst(); new spell_warr_bloodthirst_heal(); + new spell_warr_charge(); + new spell_warr_concussion_blow(); + new spell_warr_deep_wounds(); + new spell_warr_execute(); + new spell_warr_improved_spell_reflection(); + new spell_warr_last_stand(); new spell_warr_overpower(); + new spell_warr_slam(); + new spell_warr_vigilance(); } |