void SummonNPC(GameObject* go, Player* player, uint32 npc, uint32 spell) { go->CastSpell(player, spell); TempSummon* summons = go->SummonCreature(npc, go->GetPositionX(), go->GetPositionY(), go->GetPositionZ(), player->GetOrientation() - M_PI, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 10 * 60 * 1000); summons->CastSpell(summons, SPELL_SPAWN_IN, false); switch (summons->GetEntry()) { case NPC_TEMPLAR_FIRE: case NPC_TEMPLAR_WATER: case NPC_TEMPLAR_AIR: case NPC_TEMPLAR_EARTH: summons->AI()->Talk(SAY_TEMPLAR_AGGRO); break; case NPC_DUKE_FIRE: case NPC_DUKE_WATER: case NPC_DUKE_EARTH: case NPC_DUKE_AIR: summons->AI()->Talk(SAY_DUKE_AGGRO); break; case NPC_ROYAL_FIRE: case NPC_ROYAL_AIR: case NPC_ROYAL_EARTH: case NPC_ROYAL_WATER: summons->AI()->Talk(YELL_ROYAL_AGGRO); break; } summons->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); summons->SendMeleeAttackStart(player); summons->CombatStart(player); }