mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
Merge pull request #559 from TheGrandPackard/master
Fix Random Ground Spawn Z
This commit is contained in:
commit
2188be24e4
1
utils/sql/git/optional/2016_09_29_GroundSpawnsMaxZ.sql
Normal file
1
utils/sql/git/optional/2016_09_29_GroundSpawnsMaxZ.sql
Normal file
@ -0,0 +1 @@
|
||||
UPDATE ground_spawns SET max_z = -99999 WHERE max_x != min_x OR max_y != min_y
|
||||
@ -451,6 +451,21 @@ void Object::RandomSpawn(bool send_packet) {
|
||||
|
||||
m_data.x = zone->random.Real(m_min_x, m_max_x);
|
||||
m_data.y = zone->random.Real(m_min_y, m_max_y);
|
||||
|
||||
if(m_data.z == BEST_Z_INVALID) {
|
||||
glm::vec3 me;
|
||||
me.x = m_data.x;
|
||||
me.y = m_data.y;
|
||||
me.z = 0;
|
||||
glm::vec3 hit;
|
||||
float best_z = zone->zonemap->FindClosestZ(me, &hit);
|
||||
if (best_z != BEST_Z_INVALID) {
|
||||
m_data.z = best_z + 0.1f;
|
||||
}
|
||||
}
|
||||
|
||||
Log.Out(Logs::Detail, Logs::Zone_Server, "Object::RandomSpawn(%s): %d (%.2f, %.2f, %.2f)", m_data.object_name, m_inst->GetID(), m_data.x, m_data.y, m_data.z);
|
||||
|
||||
respawn_timer.Disable();
|
||||
|
||||
if(send_packet) {
|
||||
|
||||
@ -100,9 +100,6 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
|
||||
worldserver.SetZoneData(0);
|
||||
return false;
|
||||
}
|
||||
zone->zonemap = Map::LoadMapFile(zone->map_name);
|
||||
zone->watermap = WaterMap::LoadWaterMapfile(zone->map_name);
|
||||
zone->pathing = PathManager::LoadPathFile(zone->map_name);
|
||||
|
||||
std::string tmp;
|
||||
if (database.GetVariable("loglevel", tmp)) {
|
||||
@ -877,6 +874,23 @@ Zone::~Zone() {
|
||||
//Modified for timezones.
|
||||
bool Zone::Init(bool iStaticZone) {
|
||||
SetStaticZone(iStaticZone);
|
||||
|
||||
//load the zone config file.
|
||||
if (!LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion(), true)) // try loading the zone name...
|
||||
LoadZoneCFG(zone->GetFileName(), zone->GetInstanceVersion()); // if that fails, try the file name, then load defaults
|
||||
|
||||
if(RuleManager::Instance()->GetActiveRulesetID() != default_ruleset)
|
||||
{
|
||||
std::string r_name = RuleManager::Instance()->GetRulesetName(&database, default_ruleset);
|
||||
if(r_name.size() > 0)
|
||||
{
|
||||
RuleManager::Instance()->LoadRules(&database, r_name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
zone->zonemap = Map::LoadMapFile(zone->map_name);
|
||||
zone->watermap = WaterMap::LoadWaterMapfile(zone->map_name);
|
||||
zone->pathing = PathManager::LoadPathFile(zone->map_name);
|
||||
|
||||
Log.Out(Logs::General, Logs::Status, "Loading spawn conditions...");
|
||||
if(!spawn_conditions.LoadSpawnConditions(short_name, instanceid)) {
|
||||
@ -969,19 +983,6 @@ bool Zone::Init(bool iStaticZone) {
|
||||
petition_list.ClearPetitions();
|
||||
petition_list.ReadDatabase();
|
||||
|
||||
//load the zone config file.
|
||||
if (!LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion(), true)) // try loading the zone name...
|
||||
LoadZoneCFG(zone->GetFileName(), zone->GetInstanceVersion()); // if that fails, try the file name, then load defaults
|
||||
|
||||
if(RuleManager::Instance()->GetActiveRulesetID() != default_ruleset)
|
||||
{
|
||||
std::string r_name = RuleManager::Instance()->GetRulesetName(&database, default_ruleset);
|
||||
if(r_name.size() > 0)
|
||||
{
|
||||
RuleManager::Instance()->LoadRules(&database, r_name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
Log.Out(Logs::General, Logs::Status, "Loading timezone data...");
|
||||
zone->zone_time.setEQTimeZone(database.GetZoneTZ(zoneid, GetInstanceVersion()));
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user