Scripts: Gossip can crash with null instance
This commit is contained in:
@@ -113,7 +113,7 @@ public:
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
|
||||
if (instance->GetData(TYPE_EVENT) == NOT_STARTED)
|
||||
if (instance && instance->GetData(TYPE_EVENT) == NOT_STARTED)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
|
||||
player->SEND_GOSSIP_MENU(GOSSIP_TEXT_EMI, creature->GetGUID());
|
||||
|
||||
@@ -92,8 +92,8 @@ public:
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
|
||||
if (instance->GetData(TYPE_FREE_NPC) != DONE && instance->GetData(TYPE_RETHILGORE) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DOOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
if (instance && instance->GetData(TYPE_FREE_NPC) != DONE && instance->GetData(TYPE_RETHILGORE) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DOOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
|
||||
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
|
||||
|
||||
|
||||
@@ -773,7 +773,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
||||
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT);
|
||||
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||||
@@ -921,7 +921,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
||||
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT + 1);
|
||||
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||||
|
||||
@@ -1192,7 +1192,7 @@ class npc_lorekeeper : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance->GetData(BOSS_LEVIATHAN) != DONE && player)
|
||||
if (instance && instance->GetData(BOSS_LEVIATHAN) != DONE && player)
|
||||
{
|
||||
player->PrepareGossipMenu(creature);
|
||||
|
||||
@@ -1245,7 +1245,7 @@ public:
|
||||
//bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
|
||||
//{
|
||||
// InstanceScript* instance = creature->GetInstanceScript();
|
||||
// if (instance->GetData(BOSS_LEVIATHAN) !=DONE)
|
||||
// if (instance && instance->GetData(BOSS_LEVIATHAN) !=DONE)
|
||||
// {
|
||||
// player->PrepareGossipMenu(creature);
|
||||
//
|
||||
@@ -1285,8 +1285,7 @@ class go_ulduar_tower : public GameObjectScript
|
||||
break;
|
||||
}
|
||||
|
||||
Creature* trigger = go->FindNearestCreature(NPC_ULDUAR_GAUNTLET_GENERATOR, 15.0f, true);
|
||||
if (trigger)
|
||||
if (Creature* trigger = go->FindNearestCreature(NPC_ULDUAR_GAUNTLET_GENERATOR, 15.0f, true))
|
||||
trigger->DisappearAndDie();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -720,7 +720,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
|
||||
{
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance->GetBossState(BOSS_RAZORSCALE) == NOT_STARTED)
|
||||
if (instance && instance->GetBossState(BOSS_RAZORSCALE) == NOT_STARTED)
|
||||
{
|
||||
player->PrepareGossipMenu(creature);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user