bool OnUse(Player* player, Item* item, SpellCastTargets const& targets) { InstanceScript* instance = player->GetInstanceScript(); if (!instance) { player->GetSession()->SendNotification("Instance script not initialized"); return true; } if (instance->GetData(EVENT_STATE) != CANNON_NOT_USED) return false; if (targets.GetGOTarget() && targets.GetGOTarget()->GetEntry() == GO_DEFIAS_CANNON) { instance->SetData(EVENT_STATE, CANNON_GUNPOWDER_USED); } player->DestroyItemCount(item->GetEntry(), 1, true); return true; }
bool OnUse(Player* player, Item* /*item*/, SpellCastTargets const& targets) override { InstanceScript* instance = player->GetInstanceScript(); if (!instance) { player->GetSession()->SendNotification(TEXT_NOT_INITIALIZED); return true; } Creature* vashj = ObjectAccessor::GetCreature((*player), instance->GetData64(DATA_LADYVASHJ)); if (vashj && (CAST_AI(boss_lady_vashj::boss_lady_vashjAI, vashj->AI())->Phase == 2)) { if (GameObject* gObj = targets.GetGOTarget()) { uint32 identifier; uint8 channelIdentifier; switch (gObj->GetEntry()) { case 185052: identifier = DATA_SHIELDGENERATOR1; channelIdentifier = 0; break; case 185053: identifier = DATA_SHIELDGENERATOR2; channelIdentifier = 1; break; case 185051: identifier = DATA_SHIELDGENERATOR3; channelIdentifier = 2; break; case 185054: identifier = DATA_SHIELDGENERATOR4; channelIdentifier = 3; break; default: return true; } if (instance->GetData(identifier)) { player->GetSession()->SendNotification(TEXT_ALREADY_DEACTIVATED); return true; } // get and remove channel if (Unit* channel = ObjectAccessor::GetCreature(*vashj, CAST_AI(boss_lady_vashj::boss_lady_vashjAI, vashj->AI())->ShieldGeneratorChannel[channelIdentifier])) channel->setDeathState(JUST_DIED); // call Unsummon() instance->SetData(identifier, 1); // remove this item player->DestroyItemCount(31088, 1, true); return true; } else if (targets.GetUnitTarget()->GetTypeId() == TYPEID_UNIT) return false; else if (targets.GetUnitTarget()->GetTypeId() == TYPEID_PLAYER) { player->DestroyItemCount(31088, 1, true); player->CastSpell(targets.GetUnitTarget(), 38134, true); return true; } } return true; }
bool OnUse(Player* pPlayer, Item* /*_Item*/, SpellCastTargets const& targets) { InstanceScript *pInstance = pPlayer->GetInstanceScript(); if (!pInstance) { pPlayer->GetSession()->SendNotification(TEXT_NOT_INITIALIZED); return true; } Creature *Vashj = NULL; Vashj = (Unit::GetCreature((*pPlayer), pInstance->GetData64(DATA_LADYVASHJ))); if (Vashj && (CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->AI())->Phase == 2)) { if (targets.GetGOTarget() && targets.GetGOTarget()->GetTypeId() == TYPEID_GAMEOBJECT) { uint32 identifier; uint8 channel_identifier; switch(targets.GetGOTarget()->GetEntry()) { case 185052: identifier = DATA_SHIELDGENERATOR1; channel_identifier = 0; break; case 185053: identifier = DATA_SHIELDGENERATOR2; channel_identifier = 1; break; case 185051: identifier = DATA_SHIELDGENERATOR3; channel_identifier = 2; break; case 185054: identifier = DATA_SHIELDGENERATOR4; channel_identifier = 3; break; default: return true; } if (pInstance->GetData(identifier)) { pPlayer->GetSession()->SendNotification(TEXT_ALREADY_DEACTIVATED); return true; } //get and remove channel Unit *Channel = NULL; Channel = Unit::GetCreature(*Vashj, CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->AI())->ShieldGeneratorChannel[channel_identifier]); if (Channel) { //call Unsummon() Channel->setDeathState(JUST_DIED); } pInstance->SetData(identifier, 1); //remove this item pPlayer->DestroyItemCount(31088, 1, true); return true; } else if (targets.GetUnitTarget()->GetTypeId() == TYPEID_UNIT) return false; else if (targets.GetUnitTarget()->GetTypeId() == TYPEID_PLAYER) { pPlayer->DestroyItemCount(31088, 1, true); pPlayer->CastSpell(targets.GetUnitTarget(), 38134, true); return true; } } return true; }