Base Variadic MobPowers Handler

This commit is contained in:
2020-11-25 02:51:17 +00:00
committed by Gent S
parent d2e89851d6
commit 1371a6da77
2 changed files with 234 additions and 0 deletions

View File

@@ -47,6 +47,8 @@ struct Mob : public BaseNPC {
CNSocket *target = nullptr;
time_t nextAttack = 0;
time_t lastDrainTime = 0;
int skillStyle = -1; // -1 for nothing, 0-2 for corruption, -2 for ability windup, -3 for eruption
int hitX, hitY, hitZ; // for use in ability targeting
// drop
int dropType;
@@ -121,6 +123,24 @@ struct Bullet {
int bulletType;
};
typedef void (*MobPowerHandler)(Mob*, int*, int16_t, int16_t, int16_t, int16_t, int32_t, int16_t);
struct MobPower {
int16_t skillType;
int32_t bitFlag;
int16_t timeBuffID;
MobPowerHandler handler;
MobPower(int16_t s, int32_t b, int16_t t, MobPowerHandler h) : skillType(s), bitFlag(b), timeBuffID(t), handler(h) {}
void handle(Mob *mob, int* targetData, int16_t skillID, int16_t duration, int16_t amount) {
if (handler == nullptr)
return;
handler(mob, targetData, skillID, duration, amount, skillType, bitFlag, timeBuffID);
}
};
namespace MobManager {
extern std::map<int32_t, Mob*> Mobs;
extern std::queue<int32_t> RemovalQueue;