Core/Transport: Minor optimization in LoadTransports (And some cosmetic changes here and there in other files)
This commit is contained in:
@@ -438,8 +438,7 @@ bool Item::LoadFromDB(uint32 guid, uint64 owner_guid, Field* fields, uint32 entr
|
||||
need_save = true;
|
||||
}
|
||||
|
||||
std::string enchants = fields[6].GetString();
|
||||
_LoadIntoDataField(enchants.c_str(), ITEM_FIELD_ENCHANTMENT_1_1, MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET);
|
||||
_LoadIntoDataField(fields[6].GetCString(), ITEM_FIELD_ENCHANTMENT_1_1, MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET);
|
||||
SetInt32Value(ITEM_FIELD_RANDOM_PROPERTIES_ID, fields[7].GetInt16());
|
||||
// recalculate suffix factor
|
||||
if (GetItemRandomPropertyId() < 0)
|
||||
|
||||
@@ -266,13 +266,13 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petentry, uint32 petnumber, bool c
|
||||
// Send fake summon spell cast - this is needed for correct cooldown application for spells
|
||||
// Example: 46584 - without this cooldown (which should be set always when pet is loaded) isn't set clientside
|
||||
// TODO: pets should be summoned from real cast instead of just faking it?
|
||||
if (GetUInt32Value(UNIT_CREATED_BY_SPELL))
|
||||
if (summon_spell_id)
|
||||
{
|
||||
WorldPacket data(SMSG_SPELL_GO, (8+8+4+4+2));
|
||||
data.append(owner->GetPackGUID());
|
||||
data.append(owner->GetPackGUID());
|
||||
data << uint8(0);
|
||||
data << uint32(GetUInt32Value(UNIT_CREATED_BY_SPELL));
|
||||
data << uint32(summon_spell_id);
|
||||
data << uint32(256); // CAST_FLAG_UNKNOWN3
|
||||
data << uint32(0);
|
||||
owner->SendMessageToSet(&data, true);
|
||||
|
||||
@@ -52,21 +52,17 @@ void MapManager::LoadTransports()
|
||||
uint32 period = fields[3].GetUInt32();
|
||||
uint32 scriptId = sObjectMgr->GetScriptId(fields[4].GetCString());
|
||||
|
||||
Transport *t = new Transport(period, scriptId);
|
||||
|
||||
const GameObjectTemplate *goinfo = sObjectMgr->GetGameObjectTemplate(entry);
|
||||
|
||||
if (!goinfo)
|
||||
{
|
||||
sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template missing", entry, name.c_str());
|
||||
delete t;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (goinfo->type != GAMEOBJECT_TYPE_MO_TRANSPORT)
|
||||
{
|
||||
sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template type wrong", entry, name.c_str());
|
||||
delete t;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -74,6 +70,7 @@ void MapManager::LoadTransports()
|
||||
|
||||
std::set<uint32> mapsUsed;
|
||||
|
||||
Transport *t = new Transport(period, scriptId);
|
||||
if (!t->GenerateWaypoints(goinfo->moTransport.taxiPathId, mapsUsed))
|
||||
// skip transports with empty waypoints list
|
||||
{
|
||||
@@ -119,7 +116,7 @@ void MapManager::LoadTransports()
|
||||
uint32 guid = fields[0].GetUInt32();
|
||||
uint32 entry = fields[1].GetUInt32();
|
||||
std::string name = fields[2].GetString();
|
||||
sLog->outErrorDb("Transport %u '%s' have record (GUID: %u) in `gameobject`. Transports DON'T must have any records in `gameobject` or its behavior will be unpredictable/bugged.", entry, name.c_str(), guid);
|
||||
sLog->outErrorDb("Transport %u '%s' have record (GUID: %u) in `gameobject`. Transports must not have any records in `gameobject` or its behavior will be unpredictable/bugged.",entry,name.c_str(),guid);
|
||||
}
|
||||
while (result->NextRow());
|
||||
}
|
||||
@@ -173,10 +170,10 @@ void MapManager::LoadTransportNPCs()
|
||||
sLog->outString();
|
||||
}
|
||||
|
||||
Transport::Transport(uint32 period, uint32 script) : GameObject(), m_period(period), ScriptId(script)
|
||||
Transport::Transport(uint32 period, uint32 script) : GameObject(), m_pathTime(0), m_timer(0),
|
||||
currenttguid(0), m_period(period), ScriptId(script), m_nextNodeTime(0)
|
||||
{
|
||||
m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION);
|
||||
currenttguid = 0;
|
||||
}
|
||||
|
||||
Transport::~Transport()
|
||||
|
||||
@@ -187,13 +187,13 @@ void Vehicle::RemoveAllPassengers()
|
||||
|
||||
// Passengers always cast an aura with SPELL_AURA_CONTROL_VEHICLE on the vehicle
|
||||
// We just remove the aura and the unapply handler will make the target leave the vehicle.
|
||||
// We don't need to iterate over m_Seats
|
||||
// We don't need to iterate over Seats
|
||||
_me->RemoveAurasByType(SPELL_AURA_CONTROL_VEHICLE);
|
||||
|
||||
// Following the above logic, this assertion should NEVER fail.
|
||||
// Even in 'hacky' cases, there should at least be VEHICLE_SPELL_RIDE_HARDCODED on us.
|
||||
// SeatMap::const_iterator itr;
|
||||
// for (itr = m_Seats.begin(); itr != m_Seats.end(); ++itr)
|
||||
// for (itr = Seats.begin(); itr != Seats.end(); ++itr)
|
||||
// ASSERT(!itr->second.passenger);
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ class Vehicle
|
||||
|
||||
Unit* GetBase() const { return _me; }
|
||||
VehicleEntry const* GetVehicleInfo() const { return _vehicleInfo; }
|
||||
uint32 const GetCreatureEntry() const { return _creatureEntry; }
|
||||
uint32 GetCreatureEntry() const { return _creatureEntry; }
|
||||
|
||||
bool HasEmptySeat(int8 seatId) const;
|
||||
Unit* GetPassenger(int8 seatId) const;
|
||||
|
||||
Reference in New Issue
Block a user