aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dep/CMakeLists.txt2
-rw-r--r--dep/acelite/CMakeLists.txt2
-rw-r--r--dep/bzip2/CMakeLists.txt2
-rw-r--r--dep/jemalloc/CMakeLists.txt2
-rw-r--r--dep/libmpq/CMakeLists.txt2
-rw-r--r--sql/base/characters_database.sql27
-rw-r--r--sql/old/3.3.5a/2011_11_24_00_world_version.sql (renamed from sql/updates/world/2011_11_24_00_world_version.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_25_00_world_quest_template.sql (renamed from sql/updates/world/2011_11_25_00_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_25_01_world_quest_template.sql (renamed from sql/updates/world/2011_11_25_01_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_25_02_world_creature.sql (renamed from sql/updates/world/2011_11_25_02_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_00_world_quest_template.sql (renamed from sql/updates/world/2011_11_26_00_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_01_world_quest_template.sql (renamed from sql/updates/world/2011_11_26_01_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_02_world_spell_group.sql (renamed from sql/updates/world/2011_11_26_02_world_spell_group.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_03_world_spell_proc_event.sql (renamed from sql/updates/world/2011_11_26_03_world_spell_proc_event.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_04_world_achievement_criteria_data.sql (renamed from sql/updates/world/2011_11_26_04_world_achievement_criteria_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_04_world_disables.sql (renamed from sql/updates/world/2011_11_26_04_world_disables.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_05_world_ulduar_gameobject.sql (renamed from sql/updates/world/2011_11_26_05_world_ulduar_gameobject.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_26_06_world_sai.sql (renamed from sql/updates/world/2011_11_26_06_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_27_00_world_creature_template.sql (renamed from sql/updates/world/2011_11_27_00_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_27_00_world_spell_script.sql (renamed from sql/updates/world/2011_11_27_00_world_spell_script.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_28_00_world_achievement_criteria_data.sql (renamed from sql/updates/world/2011_11_28_00_world_achievement_criteria_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_11_29_00_world_spell_script.sql (renamed from sql/updates/world/2011_11_29_00_world_spell_script.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_03_00_world_gameobject.sql (renamed from sql/updates/world/2011_12_03_00_world_gameobject.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_08_00_world_gossip.sql (renamed from sql/updates/world/2011_12_08_00_world_gossip.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_08_00_world_player_factionchange_achievement.sql (renamed from sql/updates/world/2011_12_08_00_world_player_factionchange_achievement.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_08_01_world_creature_template_addon.sql (renamed from sql/updates/world/2011_12_08_01_world_creature_template_addon.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_10_00_world_spell_proc_event.sql (renamed from sql/updates/world/2011_12_10_00_world_spell_proc_event.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_10_01_world_achievement_criteria_data.sql (renamed from sql/updates/world/2011_12_10_01_world_achievement_criteria_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_12_00_world_spell_bonus_data.sql (renamed from sql/updates/world/2011_12_12_00_world_spell_bonus_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_13_00_world_misc.sql (renamed from sql/updates/world/2011_12_13_00_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_13_01_world_achievement_criteria_data.sql (renamed from sql/updates/world/2011_12_13_01_world_achievement_criteria_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_13_02_world_creature_template_addon.sql (renamed from sql/updates/world/2011_12_13_02_world_creature_template_addon.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_14_00_world_command.sql (renamed from sql/updates/world/2011_12_14_00_world_command.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_14_01_world_gameobject_template.sql (renamed from sql/updates/world/2011_12_14_01_world_gameobject_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_16_00_world_creature_template.sql (renamed from sql/updates/world/2011_12_16_00_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_16_00_world_spell_bonus_data.sql (renamed from sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_17_00_world_creature.sql (renamed from sql/updates/world/2011_12_17_00_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_17_00_world_gameobject.sql (renamed from sql/updates/world/2011_12_17_00_world_gameobject.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_00_world_creature_addon.sql (renamed from sql/updates/world/2011_12_18_00_world_creature_addon.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_01_world_gossip.sql (renamed from sql/updates/world/2011_12_18_01_world_gossip.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_02_world_spell_script_names.sql (renamed from sql/updates/world/2011_12_18_02_world_spell_script_names.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_03_world_trinity_string.sql (renamed from sql/updates/world/2011_12_18_03_world_trinity_string.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_04_world_misc.sql (renamed from sql/updates/world/2011_12_18_04_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_05_world_misc.sql (renamed from sql/updates/world/2011_12_18_05_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_06_world_sai.sql (renamed from sql/updates/world/2011_12_18_06_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_18_07_world_conditions.sql (renamed from sql/updates/world/2011_12_18_07_world_conditions.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_19_00_world_conditions.sql (renamed from sql/updates/world/2011_12_19_00_world_conditions.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_19_01_world_quest_template.sql (renamed from sql/updates/world/2011_12_19_01_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_19_02_world_achievement_criteria_data.sql (renamed from sql/updates/world/2011_12_19_02_world_achievement_criteria_data.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_24_00_world_misc.sql (renamed from sql/updates/world/2011_12_24_00_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_24_00_world_spell_proc_event.sql (renamed from sql/updates/world/2011_12_24_00_world_spell_proc_event.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_24_01_world_mail_loot_template.sql (renamed from sql/updates/world/2011_12_24_01_world_mail_loot_template.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_00_world_areatrigger_scriptnames.sql (renamed from sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_00_world_gameobject_scriptnames.sql (renamed from sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_00_world_misc.sql (renamed from sql/updates/world/2011_12_25_00_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_00_world_sai.sql (renamed from sql/updates/world/2011_12_25_00_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_00_world_spell_script_names.sql (renamed from sql/updates/world/2011_12_25_00_world_spell_script_names.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_01_world_areatrigger_scriptnames.sql (renamed from sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_01_world_misc.sql (renamed from sql/updates/world/2011_12_25_01_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_01_world_sai.sql (renamed from sql/updates/world/2011_12_25_01_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_02_world_areatrigger_scriptnames.sql (renamed from sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_02_world_misc.sql (renamed from sql/updates/world/2011_12_25_02_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_02_world_sai.sql (renamed from sql/updates/world/2011_12_25_02_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_03_world_misc.sql (renamed from sql/updates/world/2011_12_25_03_world_misc.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_25_03_world_sai.sql (renamed from sql/updates/world/2011_12_25_03_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_00_world_sai.sql (renamed from sql/updates/world/2011_12_26_00_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_01_world_sai.sql (renamed from sql/updates/world/2011_12_26_01_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_02_world_sai.sql (renamed from sql/updates/world/2011_12_26_02_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_03_world_sai.sql (renamed from sql/updates/world/2011_12_26_03_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_04_world_sai.sql (renamed from sql/updates/world/2011_12_26_04_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_05_world_sai.sql (renamed from sql/updates/world/2011_12_26_05_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_06_world_sai.sql (renamed from sql/updates/world/2011_12_26_06_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_07_world_sai.sql (renamed from sql/updates/world/2011_12_26_07_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2011_12_26_08_world_sai.sql (renamed from sql/updates/world/2011_12_26_08_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_02_00_world_sai.sql (renamed from sql/updates/world/2012_01_02_00_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_02_01_world_game_event.sql (renamed from sql/updates/world/2012_01_02_01_world_game_event.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_02_02_world_creature_template.sql (renamed from sql/updates/world/2012_01_02_02_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_02_03_world_creature_onkill_reputation.sql (renamed from sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_00_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_03_00_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_01_world_quest_template.sql (renamed from sql/updates/world/2012_01_03_01_world_quest_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_02_world_sai.sql (renamed from sql/updates/world/2012_01_03_02_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_03_world_creature_template.sql (renamed from sql/updates/world/2012_01_03_03_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_04_world_gameobject_questrelation.sql (renamed from sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_05_world_creature.sql (renamed from sql/updates/world/2012_01_03_05_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_06_world_sai.sql (renamed from sql/updates/world/2012_01_03_06_world_sai.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_03_07_world_creature.sql (renamed from sql/updates/world/2012_01_03_07_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_00_characters_character_queststatus_seasonal.sql (renamed from sql/updates/characters/2012_01_04_00_characters_character_queststatus_seasonal.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_00_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_00_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_01_world_game_event_seasonal_questrelation.sql (renamed from sql/updates/world/2012_01_04_01_world_game_event_seasonal_questrelation.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_02_world_achievements.sql (renamed from sql/updates/world/2012_01_04_02_world_achievements.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_02_world_sai.sql (renamed from sql/updates/world/2012_01_04_02_world_sai.sql)6
-rw-r--r--sql/old/3.3.5a/2012_01_04_03_world_spell_script_names.sql (renamed from sql/updates/world/2012_01_04_03_world_spell_script_names.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_04_world_creature.sql (renamed from sql/updates/world/2012_01_04_04_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_04_world_creature_template.sql (renamed from sql/updates/world/2012_01_04_04_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_05_world_waypoint_data.sql (renamed from sql/updates/world/2012_01_04_05_world_waypoint_data.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_06_world_waypoint_data.sql (renamed from sql/updates/world/2012_01_04_06_world_waypoint_data.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_07_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_07_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_08_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_08_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_09_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_09_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_10_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_10_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_11_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_11_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_12_world_gosip_menu.sql (renamed from sql/updates/world/2012_01_04_12_world_gosip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_13_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_13_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_14_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_14_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_04_15_world_gossip_menu.sql (renamed from sql/updates/world/2012_01_04_15_world_gossip_menu.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_00_world_script_texts.sql (renamed from sql/updates/world/2012_01_05_00_world_script_texts.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_01_world_gameobject.sql (renamed from sql/updates/world/2012_01_05_01_world_gameobject.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_02_world_gameobject_template.sql (renamed from sql/updates/world/2012_01_05_02_world_gameobject_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_03_world_creature_model_info.sql (renamed from sql/updates/world/2012_01_05_03_world_creature_model_info.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_04_world_gameobject.sql (renamed from sql/updates/world/2012_01_05_04_world_gameobject.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_05_world_creature.sql (renamed from sql/updates/world/2012_01_05_05_world_creature.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_06_world_spell_script_names.sql (renamed from sql/updates/world/2012_01_05_06_world_spell_script_names.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_07_world_creature_template.sql (renamed from sql/updates/world/2012_01_05_07_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_08_world_creature_template.sql (renamed from sql/updates/world/2012_01_05_08_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_09_world_waypoint_data.sql (renamed from sql/updates/world/2012_01_05_09_world_waypoint_data.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_10_world_creature_template.sql (renamed from sql/updates/world/2012_01_05_10_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_11_world_creature_onkill_reputation.sql (renamed from sql/updates/world/2012_01_05_11_world_creature_onkill_reputation.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_12_world_game_event_seasonal_questrelation.sql (renamed from sql/updates/world/2012_01_05_12_world_game_event_seasonal_questrelation.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_13_world_creature_transport.sql (renamed from sql/updates/world/2012_01_05_13_world_creature_transport.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_05_14_world_command.sql1
-rw-r--r--sql/old/3.3.5a/2012_01_05_14_world_creature_template.sql (renamed from sql/updates/world/2012_01_05_14_world_creature_template.sql)0
-rw-r--r--sql/old/3.3.5a/2012_01_06_00_world_creature_template_addon.sql4
-rw-r--r--sql/old/3.3.5a/2012_01_06_00_world_misc.sql189
-rw-r--r--sql/old/3.3.5a/2012_01_06_01_world_creature_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_06_02_world_achievement_criteria_data.sql24
-rw-r--r--sql/old/3.3.5a/2012_01_06_03_world_item_loot_template.sql8
-rw-r--r--sql/old/3.3.5a/2012_01_06_04_world_creature_questrelation.sql5
-rw-r--r--sql/old/3.3.5a/2012_01_06_05_world_creature_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_06_06_world_quest_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_06_07_world_sai.sql23
-rw-r--r--sql/old/3.3.5a/2012_01_06_08_world_creature_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_06_09_world_creature_questrelation.sql9
-rw-r--r--sql/old/3.3.5a/2012_01_06_10_world_creature_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_06_11_world_sai.sql14
-rw-r--r--sql/old/3.3.5a/2012_01_06_12_world_sai.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_07_00_world_creature_addon.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_07_01_world_creature_template.sql8
-rw-r--r--sql/old/3.3.5a/2012_01_07_02_world_gameobject_template.sql2
-rw-r--r--sql/old/3.3.5a/2012_01_07_03_world_creature_template.sql8
-rw-r--r--sql/old/3.3.5a/2012_01_07_04_world_creature_loot_template.sql29
-rw-r--r--sql/old/3.3.5a/2012_01_07_05_world_creature_loot_template.sql4
-rw-r--r--sql/updates/world/2012_01_08_00_world_version.sql1
-rw-r--r--sql/updates/world/2012_01_08_01_world_sai.sql24
-rw-r--r--sql/updates/world/2012_01_08_02_world_creature_template.sql4
-rw-r--r--sql/updates/world/2012_01_08_03_world_gossip_menu.sql51
-rw-r--r--sql/updates/world/2012_01_08_04_world_quest_template.sql2
-rw-r--r--sql/updates/world/2012_01_08_05_world_conditions.sql10
-rw-r--r--sql/updates/world/2012_01_08_06_world_creature_text.sql11
-rw-r--r--sql/updates/world/2012_01_08_07_world_creature_text.sql11
-rw-r--r--sql/updates/world/2012_01_08_08_world_creature_text.sql17
-rw-r--r--sql/updates/world/2012_01_08_09_world_creature_text.sql20
-rw-r--r--sql/updates/world/2012_01_08_10_world_creature_text.sql25
-rw-r--r--sql/updates/world/2012_01_08_11_world_creature_text.sql9
-rw-r--r--sql/updates/world/2012_01_08_12_world_creature_text.sql6
-rw-r--r--sql/updates/world/2012_01_08_13_world_creature_text.sql7
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/server/CMakeLists.txt2
-rw-r--r--src/server/game/AI/CoreAI/GameObjectAI.h1
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp20
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h3
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp39
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.h1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h18
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp34
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.h4
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.cpp6
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.h2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp20
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MiscHandler.cpp5
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp2
-rwxr-xr-xsrc/server/game/Server/WorldSession.h1
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp5
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp11
-rw-r--r--src/server/scripts/Commands/cs_account.cpp3
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp9
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp20
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp23
-rw-r--r--src/server/scripts/EasternKingdoms/arathi_highlands.cpp40
-rw-r--r--src/server/scripts/EasternKingdoms/duskwood.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/eversong_woods.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/ghostlands.cpp40
-rw-r--r--src/server/scripts/Outland/blades_edge_mountains.cpp561
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp2
-rw-r--r--src/tools/CMakeLists.txt2
-rw-r--r--src/tools/map_extractor/CMakeLists.txt2
-rw-r--r--src/tools/vmap3_assembler/CMakeLists.txt2
-rw-r--r--src/tools/vmap3_extractor/CMakeLists.txt2
190 files changed, 1356 insertions, 168 deletions
diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt
index f22286c305f..9c13ad59bc5 100644
--- a/dep/CMakeLists.txt
+++ b/dep/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/dep/acelite/CMakeLists.txt b/dep/acelite/CMakeLists.txt
index c394d5313a9..8bf3fadbe3f 100644
--- a/dep/acelite/CMakeLists.txt
+++ b/dep/acelite/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/dep/bzip2/CMakeLists.txt b/dep/bzip2/CMakeLists.txt
index f8f5cf27b95..945e1a2f5ea 100644
--- a/dep/bzip2/CMakeLists.txt
+++ b/dep/bzip2/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/dep/jemalloc/CMakeLists.txt b/dep/jemalloc/CMakeLists.txt
index b39f9e58301..74253127efa 100644
--- a/dep/jemalloc/CMakeLists.txt
+++ b/dep/jemalloc/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/dep/libmpq/CMakeLists.txt b/dep/libmpq/CMakeLists.txt
index ef2fccdc9ba..a18d8b15d8b 100644
--- a/dep/libmpq/CMakeLists.txt
+++ b/dep/libmpq/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index 6296351f52f..4e81308119f 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -868,6 +868,31 @@ LOCK TABLES `character_queststatus_rewarded` WRITE;
UNLOCK TABLES;
--
+-- Table structure for table `character_queststatus_seasonal`
+--
+
+DROP TABLE IF EXISTS `character_queststatus_seasonal`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `character_queststatus_seasonal` (
+ `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
+ `quest` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Quest Identifier',
+ `event` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Event Identifier',
+ PRIMARY KEY (`guid`,`quest`),
+ KEY `idx_guid` (`guid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `character_queststatus_seasonal`
+--
+
+LOCK TABLES `character_queststatus_seasonal` WRITE;
+/*!40000 ALTER TABLE `character_queststatus_seasonal` DISABLE KEYS */;
+/*!40000 ALTER TABLE `character_queststatus_seasonal` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
-- Table structure for table `character_queststatus_weekly`
--
@@ -2198,5 +2223,3 @@ UNLOCK TABLES;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2011-04-04 21:03:41
diff --git a/sql/updates/world/2011_11_24_00_world_version.sql b/sql/old/3.3.5a/2011_11_24_00_world_version.sql
index ad2396f29e1..ad2396f29e1 100644
--- a/sql/updates/world/2011_11_24_00_world_version.sql
+++ b/sql/old/3.3.5a/2011_11_24_00_world_version.sql
diff --git a/sql/updates/world/2011_11_25_00_world_quest_template.sql b/sql/old/3.3.5a/2011_11_25_00_world_quest_template.sql
index eee92a3761b..eee92a3761b 100644
--- a/sql/updates/world/2011_11_25_00_world_quest_template.sql
+++ b/sql/old/3.3.5a/2011_11_25_00_world_quest_template.sql
diff --git a/sql/updates/world/2011_11_25_01_world_quest_template.sql b/sql/old/3.3.5a/2011_11_25_01_world_quest_template.sql
index f7e4555f093..f7e4555f093 100644
--- a/sql/updates/world/2011_11_25_01_world_quest_template.sql
+++ b/sql/old/3.3.5a/2011_11_25_01_world_quest_template.sql
diff --git a/sql/updates/world/2011_11_25_02_world_creature.sql b/sql/old/3.3.5a/2011_11_25_02_world_creature.sql
index 0b26187f196..0b26187f196 100644
--- a/sql/updates/world/2011_11_25_02_world_creature.sql
+++ b/sql/old/3.3.5a/2011_11_25_02_world_creature.sql
diff --git a/sql/updates/world/2011_11_26_00_world_quest_template.sql b/sql/old/3.3.5a/2011_11_26_00_world_quest_template.sql
index 6a7834e0a76..6a7834e0a76 100644
--- a/sql/updates/world/2011_11_26_00_world_quest_template.sql
+++ b/sql/old/3.3.5a/2011_11_26_00_world_quest_template.sql
diff --git a/sql/updates/world/2011_11_26_01_world_quest_template.sql b/sql/old/3.3.5a/2011_11_26_01_world_quest_template.sql
index 5b08d57860b..5b08d57860b 100644
--- a/sql/updates/world/2011_11_26_01_world_quest_template.sql
+++ b/sql/old/3.3.5a/2011_11_26_01_world_quest_template.sql
diff --git a/sql/updates/world/2011_11_26_02_world_spell_group.sql b/sql/old/3.3.5a/2011_11_26_02_world_spell_group.sql
index 71ad2eaf9fb..71ad2eaf9fb 100644
--- a/sql/updates/world/2011_11_26_02_world_spell_group.sql
+++ b/sql/old/3.3.5a/2011_11_26_02_world_spell_group.sql
diff --git a/sql/updates/world/2011_11_26_03_world_spell_proc_event.sql b/sql/old/3.3.5a/2011_11_26_03_world_spell_proc_event.sql
index 36837be8ab6..36837be8ab6 100644
--- a/sql/updates/world/2011_11_26_03_world_spell_proc_event.sql
+++ b/sql/old/3.3.5a/2011_11_26_03_world_spell_proc_event.sql
diff --git a/sql/updates/world/2011_11_26_04_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_11_26_04_world_achievement_criteria_data.sql
index b037bf58349..b037bf58349 100644
--- a/sql/updates/world/2011_11_26_04_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2011_11_26_04_world_achievement_criteria_data.sql
diff --git a/sql/updates/world/2011_11_26_04_world_disables.sql b/sql/old/3.3.5a/2011_11_26_04_world_disables.sql
index 4722f248656..4722f248656 100644
--- a/sql/updates/world/2011_11_26_04_world_disables.sql
+++ b/sql/old/3.3.5a/2011_11_26_04_world_disables.sql
diff --git a/sql/updates/world/2011_11_26_05_world_ulduar_gameobject.sql b/sql/old/3.3.5a/2011_11_26_05_world_ulduar_gameobject.sql
index 60ba0aefbeb..60ba0aefbeb 100644
--- a/sql/updates/world/2011_11_26_05_world_ulduar_gameobject.sql
+++ b/sql/old/3.3.5a/2011_11_26_05_world_ulduar_gameobject.sql
diff --git a/sql/updates/world/2011_11_26_06_world_sai.sql b/sql/old/3.3.5a/2011_11_26_06_world_sai.sql
index 9396222e8be..9396222e8be 100644
--- a/sql/updates/world/2011_11_26_06_world_sai.sql
+++ b/sql/old/3.3.5a/2011_11_26_06_world_sai.sql
diff --git a/sql/updates/world/2011_11_27_00_world_creature_template.sql b/sql/old/3.3.5a/2011_11_27_00_world_creature_template.sql
index f29586ea142..f29586ea142 100644
--- a/sql/updates/world/2011_11_27_00_world_creature_template.sql
+++ b/sql/old/3.3.5a/2011_11_27_00_world_creature_template.sql
diff --git a/sql/updates/world/2011_11_27_00_world_spell_script.sql b/sql/old/3.3.5a/2011_11_27_00_world_spell_script.sql
index 5411d660c2b..5411d660c2b 100644
--- a/sql/updates/world/2011_11_27_00_world_spell_script.sql
+++ b/sql/old/3.3.5a/2011_11_27_00_world_spell_script.sql
diff --git a/sql/updates/world/2011_11_28_00_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_11_28_00_world_achievement_criteria_data.sql
index 9fea807a97c..9fea807a97c 100644
--- a/sql/updates/world/2011_11_28_00_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2011_11_28_00_world_achievement_criteria_data.sql
diff --git a/sql/updates/world/2011_11_29_00_world_spell_script.sql b/sql/old/3.3.5a/2011_11_29_00_world_spell_script.sql
index ff87ebff788..ff87ebff788 100644
--- a/sql/updates/world/2011_11_29_00_world_spell_script.sql
+++ b/sql/old/3.3.5a/2011_11_29_00_world_spell_script.sql
diff --git a/sql/updates/world/2011_12_03_00_world_gameobject.sql b/sql/old/3.3.5a/2011_12_03_00_world_gameobject.sql
index 5707ee28d12..5707ee28d12 100644
--- a/sql/updates/world/2011_12_03_00_world_gameobject.sql
+++ b/sql/old/3.3.5a/2011_12_03_00_world_gameobject.sql
diff --git a/sql/updates/world/2011_12_08_00_world_gossip.sql b/sql/old/3.3.5a/2011_12_08_00_world_gossip.sql
index f6195d9d66e..f6195d9d66e 100644
--- a/sql/updates/world/2011_12_08_00_world_gossip.sql
+++ b/sql/old/3.3.5a/2011_12_08_00_world_gossip.sql
diff --git a/sql/updates/world/2011_12_08_00_world_player_factionchange_achievement.sql b/sql/old/3.3.5a/2011_12_08_00_world_player_factionchange_achievement.sql
index 7a19fa2cad0..7a19fa2cad0 100644
--- a/sql/updates/world/2011_12_08_00_world_player_factionchange_achievement.sql
+++ b/sql/old/3.3.5a/2011_12_08_00_world_player_factionchange_achievement.sql
diff --git a/sql/updates/world/2011_12_08_01_world_creature_template_addon.sql b/sql/old/3.3.5a/2011_12_08_01_world_creature_template_addon.sql
index e8a464146e0..e8a464146e0 100644
--- a/sql/updates/world/2011_12_08_01_world_creature_template_addon.sql
+++ b/sql/old/3.3.5a/2011_12_08_01_world_creature_template_addon.sql
diff --git a/sql/updates/world/2011_12_10_00_world_spell_proc_event.sql b/sql/old/3.3.5a/2011_12_10_00_world_spell_proc_event.sql
index 957a2e76b70..957a2e76b70 100644
--- a/sql/updates/world/2011_12_10_00_world_spell_proc_event.sql
+++ b/sql/old/3.3.5a/2011_12_10_00_world_spell_proc_event.sql
diff --git a/sql/updates/world/2011_12_10_01_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_12_10_01_world_achievement_criteria_data.sql
index 70e4a4fc544..70e4a4fc544 100644
--- a/sql/updates/world/2011_12_10_01_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2011_12_10_01_world_achievement_criteria_data.sql
diff --git a/sql/updates/world/2011_12_12_00_world_spell_bonus_data.sql b/sql/old/3.3.5a/2011_12_12_00_world_spell_bonus_data.sql
index cb728e70dd9..cb728e70dd9 100644
--- a/sql/updates/world/2011_12_12_00_world_spell_bonus_data.sql
+++ b/sql/old/3.3.5a/2011_12_12_00_world_spell_bonus_data.sql
diff --git a/sql/updates/world/2011_12_13_00_world_misc.sql b/sql/old/3.3.5a/2011_12_13_00_world_misc.sql
index 13958e75761..13958e75761 100644
--- a/sql/updates/world/2011_12_13_00_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_13_00_world_misc.sql
diff --git a/sql/updates/world/2011_12_13_01_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_12_13_01_world_achievement_criteria_data.sql
index 89bbfc7126d..89bbfc7126d 100644
--- a/sql/updates/world/2011_12_13_01_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2011_12_13_01_world_achievement_criteria_data.sql
diff --git a/sql/updates/world/2011_12_13_02_world_creature_template_addon.sql b/sql/old/3.3.5a/2011_12_13_02_world_creature_template_addon.sql
index f1dc473bdd7..f1dc473bdd7 100644
--- a/sql/updates/world/2011_12_13_02_world_creature_template_addon.sql
+++ b/sql/old/3.3.5a/2011_12_13_02_world_creature_template_addon.sql
diff --git a/sql/updates/world/2011_12_14_00_world_command.sql b/sql/old/3.3.5a/2011_12_14_00_world_command.sql
index e871a82d89d..e871a82d89d 100644
--- a/sql/updates/world/2011_12_14_00_world_command.sql
+++ b/sql/old/3.3.5a/2011_12_14_00_world_command.sql
diff --git a/sql/updates/world/2011_12_14_01_world_gameobject_template.sql b/sql/old/3.3.5a/2011_12_14_01_world_gameobject_template.sql
index 52c04703acc..52c04703acc 100644
--- a/sql/updates/world/2011_12_14_01_world_gameobject_template.sql
+++ b/sql/old/3.3.5a/2011_12_14_01_world_gameobject_template.sql
diff --git a/sql/updates/world/2011_12_16_00_world_creature_template.sql b/sql/old/3.3.5a/2011_12_16_00_world_creature_template.sql
index 3ff9d630c54..3ff9d630c54 100644
--- a/sql/updates/world/2011_12_16_00_world_creature_template.sql
+++ b/sql/old/3.3.5a/2011_12_16_00_world_creature_template.sql
diff --git a/sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql b/sql/old/3.3.5a/2011_12_16_00_world_spell_bonus_data.sql
index 5864b9ac042..5864b9ac042 100644
--- a/sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql
+++ b/sql/old/3.3.5a/2011_12_16_00_world_spell_bonus_data.sql
diff --git a/sql/updates/world/2011_12_17_00_world_creature.sql b/sql/old/3.3.5a/2011_12_17_00_world_creature.sql
index 0126561da01..0126561da01 100644
--- a/sql/updates/world/2011_12_17_00_world_creature.sql
+++ b/sql/old/3.3.5a/2011_12_17_00_world_creature.sql
diff --git a/sql/updates/world/2011_12_17_00_world_gameobject.sql b/sql/old/3.3.5a/2011_12_17_00_world_gameobject.sql
index 98752a1b7ec..98752a1b7ec 100644
--- a/sql/updates/world/2011_12_17_00_world_gameobject.sql
+++ b/sql/old/3.3.5a/2011_12_17_00_world_gameobject.sql
diff --git a/sql/updates/world/2011_12_18_00_world_creature_addon.sql b/sql/old/3.3.5a/2011_12_18_00_world_creature_addon.sql
index 5df7f000b06..5df7f000b06 100644
--- a/sql/updates/world/2011_12_18_00_world_creature_addon.sql
+++ b/sql/old/3.3.5a/2011_12_18_00_world_creature_addon.sql
diff --git a/sql/updates/world/2011_12_18_01_world_gossip.sql b/sql/old/3.3.5a/2011_12_18_01_world_gossip.sql
index eb76ffe4009..eb76ffe4009 100644
--- a/sql/updates/world/2011_12_18_01_world_gossip.sql
+++ b/sql/old/3.3.5a/2011_12_18_01_world_gossip.sql
diff --git a/sql/updates/world/2011_12_18_02_world_spell_script_names.sql b/sql/old/3.3.5a/2011_12_18_02_world_spell_script_names.sql
index c5f9a4376df..c5f9a4376df 100644
--- a/sql/updates/world/2011_12_18_02_world_spell_script_names.sql
+++ b/sql/old/3.3.5a/2011_12_18_02_world_spell_script_names.sql
diff --git a/sql/updates/world/2011_12_18_03_world_trinity_string.sql b/sql/old/3.3.5a/2011_12_18_03_world_trinity_string.sql
index d26cc356cff..d26cc356cff 100644
--- a/sql/updates/world/2011_12_18_03_world_trinity_string.sql
+++ b/sql/old/3.3.5a/2011_12_18_03_world_trinity_string.sql
diff --git a/sql/updates/world/2011_12_18_04_world_misc.sql b/sql/old/3.3.5a/2011_12_18_04_world_misc.sql
index 3404e4f285f..3404e4f285f 100644
--- a/sql/updates/world/2011_12_18_04_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_18_04_world_misc.sql
diff --git a/sql/updates/world/2011_12_18_05_world_misc.sql b/sql/old/3.3.5a/2011_12_18_05_world_misc.sql
index b8435c4211e..b8435c4211e 100644
--- a/sql/updates/world/2011_12_18_05_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_18_05_world_misc.sql
diff --git a/sql/updates/world/2011_12_18_06_world_sai.sql b/sql/old/3.3.5a/2011_12_18_06_world_sai.sql
index 2fce176cd0f..2fce176cd0f 100644
--- a/sql/updates/world/2011_12_18_06_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_18_06_world_sai.sql
diff --git a/sql/updates/world/2011_12_18_07_world_conditions.sql b/sql/old/3.3.5a/2011_12_18_07_world_conditions.sql
index ef669dd2dbb..ef669dd2dbb 100644
--- a/sql/updates/world/2011_12_18_07_world_conditions.sql
+++ b/sql/old/3.3.5a/2011_12_18_07_world_conditions.sql
diff --git a/sql/updates/world/2011_12_19_00_world_conditions.sql b/sql/old/3.3.5a/2011_12_19_00_world_conditions.sql
index a56151a9f8f..a56151a9f8f 100644
--- a/sql/updates/world/2011_12_19_00_world_conditions.sql
+++ b/sql/old/3.3.5a/2011_12_19_00_world_conditions.sql
diff --git a/sql/updates/world/2011_12_19_01_world_quest_template.sql b/sql/old/3.3.5a/2011_12_19_01_world_quest_template.sql
index c04fdddfe97..c04fdddfe97 100644
--- a/sql/updates/world/2011_12_19_01_world_quest_template.sql
+++ b/sql/old/3.3.5a/2011_12_19_01_world_quest_template.sql
diff --git a/sql/updates/world/2011_12_19_02_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2011_12_19_02_world_achievement_criteria_data.sql
index af7b0a9361b..af7b0a9361b 100644
--- a/sql/updates/world/2011_12_19_02_world_achievement_criteria_data.sql
+++ b/sql/old/3.3.5a/2011_12_19_02_world_achievement_criteria_data.sql
diff --git a/sql/updates/world/2011_12_24_00_world_misc.sql b/sql/old/3.3.5a/2011_12_24_00_world_misc.sql
index 5e070d0771e..5e070d0771e 100644
--- a/sql/updates/world/2011_12_24_00_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_24_00_world_misc.sql
diff --git a/sql/updates/world/2011_12_24_00_world_spell_proc_event.sql b/sql/old/3.3.5a/2011_12_24_00_world_spell_proc_event.sql
index f25fa4c4856..f25fa4c4856 100644
--- a/sql/updates/world/2011_12_24_00_world_spell_proc_event.sql
+++ b/sql/old/3.3.5a/2011_12_24_00_world_spell_proc_event.sql
diff --git a/sql/updates/world/2011_12_24_01_world_mail_loot_template.sql b/sql/old/3.3.5a/2011_12_24_01_world_mail_loot_template.sql
index 2fc05e9cf17..2fc05e9cf17 100644
--- a/sql/updates/world/2011_12_24_01_world_mail_loot_template.sql
+++ b/sql/old/3.3.5a/2011_12_24_01_world_mail_loot_template.sql
diff --git a/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql b/sql/old/3.3.5a/2011_12_25_00_world_areatrigger_scriptnames.sql
index 2a16394c7fe..2a16394c7fe 100644
--- a/sql/updates/world/2011_12_25_00_world_areatrigger_scriptnames.sql
+++ b/sql/old/3.3.5a/2011_12_25_00_world_areatrigger_scriptnames.sql
diff --git a/sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql b/sql/old/3.3.5a/2011_12_25_00_world_gameobject_scriptnames.sql
index c545550e129..c545550e129 100644
--- a/sql/updates/world/2011_12_25_00_world_gameobject_scriptnames.sql
+++ b/sql/old/3.3.5a/2011_12_25_00_world_gameobject_scriptnames.sql
diff --git a/sql/updates/world/2011_12_25_00_world_misc.sql b/sql/old/3.3.5a/2011_12_25_00_world_misc.sql
index 8f1d3c44ceb..8f1d3c44ceb 100644
--- a/sql/updates/world/2011_12_25_00_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_25_00_world_misc.sql
diff --git a/sql/updates/world/2011_12_25_00_world_sai.sql b/sql/old/3.3.5a/2011_12_25_00_world_sai.sql
index d0f1572d708..d0f1572d708 100644
--- a/sql/updates/world/2011_12_25_00_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_25_00_world_sai.sql
diff --git a/sql/updates/world/2011_12_25_00_world_spell_script_names.sql b/sql/old/3.3.5a/2011_12_25_00_world_spell_script_names.sql
index dc42056f84c..dc42056f84c 100644
--- a/sql/updates/world/2011_12_25_00_world_spell_script_names.sql
+++ b/sql/old/3.3.5a/2011_12_25_00_world_spell_script_names.sql
diff --git a/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql b/sql/old/3.3.5a/2011_12_25_01_world_areatrigger_scriptnames.sql
index ebed9976f44..ebed9976f44 100644
--- a/sql/updates/world/2011_12_25_01_world_areatrigger_scriptnames.sql
+++ b/sql/old/3.3.5a/2011_12_25_01_world_areatrigger_scriptnames.sql
diff --git a/sql/updates/world/2011_12_25_01_world_misc.sql b/sql/old/3.3.5a/2011_12_25_01_world_misc.sql
index 9e4d7e6c058..9e4d7e6c058 100644
--- a/sql/updates/world/2011_12_25_01_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_25_01_world_misc.sql
diff --git a/sql/updates/world/2011_12_25_01_world_sai.sql b/sql/old/3.3.5a/2011_12_25_01_world_sai.sql
index 8ae439ffe67..8ae439ffe67 100644
--- a/sql/updates/world/2011_12_25_01_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_25_01_world_sai.sql
diff --git a/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql b/sql/old/3.3.5a/2011_12_25_02_world_areatrigger_scriptnames.sql
index 78a1fbc98c9..78a1fbc98c9 100644
--- a/sql/updates/world/2011_12_25_02_world_areatrigger_scriptnames.sql
+++ b/sql/old/3.3.5a/2011_12_25_02_world_areatrigger_scriptnames.sql
diff --git a/sql/updates/world/2011_12_25_02_world_misc.sql b/sql/old/3.3.5a/2011_12_25_02_world_misc.sql
index ee2fd9c1964..ee2fd9c1964 100644
--- a/sql/updates/world/2011_12_25_02_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_25_02_world_misc.sql
diff --git a/sql/updates/world/2011_12_25_02_world_sai.sql b/sql/old/3.3.5a/2011_12_25_02_world_sai.sql
index f0d69b04964..f0d69b04964 100644
--- a/sql/updates/world/2011_12_25_02_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_25_02_world_sai.sql
diff --git a/sql/updates/world/2011_12_25_03_world_misc.sql b/sql/old/3.3.5a/2011_12_25_03_world_misc.sql
index a8967354a3d..a8967354a3d 100644
--- a/sql/updates/world/2011_12_25_03_world_misc.sql
+++ b/sql/old/3.3.5a/2011_12_25_03_world_misc.sql
diff --git a/sql/updates/world/2011_12_25_03_world_sai.sql b/sql/old/3.3.5a/2011_12_25_03_world_sai.sql
index e53c9f72e38..e53c9f72e38 100644
--- a/sql/updates/world/2011_12_25_03_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_25_03_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_00_world_sai.sql b/sql/old/3.3.5a/2011_12_26_00_world_sai.sql
index 616ced60147..616ced60147 100644
--- a/sql/updates/world/2011_12_26_00_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_00_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_01_world_sai.sql b/sql/old/3.3.5a/2011_12_26_01_world_sai.sql
index 50283820dc8..50283820dc8 100644
--- a/sql/updates/world/2011_12_26_01_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_01_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_02_world_sai.sql b/sql/old/3.3.5a/2011_12_26_02_world_sai.sql
index 6da23e21875..6da23e21875 100644
--- a/sql/updates/world/2011_12_26_02_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_02_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_03_world_sai.sql b/sql/old/3.3.5a/2011_12_26_03_world_sai.sql
index 07333e50a91..07333e50a91 100644
--- a/sql/updates/world/2011_12_26_03_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_03_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_04_world_sai.sql b/sql/old/3.3.5a/2011_12_26_04_world_sai.sql
index c508773c51a..c508773c51a 100644
--- a/sql/updates/world/2011_12_26_04_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_04_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_05_world_sai.sql b/sql/old/3.3.5a/2011_12_26_05_world_sai.sql
index 0155c3ad39b..0155c3ad39b 100644
--- a/sql/updates/world/2011_12_26_05_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_05_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_06_world_sai.sql b/sql/old/3.3.5a/2011_12_26_06_world_sai.sql
index 6335bd9f475..6335bd9f475 100644
--- a/sql/updates/world/2011_12_26_06_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_06_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_07_world_sai.sql b/sql/old/3.3.5a/2011_12_26_07_world_sai.sql
index ffe55b0e5f9..ffe55b0e5f9 100644
--- a/sql/updates/world/2011_12_26_07_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_07_world_sai.sql
diff --git a/sql/updates/world/2011_12_26_08_world_sai.sql b/sql/old/3.3.5a/2011_12_26_08_world_sai.sql
index 6633e97f2b4..6633e97f2b4 100644
--- a/sql/updates/world/2011_12_26_08_world_sai.sql
+++ b/sql/old/3.3.5a/2011_12_26_08_world_sai.sql
diff --git a/sql/updates/world/2012_01_02_00_world_sai.sql b/sql/old/3.3.5a/2012_01_02_00_world_sai.sql
index 3b9abd4c746..3b9abd4c746 100644
--- a/sql/updates/world/2012_01_02_00_world_sai.sql
+++ b/sql/old/3.3.5a/2012_01_02_00_world_sai.sql
diff --git a/sql/updates/world/2012_01_02_01_world_game_event.sql b/sql/old/3.3.5a/2012_01_02_01_world_game_event.sql
index 11267a6b296..11267a6b296 100644
--- a/sql/updates/world/2012_01_02_01_world_game_event.sql
+++ b/sql/old/3.3.5a/2012_01_02_01_world_game_event.sql
diff --git a/sql/updates/world/2012_01_02_02_world_creature_template.sql b/sql/old/3.3.5a/2012_01_02_02_world_creature_template.sql
index ed95c4450fd..ed95c4450fd 100644
--- a/sql/updates/world/2012_01_02_02_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_02_02_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql b/sql/old/3.3.5a/2012_01_02_03_world_creature_onkill_reputation.sql
index 282fc58dd3b..282fc58dd3b 100644
--- a/sql/updates/world/2012_01_02_03_world_creature_onkill_reputation.sql
+++ b/sql/old/3.3.5a/2012_01_02_03_world_creature_onkill_reputation.sql
diff --git a/sql/updates/world/2012_01_03_00_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_03_00_world_gossip_menu.sql
index 9e9bba43b1a..9e9bba43b1a 100644
--- a/sql/updates/world/2012_01_03_00_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_03_00_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_03_01_world_quest_template.sql b/sql/old/3.3.5a/2012_01_03_01_world_quest_template.sql
index f35ea3be65b..f35ea3be65b 100644
--- a/sql/updates/world/2012_01_03_01_world_quest_template.sql
+++ b/sql/old/3.3.5a/2012_01_03_01_world_quest_template.sql
diff --git a/sql/updates/world/2012_01_03_02_world_sai.sql b/sql/old/3.3.5a/2012_01_03_02_world_sai.sql
index 61ae8aab575..61ae8aab575 100644
--- a/sql/updates/world/2012_01_03_02_world_sai.sql
+++ b/sql/old/3.3.5a/2012_01_03_02_world_sai.sql
diff --git a/sql/updates/world/2012_01_03_03_world_creature_template.sql b/sql/old/3.3.5a/2012_01_03_03_world_creature_template.sql
index 29d0e802abe..29d0e802abe 100644
--- a/sql/updates/world/2012_01_03_03_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_03_03_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql b/sql/old/3.3.5a/2012_01_03_04_world_gameobject_questrelation.sql
index 519fa99e2d5..519fa99e2d5 100644
--- a/sql/updates/world/2012_01_03_04_world_gameobject_questrelation.sql
+++ b/sql/old/3.3.5a/2012_01_03_04_world_gameobject_questrelation.sql
diff --git a/sql/updates/world/2012_01_03_05_world_creature.sql b/sql/old/3.3.5a/2012_01_03_05_world_creature.sql
index b30ca2d5ef4..b30ca2d5ef4 100644
--- a/sql/updates/world/2012_01_03_05_world_creature.sql
+++ b/sql/old/3.3.5a/2012_01_03_05_world_creature.sql
diff --git a/sql/updates/world/2012_01_03_06_world_sai.sql b/sql/old/3.3.5a/2012_01_03_06_world_sai.sql
index 858dc3f498d..858dc3f498d 100644
--- a/sql/updates/world/2012_01_03_06_world_sai.sql
+++ b/sql/old/3.3.5a/2012_01_03_06_world_sai.sql
diff --git a/sql/updates/world/2012_01_03_07_world_creature.sql b/sql/old/3.3.5a/2012_01_03_07_world_creature.sql
index 5098901b564..5098901b564 100644
--- a/sql/updates/world/2012_01_03_07_world_creature.sql
+++ b/sql/old/3.3.5a/2012_01_03_07_world_creature.sql
diff --git a/sql/updates/characters/2012_01_04_00_characters_character_queststatus_seasonal.sql b/sql/old/3.3.5a/2012_01_04_00_characters_character_queststatus_seasonal.sql
index f9ae71b65a7..f9ae71b65a7 100644
--- a/sql/updates/characters/2012_01_04_00_characters_character_queststatus_seasonal.sql
+++ b/sql/old/3.3.5a/2012_01_04_00_characters_character_queststatus_seasonal.sql
diff --git a/sql/updates/world/2012_01_04_00_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_00_world_gossip_menu.sql
index cf11ba74eb2..cf11ba74eb2 100644
--- a/sql/updates/world/2012_01_04_00_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_00_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_01_world_game_event_seasonal_questrelation.sql b/sql/old/3.3.5a/2012_01_04_01_world_game_event_seasonal_questrelation.sql
index 9746a358e8a..9746a358e8a 100644
--- a/sql/updates/world/2012_01_04_01_world_game_event_seasonal_questrelation.sql
+++ b/sql/old/3.3.5a/2012_01_04_01_world_game_event_seasonal_questrelation.sql
diff --git a/sql/updates/world/2012_01_04_02_world_achievements.sql b/sql/old/3.3.5a/2012_01_04_02_world_achievements.sql
index cbd5efa3cd6..cbd5efa3cd6 100644
--- a/sql/updates/world/2012_01_04_02_world_achievements.sql
+++ b/sql/old/3.3.5a/2012_01_04_02_world_achievements.sql
diff --git a/sql/updates/world/2012_01_04_02_world_sai.sql b/sql/old/3.3.5a/2012_01_04_02_world_sai.sql
index fb59ba8b4e8..70cb3fc9a04 100644
--- a/sql/updates/world/2012_01_04_02_world_sai.sql
+++ b/sql/old/3.3.5a/2012_01_04_02_world_sai.sql
@@ -141,8 +141,8 @@ INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type
SET @ENTRY := @NPC_WILDSPAWN_HELLCALLER;
DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
-UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `id`=@ENTRY
-;DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+UPDATE creature SET `MovementType`=1,`spawndist`=3 WHERE `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,4,0,100,0,0,0,0,0,21,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Prevent Combat Movement'),
(@ENTRY,0,1,2,4,0,100,0,0,0,0,0,11,15228,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Cast Fireball '),(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller - On Aggro - Set Phase 1'),(@ENTRY,0,3,0,9,1,100,0,0,40,2400,3800,11,15228,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Hellcaller - Phase 1 - Cast Fireball'),
(@ENTRY,0,4,5,3,1,100,0,0,15,0,0,21,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Hellcaller -In Phase 1 - Start Combat Movement'),
@@ -174,4 +174,4 @@ INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type
(@ENTRY,0,10,0,3,2,100,0,0,30,100,100,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - Mana is above 30% (Phase 2) - Set Phase 1'),
(@ENTRY,0,11,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'Wildspawn Felsworn - Set Phase 1 when Mana is above 30% (Phase 2)'),
(@ENTRY,0,12,0,0,0,100,0,7000,12000,38000,45000,11,22417,1,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Phase 1 - Cast Shadow Shield'),(@ENTRY,0,13,0,0,1,100,0,11000,17000,23000,30000,11,15654,0,0,0,0,0,2,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Phase 1 - Cast Shadow Word: Pain'),(@ENTRY,0,14,0,0,0,100,0,6000,10000,10000,15000,11,12542,1,0,0,0,0,5,0,0,0,0,0,0,0,'Wildspawn Felsworn - In Combat - Cast Fear (on random target)'),
-(@ENTRY,0,15,0,7,0,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Evade - Set Phase to 0'); \ No newline at end of file
+(@ENTRY,0,15,0,7,0,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Wildspawn Felsworn - On Evade - Set Phase to 0');
diff --git a/sql/updates/world/2012_01_04_03_world_spell_script_names.sql b/sql/old/3.3.5a/2012_01_04_03_world_spell_script_names.sql
index f8ae3db6ad3..f8ae3db6ad3 100644
--- a/sql/updates/world/2012_01_04_03_world_spell_script_names.sql
+++ b/sql/old/3.3.5a/2012_01_04_03_world_spell_script_names.sql
diff --git a/sql/updates/world/2012_01_04_04_world_creature.sql b/sql/old/3.3.5a/2012_01_04_04_world_creature.sql
index 58970cd03c7..58970cd03c7 100644
--- a/sql/updates/world/2012_01_04_04_world_creature.sql
+++ b/sql/old/3.3.5a/2012_01_04_04_world_creature.sql
diff --git a/sql/updates/world/2012_01_04_04_world_creature_template.sql b/sql/old/3.3.5a/2012_01_04_04_world_creature_template.sql
index 6131c439fdb..6131c439fdb 100644
--- a/sql/updates/world/2012_01_04_04_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_04_04_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_04_05_world_waypoint_data.sql b/sql/old/3.3.5a/2012_01_04_05_world_waypoint_data.sql
index 2ad787b36ca..2ad787b36ca 100644
--- a/sql/updates/world/2012_01_04_05_world_waypoint_data.sql
+++ b/sql/old/3.3.5a/2012_01_04_05_world_waypoint_data.sql
diff --git a/sql/updates/world/2012_01_04_06_world_waypoint_data.sql b/sql/old/3.3.5a/2012_01_04_06_world_waypoint_data.sql
index c4cefc87c63..c4cefc87c63 100644
--- a/sql/updates/world/2012_01_04_06_world_waypoint_data.sql
+++ b/sql/old/3.3.5a/2012_01_04_06_world_waypoint_data.sql
diff --git a/sql/updates/world/2012_01_04_07_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_07_world_gossip_menu.sql
index 9e9bba43b1a..9e9bba43b1a 100644
--- a/sql/updates/world/2012_01_04_07_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_07_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_08_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_08_world_gossip_menu.sql
index 826ca19e99f..826ca19e99f 100644
--- a/sql/updates/world/2012_01_04_08_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_08_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_09_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_09_world_gossip_menu.sql
index b95eb723d03..b95eb723d03 100644
--- a/sql/updates/world/2012_01_04_09_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_09_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_10_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_10_world_gossip_menu.sql
index b41f74e8050..b41f74e8050 100644
--- a/sql/updates/world/2012_01_04_10_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_10_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_11_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_11_world_gossip_menu.sql
index 4356f9c7a0a..4356f9c7a0a 100644
--- a/sql/updates/world/2012_01_04_11_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_11_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_12_world_gosip_menu.sql b/sql/old/3.3.5a/2012_01_04_12_world_gosip_menu.sql
index a57dc7bcdba..a57dc7bcdba 100644
--- a/sql/updates/world/2012_01_04_12_world_gosip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_12_world_gosip_menu.sql
diff --git a/sql/updates/world/2012_01_04_13_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_13_world_gossip_menu.sql
index 5a102db3f08..5a102db3f08 100644
--- a/sql/updates/world/2012_01_04_13_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_13_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_14_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_14_world_gossip_menu.sql
index be28d634899..be28d634899 100644
--- a/sql/updates/world/2012_01_04_14_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_14_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_04_15_world_gossip_menu.sql b/sql/old/3.3.5a/2012_01_04_15_world_gossip_menu.sql
index 38d449640f2..38d449640f2 100644
--- a/sql/updates/world/2012_01_04_15_world_gossip_menu.sql
+++ b/sql/old/3.3.5a/2012_01_04_15_world_gossip_menu.sql
diff --git a/sql/updates/world/2012_01_05_00_world_script_texts.sql b/sql/old/3.3.5a/2012_01_05_00_world_script_texts.sql
index 2fcaaf83e49..2fcaaf83e49 100644
--- a/sql/updates/world/2012_01_05_00_world_script_texts.sql
+++ b/sql/old/3.3.5a/2012_01_05_00_world_script_texts.sql
diff --git a/sql/updates/world/2012_01_05_01_world_gameobject.sql b/sql/old/3.3.5a/2012_01_05_01_world_gameobject.sql
index 15b2f5dc408..15b2f5dc408 100644
--- a/sql/updates/world/2012_01_05_01_world_gameobject.sql
+++ b/sql/old/3.3.5a/2012_01_05_01_world_gameobject.sql
diff --git a/sql/updates/world/2012_01_05_02_world_gameobject_template.sql b/sql/old/3.3.5a/2012_01_05_02_world_gameobject_template.sql
index 022c82d539d..022c82d539d 100644
--- a/sql/updates/world/2012_01_05_02_world_gameobject_template.sql
+++ b/sql/old/3.3.5a/2012_01_05_02_world_gameobject_template.sql
diff --git a/sql/updates/world/2012_01_05_03_world_creature_model_info.sql b/sql/old/3.3.5a/2012_01_05_03_world_creature_model_info.sql
index 8da923db96b..8da923db96b 100644
--- a/sql/updates/world/2012_01_05_03_world_creature_model_info.sql
+++ b/sql/old/3.3.5a/2012_01_05_03_world_creature_model_info.sql
diff --git a/sql/updates/world/2012_01_05_04_world_gameobject.sql b/sql/old/3.3.5a/2012_01_05_04_world_gameobject.sql
index 4090eb0c123..4090eb0c123 100644
--- a/sql/updates/world/2012_01_05_04_world_gameobject.sql
+++ b/sql/old/3.3.5a/2012_01_05_04_world_gameobject.sql
diff --git a/sql/updates/world/2012_01_05_05_world_creature.sql b/sql/old/3.3.5a/2012_01_05_05_world_creature.sql
index b902db64ee6..b902db64ee6 100644
--- a/sql/updates/world/2012_01_05_05_world_creature.sql
+++ b/sql/old/3.3.5a/2012_01_05_05_world_creature.sql
diff --git a/sql/updates/world/2012_01_05_06_world_spell_script_names.sql b/sql/old/3.3.5a/2012_01_05_06_world_spell_script_names.sql
index 1a22c2916bb..1a22c2916bb 100644
--- a/sql/updates/world/2012_01_05_06_world_spell_script_names.sql
+++ b/sql/old/3.3.5a/2012_01_05_06_world_spell_script_names.sql
diff --git a/sql/updates/world/2012_01_05_07_world_creature_template.sql b/sql/old/3.3.5a/2012_01_05_07_world_creature_template.sql
index b3f0c8aeec6..b3f0c8aeec6 100644
--- a/sql/updates/world/2012_01_05_07_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_05_07_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_05_08_world_creature_template.sql b/sql/old/3.3.5a/2012_01_05_08_world_creature_template.sql
index e62617c0914..e62617c0914 100644
--- a/sql/updates/world/2012_01_05_08_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_05_08_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_05_09_world_waypoint_data.sql b/sql/old/3.3.5a/2012_01_05_09_world_waypoint_data.sql
index 6299472a263..6299472a263 100644
--- a/sql/updates/world/2012_01_05_09_world_waypoint_data.sql
+++ b/sql/old/3.3.5a/2012_01_05_09_world_waypoint_data.sql
diff --git a/sql/updates/world/2012_01_05_10_world_creature_template.sql b/sql/old/3.3.5a/2012_01_05_10_world_creature_template.sql
index a3d8d2432b5..a3d8d2432b5 100644
--- a/sql/updates/world/2012_01_05_10_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_05_10_world_creature_template.sql
diff --git a/sql/updates/world/2012_01_05_11_world_creature_onkill_reputation.sql b/sql/old/3.3.5a/2012_01_05_11_world_creature_onkill_reputation.sql
index 047c0453608..047c0453608 100644
--- a/sql/updates/world/2012_01_05_11_world_creature_onkill_reputation.sql
+++ b/sql/old/3.3.5a/2012_01_05_11_world_creature_onkill_reputation.sql
diff --git a/sql/updates/world/2012_01_05_12_world_game_event_seasonal_questrelation.sql b/sql/old/3.3.5a/2012_01_05_12_world_game_event_seasonal_questrelation.sql
index ad6013b0edf..ad6013b0edf 100644
--- a/sql/updates/world/2012_01_05_12_world_game_event_seasonal_questrelation.sql
+++ b/sql/old/3.3.5a/2012_01_05_12_world_game_event_seasonal_questrelation.sql
diff --git a/sql/updates/world/2012_01_05_13_world_creature_transport.sql b/sql/old/3.3.5a/2012_01_05_13_world_creature_transport.sql
index 3acb70a4442..3acb70a4442 100644
--- a/sql/updates/world/2012_01_05_13_world_creature_transport.sql
+++ b/sql/old/3.3.5a/2012_01_05_13_world_creature_transport.sql
diff --git a/sql/old/3.3.5a/2012_01_05_14_world_command.sql b/sql/old/3.3.5a/2012_01_05_14_world_command.sql
new file mode 100644
index 00000000000..d890ab5509c
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_05_14_world_command.sql
@@ -0,0 +1 @@
+INSERT INTO `command` (`name`, `security`, `help`) VALUES ('reload wp_data', 3, 'Syntax: .reload wp_data will reload waypoint_data table.');
diff --git a/sql/updates/world/2012_01_05_14_world_creature_template.sql b/sql/old/3.3.5a/2012_01_05_14_world_creature_template.sql
index 331a533812d..331a533812d 100644
--- a/sql/updates/world/2012_01_05_14_world_creature_template.sql
+++ b/sql/old/3.3.5a/2012_01_05_14_world_creature_template.sql
diff --git a/sql/old/3.3.5a/2012_01_06_00_world_creature_template_addon.sql b/sql/old/3.3.5a/2012_01_06_00_world_creature_template_addon.sql
new file mode 100644
index 00000000000..0ebc498ac03
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_00_world_creature_template_addon.sql
@@ -0,0 +1,4 @@
+-- Give Sai'kkal Invisibility aura to Sai'kkal
+DELETE FROM `creature_template_addon` WHERE `entry`=22932;
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(22932,0,0,0,0,'39680');
diff --git a/sql/old/3.3.5a/2012_01_06_00_world_misc.sql b/sql/old/3.3.5a/2012_01_06_00_world_misc.sql
new file mode 100644
index 00000000000..5cc96ef17a8
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_00_world_misc.sql
@@ -0,0 +1,189 @@
+SET @NPC_SIMON_BUNNY := 22923;
+SET @GO_APEXIS_RELIC := 185890;
+SET @GO_APEXIS_MONUMENT := 185944;
+
+SET @SPELL_SIMON_BLUE_VISUAL := 40244;
+SET @SPELL_SIMON_GREEN_VISUAL := 40245;
+SET @SPELL_SIMON_RED_VISUAL := 40246;
+SET @SPELL_SIMON_YELLOW_VISUAL := 40247;
+
+SET @ITEM_APEXIS_SHARD := 32569;
+SET @QUEST_THE_CRYSTALS := 11025;
+SET @QUEST_GUARDIAN_MONUMENT := 11059;
+SET @GOSSIP_MENU_ID_NORMAL := 8703;
+SET @GOSSIP_MENU_ID_LARGE := 8704;
+
+SET @ID_SPELL_GROUP := 1115;
+
+UPDATE `creature_template` SET `ScriptName` = 'npc_simon_bunny',`flags_extra` = 130 WHERE `entry` = @NPC_SIMON_BUNNY;
+UPDATE `gameobject_template` SET `ScriptName` = 'go_apexis_relic' WHERE `entry` IN (@GO_APEXIS_MONUMENT,@GO_APEXIS_RELIC);
+-- Update is done via displayid since there are 28 entries for each color
+UPDATE `gameobject_template` SET `flags` = 16,`ScriptName` = 'go_simon_cluster' WHERE `displayId` IN (7364,7365,7366,7367,7369,7371,7373,7375);
+
+-- Spell stacking rules for Introspection and Apexis reward spells
+DELETE FROM `spell_group` WHERE `spell_id` IN (40055,40165,40166,40167,40623,40625,40626);
+INSERT INTO `spell_group` (`id`,`spell_id`) VALUES
+(@ID_SPELL_GROUP+0,40055),
+(@ID_SPELL_GROUP+0,40165),
+(@ID_SPELL_GROUP+0,40166),
+(@ID_SPELL_GROUP+0,40167),
+(@ID_SPELL_GROUP+1,40623),
+(@ID_SPELL_GROUP+1,40625),
+(@ID_SPELL_GROUP+1,40626);
+
+DELETE FROM `spell_group_stack_rules` WHERE `group_id` IN (@ID_SPELL_GROUP,@ID_SPELL_GROUP+1);
+INSERT INTO `spell_group_stack_rules` (`group_id`,`stack_rule`) VALUES
+(@ID_SPELL_GROUP+0,1),
+(@ID_SPELL_GROUP+1,1);
+--
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` IN (@SPELL_SIMON_BLUE_VISUAL,@SPELL_SIMON_GREEN_VISUAL,@SPELL_SIMON_RED_VISUAL,@SPELL_SIMON_YELLOW_VISUAL);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 15 AND `SourceGroup` IN (@GOSSIP_MENU_ID_NORMAL,@GOSSIP_MENU_ID_LARGE);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+-- Apexis Relic gossip option conditions
+(15,@GOSSIP_MENU_ID_NORMAL,0,0,8,@QUEST_THE_CRYSTALS ,0,0,0,'','Apexis Relic Gossip Condition - Must have completed quest The Crystals'),
+(15,@GOSSIP_MENU_ID_NORMAL,0,0,2,@ITEM_APEXIS_SHARD,1,0,0,'','Apexis Relic Gossip Condition - Must have an Apexis Shard'),
+-- Apexis Monument gossip option conditions
+(15,@GOSSIP_MENU_ID_LARGE,0,0,9,@QUEST_GUARDIAN_MONUMENT ,0,0,0,'','Apexis Monument Gossip Condition - Must be on quest Guardian of the Monument'),
+(15,@GOSSIP_MENU_ID_LARGE,0,0,2,@ITEM_APEXIS_SHARD,35,0,0,'','Apexis Monument Gossip Condition - Must have 35 Apexis Shard'),
+-- Visual color spells should target their correspondant cluster color
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185604,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185609,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185617,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185625,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185637,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185640,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185647,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185649,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185652,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185659,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185660,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185665,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185669,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185673,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185770,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185772,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185776,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185780,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185784,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185791,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185795,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185796,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185807,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185808,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185812,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185816,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185820,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185824,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185828,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185832,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185836,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185840,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185844,0,0,'','Simon Game - Blue visual target Large Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185848,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_BLUE_VISUAL,0,18,0,185853,0,0,'','Simon Game - Blue visual target Blue Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185605,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185611,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185619,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185627,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185639,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185641,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185646,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185651,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185654,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185658,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185661,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185667,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185671,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185675,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185768,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185774,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185777,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185781,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185786,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185789,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185793,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185798,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185805,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185810,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185814,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185818,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185822,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185826,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185830,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185834,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185838,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185842,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185846,0,0,'','Simon Game - Green visual target Large Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185850,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_GREEN_VISUAL,0,18,0,185855,0,0,'','Simon Game - Green visual target Green Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185606,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185613,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185621,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185626,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185638,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185642,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185645,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185650,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185655,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185657,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185662,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185666,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185670,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185674,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185771,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185773,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185778,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185782,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185785,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185788,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185794,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185797,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185804,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185809,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185815,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185817,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185823,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185827,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185831,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185835,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185839,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185843,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185845,0,0,'','Simon Game - Red visual target Large Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185851,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_RED_VISUAL,0,18,0,185854,0,0,'','Simon Game - Red visual target Red Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185607,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185615,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185623,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185624,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185636,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185643,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185644,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185648,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185653,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185656,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185663,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185664,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185668,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185672,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185769,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185775,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185779,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185783,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185787,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185790,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185792,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185803,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185806,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185811,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185813,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185819,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185821,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185825,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185829,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185833,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185837,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185841,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185847,0,0,'','Simon Game - Yellow visual target Large Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185849,0,0,'','Simon Game - Yellow visual target Yellow Cluster'),
+(13,0,@SPELL_SIMON_YELLOW_VISUAL,0,18,0,185852,0,0,'','Simon Game - Yellow visual target Yellow Cluster'); \ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_01_06_01_world_creature_template.sql b/sql/old/3.3.5a/2012_01_06_01_world_creature_template.sql
new file mode 100644
index 00000000000..c089209c16f
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_01_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- spell interrupt is loaded from DBC so can be removed from mechanic_immune_mask
+UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask` &~33554432;
diff --git a/sql/old/3.3.5a/2012_01_06_02_world_achievement_criteria_data.sql b/sql/old/3.3.5a/2012_01_06_02_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..9e6dddfb949
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_02_world_achievement_criteria_data.sql
@@ -0,0 +1,24 @@
+DELETE FROM `achievement_criteria_data` WHERE criteria_id IN (5220, 5215, 5218, 5221, 5216, 5219, 5213, 5018, 5217, 5214, 5233, 5235, 5232, 5234, 5238, 5236, 5229, 5237, 5230, 5231);
+INSERT INTO `achievement_criteria_data` VALUES
+-- Classes
+(5220,21, 1,0,''), -- Realm First! Level 80 Warrior
+(5215,21, 2,0,''), -- Realm First! Level 80 Paladin
+(5218,21, 3,0,''), -- Realm First! Level 80 Hunter
+(5221,21, 4,0,''), -- Realm First! Level 80 Rogue
+(5216,21, 5,0,''), -- Realm First! Level 80 Priest
+(5219,21, 6,0,''), -- Realm First! Level 80 Death Knight
+(5213,21, 7,0,''), -- Realm First! Level 80 Shaman
+(5018,21, 8,0,''), -- Realm First! Level 80 Mage
+(5217,21, 9,0,''), -- Realm First! Level 80 Warlock
+(5214,21,11,0,''), -- Realm First! Level 80 Druid
+-- Races
+(5233,21,0,1,''), -- Realm First! Level 80 Human
+(5235,21,0,2,''), -- Realm First! Level 80 Orc
+(5232,21,0,3,''), -- Realm First! Level 80 Dwarf
+(5234,21,0,4,''), -- Realm First! Level 80 Night Elf
+(5238,21,0,5,''), -- Realm First! Level 80 Undead
+(5236,21,0,6,''), -- Realm First! Level 80 Tauren
+(5229,21,0,7,''), -- Realm First! Level 80 Gnome
+(5237,21,0,8,''), -- Realm First! Level 80 Troll
+(5230,21,0,10,''), -- Realm First! Level 80 Blood Elf
+(5231,21,0,11,''); -- Realm First! Level 80 Draenei
diff --git a/sql/old/3.3.5a/2012_01_06_03_world_item_loot_template.sql b/sql/old/3.3.5a/2012_01_06_03_world_item_loot_template.sql
new file mode 100644
index 00000000000..e1d6cd94525
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_03_world_item_loot_template.sql
@@ -0,0 +1,8 @@
+-- Fix Decoy! (8606) quest items drop chance from Narain's Special Kit (21042)
+SET @Kit := 21042;
+DELETE FROM `item_loot_template` WHERE `entry`= @Kit;
+INSERT INTO `item_loot_template` VALUES
+(@Kit, 21037, 100, 1, 0, 1, 1), -- Crude Map
+(@Kit, 21039, 100, 1, 0, 1, 1), -- Narain's Turban
+(@Kit, 21040, 100, 1, 0, 1, 1), -- Narain's Robe
+(@Kit, 21041, 100, 1, 0, 1, 1); -- Bag of Gold
diff --git a/sql/old/3.3.5a/2012_01_06_04_world_creature_questrelation.sql b/sql/old/3.3.5a/2012_01_06_04_world_creature_questrelation.sql
new file mode 100644
index 00000000000..e1dce65f3bc
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_04_world_creature_questrelation.sql
@@ -0,0 +1,5 @@
+-- Fix Captain Vimes questrelation
+DELETE FROM `creature_questrelation` WHERE `quest`=1220;
+INSERT INTO `creature_questrelation` (`id`,`quest`) VALUES
+(4947,1220),
+(23951,1220);
diff --git a/sql/old/3.3.5a/2012_01_06_05_world_creature_template.sql b/sql/old/3.3.5a/2012_01_06_05_world_creature_template.sql
new file mode 100644
index 00000000000..412fab4dab2
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_05_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Creatures with EAI flag set but no EAI script
+UPDATE `creature_template` SET `AIName` = '' WHERE `entry` IN (29329,29330,29333,29338);
diff --git a/sql/old/3.3.5a/2012_01_06_06_world_quest_template.sql b/sql/old/3.3.5a/2012_01_06_06_world_quest_template.sql
new file mode 100644
index 00000000000..4f58452d980
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_06_world_quest_template.sql
@@ -0,0 +1,2 @@
+-- Ogre Heaven fix PrevQuestID
+UPDATE `quest_template` SET `PrevQuestID`=11000 WHERE `ID`=11009;
diff --git a/sql/old/3.3.5a/2012_01_06_07_world_sai.sql b/sql/old/3.3.5a/2012_01_06_07_world_sai.sql
new file mode 100644
index 00000000000..5d322367250
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_07_world_sai.sql
@@ -0,0 +1,23 @@
+-- Fix Quest 11795, 11887 'Emergency Protocol: Section 8.2, Paragraph C', 'Emergency Supplies'
+SET @NPC :=25841; -- Fizzcrank Recon Pilot
+SET @Gossip :=21248;
+
+DELETE FROM `gossip_menu_option` WHERE (`menu_id`=@Gossip AND `id`=1);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(@Gossip,1,0,"Search the body for the pilot's insignia.",1,1,0,0,0,0,'');
+
+DELETE FROM `conditions` WHERE `SourceGroup`=21248;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,@Gossip,0,0,9,11887,0,0,0,'',''),
+(15,@Gossip,1,0,9,11795,0,0,0,'','');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@NPC 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
+(@NPC,0,0,0,11,0,100,0,0,0,0,0,82,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - On spawn - set gossip flag'),
+(@NPC,0,1,2,62,0,100,0,@Gossip,0,0,0,11,46362,2,0,0,0,0,7,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - On gossip option 0 select - cast spell'),
+(@NPC,0,2,3,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - close gossip'),
+(@NPC,0,3,7,61,0,100,0,0,0,0,0,83,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - remove gossip flag'),
+(@NPC,0,4,5,62,0,100,0,@Gossip,1,0,0,11,46166,2,0,0,0,0,7,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - On gossip option 1 select - cast spell'),
+(@NPC,0,5,6,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - close gossip'),
+(@NPC,0,6,7,61,0,100,0,0,0,0,0,83,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - remove gossip flag'),
+(@NPC,0,7,0,61,0,100,0,0,0,0,0,41,3000,0,0,0,0,0,1,0,0,0,0,0,0,0,'Fizzcrank Recon Pilot - Despawn');
diff --git a/sql/old/3.3.5a/2012_01_06_08_world_creature_template.sql b/sql/old/3.3.5a/2012_01_06_08_world_creature_template.sql
new file mode 100644
index 00000000000..d59a5551f14
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_08_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Tiger Matriarch Credit have no SAI script
+UPDATE `creature_template` SET `AIName`='' WHERE `entry`=40301;
diff --git a/sql/old/3.3.5a/2012_01_06_09_world_creature_questrelation.sql b/sql/old/3.3.5a/2012_01_06_09_world_creature_questrelation.sql
new file mode 100644
index 00000000000..c2af677f047
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_09_world_creature_questrelation.sql
@@ -0,0 +1,9 @@
+-- Fix Report to Gryan Stoutmantle creature_questrelation values
+DELETE FROM `creature_questrelation` WHERE `quest` = 109;
+INSERT INTO `creature_questrelation` (`id`, `quest`) VALUES
+(233,109), -- Farmer Saldean
+(237,109), -- Farmer Furlbrow
+(240,109), -- Marshal Dughan
+(261,109), -- Guard Thomas
+(294,109), -- Marshal Haggard
+(963,109); -- Deputy Rainer
diff --git a/sql/old/3.3.5a/2012_01_06_10_world_creature_template.sql b/sql/old/3.3.5a/2012_01_06_10_world_creature_template.sql
new file mode 100644
index 00000000000..c121fd7424b
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_10_world_creature_template.sql
@@ -0,0 +1,2 @@
+-- Drowned Guardian & Phylactery Guardian summoned NPC should not give XP
+UPDATE `creature_template` SET `flags_extra`=`flags_extra`|64 WHERE `entry` IN (26225,26224);
diff --git a/sql/old/3.3.5a/2012_01_06_11_world_sai.sql b/sql/old/3.3.5a/2012_01_06_11_world_sai.sql
new file mode 100644
index 00000000000..c785030b93e
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_11_world_sai.sql
@@ -0,0 +1,14 @@
+-- Quest "Torgos!" 10035 (A) - 10036 (H)
+-- Converted to SAI
+SET @TRACHELA := 21515;
+SET @TORGOS := 18707;
+DELETE FROM `creature` WHERE `id`=@TORGOS; -- Torgos must to appear only by quest
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~256 WHERE `entry`=@TORGOS; -- removing OOC
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@TORGOS,@TRACHELA);
+DELETE FROM `creature_ai_scripts` WHERE `creature_id` IN (@TORGOS,@TRACHELA);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@TORGOS,@TRACHELA);
+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
+(@TRACHELA,0,0,0,0,0,100,0,5000,8000,10000,14000,11,32903,1,0,0,0,0,5,0,0,0,0,0,0,0, 'Trachela - On combat - Cast Fevered Disease'),
+(@TORGOS,0,0,0,0,0,100,0,2000,5000,12000,20000,11,32022,1,0,0,0,0,2,0,0,0,0,0,0,0, 'Torgos - On combat - Cast Gut Rip'),
+(@TORGOS,0,1,0,0,0,100,0,8000,10000,20000,25000,11,13579,1,0,0,0,0,3,0,0,0,0,0,0,0, 'Torgos - On combat - Cast Gouge'),
+(@TORGOS,0,2,0,0,0,100,0,5000,8000,10000,14000,11,32903,1,0,0,0,0,5,0,0,0,0,0,0,0, 'Torgos - On combat - Cast Fevered Disease');
diff --git a/sql/old/3.3.5a/2012_01_06_12_world_sai.sql b/sql/old/3.3.5a/2012_01_06_12_world_sai.sql
new file mode 100644
index 00000000000..b9c1319347d
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_06_12_world_sai.sql
@@ -0,0 +1,2 @@
+UPDATE smart_scripts SET action_param2 = action_param3 WHERE action_type = 80;
+UPDATE smart_scripts SET action_param3 = 0 WHERE action_type = 80; \ No newline at end of file
diff --git a/sql/old/3.3.5a/2012_01_07_00_world_creature_addon.sql b/sql/old/3.3.5a/2012_01_07_00_world_creature_addon.sql
new file mode 100644
index 00000000000..83e1efbac80
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_00_world_creature_addon.sql
@@ -0,0 +1,2 @@
+-- A-Me 01 and Un'Goro Thunderer (only one) were emoting to be dead
+UPDATE `creature_addon` SET `bytes1`=0 WHERE `guid` IN (24268,24081);
diff --git a/sql/old/3.3.5a/2012_01_07_01_world_creature_template.sql b/sql/old/3.3.5a/2012_01_07_01_world_creature_template.sql
new file mode 100644
index 00000000000..deba1c596f0
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_01_world_creature_template.sql
@@ -0,0 +1,8 @@
+-- Template updates for creature 36595 (Unleashed Soul)
+UPDATE `creature_template` SET `exp`=2,`minlevel`=80,`maxlevel`=80,`baseattacktime`=2000,`speed_walk`=1.111112,`speed_run`=0.71429 WHERE `entry`=36595; -- Unleashed Soul
+-- Model data 14594 (creature 36595 (Unleashed Soul))
+UPDATE `creature_model_info` SET `bounding_radius`=1.1,`combat_reach`=1.65,`gender`=2 WHERE `modelid`=14594; -- Unleashed Soul
+-- Addon data for creature 36595 (Unleashed Soul)
+DELETE FROM `creature_template_addon` WHERE `entry`=36595;
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(36595,0,0,1,0, NULL); -- Unleashed Soul
diff --git a/sql/old/3.3.5a/2012_01_07_02_world_gameobject_template.sql b/sql/old/3.3.5a/2012_01_07_02_world_gameobject_template.sql
new file mode 100644
index 00000000000..438a49d969a
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_02_world_gameobject_template.sql
@@ -0,0 +1,2 @@
+-- Fix Stratholme Service Gate Entrance
+UPDATE `gameobject_template` SET `data1`=879 WHERE `entry`=175368;
diff --git a/sql/old/3.3.5a/2012_01_07_03_world_creature_template.sql b/sql/old/3.3.5a/2012_01_07_03_world_creature_template.sql
new file mode 100644
index 00000000000..fdbdfc5a689
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_03_world_creature_template.sql
@@ -0,0 +1,8 @@
+-- Set standard immunities to The Nexus bosses.
+UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`|1|2|4|8|16|32|64|256|512|1024|2048|4096|8192|65536|131072|262144|524288|4194304|8388608|67108864|536870912 WHERE `entry` IN
+(26731,30510, -- Grand Magus Telestra
+ 26763,30529, -- Anomalus
+ 26794,30532, -- Ormorok the Tree-Shaper
+ 26723,30540, -- Keristrasza
+ 26796,30398, -- Commander Stoutbeard
+ 26798,30397); -- Commander Kolurg
diff --git a/sql/old/3.3.5a/2012_01_07_04_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_01_07_04_world_creature_loot_template.sql
new file mode 100644
index 00000000000..6855308ed82
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_04_world_creature_loot_template.sql
@@ -0,0 +1,29 @@
+-- Update Narain's Scrying Goggles
+SET @Item := 20951;
+DELETE FROM `creature_loot_template` WHERE `item`=@Item;
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(11502,@Item,-100,1,0,1,1), -- Ragnaros
+(11658,@Item,-100,1,0,1,1), -- Molten Giant
+(11659,@Item,-100,1,0,1,1), -- Molten Destroyer
+(11661,@Item,-100,1,0,1,1), -- Flamewaker
+(11662,@Item,-100,1,0,1,1), -- Flamewaker Priest
+(11663,@Item,-100,1,0,1,1), -- Flamewaker Healer
+(11664,@Item,-100,1,0,1,1), -- Flamewaker Elite
+(11665,@Item,-100,1,0,1,1), -- Lava Annihilator
+(11666,@Item,-100,1,0,1,1), -- Firewalker
+(11667,@Item,-100,1,0,1,1), -- Flameguard
+(11669,@Item,-100,1,0,1,1), -- Flame Imp
+(11673,@Item,-100,1,0,1,1), -- Ancient Core Hound
+(11982,@Item,-100,1,0,1,1), -- Magmadar
+(11988,@Item,-100,1,0,1,1), -- Golemagg the Incinerator
+(12056,@Item,-100,1,0,1,1), -- Baron Geddon
+(12057,@Item,-100,1,0,1,1), -- Garr
+(12076,@Item,-100,1,0,1,1), -- Lava Elemental
+(12098,@Item,-100,1,0,1,1), -- Sulfuron Harbinger
+(12100,@Item,-100,1,0,1,1), -- Lava Reaver
+(12101,@Item,-100,1,0,1,1), -- Lava Surger
+(12118,@Item,-100,1,0,1,1), -- Lucifron
+(12119,@Item,-100,1,0,1,1), -- Flamewaker Protector
+(12231,@Item,-100,1,0,1,1), -- Firelord
+(12259,@Item,-100,1,0,1,1), -- Gehennas
+(12264,@Item,-100,1,0,1,1); -- Shazzrah
diff --git a/sql/old/3.3.5a/2012_01_07_05_world_creature_loot_template.sql b/sql/old/3.3.5a/2012_01_07_05_world_creature_loot_template.sql
new file mode 100644
index 00000000000..5ffdb8f6261
--- /dev/null
+++ b/sql/old/3.3.5a/2012_01_07_05_world_creature_loot_template.sql
@@ -0,0 +1,4 @@
+-- correct id for firelord
+DELETE FROM `creature_loot_template` WHERE `entry` IN (12231,11668) AND `item`=20951;
+INSERT INTO `creature_loot_template` (`entry`,`item`,`ChanceOrQuestChance`,`lootmode`,`groupid`,`mincountOrRef`,`maxcount`) VALUES
+(11668,20951,-100,1,0,1,1); -- Firelord
diff --git a/sql/updates/world/2012_01_08_00_world_version.sql b/sql/updates/world/2012_01_08_00_world_version.sql
new file mode 100644
index 00000000000..721fea914f1
--- /dev/null
+++ b/sql/updates/world/2012_01_08_00_world_version.sql
@@ -0,0 +1 @@
+UPDATE `version` SET `db_version`='TDB 335.11.45' LIMIT 1;
diff --git a/sql/updates/world/2012_01_08_01_world_sai.sql b/sql/updates/world/2012_01_08_01_world_sai.sql
new file mode 100644
index 00000000000..fcdc21662c0
--- /dev/null
+++ b/sql/updates/world/2012_01_08_01_world_sai.sql
@@ -0,0 +1,24 @@
+-- UPDATE Blood Knight Dawnstar Gossip
+SET @ENTRY := 17832;
+SET @GOSSIPID := 7486;
+SET @TEXTID := 9070;
+-- Creature Gossip_menu_id Update from sniff
+UPDATE `creature_template` SET `gossip_menu_id`=@GOSSIPID WHERE `entry`=@ENTRY;
+-- Gossip Menu insert from sniff
+DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIPID AND `text_id`=@TEXTID;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (@GOSSIPID,@TEXTID);
+-- Creature Gossip_menu_option Update from sniff
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (@GOSSIPID) AND `id` IN (0);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(@GOSSIPID,0,0, 'Take Blood Knight Insignia',1,1,0,0,0,0, '');
+-- Gossip option Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIPID;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,@GOSSIPID,0,0,9,9692,0,0,0,'','Show gossip option if player has quest 9692 but not complete'),
+(15,@GOSSIPID,0,0,26,24226,1,0,0,'','Show gossip option if player does not have item 24226');
+-- SAI for Blood Knight Dawnstar
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@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,62,0,100,0,@GOSSIPID,0,0,0,56,24226,1,0,0,0,0,7,0,0,0,0,0,0,0,'Blood Knight Dawnstar - On Gossip option select - Create Blood Knight Insignia'),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Blood Knight Dawnstar - On Gossip option select - Close Gossip');
diff --git a/sql/updates/world/2012_01_08_02_world_creature_template.sql b/sql/updates/world/2012_01_08_02_world_creature_template.sql
new file mode 100644
index 00000000000..a544118aa4f
--- /dev/null
+++ b/sql/updates/world/2012_01_08_02_world_creature_template.sql
@@ -0,0 +1,4 @@
+-- Template updates for creature 30081 (Efrem the Faithful)
+UPDATE `creature_template` SET `npcflag`=`npcflag`|1 WHERE `entry`=30081; -- Efrem the Faithful
+-- Model data 26827 (creature 30081 (Efrem the Faithful))
+UPDATE `creature_model_info` SET `bounding_radius`=0.3672,`combat_reach`=1.8,`gender`=0 WHERE `modelid`=26827; -- Efrem the Faithful
diff --git a/sql/updates/world/2012_01_08_03_world_gossip_menu.sql b/sql/updates/world/2012_01_08_03_world_gossip_menu.sql
new file mode 100644
index 00000000000..6555d25fbc3
--- /dev/null
+++ b/sql/updates/world/2012_01_08_03_world_gossip_menu.sql
@@ -0,0 +1,51 @@
+-- Creature Gossip_menu_option Update from sniff
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (9301,9512,9615) AND `id`=0;
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(9301,0,0, 'Come on, Budd. Time to play with the ice trolls!',1,1,0,0,0,0, ''),
+(9512,0,0, 'Unchain and control Flamebringer.',1,1,0,0,0,0, ''),
+(9615,0,0, 'Shake Drakuru''s outstretched hand.',1,1,0,0,0,0, '');
+
+-- Gossip Menu insert from sniff
+DELETE FROM `gossip_menu` WHERE `entry`=9633 AND `text_id`=13034;
+DELETE FROM `gossip_menu` WHERE `entry`=9490 AND `text_id`=12773;
+DELETE FROM `gossip_menu` WHERE `entry`=9622 AND `text_id`=13011;
+DELETE FROM `gossip_menu` WHERE `entry`=9416 AND `text_id`=12659;
+DELETE FROM `gossip_menu` WHERE `entry`=9301 AND `text_id`=12617;
+DELETE FROM `gossip_menu` WHERE `entry`=9615 AND `text_id` IN (12998,12999,13001);
+DELETE FROM `gossip_menu` WHERE `entry`=9604 AND `text_id`=12966;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(9633,13034),
+(9490,12773),
+(9622,13011),
+(9416,12659),
+(9301,12617),
+(9615,12998),
+(9615,12999),
+(9615,13001),
+(9604,12966);
+
+-- Creature Gossip_menu_id Update from sniff
+UPDATE `creature_template` SET `gossip_menu_id`=9633 WHERE `entry`=26868;
+UPDATE `creature_template` SET `gossip_menu_id`=9821 WHERE `entry`=29740;
+UPDATE `creature_template` SET `gossip_menu_id`=9490 WHERE `entry`=27262;
+UPDATE `creature_template` SET `gossip_menu_id`=9622 WHERE `entry`=26519;
+UPDATE `creature_template` SET `gossip_menu_id`=9416 WHERE `entry`=26604;
+UPDATE `creature_template` SET `gossip_menu_id`=9301 WHERE `entry`=26422;
+UPDATE `creature_template` SET `gossip_menu_id`=9615 WHERE `entry`=26423;
+UPDATE `creature_template` SET `gossip_menu_id`=9604 WHERE `entry`=26424;
+
+-- Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=9615 AND `SourceEntry` IN (12998,12999,13001);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=9632 AND `SourceEntry`=13033;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=9633 AND `SourceEntry`=13034;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup` IN (9301,9512,9615) AND `SourceEntry`=0;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,9615,12998,0,1,50001,0,0,0,'','Drakuru has different gossip if player has aura 50001'),
+(14,9615,12999,0,11,50001,0,0,0,'','Drakuru has gossip only if player has not aura 50001'),
+(14,9615,13001,0,8,11989,0,0,0,'','Drakuru has different gossip if player has quest 11989 rewarded'),
+(14,9632,13033,0,14,12178,0,0,0,'','Hidetrader Jun''ik has gossip only if player has not taken quest 12178'),
+(14,9633,13034,0,14,12436,0,0,0,'','Provisioner Lorkran has gossip only if player has not taken quest 12436'),
+(15,9301,0,0,9,11984,0,0,0,'','Budd - Show gossip option if player has taken quest 11984'),
+(15,9512,0,0,9,12259,0,0,0,'','Flamebringer - Show gossip option if player has taken quest 12259'),
+(15,9512,0,1,9,12255,0,0,0,'','Flamebringer - Show gossip option if player has taken quest 12255'),
+(15,9615,0,0,1,50001,0,0,0,'','Drakuru - Show gossip option if player has aura 50001');
diff --git a/sql/updates/world/2012_01_08_04_world_quest_template.sql b/sql/updates/world/2012_01_08_04_world_quest_template.sql
new file mode 100644
index 00000000000..fdc3c401302
--- /dev/null
+++ b/sql/updates/world/2012_01_08_04_world_quest_template.sql
@@ -0,0 +1,2 @@
+-- Update quest 13093 (sharable/repeatable quest)
+UPDATE `quest_template` SET `PrevQuestId`=13092,`Flags`=`Flags`|8192,`SpecialFlags`=1,`OfferRewardText`='Choose your fate, $N.',`RequestItemsText`='Bring me more vrykul bones and we will influence the fates in your favor.' WHERE `id`=13093;
diff --git a/sql/updates/world/2012_01_08_05_world_conditions.sql b/sql/updates/world/2012_01_08_05_world_conditions.sql
new file mode 100644
index 00000000000..b8e43e7d0e2
--- /dev/null
+++ b/sql/updates/world/2012_01_08_05_world_conditions.sql
@@ -0,0 +1,10 @@
+-- Slaves to Saronite add conditions for Horde version 10
+SET @QUEST_A := 13300;
+SET @QUEST_H := 13302;
+SET @GOSSIP := 10137;
+
+-- Only show gossip if player is on quest Slaves to Saronite
+DELETE FROM `conditions` WHERE `SourceGroup`=@GOSSIP AND `ConditionValue1` IN (@QUEST_A,@QUEST_H);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`COMMENT`) VALUES
+(15,@GOSSIP,0,0,9,@QUEST_A,0,0,0,'',"Only show first gossip if player is on quest Slaves to Saronite Alliance"),
+(15,@GOSSIP,0,0,9,@QUEST_H,0,0,0,'',"Only show first gossip if player is on quest Slaves to Saronite Horde"); \ No newline at end of file
diff --git a/sql/updates/world/2012_01_08_06_world_creature_text.sql b/sql/updates/world/2012_01_08_06_world_creature_text.sql
new file mode 100644
index 00000000000..3372f05e5ac
--- /dev/null
+++ b/sql/updates/world/2012_01_08_06_world_creature_text.sql
@@ -0,0 +1,11 @@
+-- Remove old script text for boss_balinda.cpp "Not sure if the text actually exist"
+DELETE FROM `script_texts` WHERE `entry` IN (-1810023,-1810024);
+-- Add new creature_text for Captain Balinda Stonehearth <Stormpike Captain>
+DELETE FROM `creature_text` WHERE `entry` IN (11949);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- Aggro
+(11949,0,0, 'Begone, uncouth scum! The Alliance shall prevail in Alterac Valley!',14,0,100,0,0,0, 'Captain Balinda Stonehearth'),
+-- Reset
+(11949,1,0, 'Filthy Frostwolf cowards! If you want a fight, you''ll have to come to me!',14,0,100,0,0,0, 'Captain Balinda Stonehearth'),
+-- (Alliance players receives Stormpike's Salvation buff (+20% health points for 2 minutes))
+(11949,2,0, 'Take heart, Alliance! Throw these villains from Alterac Valley!',14,0,100,0,0,0, 'Captain Balinda Stonehearth');
diff --git a/sql/updates/world/2012_01_08_07_world_creature_text.sql b/sql/updates/world/2012_01_08_07_world_creature_text.sql
new file mode 100644
index 00000000000..c929866f4f1
--- /dev/null
+++ b/sql/updates/world/2012_01_08_07_world_creature_text.sql
@@ -0,0 +1,11 @@
+-- Remove old script text for boss_galvangar.cpp "Not sure if the text actually exist"
+DELETE FROM `script_texts` WHERE `entry` IN (-1810021,-1810022);
+-- Add new creature_text for Captain Galvangar
+DELETE FROM `creature_text` WHERE `entry` IN (11947);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- Aggro
+(11947,0,0, 'Die! Your kind has no place in Alterac Valley!',14,0,100,0,0,0, 'Captain Galvangar'),
+-- Reset
+(11947,1,0, 'I''ll never fall for that, fool! If you want a battle it will be on my terms and in my lair!',14,0,100,0,0,0, 'Captain Galvangar'),
+-- Casting Fury of the Frostwolf
+(11947,2,0, 'Now is the time to attack! For the Horde!',14,0,100,0,0,0, 'Captain Galvangar');
diff --git a/sql/updates/world/2012_01_08_08_world_creature_text.sql b/sql/updates/world/2012_01_08_08_world_creature_text.sql
new file mode 100644
index 00000000000..42249e67b84
--- /dev/null
+++ b/sql/updates/world/2012_01_08_08_world_creature_text.sql
@@ -0,0 +1,17 @@
+-- Remove old script text for boss_drekthar.cpp "Not sure if the text actually exist"
+DELETE FROM `script_texts` WHERE `entry` IN (-1810000,-1810001,-1810002,-1810003,-1810004,-1810005,-1810006,-1810007);
+-- Add new creature_text for Drek'Thar
+DELETE FROM `creature_text` WHERE `entry` IN (11946);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- Aggro
+(11946,0,0, 'Stormpike filth! In my keep?! Slay them all!',14,0,100,0,0,0, 'Drek''Thar'),
+-- Reset
+(11946,1,0, 'You seek to draw the General of the Frostwolf legion out from his fortress? PREPOSTEROUS!',14,0,100,0,0,0, 'Drek''Thar'),
+-- Raid wipe
+(11946,2,0, 'Stormpike weaklings, face me in my fortress - if you dare!',14,0,100,0,0,0, 'Drek''Thar'),
+-- Combat
+(11946,3,0, 'Your attacks are slowed by the cold, I think!',14,0,100,0,0,0, 'Drek''Thar'),
+(11946,3,1, 'Today, you will meet your ancestors!',14,0,100,0,0,0, 'Drek''Thar'),
+(11946,3,2, 'If you will not leave Alterac Valley on your own, then the Frostwolves will force you out!',14,0,100,0,0,0, 'Drek''Thar'),
+(11946,3,3, 'You cannot defeat the Frostwolf clan!',14,0,100,0,0,0, 'Drek''Thar'),
+(11946,3,4, 'You are no match for the strength of the Horde!',14,0,100,0,0,0, 'Drek''Thar');
diff --git a/sql/updates/world/2012_01_08_09_world_creature_text.sql b/sql/updates/world/2012_01_08_09_world_creature_text.sql
new file mode 100644
index 00000000000..c838e6dc4f2
--- /dev/null
+++ b/sql/updates/world/2012_01_08_09_world_creature_text.sql
@@ -0,0 +1,20 @@
+-- Remove old script text for boss_vanndar.cpp "Not sure if the text actually exist"
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -181008 AND -1810018;
+-- Add new creature_text for Vanndar Stormpike
+DELETE FROM `creature_text` WHERE `entry` IN (11948);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- Aggro
+(11948,0,0, 'Soldiers of Stormpike, your General is under attack! I require aid! Come! Come! Slay these mangy Frostwolf dogs.',14,0,100,0,0,0, 'Vanndar Stormpike'),
+-- Reset
+(11948,1,0, 'You''ll never get me out of me bunker, heathens!',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,1,1, 'Why don''t ya try again without yer cheap tactics, pansies! Or are you too chicken?',14,0,100,0,0,0, 'Vanndar Stormpike'),
+-- Combat
+(11948,2,0, 'I will tell you this much...Alterac Valley will be ours.',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,1, 'Your attacks are weak! Go practice on some rabbits and come back when you''re stronger.',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,2, 'We will not be swayed from our mission!',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,3, 'It''ll take more than you rabble to bring me down!',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,4, 'We, the Alliance, will prevail!',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,5, 'The Stormpike clan bows to no one, especially the horde!',14,0,100,0,0,0, 'Vanndar Stormpike'),
+(11948,2,6, 'Is that the best you can do?',14,0,100,0,0,0, 'Vanndar Stormpike'),
+-- Said with a spell cast (Alliance players receive 10/20/30% damage/size increases, gained by turning in [Polished Armor Scraps]
+(11948,3,0, 'Take no prisoners! Drive these heathens from our lands!',14,0,100,0,0,0, 'Vanndar Stormpike');
diff --git a/sql/updates/world/2012_01_08_10_world_creature_text.sql b/sql/updates/world/2012_01_08_10_world_creature_text.sql
new file mode 100644
index 00000000000..b93a0a50d39
--- /dev/null
+++ b/sql/updates/world/2012_01_08_10_world_creature_text.sql
@@ -0,0 +1,25 @@
+-- Remove old script text for arathi_highlands.cpp
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000264 AND -1000273;
+-- Add new creature_text for Professor Phizzlethorpe <Blackwater Raiders>
+DELETE FROM `creature_text` WHERE `entry` IN (2768);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- SAY_PROGRESS_1
+(2768,0,0, 'Ok, $N. Follow me to the cave where I''ll attempt to harness the power of the rune stone into these goggles.',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_2
+(2768,1,0, 'I discovered this cave on our first day here. I believe the energy in the stone can be used to our advantage.',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_3
+(2768,2,0, 'I''ll begin drawing energy from the stone. Your job, $N, is to defend me. This place is cursed... trust me.',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- EMOTE_PROGRESS_4
+(2768,3,0, '%s begins tinkering with the goggles before the stone.',16,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_AGGRO
+(2768,4,0, 'Help!!! Get these things off me so I can get my work done!',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_5
+(2768,5,0, 'Almost done! Just a little longer!',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_6
+(2768,6,0, 'I''ve done it! I have harnessed the power of the stone into the goggles! Let''s get out of here!',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_7
+(2768,7,0, 'Phew! Glad to be back from that creepy cave.',12,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- EMOTE_PROGRESS_8
+(2768,8,0, '%s hands one glowing goggles over to Doctor Draxlegauge.',16,0,100,0,0,0, 'Professor Phizzlethorpe'),
+-- SAY_PROGRESS_9
+(2768,9,0, 'Doctor Draxlegauge will give you further instructions, $N. Many thanks for your help!',12,0,100,0,0,0, 'Professor Phizzlethorpe');
diff --git a/sql/updates/world/2012_01_08_11_world_creature_text.sql b/sql/updates/world/2012_01_08_11_world_creature_text.sql
new file mode 100644
index 00000000000..bf34c1f541c
--- /dev/null
+++ b/sql/updates/world/2012_01_08_11_world_creature_text.sql
@@ -0,0 +1,9 @@
+-- Remove old script text for eversong_woods.cpp
+DELETE FROM `script_texts` WHERE `entry` BETWEEN -1000637 AND -1000640;
+-- Master Kelerun Bloodmourn <Blood Knight> say text
+DELETE FROM `creature_text` WHERE `entry`=17807;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(17807,0,0, 'Let the trial begin, Bloodwrath, attack!',14,0,100,0,0,0, 'Master Kelerun Bloodmourn'),
+(17807,1,0, 'Champion Lightrend, make me proud!',14,0,100,0,0,0, 'Master Kelerun Bloodmourn'),
+(17807,2,0, 'Show this upstart how a real Blood Knight fights, Swiftblade!',14,0,100,0,0,0, 'Master Kelerun Bloodmourn'),
+(17807,3,0, 'Show $N the meaning of pain, Sunstriker!',14,0,100,0,0,0, 'Master Kelerun Bloodmourn');
diff --git a/sql/updates/world/2012_01_08_12_world_creature_text.sql b/sql/updates/world/2012_01_08_12_world_creature_text.sql
new file mode 100644
index 00000000000..a2795b906ef
--- /dev/null
+++ b/sql/updates/world/2012_01_08_12_world_creature_text.sql
@@ -0,0 +1,6 @@
+-- Twilight Corrupter say text
+DELETE FROM `creature_text` WHERE `entry` IN (15625);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(15625,0,0, 'Come, $N. See what the Nightmare brings...',14,0,100,0,0,0, 'Twilight Corrupter'),
+(15625,1,0, 'The Nightmare cannot be stopped!',14,0,100,0,0,0, 'Twilight Corrupter'),
+(15625,2,0, 'Twilight Corrupter squeezes the last bit of life out of $N and swallows their soul.',16,0,100,0,0,0, 'Twilight Corrupter');
diff --git a/sql/updates/world/2012_01_08_13_world_creature_text.sql b/sql/updates/world/2012_01_08_13_world_creature_text.sql
new file mode 100644
index 00000000000..454bd9ae9c3
--- /dev/null
+++ b/sql/updates/world/2012_01_08_13_world_creature_text.sql
@@ -0,0 +1,7 @@
+-- NPC talk text insert from sniff "Orgrimmar Zeppelin Masters"
+DELETE FROM `creature_text` WHERE `entry` IN (12136,26537,9564,34765) AND `groupid` IN (0);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(12136,0,0, 'The zeppelin to Grom''gol has just arrived! All aboard for Stranglethorn!',14,0,100,0,0,0, 'Snurk Bucksquick'),
+(26537,0,0, 'The zeppelin to Warsong Hold has just arrived! All aboard for Borean Tundra!',14,0,100,0,0,0, 'Greeb Ramrocket'),
+(9564,0,0, 'The zeppelin to Undercity has just arrived! All aboard for Tirisfal Glades!',14,0,100,0,0,0, 'Frezza'),
+(34765,0,0, 'The zeppelin to Thunder Bluff has arrived! All aboard for a smooth ride across the Barrens!',14,0,100,0,0,0, 'Zelli Hotnozzle');
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c372d12418b..7c2ebe9906c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt
index 561ee50f439..2b6c553e10b 100644
--- a/src/server/CMakeLists.txt
+++ b/src/server/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h
index 0b91b6e8ddb..501959d67f9 100644
--- a/src/server/game/AI/CoreAI/GameObjectAI.h
+++ b/src/server/game/AI/CoreAI/GameObjectAI.h
@@ -50,6 +50,7 @@ class GameObjectAI
virtual void Destroyed(Player* /*player*/, uint32 /*eventId*/) {}
virtual void SetData(uint32 /*id*/, uint32 /*value*/) {}
virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) {}
+ virtual void OnStateChanged(uint32 state) { }
};
class NullGameObjectAI : public GameObjectAI
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index af6bf6cf6ce..1a26e241c5e 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -431,12 +431,25 @@ void SmartAI::MovementInform(uint32 MovementType, uint32 Data)
MovepointReached(Data);
}
+void SmartAI::RemoveAuras()
+{
+ // Only loop throught the applied auras, because here is where all auras on the current unit are stored
+ Unit::AuraApplicationMap appliedAuras = me->GetAppliedAuras();
+ for (Unit::AuraApplicationMap::iterator iter = appliedAuras.begin(); iter != appliedAuras.end(); ++iter)
+ {
+ Aura const* aura = iter->second->GetBase();
+ if (!aura->GetSpellInfo()->IsPassive() && !aura->GetSpellInfo()->HasAura(SPELL_AURA_CONTROL_VEHICLE) && aura->GetCaster() != me)
+ me->RemoveAurasDueToSpell(aura->GetId());
+ }
+}
+
void SmartAI::EnterEvadeMode()
{
if (!me->isAlive())
return;
- me->RemoveAllAuras();
+ RemoveAuras();
+
me->DeleteThreatList();
me->CombatStop(true);
me->LoadCreaturesAddon();
@@ -924,6 +937,11 @@ void SmartGameObjectAI::OnGameEvent(bool start, uint16 eventId)
GetScript()->ProcessEventsFor(start ? SMART_EVENT_GAME_EVENT_START : SMART_EVENT_GAME_EVENT_END, NULL, eventId);
}
+void SmartGameObjectAI::OnStateChanged(uint32 state)
+{
+ GetScript()->ProcessEventsFor(SMART_EVENT_GO_STATE_CHANGED, NULL, state);
+}
+
class SmartTrigger : public AreaTriggerScript
{
public:
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index 1059e2a01c4..297ac88fbb0 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -193,6 +193,8 @@ class SmartAI : public CreatureAI
mDespawnState = t ? 1 : 0;
}
void StartDespawn() { mDespawnState = 2; }
+
+ void RemoveAuras();
private:
uint32 mFollowCreditType;
@@ -251,6 +253,7 @@ public:
void SetData(uint32 id, uint32 value);
void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker);
void OnGameEvent(bool start, uint16 eventId);
+ void OnStateChanged(uint32 state);
protected:
GameObject* const go;
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index a2e70e9cbf2..9cea61c0d2b 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -51,7 +51,6 @@ SmartScript::SmartScript()
mTemplate = SMARTAI_TEMPLATE_BASIC;
meOrigGUID = 0;
goOrigGUID = 0;
- mResumeActionList = true;
mLastInvoker = 0;
}
@@ -78,22 +77,6 @@ void SmartScript::OnReset()
void SmartScript::ProcessEventsFor(SMART_EVENT e, Unit* unit, uint32 var0, uint32 var1, bool bvar, const SpellInfo* spell, GameObject* gob)
{
- if (e == SMART_EVENT_AGGRO)
- {
- if (!mResumeActionList)
- mTimedActionList.clear();//clear action list if it is not resumable
- else
- {
- for (SmartAIEventList::iterator itr = mTimedActionList.begin(); itr != mTimedActionList.end(); ++itr)
- {
- if (itr->enableTimed)
- {
- InitTimer((*itr));//re-init the currently enabled timer, so it restarts the timer when resumed
- break;
- }
- }
- }
- }
for (SmartAIEventList::iterator i = mEvents.begin(); i != mEvents.end(); ++i)
{
SMART_EVENT eventType = SMART_EVENT((*i).GetEventType());
@@ -1797,6 +1780,20 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
// TODO: Resume path when reached jump location
break;
}
+ case SMART_ACTION_GO_SET_LOOT_STATE:
+ {
+ ObjectList* targets = GetTargets(e, unit);
+
+ if (!targets)
+ return;
+
+ for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
+ if (IsGameObject(*itr))
+ (*itr)->ToGameObject()->SetLootState((LootState)e.action.setGoLootState.state);
+
+ delete targets;
+ break;
+ }
case SMART_ACTION_SEND_GOSSIP_MENU:
{
if (!GetBaseObject())
@@ -2619,6 +2616,13 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
ProcessAction(e, NULL, var0);
break;
}
+ case SMART_EVENT_GO_STATE_CHANGED:
+ {
+ if (e.event.goStateChanged.state != var0)
+ return;
+ ProcessAction(e, unit, var0, var1);
+ break;
+ }
default:
sLog->outErrorDb("SmartScript::ProcessEvent: Unhandled Event type %u", e.GetEventType());
break;
@@ -3017,7 +3021,6 @@ void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry)
i->event.type = SMART_EVENT_UPDATE_IC;
else if (e.action.timedActionList.timerType > 1)
i->event.type = SMART_EVENT_UPDATE;
- mResumeActionList = e.action.timedActionList.dontResume ? false : true;
InitTimer((*i));
}
}
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h
index 0193ac2bfb6..f55d91ed52f 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.h
+++ b/src/server/game/AI/SmartScripts/SmartScript.h
@@ -228,7 +228,6 @@ class SmartScript
SmartAIEventList mEvents;
SmartAIEventList mInstallEvents;
SmartAIEventList mTimedActionList;
- bool mResumeActionList;
Creature* me;
uint64 meOrigGUID;
GameObject* go;
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index 63595b2439f..15423c7aff2 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -478,6 +478,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
break;
}
+ case SMART_EVENT_GO_STATE_CHANGED:
case SMART_EVENT_TIMED_EVENT_TRIGGERED:
case SMART_EVENT_INSTANCE_PLAYER_ENTER:
case SMART_EVENT_TRANSPORT_RELOCATE:
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index ec4355111b9..6b99a7dc5be 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -154,8 +154,9 @@ enum SMART_EVENT
SMART_EVENT_IS_BEHIND_TARGET = 67, //1 // cooldownMin, CooldownMax
SMART_EVENT_GAME_EVENT_START = 68, //1 // game_event.Entry
SMART_EVENT_GAME_EVENT_END = 69, //1 // game_event.Entry
+ SMART_EVENT_GO_STATE_CHANGED = 70, // go state
- SMART_EVENT_END = 70,
+ SMART_EVENT_END = 71,
};
struct SmartEvent
@@ -347,6 +348,11 @@ struct SmartEvent
struct
{
+ uint32 state;
+ } goStateChanged;
+
+ struct
+ {
uint32 param1;
uint32 param2;
uint32 param3;
@@ -466,8 +472,9 @@ enum SMART_ACTION
SMART_ACTION_REMOVE_DYNAMIC_FLAG = 96, // Flags
SMART_ACTION_JUMP_TO_POS = 97, // speedXY, speedZ, targetX, targetY, targetZ
SMART_ACTION_SEND_GOSSIP_MENU = 98, // menuId, optionId
+ SMART_ACTION_GO_SET_LOOT_STATE = 99, // state
- SMART_ACTION_END = 99,
+ SMART_ACTION_END = 100,
};
struct SmartAction
@@ -824,7 +831,6 @@ struct SmartAction
struct
{
uint32 id;
- uint32 dontResume;
uint32 timerType;
} timedActionList;
@@ -874,6 +880,11 @@ struct SmartAction
struct
{
+ uint32 state;
+ } setGoLootState;
+
+ struct
+ {
uint32 param1;
uint32 param2;
uint32 param3;
@@ -1138,6 +1149,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{SMART_EVENT_IS_BEHIND_TARGET, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_GAME_EVENT_START, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
{SMART_EVENT_GAME_EVENT_END, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
+ {SMART_EVENT_GO_STATE_CHANGED, SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
};
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 7efd5481ae8..02686993fbb 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -130,19 +130,19 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
case ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE:
if (!classRace.class_id && !classRace.race_id)
{
- sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_PLAYER_CLASS_RACE (%u) must not have 0 in either value field, ignored.",
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) must not have 0 in either value field, ignored.",
criteria->ID, criteria->requiredType, dataType);
return false;
}
if (classRace.class_id && ((1 << (classRace.class_id-1)) & CLASSMASK_ALL_PLAYABLE) == 0)
{
- sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_PLAYER_CLASS_RACE (%u) has non-existing class in value1 (%u), ignored.",
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) has non-existing class in value1 (%u), ignored.",
criteria->ID, criteria->requiredType, dataType, classRace.class_id);
return false;
}
if (classRace.race_id && ((1 << (classRace.race_id-1)) & RACEMASK_ALL_PLAYABLE) == 0)
{
- sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_PLAYER_CLASS_RACE (%u) has non-existing race in value2 (%u), ignored.",
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) has non-existing race in value2 (%u), ignored.",
criteria->ID, criteria->requiredType, dataType, classRace.race_id);
return false;
}
@@ -277,6 +277,26 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
return false;
}
return true;
+ case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE:
+ if (!classRace.class_id && !classRace.race_id)
+ {
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) must not have 0 in either value field, ignored.",
+ criteria->ID, criteria->requiredType, dataType);
+ return false;
+ }
+ if (classRace.class_id && ((1 << (classRace.class_id-1)) & CLASSMASK_ALL_PLAYABLE) == 0)
+ {
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) has non-existing class in value1 (%u), ignored.",
+ criteria->ID, criteria->requiredType, dataType, classRace.class_id);
+ return false;
+ }
+ if (classRace.race_id && ((1 << (classRace.race_id-1)) & RACEMASK_ALL_PLAYABLE) == 0)
+ {
+ sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) for data type ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) has non-existing race in value2 (%u), ignored.",
+ criteria->ID, criteria->requiredType, dataType, classRace.race_id);
+ return false;
+ }
+ return true;
default:
sLog->outErrorDb("Table `achievement_criteria_data` (Entry: %u Type: %u) has data for non-supported data type (%u), ignored.", criteria->ID, criteria->requiredType, dataType);
return false;
@@ -301,6 +321,14 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un
if (classRace.race_id && classRace.race_id != target->ToPlayer()->getRace())
return false;
return true;
+ case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE:
+ if (!source || source->GetTypeId() != TYPEID_PLAYER)
+ return false;
+ if (classRace.class_id && classRace.class_id != source->ToPlayer()->getClass())
+ return false;
+ if (classRace.race_id && classRace.race_id != source->ToPlayer()->getRace())
+ return false;
+ return true;
case ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH:
if (!target || target->GetTypeId() != TYPEID_PLAYER)
return false;
diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h
index 640b5de98c9..c7d838fcb44 100755
--- a/src/server/game/Achievements/AchievementMgr.h
+++ b/src/server/game/Achievements/AchievementMgr.h
@@ -63,9 +63,10 @@ enum AchievementCriteriaDataType
ACHIEVEMENT_CRITERIA_DATA_INSTANCE_SCRIPT = 18, // 0 0 maker instance script call for check current criteria requirements fit
ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM = 19, // item_level item_quality for equipped item in slot to check item level and quality
ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20, // map_id 0 player must be on map with id in map_id
+ ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21, // class_id race_id
};
-#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 21 // maximum value in AchievementCriteriaDataType enum
+#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 22 // maximum value in AchievementCriteriaDataType enum
class Player;
class Unit;
@@ -82,6 +83,7 @@ struct AchievementCriteriaData
uint32 id;
} creature;
// ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE = 2
+ // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21
struct
{
uint32 class_id;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index decbc49d3fe..22f001d0224 100755
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -1864,3 +1864,9 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
}
}
}
+
+void GameObject::SetLootState(LootState s)
+{
+ m_lootState = s;
+ AI()->OnStateChanged(s);
+} \ No newline at end of file
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index 910b9129e45..9298c5affee 100755
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -713,7 +713,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>
void Use(Unit* user);
LootState getLootState() const { return m_lootState; }
- void SetLootState(LootState s) { m_lootState = s; }
+ void SetLootState(LootState s);
uint16 GetLootMode() { return m_LootMode; }
bool HasLootMode(uint16 lootMode) { return m_LootMode & lootMode; }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 1dc34c501fa..6854a68ac1d 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -17848,7 +17848,8 @@ void Player::_LoadWeeklyQuestStatus(PreparedQueryResult result)
{
do
{
- uint32 quest_id = (*result)[0].GetUInt32();
+ Field* fields = result->Fetch();
+ uint32 quest_id = fields[0].GetUInt32();
Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id);
if (!quest)
continue;
@@ -17870,8 +17871,9 @@ void Player::_LoadSeasonalQuestStatus(PreparedQueryResult result)
{
do
{
- uint32 quest_id = (*result)[0].GetUInt32();
- uint16 event_id = (*result)[1].GetUInt16();
+ Field* fields = result->Fetch();
+ uint32 quest_id = fields[0].GetUInt32();
+ uint32 event_id = fields[1].GetUInt32();
Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id);
if (!quest)
continue;
@@ -19011,15 +19013,15 @@ void Player::_SaveSeasonalQuestStatus(SQLTransaction& trans)
for (SeasonalEventQuestMap::const_iterator iter = m_seasonalquests.begin(); iter != m_seasonalquests.end(); ++iter)
{
- uint16 event_id = iter->first;
- for (SeasonalQuestSet::const_iterator itr = (iter->second).begin(); itr != (iter->second).end(); ++itr)
+ uint16 event_id = iter->first;
+ for (SeasonalQuestSet::const_iterator itr = iter->second.begin(); itr != iter->second.end(); ++itr)
{
- uint32 quest_id = (*itr);
+ uint32 quest_id = (*itr);
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SEASONALQUESTSTATUS);
- stmt->setUInt32(0,GetGUIDLow());
- stmt->setUInt32(1,quest_id);
- stmt->setUInt16(1,event_id);
+ stmt->setUInt32(0, GetGUIDLow());
+ stmt->setUInt32(1, quest_id);
+ stmt->setUInt32(2, event_id);
trans->Append(stmt);
}
}
diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
index d828a866c49..d5d205279f7 100755
--- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
@@ -169,6 +169,11 @@ void WorldSession::HandleWhoOpcode(WorldPacket & recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Recvd CMSG_WHO Message");
+ time_t now = time(NULL);
+ if (now - timeLastWhoCommand < 5)
+ return;
+ else timeLastWhoCommand = now;
+
uint32 matchcount = 0;
uint32 level_min, level_max, racemask, classmask, zones_count, str_count;
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 11085c98d2c..6bd09f2b3a7 100755
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -94,7 +94,7 @@ m_playerRecentlyLogout(false), m_playerSave(false),
m_sessionDbcLocale(sWorld->GetAvailableDbcLocale(locale)),
m_sessionDbLocaleIndex(locale),
m_latency(0), m_TutorialsChanged(false), recruiterId(recruiter),
-isRecruiter(isARecruiter)
+isRecruiter(isARecruiter), timeLastWhoCommand(0)
{
if (sock)
{
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index fac910abc71..951f205c1e2 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -949,6 +949,7 @@ class WorldSession
uint32 recruiterId;
bool isRecruiter;
ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue;
+ time_t timeLastWhoCommand;
};
#endif
/// @}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 0e25fdcbf37..40b3101cfd5 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2787,9 +2787,8 @@ void Spell::SendLoot(uint64 guid, LootType loottype)
return;
case GAMEOBJECT_TYPE_QUESTGIVER:
- // start or end quest
- player->PrepareQuestMenu(guid);
- player->SendPreparedQuest(guid);
+ player->PrepareGossipMenu(gameObjTarget, gameObjTarget->GetGOInfo()->questgiver.gossipID);
+ player->SendPreparedGossip(gameObjTarget);
return;
case GAMEOBJECT_TYPE_SPELL_FOCUS:
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index b7c31ee29c6..e57cbf4a390 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2960,8 +2960,10 @@ void SpellMgr::LoadDbcDataCorrections()
switch (spellInfo->Id)
{
- case 42835: // Spout
- spellInfo->Effect[0] = 0; // remove damage effect, only anim is needed
+ case 40244: case 40245: // Simon Game Visual
+ case 40246: case 40247: // Simon Game Visual
+ case 42835: // Spout, remove damage effect, only anim is needed
+ spellInfo->Effect[0] = 0;
break;
case 30657: // Quake
spellInfo->EffectTriggerSpell[0] = 30571;
@@ -3495,6 +3497,11 @@ void SpellMgr::LoadDbcDataCorrections()
case 72405: // Broken Frostmourne
spellInfo->EffectRadiusIndex[1] = EFFECT_RADIUS_200_YARDS; // 200yd
break;
+ case 40055: // Introspection
+ case 40165: // Introspection
+ case 40166: // Introspection
+ case 40167: // Introspection
+ spellInfo->Attributes |= SPELL_ATTR0_NEGATIVE_1;
default:
break;
}
diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp
index bd415c0f79f..ac265acbf71 100644
--- a/src/server/scripts/Commands/cs_account.cpp
+++ b/src/server/scripts/Commands/cs_account.cpp
@@ -109,7 +109,8 @@ public:
{
case AOR_OK:
handler->PSendSysMessage(LANG_ACCOUNT_CREATED, accountName);
- sLog->outChar("Account: %d (IP: %s) Character:[%s] (GUID: %u) Change Password.", handler->GetSession()->GetAccountId(),handler->GetSession()->GetRemoteAddress().c_str(), handler->GetSession()->GetPlayer()->GetName(), handler->GetSession()->GetPlayer()->GetGUIDLow());
+ if (handler->GetSession())
+ sLog->outChar("Account: %d (IP: %s) Character:[%s] (GUID: %u) Change Password.", handler->GetSession()->GetAccountId(),handler->GetSession()->GetRemoteAddress().c_str(), handler->GetSession()->GetPlayer()->GetName(), handler->GetSession()->GetPlayer()->GetGUIDLow());
break;
case AOR_NAME_TOO_LONG:
handler->SendSysMessage(LANG_ACCOUNT_TOO_LONG);
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
index b1aaf82e35b..4d8ce4ef4ed 100644
--- a/src/server/scripts/Commands/cs_reload.cpp
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -36,6 +36,7 @@ EndScriptData */
#include "SkillDiscovery.h"
#include "SkillExtraItems.h"
#include "Chat.h"
+#include "WaypointManager.h"
class reload_commandscript : public CommandScript
{
@@ -144,13 +145,14 @@ public:
{ "spell_linked_spell", SEC_ADMINISTRATOR, true, &HandleReloadSpellLinkedSpellCommand, "", NULL },
{ "spell_pet_auras", SEC_ADMINISTRATOR, true, &HandleReloadSpellPetAurasCommand, "", NULL },
{ "spell_proc_event", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcEventCommand, "", NULL },
- { "spell_proc", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcsCommand, "", NULL },
+ { "spell_proc", SEC_ADMINISTRATOR, true, &HandleReloadSpellProcsCommand, "", NULL },
{ "spell_scripts", SEC_ADMINISTRATOR, true, &HandleReloadSpellScriptsCommand, "", NULL },
{ "spell_target_position", SEC_ADMINISTRATOR, true, &HandleReloadSpellTargetPositionCommand, "", NULL },
{ "spell_threats", SEC_ADMINISTRATOR, true, &HandleReloadSpellThreatsCommand, "", NULL },
{ "spell_group_stack_rules", SEC_ADMINISTRATOR, true, &HandleReloadSpellGroupStackRulesCommand, "", NULL },
{ "trinity_string", SEC_ADMINISTRATOR, true, &HandleReloadTrinityStringCommand, "", NULL },
{ "waypoint_scripts", SEC_ADMINISTRATOR, true, &HandleReloadWpScriptsCommand, "", NULL },
+ { "waypoint_data", SEC_ADMINISTRATOR, true, &HandleReloadWpCommand, "", NULL },
{ "vehicle_accessory", SEC_ADMINISTRATOR, true, &HandleReloadVehicleAccessoryCommand, "", NULL },
{ "vehicle_template_accessory", SEC_ADMINISTRATOR, true, &HandleReloadVehicleTemplateAccessoryCommand, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
@@ -264,6 +266,7 @@ public:
handler->SendGlobalGMSysMessage("DB tables `*_scripts` reloaded.");
HandleReloadDbScriptStringCommand(handler, "a");
HandleReloadWpScriptsCommand(handler, "a");
+ HandleReloadWpCommand(handler, "a");
return true;
}
@@ -986,6 +989,19 @@ public:
return true;
}
+ static bool HandleReloadWpCommand(ChatHandler* handler, const char* args)
+ {
+ if (*args != 'a')
+ sLog->outString("Re-Loading Waypoints data from 'waypoints_data'");
+
+ sWaypointMgr->Load();
+
+ if (*args != 'a')
+ sLog->outString("DB Table 'waypoint_data' reloaded.");
+
+ return true;
+ }
+
static bool HandleReloadEventAITextsCommand(ChatHandler* handler, const char* /*args*/)
{
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp
index d3083146967..1292cdaee17 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp
@@ -27,8 +27,9 @@ enum Spells
enum Yells
{
- YELL_AGGRO = -1810023,
- YELL_EVADE = -1810024
+ YELL_AGGRO = 0,
+ YELL_EVADE = 1,
+ YELL_SALVATION = 2,
};
enum Creatures
@@ -122,7 +123,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(YELL_AGGRO, me);
+ Talk(YELL_AGGRO);
}
void JustRespawned()
@@ -185,7 +186,7 @@ public:
if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50)
{
EnterEvadeMode();
- DoScriptText(YELL_EVADE, me);
+ Talk(YELL_EVADE);
}
resetTimer = 5 * IN_MILLISECONDS;
} else resetTimer -= diff;
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp
index 959ed88be1c..8b2a95be977 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp
@@ -31,14 +31,10 @@ enum Spells
enum Yells
{
- YELL_AGGRO = -1810000,
- YELL_EVADE = -1810001,
- YELL_RESPAWN = -1810002,
- YELL_RANDOM1 = -1810003,
- YELL_RANDOM2 = -1810004,
- YELL_RANDOM3 = -1810005,
- YELL_RANDOM4 = -1810006,
- YELL_RANDOM5 = -1810007
+ YELL_AGGRO = 0,
+ YELL_EVADE = 1,
+ YELL_RESPAWN = 2,
+ YELL_RANDOM = 3
};
class boss_drekthar : public CreatureScript
@@ -69,13 +65,13 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(YELL_AGGRO, me);
+ Talk(YELL_AGGRO);
}
void JustRespawned()
{
Reset();
- DoScriptText(YELL_RESPAWN, me);
+ Talk(YELL_RESPAWN);
}
void UpdateAI(const uint32 diff)
@@ -109,7 +105,7 @@ public:
if (YellTimer <= diff)
{
- DoScriptText(RAND(YELL_RANDOM1, YELL_RANDOM2, YELL_RANDOM3, YELL_RANDOM4, YELL_RANDOM5), me);
+ Talk(YELL_RANDOM);
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds
} else YellTimer -= diff;
@@ -119,7 +115,7 @@ public:
if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50)
{
EnterEvadeMode();
- DoScriptText(YELL_EVADE, me);
+ Talk(YELL_EVADE);
}
ResetTimer = 5 * IN_MILLISECONDS;
} else ResetTimer -= diff;
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp
index 95c16612aef..da53cffc99d 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp
@@ -28,8 +28,8 @@ enum Spells
enum Yells
{
- YELL_AGGRO = -1810021,
- YELL_EVADE = -1810022
+ YELL_AGGRO = 0,
+ YELL_EVADE = 1
};
class boss_galvangar : public CreatureScript
@@ -60,7 +60,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(YELL_AGGRO, me);
+ Talk(YELL_AGGRO);
}
void JustRespawned()
@@ -109,7 +109,7 @@ public:
if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50)
{
EnterEvadeMode();
- DoScriptText(YELL_EVADE, me);
+ Talk(YELL_EVADE);
}
ResetTimer = 5 * IN_MILLISECONDS;
} else ResetTimer -= diff;
diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp
index 94b5bc9a56c..54fcb9d99c2 100644
--- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp
+++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp
@@ -19,17 +19,12 @@
enum Yells
{
- YELL_AGGRO = -1810008,
- YELL_EVADE = -1810009,
- YELL_RESPAWN1 = -1810010,
- YELL_RESPAWN2 = -1810011,
- YELL_RANDOM1 = -1810012,
- YELL_RANDOM2 = -1810013,
- YELL_RANDOM3 = -1810014,
- YELL_RANDOM4 = -1810015,
- YELL_RANDOM5 = -1810016,
- YELL_RANDOM6 = -1810017,
- YELL_RANDOM7 = -1810018
+ YELL_AGGRO = 0,
+ YELL_EVADE = 1,
+ YELL_RESPAWN1 = -1810010, // no creature_text
+ YELL_RESPAWN2 = -1810011, // no creature_text
+ YELL_RANDOM = 2,
+ YELL_SPELL = 3,
};
enum Spells
@@ -65,7 +60,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(YELL_AGGRO, me);
+ Talk(YELL_AGGRO);
}
void JustRespawned()
@@ -99,7 +94,7 @@ public:
if (YellTimer <= diff)
{
- DoScriptText(RAND(YELL_RANDOM1, YELL_RANDOM2, YELL_RANDOM3, YELL_RANDOM4, YELL_RANDOM5, YELL_RANDOM6, YELL_RANDOM7), me);
+ Talk(YELL_RANDOM);
YellTimer = urand(20 * IN_MILLISECONDS, 30 * IN_MILLISECONDS); //20 to 30 seconds
} else YellTimer -= diff;
@@ -109,7 +104,7 @@ public:
if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50)
{
EnterEvadeMode();
- DoScriptText(YELL_EVADE, me);
+ Talk(YELL_EVADE);
}
ResetTimer = 5 * IN_MILLISECONDS;
} else ResetTimer -= diff;
diff --git a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp
index 8b6cbf26de2..e2a9717882b 100644
--- a/src/server/scripts/EasternKingdoms/arathi_highlands.cpp
+++ b/src/server/scripts/EasternKingdoms/arathi_highlands.cpp
@@ -36,16 +36,16 @@ EndContentData */
enum eEnums
{
- SAY_PROGRESS_1 = -1000264,
- SAY_PROGRESS_2 = -1000265,
- SAY_PROGRESS_3 = -1000266,
- EMOTE_PROGRESS_4 = -1000267,
- SAY_AGGRO = -1000268,
- SAY_PROGRESS_5 = -1000269,
- SAY_PROGRESS_6 = -1000270,
- SAY_PROGRESS_7 = -1000271,
- EMOTE_PROGRESS_8 = -1000272,
- SAY_PROGRESS_9 = -1000273,
+ SAY_PROGRESS_1 = 0,
+ SAY_PROGRESS_2 = 1,
+ SAY_PROGRESS_3 = 2,
+ EMOTE_PROGRESS_4 = 3,
+ SAY_AGGRO = 4,
+ SAY_PROGRESS_5 = 5,
+ SAY_PROGRESS_6 = 6,
+ SAY_PROGRESS_7 = 7,
+ EMOTE_PROGRESS_8 = 8,
+ SAY_PROGRESS_9 = 9,
QUEST_SUNKEN_TREASURE = 665,
MOB_VENGEFUL_SURGE = 2776
@@ -73,24 +73,24 @@ class npc_professor_phizzlethorpe : public CreatureScript
switch (uiPointId)
{
- case 4:DoScriptText(SAY_PROGRESS_2, me, player);break;
- case 5:DoScriptText(SAY_PROGRESS_3, me, player);break;
- case 8:DoScriptText(EMOTE_PROGRESS_4, me);break;
+ case 4:Talk(SAY_PROGRESS_2, player->GetGUID());break;
+ case 5:Talk(SAY_PROGRESS_3, player->GetGUID());break;
+ case 8:Talk(EMOTE_PROGRESS_4);break;
case 9:
{
me->SummonCreature(MOB_VENGEFUL_SURGE, -2052.96f, -2142.49f, 20.15f, 1.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
me->SummonCreature(MOB_VENGEFUL_SURGE, -2052.96f, -2142.49f, 20.15f, 1.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
break;
}
- case 10:DoScriptText(SAY_PROGRESS_5, me, player);break;
+ case 10:Talk(SAY_PROGRESS_5, player->GetGUID());break;
case 11:
- DoScriptText(SAY_PROGRESS_6, me, player);
+ Talk(SAY_PROGRESS_6, player->GetGUID());
SetRun();
break;
- case 19:DoScriptText(SAY_PROGRESS_7, me, player); break;
+ case 19:Talk(SAY_PROGRESS_7, player->GetGUID()); break;
case 20:
- DoScriptText(EMOTE_PROGRESS_8, me);
- DoScriptText(SAY_PROGRESS_9, me, player);
+ Talk(EMOTE_PROGRESS_8);
+ Talk(SAY_PROGRESS_9, player->GetGUID());
if (player)
CAST_PLR(player)->GroupEventHappens(QUEST_SUNKEN_TREASURE, me);
break;
@@ -104,7 +104,7 @@ class npc_professor_phizzlethorpe : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
}
void UpdateAI(const uint32 diff)
@@ -122,7 +122,7 @@ class npc_professor_phizzlethorpe : public CreatureScript
{
if (quest->GetQuestId() == QUEST_SUNKEN_TREASURE)
{
- DoScriptText(SAY_PROGRESS_1, creature, player);
+ creature->AI()->Talk(SAY_PROGRESS_1, player->GetGUID());
if (npc_escortAI* pEscortAI = CAST_AI(npc_professor_phizzlethorpeAI, (creature->AI())))
pEscortAI->Start(false, false, player->GetGUID(), quest);
diff --git a/src/server/scripts/EasternKingdoms/duskwood.cpp b/src/server/scripts/EasternKingdoms/duskwood.cpp
index 872137ee937..5d04489bbca 100644
--- a/src/server/scripts/EasternKingdoms/duskwood.cpp
+++ b/src/server/scripts/EasternKingdoms/duskwood.cpp
@@ -25,6 +25,14 @@ EndScriptData */
#include "ScriptPCH.h"
+enum Yells
+{
+ YELL_TWILIGHTCORRUPTOR_RESPAWN = 0,
+ YELL_TWILIGHTCORRUPTOR_AGGRO = 1,
+ YELL_TWILIGHTCORRUPTOR_KILL = 2,
+};
+
+
/*######
# at_twilight_grove
######*/
@@ -43,11 +51,11 @@ public:
TCorrupter->setFaction(14);
TCorrupter->SetMaxHealth(832750);
}
- if (Unit* CorrupterSpeaker = player->SummonCreature(1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()-1, 0, TEMPSUMMON_TIMED_DESPAWN, 15000))
+ if (Creature* CorrupterSpeaker = player->SummonCreature(1, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()-1, 0, TEMPSUMMON_TIMED_DESPAWN, 15000))
{
CorrupterSpeaker->SetName("Twilight Corrupter");
CorrupterSpeaker->SetVisible(true);
- CorrupterSpeaker->MonsterYell("Come, $N. See what the Nightmare brings...", 0, player->GetGUID());
+ CorrupterSpeaker->AI()->Talk(YELL_TWILIGHTCORRUPTOR_RESPAWN, player->GetGUID());
}
}
return false;
@@ -89,7 +97,7 @@ public:
}
void EnterCombat(Unit* /*who*/)
{
- me->MonsterYell("The Nightmare cannot be stopped!", 0, me->GetGUID());
+ Talk(YELL_TWILIGHTCORRUPTOR_AGGRO);
}
void KilledUnit(Unit* victim)
@@ -97,7 +105,7 @@ public:
if (victim->GetTypeId() == TYPEID_PLAYER)
{
++KillCount;
- me->MonsterTextEmote("Twilight Corrupter squeezes the last bit of life out of $N and swallows their soul.", victim->GetGUID(), true);
+ Talk(YELL_TWILIGHTCORRUPTOR_KILL, victim->GetGUID());
if (KillCount == 3)
{
diff --git a/src/server/scripts/EasternKingdoms/eversong_woods.cpp b/src/server/scripts/EasternKingdoms/eversong_woods.cpp
index 7c09a740d26..4797774ef49 100644
--- a/src/server/scripts/EasternKingdoms/eversong_woods.cpp
+++ b/src/server/scripts/EasternKingdoms/eversong_woods.cpp
@@ -69,10 +69,10 @@ enum eFaction
enum eSays
{
- TEXT_SECOND_TRIAL_1 = -1000637,
- TEXT_SECOND_TRIAL_2 = -1000638,
- TEXT_SECOND_TRIAL_3 = -1000639,
- TEXT_SECOND_TRIAL_4 = -1000640,
+ TEXT_SECOND_TRIAL_1 = 0,
+ TEXT_SECOND_TRIAL_2 = 1,
+ TEXT_SECOND_TRIAL_3 = 2,
+ TEXT_SECOND_TRIAL_4 = 3,
};
struct Locations
@@ -335,16 +335,16 @@ public:
switch (paladinPhase)
{
case 0:
- DoScriptText(TEXT_SECOND_TRIAL_1, me);
+ Talk(TEXT_SECOND_TRIAL_1);
break;
case 1:
- DoScriptText(TEXT_SECOND_TRIAL_2, me);
+ Talk(TEXT_SECOND_TRIAL_2);
break;
case 2:
- DoScriptText(TEXT_SECOND_TRIAL_3, me);
+ Talk(TEXT_SECOND_TRIAL_3);
break;
case 3:
- DoScriptText(TEXT_SECOND_TRIAL_4, me);
+ Talk(TEXT_SECOND_TRIAL_4);
break;
}
}
diff --git a/src/server/scripts/EasternKingdoms/ghostlands.cpp b/src/server/scripts/EasternKingdoms/ghostlands.cpp
index a5a8bd45cfd..412613572f1 100644
--- a/src/server/scripts/EasternKingdoms/ghostlands.cpp
+++ b/src/server/scripts/EasternKingdoms/ghostlands.cpp
@@ -34,45 +34,6 @@ EndContentData */
#include "ScriptedEscortAI.h"
/*######
-## npc_blood_knight_dawnstar
-######*/
-
-#define GOSSIP_H_BKD "Take Blood Knight Insignia"
-
-class npc_blood_knight_dawnstar : public CreatureScript
-{
-public:
- npc_blood_knight_dawnstar() : CreatureScript("npc_blood_knight_dawnstar") { }
-
- bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*uiSender*/, uint32 uiAction)
- {
- player->PlayerTalkClass->ClearMenus();
- if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
- {
- ItemPosCountVec dest;
- uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 24226, 1, NULL);
- if (msg == EQUIP_ERR_OK)
- {
- player->StoreNewItem(dest, 24226, 1, true);
- player->PlayerTalkClass->ClearMenus();
- }
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (player->GetQuestStatus(9692) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(24226, 1, true))
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_H_BKD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
-
- player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
-
- return true;
- }
-
-};
-
-/*######
## npc_budd_nedreck
######*/
@@ -255,7 +216,6 @@ public:
void AddSC_ghostlands()
{
- new npc_blood_knight_dawnstar();
new npc_budd_nedreck();
new npc_rathis_tomber();
new npc_ranger_lilatha();
diff --git a/src/server/scripts/Outland/blades_edge_mountains.cpp b/src/server/scripts/Outland/blades_edge_mountains.cpp
index d78d4afbfb8..97ce9f45430 100644
--- a/src/server/scripts/Outland/blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/blades_edge_mountains.cpp
@@ -562,6 +562,564 @@ class go_thunderspike : public GameObjectScript
}
};
+enum SimonGame
+{
+ NPC_SIMON_BUNNY = 22923,
+ NPC_APEXIS_GUARDIAN = 22275,
+
+ GO_APEXIS_RELIC = 185890,
+ GO_APEXIS_MONUMENT = 185944,
+ GO_AURA_BLUE = 185872,
+ GO_AURA_GREEN = 185873,
+ GO_AURA_RED = 185874,
+ GO_AURA_YELLOW = 185875,
+
+ GO_BLUE_CLUSTER_DISPLAY = 7369,
+ GO_GREEN_CLUSTER_DISPLAY = 7371,
+ GO_RED_CLUSTER_DISPLAY = 7373,
+ GO_YELLOW_CLUSTER_DISPLAY = 7375,
+ GO_BLUE_CLUSTER_DISPLAY_LARGE = 7364,
+ GO_GREEN_CLUSTER_DISPLAY_LARGE = 7365,
+ GO_RED_CLUSTER_DISPLAY_LARGE = 7366,
+ GO_YELLOW_CLUSTER_DISPLAY_LARGE = 7367,
+
+ SPELL_PRE_GAME_BLUE = 40176,
+ SPELL_PRE_GAME_GREEN = 40177,
+ SPELL_PRE_GAME_RED = 40178,
+ SPELL_PRE_GAME_YELLOW = 40179,
+ SPELL_VISUAL_BLUE = 40244,
+ SPELL_VISUAL_GREEN = 40245,
+ SPELL_VISUAL_RED = 40246,
+ SPELL_VISUAL_YELLOW = 40247,
+
+ SOUND_BLUE = 11588,
+ SOUND_GREEN = 11589,
+ SOUND_RED = 11590,
+ SOUND_YELLOW = 11591,
+ SOUND_DISABLE_NODE = 11758,
+
+ SPELL_AUDIBLE_GAME_TICK = 40391,
+ SPELL_VISUAL_START_PLAYER_LEVEL = 40436,
+ SPELL_VISUAL_START_AI_LEVEL = 40387,
+
+ SPELL_BAD_PRESS_TRIGGER = 41241,
+ SPELL_BAD_PRESS_DAMAGE = 40065,
+ SPELL_REWARD_BUFF_1 = 40310,
+ SPELL_REWARD_BUFF_2 = 40311,
+ SPELL_REWARD_BUFF_3 = 40312,
+};
+
+enum SimonEvents
+{
+ EVENT_SIMON_SETUP_PRE_GAME = 1,
+ EVENT_SIMON_PLAY_SEQUENCE = 2,
+ EVENT_SIMON_RESET_CLUSTERS = 3,
+ EVENT_SIMON_PERIODIC_PLAYER_CHECK = 4,
+ EVENT_SIMON_TOO_LONG_TIME = 5,
+ EVENT_SIMON_GAME_TICK = 6,
+ EVENT_SIMON_ROUND_FINISHED = 7,
+
+ ACTION_SIMON_CORRECT_FULL_SEQUENCE = 8,
+ ACTION_SIMON_WRONG_SEQUENCE = 9,
+ ACTION_SIMON_ROUND_FINISHED = 10,
+};
+
+enum SimonColors
+{
+ SIMON_BLUE = 0,
+ SIMON_RED = 1,
+ SIMON_GREEN = 2,
+ SIMON_YELLOW = 3,
+ SIMON_MAX_COLORS = 4,
+};
+
+class npc_simon_bunny : public CreatureScript
+{
+ public:
+ npc_simon_bunny() : CreatureScript("npc_simon_bunny") { }
+
+ struct npc_simon_bunnyAI : public ScriptedAI
+ {
+ npc_simon_bunnyAI(Creature* creature) : ScriptedAI(creature) { }
+
+ bool large;
+ bool listening;
+ uint8 gameLevel;
+ uint8 fails;
+ uint8 gameTicks;
+ uint64 playerGUID;
+ uint32 clusterIds[SIMON_MAX_COLORS];
+ float zCoordCorrection;
+ float searchDistance;
+ EventMap _events;
+ std::list<uint8> colorSequence, playableSequence, playerSequence;
+
+ void UpdateAI(const uint32 diff)
+ {
+ _events.Update(diff);
+
+ switch(_events.ExecuteEvent())
+ {
+ case EVENT_SIMON_PERIODIC_PLAYER_CHECK:
+ if (!CheckPlayer())
+ ResetNode();
+ else
+ _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2000);
+ break;
+ case EVENT_SIMON_SETUP_PRE_GAME:
+ SetUpPreGame();
+ _events.CancelEvent(EVENT_SIMON_GAME_TICK);
+ _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1000);
+ break;
+ case EVENT_SIMON_PLAY_SEQUENCE:
+ if (!playableSequence.empty())
+ {
+ PlayNextColor();
+ _events.ScheduleEvent(EVENT_SIMON_PLAY_SEQUENCE, 1500);
+ }
+ else
+ {
+ listening = true;
+ DoCast(SPELL_VISUAL_START_PLAYER_LEVEL);
+ playerSequence.clear();
+ PrepareClusters();
+ gameTicks = 0;
+ _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3000);
+ }
+ break;
+ case EVENT_SIMON_GAME_TICK:
+ DoCast(SPELL_AUDIBLE_GAME_TICK);
+
+ if (gameTicks > gameLevel)
+ _events.ScheduleEvent(EVENT_SIMON_TOO_LONG_TIME, 500);
+ else
+ _events.ScheduleEvent(EVENT_SIMON_GAME_TICK, 3000);
+ gameTicks++;
+ break;
+ case EVENT_SIMON_RESET_CLUSTERS:
+ PrepareClusters(true);
+ break;
+ case EVENT_SIMON_TOO_LONG_TIME:
+ DoAction(ACTION_SIMON_WRONG_SEQUENCE);
+ break;
+ case EVENT_SIMON_ROUND_FINISHED:
+ DoAction(ACTION_SIMON_ROUND_FINISHED);
+ break;
+ }
+ }
+
+ void DoAction(const int32 action)
+ {
+ switch (action)
+ {
+ case ACTION_SIMON_ROUND_FINISHED:
+ listening = false;
+ DoCast(SPELL_VISUAL_START_AI_LEVEL);
+ GiveRewardForLevel(gameLevel);
+ _events.CancelEventGroup(0);
+ if (gameLevel == 10)
+ ResetNode();
+ else
+ _events.ScheduleEvent(EVENT_SIMON_SETUP_PRE_GAME, 1000);
+ break;
+ case ACTION_SIMON_CORRECT_FULL_SEQUENCE:
+ gameLevel++;
+ DoAction(ACTION_SIMON_ROUND_FINISHED);
+ break;
+ case ACTION_SIMON_WRONG_SEQUENCE:
+ GivePunishment();
+ DoAction(ACTION_SIMON_ROUND_FINISHED);
+ break;
+ }
+ }
+
+ // Called by color clusters script (go_simon_cluster) and used for knowing the button pressed by player
+ void SetData(uint32 type, uint32 /*data*/)
+ {
+ if (!listening)
+ return;
+
+ uint8 pressedColor;
+
+ if (type == clusterIds[SIMON_RED])
+ pressedColor = SIMON_RED;
+ else if (type == clusterIds[SIMON_BLUE])
+ pressedColor = SIMON_BLUE;
+ else if (type == clusterIds[SIMON_GREEN])
+ pressedColor = SIMON_GREEN;
+ else if (type == clusterIds[SIMON_YELLOW])
+ pressedColor = SIMON_YELLOW;
+
+ PlayColor(pressedColor);
+ playerSequence.push_back(pressedColor);
+ _events.ScheduleEvent(EVENT_SIMON_RESET_CLUSTERS, 500);
+ CheckPlayerSequence();
+ }
+
+ // Used for getting involved player guid. Parameter id is used for defining if is a large(Monument) or small(Relic) node
+ void SetGUID(uint64 guid, int32 id)
+ {
+ me->SetFlying(true);
+
+ large = (bool)id;
+ playerGUID = guid;
+ StartGame();
+ }
+
+ /*
+ Resets all variables and also find the ids of the four closests color clusters, since every simon
+ node have diferent ids for clusters this is absolutely NECESSARY.
+ */
+ void StartGame()
+ {
+ listening = false;
+ gameLevel = 0;
+ fails = 0;
+ gameTicks = 0;
+ zCoordCorrection = large ? 8.0f : 2.75f;
+ searchDistance = large ? 13.0f : 5.0f;
+ colorSequence.clear();
+ playableSequence.clear();
+ playerSequence.clear();
+ me->SetFloatValue(OBJECT_FIELD_SCALE_X, large ? 2 : 1);
+
+ std::list<WorldObject*> ClusterList;
+ Trinity::AllWorldObjectsInRange objects(me, searchDistance);
+ Trinity::WorldObjectListSearcher<Trinity::AllWorldObjectsInRange> searcher(me, ClusterList, objects);
+ me->VisitNearbyObject(searchDistance, searcher);
+
+ for (std::list<WorldObject*>::const_iterator i = ClusterList.begin(); i != ClusterList.end(); ++i)
+ {
+ if (GameObject* go = (*i)->ToGameObject())
+ {
+ // We are checking for displayid because all simon nodes have 4 clusters with different entries
+ if (large)
+ {
+ switch (go->GetGOInfo()->displayId)
+ {
+ case GO_BLUE_CLUSTER_DISPLAY_LARGE: clusterIds[SIMON_BLUE] = go->GetEntry(); break;
+ case GO_RED_CLUSTER_DISPLAY_LARGE: clusterIds[SIMON_RED] = go->GetEntry(); break;
+ case GO_GREEN_CLUSTER_DISPLAY_LARGE: clusterIds[SIMON_GREEN] = go->GetEntry(); break;
+ case GO_YELLOW_CLUSTER_DISPLAY_LARGE: clusterIds[SIMON_YELLOW] = go->GetEntry(); break;
+ }
+ }
+ else
+ {
+ switch (go->GetGOInfo()->displayId)
+ {
+ case GO_BLUE_CLUSTER_DISPLAY: clusterIds[SIMON_BLUE] = go->GetEntry(); break;
+ case GO_RED_CLUSTER_DISPLAY: clusterIds[SIMON_RED] = go->GetEntry(); break;
+ case GO_GREEN_CLUSTER_DISPLAY: clusterIds[SIMON_GREEN] = go->GetEntry(); break;
+ case GO_YELLOW_CLUSTER_DISPLAY: clusterIds[SIMON_YELLOW] = go->GetEntry(); break;
+ }
+ }
+ }
+ }
+
+ _events.Reset();
+ _events.ScheduleEvent(EVENT_SIMON_ROUND_FINISHED, 1000);
+ _events.ScheduleEvent(EVENT_SIMON_PERIODIC_PLAYER_CHECK, 2000);
+
+ if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
+ relic->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ }
+
+ // Called when despawning the bunny. Sets all the node GOs to their default states.
+ void ResetNode()
+ {
+ DoPlaySoundToSet(me, SOUND_DISABLE_NODE);
+
+ for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++)
+ if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance))
+ cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ for (uint32 auraId = GO_AURA_BLUE; auraId <= GO_AURA_YELLOW; auraId++)
+ if (GameObject* auraGo = me->FindNearestGameObject(auraId, searchDistance))
+ auraGo->RemoveFromWorld();
+
+ if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
+ relic->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ me->ForcedDespawn(1000);
+ }
+
+ /*
+ Called on every button click of player. Adds the clicked color to the player created sequence and
+ checks if it corresponds to the AI created sequence. If so, incremente gameLevel and start a new
+ round, if not, give punishment and restart current level.
+ */
+ void CheckPlayerSequence()
+ {
+ bool correct = true;
+ if (playerSequence.size() <= colorSequence.size())
+ for (std::list<uint8>::const_iterator i = playerSequence.begin(), j = colorSequence.begin(); i != playerSequence.end(); ++i, ++j)
+ if ((*i) != (*j))
+ correct = false;
+
+ if (correct && (playerSequence.size() == colorSequence.size()))
+ DoAction(ACTION_SIMON_CORRECT_FULL_SEQUENCE);
+ else if (!correct)
+ DoAction(ACTION_SIMON_WRONG_SEQUENCE);
+ }
+
+ /*
+ Generates a random sequence of colors depending on the gameLevel. We also copy this sequence to
+ the playableSequence wich will be used when playing the sequence to the player.
+ */
+ void GenerateColorSequence()
+ {
+ colorSequence.clear();
+ for (uint8 i = 0; i <= gameLevel; i++)
+ colorSequence.push_back(RAND(SIMON_BLUE, SIMON_RED, SIMON_GREEN, SIMON_YELLOW));
+
+ for (std::list<uint8>::const_iterator i = colorSequence.begin(); i != colorSequence.end(); ++i)
+ playableSequence.push_back(*i);
+ }
+
+
+ // Remove any existant glowing auras over clusters and set clusters ready for interating with them.
+ void PrepareClusters(bool clustersOnly = false)
+ {
+ for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++)
+ if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], searchDistance))
+ cluster->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ if (clustersOnly)
+ return;
+
+ for (uint32 auraId = GO_AURA_BLUE; auraId <= GO_AURA_YELLOW; auraId++)
+ if (GameObject* auraGo = me->FindNearestGameObject(auraId, searchDistance))
+ auraGo->RemoveFromWorld();
+ }
+
+ /*
+ Called when AI is playing the sequence for player. We cast the visual spell and then remove the
+ casted color from the casting sequence.
+ */
+ void PlayNextColor()
+ {
+ PlayColor(*playableSequence.begin());
+ playableSequence.erase(playableSequence.begin());
+ }
+
+ // Casts a spell and plays a sound depending on parameter color.
+ void PlayColor(uint8 color)
+ {
+ switch (color)
+ {
+ case SIMON_BLUE:
+ DoCast(SPELL_VISUAL_BLUE);
+ DoPlaySoundToSet(me, SOUND_BLUE);
+ break;
+ case SIMON_GREEN:
+ DoCast(SPELL_VISUAL_GREEN);
+ DoPlaySoundToSet(me, SOUND_GREEN);
+ break;
+ case SIMON_RED:
+ DoCast(SPELL_VISUAL_RED);
+ DoPlaySoundToSet(me, SOUND_RED);
+ break;
+ case SIMON_YELLOW:
+ DoCast(SPELL_VISUAL_YELLOW);
+ DoPlaySoundToSet(me, SOUND_YELLOW);
+ break;
+ }
+ }
+
+ /*
+ Creates the transparent glowing auras on every cluster of this node.
+ After calling this function bunny is teleported to the center of the node.
+ */
+ void SetUpPreGame()
+ {
+ for (uint32 clusterId = SIMON_BLUE; clusterId < SIMON_MAX_COLORS; clusterId++)
+ {
+ if (GameObject* cluster = me->FindNearestGameObject(clusterIds[clusterId], 2.0f*searchDistance))
+ {
+ cluster->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ // break since we don't need glowing auras for large clusters
+ if (large)
+ break;
+
+ float x, y, z, o;
+ cluster->GetPosition(x, y, z, o);
+ me->NearTeleportTo(x, y, z, o);
+
+ uint32 preGameSpellId;
+ if (cluster->GetEntry() == clusterIds[SIMON_RED])
+ preGameSpellId = SPELL_PRE_GAME_RED;
+ else if (cluster->GetEntry() == clusterIds[SIMON_BLUE])
+ preGameSpellId = SPELL_PRE_GAME_BLUE;
+ else if (cluster->GetEntry() == clusterIds[SIMON_GREEN])
+ preGameSpellId = SPELL_PRE_GAME_GREEN;
+ else if (cluster->GetEntry() == clusterIds[SIMON_YELLOW])
+ preGameSpellId = SPELL_PRE_GAME_YELLOW;
+ else break;
+
+ me->CastSpell(cluster, preGameSpellId, true);
+ }
+ }
+
+ if (GameObject* relic = me->FindNearestGameObject(large ? GO_APEXIS_MONUMENT : GO_APEXIS_RELIC, searchDistance))
+ {
+ float x, y, z, o;
+ relic->GetPosition(x, y, z, o);
+ me->NearTeleportTo(x, y, z + zCoordCorrection, o);
+ }
+
+ GenerateColorSequence();
+ }
+
+ // Handles the spell rewards. The spells also have the QuestCompleteEffect, so quests credits are working.
+ void GiveRewardForLevel(uint8 level)
+ {
+ uint32 rewSpell;
+ switch (level)
+ {
+ case 6:
+ if (large)
+ GivePunishment();
+ else
+ rewSpell = SPELL_REWARD_BUFF_1;
+ break;
+ case 8:
+ rewSpell = SPELL_REWARD_BUFF_2;
+ break;
+ case 10:
+ rewSpell = SPELL_REWARD_BUFF_3;
+ break;
+ default:
+ rewSpell = 0;
+ }
+
+ if (rewSpell)
+ if (Player* player = me->GetPlayer(*me, playerGUID))
+ DoCast(player, rewSpell, true);
+ }
+
+ /*
+ Depending on the number of failed pushes for player the damage of the spell scales, so we first
+ cast the spell on the target that hits for 50 and shows the visual and then forces the player
+ to cast the damaging spell on it self with the modified basepoints.
+ 4 fails = death.
+ On large nodes punishment and reward are the same, summoning the Apexis Guardian.
+ */
+ void GivePunishment()
+ {
+ if (large)
+ {
+ if (Player* player = me->GetPlayer(*me, playerGUID))
+ if (Creature* guardian = me->SummonCreature(NPC_APEXIS_GUARDIAN, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() - zCoordCorrection, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000))
+ guardian->AI()->AttackStart(player);
+
+ ResetNode();
+ }
+ else
+ {
+ fails++;
+
+ if (Player* player = me->GetPlayer(*me, playerGUID))
+ DoCast(player, SPELL_BAD_PRESS_TRIGGER, true);
+
+ if (fails >= 4)
+ ResetNode();
+ }
+ }
+
+ void SpellHitTarget(Unit* target, const SpellInfo* spell)
+ {
+ // Cast SPELL_BAD_PRESS_DAMAGE with scaled basepoints when the visual hits the target.
+ // Need Fix: When SPELL_BAD_PRESS_TRIGGER hits target it triggers spell SPELL_BAD_PRESS_DAMAGE by itself
+ // so player gets damage equal to calculated damage dbc basepoints for SPELL_BAD_PRESS_DAMAGE (~50)
+ if (spell->Id == SPELL_BAD_PRESS_TRIGGER)
+ {
+ int32 bp = (int32)((float)(fails)*0.33f*target->GetMaxHealth());
+ target->CastCustomSpell(target, SPELL_BAD_PRESS_DAMAGE, &bp, NULL, NULL, true);
+ }
+ }
+
+ // Checks if player has already die or has get too far from the current node
+ bool CheckPlayer()
+ {
+ if (Player* player = me->GetPlayer(*me, playerGUID))
+ {
+ if (player->isDead())
+ return false;
+ if (player->GetDistance2d(me) >= 2.0f*searchDistance)
+ {
+ GivePunishment();
+ return false;
+ }
+ }
+ else
+ return false;
+
+ return true;
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_simon_bunnyAI(creature);
+ }
+};
+
+class go_simon_cluster : public GameObjectScript
+{
+ public:
+ go_simon_cluster() : GameObjectScript("go_simon_cluster") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ if (Creature* bunny = go->FindNearestCreature(NPC_SIMON_BUNNY, 12.0f, true))
+ bunny->AI()->SetData(go->GetEntry(), 0);
+
+ player->CastSpell(player, go->GetGOInfo()->goober.spellId, true);
+ go->AddUse();
+ return true;
+ }
+};
+
+enum ApexisRelic
+{
+ QUEST_CRYSTALS = 11025,
+ GOSSIP_TEXT_ID = 10948,
+
+ ITEM_APEXIS_SHARD = 32569,
+ SPELL_TAKE_REAGENTS_SOLO = 41145,
+ SPELL_TAKE_REAGENTS_GROUP = 41146,
+};
+
+class go_apexis_relic : public GameObjectScript
+{
+ public:
+ go_apexis_relic() : GameObjectScript("go_apexis_relic") { }
+
+ bool OnGossipHello(Player* player, GameObject* go)
+ {
+ player->PrepareGossipMenu(go, go->GetGOInfo()->questgiver.gossipID);
+ player->SendPreparedGossip(go);
+ return true;
+ }
+
+ bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 /*action*/)
+ {
+ player->CLOSE_GOSSIP_MENU();
+
+ bool large = (go->GetEntry() == GO_APEXIS_MONUMENT);
+ if (player->HasItemCount(ITEM_APEXIS_SHARD, large ? 35 : 1))
+ {
+ player->CastSpell(player, large ? SPELL_TAKE_REAGENTS_GROUP : SPELL_TAKE_REAGENTS_SOLO, false);
+
+ if (Creature* bunny = player->SummonCreature(NPC_SIMON_BUNNY, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ()))
+ bunny->AI()->SetGUID(player->GetGUID(), large);
+ }
+
+ return true;
+ }
+};
+
void AddSC_blades_edge_mountains()
{
new mobs_bladespire_ogre();
@@ -573,4 +1131,7 @@ void AddSC_blades_edge_mountains()
new npc_bloodmaul_brutebane();
new npc_ogre_brute();
new go_thunderspike();
+ new npc_simon_bunny();
+ new go_simon_cluster();
+ new go_apexis_relic();
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 31fd5f66375..a24f17a8b76 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -68,7 +68,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
"itemcount1, itemcount2, itemcount3, itemcount4, playercount FROM character_queststatus WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_DAILYQUESTSTATUS, "SELECT quest, time FROM character_queststatus_daily WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_WEEKLYQUESTSTATUS, "SELECT quest FROM character_queststatus_weekly WHERE guid = ?", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_SEL_CHARACTER_SEASONALQUESTSTATUS, "SELECT quest FROM character_queststatus_seasonal WHERE guid = ?", CONNECTION_ASYNC)
+ PREPARE_STATEMENT(CHAR_SEL_CHARACTER_SEASONALQUESTSTATUS, "SELECT quest, event FROM character_queststatus_seasonal WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_INS_CHARACTER_DAILYQUESTSTATUS, "INSERT INTO character_queststatus_daily (guid, quest, time) VALUES (?, ?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_INS_CHARACTER_WEEKLYQUESTSTATUS, "INSERT INTO character_queststatus_weekly (guid, quest) VALUES (?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_INS_CHARACTER_SEASONALQUESTSTATUS, "INSERT INTO character_queststatus_seasonal (guid, quest, event) VALUES (?, ?, ?)", CONNECTION_ASYNC)
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index 64a7dcb7276..82f71aed030 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt
index 641bf00c678..afeb8af99ba 100644
--- a/src/tools/map_extractor/CMakeLists.txt
+++ b/src/tools/map_extractor/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/>
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/src/tools/vmap3_assembler/CMakeLists.txt b/src/tools/vmap3_assembler/CMakeLists.txt
index d596fb3e818..ba5d1649d38 100644
--- a/src/tools/vmap3_assembler/CMakeLists.txt
+++ b/src/tools/vmap3_assembler/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/>
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
diff --git a/src/tools/vmap3_extractor/CMakeLists.txt b/src/tools/vmap3_extractor/CMakeLists.txt
index 905e9318985..2ff2fd0cf6b 100644
--- a/src/tools/vmap3_extractor/CMakeLists.txt
+++ b/src/tools/vmap3_extractor/CMakeLists.txt
@@ -1,5 +1,5 @@
# Copyright (C) 2005-2009 MaNGOS project <http://getmangos.com/>
-# Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
+# Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/>
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without