LDON tweaks, working branch, average_level pass

This commit is contained in:
Akkadius 2021-02-09 23:57:31 -06:00
parent 10ffcf155d
commit aff1223181
9 changed files with 75 additions and 12 deletions

View File

@ -121,6 +121,7 @@ namespace Logs {
Expeditions,
DynamicZones,
Group,
Adventure,
MaxCategoryID /* Don't Remove this */
};
@ -201,6 +202,7 @@ namespace Logs {
"Expeditions",
"DynamicZones",
"Group",
"Adventure",
};
}

View File

@ -636,6 +636,16 @@
OutF(LogSys, Logs::Detail, Logs::DynamicZones, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
} while (0)
#define LogAdventure(message, ...) do {\
if (LogSys.log_settings[Logs::Adventure].is_category_enabled == 1)\
OutF(LogSys, Logs::General, Logs::Adventure, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
} while (0)
#define LogAdventureDetail(message, ...) do {\
if (LogSys.log_settings[Logs::Adventure].is_category_enabled == 1)\
OutF(LogSys, Logs::Detail, Logs::Adventure, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\
} while (0)
#define Log(debug_level, log_category, message, ...) do {\
if (LogSys.log_settings[log_category].is_category_enabled == 1)\
LogSys.Out(debug_level, log_category, __FILE__, __func__, __LINE__, message, ##__VA_ARGS__);\

View File

@ -26,6 +26,7 @@ Adventure::Adventure(AdventureTemplate *t)
count = 0;
assassination_count = 0;
instance_id = 0;
}
Adventure::Adventure(AdventureTemplate *t, int count, int assassination_count, AdventureStatus status, uint16 instance_id, uint32 time_left)
@ -425,3 +426,13 @@ void Adventure::MoveCorpsesToGraveyard()
}
}
int Adventure::GetAverageLevel() const
{
return average_level;
}
void Adventure::SetAverageLevel(int average_level)
{
Adventure::average_level = average_level;
}

View File

@ -87,6 +87,8 @@ public:
int GetCount() const { return count; }
int GetAssassinationCount() const { return assassination_count; }
uint32 GetRemainingTime() const { if(current_timer) { return (current_timer->GetRemainingTime() / 1000); } else { return 0; } }
int GetAverageLevel() const;
void SetAverageLevel(int average_level);
protected:
int id;
int count;
@ -96,6 +98,8 @@ protected:
std::list<std::string> players;
Timer *current_timer;
int instance_id;
int average_level;
};
#endif

View File

@ -337,6 +337,10 @@ void AdventureManager::CalculateAdventureRequestReply(const char *data)
sra->theme = sar->template_id;
sra->id = (*ea_iter)->id;
sra->member_count = sar->member_count;
sra->average_level = avg_level;
LogAdventure("[AdventureManager::CalculateAdventureRequestReply] Adventure average level [{}]", avg_level);
memcpy((pack->pBuffer + sizeof(ServerAdventureRequestAccept_Struct)), (data + sizeof(ServerAdventureRequest_Struct)), (sar->member_count * 64));
zoneserver_list.SendPacket(leader->zone(), leader->instance(), pack);
delete pack;
@ -442,6 +446,8 @@ void AdventureManager::TryAdventureCreate(const char *data)
}
}
adv->SetAverageLevel(src->average_level);
adventure_list.push_back(adv);
}
@ -936,6 +942,10 @@ void AdventureManager::GetZoneData(uint16 instance_id)
zd->dest_y = temp->dest_y;
zd->dest_z = temp->dest_z;
zd->dest_h = temp->dest_h;
zd->average_level = current->GetAverageLevel();
LogAdventure("[AdventureManager::GetZoneData] Adventure average level [{}]", zd->average_level);
zoneserver_list.SendPacket(0, instance_id, pack);
delete pack;
}

View File

