Added random graveyard corpse placement within +/- 20 units on X/Y axis to help spread corpses out.

This commit is contained in:
Trust 2018-07-21 16:30:55 -04:00
parent 96d146f73c
commit 508a731181
2 changed files with 32 additions and 1 deletions

View File

@ -97,6 +97,33 @@ namespace EQEmu {
Reseed();
}
//generates a psuedo-random float between 0.0 and 0.999...
float randfloat()
{
return rand()/(float(RAND_MAX)+1);
}
//generates a psuedo-random float between 0.0 and max
float randfloat(float max)
{
return randfloat()*max;
}
//generates a psuedo-random float between min and max
float randfloat(float min, float max)
{
if (min>max)
return randfloat()*(min-max)+max;
else
return randfloat()*(max-min)+min;
}
//generates a psuedo-random double between 0.0 and 0.999...
double randdouble()
{
return rand()/(double(RAND_MAX)+1);
}
private:
typedef std::uniform_int_distribution<int>::param_type int_param_t;
typedef std::uniform_real_distribution<double>::param_type real_param_t;

View File

@ -3842,12 +3842,16 @@ uint32 ZoneDatabase::CreateGraveyardRecord(uint32 graveyard_zone_id, const glm::
return 0;
}
uint32 ZoneDatabase::SendCharacterCorpseToGraveyard(uint32 dbid, uint32 zone_id, uint16 instance_id, const glm::vec4& position) {
float xcorpse = (position.x + zone->random.randfloat(-20,20));
float ycorpse = (position.y + zone->random.randfloat(-20,20));
std::string query = StringFormat("UPDATE `character_corpses` "
"SET `zone_id` = %u, `instance_id` = 0, "
"`x` = %1.1f, `y` = %1.1f, `z` = %1.1f, `heading` = %1.1f, "
"`was_at_graveyard` = 1 "
"WHERE `id` = %d",
zone_id, position.x, position.y, position.z, position.w, dbid);
zone_id, xcorpse, ycorpse, position.z, position.w, dbid);
QueryDatabase(query);
return dbid;
}