diff options
Diffstat (limited to 'src')
23 files changed, 108 insertions, 122 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 35024fc4152..b97ea196a0a 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -119,6 +119,8 @@ class RBACObject          RBACObject(uint32 id = 0, std::string const& name = ""):
              _id(id), _name(name) { }
 +        virtual ~RBACObject() { }
 +
          /// Gets the Name of the Object
          std::string const& GetName() const { return _name; }
          /// Gets the Id of the Object
 diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index bef0e995988..2114fc4ef66 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -359,21 +359,19 @@ void BattlegroundAB::_NodeOccupied(uint8 node, Team team)      if (!AddSpiritGuide(node, BG_AB_SpiritGuidePos[node][0], BG_AB_SpiritGuidePos[node][1], BG_AB_SpiritGuidePos[node][2], BG_AB_SpiritGuidePos[node][3], team))          TC_LOG_ERROR(LOG_FILTER_BATTLEGROUND, "Failed to spawn spirit guide! point: %u, team: %u, ", node, team); +    if (node >= BG_AB_DYNAMIC_NODES_COUNT)//only dynamic nodes, no start points +        return; +      uint8 capturedNodes = 0;      for (uint8 i = 0; i < BG_AB_DYNAMIC_NODES_COUNT; ++i) -    { -        if (m_Nodes[node] == GetTeamIndexByTeamId(team) + BG_AB_NODE_TYPE_OCCUPIED && !m_NodeTimers[i]) +        if (m_Nodes[i] == GetTeamIndexByTeamId(team) + BG_AB_NODE_TYPE_OCCUPIED && !m_NodeTimers[i])              ++capturedNodes; -    }      if (capturedNodes >= 5)          CastSpellOnTeam(SPELL_AB_QUEST_REWARD_5_BASES, team);      if (capturedNodes >= 4)          CastSpellOnTeam(SPELL_AB_QUEST_REWARD_4_BASES, team); -    if (node >= BG_AB_DYNAMIC_NODES_COUNT)//only dynamic nodes, no start points -        return; -      Creature* trigger = BgCreatures[node+7] ? GetBGCreature(node+7) : NULL;//0-6 spirit guides      if (!trigger)          trigger = AddCreature(WORLD_TRIGGER, node+7, team, BG_AB_NodePositions[node][0], BG_AB_NodePositions[node][1], BG_AB_NodePositions[node][2], BG_AB_NodePositions[node][3]); diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 1515c75597f..505d00dc5f6 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -80,8 +80,8 @@ ChatCommand* ChatHandler::getCommandTable()              // cache top-level commands              size_t added = 0;              commandTableCache = (ChatCommand*)malloc(sizeof(ChatCommand) * total); +            ASSERT(commandTableCache);              memset(commandTableCache, 0, sizeof(ChatCommand) * total); -            ACE_ASSERT(commandTableCache);              for (std::vector<ChatCommand*>::const_iterator it = dynamic.begin(); it != dynamic.end(); ++it)                  added += appendCommandTable(commandTableCache + added, *it);          } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 213d9eb74a3..c0fc7a7b681 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6985,6 +6985,7 @@ void ObjectMgr::LoadPointsOfInterest()          uint32 point_id = fields[0].GetUInt32();          PointOfInterest POI; +        POI.entry = point_id;          POI.x = fields[1].GetFloat();          POI.y = fields[2].GetFloat();          POI.icon = fields[3].GetUInt32(); diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 7e6e1dedb4f..2f32b53fd0b 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -943,33 +943,28 @@ void WorldSession::BuildPartyMemberStatsChangedPacket(Player* player, WorldPacke      if (mask & GROUP_UPDATE_FLAG_STATUS)      { -        if (player) -        { -            uint16 playerStatus = MEMBER_STATUS_ONLINE; -            if (player->IsPvP()) -                playerStatus |= MEMBER_STATUS_PVP; +        uint16 playerStatus = MEMBER_STATUS_ONLINE; +        if (player->IsPvP()) +            playerStatus |= MEMBER_STATUS_PVP; -            if (!player->IsAlive()) -            { -                if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) -                    playerStatus |= MEMBER_STATUS_GHOST; -                else -                    playerStatus |= MEMBER_STATUS_DEAD; -            } +        if (!player->IsAlive()) +        { +            if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_GHOST)) +                playerStatus |= MEMBER_STATUS_GHOST; +            else +                playerStatus |= MEMBER_STATUS_DEAD; +        } -            if (player->HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP)) -                playerStatus |= MEMBER_STATUS_PVP_FFA; +        if (player->HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP)) +            playerStatus |= MEMBER_STATUS_PVP_FFA; -            if (player->isAFK()) -                playerStatus |= MEMBER_STATUS_AFK; +        if (player->isAFK()) +            playerStatus |= MEMBER_STATUS_AFK; -            if (player->isDND()) -                playerStatus |= MEMBER_STATUS_DND; +        if (player->isDND()) +            playerStatus |= MEMBER_STATUS_DND; -            *data << uint16(playerStatus); -        } -        else -            *data << uint16(MEMBER_STATUS_OFFLINE); +        *data << uint16(playerStatus);      }      if (mask & GROUP_UPDATE_FLAG_CUR_HP) diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index ef914cc29ee..75655dca170 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -417,7 +417,7 @@ void Loot::AddItem(LootStoreItem const& item)          return;      uint32 count = urand(item.mincountOrRef, item.maxcount); -    uint32 stacks = count / proto->GetMaxStackSize() + (count % proto->GetMaxStackSize() ? 1 : 0); +    uint32 stacks = count / proto->GetMaxStackSize() + ((count % proto->GetMaxStackSize()) ? 1 : 0);      std::vector<LootItem>& lootItems = item.needs_quest ? quest_items : items;      uint32 limit = item.needs_quest ? MAX_NR_QUEST_ITEMS : MAX_NR_LOOT_ITEMS; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index 30308c12630..73b5399fa89 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -453,18 +453,14 @@ void OutdoorPvP::HandleKill(Player* killer, Unit* killed)              // creature kills must be notified, even if not inside objective / not outdoor pvp active              // player kills only count if active and inside objective              if ((groupGuy->IsOutdoorPvPActive() && IsInsideObjective(groupGuy)) || killed->GetTypeId() == TYPEID_UNIT) -            {                  HandleKillImpl(groupGuy, killed); -            }          }      }      else      {          // creature kills must be notified, even if not inside objective / not outdoor pvp active -        if (killer && ((killer->IsOutdoorPvPActive() && IsInsideObjective(killer)) || killed->GetTypeId() == TYPEID_UNIT)) -        { +        if ((killer->IsOutdoorPvPActive() && IsInsideObjective(killer)) || killed->GetTypeId() == TYPEID_UNIT)              HandleKillImpl(killer, killed); -        }      }  } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9db018820ae..804a46a114c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3123,6 +3123,7 @@ void Spell::cancel()              CancelGlobalCooldown();              if (m_caster->GetTypeId() == TYPEID_PLAYER)                  m_caster->ToPlayer()->RestoreSpellMods(this); +            // no break          case SPELL_STATE_DELAYED:              SendInterrupted(0);              SendCastResult(SPELL_FAILED_INTERRUPTED); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a0c83a441d3..54a6116fb04 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3923,6 +3923,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)                      m_caster->CastSpell(unitTarget, spellId2, true);                  return;              } +            break;          }          case SPELLFAMILY_DEATHKNIGHT:          { @@ -4372,25 +4373,11 @@ void Spell::EffectSummonObject(SpellEffIndex effIndex)          return;      uint32 go_id = m_spellInfo->Effects[effIndex].MiscValue; +    uint8 slot = m_spellInfo->Effects[effIndex].Effect - SPELL_EFFECT_SUMMON_OBJECT_SLOT1; -    uint8 slot = 0; -    switch (m_spellInfo->Effects[effIndex].Effect) -    { -        case SPELL_EFFECT_SUMMON_OBJECT_SLOT1: slot = 0; break; -        case SPELL_EFFECT_SUMMON_OBJECT_SLOT2: slot = 1; break; -        case SPELL_EFFECT_SUMMON_OBJECT_SLOT3: slot = 2; break; -        case SPELL_EFFECT_SUMMON_OBJECT_SLOT4: slot = 3; break; -        default: return; -    } - -    uint64 guid = m_caster->m_ObjectSlot[slot]; -    if (guid != 0) +    if (uint64 guid = m_caster->m_ObjectSlot[slot])      { -        GameObject* obj = NULL; -        if (m_caster) -            obj = m_caster->GetMap()->GetGameObject(guid); - -        if (obj) +        if (GameObject* obj = m_caster->GetMap()->GetGameObject(guid))          {              // Recast case - null spell id to make auras not be removed on object remove from world              if (m_spellInfo->Id == obj->GetSpellId()) @@ -4400,7 +4387,7 @@ void Spell::EffectSummonObject(SpellEffIndex effIndex)          m_caster->m_ObjectSlot[slot] = 0;      } -    GameObject* pGameObj = new GameObject; +    GameObject* go = new GameObject();      float x, y, z;      // If dest location if present @@ -4411,24 +4398,24 @@ void Spell::EffectSummonObject(SpellEffIndex effIndex)          m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE);      Map* map = m_caster->GetMap(); -    if (!pGameObj->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), go_id, map, +    if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), go_id, map,          m_caster->GetPhaseMask(), x, y, z, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY))      { -        delete pGameObj; +        delete go;          return;      }      //pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel());      int32 duration = m_spellInfo->GetDuration(); -    pGameObj->SetRespawnTime(duration > 0 ? duration/IN_MILLISECONDS : 0); -    pGameObj->SetSpellId(m_spellInfo->Id); -    m_caster->AddGameObject(pGameObj); +    go->SetRespawnTime(duration > 0 ? duration/IN_MILLISECONDS : 0); +    go->SetSpellId(m_spellInfo->Id); +    m_caster->AddGameObject(go); -    ExecuteLogEffectSummonObject(effIndex, pGameObj); +    ExecuteLogEffectSummonObject(effIndex, go); -    map->AddToMap(pGameObj); +    map->AddToMap(go); -    m_caster->m_ObjectSlot[slot] = pGameObj->GetGUID(); +    m_caster->m_ObjectSlot[slot] = go->GetGUID();  }  void Spell::EffectResurrect(SpellEffIndex effIndex) diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index cb78845f4d1..f23255818e0 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -800,7 +800,7 @@ public:          if (show == "info")          {              // Check if the user did specify a visual waypoint -            if (target && target->GetEntry() != VISUAL_WAYPOINT) +            if (!target || target->GetEntry() != VISUAL_WAYPOINT)              {                  handler->PSendSysMessage(LANG_WAYPOINT_VP_SELECT);                  handler->SetSentErrorMessage(true); diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp index b334c5c44b6..f07e426c808 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp @@ -553,7 +553,8 @@ public:                      loadStream >> tmpState;                      if (tmpState == IN_PROGRESS || tmpState > SPECIAL)                          tmpState = NOT_STARTED; -                        SetBossState(i, EncounterState(tmpState)); + +                    SetBossState(i, EncounterState(tmpState));                  }              }              else diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index b994821cce9..855ed46e5cf 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -710,12 +710,14 @@ public:                              {                                  SpeechTimer = 0;                                  if (instance) +                                {                                      if (Creature* speechCreature = Unit::GetCreature(*me, instance->GetData64(Speeches[speechCount].creature)))                                          speechCreature->AI()->Talk(Speeches[speechCount].textid); -                                if (speechCount == 12) -                                    if (Creature* pAnveena =  Unit::GetCreature(*me, instance->GetData64(DATA_ANVEENA))) -                                        pAnveena->CastSpell(me, SPELL_SACRIFICE_OF_ANVEENA, false); -                                        //   ChangeTimers(true, 10000); // Kil should do an emote while screaming without attacking for 10 seconds +                                    if (speechCount == 12) +                                        if (Creature* pAnveena =  Unit::GetCreature(*me, instance->GetData64(DATA_ANVEENA))) +                                            pAnveena->CastSpell(me, SPELL_SACRIFICE_OF_ANVEENA, false); +                                    //   ChangeTimers(true, 10000); // Kil should do an emote while screaming without attacking for 10 seconds +                                }                                  if (speechCount == speechPhaseEnd)                                      TimerIsDeactivated[TIMER_SPEECH]=true;                                  speechCount++; diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index ccbb4846270..eed8ab22eb1 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -274,7 +274,8 @@ public:                      loadStream >> tmpState;                      if (tmpState == IN_PROGRESS || tmpState > SPECIAL)                          tmpState = NOT_STARTED; -                        SetBossState(i, EncounterState(tmpState)); + +                    SetBossState(i, EncounterState(tmpState));                  }              }              else diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 28c4a805254..8120686a0aa 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -530,10 +530,10 @@ public:              if (!player)                  return; -            Creature* Fandral = player->FindNearestCreature(C_FANDRAL_STAGHELM, 100.0f, me); -            Creature* Arygos = player->FindNearestCreature(C_ARYGOS, 100.0f, me); -            Creature* Caelestrasz = player->FindNearestCreature(C_CAELESTRASZ, 100.0f, me); -            Creature* Merithra = player->FindNearestCreature(C_MERITHRA, 100.0f, me); +            Creature* Fandral = player->FindNearestCreature(C_FANDRAL_STAGHELM, 100.0f); +            Creature* Arygos = player->FindNearestCreature(C_ARYGOS, 100.0f); +            Creature* Caelestrasz = player->FindNearestCreature(C_CAELESTRASZ, 100.0f); +            Creature* Merithra = player->FindNearestCreature(C_MERITHRA, 100.0f);              if (!Fandral || !Arygos || !Caelestrasz || !Merithra)                  return; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h index 4787a6b9fdc..c5fe115978f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h @@ -138,7 +138,7 @@ struct boss_horAI : ScriptedAI          me->SetVisible(false);          me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);          me->SetReactState(REACT_PASSIVE); -        if (instance->GetData(DATA_WAVE_COUNT) != NOT_STARTED) +        if (instance && instance->GetData(DATA_WAVE_COUNT) != NOT_STARTED)              instance->ProcessEvent(0, EVENT_DO_WIPE);      } diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index 9af4de8135d..681ffff46b3 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -242,6 +242,7 @@ public:                      eckTheFerociousDoorBehindGUID = go->GetGUID();                      if (isHeroic && m_auiEncounter[4] == DONE)                          HandleGameObject(0, true, go); +                    break;                  case GO_GALDARAH_DOOR1:                      galDarahDoor1GUID = go->GetGUID();                      if (m_auiEncounter[3] == DONE) diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index 4101fb7af33..d1f0105daf1 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -137,28 +137,36 @@ public:                  case NPC_BELGARISTRASZ:                      belgaristraszGUID = creature->GetGUID();                      if (GetBossState(DATA_DRAKOS_EVENT) == DONE) +                    {                          creature->SetWalk(true),                          creature->GetMotionMaster()->MovePoint(0, 941.453f, 1044.1f, 359.967f),                          creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); +                    }                      break;                  case NPC_ETERNOS:                      eternosGUID = creature->GetGUID();                      if (GetBossState(DATA_DRAKOS_EVENT) == DONE) +                    {                          creature->SetWalk(true),                          creature->GetMotionMaster()->MovePoint(0, 943.202f, 1059.35f, 359.967f),                          creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); +                    }                      break;                  case NPC_VERDISA:                      verdisaGUID = creature->GetGUID();                      if (GetBossState(DATA_DRAKOS_EVENT) == DONE) +                    {                          creature->SetWalk(true),                          creature->GetMotionMaster()->MovePoint(0, 949.188f, 1032.91f, 359.967f),                          creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); +                    }                      break;                  case NPC_GREATER_WHELP:                      if (GetBossState(DATA_UROM_EVENT) == DONE) +                    {                          creature->SetPhaseMask(1, true);                          gwhelpList.push_back(creature->GetGUID()); +                    }                      break;              }          } @@ -209,9 +217,13 @@ public:                      break;                  case DATA_UROM_EVENT:                      if (state == DONE) +                    {                          if (Creature* eregos = instance->GetCreature(eregosGUID)) +                        {                              eregos->SetPhaseMask(1, true);                              GreaterWhelps(); +                        } +                    }                      break;                  case DATA_EREGOS_EVENT:                      if (state == DONE) @@ -288,10 +300,8 @@ public:                  return;              for (std::list<uint64>::const_iterator itr = gwhelpList.begin(); itr != gwhelpList.end(); ++itr) -            {                  if (Creature* gwhelp = instance->GetCreature(*itr))                      gwhelp->SetPhaseMask(1, true); -            }          }          std::string GetSaveData() diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index dfaa8028d2d..814649d2bbe 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1154,7 +1154,7 @@ class npc_lorekeeper : public CreatureScript          bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE          { -            player->PlayerTalkClass->ClearMenus(); +            player->CLOSE_GOSSIP_MENU();              InstanceScript* instance = creature->GetInstanceScript();              if (!instance)                  return true; @@ -1162,19 +1162,13 @@ class npc_lorekeeper : public CreatureScript              switch (action)              {                  case GOSSIP_ACTION_INFO_DEF+1: -                    if (player) -                    { -                        player->PrepareGossipMenu(creature); -                        instance->instance->LoadGrid(364, -16); //make sure leviathan is loaded +                    player->PrepareGossipMenu(creature); +                    instance->instance->LoadGrid(364, -16); //make sure leviathan is loaded -                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); -                        player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); -                    } +                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); +                    player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());                      break;                  case GOSSIP_ACTION_INFO_DEF+2: -                    if (player) -                        player->CLOSE_GOSSIP_MENU(); -                      if (Creature* leviathan = instance->instance->GetCreature(instance->GetData64(BOSS_LEVIATHAN)))                      {                          leviathan->AI()->DoAction(ACTION_START_HARD_MODE); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index fc5a54ffcfb..13608285b08 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -503,6 +503,7 @@ class instance_ulduar : public InstanceMapScript                      case GO_MOLE_MACHINE:                          if (GetBossState(BOSS_RAZORSCALE) == IN_PROGRESS)                              gameObject->SetGoState(GO_STATE_ACTIVE); +                        break;                      case GO_HODIR_DOOR:                          HodirDoorGUID = gameObject->GetGUID();                          break; diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 0cec919737a..db382dd9d72 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -667,14 +667,14 @@ public:          void JustSummoned(Creature* summoned) OVERRIDE          {              listOfMobs.Summon(summoned); -            if (summoned) +            if (instance)                  instance->SetData64(DATA_ADD_TRASH_MOB, summoned->GetGUID());          } -        void SummonedMobDied(Creature* summoned) +        void SummonedCreatureDies(Creature* summoned, Unit* /*killer*/) OVERRIDE          {              listOfMobs.Despawn(summoned); -            if (summoned) +            if (instance)                  instance->SetData64(DATA_DEL_TRASH_MOB, summoned->GetGUID());          }      }; @@ -737,7 +737,7 @@ struct violet_hold_trashAI : public npc_escortAI          if (!bHasGotMovingPoints)          {              bHasGotMovingPoints = true; -                switch (portalLocationID) +            switch (portalLocationID)              {                  case 0:                      for (int i=0;i<6;i++) @@ -763,7 +763,7 @@ struct violet_hold_trashAI : public npc_escortAI                  case 2:                      for (int i=0;i<8;i++)                          AddWaypoint(i, ThirdPortalWPs[i][0]+irand(-1, 1), ThirdPortalWPs[i][1]+irand(-1, 1), ThirdPortalWPs[i][2], 0); -                        me->SetHomePosition(ThirdPortalWPs[7][0], ThirdPortalWPs[7][1], ThirdPortalWPs[7][2], 3.149439f); +                    me->SetHomePosition(ThirdPortalWPs[7][0], ThirdPortalWPs[7][1], ThirdPortalWPs[7][2], 3.149439f);                      break;                  case 3:                      for (int i=0;i<9;i++) @@ -789,12 +789,7 @@ struct violet_hold_trashAI : public npc_escortAI      void JustDied(Unit* /*killer*/) OVERRIDE      {          if (instance) -        { -            if (Creature* portal = Unit::GetCreature((*me), instance->GetData64(DATA_TELEPORTATION_PORTAL))) -                CAST_AI(npc_teleportation_portal_vh::npc_teleportation_portalAI, portal->AI())->SummonedMobDied(me); -              instance->SetData(DATA_NPC_PRESENCE_AT_DOOR_REMOVE, 1); -        }      }      void CreatureStartAttackDoor() @@ -1080,26 +1075,18 @@ class npc_azure_stalker : public CreatureScript  public:      npc_azure_stalker() : CreatureScript("npc_azure_stalker") { } -    CreatureAI* GetAI(Creature* creature) const OVERRIDE -    { -        return new npc_azure_stalkerAI(creature); -    } -      struct npc_azure_stalkerAI : public violet_hold_trashAI      {          npc_azure_stalkerAI(Creature* creature) : violet_hold_trashAI(creature)          {              instance = creature->GetInstanceScript();          } -        uint32 uiBackstabTimer; -        uint32 uiTacticalBlinkTimer; -        bool TacticalBlinkCasted;          void Reset() OVERRIDE          { -            uiBackstabTimer = 1300; -            uiTacticalBlinkTimer = 8000; -            TacticalBlinkCasted =false; +            _backstabTimer = 1300; +            _tacticalBlinkTimer = 8000; +            _tacticalBlinkCast =false;          }          void UpdateAI(uint32 diff) OVERRIDE @@ -1110,33 +1097,42 @@ public:              if (!UpdateVictim())                  return; -            if (!TacticalBlinkCasted) +            if (!_tacticalBlinkCast)              { -                if (uiTacticalBlinkTimer <= diff) +                if (_tacticalBlinkTimer <= diff)                  {                      Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40, true);                      if (target)                          DoCast(target, SPELL_TACTICAL_BLINK); -                        uiTacticalBlinkTimer = 6000; -                    TacticalBlinkCasted = true; -                } else uiTacticalBlinkTimer -= diff; +                    _tacticalBlinkTimer = 6000; +                    _tacticalBlinkCast = true; +                } else _tacticalBlinkTimer -= diff;              }              else              { -                if (uiBackstabTimer <= diff) +                if (_backstabTimer <= diff)                  {                      Unit* target = SelectTarget(SELECT_TARGET_NEAREST, 0, 10, true);                      DoCast(target, SPELL_BACKSTAB); -                    TacticalBlinkCasted = false; -                    uiBackstabTimer =1300; -                } else uiBackstabTimer -= diff; +                    _tacticalBlinkCast = false; +                    _backstabTimer =1300; +                } else _backstabTimer -= diff;              }              DoMeleeAttackIfReady();          } + +    private: +        uint32 _backstabTimer; +        uint32 _tacticalBlinkTimer; +        bool _tacticalBlinkCast;      }; +    CreatureAI* GetAI(Creature* creature) const OVERRIDE +    { +        return new npc_azure_stalkerAI(creature); +    }  };  class npc_azure_spellbreaker : public CreatureScript diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp index c386c040246..0980b0ad466 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp @@ -106,7 +106,8 @@ class instance_ramparts : public InstanceMapScript                          loadStream >> tmpState;                          if (tmpState == IN_PROGRESS || tmpState > SPECIAL)                              tmpState = NOT_STARTED; -                            SetBossState(i, EncounterState(tmpState)); + +                        SetBossState(i, EncounterState(tmpState));                      }                  }                  else diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp index 362b8e729ef..1919e74e4ee 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp @@ -148,7 +148,7 @@ class instance_shattered_halls : public InstanceMapScript                          loadStream >> tmpState;                          if (tmpState == IN_PROGRESS || tmpState > SPECIAL)                              tmpState = NOT_STARTED; -                            SetBossState(i, EncounterState(tmpState)); +                        SetBossState(i, EncounterState(tmpState));                      }                  }                  else diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 097e2a65e46..b824b7d447e 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1014,11 +1014,11 @@ public:          {              player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);              player->SEND_GOSSIP_MENU(GOSSIP_OUTHOUSE_VACANT, go->GetGUID()); -            return true;          }          else              player->SEND_GOSSIP_MENU(GOSSIP_OUTHOUSE_INUSE, go->GetGUID()); -            return true; + +        return true;      }      bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) OVERRIDE @@ -1109,8 +1109,7 @@ class go_gjalerbron_cage : public GameObjectScript              {                  if (Creature* prisoner = go->FindNearestCreature(NPC_GJALERBRON_PRISONER, 5.0f))                  { -                    if (player) -                        player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, 0); +                    player->KilledMonsterCredit(NPC_GJALERBRON_PRISONER, 0);                      prisoner->AI()->Talk(SAY_FREE);                      prisoner->DespawnOrUnsummon(6000);  | 
