diff options
-rw-r--r-- | sql/updates/8058_world_item_template.sql | 1 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 8 | ||||
-rw-r--r-- | src/scripts/world/item_scripts.cpp | 26 |
3 files changed, 35 insertions, 0 deletions
diff --git a/sql/updates/8058_world_item_template.sql b/sql/updates/8058_world_item_template.sql new file mode 100644 index 00000000000..92380018d70 --- /dev/null +++ b/sql/updates/8058_world_item_template.sql @@ -0,0 +1 @@ +UPDATE `item_template` SET `ScriptName`='item_Trident_of_Nazjan' WHERE `entry`=35850; diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 695eb48b34c..f2ad9cd8f7a 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1260,6 +1260,14 @@ void Spell::EffectDummy(uint32 i) m_caster->CastSpell(m_caster, 45088, true); return; } + case 47170: // Impale Leviroth + { + if (!unitTarget && unitTarget->GetEntry() != 26452 && ((unitTarget->GetHealth() / unitTarget->GetMaxHealth()) * 100.0f) > 95.0f) + return; + + m_caster->DealDamage(unitTarget, unitTarget->GetMaxHealth()*0.93f); + return; + } case 49625: // Brave's Flare { //Trigger Brave's Flare Effect (with EffectTarget) diff --git a/src/scripts/world/item_scripts.cpp b/src/scripts/world/item_scripts.cpp index 49294213d91..d87a21a8c95 100644 --- a/src/scripts/world/item_scripts.cpp +++ b/src/scripts/world/item_scripts.cpp @@ -387,6 +387,27 @@ bool ItemUse_item_dehta_trap_smasher(Player* pPlayer, Item* /*pItem*/, const Spe return false; } +enum TheEmissary +{ + QUEST_THE_EMISSARY = 11626, + NPC_LEVIROTH = 26452 +}; + +bool ItemUse_item_Trident_of_Nazjan(Player* pPlayer, Item* pItem, const SpellCastTargets &pTargets) +{ + if (pPlayer->GetQuestStatus(QUEST_THE_EMISSARY) == QUEST_STATUS_INCOMPLETE) + { + if (Creature* pLeviroth = pPlayer->FindNearestCreature(NPC_LEVIROTH, 10.0f)) // spell range + { + pLeviroth->AI()->AttackStart(pPlayer); + return false; + } else + pPlayer->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, pItem, NULL); + } else + pPlayer->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW ,pItem, NULL); + return true; +} + void AddSC_item_scripts() { Script *newscript; @@ -450,4 +471,9 @@ void AddSC_item_scripts() newscript->Name = "item_dehta_trap_smasher"; newscript->pItemUse = &ItemUse_item_dehta_trap_smasher; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name = "item_Trident_of_Nazjan"; + newscript->pItemUse = &ItemUse_item_Trident_of_Nazjan; + newscript->RegisterSelf(); } |