2021-03-13 20:22:29 +00:00
|
|
|
#pragma once
|
|
|
|
|
2021-03-17 19:07:40 +00:00
|
|
|
#include "core/Core.hpp"
|
2021-03-13 22:55:16 +00:00
|
|
|
#include "Combat.hpp"
|
2021-03-13 20:22:29 +00:00
|
|
|
|
|
|
|
typedef void (*PowerHandler)(CNSocket*, std::vector<int>, int16_t, int16_t, int16_t, int16_t, int16_t, int32_t, int16_t);
|
|
|
|
|
|
|
|
struct NanoPower {
|
|
|
|
int16_t skillType;
|
|
|
|
int32_t bitFlag;
|
|
|
|
int16_t timeBuffID;
|
|
|
|
PowerHandler handler;
|
|
|
|
|
|
|
|
NanoPower(int16_t s, int32_t b, int16_t t, PowerHandler h) : skillType(s), bitFlag(b), timeBuffID(t), handler(h) {}
|
|
|
|
|
|
|
|
void handle(CNSocket *sock, std::vector<int> targetData, int16_t nanoID, int16_t skillID, int16_t duration, int16_t amount) {
|
|
|
|
if (handler == nullptr)
|
|
|
|
return;
|
|
|
|
|
|
|
|
handler(sock, targetData, nanoID, skillID, duration, amount, skillType, bitFlag, timeBuffID);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef void (*MobPowerHandler)(Mob*, std::vector<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, std::vector<int> targetData, int16_t skillID, int16_t duration, int16_t amount) {
|
|
|
|
if (handler == nullptr)
|
|
|
|
return;
|
|
|
|
|
|
|
|
handler(mob, targetData, skillID, duration, amount, skillType, bitFlag, timeBuffID);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SkillData {
|
|
|
|
int skillType;
|
|
|
|
int targetType;
|
|
|
|
int drainType;
|
|
|
|
int effectArea;
|
|
|
|
int batteryUse[4];
|
|
|
|
int durationTime[4];
|
|
|
|
int powerIntensity[4];
|
|
|
|
};
|
|
|
|
|
2021-03-16 22:29:13 +00:00
|
|
|
namespace Nanos {
|
2021-03-13 20:22:29 +00:00
|
|
|
extern std::vector<NanoPower> NanoPowers;
|
|
|
|
extern std::map<int32_t, SkillData> SkillTable;
|
|
|
|
|
|
|
|
void nanoUnbuff(CNSocket* sock, std::vector<int> targetData, int32_t bitFlag, int16_t timeBuffID, int16_t amount, bool groupPower);
|
|
|
|
int applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int32_t groupFlags);
|
2021-03-16 21:06:10 +00:00
|
|
|
|
|
|
|
std::vector<int> findTargets(Player* plr, int skillID, CNPacketData* data = nullptr);
|
2021-03-13 20:22:29 +00:00
|
|
|
}
|
|
|
|
|
2021-03-13 22:55:16 +00:00
|
|
|
namespace Combat {
|
2021-03-13 20:22:29 +00:00
|
|
|
extern std::vector<MobPower> MobPowers;
|
|
|
|
}
|