mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
90 lines
2.3 KiB
C++
Executable File
90 lines
2.3 KiB
C++
Executable File
#include "../client.h"
|
|
#include "../water_map.h"
|
|
|
|
void command_bestz(Client *c, const Seperator *sep)
|
|
{
|
|
if (zone->zonemap == nullptr) {
|
|
c->Message(Chat::White, "Map not loaded for this zone");
|
|
}
|
|
else {
|
|
glm::vec3 me;
|
|
me.x = c->GetX();
|
|
me.y = c->GetY();
|
|
me.z = c->GetZ() + (c->GetSize() == 0.0 ? 6 : c->GetSize()) * HEAD_POSITION;
|
|
glm::vec3 hit;
|
|
glm::vec3 bme(me);
|
|
bme.z -= 500;
|
|
|
|
float best_z = zone->zonemap->FindBestZ(me, &hit);
|
|
|
|
if (best_z != BEST_Z_INVALID) {
|
|
c->Message(Chat::White, "Z is %.3f at (%.3f, %.3f).", best_z, me.x, me.y);
|
|
}
|
|
else {
|
|
c->Message(Chat::White, "Found no Z.");
|
|
}
|
|
}
|
|
|
|
if (zone->watermap == nullptr) {
|
|
c->Message(Chat::White, "Water Region Map not loaded for this zone");
|
|
}
|
|
else {
|
|
WaterRegionType RegionType;
|
|
float z;
|
|
|
|
if (c->GetTarget()) {
|
|
z = c->GetTarget()->GetZ();
|
|
auto position = glm::vec3(c->GetTarget()->GetX(), c->GetTarget()->GetY(), z);
|
|
RegionType = zone->watermap->ReturnRegionType(position);
|
|
c->Message(Chat::White, "InWater returns %d", zone->watermap->InWater(position));
|
|
c->Message(Chat::White, "InLava returns %d", zone->watermap->InLava(position));
|
|
|
|
}
|
|
else {
|
|
z = c->GetZ();
|
|
auto position = glm::vec3(c->GetX(), c->GetY(), z);
|
|
RegionType = zone->watermap->ReturnRegionType(position);
|
|
c->Message(Chat::White, "InWater returns %d", zone->watermap->InWater(position));
|
|
c->Message(Chat::White, "InLava returns %d", zone->watermap->InLava(position));
|
|
|
|
}
|
|
|
|
switch (RegionType) {
|
|
case RegionTypeNormal: {
|
|
c->Message(Chat::White, "There is nothing special about the region you are in!");
|
|
break;
|
|
}
|
|
case RegionTypeWater: {
|
|
c->Message(Chat::White, "You/your target are in Water.");
|
|
break;
|
|
}
|
|
case RegionTypeLava: {
|
|
c->Message(Chat::White, "You/your target are in Lava.");
|
|
break;
|
|
}
|
|
case RegionTypeVWater: {
|
|
c->Message(Chat::White, "You/your target are in VWater (Icy Water?).");
|
|
break;
|
|
}
|
|
case RegionTypePVP: {
|
|
c->Message(Chat::White, "You/your target are in a pvp enabled area.");
|
|
break;
|
|
}
|
|
case RegionTypeSlime: {
|
|
c->Message(Chat::White, "You/your target are in slime.");
|
|
break;
|
|
}
|
|
case RegionTypeIce: {
|
|
c->Message(Chat::White, "You/your target are in ice.");
|
|
break;
|
|
}
|
|
default:
|
|
c->Message(Chat::White, "You/your target are in an unknown region type.");
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|