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); |