From acaf42798a242f910ee199e89e70736720b79bd2 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Tue, 17 Jan 2023 19:45:56 +0100 Subject: [PATCH] Core/GameObjects: sync gameobject data field names with master branch and added some missing entries for Cataclysm --- .../game/Entities/GameObject/GameObject.cpp | 82 +-- .../game/Entities/GameObject/GameObjectData.h | 515 +++++++++--------- src/server/game/Entities/Player/Player.cpp | 4 +- .../game/Entities/Transport/Transport.cpp | 12 +- src/server/game/Globals/ObjectMgr.cpp | 86 +-- .../game/Grids/Notifiers/GridNotifiers.h | 4 +- src/server/game/Maps/TransportMgr.cpp | 6 +- src/server/game/Spells/SpellEffects.cpp | 12 +- src/server/scripts/Commands/cs_gobject.cpp | 4 +- src/server/scripts/Commands/cs_misc.cpp | 2 +- src/server/scripts/Commands/cs_npc.cpp | 2 +- .../boss_temple_guardian_anhuur.cpp | 2 +- .../OnyxiasLair/instance_onyxias_lair.cpp | 6 +- .../RubySanctum/boss_halion.cpp | 2 +- .../instance_icecrown_citadel.cpp | 4 +- .../Ulduar/boss_algalon_the_observer.cpp | 2 +- .../Outland/zone_blades_edge_mountains.cpp | 2 +- 17 files changed, 388 insertions(+), 359 deletions(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 62b0ce0ba2..81eb9635ad 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -703,7 +703,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, P { case GAMEOBJECT_TYPE_FISHINGHOLE: SetGoAnimProgress(animprogress); - m_goValue.FishingHole.MaxOpens = urand(GetGOInfo()->fishinghole.minSuccessOpens, GetGOInfo()->fishinghole.maxSuccessOpens); + m_goValue.FishingHole.MaxOpens = urand(GetGOInfo()->fishinghole.minRestock, GetGOInfo()->fishinghole.maxRestock); break; case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: m_goValue.Building.Health = goinfo->building.intactNumHits + goinfo->building.damagedNumHits; @@ -733,7 +733,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, P m_stealth.AddValue(STEALTH_TRAP, 70); } - if (GetGOInfo()->trap.invisible) + if (GetGOInfo()->trap.stealthAffected) { m_invisibility.AddFlag(INVISIBILITY_TRAP); m_invisibility.AddValue(INVISIBILITY_TRAP, 300); @@ -823,7 +823,7 @@ void GameObject::Update(uint32 diff) // Arming Time for GAMEOBJECT_TYPE_TRAP (6) GameObjectTemplate const* goInfo = GetGOInfo(); // Bombs - if (goInfo->trap.type == 2) + if (goInfo->trap.charges == 2) // Hardcoded tooltip value m_cooldownTime = GameTime::GetGameTimeMS() + 10 * IN_MILLISECONDS; else if (Unit* owner = GetOwner()) @@ -922,7 +922,7 @@ void GameObject::Update(uint32 diff) break; case GAMEOBJECT_TYPE_FISHINGHOLE: // Initialize a new max fish count on respawn - m_goValue.FishingHole.MaxOpens = urand(GetGOInfo()->fishinghole.minSuccessOpens, GetGOInfo()->fishinghole.maxSuccessOpens); + m_goValue.FishingHole.MaxOpens = urand(GetGOInfo()->fishinghole.minRestock, GetGOInfo()->fishinghole.maxRestock); break; default: break; @@ -963,7 +963,7 @@ void GameObject::Update(uint32 diff) break; // Type 2 (bomb) does not need to be triggered by a unit and despawns after casting its spell. - if (goInfo->trap.type == 2) + if (goInfo->trap.charges == 2) { SetLootState(GO_ACTIVATED); break; @@ -972,7 +972,7 @@ void GameObject::Update(uint32 diff) // Type 0 despawns after being triggered, type 1 does not. /// @todo This is activation radius. Casting radius must be selected from spell data. float radius; - if (!goInfo->trap.diameter) + if (!goInfo->trap.radius) { // Battleground traps: data2 == 0 && data5 == 3 if (goInfo->trap.cooldown != 3) @@ -981,7 +981,7 @@ void GameObject::Update(uint32 diff) radius = 3.f; } else - radius = goInfo->trap.diameter / 2.f; + radius = goInfo->trap.radius / 2.f; // Pointer to appropriate target if found any Unit* target = nullptr; @@ -1061,10 +1061,10 @@ void GameObject::Update(uint32 diff) case GAMEOBJECT_TYPE_TRAP: { GameObjectTemplate const* goInfo = GetGOInfo(); - if (goInfo->trap.type == 2 && goInfo->trap.spellId) + if (goInfo->trap.charges == 2 && goInfo->trap.spell) { /// @todo nullptr target won't work for target type 1 - CastSpell(nullptr, goInfo->trap.spellId); + CastSpell(nullptr, goInfo->trap.spell); SetLootState(GO_JUST_DEACTIVATED); } else if (Unit* target = ObjectAccessor::GetUnit(*this, m_lootStateUnitGUID)) @@ -1072,19 +1072,19 @@ void GameObject::Update(uint32 diff) // Some traps do not have a spell but should be triggered CastSpellExtraArgs args; args.SetOriginalCaster(GetOwnerGUID()); - if (goInfo->trap.spellId) - CastSpell(target, goInfo->trap.spellId, args); + if (goInfo->trap.spell) + CastSpell(target, goInfo->trap.spell, args); // Template value or 4 seconds m_cooldownTime = GameTime::GetGameTimeMS() + (goInfo->trap.cooldown ? goInfo->trap.cooldown : uint32(4)) * IN_MILLISECONDS; - if (goInfo->trap.type == 1) + if (goInfo->trap.charges == 1) SetLootState(GO_JUST_DEACTIVATED); - else if (!goInfo->trap.type) + else if (!goInfo->trap.charges) SetLootState(GO_READY); // Battleground gameobjects have data2 == 0 && data5 == 3 - if (!goInfo->trap.diameter && goInfo->trap.cooldown == 3) + if (!goInfo->trap.radius && goInfo->trap.cooldown == 3) if (Player* player = target->ToPlayer()) if (Battleground* bg = player->GetBattleground()) bg->HandleTriggerBuff(GetGUID()); @@ -1105,7 +1105,7 @@ void GameObject::Update(uint32 diff) //if Gameobject should cast spell, then this, but some GOs (type = 10) should be destroyed if (GetGoType() == GAMEOBJECT_TYPE_GOOBER) { - uint32 spellId = GetGOInfo()->goober.spellId; + uint32 spellId = GetGOInfo()->goober.spell; if (spellId) { @@ -1597,8 +1597,8 @@ uint8 GameObject::getLevelForTarget(WorldObject const* target) const if (GetGoType() == GAMEOBJECT_TYPE_TRAP) { - if (GetGOInfo()->trap.level != 0) - return GetGOInfo()->trap.level; + if (GetGOInfo()->trap.Unused != 0) + return GetGOInfo()->trap.Unused; if (const Unit* targetUnit = target->ToUnit()) return targetUnit->getLevel(); } @@ -1676,7 +1676,7 @@ bool GameObject::ActivateToQuest(Player* target) const } case GAMEOBJECT_TYPE_GOOBER: { - if (GetGOInfo()->goober.questId == -1 || target->GetQuestStatus(GetGOInfo()->goober.questId) == QUEST_STATUS_INCOMPLETE) + if (GetGOInfo()->goober.questID == -1 || target->GetQuestStatus(GetGOInfo()->goober.questID) == QUEST_STATUS_INCOMPLETE) return true; break; } @@ -1693,7 +1693,7 @@ void GameObject::TriggeringLinkedGameObject(uint32 trapEntry, Unit* target) if (!trapInfo || trapInfo->type != GAMEOBJECT_TYPE_TRAP) return; - SpellInfo const* trapSpell = sSpellMgr->GetSpellInfo(trapInfo->trap.spellId); + SpellInfo const* trapSpell = sSpellMgr->GetSpellInfo(trapInfo->trap.spell); if (!trapSpell) // checked at load already return; @@ -1848,12 +1848,12 @@ void GameObject::Use(Unit* user) case GAMEOBJECT_TYPE_TRAP: //6 { GameObjectTemplate const* goInfo = GetGOInfo(); - if (goInfo->trap.spellId) - CastSpell(user, goInfo->trap.spellId); + if (goInfo->trap.spell) + CastSpell(user, goInfo->trap.spell); m_cooldownTime = GameTime::GetGameTimeMS() + (goInfo->trap.cooldown ? goInfo->trap.cooldown : uint32(4)) * IN_MILLISECONDS; // template or 4 seconds - if (goInfo->trap.type == 1) // Deactivate after trigger + if (goInfo->trap.charges == 1) // Deactivate after trigger SetLootState(GO_JUST_DEACTIVATED); return; @@ -1870,8 +1870,8 @@ void GameObject::Use(Unit* user) if (ChairListSlots.empty()) // this is called once at first chair use to make list of available slots { - if (info->chair.slots > 0) // sometimes chairs in DB have error in fields and we dont know number of slots - for (uint32 i = 0; i < info->chair.slots; ++i) + if (info->chair.chairslots > 0) // sometimes chairs in DB have error in fields and we dont know number of slots + for (uint32 i = 0; i < info->chair.chairslots; ++i) ChairListSlots[i].Clear(); // Last user of current slot set to 0 (none sit here yet) else ChairListSlots[0].Clear(); // error in DB, make one default slot @@ -1895,7 +1895,7 @@ void GameObject::Use(Unit* user) for (ChairSlotAndUser::iterator itr = ChairListSlots.begin(); itr != ChairListSlots.end(); ++itr) { // the distance between this slot and the center of the go - imagine a 1D space - float relativeDistance = (info->size*itr->first)-(info->size*(info->chair.slots-1)/2.0f); + float relativeDistance = (info->size*itr->first)-(info->size*(info->chair.chairslots -1)/2.0f); float x_i = GetPositionX() + relativeDistance * std::cos(orthogonalOrientation); float y_i = GetPositionY() + relativeDistance * std::sin(orthogonalOrientation); @@ -1934,7 +1934,7 @@ void GameObject::Use(Unit* user) { itr->second = player->GetGUID(); //this slot in now used by player player->TeleportTo(GetMapId(), x_lowest, y_lowest, GetPositionZ(), GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET); - player->SetStandState(UNIT_STAND_STATE_SIT_LOW_CHAIR+info->chair.height); + player->SetStandState(UNIT_STAND_STATE_SIT_LOW_CHAIR + info->chair.chairheight); if (info->chair.triggeredEvent) GameEvents::Trigger(info->chair.triggeredEvent, player, this); return; @@ -1950,7 +1950,7 @@ void GameObject::Use(Unit* user) if (Player* player = user->ToPlayer()) { - if (info->goober.pageId) // show page... + if (info->goober.pageID) // show page... { WorldPacket data(SMSG_GAMEOBJECT_PAGETEXT, 8); data << GetGUID(); @@ -1962,17 +1962,17 @@ void GameObject::Use(Unit* user) player->SendPreparedGossip(this); } - if (info->goober.eventId) + if (info->goober.eventID) { - TC_LOG_DEBUG("maps.script", "Goober ScriptStart id %u for GO entry %u (GUID %u).", info->goober.eventId, GetEntry(), GetSpawnId()); - GameEvents::Trigger(info->goober.eventId, player, this); + TC_LOG_DEBUG("maps.script", "Goober ScriptStart id %u for GO entry %u (GUID %u).", info->goober.eventID, GetEntry(), GetSpawnId()); + GameEvents::Trigger(info->goober.eventID, player, this); } // possible quest objective for active quests - if (info->goober.questId && sObjectMgr->GetQuestTemplate(info->goober.questId)) + if (info->goober.questID && sObjectMgr->GetQuestTemplate(info->goober.questID)) { //Quest require to be active for GO using - if (player->GetQuestStatus(info->goober.questId) != QUEST_STATUS_INCOMPLETE) + if (player->GetQuestStatus(info->goober.questID) != QUEST_STATUS_INCOMPLETE) break; } @@ -1987,7 +1987,7 @@ void GameObject::Use(Unit* user) player->KillCreditGO(info->entry, GetGUID()); } - if (uint32 trapEntry = info->goober.linkedTrapId) + if (uint32 trapEntry = info->goober.linkedTrap) TriggeringLinkedGameObject(trapEntry, user); SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); @@ -2002,7 +2002,7 @@ void GameObject::Use(Unit* user) m_cooldownTime = GameTime::GetGameTimeMS() + info->GetAutoCloseTime(); // cast this spell later if provided - spellId = info->goober.spellId; + spellId = info->goober.spell; if (!info->goober.playerCast) spellCaster = nullptr; @@ -2019,8 +2019,8 @@ void GameObject::Use(Unit* user) Player* player = user->ToPlayer(); - if (info->camera.cinematicId) - player->SendCinematicStart(info->camera.cinematicId); + if (info->camera.camera) + player->SendCinematicStart(info->camera.camera); if (info->camera.eventID) GameEvents::Trigger(info->camera.eventID, player, this); @@ -2168,12 +2168,12 @@ void GameObject::Use(Unit* user) } // full amount unique participants including original summoner - if (GetUniqueUseCount() == info->summoningRitual.reqParticipants) + if (GetUniqueUseCount() == info->summoningRitual.casters) { if (m_ritualOwner) spellCaster = m_ritualOwner; - spellId = info->summoningRitual.spellId; + spellId = info->summoningRitual.spell; if (spellId == 62330) // GO store nonexistent spell, replace by expected { @@ -2225,7 +2225,7 @@ void GameObject::Use(Unit* user) if (!m_goInfo->spellcaster.allowMounted) user->RemoveAurasByType(SPELL_AURA_MOUNTED); - spellId = m_goInfo->spellcaster.spellId; + spellId = m_goInfo->spellcaster.spell; if (!sSpellMgr->GetSpellInfo(spellId)) { TC_LOG_ERROR("misc", "SpellCaster gameobject (Entry: %u) attempted to cast a non-existant spell (ID: %u).", GetEntry(), spellId); @@ -2831,7 +2831,7 @@ void GameObject::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* t if (!target) return; - bool forcedFlags = GetGoType() == GAMEOBJECT_TYPE_CHEST && GetGOInfo()->chest.groupLootRules && HasLootRecipient(); + bool forcedFlags = GetGoType() == GAMEOBJECT_TYPE_CHEST && GetGOInfo()->chest.usegrouplootrules && HasLootRecipient(); bool targetIsGM = target->IsGameMaster(); ByteBuffer fieldBuffer; @@ -2891,7 +2891,7 @@ void GameObject::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* t { uint32 goFlags = m_uint32Values[GAMEOBJECT_FLAGS]; if (GetGoType() == GAMEOBJECT_TYPE_CHEST) - if (GetGOInfo()->chest.groupLootRules && !IsLootAllowedFor(target)) + if (GetGOInfo()->chest.usegrouplootrules && !IsLootAllowedFor(target)) goFlags |= GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE; fieldBuffer << goFlags; diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index ae4de20d9d..024e168b47 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -48,166 +48,176 @@ struct GameObjectTemplate //0 GAMEOBJECT_TYPE_DOOR struct { - uint32 startOpen; //0 used client side to determine GO_ACTIVATED means open/closed - uint32 lockId; //1 -> Lock.dbc - uint32 autoCloseTime; //2 secs till autoclose = autoCloseTime / 0x10000 - uint32 noDamageImmune; //3 break opening whenever you recieve damage? - uint32 openTextID; //4 can be used to replace castBarCaption? - uint32 closeTextID; //5 - uint32 ignoredByPathing; //6 - uint32 conditionID1; //7 - uint32 DoorisOpaque; //8 Door is Opaque (Disable portal on close), enum { false, true, }; Default: true - uint32 GiganticAOI; //9 Gigantic AOI, enum { false, true, }; Default: false - uint32 InfiniteAOI; //10 Infinite AOI, enum { false, true, }; Default: false + uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false + uint32 open; // 1 open, References: Lock_, NoValue = 0 + uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 + uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false + uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0 + uint32 closeTextID; // 5 closeTextID, References: BroadcastText, NoValue = 0 + uint32 IgnoredByPathing; // 6 Ignored By Pathing, enum { false, true, }; Default: false + uint32 conditionID1; // 7 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 DoorisOpaque; // 8 Door is Opaque (Disable portal on close), enum { false, true, }; Default: true + uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false + uint32 InfiniteAOI; // 10 Infinite AOI, enum { false, true, }; Default: false } door; //1 GAMEOBJECT_TYPE_BUTTON struct { - uint32 startOpen; //0 - uint32 lockId; //1 -> Lock.dbc - uint32 autoCloseTime; //2 secs till autoclose = autoCloseTime / 0x10000 - uint32 linkedTrap; //3 - uint32 noDamageImmune; //4 isBattlegroundObject - uint32 GiganticAOI; //5 - uint32 openTextID; //6 can be used to replace castBarCaption? - uint32 closeTextID; //7 - uint32 losOK; //8 - uint32 conditionID1; //9 + uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false + uint32 open; // 1 open, References: Lock_, NoValue = 0 + uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 + uint32 linkedTrap; // 3 linkedTrap, References: GameObjects, NoValue = 0 + uint32 noDamageImmune; // 4 noDamageImmune, enum { false, true, }; Default: false + uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false + uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 + uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0 + uint32 requireLOS; // 8 require LOS, enum { false, true, }; Default: false + uint32 conditionID1; // 9 conditionID1, References: PlayerCondition, NoValue = 0 } button; //2 GAMEOBJECT_TYPE_QUESTGIVER struct { - uint32 lockId; //0 -> Lock.dbc - uint32 questList; //1 - uint32 pageMaterial; //2 - uint32 gossipID; //3 - uint32 customAnim; //4 - uint32 noDamageImmune; //5 - uint32 openTextID; //6 can be used to replace castBarCaption? - uint32 losOK; //7 - uint32 allowMounted; //8 Is usable while on mount/vehicle. (0/1) - uint32 GiganticAOI; //9 - uint32 conditionID1; //10 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 questGiver; // 1 questGiver, References: QuestGiver, NoValue = 0 + uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0 + uint32 gossipID; // 3 gossipID, References: Gossip, NoValue = 0 + uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0 + uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false + uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 + uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: false + uint32 allowMounted; // 8 allowMounted, enum { false, true, }; Default: false + uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false + uint32 conditionID1; // 10 conditionID1, References: PlayerCondition, NoValue = 0 } questgiver; //3 GAMEOBJECT_TYPE_CHEST struct { - uint32 lockId; //0 -> Lock.dbc - uint32 lootId; //1 - uint32 chestRestockTime; //2 - uint32 consumable; //3 - uint32 minSuccessOpens; //4 Deprecated, pre 3.0 was used for mining nodes but since WotLK all mining nodes are usable once and grant all loot with a single use - uint32 maxSuccessOpens; //5 Deprecated, pre 3.0 was used for mining nodes but since WotLK all mining nodes are usable once and grant all loot with a single use - uint32 eventId; //6 lootedEvent - uint32 linkedTrapId; //7 - uint32 questId; //8 not used currently but store quest required for GO activation for player - uint32 level; //9 - uint32 losOK; //10 - uint32 leaveLoot; //11 - uint32 notInCombat; //12 - uint32 logLoot; //13 - uint32 openTextID; //14 can be used to replace castBarCaption? - uint32 groupLootRules; //15 - uint32 floatingTooltip; //16 - uint32 conditionID1; //17 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 chestLoot; // 1 chestLoot (legacy/classic), References: Treasure, NoValue = 0 + uint32 chestRestockTime; // 2 chestRestockTime, int, Min value: 0, Max value: 1800000, Default value: 0 + uint32 consumable; // 3 consumable, enum { false, true, }; Default: false + uint32 minRestock; // 4 minRestock, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 maxRestock; // 5 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 triggeredEvent; // 6 triggeredEvent, References: GameEvents, NoValue = 0 + uint32 linkedTrap; // 7 linkedTrap, References: GameObjects, NoValue = 0 + uint32 questID; // 8 questID, References: QuestV2, NoValue = 0 + uint32 InteractRadiusOverride; // 9 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 requireLOS; // 10 require LOS, enum { false, true, }; Default: false + uint32 leaveLoot; // 11 leaveLoot, enum { false, true, }; Default: false + uint32 notInCombat; // 12 notInCombat, enum { false, true, }; Default: false + uint32 logloot; // 13 log loot, enum { false, true, }; Default: false + uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0 + uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false + uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false + uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0 + int32 xpMinLevel; // 18 xpMinLevel, int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp + uint32 Unk; // 20 unk, int, Min value: 0, Max value: 123, Default value: 0 // related to needed level for loot? + uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false + uint32 DamageImmuneOK; // 22 Damage Immune OK, enum { false, true, }; Default: false + uint32 trivialSkillLow; // 23 trivialSkillLow, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 trivialSkillHigh; // 24 trivialSkillHigh, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 DungeonEncounter; // 25 Dungeon Encounter, References: DungeonEncounter, NoValue = 0 } chest; //4 GAMEOBJECT_TYPE_BINDER - empty //5 GAMEOBJECT_TYPE_GENERIC struct { - uint32 floatingTooltip; //0 - uint32 highlight; //1 - uint32 serverOnly; //2 - uint32 GiganticAOI; //3 - uint32 floatOnWater; //4 - int32 questID; //5 - uint32 conditionID1; //6 + uint32 floatingTooltip; // 0 floatingTooltip, enum { false, true, }; Default: false + uint32 highlight; // 1 highlight, enum { false, true, }; Default: true + uint32 serverOnly; // 2 serverOnly, enum { false, true, }; Default: false + uint32 GiganticAOI; // 3 Gigantic AOI, enum { false, true, }; Default: false + uint32 floatOnWater; // 4 floatOnWater, enum { false, true, }; Default: false + uint32 questID; // 5 questID, References: QuestV2, NoValue = 0 + uint32 conditionID1; // 6 conditionID1, References: PlayerCondition, NoValue = 0 } _generic; //6 GAMEOBJECT_TYPE_TRAP struct { - uint32 lockId; //0 -> Lock.dbc - uint32 level; //1 - uint32 diameter; //2 diameter for trap activation - uint32 spellId; //3 - uint32 type; //4 0 trap with no despawn after cast. 1 trap despawns after cast. 2 bomb casts on spawn. - uint32 cooldown; //5 time in secs - int32 autoCloseTime; //6 - uint32 startDelay; //7 - uint32 serverOnly; //8 - uint32 stealthed; //9 - uint32 GiganticAOI; //10 - uint32 invisible; //11 - uint32 openTextID; //12 can be used to replace castBarCaption? - uint32 closeTextID; //13 - uint32 ignoreTotems; //14 - uint32 conditionID1; //15 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 Unused; // 1 Unused, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 radius; // 2 radius, int, Min value: 0, Max value: 100, Default value: 0 + uint32 spell; // 3 spell, References: Spell, NoValue = 0 + uint32 charges; // 4 charges, int, Min value: 0, Max value: 65535, Default value: 1 + uint32 cooldown; // 5 cooldown, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 autoClose; // 6 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 startDelay; // 7 startDelay, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 serverOnly; // 8 serverOnly, enum { false, true, }; Default: false + uint32 stealthed; // 9 stealthed, enum { false, true, }; Default: false + uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false + uint32 stealthAffected; // 11 stealthAffected, enum { false, true, }; Default: false + uint32 openTextID; // 12 openTextID, References: BroadcastText, NoValue = 0 + uint32 closeTextID; // 13 closeTextID, References: BroadcastText, NoValue = 0 + uint32 IgnoreTotems; // 14 Ignore Totems, enum { false, true, }; Default: false + uint32 conditionID1; // 15 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 playerCast; // 16 playerCast, enum { false, true, }; Default: false } trap; //7 GAMEOBJECT_TYPE_CHAIR struct { - uint32 slots; //0 - uint32 height; //1 - uint32 onlyCreatorUse; //2 - uint32 triggeredEvent; //3 - uint32 conditionID1; //4 + uint32 chairslots; // 0 chairslots, int, Min value: 1, Max value: 5, Default value: 1 + uint32 chairheight; // 1 chairheight, int, Min value: 0, Max value: 2, Default value: 1 + uint32 onlyCreatorUse; // 2 onlyCreatorUse, enum { false, true, }; Default: false + uint32 triggeredEvent; // 3 triggeredEvent, References: GameEvents, NoValue = 0 + uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 } chair; //8 GAMEOBJECT_TYPE_SPELL_FOCUS struct { - uint32 focusId; //0 - uint32 dist; //1 - uint32 linkedTrapId; //2 - uint32 serverOnly; //3 - uint32 questID; //4 - uint32 GiganticAOI; //5 - uint32 floatingTooltip; //6 - uint32 floatOnWater; //7 - uint32 conditionID1; //8 + uint32 spellFocusType; // 0 spellFocusType, References: SpellFocusObject, NoValue = 0 + uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 10 + uint32 linkedTrap; // 2 linkedTrap, References: GameObjects, NoValue = 0 + uint32 serverOnly; // 3 serverOnly, enum { false, true, }; Default: false + uint32 questID; // 4 questID, References: QuestV2, NoValue = 0 + uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false + uint32 floatingTooltip; // 6 floatingTooltip, enum { false, true, }; Default: false } spellFocus; //9 GAMEOBJECT_TYPE_TEXT struct { - uint32 pageID; //0 - uint32 language; //1 - uint32 pageMaterial; //2 - uint32 allowMounted; //3 Is usable while on mount/vehicle. (0/1) - uint32 conditionID1; //4 + uint32 pageID; // 0 pageID, References: PageText, NoValue = 0 + uint32 language; // 1 language, References: Languages, NoValue = 0 + uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0 + uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false + uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 NeverUsableWhileMounted; // 5 Never Usable While Mounted, enum { false, true, }; Default: false + uint32 InteractRadiusOverride; // 6 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 } text; //10 GAMEOBJECT_TYPE_GOOBER struct { - uint32 lockId; //0 -> Lock.dbc - int32 questId; //1 - uint32 eventId; //2 - uint32 autoCloseTime; //3 - uint32 customAnim; //4 - uint32 consumable; //5 - uint32 cooldown; //6 - uint32 pageId; //7 - uint32 language; //8 - uint32 pageMaterial; //9 - uint32 spellId; //10 - uint32 noDamageImmune; //11 - uint32 linkedTrapId; //12 - uint32 GiganticAOI; //13 - uint32 openTextID; //14 can be used to replace castBarCaption? - uint32 closeTextID; //15 - uint32 losOK; //16 isBattlegroundObject - uint32 allowMounted; //17 Is usable while on mount/vehicle. (0/1) - uint32 floatingTooltip; //18 - uint32 gossipID; //19 - uint32 WorldStateSetsState; //20 - uint32 floatOnWater; //21 - uint32 conditionID1; //22 - uint32 playerCast; //23 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 questID; // 1 questID, References: QuestV2, NoValue = 0 + uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0 + uint32 autoClose; // 3 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000 + uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0 + uint32 consumable; // 5 consumable, enum { false, true, }; Default: false + uint32 cooldown; // 6 cooldown, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 pageID; // 7 pageID, References: PageText, NoValue = 0 + uint32 language; // 8 language, References: Languages, NoValue = 0 + uint32 pageMaterial; // 9 pageMaterial, References: PageTextMaterial, NoValue = 0 + uint32 spell; // 10 spell, References: Spell, NoValue = 0 + uint32 noDamageImmune; // 11 noDamageImmune, enum { false, true, }; Default: false + uint32 linkedTrap; // 12 linkedTrap, References: GameObjects, NoValue = 0 + uint32 GiganticAOI; // 13 Gigantic AOI, enum { false, true, }; Default: false + uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0 + uint32 closeTextID; // 15 closeTextID, References: BroadcastText, NoValue = 0 + uint32 requireLOS; // 16 require LOS, enum { false, true, }; Default: false + uint32 allowMounted; // 17 allowMounted, enum { false, true, }; Default: false + uint32 floatingTooltip; // 18 floatingTooltip, enum { false, true, }; Default: false + uint32 gossipID; // 19 gossipID, References: Gossip, NoValue = 0 + uint32 AllowMultiInteract; // 20 Allow Multi-Interact, enum { false, true, }; Default: false + uint32 floatOnWater; // 21 floatOnWater, enum { false, true, }; Default: false + uint32 conditionID1; // 22 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 playerCast; // 23 playerCast, enum { false, true, }; Default: false } goober; //11 GAMEOBJECT_TYPE_TRANSPORT struct { uint32 Timeto2ndfloor; // 0 Time to 2nd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false - uint32 autoCloseTime; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 Reached1stfloor; // 3 Reached 1st floor, References: GameEvents, NoValue = 0 uint32 Reached2ndfloor; // 4 Reached 2nd floor, References: GameEvents, NoValue = 0 int32 SpawnMap; // 5 Spawn Map, References: Map, NoValue = -1 @@ -220,154 +230,173 @@ struct GameObjectTemplate //12 GAMEOBJECT_TYPE_AREADAMAGE struct { - uint32 lockId; //0 - uint32 radius; //1 - uint32 damageMin; //2 - uint32 damageMax; //3 - uint32 damageSchool; //4 - uint32 autoCloseTime; //5 secs till autoclose = autoCloseTime / 0x10000 - uint32 openTextID; //6 - uint32 closeTextID; //7 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 3 + uint32 damageMin; // 2 damageMin, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 damageMax; // 3 damageMax, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 damageSchool; // 4 damageSchool, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 autoClose; // 5 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 + uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0 } areadamage; //13 GAMEOBJECT_TYPE_CAMERA struct { - uint32 lockId; //0 -> Lock.dbc - uint32 cinematicId; //1 - uint32 eventID; //2 - uint32 openTextID; //3 can be used to replace castBarCaption? - uint32 conditionID1; //4 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 camera; // 1 camera, References: CinematicSequences, NoValue = 0 + uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0 + uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 + uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 InteractRadiusOverride; // 5 Interact Radius Override (in hundredths), int, Min value: 0, Max value: 2147483647, Default value: 0 } camera; - //14 GAMEOBJECT_TYPE_MAPOBJECT - empty + // 14 GAMEOBJECT_TYPE_MAP_OBJECT + struct + { + } mapobject; //15 GAMEOBJECT_TYPE_MO_TRANSPORT struct { - uint32 taxiPathId; //0 - uint32 moveSpeed; //1 - uint32 accelRate; //2 - uint32 startEventID; //3 - uint32 stopEventID; //4 - uint32 transportPhysics; //5 - uint32 mapID; //6 - uint32 worldState1; //7 - uint32 canBeStopped; //8 + uint32 taxiPathID; // 0 taxiPathID, References: TaxiPath, NoValue = 0 + uint32 moveSpeed; // 1 moveSpeed, int, Min value: 1, Max value: 60, Default value: 1 + uint32 accelRate; // 2 accelRate, int, Min value: 1, Max value: 20, Default value: 1 + uint32 startEventID; // 3 startEventID, References: GameEvents, NoValue = 0 + uint32 stopEventID; // 4 stopEventID, References: GameEvents, NoValue = 0 + uint32 transportPhysics; // 5 transportPhysics, References: TransportPhysics, NoValue = 0 + int32 SpawnMap; // 6 Spawn Map, References: Map, NoValue = -1 + uint32 worldState1; // 7 worldState1, References: WorldState, NoValue = 0 + uint32 allowstopping; // 8 allow stopping, enum { false, true, }; Default: false } moTransport; - //16 GAMEOBJECT_TYPE_DUELFLAG - empty - //17 GAMEOBJECT_TYPE_FISHINGNODE - empty + // 16 GAMEOBJECT_TYPE_DUEL_ARBITER + struct + { + } duelFlag; + // 17 GAMEOBJECT_TYPE_FISHINGNODE + struct + { + } fishingNode; //18 GAMEOBJECT_TYPE_SUMMONING_RITUAL struct { - uint32 reqParticipants; //0 - uint32 spellId; //1 - uint32 animSpell; //2 - uint32 ritualPersistent; //3 - uint32 casterTargetSpell; //4 - uint32 casterTargetSpellTargets; //5 - uint32 castersGrouped; //6 - uint32 ritualNoTargetCheck; //7 + uint32 casters; // 0 casters, int, Min value: 1, Max value: 10, Default value: 1 + uint32 spell; // 1 spell, References: Spell, NoValue = 0 + uint32 animSpell; // 2 animSpell, References: Spell, NoValue = 0 + uint32 ritualPersistent; // 3 ritualPersistent, enum { false, true, }; Default: false + uint32 casterTargetSpell; // 4 casterTargetSpell, References: Spell, NoValue = 0 + uint32 casterTargetSpellTargets; // 5 casterTargetSpellTargets, int, Min value: 1, Max value: 10, Default value: 1 + uint32 castersGrouped; // 6 castersGrouped, enum { false, true, }; Default: true + uint32 ritualNoTargetCheck; // 7 ritualNoTargetCheck, enum { false, true, }; Default: true } summoningRitual; //19 GAMEOBJECT_TYPE_MAILBOX struct { - uint32 conditionID1; //0 + uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0 } mailbox; - //20 GAMEOBJECT_TYPE_DO_NOT_USE - empty + // 20 GAMEOBJECT_TYPE_DO_NOT_USE + struct + { + } DONOTUSE; //21 GAMEOBJECT_TYPE_GUARDPOST struct { - uint32 creatureID; //0 - uint32 charges; //1 + uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0 + uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1 } guardpost; //22 GAMEOBJECT_TYPE_SPELLCASTER struct { - uint32 spellId; //0 - uint32 charges; //1 - uint32 partyOnly; //2 - uint32 allowMounted; //3 Is usable while on mount/vehicle. (0/1) - uint32 GiganticAOI; //4 - uint32 conditionID1; //5 - uint32 playerCast; //6 + uint32 spell; // 0 spell, References: Spell, NoValue = 0 + int32 charges; // 1 charges, int, Min value: -1, Max value: 65535, Default value: 1 + uint32 partyOnly; // 2 partyOnly, enum { false, true, }; Default: false + uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false + uint32 GiganticAOI; // 4 Gigantic AOI, enum { false, true, }; Default: false + uint32 conditionID1; // 5 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 playerCast; // 6 playerCast, enum { false, true, }; Default: false } spellcaster; //23 GAMEOBJECT_TYPE_MEETINGSTONE struct { - uint32 minLevel; //0 - uint32 maxLevel; //1 - uint32 areaID; //2 + uint32 minLevel; // 0 minLevel, int, Min value: 0, Max value: 65535, Default value: 1 + uint32 maxLevel; // 1 macLevel, int, Min value: 1, Max value: 65535, Default value: 85 + uint32 areaID; // 2 areaID, References: AreaTable, NoValue = 0 } meetingstone; //24 GAMEOBJECT_TYPE_FLAGSTAND struct { - uint32 lockId; //0 - uint32 pickupSpell; //1 - uint32 radius; //2 - uint32 returnAura; //3 - uint32 returnSpell; //4 - uint32 noDamageImmune; //5 - uint32 openTextID; //6 - uint32 losOK; //7 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0 + uint32 radius; // 2 radius, int, Min value: 0, Max value: 50, Default value: 0 + uint32 returnAura; // 3 returnAura, References: Spell, NoValue = 0 + uint32 returnSpell; // 4 returnSpell, References: Spell, NoValue = 0 + uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false + uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0 + uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: true } flagstand; //25 GAMEOBJECT_TYPE_FISHINGHOLE struct { - uint32 radius; //0 how close bobber must land for sending loot - uint32 lootId; //1 - uint32 minSuccessOpens; //2 - uint32 maxSuccessOpens; //3 - uint32 lockId; //4 -> Lock.dbc; possibly 1628 for all? + uint32 radius; // 0 radius, int, Min value: 0, Max value: 50, Default value: 0 + uint32 chestLoot; // 1 chestLoot (legacy/classic), References: Treasure, NoValue = 0 + uint32 minRestock; // 2 minRestock, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 maxRestock; // 3 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0 + uint32 open; // 4 open, References: Lock_, NoValue = 0 } fishinghole; //26 GAMEOBJECT_TYPE_FLAGDROP struct { - uint32 lockId; //0 - uint32 eventID; //1 - uint32 pickupSpell; //2 - uint32 noDamageImmune; //3 - uint32 openTextID; //4 + uint32 open; // 0 open, References: Lock_, NoValue = 0 + uint32 eventID; // 1 eventID, References: GameEvents, NoValue = 0 + uint32 pickupSpell; // 2 pickupSpell, References: Spell, NoValue = 0 + uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false + uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0 } flagdrop; //27 GAMEOBJECT_TYPE_MINI_GAME struct { uint32 gameType; //0 } miniGame; - //28 GAMEOBJECT_TYPE_DO_NOT_USE_2 - empty + // 28 GAMEOBJECT_TYPE_DO_NOT_USE_2 + struct + { + } DONOTUSE2; //29 GAMEOBJECT_TYPE_CAPTURE_POINT struct { - uint32 radius; //0 - uint32 spell; //1 - uint32 worldState1; //2 - uint32 worldstate2; //3 - uint32 winEventID1; //4 - uint32 winEventID2; //5 - uint32 contestedEventID1; //6 - uint32 contestedEventID2; //7 - uint32 progressEventID1; //8 - uint32 progressEventID2; //9 - uint32 neutralEventID1; //10 - uint32 neutralEventID2; //11 - uint32 neutralPercent; //12 - uint32 worldstate3; //13 - uint32 minSuperiority; //14 - uint32 maxSuperiority; //15 - uint32 minTime; //16 - uint32 maxTime; //17 - uint32 GiganticAOI; //18 - uint32 highlight; //19 - uint32 startingValue; //20 - uint32 unidirectional; //21 + uint32 radius; // 0 radius, int, Min value: 0, Max value: 100, Default value: 10 + uint32 spell; // 1 spell, References: Spell, NoValue = 0 + uint32 worldState1; // 2 worldState1, References: WorldState, NoValue = 0 + uint32 worldstate2; // 3 worldstate2, References: WorldState, NoValue = 0 + uint32 CaptureEventHorde; // 4 Capture Event (Horde), References: GameEvents, NoValue = 0 + uint32 CaptureEventAlliance; // 5 Capture Event (Alliance), References: GameEvents, NoValue = 0 + uint32 ContestedEventHorde; // 6 Contested Event (Horde), References: GameEvents, NoValue = 0 + uint32 ContestedEventAlliance; // 7 Contested Event (Alliance), References: GameEvents, NoValue = 0 + uint32 ProgressEventHorde; // 8 Progress Event (Horde), References: GameEvents, NoValue = 0 + uint32 ProgressEventAlliance; // 9 Progress Event (Alliance), References: GameEvents, NoValue = 0 + uint32 NeutralEventHorde; // 10 Neutral Event (Horde), References: GameEvents, NoValue = 0 + uint32 NeutralEventAlliance; // 11 Neutral Event (Alliance), References: GameEvents, NoValue = 0 + uint32 neutralPercent; // 12 neutralPercent, int, Min value: 0, Max value: 100, Default value: 0 + uint32 worldstate3; // 13 worldstate3, References: WorldState, NoValue = 0 + uint32 minSuperiority; // 14 minSuperiority, int, Min value: 1, Max value: 65535, Default value: 1 + uint32 maxSuperiority; // 15 maxSuperiority, int, Min value: 1, Max value: 65535, Default value: 1 + uint32 minTime; // 16 minTime, int, Min value: 1, Max value: 65535, Default value: 1 + uint32 maxTime; // 17 maxTime, int, Min value: 1, Max value: 65535, Default value: 1 + uint32 GiganticAOI; // 18 Gigantic AOI, enum { false, true, }; Default: false + uint32 highlight; // 19 highlight, enum { false, true, }; Default: true + uint32 startingValue; // 20 startingValue, int, Min value: 0, Max value: 100, Default value: 50 + uint32 unidirectional; // 21 unidirectional, enum { false, true, }; Default: false + uint32 killbonustime; // 22 kill bonus time %, int, Min value: 0, Max value: 100, Default value: 0 + uint32 speedWorldState1; // 23 speedWorldState1, References: WorldState, NoValue = 0 + uint32 speedWorldState2; // 24 speedWorldState2, References: WorldState, NoValue = 0 } capturePoint; //30 GAMEOBJECT_TYPE_AURA_GENERATOR struct { - uint32 startOpen; //0 - uint32 radius; //1 - uint32 auraID1; //2 - uint32 conditionID1; //3 - uint32 auraID2; //4 - uint32 conditionID2; //5 - uint32 serverOnly; //6 + uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: true + uint32 radius; // 1 radius, int, Min value: 0, Max value: 100, Default value: 10 + uint32 auraID1; // 2 auraID1, References: Spell, NoValue = 0 + uint32 conditionID1; // 3 conditionID1, References: PlayerCondition, NoValue = 0 + uint32 auraID2; // 4 auraID2, References: Spell, NoValue = 0 + uint32 conditionID2; // 5 conditionID2, References: PlayerCondition, NoValue = 0 + uint32 serverOnly; // 6 serverOnly, enum { false, true, }; Default: false } auraGenerator; //31 GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY struct @@ -378,8 +407,8 @@ struct GameObjectTemplate //32 GAMEOBJECT_TYPE_BARBER_CHAIR struct { - uint32 chairheight; //0 - uint32 heightOffset; //1 + uint32 chairheight; // 0 chairheight, int, Min value: 0, Max value: 2, Default value: 1 + int32 HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0 } barberChair; //33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING struct @@ -462,11 +491,11 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_BUTTON: return button.losOK == 0; - case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.losOK == 0; - case GAMEOBJECT_TYPE_CHEST: return chest.losOK == 0; - case GAMEOBJECT_TYPE_GOOBER: return goober.losOK == 0; - case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.losOK == 0; + case GAMEOBJECT_TYPE_BUTTON: return button.requireLOS == 0; + case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.requireLOS == 0; + case GAMEOBJECT_TYPE_CHEST: return chest.requireLOS == 0; + case GAMEOBJECT_TYPE_GOOBER: return goober.requireLOS == 0; + case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.requireLOS == 0; case GAMEOBJECT_TYPE_TRAP: return true; default: return false; } @@ -476,17 +505,17 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_DOOR: return door.lockId; - case GAMEOBJECT_TYPE_BUTTON: return button.lockId; - case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.lockId; - case GAMEOBJECT_TYPE_CHEST: return chest.lockId; - case GAMEOBJECT_TYPE_TRAP: return trap.lockId; - case GAMEOBJECT_TYPE_GOOBER: return goober.lockId; - case GAMEOBJECT_TYPE_AREADAMAGE: return areadamage.lockId; - case GAMEOBJECT_TYPE_CAMERA: return camera.lockId; - case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.lockId; - case GAMEOBJECT_TYPE_FISHINGHOLE:return fishinghole.lockId; - case GAMEOBJECT_TYPE_FLAGDROP: return flagdrop.lockId; + case GAMEOBJECT_TYPE_DOOR: return door.open; + case GAMEOBJECT_TYPE_BUTTON: return button.open; + case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.open; + case GAMEOBJECT_TYPE_CHEST: return chest.open; + case GAMEOBJECT_TYPE_TRAP: return trap.open; + case GAMEOBJECT_TYPE_GOOBER: return goober.open; + case GAMEOBJECT_TYPE_AREADAMAGE: return areadamage.open; + case GAMEOBJECT_TYPE_CAMERA: return camera.open; + case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.open; + case GAMEOBJECT_TYPE_FISHINGHOLE:return fishinghole.open; + case GAMEOBJECT_TYPE_FLAGDROP: return flagdrop.open; default: return 0; } } @@ -536,9 +565,9 @@ struct GameObjectTemplate switch (type) { case GAMEOBJECT_TYPE_BUTTON: return button.linkedTrap; - case GAMEOBJECT_TYPE_CHEST: return chest.linkedTrapId; - case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.linkedTrapId; - case GAMEOBJECT_TYPE_GOOBER: return goober.linkedTrapId; + case GAMEOBJECT_TYPE_CHEST: return chest.linkedTrap; + case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.linkedTrap; + case GAMEOBJECT_TYPE_GOOBER: return goober.linkedTrap; default: return 0; } } @@ -548,12 +577,12 @@ struct GameObjectTemplate uint32 autoCloseTime = 0; switch (type) { - case GAMEOBJECT_TYPE_DOOR: autoCloseTime = door.autoCloseTime; break; - case GAMEOBJECT_TYPE_BUTTON: autoCloseTime = button.autoCloseTime; break; - case GAMEOBJECT_TYPE_TRAP: autoCloseTime = trap.autoCloseTime; break; - case GAMEOBJECT_TYPE_GOOBER: autoCloseTime = goober.autoCloseTime; break; - case GAMEOBJECT_TYPE_TRANSPORT: autoCloseTime = transport.autoCloseTime; break; - case GAMEOBJECT_TYPE_AREADAMAGE: autoCloseTime = areadamage.autoCloseTime; break; + case GAMEOBJECT_TYPE_DOOR: autoCloseTime = door.autoClose; break; + case GAMEOBJECT_TYPE_BUTTON: autoCloseTime = button.autoClose; break; + case GAMEOBJECT_TYPE_TRAP: autoCloseTime = trap.autoClose; break; + case GAMEOBJECT_TYPE_GOOBER: autoCloseTime = goober.autoClose; break; + case GAMEOBJECT_TYPE_TRANSPORT: autoCloseTime = transport.autoClose; break; + case GAMEOBJECT_TYPE_AREADAMAGE: autoCloseTime = areadamage.autoClose; break; default: break; } return autoCloseTime; // prior to 3.0.3, conversion was / 0x10000; @@ -563,8 +592,8 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_CHEST: return chest.lootId; - case GAMEOBJECT_TYPE_FISHINGHOLE: return fishinghole.lootId; + case GAMEOBJECT_TYPE_CHEST: return chest.chestLoot; + case GAMEOBJECT_TYPE_FISHINGHOLE: return fishinghole.chestLoot; default: return 0; } } @@ -583,8 +612,8 @@ struct GameObjectTemplate { switch (type) { - case GAMEOBJECT_TYPE_GOOBER: return goober.eventId; - case GAMEOBJECT_TYPE_CHEST: return chest.eventId; + case GAMEOBJECT_TYPE_GOOBER: return goober.eventID; + case GAMEOBJECT_TYPE_CHEST: return chest.triggeredEvent; case GAMEOBJECT_TYPE_CHAIR: return chair.triggeredEvent; case GAMEOBJECT_TYPE_CAMERA: return camera.eventID; default: return 0; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 37cef1d533..65e4b40d99 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -8415,7 +8415,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type) loot->clear(); Group* group = GetGroup(); - bool groupRules = (group && go->GetGOInfo()->type == GAMEOBJECT_TYPE_CHEST && go->GetGOInfo()->chest.groupLootRules); + bool groupRules = (group && go->GetGOInfo()->type == GAMEOBJECT_TYPE_CHEST && go->GetGOInfo()->chest.usegrouplootrules); // check current RR player and get next if necessary if (groupRules) @@ -8438,7 +8438,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type) else if (loot_type == LOOT_FISHING_JUNK) go->getFishLootJunk(loot, this); - if (go->GetGOInfo()->type == GAMEOBJECT_TYPE_CHEST && go->GetGOInfo()->chest.groupLootRules) + if (go->GetGOInfo()->type == GAMEOBJECT_TYPE_CHEST && go->GetGOInfo()->chest.usegrouplootrules) { if (Group* group = GetGroup()) { diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 734f445981..c463896d86 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -132,13 +132,13 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, float x, float SetUInt32Value(GAMEOBJECT_FLAGS, m_goTemplateAddon->flags); } - _pathProgress = !goinfo->moTransport.canBeStopped ? getMSTime() /*might be called before world update loop begins, don't use GameTime*/ % tInfo->TotalPathTime : 0; + _pathProgress = !goinfo->moTransport.allowstopping ? getMSTime() /*might be called before world update loop begins, don't use GameTime*/ % tInfo->TotalPathTime : 0; SetPathProgressForClient(float(_pathProgress) / float(tInfo->TotalPathTime)); SetObjectScale(goinfo->size); SetPeriod(tInfo->TotalPathTime); SetEntry(goinfo->entry); SetDisplayId(goinfo->displayId); - SetGoState(!goinfo->moTransport.canBeStopped ? GO_STATE_READY : GO_STATE_ACTIVE); + SetGoState(!goinfo->moTransport.allowstopping ? GO_STATE_READY : GO_STATE_ACTIVE); SetGoType(GAMEOBJECT_TYPE_MO_TRANSPORT); SetGoAnimProgress(255); SetName(goinfo->name); @@ -182,7 +182,7 @@ void Transport::Update(uint32 diff) _positionChangeTimer.Update(diff); uint32 cycleId = _pathProgress / GetTransportPeriod(); - if (!GetGOInfo()->moTransport.canBeStopped) + if (!GetGOInfo()->moTransport.allowstopping) _pathProgress = GameTime::GetGameTimeMS(); else if (!_requestStopTimestamp || _requestStopTimestamp > _pathProgress + diff) _pathProgress += diff; @@ -516,7 +516,7 @@ TempSummon* Transport::SummonPassenger(uint32 entry, Position const& pos, TempSu int32 Transport::GetMapIdForSpawning() const { - return GetGOInfo()->moTransport.mapID; + return GetGOInfo()->moTransport.SpawnMap; } void Transport::UpdatePosition(float x, float y, float z, float o) @@ -549,7 +549,7 @@ void Transport::UpdatePosition(float x, float y, float z, float o) void Transport::LoadStaticPassengers() { - if (uint32 mapId = GetGOInfo()->moTransport.mapID) + if (uint32 mapId = GetGOInfo()->moTransport.SpawnMap) { CellObjectGuidsMap const& cells = sObjectMgr->GetMapObjectGuids(mapId, GetMap()->GetSpawnMode()); CellGuidSet::const_iterator guidEnd; @@ -579,7 +579,7 @@ void Transport::UnloadStaticPassengers() void Transport::EnableMovement(bool enabled) { - if (!GetGOInfo()->moTransport.canBeStopped) + if (!GetGOInfo()->moTransport.allowstopping) return; if (!enabled) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 0d39b2c3d4..eb7666729a 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6999,7 +6999,7 @@ inline void CheckGOLockId(GameObjectTemplate const* goInfo, uint32 dataN, uint32 return; TC_LOG_ERROR("sql.sql", "Gameobject (Entry: %u GoType: %u) have data%d=%u but lock (Id: %u) not found.", - goInfo->entry, goInfo->type, N, goInfo->door.lockId, goInfo->door.lockId); + goInfo->entry, goInfo->type, N, goInfo->door.open, goInfo->door.open); } inline void CheckGOLinkedTrapId(GameObjectTemplate const* goInfo, uint32 dataN, uint32 N) @@ -7109,97 +7109,97 @@ void ObjectMgr::LoadGameObjectTemplate() { case GAMEOBJECT_TYPE_DOOR: //0 { - if (got.door.lockId) - CheckGOLockId(&got, got.door.lockId, 1); + if (got.door.open) + CheckGOLockId(&got, got.door.open, 1); CheckGONoDamageImmuneId(&got, got.door.noDamageImmune, 3); break; } case GAMEOBJECT_TYPE_BUTTON: //1 { - if (got.button.lockId) - CheckGOLockId(&got, got.button.lockId, 1); + if (got.button.open) + CheckGOLockId(&got, got.button.open, 1); CheckGONoDamageImmuneId(&got, got.button.noDamageImmune, 4); break; } case GAMEOBJECT_TYPE_QUESTGIVER: //2 { - if (got.questgiver.lockId) - CheckGOLockId(&got, got.questgiver.lockId, 0); + if (got.questgiver.open) + CheckGOLockId(&got, got.questgiver.open, 0); CheckGONoDamageImmuneId(&got, got.questgiver.noDamageImmune, 5); break; } case GAMEOBJECT_TYPE_CHEST: //3 { - if (got.chest.lockId) - CheckGOLockId(&got, got.chest.lockId, 0); + if (got.chest.open) + CheckGOLockId(&got, got.chest.open, 0); CheckGOConsumable(&got, got.chest.consumable, 3); - if (got.chest.linkedTrapId) // linked trap - CheckGOLinkedTrapId(&got, got.chest.linkedTrapId, 7); + if (got.chest.linkedTrap) // linked trap + CheckGOLinkedTrapId(&got, got.chest.linkedTrap, 7); break; } case GAMEOBJECT_TYPE_TRAP: //6 { - if (got.trap.lockId) - CheckGOLockId(&got, got.trap.lockId, 0); + if (got.trap.open) + CheckGOLockId(&got, got.trap.open, 0); break; } case GAMEOBJECT_TYPE_CHAIR: //7 - CheckAndFixGOChairHeightId(&got, got.chair.height, 1); + CheckAndFixGOChairHeightId(&got, got.chair.chairheight, 1); break; case GAMEOBJECT_TYPE_SPELL_FOCUS: //8 { - if (got.spellFocus.focusId) + if (got.spellFocus.spellFocusType) { - if (!sSpellFocusObjectStore.LookupEntry(got.spellFocus.focusId)) + if (!sSpellFocusObjectStore.LookupEntry(got.spellFocus.spellFocusType)) TC_LOG_ERROR("sql.sql", "GameObject (Entry: %u GoType: %u) have data0=%u but SpellFocus (Id: %u) not exist.", - entry, got.type, got.spellFocus.focusId, got.spellFocus.focusId); + entry, got.type, got.spellFocus.spellFocusType, got.spellFocus.spellFocusType); } - if (got.spellFocus.linkedTrapId) // linked trap - CheckGOLinkedTrapId(&got, got.spellFocus.linkedTrapId, 2); + if (got.spellFocus.linkedTrap) // linked trap + CheckGOLinkedTrapId(&got, got.spellFocus.linkedTrap, 2); break; } case GAMEOBJECT_TYPE_GOOBER: //10 { - if (got.goober.lockId) - CheckGOLockId(&got, got.goober.lockId, 0); + if (got.goober.open) + CheckGOLockId(&got, got.goober.open, 0); CheckGOConsumable(&got, got.goober.consumable, 3); - if (got.goober.pageId) // pageId + if (got.goober.pageID) // pageId { - if (!GetPageText(got.goober.pageId)) + if (!GetPageText(got.goober.pageID)) TC_LOG_ERROR("sql.sql", "GameObject (Entry: %u GoType: %u) have data7=%u but PageText (Entry %u) not exist.", - entry, got.type, got.goober.pageId, got.goober.pageId); + entry, got.type, got.goober.pageID, got.goober.pageID); } CheckGONoDamageImmuneId(&got, got.goober.noDamageImmune, 11); - if (got.goober.linkedTrapId) // linked trap - CheckGOLinkedTrapId(&got, got.goober.linkedTrapId, 12); + if (got.goober.linkedTrap) // linked trap + CheckGOLinkedTrapId(&got, got.goober.linkedTrap, 12); break; } case GAMEOBJECT_TYPE_AREADAMAGE: //12 { - if (got.areadamage.lockId) - CheckGOLockId(&got, got.areadamage.lockId, 0); + if (got.areadamage.open) + CheckGOLockId(&got, got.areadamage.open, 0); break; } case GAMEOBJECT_TYPE_CAMERA: //13 { - if (got.camera.lockId) - CheckGOLockId(&got, got.camera.lockId, 0); + if (got.camera.open) + CheckGOLockId(&got, got.camera.open, 0); break; } case GAMEOBJECT_TYPE_MO_TRANSPORT: //15 { - if (got.moTransport.taxiPathId) + if (got.moTransport.taxiPathID) { - if (got.moTransport.taxiPathId >= sTaxiPathNodesByPath.size() || sTaxiPathNodesByPath[got.moTransport.taxiPathId].empty()) + if (got.moTransport.taxiPathID >= sTaxiPathNodesByPath.size() || sTaxiPathNodesByPath[got.moTransport.taxiPathID].empty()) TC_LOG_ERROR("sql.sql", "GameObject (Entry: %u GoType: %u) have data0=%u but TaxiPath (Id: %u) not exist.", - entry, got.type, got.moTransport.taxiPathId, got.moTransport.taxiPathId); + entry, got.type, got.moTransport.taxiPathID, got.moTransport.taxiPathID); } - if (uint32 transportMap = got.moTransport.mapID) + if (uint32 transportMap = got.moTransport.SpawnMap) _transportMaps.insert(transportMap); break; } @@ -7208,26 +7208,26 @@ void ObjectMgr::LoadGameObjectTemplate() case GAMEOBJECT_TYPE_SPELLCASTER: //22 { // always must have spell - CheckGOSpellId(&got, got.spellcaster.spellId, 0); + CheckGOSpellId(&got, got.spellcaster.spell, 0); break; } case GAMEOBJECT_TYPE_FLAGSTAND: //24 { - if (got.flagstand.lockId) - CheckGOLockId(&got, got.flagstand.lockId, 0); + if (got.flagstand.open) + CheckGOLockId(&got, got.flagstand.open, 0); CheckGONoDamageImmuneId(&got, got.flagstand.noDamageImmune, 5); break; } case GAMEOBJECT_TYPE_FISHINGHOLE: //25 { - if (got.fishinghole.lockId) - CheckGOLockId(&got, got.fishinghole.lockId, 4); + if (got.fishinghole.open) + CheckGOLockId(&got, got.fishinghole.open, 4); break; } case GAMEOBJECT_TYPE_FLAGDROP: //26 { - if (got.flagdrop.lockId) - CheckGOLockId(&got, got.flagdrop.lockId, 0); + if (got.flagdrop.open) + CheckGOLockId(&got, got.flagdrop.open, 0); CheckGONoDamageImmuneId(&got, got.flagdrop.noDamageImmune, 3); break; } @@ -8285,7 +8285,7 @@ void ObjectMgr::LoadGameObjectForQuests() uint32 loot_id = (itr->second.GetLootId()); // find quest loot for GO - if (itr->second.chest.questId || LootTemplates_Gameobject.HaveQuestLootFor(loot_id)) + if (itr->second.chest.questID || LootTemplates_Gameobject.HaveQuestLootFor(loot_id)) { _gameObjectForQuestStore.insert(itr->second.entry); ++count; @@ -8303,7 +8303,7 @@ void ObjectMgr::LoadGameObjectForQuests() } case GAMEOBJECT_TYPE_GOOBER: { - if (itr->second.goober.questId > 0) //quests objects + if (itr->second.goober.questID > 0) //quests objects { _gameObjectForQuestStore.insert(itr->second.entry); ++count; diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 972b3d58a8..b0d935f5b3 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -681,13 +681,13 @@ namespace Trinity if (go->GetGOInfo()->type != GAMEOBJECT_TYPE_SPELL_FOCUS) return false; - if (go->GetGOInfo()->spellFocus.focusId != _focusId) + if (go->GetGOInfo()->spellFocus.spellFocusType != _focusId) return false; if (!go->isSpawned()) return false; - float const dist = go->GetGOInfo()->spellFocus.dist / 2.f; + float const dist = go->GetGOInfo()->spellFocus.radius / 2.f; return go->IsWithinDistInMap(_caster, dist); } private: diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp index b128d87043..54d4b3cf31 100644 --- a/src/server/game/Maps/TransportMgr.cpp +++ b/src/server/game/Maps/TransportMgr.cpp @@ -215,9 +215,9 @@ void TransportMgr::LoadTransportTemplates() continue; } - if (goInfo->moTransport.taxiPathId >= sTaxiPathNodesByPath.size()) + if (goInfo->moTransport.taxiPathID >= sTaxiPathNodesByPath.size()) { - TC_LOG_ERROR("sql.sql", "Transport %u (name: %s) has an invalid path specified in `gameobject_template`.`data0` (%u) field, skipped.", entry, goInfo->name.c_str(), goInfo->moTransport.taxiPathId); + TC_LOG_ERROR("sql.sql", "Transport %u (name: %s) has an invalid path specified in `gameobject_template`.`data0` (%u) field, skipped.", entry, goInfo->name.c_str(), goInfo->moTransport.taxiPathID); continue; } @@ -486,7 +486,7 @@ static void InitializeLeg(TransportPathLeg* leg, std::vector void TransportMgr::GeneratePath(GameObjectTemplate const* goInfo, TransportTemplate* transport) { - uint32 pathId = goInfo->moTransport.taxiPathId; + uint32 pathId = goInfo->moTransport.taxiPathID; TaxiPathNodeList const& path = sTaxiPathNodesByPath[pathId]; transport->Speed = double(goInfo->moTransport.moveSpeed); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index cc9705b7f1..d81473c5d6 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1611,20 +1611,20 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype) case GAMEOBJECT_TYPE_SPELL_FOCUS: // triggering linked GO - if (uint32 trapEntry = gameObjTarget->GetGOInfo()->spellFocus.linkedTrapId) + if (uint32 trapEntry = gameObjTarget->GetGOInfo()->spellFocus.linkedTrap) gameObjTarget->TriggeringLinkedGameObject(trapEntry, player); return; case GAMEOBJECT_TYPE_CHEST: /// @todo possible must be moved to loot release (in different from linked triggering) - if (gameObjTarget->GetGOInfo()->chest.eventId) + if (gameObjTarget->GetGOInfo()->chest.triggeredEvent) { - TC_LOG_DEBUG("spells", "Chest ScriptStart id %u for GO %u", gameObjTarget->GetGOInfo()->chest.eventId, gameObjTarget->GetSpawnId()); - GameEvents::Trigger(gameObjTarget->GetGOInfo()->chest.eventId, player, gameObjTarget); + TC_LOG_DEBUG("spells", "Chest ScriptStart id %u for GO %u", gameObjTarget->GetGOInfo()->chest.triggeredEvent, gameObjTarget->GetSpawnId()); + GameEvents::Trigger(gameObjTarget->GetGOInfo()->chest.triggeredEvent, player, gameObjTarget); } // triggering linked GO - if (uint32 trapEntry = gameObjTarget->GetGOInfo()->chest.linkedTrapId) + if (uint32 trapEntry = gameObjTarget->GetGOInfo()->chest.linkedTrap) gameObjTarget->TriggeringLinkedGameObject(trapEntry, player); // Don't return, let loots been taken @@ -1664,7 +1664,7 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex) // Arathi Basin banner opening. /// @todo Verify correctness of this check if ((goInfo->type == GAMEOBJECT_TYPE_BUTTON && goInfo->button.noDamageImmune) || - (goInfo->type == GAMEOBJECT_TYPE_GOOBER && goInfo->goober.losOK)) + (goInfo->type == GAMEOBJECT_TYPE_GOOBER && goInfo->goober.requireLOS)) { //CanUseBattlegroundObject() already called in CheckCast() // in battleground check diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 70dfb3aad7..136b1ab138 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -621,9 +621,9 @@ public: displayId = gameObjectInfo->displayId; name = gameObjectInfo->name; if (type == GAMEOBJECT_TYPE_CHEST) - lootId = gameObjectInfo->chest.lootId; + lootId = gameObjectInfo->chest.chestLoot; else if (type == GAMEOBJECT_TYPE_FISHINGHOLE) - lootId = gameObjectInfo->fishinghole.lootId; + lootId = gameObjectInfo->fishinghole.chestLoot; // If we have a real object, send some info about it if (thisGO) diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index eaadef0172..4fdd34a871 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -286,7 +286,7 @@ public: if (Transport* transport = dynamic_cast(object->GetTransport())) { handler->PSendSysMessage(LANG_TRANSPORT_POSITION, - transport->GetGOInfo()->moTransport.mapID, object->GetTransOffsetX(), object->GetTransOffsetY(), object->GetTransOffsetZ(), object->GetTransOffsetO(), + transport->GetGOInfo()->moTransport.SpawnMap, object->GetTransOffsetX(), object->GetTransOffsetY(), object->GetTransOffsetZ(), object->GetTransOffsetO(), transport->GetEntry(), transport->GetName().c_str()); } handler->PSendSysMessage(LANG_GRID_POSITION, diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 9d27a4357d..8e67fb3139 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -361,7 +361,7 @@ public: if (Creature* creature = trans->CreateNPCPassenger(guid, &data)) { - creature->SaveToDB(trans->GetGOInfo()->moTransport.mapID, 1 << map->GetSpawnMode()); + creature->SaveToDB(trans->GetGOInfo()->moTransport.SpawnMap, 1 << map->GetSpawnMode()); sObjectMgr->AddCreatureToGrid(guid, &data); } return true; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index e858ae9d5e..469d2259b0 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -316,7 +316,7 @@ struct go_anhuur_beacon_of_light : public GameObjectAI me->SendCustomAnim(0); me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); me->DespawnOrUnsummon(1s + 200ms, 5s); - me->CastSpell(nullptr, me->GetGOInfo()->goober.spellId); + me->CastSpell(nullptr, me->GetGOInfo()->goober.spell); return true; } }; diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index eef96fae41..d9b86fc8ac 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -76,7 +76,7 @@ public: void OnGameObjectCreate(GameObject* go) override { - if ((go->GetGOInfo()->displayId == 4392 || go->GetGOInfo()->displayId == 4472) && go->GetGOInfo()->trap.spellId == 17731) + if ((go->GetGOInfo()->displayId == 4392 || go->GetGOInfo()->displayId == 4472) && go->GetGOInfo()->trap.spell == 17731) { FloorEruptionGUID[0].insert(std::make_pair(go->GetGUID(), 0)); return; @@ -97,7 +97,7 @@ public: void OnGameObjectRemove(GameObject* go) override { - if ((go->GetGOInfo()->displayId == 4392 || go->GetGOInfo()->displayId == 4472) && go->GetGOInfo()->trap.spellId == 17731) + if ((go->GetGOInfo()->displayId == 4392 || go->GetGOInfo()->displayId == 4472) && go->GetGOInfo()->trap.spell == 17731) { FloorEruptionGUID[0].erase(go->GetGUID()); return; @@ -121,7 +121,7 @@ public: //remove all that are not present on FloorEruptionGUID[1] and update treeLen on each GUID for (std::list::const_iterator itr = nearFloorList.begin(); itr != nearFloorList.end(); ++itr) { - if (((*itr)->GetGOInfo()->displayId == 4392 || (*itr)->GetGOInfo()->displayId == 4472) && (*itr)->GetGOInfo()->trap.spellId == 17731) + if (((*itr)->GetGOInfo()->displayId == 4392 || (*itr)->GetGOInfo()->displayId == 4472) && (*itr)->GetGOInfo()->trap.spell == 17731) { ObjectGuid nearFloorGUID = (*itr)->GetGUID(); if (FloorEruptionGUID[1].find(nearFloorGUID) != FloorEruptionGUID[1].end() && (*FloorEruptionGUID[1].find(nearFloorGUID)).second == 0) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index d3ea715712..46d1e28ca0 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -1354,7 +1354,7 @@ class go_twilight_portal : public GameObjectScript { case GO_HALION_PORTAL_EXIT: PhasingHandler::AddPhase(gameobject, 174, true); - _spellId = gameobject->GetGOInfo()->goober.spellId; + _spellId = gameobject->GetGOInfo()->goober.spell; break; case GO_HALION_PORTAL_1: case GO_HALION_PORTAL_2: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index b6c519fcb3..718b1b0fde 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -284,8 +284,8 @@ class instance_icecrown_citadel : public InstanceMapScript break; case NPC_ZAFOD_BOOMBOX: if (GameObjectTemplate const* go = sObjectMgr->GetGameObjectTemplate(GO_THE_SKYBREAKER_A)) - if ((TeamInInstance == ALLIANCE && data->mapId == go->moTransport.mapID) || - (TeamInInstance == HORDE && data->mapId != go->moTransport.mapID)) + if ((TeamInInstance == ALLIANCE && int32(data->mapId) == go->moTransport.SpawnMap) || + (TeamInInstance == HORDE && int32(data->mapId) != go->moTransport.SpawnMap)) return entry; return 0; case NPC_IGB_MURADIN_BRONZEBEARD: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index 0b714e114c..adfe6e2d64 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -997,7 +997,7 @@ class go_celestial_planetarium_access : public GameObjectScript return true; bool hasKey = true; - if (LockEntry const* lock = sLockStore.LookupEntry(me->GetGOInfo()->goober.lockId)) + if (LockEntry const* lock = sLockStore.LookupEntry(me->GetGOInfo()->goober.open)) { hasKey = false; for (uint32 i = 0; i < MAX_LOCK_CASE; ++i) diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index 8557c2f36e..6b210a75c8 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -896,7 +896,7 @@ class go_simon_cluster : public GameObjectScript if (Creature* bunny = me->FindNearestCreature(NPC_SIMON_BUNNY, 12.0f, true)) bunny->AI()->SetData(me->GetEntry(), 0); - player->CastSpell(player, me->GetGOInfo()->goober.spellId, true); + player->CastSpell(player, me->GetGOInfo()->goober.spell, true); me->AddUse(); return true; }