mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 12:41:30 +00:00
We do this in GlobalLootEntry::PassesRules since we want to check if the hot zone status changes during run time Value can be null, if null it's not checked. If the value is 0 the zone must not be a hot zone (I guess one might want that) and if it's not 0, the zone must be a hot zone
63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
#ifndef GLOBAL_LOOT_MANAGER_H
|
|
#define GLOBAL_LOOT_MANAGER_H
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
class NPC;
|
|
class Client;
|
|
|
|
namespace GlobalLoot {
|
|
|
|
enum class RuleTypes {
|
|
LevelMin = 0,
|
|
LevelMax = 1,
|
|
Race = 2,
|
|
Class = 3,
|
|
BodyType = 4,
|
|
Rare = 5,
|
|
Raid = 6,
|
|
HotZone = 7,
|
|
Max
|
|
};
|
|
|
|
struct Rule {
|
|
RuleTypes type;
|
|
int value;
|
|
Rule(RuleTypes t, int v) : type(t), value(v) { }
|
|
};
|
|
|
|
};
|
|
|
|
class GlobalLootEntry {
|
|
int m_id;
|
|
int m_loottable_id;
|
|
std::string m_description;
|
|
std::vector<GlobalLoot::Rule> m_rules;
|
|
public:
|
|
GlobalLootEntry(int id, int loottable, std::string des)
|
|
: m_id(id), m_loottable_id(loottable), m_description(std::move(des))
|
|
{ }
|
|
bool PassesRules(NPC *mob) const;
|
|
inline int GetLootTableID() const { return m_loottable_id; }
|
|
inline int GetID() const { return m_id; }
|
|
inline const std::string &GetDescription() const { return m_description; }
|
|
inline void SetLootTableID(int in) { m_loottable_id = in; }
|
|
inline void SetID(int in) { m_id = in; }
|
|
inline void SetDescription(const std::string &in) { m_description = in; }
|
|
inline void AddRule(GlobalLoot::RuleTypes rule, int value) { m_rules.emplace_back(rule, value); }
|
|
};
|
|
|
|
class GlobalLootManager {
|
|
std::vector<GlobalLootEntry> m_entries;
|
|
|
|
public:
|
|
std::vector<int> GetGlobalLootTables(NPC *mob) const;
|
|
inline void Clear() { m_entries.clear(); }
|
|
inline void AddEntry(GlobalLootEntry &in) { m_entries.push_back(in); }
|
|
void ShowZoneGlobalLoot(Client *to) const;
|
|
void ShowNPCGlobalLoot(Client *to, NPC *who) const;
|
|
};
|
|
|
|
#endif /* !GLOBAL_LOOT_MANAGER_H */
|