@ -325,6 +325,7 @@ Client::Client(EQStreamInterface* ieqs)
adv_requested_theme = 0;
adv_requested_id = 0;
adv_requested_member_count = 0;
adv_requested_avg_lvl = 0;
for(int i = 0; i < XTARGET_HARDCAP; ++i)
{
@ -5985,18 +5986,24 @@ void Client::SendAdventureCount(uint32 count, uint32 total)
FastQueuePacket(&outapp);
}
void Client::NewAdventure(int id, int theme, const char *text, int member_count, const char *members)
void Client::NewAdventure(int id, int theme, const char *text, int member_count, const char *members, uint32 avg_level)
{
size_t text_size = strlen(text);
auto outapp = new EQApplicationPacket(OP_AdventureDetails, text_size + 2);
strn0cpy((char*)outapp->pBuffer, text, text_size);
FastQueuePacket(&outapp);
adv_requested_id = id;
adv_requested_id = id;
adv_requested_theme = theme;
safe_delete_array(adv_requested_data);
adv_requested_member_count = member_count;
adv_requested_data = new char[64 * member_count];
adv_requested_avg_lvl = avg_level;
adv_requested_data = new char[64 * member_count];
LogAdventure("[Client::NewAdventure] Adventure average level [{}]", adv_requested_avg_lvl);
memcpy(adv_requested_data, members, (64 * member_count));
}

View File

@ -1270,7 +1270,7 @@ public:
void SendAdventureError(const char *error);
void SendAdventureDetails();
void SendAdventureCount(uint32 count, uint32 total);
void NewAdventure(int id, int theme, const char *text, int member_count, const char *members);
void NewAdventure(int id, int theme, const char *text, int member_count, const char *members, uint32 avg_level);
bool IsOnAdventure();
void LeaveAdventure();
void AdventureFinish(bool win, int theme, int points);
@ -1613,6 +1613,7 @@ protected:
int adv_requested_theme;
int adv_requested_id;
char *adv_requested_data;
uint32 adv_requested_avg_lvl;
int adv_requested_member_count;
char *adv_data;

View File

@ -9037,14 +9037,21 @@ void Client::Handle_OP_LDoNButton(const EQApplicationPacket *app)
bool* p = (bool*)app->pBuffer;
if (*p == true)
{
auto pack =
new ServerPacket(ServerOP_AdventureRequestCreate,
sizeof(ServerAdventureRequestCreate_Struct) + (64 * adv_requested_member_count));
ServerAdventureRequestCreate_Struct *sac = (ServerAdventureRequestCreate_Struct*)pack->pBuffer;
auto pack = new ServerPacket(
ServerOP_AdventureRequestCreate,
sizeof(ServerAdventureRequestCreate_Struct) +
(64 * adv_requested_member_count));
ServerAdventureRequestCreate_Struct *sac = (ServerAdventureRequestCreate_Struct *) pack->pBuffer;
strcpy(sac->leader, GetName());
sac->id = adv_requested_id;
sac->theme = adv_requested_theme;
sac->member_count = adv_requested_member_count;
sac->id = adv_requested_id;
sac->theme = adv_requested_theme;
sac->member_count = adv_requested_member_count;
sac->average_level = adv_requested_avg_lvl;
LogAdventure("[Client::Handle_OP_LDoNButton] Adventure average level [{}]", sac->average_level);
memcpy((pack->pBuffer + sizeof(ServerAdventureRequestCreate_Struct)), adv_requested_data, (64 * adv_requested_member_count));
worldserver.SendPacket(pack);
delete pack;

View File

@ -1688,7 +1688,16 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
Client *c = entity_list.GetClientByName(ars->leader);
if (c)
{
c->NewAdventure(ars->id, ars->theme, ars->text, ars->member_count, (const char*)(pack->pBuffer + sizeof(ServerAdventureRequestAccept_Struct)));
LogInfo("[ServerOP_AdventureRequestAccept] Adventure average level [{}]", ars->average_level);
c->NewAdventure(
ars->id,
ars->theme,
ars->text,
ars->member_count,
(const char *) (pack->pBuffer + sizeof(ServerAdventureRequestAccept_Struct)),
ars->average_level
);
c->ClearPendingAdventureRequest();
}
break;
@ -1811,6 +1820,8 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
zone->adv_data = new char[pack->size];
memcpy(zone->adv_data, pack->pBuffer, pack->size);
ServerZoneAdventureDataReply_Struct* ds = (ServerZoneAdventureDataReply_Struct*)zone->adv_data;
LogAdventure("[ServerOP_AdventureZoneData] Adventure average level [{}]", ds->average_level);
}
break;
}