bool ScrollOfMyzrael(uint32 i, Spell * pSpell) { Player * pPlayer = TO_PLAYER(pSpell->u_caster); if(!pPlayer) return true; if(!pSpell->u_caster->IsPlayer()) return true; QuestLogEntry *qle = pPlayer->GetQuestLogForEntry(656); if(qle == NULL) return true; const float MyzraelPos[] = {-940.7374, -3111.1953, 48.9566, 3.327}; Creature * myzrael = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(MyzraelPos[0], MyzraelPos[1], MyzraelPos[2], 2755); if(myzrael != NULL) { if(!myzrael->isAlive()) myzrael->Delete(); else return true; } myzrael = sEAS.SpawnCreature(pPlayer, 2755, MyzraelPos[0], MyzraelPos[1], MyzraelPos[2], MyzraelPos[3], 0); return true; }
void GossipSelectOption(Object* pObject, Player* plr, uint32 Id, uint32 IntId, const char * EnteredCode) { if(!plr) return; Creature *windwatcher = (Creature*)(pObject); if (windwatcher == NULL) return; switch (IntId) { case 0: GossipHello(pObject, plr, true); break; case 1: { if(plr == NULL || plr->GetMapMgr() == NULL || plr->GetMapMgr()->GetInterface() == NULL) return; Creature *whirlwind = plr->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(plr->GetPositionX(), plr->GetPositionY(), plr->GetPositionZ(), 6239); if(whirlwind != NULL) { if(!whirlwind->isAlive()) { whirlwind->Delete(); } else return; } whirlwind = EAS::SpawnCreature(plr, 6239, plr->GetPositionX()+7, plr->GetPositionY()+7, plr->GetPositionZ(), plr->GetOrientation(), 0); whirlwind->Despawn(5*60*1000, 0); }break; } }
bool CenarionLunardust(uint32 i, Spell* pSpell) // Body And Heart (Horde) { const float pos[] = {-2449.117920f, -1627.319824f, 91.801430f, 0}; // x, y, z, o Player *p_caster = pSpell->p_caster; Creature *lunaclaw = p_caster->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pos[0], pos[1], pos[2], 12138); if(lunaclaw != NULL) { if(!lunaclaw->isAlive()) lunaclaw->Delete(); else return true; } lunaclaw = EAS::SpawnCreature(p_caster, 12138, pos[0], pos[1], pos[2], pos[3], 0); lunaclaw->GetAIInterface()->SetNextTarget(p_caster); EAS::MoveToPlayer(p_caster, lunaclaw); return true; }
bool CenarionMoondust(uint32 i, Spell* pSpell) // Body And Heart (Alliance) { const float pos[] = {6348.540039f, 128.124176f, 22.024008f, 4.172032f}; // x, y, z, o Player *p_caster = pSpell->p_caster; Creature *lunaclaw = p_caster->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pos[0], pos[1], pos[2], 12138); if(lunaclaw != NULL) { if(!lunaclaw->isAlive()) lunaclaw->Delete(); else return true; } lunaclaw = EAS::SpawnCreature(p_caster, 12138, pos[0], pos[1], pos[2], pos[3], 0); lunaclaw->GetAIInterface()->SetNextTarget(p_caster); EAS::MoveToPlayer(p_caster, lunaclaw); return true; }
bool ChatHandler::HandleDeleteCommand(const char* args, WorldSession* m_session) { uint64 guid = m_session->GetPlayer()->GetSelection(); if(guid == 0) { SystemMessage(m_session, "No selection."); return true; } Creature* unit = m_session->GetPlayer()->GetMapMgr()->GetCreature(GET_LOWGUID_PART(guid)); if(!unit) { SystemMessage(m_session, "You should select a creature."); return true; } if(unit->IsPet()) { SystemMessage(m_session, "You can't delete a pet."); return true; } sGMLog.writefromsession(m_session, "used npc delete, sqlid %u, creature %s, pos %f %f %f", unit->GetSQL_id(), unit->GetCreatureInfo()->Name, unit->GetPositionX(), unit->GetPositionY(), unit->GetPositionZ()); unit->GetAIInterface()->hideWayPoints(m_session->GetPlayer()); unit->DeleteFromDB(); if(unit->IsSummon()) { unit->Delete(); } else { if(unit->m_spawn) { uint32 cellx = uint32(((_maxX - unit->m_spawn->x) / _cellSize)); uint32 celly = uint32(((_maxY - unit->m_spawn->y) / _cellSize)); if(cellx <= _sizeX && celly <= _sizeY) { CellSpawns* sp = unit->GetMapMgr()->GetBaseMap()->GetSpawnsList(cellx, celly); if(sp != NULL) { for(CreatureSpawnList::iterator itr = sp->CreatureSpawns.begin(); itr != sp->CreatureSpawns.end(); ++itr) if((*itr) == unit->m_spawn) { sp->CreatureSpawns.erase(itr); break; } } delete unit->m_spawn; unit->m_spawn = NULL; } } unit->RemoveFromWorld(false, true); } BlueSystemMessage(m_session, "Creature deleted"); return true; }