11 #include "../EVEServerConfig.h"
52 sLog.Blue(
" MissionDataMgr",
"Mission Data Manager Initialized.");
68 Agent* pAgent(
nullptr);
70 std::multimap<uint32, MissionOffer>::iterator itr =
m_offers.begin();
74 pClient =
sEntityList.FindClientByCharID(itr->first);
79 if (itr->second.courierTypeID) {
81 if (pClient !=
nullptr) {
91 std::multimap<uint32, MissionOffer>::iterator itr2 =
m_aoffers.find(itr->second.agentID);
94 m_xoffers.emplace(itr->first, itr->second);
113 CourierPNG =
new PyString(
"<img src='res:/UI/netres/mission_content/couriermission.png' align=center hspace=4 vspace=4>");
114 MiningPNG =
new PyString(
"<img src='res:/UI/netres/mission_content/miningmission.png' align=center hspace=4 vspace=4>");
115 KillPNG =
new PyString(
"<img src='res:/UI/netres/mission_content/killmission.png' align=center hspace=4 vspace=4>");
133 while (res->
GetRow(row)) {
164 while (res->
GetRow(row)) {
193 sLog.Cyan(
" MissionDataMgr",
"0(0) Encounter Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
196 sLog.Cyan(
" MissionDataMgr",
"0(0) Storyline Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
199 sLog.Cyan(
" MissionDataMgr",
"0(0) Tutorial Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
202 sLog.Cyan(
" MissionDataMgr",
"0(0) Research Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
205 sLog.Cyan(
" MissionDataMgr",
"0(0) Anomic Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
208 sLog.Cyan(
" MissionDataMgr",
"0(0) Data Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
211 sLog.Cyan(
" MissionDataMgr",
"0(0) Trade Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
214 sLog.Cyan(
" MissionDataMgr",
"0(0) Burner Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
217 sLog.Cyan(
" MissionDataMgr",
"0(0) Cosmos Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
220 sLog.Cyan(
" MissionDataMgr",
"0(0) Arc Mission Data Sets loaded in %.3fms.", (
GetTimeMSeconds() - start));
225 while (res->
GetRow(row)) {
249 while (res->
GetRow(row)) {
299 if (
sConfig.server.LoadOldMissions)
301 while (res->
GetRow(row)) {
374 sLog.Cyan(
" MissionDataMgr",
"Mission Data loaded in %.3fms.", (
GetTimeMSeconds() - begin));
385 auto itr =
m_offers.equal_range(charID);
386 for (
auto it = itr.first; it != itr.second; ++it)
387 if (it->second.agentID == data.
agentID) {
393 for (
auto it = itr.first; it != itr.second; ++it)
394 if (it->second.characterID == charID) {
402 auto itr =
m_aoffers.equal_range(agentID);
403 for (
auto it = itr.first; it != itr.second; ++it)
404 data[it->second.characterID] = (it->second);
409 auto itr =
m_offers.equal_range(charID);
410 for (
auto it = itr.first; it != itr.second; ++it)
411 data.push_back(it->second);
415 if (
sConfig.server.LoadOldMissions) {
416 auto itr =
m_xoffers.equal_range(charID);
417 for (
auto it = itr.first; it != itr.second; ++it)
418 data.push_back(it->second);
453 std::vector<CourierData> cVec;
456 for (
auto it = itr.first; it != itr.second; ++it)
457 cVec.push_back(it->second);
460 for (
auto it = itr.first; it != itr.second; ++it)
461 cVec.push_back(it->second);
465 if ((cData.
raceID) and ((cData.
raceID & raceID) != raceID)) {
466 for (
auto cur :cVec) {
467 if ((cur.raceID & raceID) == raceID)
490 std::vector<CourierData> cVec;
493 for (
auto it = itr.first; it != itr.second; ++it)
494 cVec.push_back(it->second);
496 auto itr =
m_mining.equal_range(level);
497 for (
auto it = itr.first; it != itr.second; ++it)
498 cVec.push_back(it->second);
538 _log(AGENT__DEBUG,
"Created %s level %u %s offer - '%s'", (important?
"an important":
"a"), level,
GetTypeName(data.
typeID).c_str(), data.
name.c_str());
548 case Courier:
return "Courier";
549 case Trade:
return "Trade";
550 case Mining:
return "Mining";
552 case Data:
return "Data";
554 case Cosmos:
return "Cosmos";
555 case Arc:
return "Arc";
556 case Anomic:
return "Anomic";
557 case Burner:
return "Burner";
558 default:
return "Invalid";
566 case Tutorial:
return "UI/Agents/MissionTypes/Tutorial";
567 case Encounter:
return "UI/Agents/MissionTypes/Encounter";
568 case Courier:
return "UI/Agents/MissionTypes/Courier";
569 case Trade:
return "UI/Agents/MissionTypes/Trade";
570 case Mining:
return "UI/Agents/MissionTypes/Mining";
571 case Research:
return "UI/Agents/MissionTypes/Research";
572 case Data:
return "UI/Agents/MissionTypes/Data";
573 case Storyline:
return "UI/Agents/MissionTypes/Storyline";
574 case Cosmos:
return "UI/Agents/MissionTypes/Cosmos";
575 case Arc:
return "UI/Agents/MissionTypes/EpicArc";
576 case Anomic:
return "UI/Agents/MissionTypes/Anomic";
577 case Burner:
return "UI/Agents/MissionTypes/Burner";
578 default:
return "Invalid";
584 auto itr =
m_offers.equal_range(charID);
585 for (
auto it = itr.first; it != itr.second; ++it)
586 if (it->second.agentID == data.
agentID) {
592 for (
auto it = itr.first; it != itr.second; ++it)
593 if (it->second.characterID == charID) {
#define sConfig
A macro for easier access to the singleton.
std::multimap< uint32, MissionOffer > m_aoffers
std::multimap< uint32, MissionOffer > m_xoffers
std::string GetTypeLabel(uint8 typeID)
const char * GetText(uint32 index) const
void RemoveOffer(uint32 charID)
#define _log(type, fmt,...)
float GetFloat(uint32 index) const
static void RemoveMissionItem(uint32 charID, uint16 typeID, uint32 qty)
int32 GetInt(uint32 index) const
std::multimap< uint8, CourierData > m_courier
std::multimap< uint32, MissionOffer > m_offers
void LoadMissionOffers(uint32 charID, std::vector< MissionOffer > &data)
static void LoadMiningData(DBQueryResult &res)
std::multimap< uint8, MissionData > m_missionsImp
void SafeDelete(T *&p)
Deletes and nullifies a pointer.
void RemoveMissionItem(uint16 typeID, uint32 qty)
bool GetRow(DBResultRow &into)
bool GetBool(uint32 index) const
#define sLog
Evaluates to a NewLog instance.
uint32 destinationSystemID
static void LoadOpenOffers(DBQueryResult &res)
std::multimap< uint8, CourierData > m_miningImp
void CreateMissionOffer(uint8 typeID, uint8 level, uint8 raceID, bool important, MissionOffer &data)
std::multimap< uint8, CourierData > m_mining
static void LoadCourierData(DBQueryResult &res)
static void LoadClosedOffers(DBQueryResult &res)
void RemoveMissionOffer(uint32 charID, MissionOffer &data)
void AddMissionOffer(uint32 charID, MissionOffer &data)
std::multimap< uint8, CourierData > m_courierImp
uint32 destinationOwnerID
int64 MakeRandomInt(int64 low, int64 high)
Generates random integer from interval [low; high].
void UpdateMissionData(uint32 charID, MissionOffer &data)
std::multimap< uint8, MissionData > m_missions
uint32 dungeonSolarSystemID
std::map< std::string, uint32 > m_names
void SendMissionUpdate(Client *pClient, std::string action)
int64 GetInt64(uint32 index) const
std::string GetTypeName(uint8 typeID)
void LoadAgentOffers(const uint32 agentID, std::map< uint32, MissionOffer > &data)
static void UpdateMissionOffer(MissionOffer &data)
static void LoadMissionData(DBQueryResult &res)