mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
* basic evolving items framework created * Implement evolving tab in the inventory window * Implement experience and number of kills * Move zone evolving map to a evolvingitemsmanager class * rework gm commands * rework GetInventory * wip * wip loot testing * Fix Duplicate Message * reworked evolving item looting, swapping, etc * reworked const functions for evolving methods * Functioning Player Trade of evolving items test item_id is 89550 * First pass of Final Result link working * First pass of item upgrading when reaching 100% * Add strings and logic for displaying the evolving item xp transfer window in Corathus * Prototype of xp transfer window sending items * WIP for evolve xp transfer * WIP for evolve xp transfer. First tests passed * XP Transfer Cleanup * XP Transfer Cleanup * Add Rule for evolving items equip timer/ default is 30 secs * Add logging and player events Add logging and player events * Formatting * Database updates * Updates for linux build * Perl/Cleanup * Command cleanup * Lua * Added a crash condition check if final item id is blank or not found. * Review Changes Updates to resolve review comments and a rebase. * migrate to content_db for items_evolving_details migrate to content_db for items_evolving_details * Simplify, don't hit database unless evolving * Update 2025_01_19_items_evolving_details.sql * Update client.cpp * Update manifest with items_evolving_details * character_id vs char_id * Remove _Struct from structs * Remove license header in evolving.cpp * Move evolving constants from eq_constants.h to evolving.h since it is more specific * Update database_schema.h * General cleanup * Be more specific with `evolving_items` vs `evolving` --------- Co-authored-by: Kinglykrab <kinglykrab@gmail.com> Co-authored-by: Akkadius <akkadius1@gmail.com>
68 lines
2.3 KiB
C++
68 lines
2.3 KiB
C++
#ifndef EVOLVING_H
|
|
#define EVOLVING_H
|
|
|
|
#include "shareddb.h"
|
|
#include "events/player_events.h"
|
|
#include "repositories/items_evolving_details_repository.h"
|
|
|
|
namespace EQ {
|
|
class ItemInstance;
|
|
}
|
|
|
|
namespace EvolvingItems {
|
|
namespace Actions {
|
|
constexpr int8 UPDATE_ITEMS = 0;
|
|
constexpr int8 TRANSFER_WINDOW_OPEN = 1;
|
|
constexpr int8 TRANSFER_WINDOW_DETAILS = 2;
|
|
constexpr int8 TRANSFER_XP = 3;
|
|
constexpr int8 FINAL_RESULT = 4;
|
|
}
|
|
|
|
namespace Types {
|
|
constexpr int8 AMOUNT_OF_EXP = 1;
|
|
constexpr int8 NUMBER_OF_KILLS = 2;
|
|
constexpr int8 SPECIFIC_MOB_RACE = 3;
|
|
constexpr int8 SPECIFIC_ZONE_ID = 4;
|
|
}
|
|
|
|
namespace SubTypes {
|
|
constexpr int8 ALL_EXP = 0;
|
|
constexpr int8 SOLO_EXP = 1;
|
|
constexpr int8 GROUP_EXP = 2;
|
|
constexpr int8 RAID_EXP = 3;
|
|
}
|
|
}
|
|
|
|
class EvolvingItemsManager
|
|
{
|
|
public:
|
|
EvolvingItemsManager();
|
|
void SetDatabase(Database *db);
|
|
void SetContentDatabase(Database *db);
|
|
|
|
void LoadEvolvingItems() const;
|
|
void DoLootChecks(uint32 char_id, uint16 slot_id, const EQ::ItemInstance &inst) const;
|
|
uint32 GetFinalItemID(const EQ::ItemInstance &inst) const;
|
|
uint32 GetNextEvolveItemID(const EQ::ItemInstance &inst) const;
|
|
uint32 GetFirstItemInLoreGroup(uint32 lore_id);
|
|
uint32 GetFirstItemInLoreGroupByItemID(uint32 item_id);
|
|
uint64 GetTotalEarnedXP(const EQ::ItemInstance &inst);
|
|
static double CalculateProgression(uint64 current_amount, uint32 item_id);
|
|
static void LoadPlayerEvent(const EQ::ItemInstance &inst, PlayerEvent::EvolveItem &e);
|
|
|
|
ItemsEvolvingDetailsRepository::ItemsEvolvingDetails GetEvolveItemDetails(uint64 id);
|
|
EvolveTransfer DetermineTransferResults(const EQ::ItemInstance& inst_from, const EQ::ItemInstance& inst_to);
|
|
EvolveGetNextItem GetNextItemByXP(const EQ::ItemInstance &inst_in, int64 in_xp);
|
|
std::map<uint32, ItemsEvolvingDetailsRepository::ItemsEvolvingDetails>& GetEvolvingItemsCache() { return evolving_items_cache; }
|
|
std::vector<ItemsEvolvingDetailsRepository::ItemsEvolvingDetails> GetEvolveIDItems(uint32 evolve_id);
|
|
|
|
private:
|
|
std::map<uint32, ItemsEvolvingDetailsRepository::ItemsEvolvingDetails> evolving_items_cache;
|
|
Database * m_db;
|
|
Database * m_content_db;
|
|
};
|
|
|
|
extern EvolvingItemsManager evolving_items_manager;
|
|
|
|
#endif //EVOLVING_H
|