diff --git a/data/sql/updates/pending_db_world/rev_1785798124343469600.sql b/data/sql/updates/pending_db_world/rev_1785798124343469600.sql new file mode 100644 index 0000000000..0c92dcbcdd --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1785798124343469600.sql @@ -0,0 +1,41 @@ +-- +DELETE FROM `creature_template_model` WHERE (`CreatureID` = 25350); +INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES +(25350, 1, 23175, 1, 0, 51831), +(25350, 0, 23173, 1, 1, 51831); + +DELETE FROM `creature_template_model` WHERE `CreatureID` IN (25342, 25343); +INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES +(25342, 0, 328, 1, 0, 51831), +(25342, 1, 21342, 1, 1, 51831), + +(25343, 0, 328, 1, 0, 51831), +(25343, 1, 21342, 1, 1, 51831); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25342); +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`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(25342, 0, 0, 1, 62, 0, 100, 512, 9155, 0, 0, 0, 0, 0, 56, 34842, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Option Selected - Add Item \'Warsong Outfit\''), +(25342, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Option Selected - Despawn in 30s'), +(25342, 0, 2, 8, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 45713, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Option Selected - Cast \'Naked Caravan Guard - Master Transform\''), +(25342, 0, 3, 4, 8, 0, 100, 513, 45474, 0, 0, 0, 0, 0, 33, 25342, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Spellhit \'Ragefist\'s Torch\' - Quest Credit \'The Honored Dead\''), +(25342, 0, 4, 5, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 50, 182071, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Spellhit \'Ragefist\'s Torch\' - Spawn GO Small Chapel Fire'), +(25342, 0, 5, 8, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Spellhit \'Ragefist\'s Torch\' - Despawn after 30 seconds'), +(25342, 0, 6, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 3, 25340, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Respawn - Morph To Creature Dead Caravan Guard Transform'), +(25342, 0, 7, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Respawn - Add Npc Flags Gossip'), +(25342, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Guard - On Gossip Option or Spellhit - Remove Npc Flags Gossip'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25343); +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`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(25343, 0, 0, 1, 62, 0, 100, 512, 9156, 0, 0, 0, 0, 0, 56, 34842, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Option Selected - Add Item \'Warsong Outfit\''), +(25343, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Option Selected - Despawn in 30s'), +(25343, 0, 2, 8, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 45713, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Option Selected - Cast \'Naked Caravan Guard - Master Transform\''), +(25343, 0, 3, 4, 8, 0, 100, 513, 45474, 0, 0, 0, 0, 0, 33, 25342, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Spellhit \'Ragefist\'s Torch\' - Quest Credit \'The Honored Dead\''), +(25343, 0, 4, 5, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 50, 182071, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Spellhit \'Ragefist\'s Torch\' - Spawn GO Small Chapel Fire'), +(25343, 0, 5, 8, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 30000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Spellhit \'Ragefist\'s Torch\' - Despawn after 30 seconds'), +(25343, 0, 6, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 3, 25341, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Respawn - Morph To Creature Dead Caravan Worker Transform'), +(25343, 0, 7, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Respawn - Add Npc Flags Gossip'), +(25343, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dead Caravan Worker - On Gossip Option or Spellhit - Remove Npc Flags Gossip'); + +DELETE FROM `spell_script_names` WHERE `spell_id` = 45713; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45713, 'spell_naked_caravan_guard_transform'); diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index d310ff16bc..27f1525cab 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1415,6 +1415,80 @@ private: bool _ejected; }; +enum NakedCaravanGuard +{ + // Models the Dead Caravan Guards / Workers spawn with + MODEL_GUARD_ORC_MALE = 23246, + MODEL_GUARD_FORSAKEN_MALE = 23247, + MODEL_GUARD_ORC_FEMALE = 23248, + MODEL_GUARD_TAUREN_MALE = 23249, + MODEL_WORKER_ORC_MALE = 23124, + MODEL_WORKER_FORSAKEN_MALE = 23125, + MODEL_WORKER_ORC_FEMALE = 23126, + MODEL_WORKER_TROLL_MALE = 23127, + + // Their counterparts once the outfit has been looted + MODEL_NAKED_GUARD_ORC_MALE = 23245, + MODEL_NAKED_GUARD_FORSAKEN_MALE = 23250, + MODEL_NAKED_GUARD_ORC_FEMALE = 23251, + MODEL_NAKED_GUARD_TAUREN_MALE = 23252, + MODEL_NAKED_WORKER_ORC_MALE = 23253, + MODEL_NAKED_WORKER_FORSAKEN_MALE = 23254, + MODEL_NAKED_WORKER_ORC_FEMALE = 23255, + MODEL_NAKED_WORKER_TROLL_MALE = 23256 +}; + +// 45713 - Naked Caravan Guard - Master Transform +class spell_naked_caravan_guard_transform : public SpellScript +{ + PrepareSpellScript(spell_naked_caravan_guard_transform); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Creature* target = GetHitCreature(); + if (!target) + return; + + uint32 nakedModelId = 0; + switch (target->GetDisplayId()) + { + case MODEL_GUARD_ORC_MALE: + nakedModelId = MODEL_NAKED_GUARD_ORC_MALE; + break; + case MODEL_GUARD_FORSAKEN_MALE: + nakedModelId = MODEL_NAKED_GUARD_FORSAKEN_MALE; + break; + case MODEL_GUARD_ORC_FEMALE: + nakedModelId = MODEL_NAKED_GUARD_ORC_FEMALE; + break; + case MODEL_GUARD_TAUREN_MALE: + nakedModelId = MODEL_NAKED_GUARD_TAUREN_MALE; + break; + case MODEL_WORKER_ORC_MALE: + nakedModelId = MODEL_NAKED_WORKER_ORC_MALE; + break; + case MODEL_WORKER_FORSAKEN_MALE: + nakedModelId = MODEL_NAKED_WORKER_FORSAKEN_MALE; + break; + case MODEL_WORKER_ORC_FEMALE: + nakedModelId = MODEL_NAKED_WORKER_ORC_FEMALE; + break; + case MODEL_WORKER_TROLL_MALE: + nakedModelId = MODEL_NAKED_WORKER_TROLL_MALE; + break; + default: + return; + } + + target->SetDisplayId(nakedModelId); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_naked_caravan_guard_transform::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_borean_tundra() { RegisterSpellScript(spell_q11919_q11940_drake_hunt_aura); @@ -1438,4 +1512,5 @@ void AddSC_borean_tundra() RegisterSpellScript(spell_bloodspore_haze); RegisterSpellScript(spell_q11652_rescue_injured_soldier); RegisterSpellScript(spell_q11652_soldier_rescued); + RegisterSpellScript(spell_naked_caravan_guard_transform); }