mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-10 15:00:25 +00:00
Move worldserver logging ot use LogInfo
This commit is contained in:
+72
-72
@@ -158,7 +158,7 @@ void Client::SendEnterWorld(std::string name)
|
||||
eqs->Close();
|
||||
return;
|
||||
} else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Telling client to continue session.");
|
||||
LogInfo("Telling client to continue session");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +204,7 @@ void Client::SendCharInfo() {
|
||||
QueuePacket(outapp);
|
||||
}
|
||||
else {
|
||||
Log(Logs::General, Logs::WorldServer, "[Error] Database did not return an OP_SendCharInfo packet for account %u", GetAccountID());
|
||||
LogInfo("[Error] Database did not return an OP_SendCharInfo packet for account [{}]", GetAccountID());
|
||||
}
|
||||
safe_delete(outapp);
|
||||
}
|
||||
@@ -411,7 +411,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
|
||||
LogDebug("Receiving Login Info Packet from Client | name [{0}] password [{1}]", name, password);
|
||||
|
||||
if (strlen(password) <= 1) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Login without a password");
|
||||
LogInfo("Login without a password");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -483,7 +483,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Bad/Expired session key '%s'", name);
|
||||
LogInfo("Bad/Expired session key [{}]", name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -491,7 +491,7 @@ bool Client::HandleSendLoginInfoPacket(const EQApplicationPacket *app)
|
||||
bool Client::HandleNameApprovalPacket(const EQApplicationPacket *app)
|
||||
{
|
||||
if (GetAccountID() == 0) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Name approval request with no logged in account");
|
||||
LogInfo("Name approval request with no logged in account");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -499,7 +499,7 @@ bool Client::HandleNameApprovalPacket(const EQApplicationPacket *app)
|
||||
uchar race = app->pBuffer[64];
|
||||
uchar clas = app->pBuffer[68];
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Name approval request. Name=%s, race=%s, class=%s", char_name, GetRaceIDName(race), GetClassIDName(clas));
|
||||
LogInfo("Name approval request. Name=[{}], race=[{}], class=[{}]", char_name, GetRaceIDName(race), GetClassIDName(clas));
|
||||
|
||||
EQApplicationPacket *outapp;
|
||||
outapp = new EQApplicationPacket;
|
||||
@@ -660,11 +660,11 @@ bool Client::HandleCharacterCreateRequestPacket(const EQApplicationPacket *app)
|
||||
|
||||
bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) {
|
||||
if (GetAccountID() == 0) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Account ID not set; unable to create character.");
|
||||
LogInfo("Account ID not set; unable to create character");
|
||||
return false;
|
||||
}
|
||||
else if (app->size != sizeof(CharCreate_Struct)) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Wrong size on OP_CharacterCreate. Got: %d, Expected: %d", app->size, sizeof(CharCreate_Struct));
|
||||
LogInfo("Wrong size on OP_CharacterCreate. Got: [{}], Expected: [{}]", app->size, sizeof(CharCreate_Struct));
|
||||
DumpPacket(app);
|
||||
// the previous behavior was essentially returning true here
|
||||
// but that seems a bit odd to me.
|
||||
@@ -691,14 +691,14 @@ bool Client::HandleCharacterCreatePacket(const EQApplicationPacket *app) {
|
||||
|
||||
bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
if (GetAccountID() == 0) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Enter world with no logged in account");
|
||||
LogInfo("Enter world with no logged in account");
|
||||
eqs->Close();
|
||||
return true;
|
||||
}
|
||||
|
||||
if(GetAdmin() < 0)
|
||||
{
|
||||
Log(Logs::Detail, Logs::WorldServer, "Account banned or suspended.");
|
||||
LogInfo("Account banned or suspended");
|
||||
eqs->Close();
|
||||
return true;
|
||||
}
|
||||
@@ -714,14 +714,14 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
uint32 tmpaccid = 0;
|
||||
charid = database.GetCharacterInfo(char_name, &tmpaccid, &zone_id, &instance_id);
|
||||
if (charid == 0 || tmpaccid != GetAccountID()) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Could not get CharInfo for '%s'", char_name);
|
||||
LogInfo("Could not get CharInfo for [{}]", char_name);
|
||||
eqs->Close();
|
||||
return true;
|
||||
}
|
||||
|
||||
// Make sure this account owns this character
|
||||
if (tmpaccid != GetAccountID()) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "This account does not own the character named '%s'", char_name);
|
||||
LogInfo("This account does not own the character named [{}]", char_name);
|
||||
eqs->Close();
|
||||
return true;
|
||||
}
|
||||
@@ -763,7 +763,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
zone_id = database.MoveCharacterToBind(charid, 4);
|
||||
}
|
||||
else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "'%s' is trying to go home before they're able...", char_name);
|
||||
LogInfo("[{}] is trying to go home before they're able", char_name);
|
||||
database.SetHackerFlag(GetAccountName(), char_name, "MQGoHome: player tried to go home before they were able.");
|
||||
eqs->Close();
|
||||
return true;
|
||||
@@ -787,7 +787,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
database.MoveCharacterToZone(charid, database.GetZoneName(zone_id));
|
||||
}
|
||||
else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "'%s' is trying to go to tutorial but are not allowed...", char_name);
|
||||
LogInfo("[{}] is trying to go to tutorial but are not allowed", char_name);
|
||||
database.SetHackerFlag(GetAccountName(), char_name, "MQTutorial: player tried to enter the tutorial without having tutorial enabled for this character.");
|
||||
eqs->Close();
|
||||
return true;
|
||||
@@ -798,7 +798,7 @@ bool Client::HandleEnterWorldPacket(const EQApplicationPacket *app) {
|
||||
if (zone_id == 0 || !database.GetZoneName(zone_id)) {
|
||||
// This is to save people in an invalid zone, once it's removed from the DB
|
||||
database.MoveCharacterToZone(charid, "arena");
|
||||
Log(Logs::Detail, Logs::WorldServer, "Zone not found in database zone_id=%i, moveing char to arena character:%s", zone_id, char_name);
|
||||
LogInfo("Zone not found in database zone_id=[{}], moveing char to arena character:[{}]", zone_id, char_name);
|
||||
}
|
||||
|
||||
if(instance_id > 0)
|
||||
@@ -943,7 +943,7 @@ bool Client::HandleDeleteCharacterPacket(const EQApplicationPacket *app) {
|
||||
|
||||
uint32 char_acct_id = database.GetAccountIDByChar((char*)app->pBuffer);
|
||||
if(char_acct_id == GetAccountID()) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Delete character: %s", app->pBuffer);
|
||||
LogInfo("Delete character: [{}]", app->pBuffer);
|
||||
database.DeleteCharacter((char *)app->pBuffer);
|
||||
SendCharInfo();
|
||||
}
|
||||
@@ -964,24 +964,24 @@ bool Client::HandlePacket(const EQApplicationPacket *app) {
|
||||
|
||||
EmuOpcode opcode = app->GetOpcode();
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Recevied EQApplicationPacket");
|
||||
LogNetcode("Received EQApplicationPacket [{:#04x}]", opcode);
|
||||
|
||||
if (!eqs->CheckState(ESTABLISHED)) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Client disconnected (net inactive on send)");
|
||||
LogInfo("Client disconnected (net inactive on send)");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Voidd: Anti-GM Account hack, Checks source ip against valid GM Account IP Addresses
|
||||
if (RuleB(World, GMAccountIPList) && this->GetAdmin() >= (RuleI(World, MinGMAntiHackStatus))) {
|
||||
if(!database.CheckGMIPs(long2ip(this->GetIP()).c_str(), this->GetAccountID())) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "GM Account not permited from source address %s and accountid %i", long2ip(this->GetIP()).c_str(), this->GetAccountID());
|
||||
LogInfo("GM Account not permited from source address [{}] and accountid [{}]", long2ip(this->GetIP()).c_str(), this->GetAccountID());
|
||||
eqs->Close();
|
||||
}
|
||||
}
|
||||
|
||||
if (GetAccountID() == 0 && opcode != OP_SendLoginInfo) {
|
||||
// Got a packet other than OP_SendLoginInfo when not logged in
|
||||
Log(Logs::Detail, Logs::WorldServer, "Expecting OP_SendLoginInfo, got %s", OpcodeNames[opcode]);
|
||||
LogInfo("Expecting OP_SendLoginInfo, got [{}]", OpcodeNames[opcode]);
|
||||
return false;
|
||||
}
|
||||
else if (opcode == OP_AckPacket) {
|
||||
@@ -1060,7 +1060,7 @@ bool Client::HandlePacket(const EQApplicationPacket *app) {
|
||||
}
|
||||
default:
|
||||
{
|
||||
Log(Logs::Detail, Logs::WorldServer, "Received unknown EQApplicationPacket");
|
||||
LogNetcode("Received unknown EQApplicationPacket");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1078,7 +1078,7 @@ bool Client::Process() {
|
||||
to.sin_addr.s_addr = ip;
|
||||
|
||||
if (autobootup_timeout.Check()) {
|
||||
Log(Logs::General, Logs::WorldServer, "Zone bootup timer expired, bootup failed or too slow.");
|
||||
LogInfo("Zone bootup timer expired, bootup failed or too slow");
|
||||
TellClientZoneUnavailable();
|
||||
}
|
||||
|
||||
@@ -1112,7 +1112,7 @@ bool Client::Process() {
|
||||
loginserverlist.SendPacket(pack);
|
||||
safe_delete(pack);
|
||||
}
|
||||
Log(Logs::Detail, Logs::WorldServer, "Client disconnected (not active in process)");
|
||||
LogInfo("Client disconnected (not active in process)");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1168,17 +1168,17 @@ void Client::EnterWorld(bool TryBootup) {
|
||||
}
|
||||
else {
|
||||
if (TryBootup) {
|
||||
Log(Logs::General, Logs::WorldServer, "Attempting autobootup of %s (%d:%d)", zone_name, zone_id, instance_id);
|
||||
LogInfo("Attempting autobootup of [{}] ([{}]:[{}])", zone_name, zone_id, instance_id);
|
||||
autobootup_timeout.Start();
|
||||
zone_waiting_for_bootup = zoneserver_list.TriggerBootup(zone_id, instance_id);
|
||||
if (zone_waiting_for_bootup == 0) {
|
||||
Log(Logs::General, Logs::WorldServer, "No zoneserver available to boot up.");
|
||||
LogInfo("No zoneserver available to boot up");
|
||||
TellClientZoneUnavailable();
|
||||
}
|
||||
return;
|
||||
}
|
||||
else {
|
||||
Log(Logs::General, Logs::WorldServer, "Requested zone %s is not running.", zone_name);
|
||||
LogInfo("Requested zone [{}] is not running", zone_name);
|
||||
TellClientZoneUnavailable();
|
||||
return;
|
||||
}
|
||||
@@ -1187,7 +1187,7 @@ void Client::EnterWorld(bool TryBootup) {
|
||||
zone_waiting_for_bootup = 0;
|
||||
|
||||
if (GetAdmin() < 80 && zoneserver_list.IsZoneLocked(zone_id)) {
|
||||
Log(Logs::General, Logs::WorldServer, "Enter world failed. Zone is locked.");
|
||||
LogInfo("Enter world failed. Zone is locked");
|
||||
TellClientZoneUnavailable();
|
||||
return;
|
||||
}
|
||||
@@ -1243,9 +1243,9 @@ void Client::Clearance(int8 response)
|
||||
{
|
||||
if (zs == 0)
|
||||
{
|
||||
Log(Logs::Detail, Logs::WorldServer, "Unable to find zoneserver in Client::Clearance!!");
|
||||
LogInfo("Unable to find zoneserver in Client::Clearance!!");
|
||||
} else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Invalid response %d in Client::Clearance", response);
|
||||
LogInfo("Invalid response [{}] in Client::Clearance", response);
|
||||
}
|
||||
|
||||
TellClientZoneUnavailable();
|
||||
@@ -1255,20 +1255,20 @@ void Client::Clearance(int8 response)
|
||||
EQApplicationPacket* outapp;
|
||||
|
||||
if (zs->GetCAddress() == nullptr) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Unable to do zs->GetCAddress() in Client::Clearance!!");
|
||||
LogInfo("Unable to do zs->GetCAddress() in Client::Clearance!!");
|
||||
TellClientZoneUnavailable();
|
||||
return;
|
||||
}
|
||||
|
||||
if (zone_id == 0) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "zoneID is nullptr in Client::Clearance!!");
|
||||
LogInfo("zoneID is nullptr in Client::Clearance!!");
|
||||
TellClientZoneUnavailable();
|
||||
return;
|
||||
}
|
||||
|
||||
const char* zonename = database.GetZoneName(zone_id);
|
||||
if (zonename == 0) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "zonename is nullptr in Client::Clearance!!");
|
||||
LogInfo("zonename is nullptr in Client::Clearance!!");
|
||||
TellClientZoneUnavailable();
|
||||
return;
|
||||
}
|
||||
@@ -1292,10 +1292,10 @@ void Client::Clearance(int8 response)
|
||||
|
||||
if(strcmp(zs_addr, "127.0.0.1") == 0)
|
||||
{
|
||||
Log(Logs::Detail, Logs::WorldServer, "Local zone address was %s, setting local address to: %s", zs_addr, WorldConfig::get()->LocalAddress.c_str());
|
||||
LogInfo("Local zone address was [{}], setting local address to: [{}]", zs_addr, WorldConfig::get()->LocalAddress.c_str());
|
||||
zs_addr = WorldConfig::get()->LocalAddress.c_str();
|
||||
} else {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Local zone address %s", zs_addr);
|
||||
LogInfo("Local zone address [{}]", zs_addr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1310,7 +1310,7 @@ void Client::Clearance(int8 response)
|
||||
|
||||
strcpy(zsi->ip, zs_addr);
|
||||
zsi->port =zs->GetCPort();
|
||||
Log(Logs::Detail, Logs::WorldServer, "Sending client to zone %s (%d:%d) at %s:%d", zonename, zone_id, instance_id, zsi->ip, zsi->port);
|
||||
LogInfo("Sending client to zone [{}] ([{}]:[{}]) at [{}]:[{}]", zonename, zone_id, instance_id, zsi->ip, zsi->port);
|
||||
QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
|
||||
@@ -1342,7 +1342,7 @@ bool Client::GenPassKey(char* key) {
|
||||
}
|
||||
|
||||
void Client::QueuePacket(const EQApplicationPacket* app, bool ack_req) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Sending EQApplicationPacket OpCode 0x%04x", app->GetOpcode());
|
||||
LogInfo("Sending EQApplicationPacket OpCode {:#04x}", app->GetOpcode());
|
||||
|
||||
ack_req = true; // It's broke right now, dont delete this line till fix it. =P
|
||||
eqs->QueuePacket(app, ack_req);
|
||||
@@ -1430,27 +1430,27 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc)
|
||||
|
||||
in.s_addr = GetIP();
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Character creation request from %s LS#%d (%s:%d) : ", GetCLE()->LSName(), GetCLE()->LSID(), inet_ntoa(in), GetPort());
|
||||
Log(Logs::Detail, Logs::WorldServer, "Name: %s", name);
|
||||
LogInfo("Character creation request from [{}] LS#[{}] ([{}]:[{}]) : ", GetCLE()->LSName(), GetCLE()->LSID(), inet_ntoa(in), GetPort());
|
||||
LogInfo("Name: [{}]", name);
|
||||
Log(Logs::Detail, Logs::WorldServer, "Race: %d Class: %d Gender: %d Deity: %d Start zone: %d Tutorial: %s",
|
||||
cc->race, cc->class_, cc->gender, cc->deity, cc->start_zone, cc->tutorial ? "true" : "false");
|
||||
Log(Logs::Detail, Logs::WorldServer, "STR STA AGI DEX WIS INT CHA Total");
|
||||
LogInfo("STR STA AGI DEX WIS INT CHA Total");
|
||||
Log(Logs::Detail, Logs::WorldServer, "%3d %3d %3d %3d %3d %3d %3d %3d",
|
||||
cc->STR, cc->STA, cc->AGI, cc->DEX, cc->WIS, cc->INT, cc->CHA,
|
||||
stats_sum);
|
||||
Log(Logs::Detail, Logs::WorldServer, "Face: %d Eye colors: %d %d", cc->face, cc->eyecolor1, cc->eyecolor2);
|
||||
Log(Logs::Detail, Logs::WorldServer, "Hairstyle: %d Haircolor: %d", cc->hairstyle, cc->haircolor);
|
||||
Log(Logs::Detail, Logs::WorldServer, "Beard: %d Beardcolor: %d", cc->beard, cc->beardcolor);
|
||||
LogInfo("Face: [{}] Eye colors: [{}] [{}]", cc->face, cc->eyecolor1, cc->eyecolor2);
|
||||
LogInfo("Hairstyle: [{}] Haircolor: [{}]", cc->hairstyle, cc->haircolor);
|
||||
LogInfo("Beard: [{}] Beardcolor: [{}]", cc->beard, cc->beardcolor);
|
||||
|
||||
/* Validate the char creation struct */
|
||||
if (m_ClientVersionBit & EQEmu::versions::maskSoFAndLater) {
|
||||
if (!CheckCharCreateInfoSoF(cc)) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "CheckCharCreateInfo did not validate the request (bad race/class/stats)");
|
||||
LogInfo("CheckCharCreateInfo did not validate the request (bad race/class/stats)");
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!CheckCharCreateInfoTitanium(cc)) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "CheckCharCreateInfo did not validate the request (bad race/class/stats)");
|
||||
LogInfo("CheckCharCreateInfo did not validate the request (bad race/class/stats)");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1512,14 +1512,14 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc)
|
||||
|
||||
/* If it is an SoF Client and the SoF Start Zone rule is set, send new chars there */
|
||||
if (m_ClientVersionBit & EQEmu::versions::maskSoFAndLater) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Found 'SoFStartZoneID' rule setting: %i", RuleI(World, SoFStartZoneID));
|
||||
LogInfo("Found 'SoFStartZoneID' rule setting: [{}]", RuleI(World, SoFStartZoneID));
|
||||
if (RuleI(World, SoFStartZoneID) > 0) {
|
||||
pp.zone_id = RuleI(World, SoFStartZoneID);
|
||||
cc->start_zone = pp.zone_id;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Log(Logs::General, Logs::WorldServer, "Found 'TitaniumStartZoneID' rule setting: %i", RuleI(World, TitaniumStartZoneID));
|
||||
LogInfo("Found 'TitaniumStartZoneID' rule setting: [{}]", RuleI(World, TitaniumStartZoneID));
|
||||
if (RuleI(World, TitaniumStartZoneID) > 0) { /* if there's a startzone variable put them in there */
|
||||
|
||||
pp.zone_id = RuleI(World, TitaniumStartZoneID);
|
||||
@@ -1592,10 +1592,10 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc)
|
||||
// now we give the pp and the inv we made to StoreCharacter
|
||||
// to see if we can store it
|
||||
if (!database.StoreCharacter(GetAccountID(), &pp, &inv)) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Character creation failed: %s", pp.name);
|
||||
LogInfo("Character creation failed: [{}]", pp.name);
|
||||
return false;
|
||||
}
|
||||
Log(Logs::Detail, Logs::WorldServer, "Character creation successful: %s", pp.name);
|
||||
LogInfo("Character creation successful: [{}]", pp.name);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1605,7 +1605,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc)
|
||||
if (!cc)
|
||||
return false;
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Validating char creation info...");
|
||||
LogInfo("Validating char creation info");
|
||||
|
||||
RaceClassCombos class_combo;
|
||||
bool found = false;
|
||||
@@ -1622,7 +1622,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc)
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Could not find class/race/deity/start_zone combination");
|
||||
LogInfo("Could not find class/race/deity/start_zone combination");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1639,7 +1639,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc)
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Could not find starting stats for selected character combo, cannot verify stats");
|
||||
LogInfo("Could not find starting stats for selected character combo, cannot verify stats");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1652,37 +1652,37 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc)
|
||||
allocation.DefaultPointAllocation[6];
|
||||
|
||||
if (cc->STR > allocation.BaseStats[0] + max_stats || cc->STR < allocation.BaseStats[0]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Strength out of range");
|
||||
LogInfo("Strength out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->DEX > allocation.BaseStats[1] + max_stats || cc->DEX < allocation.BaseStats[1]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Dexterity out of range");
|
||||
LogInfo("Dexterity out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->AGI > allocation.BaseStats[2] + max_stats || cc->AGI < allocation.BaseStats[2]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Agility out of range");
|
||||
LogInfo("Agility out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->STA > allocation.BaseStats[3] + max_stats || cc->STA < allocation.BaseStats[3]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Stamina out of range");
|
||||
LogInfo("Stamina out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->INT > allocation.BaseStats[4] + max_stats || cc->INT < allocation.BaseStats[4]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Intelligence out of range");
|
||||
LogInfo("Intelligence out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->WIS > allocation.BaseStats[5] + max_stats || cc->WIS < allocation.BaseStats[5]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Wisdom out of range");
|
||||
LogInfo("Wisdom out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cc->CHA > allocation.BaseStats[6] + max_stats || cc->CHA < allocation.BaseStats[6]) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Charisma out of range");
|
||||
LogInfo("Charisma out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1695,7 +1695,7 @@ bool CheckCharCreateInfoSoF(CharCreate_Struct *cc)
|
||||
current_stats += cc->WIS - allocation.BaseStats[5];
|
||||
current_stats += cc->CHA - allocation.BaseStats[6];
|
||||
if (current_stats > max_stats) {
|
||||
Log(Logs::Detail, Logs::WorldServer, "Current Stats > Maximum Stats");
|
||||
LogInfo("Current Stats > Maximum Stats");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1776,7 +1776,7 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc)
|
||||
if (!cc)
|
||||
return false;
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Validating char creation info...");
|
||||
LogInfo("Validating char creation info");
|
||||
|
||||
classtemp = cc->class_ - 1;
|
||||
racetemp = cc->race - 1;
|
||||
@@ -1789,16 +1789,16 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc)
|
||||
// if out of range looking it up in the table would crash stuff
|
||||
// so we return from these
|
||||
if (classtemp >= PLAYER_CLASS_COUNT) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " class is out of range");
|
||||
LogInfo(" class is out of range");
|
||||
return false;
|
||||
}
|
||||
if (racetemp >= _TABLE_RACES) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " race is out of range");
|
||||
LogInfo(" race is out of range");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ClassRaceLookupTable[classtemp][racetemp]) { //Lookup table better than a bunch of ifs?
|
||||
Log(Logs::Detail, Logs::WorldServer, " invalid race/class combination");
|
||||
LogInfo(" invalid race/class combination");
|
||||
// we return from this one, since if it's an invalid combination our table
|
||||
// doesn't have meaningful values for the stats
|
||||
return false;
|
||||
@@ -1826,43 +1826,43 @@ bool CheckCharCreateInfoTitanium(CharCreate_Struct *cc)
|
||||
// that are messed up not just the first hit
|
||||
|
||||
if (bTOTAL + stat_points != cTOTAL) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat points total doesn't match expected value: expecting %d got %d", bTOTAL + stat_points, cTOTAL);
|
||||
LogInfo(" stat points total doesn't match expected value: expecting [{}] got [{}]", bTOTAL + stat_points, cTOTAL);
|
||||
Charerrors++;
|
||||
}
|
||||
|
||||
if (cc->STR > bSTR + stat_points || cc->STR < bSTR) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat STR is out of range");
|
||||
LogInfo(" stat STR is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->STA > bSTA + stat_points || cc->STA < bSTA) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat STA is out of range");
|
||||
LogInfo(" stat STA is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->AGI > bAGI + stat_points || cc->AGI < bAGI) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat AGI is out of range");
|
||||
LogInfo(" stat AGI is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->DEX > bDEX + stat_points || cc->DEX < bDEX) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat DEX is out of range");
|
||||
LogInfo(" stat DEX is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->WIS > bWIS + stat_points || cc->WIS < bWIS) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat WIS is out of range");
|
||||
LogInfo(" stat WIS is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->INT > bINT + stat_points || cc->INT < bINT) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat INT is out of range");
|
||||
LogInfo(" stat INT is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
if (cc->CHA > bCHA + stat_points || cc->CHA < bCHA) {
|
||||
Log(Logs::Detail, Logs::WorldServer, " stat CHA is out of range");
|
||||
LogInfo(" stat CHA is out of range");
|
||||
Charerrors++;
|
||||
}
|
||||
|
||||
/*TODO: Check for deity/class/race.. it'd be nice, but probably of any real use to hack(faction, deity based items are all I can think of)
|
||||
I am NOT writing those tables - kathgar*/
|
||||
|
||||
Log(Logs::Detail, Logs::WorldServer, "Found %d errors in character creation request", Charerrors);
|
||||
LogInfo("Found [{}] errors in character creation request", Charerrors);
|
||||
|
||||
return Charerrors == 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user