aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-10-30 20:02:42 +0100
committerShauren <shauren.trinity@gmail.com>2014-10-30 20:02:42 +0100
commit785f0bf5c0dc945af9da494559955ac69e5a7198 (patch)
tree976fe868323bf4a5a0378ec8f6fe671836a4f42a /src
parent6881fd6146285258e5f8476e9cbc8f124d61b15e (diff)
Core/GameObjects: Updated GameObjectTemplate data structure
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp24
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.cpp4
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp4
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp157
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h904
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp100
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h6
-rw-r--r--src/server/game/Maps/TransportMgr.cpp8
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h99
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.cpp22
-rw-r--r--src/server/game/Server/Packets/AuctionHousePackets.cpp2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp12
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp5
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp6
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp2
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp2
19 files changed, 794 insertions, 575 deletions
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 6f8d8621458..c06ade69f01 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -854,9 +854,9 @@ bool BfCapturePoint::HandlePlayerEnter(Player* player)
{
if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID))
{
- player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 1);
- player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate2, uint32(ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f)));
- player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct);
+ player->SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldState1, 1);
+ player->SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldstate2, uint32(ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f)));
+ player->SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldstate3, m_neutralValuePct);
}
}
@@ -867,7 +867,7 @@ GuidSet::iterator BfCapturePoint::HandlePlayerLeave(Player* player)
{
if (!m_capturePointGUID.IsEmpty())
if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID))
- player->SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 0);
+ player->SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldState1, 0);
GuidSet::iterator current = m_activePlayers[player->GetTeamId()].find(player->GetGUID());
@@ -886,11 +886,11 @@ void BfCapturePoint::SendChangePhase()
if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID))
{
// send this too, sometimes the slider disappears, dunno why :(
- SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldState1, 1);
+ SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldState1, 1);
// send these updates to only the ones in this objective
- SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate2, (uint32) std::ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
+ SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldstate2, (uint32)std::ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
// send this too, sometimes it resets :S
- SendUpdateWorldState(capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct);
+ SendUpdateWorldState(capturePoint->GetGOInfo()->controlZone.worldstate3, m_neutralValuePct);
}
}
@@ -911,10 +911,10 @@ bool BfCapturePoint::SetCapturePointData(GameObject* capturePoint)
}
// get the needed values from goinfo
- m_maxValue = goinfo->capturePoint.maxTime;
- m_maxSpeed = m_maxValue / (goinfo->capturePoint.minTime ? goinfo->capturePoint.minTime : 60);
- m_neutralValuePct = goinfo->capturePoint.neutralPercent;
- m_minValue = m_maxValue * goinfo->capturePoint.neutralPercent / 100;
+ m_maxValue = goinfo->controlZone.maxTime;
+ m_maxSpeed = m_maxValue / (goinfo->controlZone.minTime ? goinfo->controlZone.minTime : 60);
+ m_neutralValuePct = goinfo->controlZone.neutralPercent;
+ m_minValue = m_maxValue * goinfo->controlZone.neutralPercent / 100;
m_capturePointEntry = capturePoint->GetEntry();
if (m_team == TEAM_ALLIANCE)
{
@@ -958,7 +958,7 @@ bool BfCapturePoint::Update(uint32 diff)
if (GameObject* capturePoint = m_Bf->GetGameObject(m_capturePointGUID))
{
- float radius = capturePoint->GetGOInfo()->capturePoint.radius;
+ float radius = capturePoint->GetGOInfo()->controlZone.radius;
for (uint8 team = 0; team < 2; ++team)
{
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
index 1f806737425..79a68b4dab0 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp
@@ -930,9 +930,9 @@ void BattlefieldWG::ProcessEvent(WorldObject* obj, uint32 eventId)
{
if (GameObject* buildingGo = GetGameObject(building->GetGUID()))
{
- if (buildingGo->GetGOInfo()->building.damagedEvent == eventId)
+ if (buildingGo->GetGOInfo()->destructibleBuilding.DamagedEvent == eventId)
building->Damaged();
- else if (buildingGo->GetGOInfo()->building.destroyedEvent == eventId)
+ else if (buildingGo->GetGOInfo()->destructibleBuilding.DestroyedEvent == eventId)
building->Destroyed();
break;
}
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index 0243b3f390e..f77a7383529 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -571,7 +571,7 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject*
uint8 gateId = gate->GateId;
// damaged
- if (eventId == go->GetGOInfo()->building.damagedEvent)
+ if (eventId == go->GetGOInfo()->destructibleBuilding.DamagedEvent)
{
GateStatus[gateId] = BG_SA_GATE_DAMAGED;
@@ -581,7 +581,7 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject*
PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_ATTACKED_ALLIANCE : SOUND_WALL_ATTACKED_HORDE);
}
// destroyed
- else if (eventId == go->GetGOInfo()->building.destroyedEvent)
+ else if (eventId == go->GetGOInfo()->destructibleBuilding.DestroyedEvent)
{
GateStatus[gate->GateId] = BG_SA_GATE_DESTROYED;
_gateDestroyed = true;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index c3805be45cc..716ee946778 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -231,13 +231,14 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
{
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;
+ // TODO: Get the values somehow, no longer in gameobject_template
+ m_goValue.Building.Health = 20000/*goinfo->destructibleBuilding.intactNumHits + goinfo->destructibleBuilding.damagedNumHits*/;
m_goValue.Building.MaxHealth = m_goValue.Building.Health;
SetGoAnimProgress(255);
- SetUInt32Value(GAMEOBJECT_PARENTROTATION, m_goInfo->building.destructibleData);
+ SetUInt32Value(GAMEOBJECT_PARENTROTATION, m_goInfo->destructibleBuilding.DestructibleModelRec);
break;
case GAMEOBJECT_TYPE_TRANSPORT:
{
@@ -248,14 +249,24 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
m_goValue.Transport.CurrentSeg = 0;
m_goValue.Transport.StateUpdateTimer = 0;
m_goValue.Transport.StopFrames = new std::vector<uint32>();
- if (goinfo->transport.stopFrame1 > 0)
- m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame1);
- if (goinfo->transport.stopFrame2 > 0)
- m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame2);
- if (goinfo->transport.stopFrame3 > 0)
- m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame3);
- if (goinfo->transport.stopFrame4 > 0)
- m_goValue.Transport.StopFrames->push_back(goinfo->transport.stopFrame4);
+ if (goinfo->transport.Timeto2ndfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto2ndfloor);
+ if (goinfo->transport.Timeto3rdfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto3rdfloor);
+ if (goinfo->transport.Timeto4thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto4thfloor);
+ if (goinfo->transport.Timeto5thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto5thfloor);
+ if (goinfo->transport.Timeto6thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto6thfloor);
+ if (goinfo->transport.Timeto7thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto7thfloor);
+ if (goinfo->transport.Timeto8thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto8thfloor);
+ if (goinfo->transport.Timeto9thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto9thfloor);
+ if (goinfo->transport.Timeto10thfloor > 0)
+ m_goValue.Transport.StopFrames->push_back(goinfo->transport.Timeto10thfloor);
if (goinfo->transport.startOpen)
SetTransportState(GO_STATE_TRANSPORT_STOPPED, goinfo->transport.startOpen - 1);
else
@@ -274,7 +285,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
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);
@@ -312,7 +323,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 = time(NULL) + 10;
else if (Unit* owner = GetOwner())
@@ -445,7 +456,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;
@@ -477,7 +488,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;
@@ -486,7 +497,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)
@@ -495,7 +506,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 = NULL;
@@ -572,28 +583,28 @@ 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 NULL target won't work for target type 1
- CastSpell(NULL, goInfo->trap.spellId);
+ CastSpell(NULL, goInfo->trap.spell);
SetLootState(GO_JUST_DEACTIVATED);
}
else if (Unit* target = ObjectAccessor::GetUnit(*this, m_lootStateUnitGUID))
{
// Some traps do not have a spell but should be triggered
- if (goInfo->trap.spellId)
- CastSpell(target, goInfo->trap.spellId);
+ if (goInfo->trap.spell)
+ CastSpell(target, goInfo->trap.spell);
// Template value or 4 seconds
m_cooldownTime = time(NULL) + (goInfo->trap.cooldown ? goInfo->trap.cooldown : uint32(4));
- 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());
@@ -610,7 +621,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)
{
@@ -1079,13 +1090,13 @@ bool GameObject::ActivateToQuest(Player* target) const
}
case GAMEOBJECT_TYPE_GENERIC:
{
- if (GetGOInfo()->_generic.questID == -1 || target->GetQuestStatus(GetGOInfo()->_generic.questID) == QUEST_STATUS_INCOMPLETE)
+ if (GetGOInfo()->generic.questID == -1 || target->GetQuestStatus(GetGOInfo()->generic.questID) == QUEST_STATUS_INCOMPLETE)
return true;
break;
}
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;
}
@@ -1102,7 +1113,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;
@@ -1124,7 +1135,7 @@ void GameObject::TriggeringLinkedGameObject(uint32 trapEntry, Unit* target)
// found correct GO
if (trapGO)
- trapGO->CastSpell(target, trapInfo->trap.spellId);
+ trapGO->CastSpell(target, trapInfo->trap.spell);
}
GameObject* GameObject::LookupFishingHoleAround(float range)
@@ -1248,12 +1259,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 = time(NULL) + (goInfo->trap.cooldown ? goInfo->trap.cooldown : uint32(4)); // 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;
@@ -1270,8 +1281,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
@@ -1295,7 +1306,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);
@@ -1334,7 +1345,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);
return;
}
}
@@ -1348,7 +1359,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();
@@ -1360,25 +1371,25 @@ 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 " UI64FMTD ").", info->goober.eventId, GetEntry(), GetDBTableGUIDLow());
- GetMap()->ScriptsStart(sEventScripts, info->goober.eventId, player, this);
- EventInform(info->goober.eventId, user);
+ TC_LOG_DEBUG("maps.script", "Goober ScriptStart id %u for GO entry %u (GUID " UI64FMTD ").", info->goober.eventID, GetEntry(), GetDBTableGUIDLow());
+ GetMap()->ScriptsStart(sEventScripts, info->goober.eventID, player, this);
+ EventInform(info->goober.eventID, user);
}
// 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;
}
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);
@@ -1393,7 +1404,7 @@ void GameObject::Use(Unit* user)
m_cooldownTime = time(NULL) + info->GetAutoCloseTime();
// cast this spell later if provided
- spellId = info->goober.spellId;
+ spellId = info->goober.spell;
spellCaster = NULL;
break;
@@ -1409,8 +1420,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)
GetMap()->ScriptsStart(sEventScripts, info->camera.eventID, player, this);
@@ -1527,7 +1538,7 @@ void GameObject::Use(Unit* user)
return;
// accept only use by player from same group as owner, excluding owner itself (unique use already added in spell effect)
- if (player == owner->ToPlayer() || (info->summoningRitual.castersGrouped && !player->IsInSameRaidWith(owner->ToPlayer())))
+ if (player == owner->ToPlayer() || (info->ritual.castersGrouped && !player->IsInSameRaidWith(owner->ToPlayer())))
return;
// expect owner to already be channeling, so if not...
@@ -1539,7 +1550,7 @@ void GameObject::Use(Unit* user)
}
else
{
- if (player != m_ritualOwner && (info->summoningRitual.castersGrouped && !player->IsInSameRaidWith(m_ritualOwner)))
+ if (player != m_ritualOwner && (info->ritual.castersGrouped && !player->IsInSameRaidWith(m_ritualOwner)))
return;
spellCaster = player;
@@ -1547,21 +1558,21 @@ void GameObject::Use(Unit* user)
AddUniqueUse(player);
- if (info->summoningRitual.animSpell)
+ if (info->ritual.animSpell)
{
- player->CastSpell(player, info->summoningRitual.animSpell, true);
+ player->CastSpell(player, info->ritual.animSpell, true);
// for this case, summoningRitual.spellId is always triggered
triggered = true;
}
// full amount unique participants including original summoner
- if (GetUniqueUseCount() == info->summoningRitual.reqParticipants)
+ if (GetUniqueUseCount() == info->ritual.casters)
{
if (m_ritualOwner)
spellCaster = m_ritualOwner;
- spellId = info->summoningRitual.spellId;
+ spellId = info->ritual.spell;
if (spellId == 62330) // GO store nonexistent spell, replace by expected
{
@@ -1574,18 +1585,18 @@ void GameObject::Use(Unit* user)
// Cast casterTargetSpell at a random GO user
// on the current DB there is only one gameobject that uses this (Ritual of Doom)
// and its required target number is 1 (outter for loop will run once)
- if (info->summoningRitual.casterTargetSpell && info->summoningRitual.casterTargetSpell != 1) // No idea why this field is a bool in some cases
- for (uint32 i = 0; i < info->summoningRitual.casterTargetSpellTargets; i++)
+ if (info->ritual.casterTargetSpell && info->ritual.casterTargetSpell != 1) // No idea why this field is a bool in some cases
+ for (uint32 i = 0; i < info->ritual.casterTargetSpellTargets; i++)
// m_unique_users can contain only player GUIDs
if (Player* target = ObjectAccessor::GetPlayer(*this, Trinity::Containers::SelectRandomContainerElement(m_unique_users)))
- spellCaster->CastSpell(target, info->summoningRitual.casterTargetSpell, true);
+ spellCaster->CastSpell(target, info->ritual.casterTargetSpell, true);
// finish owners spell
if (owner)
owner->FinishSpell(CURRENT_CHANNELED_SPELL);
// can be deleted now, if
- if (!info->summoningRitual.ritualPersistent)
+ if (!info->ritual.ritualPersistent)
SetLootState(GO_JUST_DEACTIVATED);
else
{
@@ -1607,7 +1618,7 @@ void GameObject::Use(Unit* user)
if (!info)
return;
- if (info->spellcaster.partyOnly)
+ if (info->spellCaster.partyOnly)
{
Unit* caster = GetOwner();
if (!caster || caster->GetTypeId() != TYPEID_PLAYER)
@@ -1618,7 +1629,7 @@ void GameObject::Use(Unit* user)
}
user->RemoveAurasByType(SPELL_AURA_MOUNTED);
- spellId = info->spellcaster.spellId;
+ spellId = info->spellCaster.spell;
AddUse();
break;
@@ -1640,10 +1651,10 @@ void GameObject::Use(Unit* user)
//required lvl checks!
uint8 level = player->getLevel();
- if (level < info->meetingstone.minLevel)
+ if (level < info->meetingStone.minLevel)
return;
level = targetPlayer->getLevel();
- if (level < info->meetingstone.minLevel)
+ if (level < info->meetingStone.minLevel)
return;
if (info->entry == 194097)
@@ -1967,7 +1978,7 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= NULL*/, u
if (!m_goValue.Building.Health)
newState = GO_DESTRUCTIBLE_DESTROYED;
- else if (m_goValue.Building.Health <= GetGOInfo()->building.damagedNumHits)
+ else if (m_goValue.Building.Health <= 10000/*GetGOInfo()->destructibleBuilding.damagedNumHits*/) // TODO: Get health somewhere
newState = GO_DESTRUCTIBLE_DAMAGED;
else if (m_goValue.Building.Health == m_goValue.Building.MaxHealth)
newState = GO_DESTRUCTIBLE_INTACT;
@@ -1998,21 +2009,21 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
break;
case GO_DESTRUCTIBLE_DAMAGED:
{
- EventInform(m_goInfo->building.damagedEvent, eventInvoker);
+ EventInform(m_goInfo->destructibleBuilding.DamagedEvent, eventInvoker);
sScriptMgr->OnGameObjectDamaged(this, eventInvoker);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
- uint32 modelId = m_goInfo->building.damagedDisplayId;
- if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
+ uint32 modelId = m_goInfo->displayId;
+ if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
if (modelData->DamagedDisplayId)
modelId = modelData->DamagedDisplayId;
SetDisplayId(modelId);
if (setHealth)
{
- m_goValue.Building.Health = m_goInfo->building.damagedNumHits;
+ m_goValue.Building.Health = 10000/*m_goInfo->destructibleBuilding.damagedNumHits*/;
uint32 maxHealth = m_goValue.Building.MaxHealth;
// in this case current health is 0 anyway so just prevent crashing here
if (!maxHealth)
@@ -2024,7 +2035,7 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
case GO_DESTRUCTIBLE_DESTROYED:
{
sScriptMgr->OnGameObjectDestroyed(this, eventInvoker);
- EventInform(m_goInfo->building.destroyedEvent, eventInvoker);
+ EventInform(m_goInfo->destructibleBuilding.DestroyedEvent, eventInvoker);
if (eventInvoker)
if (Battleground* bg = eventInvoker->GetBattleground())
bg->DestroyGate(eventInvoker, this);
@@ -2032,8 +2043,8 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
- uint32 modelId = m_goInfo->building.destroyedDisplayId;
- if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
+ uint32 modelId = m_goInfo->displayId;
+ if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
if (modelData->DestroyedDisplayId)
modelId = modelData->DestroyedDisplayId;
SetDisplayId(modelId);
@@ -2048,11 +2059,11 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player*
}
case GO_DESTRUCTIBLE_REBUILDING:
{
- EventInform(m_goInfo->building.rebuildingEvent, eventInvoker);
+ EventInform(m_goInfo->destructibleBuilding.RebuildingEvent, eventInvoker);
RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_DESTROYED);
uint32 modelId = m_goInfo->displayId;
- if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->building.destructibleData))
+ if (DestructibleModelDataEntry const* modelData = sDestructibleModelDataStore.LookupEntry(m_goInfo->destructibleBuilding.DestructibleModelRec))
if (modelData->RebuildingDisplayId)
modelId = modelData->RebuildingDisplayId;
SetDisplayId(modelId);
@@ -2243,7 +2254,7 @@ void GameObject::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* t
return;
bool isStoppableTransport = GetGoType() == GAMEOBJECT_TYPE_TRANSPORT && !m_goValue.Transport.StopFrames->empty();
- 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;
@@ -2308,7 +2319,7 @@ void GameObject::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* t
{
uint32 flags = m_uint32Values[GAMEOBJECT_FLAGS];
if (GetGoType() == GAMEOBJECT_TYPE_CHEST)
- if (GetGOInfo()->chest.groupLootRules && !IsLootAllowedFor(target))
+ if (GetGOInfo()->chest.usegrouplootrules && !IsLootAllowedFor(target))
flags |= GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE;
fieldBuffer << flags;
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index 9fba8da35c7..b5c5b843a06 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -47,358 +47,563 @@ struct GameObjectTemplate
float size;
uint32 questItems[MAX_GAMEOBJECT_QUEST_ITEMS];
int32 unkInt32;
- union // different GO types have different data field
+ union
{
- //0 GAMEOBJECT_TYPE_DOOR
+ // 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 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 EnablePortalsonopen; // 8 Enable Portals on open, enum { false, true, }; Default: false
+ 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 large; //5
- uint32 openTextID; //6 can be used to replace castBarCaption?
- uint32 closeTextID; //7
- uint32 losOK; //8
+ // 1 GAMEOBJECT_TYPE_BUTTON
+ struct
+ {
+ 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 large; //9
+ // 2 GAMEOBJECT_TYPE_QUESTGIVER
+ struct
+ {
+ 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
+ uint32 NeverUsableWhileMounted; // 11 Never Usable While Mounted, enum { false, true, }; Default: false
} 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
+ // 3 GAMEOBJECT_TYPE_CHEST
+ struct
+ {
+ uint32 open; // 0 open, References: Lock_, NoValue = 0
+ uint32 chestLoot; // 1 chestLoot, 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 level; // 9 level, int, Min value: 0, Max value: 65535, 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
+ uint32 xpLevel; // 18 xpLevel, int, Min value: -1, Max value: 100, Default value: 0
+ uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, Placeholder2, }; Default: No Exp
+ uint32 lootLevel; // 20 lootLevel, int, Min value: 0, Max value: 100, Default value: 0
+ 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
+ uint32 spell; // 26 spell, References: Spell, NoValue = 0
+ uint32 GiganticAOI; // 27 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 LargeAOI; // 28 Large AOI, enum { false, true, }; Default: false
+ uint32 SpawnVignette; // 29 Spawn Vignette, References: vignette, NoValue = 0
+ uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0
+ uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false
+ uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0
} chest;
- //4 GAMEOBJECT_TYPE_BINDER - empty
- //5 GAMEOBJECT_TYPE_GENERIC
- struct
- {
- uint32 floatingTooltip; //0
- uint32 highlight; //1
- uint32 serverOnly; //2
- uint32 large; //3
- uint32 floatOnWater; //4
- int32 questID; //5
- } _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 large; //10
- uint32 invisible; //11
- uint32 openTextID; //12 can be used to replace castBarCaption?
- uint32 closeTextID; //13
- uint32 ignoreTotems; //14
+ // 4 GAMEOBJECT_TYPE_BINDER
+ struct
+ {
+ } binder;
+ // 5 GAMEOBJECT_TYPE_GENERIC
+ struct
+ {
+ 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
+ uint32 LargeAOI; // 7 Large AOI, enum { false, true, }; Default: false
+ uint32 UseGarrisonOwnerGuildColors; // 8 Use Garrison Owner Guild Colors, enum { false, true, }; Default: false
+ } generic;
+ // 6 GAMEOBJECT_TYPE_TRAP
+ struct
+ {
+ uint32 open; // 0 open, References: Lock_, NoValue = 0
+ uint32 level; // 1 level, 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
+ uint32 SummonerTriggered; // 17 Summoner Triggered, enum { false, true, }; Default: false
} trap;
- //7 GAMEOBJECT_TYPE_CHAIR
+ // 7 GAMEOBJECT_TYPE_CHAIR
struct
{
- uint32 slots; //0
- uint32 height; //1
- uint32 onlyCreatorUse; //2
- uint32 triggeredEvent; //3
+ 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
} chair;
- //8 GAMEOBJECT_TYPE_SPELL_FOCUS
+ // 8 GAMEOBJECT_TYPE_SPELL_FOCUS
struct
{
- uint32 focusId; //0
- uint32 dist; //1
- uint32 linkedTrapId; //2
- uint32 serverOnly; //3
- uint32 questID; //4
- uint32 large; //5
- uint32 floatingTooltip; //6
+ 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
+ uint32 floatOnWater; // 7 floatOnWater, enum { false, true, }; Default: false
+ uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
} spellFocus;
- //9 GAMEOBJECT_TYPE_TEXT
+ // 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 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
} 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 large; //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
+ // 10 GAMEOBJECT_TYPE_GOOBER
+ struct
+ {
+ 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 WorldStateSetsState; // 20 WorldStateSetsState, 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
+ uint32 SpawnVignette; // 24 Spawn Vignette, References: vignette, NoValue = 0
+ uint32 startOpen; // 25 startOpen, enum { false, true, }; Default: false
+ uint32 DontPlayOpenAnim; // 26 Dont Play Open Anim, enum { false, true, }; Default: false
+ uint32 IgnoreBoundingBox; // 27 Ignore Bounding Box, enum { false, true, }; Default: false
+ uint32 NeverUsableWhileMounted; // 28 Never Usable While Mounted, enum { false, true, }; Default: false
+ uint32 SortFarZ; // 29 Sort Far Z, enum { false, true, }; Default: false
+ uint32 SyncAnimationtoObjectLifetime; // 30 Sync Animation to Object Lifetime (global track only), enum { false, true, }; Default: false
} goober;
- //11 GAMEOBJECT_TYPE_TRANSPORT
- struct
- {
- int32 stopFrame1; //0
- uint32 startOpen; //1
- uint32 autoCloseTime; //2 secs till autoclose = autoCloseTime / 0x10000
- uint32 pause1EventID; //3
- uint32 pause2EventID; //4
- uint32 mapId; //5
- int32 stopFrame2; //6
- uint32 unknown;
- int32 stopFrame3; //8
- uint32 unknown2;
- int32 stopFrame4; //10
+ // 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 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
+ uint32 mapID; // 5 mapID, References: Map, NoValue = -1
+ uint32 Timeto3rdfloor; // 6 Time to 3rd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached3rdfloor; // 7 Reached 3rd floor, References: GameEvents, NoValue = 0
+ uint32 Timeto4thfloor; // 8 Time to 4th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached4thfloor; // 9 Reached 4th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto5thfloor; // 10 Time to 5th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached5thfloor; // 11 Reached 5th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto6thfloor; // 12 Time to 6th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached6thfloor; // 13 Reached 6th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto7thfloor; // 14 Time to 7th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached7thfloor; // 15 Reached 7th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto8thfloor; // 16 Time to 8th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached8thfloor; // 17 Reached 8th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto9thfloor; // 18 Time to 9th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached9thfloor; // 19 Reached 9th floor, References: GameEvents, NoValue = 0
+ uint32 Timeto10thfloor; // 20 Time to 10th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 Reached10thfloor; // 21 Reached 10th floor, References: GameEvents, NoValue = 0
+ uint32 onlychargeheightcheck; // 22 only charge height check. (yards), int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 onlychargetimecheck; // 23 only charge time check, int, Min value: 0, Max value: 65535, Default value: 0
} transport;
- //12 GAMEOBJECT_TYPE_AREADAMAGE
+ // 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
- } areadamage;
- //13 GAMEOBJECT_TYPE_CAMERA
+ 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 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
} camera;
- //14 GAMEOBJECT_TYPE_MAPOBJECT - empty
- //15 GAMEOBJECT_TYPE_MAP_OBJ_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
+ // 14 GAMEOBJECT_TYPE_MAP_OBJECT
+ struct
+ {
+ } mapobject;
+ // 15 GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT
+ struct
+ {
+ 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
+ uint32 mapID; // 6 mapID, References: Map, NoValue = -1
+ uint32 worldState1; // 7 worldState1, References: WorldState, NoValue = 0
+ uint32 allowstopping; // 8 allow stopping, enum { false, true, }; Default: false
+ uint32 InitStopped; // 9 Init Stopped, enum { false, true, }; Default: false
+ uint32 TrueInfiniteAOI; // 10 True Infinite AOI (programmer only!), enum { false, true, }; Default: false
} moTransport;
- //16 GAMEOBJECT_TYPE_DUELFLAG - empty
- //17 GAMEOBJECT_TYPE_FISHINGNODE - empty
- //18 GAMEOBJECT_TYPE_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
- } summoningRitual;
- //19 GAMEOBJECT_TYPE_MAILBOX - empty
- //20 GAMEOBJECT_TYPE_DONOTUSE - empty
- //21 GAMEOBJECT_TYPE_GUARDPOST
- struct
- {
- uint32 creatureID; //0
- uint32 charges; //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 large; //4
- } spellcaster;
- //23 GAMEOBJECT_TYPE_MEETINGSTONE
- struct
- {
- uint32 minLevel; //0
- uint32 maxLevel; //1
- uint32 areaID; //2
- } 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
- } 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?
- } fishinghole;
- //26 GAMEOBJECT_TYPE_FLAGDROP
- struct
- {
- uint32 lockId; //0
- uint32 eventID; //1
- uint32 pickupSpell; //2
- uint32 noDamageImmune; //3
- uint32 openTextID; //4
- } flagdrop;
- //27 GAMEOBJECT_TYPE_MINI_GAME
- struct
- {
- uint32 gameType; //0
- } miniGame;
- //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 large; //18
- uint32 highlight; //19
- uint32 startingValue; //20
- uint32 unidirectional; //21
- } capturePoint;
- //30 GAMEOBJECT_TYPE_AURA_GENERATOR
+ // 16 GAMEOBJECT_TYPE_DUEL_ARBITER
+ struct
+ {
+ } duelFlag;
+ // 17 GAMEOBJECT_TYPE_FISHINGNODE
+ struct
+ {
+ } fishingNode;
+ // 18 GAMEOBJECT_TYPE_RITUAL
+ struct
+ {
+ 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
+ uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
+ } ritual;
+ // 19 GAMEOBJECT_TYPE_MAILBOX
+ struct
+ {
+ uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
+ } mailbox;
+ // 20 GAMEOBJECT_TYPE_DO_NOT_USE
+ struct
+ {
+ } DONOTUSE;
+ // 21 GAMEOBJECT_TYPE_GUARDPOST
+ struct
+ {
+ 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 spell; // 0 spell, References: Spell, NoValue = 0
+ uint32 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
+ uint32 NeverUsableWhileMounted; // 7 Never Usable While Mounted, enum { false, true, }; Default: false
+ } spellCaster;
+ // 23 GAMEOBJECT_TYPE_MEETINGSTONE
+ struct
+ {
+ uint32 minLevel; // 0 minLevel, int, Min value: 0, Max value: 65535, Default value: 1
+ uint32 maxLevel; // 1 maxLevel, int, Min value: 1, Max value: 65535, Default value: 60
+ uint32 areaID; // 2 areaID, References: AreaTable, NoValue = 0
+ } meetingStone;
+ // 24 GAMEOBJECT_TYPE_FLAGSTAND
+ struct
+ {
+ 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
+ uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 playerCast; // 9 playerCast, enum { false, true, }; Default: false
+ uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 InfiniteAOI; // 11 Infinite AOI, enum { false, true, }; Default: false
+ uint32 cooldown; // 12 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
+ } flagStand;
+ // 25 GAMEOBJECT_TYPE_FISHINGHOLE
struct
{
- uint32 startOpen; //0
- uint32 radius; //1
- uint32 auraID1; //2
- uint32 conditionID1; //3
- uint32 auraID2; //4
- uint32 conditionID2; //5
- uint32 serverOnly; //6
+ uint32 radius; // 0 radius, int, Min value: 0, Max value: 50, Default value: 0
+ uint32 chestLoot; // 1 chestLoot, 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 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
+ uint32 playerCast; // 5 playerCast, enum { false, true, }; Default: false
+ uint32 ExpireDuration; // 6 Expire Duration, int, Min value: 0, Max value: 60000, Default value: 10000
+ uint32 GiganticAOI; // 7 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 InfiniteAOI; // 8 Infinite AOI, enum { false, true, }; Default: false
+ uint32 cooldown; // 9 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
+ } flagDrop;
+ // 27 GAMEOBJECT_TYPE_MINI_GAME
+ struct
+ {
+ } DONOTUSE3;
+ // 28 GAMEOBJECT_TYPE_DO_NOT_USE_2
+ struct
+ {
+ } DONOTUSE2;
+ // 29 GAMEOBJECT_TYPE_CONTROL_ZONE
+ struct
+ {
+ 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
+ uint32 UncontestedTime; // 25 Uncontested Time, int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 FrequentHeartbeat; // 26 Frequent Heartbeat, enum { false, true, }; Default: false
+ } controlZone;
+ // 30 GAMEOBJECT_TYPE_AURA_GENERATOR
+ struct
+ {
+ 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
+ // 31 GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY
struct
{
- uint32 mapID; //0
- uint32 difficulty; //1
+ uint32 InstanceType; // 0 Instance Type, enum { Not Instanced, Party Dungeon, Raid Dungeon, PVP Battlefield, Arena Battlefield, Scenario, }; Default: Party Dungeon
+ uint32 DifficultyNormal; // 1 Difficulty Normal, References: animationdata, NoValue = 0
+ uint32 DifficultyHeroic; // 2 Difficulty Heroic, References: animationdata, NoValue = 0
+ uint32 DifficultyEpic; // 3 Difficulty Epic, References: animationdata, NoValue = 0
+ uint32 DifficultyLegendary; // 4 Difficulty Legendary, References: animationdata, NoValue = 0
+ uint32 HeroicAttachment; // 5 Heroic Attachment, References: gameobjectdisplayinfo, NoValue = 0
+ uint32 ChallengeAttachment; // 6 Challenge Attachment, References: gameobjectdisplayinfo, NoValue = 0
+ uint32 DifficultyAnimations; // 7 Difficulty Animations, References: GameObjectDiffAnim, NoValue = 0
+ uint32 LargeAOI; // 8 Large AOI, enum { false, true, }; Default: false
+ uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 Legacy; // 10 Legacy, enum { false, true, }; Default: false
} dungeonDifficulty;
- //32 GAMEOBJECT_TYPE_BARBER_CHAIR
+ // 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
+ uint32 HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0
} barberChair;
- //33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
- struct
- {
- uint32 intactNumHits; //0
- uint32 creditProxyCreature; //1
- uint32 state1Name; //2
- uint32 intactEvent; //3
- uint32 damagedDisplayId; //4
- uint32 damagedNumHits; //5
- uint32 empty3; //6
- uint32 empty4; //7
- uint32 empty5; //8
- uint32 damagedEvent; //9
- uint32 destroyedDisplayId; //10
- uint32 empty7; //11
- uint32 empty8; //12
- uint32 empty9; //13
- uint32 destroyedEvent; //14
- uint32 empty10; //15
- uint32 debuildingTimeSecs; //16
- uint32 empty11; //17
- uint32 destructibleData; //18
- uint32 rebuildingEvent; //19
- uint32 empty12; //20
- uint32 empty13; //21
- uint32 damageEvent; //22
- uint32 empty14; //23
- } building;
- //34 GAMEOBJECT_TYPE_GUILDBANK - empty
- //35 GAMEOBJECT_TYPE_TRAPDOOR
- struct
- {
- uint32 whenToPause; // 0
- uint32 startOpen; // 1
- uint32 autoClose; // 2
- } trapDoor;
-
- // not use for specific field access (only for output with loop by all filed), also this determinate max union size
+ // 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
+ struct
+ {
+ uint32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 CreditProxyCreature; // 1 Credit Proxy Creature, References: Creature, NoValue = 0
+ uint32 HealthRec; // 2 Health Rec, References: DestructibleHitpoint, NoValue = 0
+ uint32 IntactEvent; // 3 Intact Event, References: GameEvents, NoValue = 0
+ uint32 PVPEnabling; // 4 PVP Enabling, enum { false, true, }; Default: false
+ uint32 InteriorVisible; // 5 Interior Visible, enum { false, true, }; Default: false
+ uint32 InteriorLight; // 6 Interior Light, enum { false, true, }; Default: false
+ uint32 Unused1; // 7 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 Unused2; // 8 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 DamagedEvent; // 9 Damaged Event, References: GameEvents, NoValue = 0
+ uint32 Unused3; // 10 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 Unused4; // 11 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 Unused5; // 12 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 Unused6; // 13 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 DestroyedEvent; // 14 Destroyed Event, References: GameEvents, NoValue = 0
+ uint32 Unused7; // 15 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 RebuildingTime; // 16 Rebuilding: Time (secs), int, Min value: 0, Max value: 65535, Default value: 0
+ uint32 Unused8; // 17 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 DestructibleModelRec; // 18 Destructible Model Rec, References: DestructibleModelData, NoValue = 0
+ uint32 RebuildingEvent; // 19 Rebuilding: Event, References: GameEvents, NoValue = 0
+ uint32 Unused9; // 20 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 Unused10; // 21 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 DamageEvent; // 22 Damage Event, References: GameEvents, NoValue = 0
+ } destructibleBuilding;
+ // 34 GAMEOBJECT_TYPE_GUILD_BANK
+ struct
+ {
+ uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
+ } guildbank;
+ // 35 GAMEOBJECT_TYPE_TRAPDOOR
+ struct
+ {
+ uint32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false
+ uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false
+ } trapdoor;
+ // 36 GAMEOBJECT_TYPE_NEW_FLAG
+ struct
+ {
+ uint32 open; // 0 open, References: Lock_, NoValue = 0
+ uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0
+ uint32 openTextID; // 2 openTextID, References: BroadcastText, NoValue = 0
+ uint32 requireLOS; // 3 require LOS, enum { false, true, }; Default: true
+ uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
+ uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false
+ uint32 ExpireDuration; // 7 Expire Duration, int, Min value: 0, Max value: 3600000, Default value: 10000
+ uint32 RespawnTime; // 8 Respawn Time, int, Min value: 0, Max value: 3600000, Default value: 20000
+ uint32 FlagDrop; // 9 Flag Drop, References: GameObjects, NoValue = 0
+ uint32 ExclusiveCategory; // 10 Exclusive Category (BGs Only), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 worldState1; // 11 worldState1, References: WorldState, NoValue = 0
+ uint32 ReturnonDefenderInteract; // 12 Return on Defender Interact, enum { false, true, }; Default: false
+ } newflag;
+ // 37 GAMEOBJECT_TYPE_NEW_FLAG_DROP
+ struct
+ {
+ uint32 open; // 0 open, References: Lock_, NoValue = 0
+ } newflagdrop;
+ // 38 GAMEOBJECT_TYPE_GARRISON_BUILDING
+ struct
+ {
+ uint32 mapID; // 0 mapID, References: Map, NoValue = -1
+ } garrisonBuilding;
+ // 39 GAMEOBJECT_TYPE_GARRISON_PLOT
+ struct
+ {
+ uint32 PlotInstance; // 0 Plot Instance, References: GarrPlotInstance, NoValue = 0
+ uint32 mapID; // 1 mapID, References: Map, NoValue = -1
+ } garrisonPlot;
+ // 40 GAMEOBJECT_TYPE_CLIENT_CREATURE
+ struct
+ {
+ uint32 CreatureDisplayInfo; // 0 Creature Display Info, References: CreatureDisplayInfo, NoValue = 0
+ uint32 AnimKit; // 1 Anim Kit, References: AnimKit, NoValue = 0
+ uint32 creatureID; // 2 creatureID, References: Creature, NoValue = 0
+ } clientCreature;
+ // 41 GAMEOBJECT_TYPE_CLIENT_ITEM
+ struct
+ {
+ uint32 Item; // 0 Item, References: Item, NoValue = 0
+ } clientItem;
+ // 42 GAMEOBJECT_TYPE_CAPTURE_POINT
+ struct
+ {
+ uint32 CaptureTime; // 0 Capture Time (ms), int, Min value: 0, Max value: 2147483647, Default value: 60000
+ uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 highlight; // 2 highlight, enum { false, true, }; Default: true
+ uint32 open; // 3 open, References: Lock_, NoValue = 0
+ uint32 AssaultBroadcastHorde; // 4 Assault Broadcast (Horde), References: BroadcastText, NoValue = 0
+ uint32 CaptureBroadcastHorde; // 5 Capture Broadcast (Horde), References: BroadcastText, NoValue = 0
+ uint32 DefendedBroadcastHorde; // 6 Defended Broadcast (Horde), References: BroadcastText, NoValue = 0
+ uint32 AssaultBroadcastAlliance; // 7 Assault Broadcast (Alliance), References: BroadcastText, NoValue = 0
+ uint32 CaptureBroadcastAlliance; // 8 Capture Broadcast (Alliance), References: BroadcastText, NoValue = 0
+ uint32 DefendedBroadcastAlliance; // 9 Defended Broadcast (Alliance), References: BroadcastText, NoValue = 0
+ uint32 worldState1; // 10 worldState1, References: WorldState, NoValue = 0
+ uint32 ContestedEventHorde; // 11 Contested Event (Horde), References: GameEvents, NoValue = 0
+ uint32 CaptureEventHorde; // 12 Capture Event (Horde), References: GameEvents, NoValue = 0
+ uint32 DefendedEventHorde; // 13 Defended Event (Horde), References: GameEvents, NoValue = 0
+ uint32 ContestedEventAlliance; // 14 Contested Event (Alliance), References: GameEvents, NoValue = 0
+ uint32 CaptureEventAlliance; // 15 Capture Event (Alliance), References: GameEvents, NoValue = 0
+ uint32 DefendedEventAlliance; // 16 Defended Event (Alliance), References: GameEvents, NoValue = 0
+ uint32 SpellVisual1; // 17 Spell Visual 1, References: SpellVisual, NoValue = 0
+ uint32 SpellVisual2; // 18 Spell Visual 2, References: SpellVisual, NoValue = 0
+ uint32 SpellVisual3; // 19 Spell Visual 3, References: SpellVisual, NoValue = 0
+ uint32 SpellVisual4; // 20 Spell Visual 4, References: SpellVisual, NoValue = 0
+ uint32 SpellVisual5; // 21 Spell Visual 5, References: SpellVisual, NoValue = 0
+ } capturePoint;
+ // 43 GAMEOBJECT_TYPE_PHASEABLE_MO
+ struct
+ {
+ uint32 mapID; // 0 mapID, References: Map, NoValue = -1
+ uint32 namedset; // 1 named set, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ } phaseableMO;
+ // 44 GAMEOBJECT_TYPE_GARRISON_MONUMENT
+ struct
+ {
+ uint32 TrophyTypeID; // 0 Trophy Type ID, References: TrophyType, NoValue = 0
+ uint32 TrophyInstanceID; // 1 Trophy Instance ID, References: TrophyInstance, NoValue = 0
+ } garrisonMonument;
+ // 45 GAMEOBJECT_TYPE_GARRISON_SHIPMENT
+ struct
+ {
+ uint32 ShipmentContainer; // 0 Shipment Container, References: CharShipmentContainer, NoValue = 0
+ } garrisonShipment;
+ // 46 GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE
+ struct
+ {
+ uint32 TrophyInstanceID; // 0 Trophy Instance ID, References: TrophyInstance, NoValue = 0
+ } garrisonMonumentPlaque;
struct
{
uint32 data[MAX_GAMEOBJECT_DATA];
@@ -426,7 +631,7 @@ struct GameObjectTemplate
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.allowMounted != 0;
case GAMEOBJECT_TYPE_TEXT: return text.allowMounted != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.allowMounted != 0;
- case GAMEOBJECT_TYPE_SPELLCASTER: return spellcaster.allowMounted != 0;
+ case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.allowMounted != 0;
default: return false;
}
}
@@ -435,17 +640,20 @@ 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;
+ case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.open;
+ case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open;
+ case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open;
default: return 0;
}
}
@@ -458,8 +666,8 @@ struct GameObjectTemplate
case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune != 0;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune != 0;
- case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.noDamageImmune != 0;
- case GAMEOBJECT_TYPE_FLAGDROP: return flagdrop.noDamageImmune != 0;
+ case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.noDamageImmune != 0;
+ case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.noDamageImmune != 0;
default: return true;
}
}
@@ -469,8 +677,8 @@ struct GameObjectTemplate
switch (type)
{
//case GAMEOBJECT_TYPE_TRAP: return trap.charges;
- case GAMEOBJECT_TYPE_GUARDPOST: return guardpost.charges;
- case GAMEOBJECT_TYPE_SPELLCASTER: return spellcaster.charges;
+ case GAMEOBJECT_TYPE_GUARDPOST: return guardPost.charges;
+ case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.charges;
default: return 0;
}
}
@@ -479,9 +687,10 @@ struct GameObjectTemplate
{
switch (type)
{
- 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_BUTTON: return button.linkedTrap;
+ 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;
}
}
@@ -491,12 +700,13 @@ 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;
+ case GAMEOBJECT_TYPE_TRAPDOOR: autoCloseTime = trapdoor.autoClose; break;
default: break;
}
return autoCloseTime / IN_MILLISECONDS; // prior to 3.0.3, conversion was / 0x10000;
@@ -506,8 +716,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;
}
}
@@ -526,8 +736,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_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 fc7410b702f..e38300a1c2d 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -8958,7 +8958,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)
@@ -8976,7 +8976,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 98fb132cdd6..4a13ac78cdf 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -92,7 +92,7 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid,
SetPeriod(tInfo->pathTime);
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_MAP_OBJ_TRANSPORT);
SetGoAnimProgress(animprogress);
SetName(goinfo->name);
@@ -169,7 +169,7 @@ void Transport::Update(uint32 diff)
SetMoving(true);
// Enable movement
- if (GetGOInfo()->moTransport.canBeStopped)
+ if (GetGOInfo()->moTransport.allowstopping)
SetGoState(GO_STATE_ACTIVE);
if (timer >= _currentFrame->DepartureTime && timer < _currentFrame->NextArriveTime)
@@ -548,7 +548,7 @@ void Transport::UnloadStaticPassengers()
void Transport::EnableMovement(bool enabled)
{
- if (!GetGOInfo()->moTransport.canBeStopped)
+ if (!GetGOInfo()->moTransport.allowstopping)
return;
_pendingStop = !enabled;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index a33a3cd436f..8d723599214 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -6506,7 +6506,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)
@@ -6569,8 +6569,8 @@ void ObjectMgr::LoadGameObjectTemplate()
"questItem4, questItem5, questItem6, data0, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10, data11, data12, "
// 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
"data13, data14, data15, data16, data17, data18, data19, data20, data21, data22, data23, data24, data25, data26, data27, data28, "
- // 45 46 47 48 49 50
- "data29, data30, data31, unkInt32, AIName, ScriptName "
+ // 45 46 47 48 49 50 51
+ "data29, data30, data31, data32, unkInt32, AIName, ScriptName "
"FROM gameobject_template");
if (!result)
@@ -6606,9 +6606,9 @@ void ObjectMgr::LoadGameObjectTemplate()
for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i)
got.raw.data[i] = fields[16 + i].GetUInt32();
- got.unkInt32 = fields[48].GetInt32();
- got.AIName = fields[49].GetString();
- got.ScriptId = GetScriptId(fields[50].GetCString());
+ got.unkInt32 = fields[49].GetInt32();
+ got.AIName = fields[50].GetString();
+ got.ScriptId = GetScriptId(fields[51].GetCString());
// Checks
@@ -6616,95 +6616,95 @@ 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_MAP_OBJ_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)
_transportMaps.insert(transportMap);
@@ -6715,27 +6715,27 @@ 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);
- CheckGONoDamageImmuneId(&got, got.flagstand.noDamageImmune, 5);
+ 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);
- CheckGONoDamageImmuneId(&got, got.flagdrop.noDamageImmune, 3);
+ if (got.flagDrop.open)
+ CheckGOLockId(&got, got.flagDrop.open, 0);
+ CheckGONoDamageImmuneId(&got, got.flagDrop.noDamageImmune, 3);
break;
}
case GAMEOBJECT_TYPE_BARBER_CHAIR: //32
@@ -7724,7 +7724,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;
@@ -7733,7 +7733,7 @@ void ObjectMgr::LoadGameObjectForQuests()
}
case GAMEOBJECT_TYPE_GENERIC:
{
- if (itr->second._generic.questID > 0) //quests objects
+ if (itr->second.generic.questID > 0) //quests objects
{
_gameObjectForQuestStore.insert(itr->second.entry);
++count;
@@ -7742,7 +7742,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 480bbc84342..ae3bef5a8df 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -630,10 +630,10 @@ namespace Trinity
if (go->GetGOInfo()->type != GAMEOBJECT_TYPE_SPELL_FOCUS)
return false;
- if (go->GetGOInfo()->spellFocus.focusId != i_focusId)
+ if (go->GetGOInfo()->spellFocus.spellFocusType != i_focusId)
return false;
- float dist = go->GetGOInfo()->spellFocus.dist / 2.f;
+ float dist = go->GetGOInfo()->spellFocus.radius / 2.f;
return go->IsWithinDistInMap(i_unit, dist);
}
@@ -649,7 +649,7 @@ namespace Trinity
NearestGameObjectFishingHole(WorldObject const& obj, float range) : i_obj(obj), i_range(range) { }
bool operator()(GameObject* go)
{
- if (go->GetGOInfo()->type == GAMEOBJECT_TYPE_FISHINGHOLE && go->isSpawned() && i_obj.IsWithinDistInMap(go, i_range) && i_obj.IsWithinDistInMap(go, (float)go->GetGOInfo()->fishinghole.radius))
+ if (go->GetGOInfo()->type == GAMEOBJECT_TYPE_FISHINGHOLE && go->isSpawned() && i_obj.IsWithinDistInMap(go, i_range) && i_obj.IsWithinDistInMap(go, (float)go->GetGOInfo()->fishingHole.radius))
{
i_range = i_obj.GetDistance(go);
return true;
diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp
index eb1ca57b1dc..2ea7dc600f8 100644
--- a/src/server/game/Maps/TransportMgr.cpp
+++ b/src/server/game/Maps/TransportMgr.cpp
@@ -66,13 +66,13 @@ 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;
}
- if (!goInfo->moTransport.taxiPathId)
+ if (!goInfo->moTransport.taxiPathID)
continue;
// paths are generated per template, saves us from generating it again in case of instanced transports
@@ -109,7 +109,7 @@ public:
void TransportMgr::GeneratePath(GameObjectTemplate const* goInfo, TransportTemplate* transport)
{
- uint32 pathId = goInfo->moTransport.taxiPathId;
+ uint32 pathId = goInfo->moTransport.taxiPathID;
TaxiPathNodeList const& path = sTaxiPathNodesByPath[pathId];
std::vector<KeyFrame>& keyFrames = transport->keyFrames;
Movement::PointsArray splinePath, allPoints;
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index a28e22b2faf..6c8df497a1a 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -1860,58 +1860,59 @@ enum SpellPreventionType
SPELL_PREVENTION_TYPE_UNK = 3 // Only a few spells have this, but most of the should be interruptable.
};
-enum GameobjectTypes // (6.0.2.18988)
+enum GameobjectTypes // (6.0.3.19103)
{
- GAMEOBJECT_TYPE_DOOR = 0,
- GAMEOBJECT_TYPE_BUTTON = 1,
- GAMEOBJECT_TYPE_QUESTGIVER = 2,
- GAMEOBJECT_TYPE_CHEST = 3,
- GAMEOBJECT_TYPE_BINDER = 4,
- GAMEOBJECT_TYPE_GENERIC = 5,
- GAMEOBJECT_TYPE_TRAP = 6,
- GAMEOBJECT_TYPE_CHAIR = 7,
- GAMEOBJECT_TYPE_SPELL_FOCUS = 8,
- GAMEOBJECT_TYPE_TEXT = 9,
- GAMEOBJECT_TYPE_GOOBER = 10,
- GAMEOBJECT_TYPE_TRANSPORT = 11,
- GAMEOBJECT_TYPE_AREADAMAGE = 12,
- GAMEOBJECT_TYPE_CAMERA = 13,
- GAMEOBJECT_TYPE_MAP_OBJECT = 14,
- GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT = 15,
- GAMEOBJECT_TYPE_DUEL_ARBITER = 16,
- GAMEOBJECT_TYPE_FISHINGNODE = 17,
- GAMEOBJECT_TYPE_RITUAL = 18,
- GAMEOBJECT_TYPE_MAILBOX = 19,
- GAMEOBJECT_TYPE_DO_NOT_USE = 20,
- GAMEOBJECT_TYPE_GUARDPOST = 21,
- GAMEOBJECT_TYPE_SPELLCASTER = 22,
- GAMEOBJECT_TYPE_MEETINGSTONE = 23,
- GAMEOBJECT_TYPE_FLAGSTAND = 24,
- GAMEOBJECT_TYPE_FISHINGHOLE = 25,
- GAMEOBJECT_TYPE_FLAGDROP = 26,
- GAMEOBJECT_TYPE_MINI_GAME = 27,
- GAMEOBJECT_TYPE_DO_NOT_USE_2 = 28,
- GAMEOBJECT_TYPE_CONTROL_ZONE = 29,
- GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
- GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
- GAMEOBJECT_TYPE_BARBER_CHAIR = 32,
- GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
- GAMEOBJECT_TYPE_GUILD_BANK = 34,
- GAMEOBJECT_TYPE_TRAPDOOR = 35,
- GAMEOBJECT_TYPE_NEW_FLAG = 36,
- GAMEOBJECT_TYPE_NEW_FLAG_DROP = 37,
- GAMEOBJECT_TYPE_GARRISON_BUILDING = 38,
- GAMEOBJECT_TYPE_GARRISON_PLOT = 39,
- GAMEOBJECT_TYPE_CLIENT_CREATURE = 40,
- GAMEOBJECT_TYPE_CLIENT_ITEM = 41,
- GAMEOBJECT_TYPE_CAPTURE_POINT = 42,
- GAMEOBJECT_TYPE_TROPHY = 43,
- GAMEOBJECT_TYPE_PHASEABLE_MO = 44,
- GAMEOBJECT_TYPE_SHIPMENT = 45
+ GAMEOBJECT_TYPE_DOOR = 0,
+ GAMEOBJECT_TYPE_BUTTON = 1,
+ GAMEOBJECT_TYPE_QUESTGIVER = 2,
+ GAMEOBJECT_TYPE_CHEST = 3,
+ GAMEOBJECT_TYPE_BINDER = 4,
+ GAMEOBJECT_TYPE_GENERIC = 5,
+ GAMEOBJECT_TYPE_TRAP = 6,
+ GAMEOBJECT_TYPE_CHAIR = 7,
+ GAMEOBJECT_TYPE_SPELL_FOCUS = 8,
+ GAMEOBJECT_TYPE_TEXT = 9,
+ GAMEOBJECT_TYPE_GOOBER = 10,
+ GAMEOBJECT_TYPE_TRANSPORT = 11,
+ GAMEOBJECT_TYPE_AREADAMAGE = 12,
+ GAMEOBJECT_TYPE_CAMERA = 13,
+ GAMEOBJECT_TYPE_MAP_OBJECT = 14,
+ GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT = 15,
+ GAMEOBJECT_TYPE_DUEL_ARBITER = 16,
+ GAMEOBJECT_TYPE_FISHINGNODE = 17,
+ GAMEOBJECT_TYPE_RITUAL = 18,
+ GAMEOBJECT_TYPE_MAILBOX = 19,
+ GAMEOBJECT_TYPE_DO_NOT_USE = 20,
+ GAMEOBJECT_TYPE_GUARDPOST = 21,
+ GAMEOBJECT_TYPE_SPELLCASTER = 22,
+ GAMEOBJECT_TYPE_MEETINGSTONE = 23,
+ GAMEOBJECT_TYPE_FLAGSTAND = 24,
+ GAMEOBJECT_TYPE_FISHINGHOLE = 25,
+ GAMEOBJECT_TYPE_FLAGDROP = 26,
+ GAMEOBJECT_TYPE_MINI_GAME = 27,
+ GAMEOBJECT_TYPE_DO_NOT_USE_2 = 28,
+ GAMEOBJECT_TYPE_CONTROL_ZONE = 29,
+ GAMEOBJECT_TYPE_AURA_GENERATOR = 30,
+ GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY = 31,
+ GAMEOBJECT_TYPE_BARBER_CHAIR = 32,
+ GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING = 33,
+ GAMEOBJECT_TYPE_GUILD_BANK = 34,
+ GAMEOBJECT_TYPE_TRAPDOOR = 35,
+ GAMEOBJECT_TYPE_NEW_FLAG = 36,
+ GAMEOBJECT_TYPE_NEW_FLAG_DROP = 37,
+ GAMEOBJECT_TYPE_GARRISON_BUILDING = 38,
+ GAMEOBJECT_TYPE_GARRISON_PLOT = 39,
+ GAMEOBJECT_TYPE_CLIENT_CREATURE = 40,
+ GAMEOBJECT_TYPE_CLIENT_ITEM = 41,
+ GAMEOBJECT_TYPE_CAPTURE_POINT = 42,
+ GAMEOBJECT_TYPE_PHASEABLE_MO = 43,
+ GAMEOBJECT_TYPE_GARRISON_MONUMENT = 44,
+ GAMEOBJECT_TYPE_GARRISON_SHIPMENT = 45,
+ GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE = 46
};
-#define MAX_GAMEOBJECT_TYPE 46 // sending to client this or greater value can crash client.
-#define MAX_GAMEOBJECT_DATA 32 // Max number of uint32 vars in gameobject_template data field
+#define MAX_GAMEOBJECT_TYPE 47 // sending to client this or greater value can crash client.
+#define MAX_GAMEOBJECT_DATA 33 // Max number of uint32 vars in gameobject_template data field
enum GameObjectFlags
{
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
index 2e651999522..c9119886dba 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp
@@ -58,9 +58,9 @@ bool OPvPCapturePoint::HandlePlayerEnter(Player* player)
{
if (m_capturePoint)
{
- player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 1);
- player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate2, (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
- player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct);
+ player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldState1, 1);
+ player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldstate2, (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
+ player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldstate3, m_neutralValuePct);
}
return m_activePlayers[player->GetTeamId()].insert(player->GetGUID()).second;
}
@@ -68,7 +68,7 @@ bool OPvPCapturePoint::HandlePlayerEnter(Player* player)
void OPvPCapturePoint::HandlePlayerLeave(Player* player)
{
if (m_capturePoint)
- player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 0);
+ player->SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldState1, 0);
m_activePlayers[player->GetTeamId()].erase(player->GetGUID());
}
@@ -78,11 +78,11 @@ void OPvPCapturePoint::SendChangePhase()
return;
// send this too, sometimes the slider disappears, dunno why :(
- SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldState1, 1);
+ SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldState1, 1);
// send these updates to only the ones in this objective
- SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate2, (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
+ SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldstate2, (uint32)ceil((m_value + m_maxValue) / (2 * m_maxValue) * 100.0f));
// send this too, sometimes it resets :S
- SendUpdateWorldState(m_capturePoint->GetGOInfo()->capturePoint.worldstate3, m_neutralValuePct);
+ SendUpdateWorldState(m_capturePoint->GetGOInfo()->controlZone.worldstate3, m_neutralValuePct);
}
void OPvPCapturePoint::AddGO(uint32 type, uint32 mapId, ObjectGuid::LowType guid, uint32 entry /*= 0*/)
@@ -152,9 +152,9 @@ bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, float x, fl
return false;
// get the needed values from goinfo
- m_maxValue = (float)goinfo->capturePoint.maxTime;
- m_maxSpeed = m_maxValue / (goinfo->capturePoint.minTime ? goinfo->capturePoint.minTime : 60);
- m_neutralValuePct = goinfo->capturePoint.neutralPercent;
+ m_maxValue = (float)goinfo->controlZone.maxTime;
+ m_maxSpeed = m_maxValue / (goinfo->controlZone.minTime ? goinfo->controlZone.minTime : 60);
+ m_neutralValuePct = goinfo->controlZone.neutralPercent;
m_minValue = CalculatePct(m_maxValue, m_neutralValuePct);
return true;
@@ -294,7 +294,7 @@ bool OPvPCapturePoint::Update(uint32 diff)
if (!m_capturePoint)
return false;
- float radius = (float)m_capturePoint->GetGOInfo()->capturePoint.radius;
+ float radius = (float)m_capturePoint->GetGOInfo()->controlZone.radius;
for (uint32 team = 0; team < 2; ++team)
{
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp
index c9232e2bb19..e8fd4dfce14 100644
--- a/src/server/game/Server/Packets/AuctionHousePackets.cpp
+++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp
@@ -29,7 +29,7 @@ void WorldPackets::AuctionHousePackets::AuctionCommandResult::InitializeAuction(
AuctionId = auction->Id;
Bid = auction->bid;
AuctionOutBid = auction->GetAuctionOutBid();
- Bidder = ObjectGuid(HIGHGUID_PLAYER, auction->bidder);
+ Bidder = ObjectGuid::Create<HighGuid::Player>(auction->bidder);
}
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index b059bfeadd1..5dcdcc9fcea 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1755,20 +1755,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, m_caster);
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 " UI64FMTD, gameObjTarget->GetGOInfo()->chest.eventId, gameObjTarget->GetDBTableGUIDLow());
- player->GetMap()->ScriptsStart(sEventScripts, gameObjTarget->GetGOInfo()->chest.eventId, player, gameObjTarget);
+ TC_LOG_DEBUG("spells", "Chest ScriptStart id %u for GO " UI64FMTD, gameObjTarget->GetGOInfo()->chest.triggeredEvent, gameObjTarget->GetDBTableGUIDLow());
+ player->GetMap()->ScriptsStart(sEventScripts, 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, m_caster);
// Don't return, let loots been taken
@@ -1803,7 +1803,7 @@ void Spell::EffectOpenLock(SpellEffIndex effIndex)
GameObjectTemplate const* goInfo = gameObjTarget->GetGOInfo();
// 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 7b293efbefe..5a00267d6aa 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -618,10 +618,7 @@ public:
type = gameObjectInfo->type;
displayId = gameObjectInfo->displayId;
name = gameObjectInfo->name;
- if (type == GAMEOBJECT_TYPE_CHEST)
- lootId = gameObjectInfo->chest.lootId;
- else if (type == GAMEOBJECT_TYPE_FISHINGHOLE)
- lootId = gameObjectInfo->fishinghole.lootId;
+ lootId = gameObjectInfo->GetLootId();
handler->PSendSysMessage(LANG_GOINFO_ENTRY, entry);
handler->PSendSysMessage(LANG_GOINFO_TYPE, type);
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
index 4af520907e7..189cc842d9b 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
@@ -71,7 +71,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;
@@ -92,7 +92,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;
@@ -116,7 +116,7 @@ public:
//remove all that are not present on FloorEruptionGUID[1] and update treeLen on each GUID
for (std::list<GameObject*>::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 58f62c8bf4e..ee77671d83e 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -1292,7 +1292,7 @@ class go_twilight_portal : public GameObjectScript
{
case GO_HALION_PORTAL_EXIT:
gameobject->SetPhaseMask(0x20, true);
- _spellId = gameobject->GetGOInfo()->goober.spellId;
+ _spellId = gameobject->GetGOInfo()->goober.spell;
break;
case GO_HALION_PORTAL_1:
case GO_HALION_PORTAL_2: // Not used, not seen in sniffs. Just in case.
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 261a6c96f77..0b3be93b17d 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
@@ -980,7 +980,7 @@ class go_celestial_planetarium_access : public GameObjectScript
bool GossipHello(Player* player) override
{
bool hasKey = true;
- if (LockEntry const* lock = sLockStore.LookupEntry(go->GetGOInfo()->goober.lockId))
+ if (LockEntry const* lock = sLockStore.LookupEntry(go->GetGOInfo()->GetLockId()))
{
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 5941bd3decf..27bd6904abd 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -1075,7 +1075,7 @@ class go_simon_cluster : public GameObjectScript
if (Creature* bunny = go->FindNearestCreature(NPC_SIMON_BUNNY, 12.0f, true))
bunny->AI()->SetData(go->GetEntry(), 0);
- player->CastSpell(player, go->GetGOInfo()->goober.spellId, true);
+ player->CastSpell(player, go->GetGOInfo()->goober.spell, true);
go->AddUse();
return true;
}