40 SF_LOG_DEBUG(
"scripts",
"InstanceScript: HandleGameObject failed");
45 for (std::vector<BossInfo>::const_iterator itr =
bosses.begin(); itr !=
bosses.end(); ++itr)
100 if (range.first == range.second)
104 for (; range.first != range.second && open; ++range.first)
106 DoorInfo const& info = range.first->second;
129 if (range.first == range.second)
132 for (; range.first != range.second; ++range.first)
134 DoorInfo const& data = range.first->second;
177 itr->second.bossInfo->minion.insert(minion);
179 itr->second.bossInfo->minion.erase(minion);
189 bossInfo->
state = state;
195 if (bossInfo->
state == state)
199 for (MinionSet::iterator i = bossInfo->
minion.begin(); i != bossInfo->
minion.end(); ++i)
200 if ((*i)->isWorldBoss() && (*i)->IsAlive())
203 bossInfo->
state = state;
208 for (DoorSet::iterator i = bossInfo->
door[type].begin(); i != bossInfo->
door[type].end(); ++i)
211 for (MinionSet::iterator i = bossInfo->
minion.begin(); i != bossInfo->
minion.end(); ++i)
227 std::istringstream loadStream(data);
230 for (std::vector<BossInfo>::iterator i =
bosses.begin(); i !=
bosses.end(); ++i, ++bossId)
241 std::ostringstream saveStream;
242 for (std::vector<BossInfo>::iterator i =
bosses.begin(); i !=
bosses.end(); ++i)
243 saveStream << (
uint32)i->state <<
' ';
244 return saveStream.str();
280 go->SetRespawnTime(uiTimeToDespawn);
291 if (
Player* player = itr->GetSource())
292 player->SendUpdateWorldState(uiStateId, uiStateData);
295 SF_LOG_DEBUG(
"scripts",
"DoUpdateWorldState attempt send data but no players in map.");
306 va_start(ap, format);
311 if (
Player* player = i->GetSource())
313 session->SendNotification(
"%s", buff);
324 if (
Player* player = i->GetSource())
325 player->UpdateAchievementCriteria(type, miscValue1, miscValue2, 0, unit);
335 if (
Player* player = i->GetSource())
336 player->StartTimedAchievement(type, entry);
346 if (
Player* player = i->GetSource())
347 player->RemoveTimedAchievement(type, entry);
358 if (
Player* player = itr->GetSource())
360 player->RemoveAurasDueToSpell(spell);
361 if (
Pet* pet = player->GetPet())
362 pet->RemoveAurasDueToSpell(spell);
375 if (
Player* player = i->GetSource())
376 player->CastSpell(player, spell,
true);
381 SF_LOG_ERROR(
"misc",
"Achievement system call InstanceScript::CheckAchievementCriteriaMeet but instance script for map %u not have implementation for achievement criteria %u",
400 data <<
uint8(param1);
406 data <<
uint8(param1);
409 data <<
uint8(param1);
410 data <<
uint8(param2);
430 for (DungeonEncounterList::const_iterator itr = encounters->begin(); itr != encounters->end(); ++itr)
450 if (
Player* player = i->GetSource())
451 if (
Group* grp = player->GetGroup())
452 if (grp->isLFGGroup())
454 sLFGMgr->FinishDungeon(grp->GetGUID(), dungeonId);
465 if (
Player* player = itr->GetSource())
466 player->UpdatePhasing();
AchievementCriteriaTimedTypes
@ ENCOUNTER_FRAME_RESET_COMBAT_RES_LIMIT
@ ENCOUNTER_FRAME_ENABLE_OBJECTIVE
@ ENCOUNTER_FRAME_SET_COMBAT_RES_LIMIT
@ ENCOUNTER_FRAME_DISENGAGE
@ ENCOUNTER_FRAME_ADD_COMBAT_RES_LIMIT
@ ENCOUNTER_FRAME_UPDATE_PRIORITY
@ ENCOUNTER_FRAME_DISABLE_OBJECTIVE
@ ENCOUNTER_FRAME_UPDATE_OBJECTIVE
@ ENCOUNTER_FRAME_ADD_TIMER
std::pair< DoorInfoMap::const_iterator, DoorInfoMap::const_iterator > DoorInfoMapBounds
#define SF_LOG_DEBUG(filterType__,...)
#define SF_LOG_ERROR(filterType__,...)
std::list< DungeonEncounter const * > DungeonEncounterList
@ GAMEOBJECT_TYPE_FISHINGNODE
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
virtual void EnterEvadeMode()
void Respawn(bool force=false)
void SetGoState(GOState state)
LootState getLootState() const
void UseDoorOrButton(uint32 time_to_restore=0, bool alternative=false, Unit *user=NULL)
GameobjectTypes GetGoType() const
void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=NULL)
void UpdateMinionState(Creature *minion, EncounterState state)
uint32 GetCompletedEncounterMask() const
virtual bool SetBossState(uint32 id, EncounterState state)
void DoUseDoorOrButton(uint64 guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
uint32 completedEncounters
void DoCastSpellOnPlayers(uint32 spell)
void UpdateEncounterState(EncounterCreditType type, uint32 creditEntry, Unit *source)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell)
std::string GetBossSaveData()
void AddMinion(Creature *minion, bool add)
virtual bool IsEncounterInProgress() const
virtual std::string GetSaveData()
void LoadBossState(char const *data)
void AddDoor(GameObject *door, bool add)
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0)
void LoadMinionData(MinionData const *data)
void LoadDoorData(DoorData const *data)
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
std::vector< BossInfo > bosses
void SendEncounterUnit(uint32 type, Unit *unit=NULL, uint8 param1=0, uint8 param2=0)
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
void UpdateDoorState(GameObject *door)
void DoRespawnGameObject(uint64 guid, uint32 timeToDespawn=MINUTE)
void DoStopTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
void DoSendNotifyToInstance(char const *format,...)
LinkedListHead::Iterator< MapReference const > const_iterator
const ByteBuffer & GetPackGUID() const
void setString(const uint8 index, const std::string &value)
void setUInt32(const uint8 index, const uint32 value)
Player session in the World.
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT
DoorSet door[MAX_DOOR_TYPES]
DungeonEncounterEntry const * dbcEntry
EncounterCreditType creditType
uint32 lastEncounterDungeon
float GetPositionX() const
float GetPositionY() const