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
|
|
|
|
2022-05-17 00:28:27 +00:00
|
|
|
enum class SkillEffectTarget {
|
|
|
|
POINT = 1,
|
|
|
|
SELF = 2,
|
|
|
|
CONE = 3,
|
|
|
|
WEAPON = 4,
|
|
|
|
AREA_SELF = 5,
|
|
|
|
AREA_TARGET = 6
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class SkillTargetType {
|
|
|
|
MOBS = 1,
|
2022-05-18 14:04:28 +00:00
|
|
|
SELF = 2,
|
|
|
|
GROUP = 3
|
2022-05-17 00:28:27 +00:00
|
|
|
};
|
|
|
|
|
2021-03-13 20:22:29 +00:00
|
|
|
struct SkillData {
|
|
|
|
int skillType;
|
2022-05-17 00:28:27 +00:00
|
|
|
SkillEffectTarget effectTarget;
|
|
|
|
int effectType; // always 1?
|
|
|
|
SkillTargetType targetType;
|
2022-05-16 20:47:30 +00:00
|
|
|
int batteryDrainType;
|
2021-03-13 20:22:29 +00:00
|
|
|
int effectArea;
|
2022-05-16 20:47:30 +00:00
|
|
|
|
2021-03-13 20:22:29 +00:00
|
|
|
int batteryUse[4];
|
|
|
|
int durationTime[4];
|
2022-05-16 20:47:30 +00:00
|
|
|
|
|
|
|
int valueTypes[3];
|
|
|
|
int values[3][4];
|
2021-03-13 20:22:29 +00:00
|
|
|
};
|
|
|
|
|
2021-06-20 15:02:16 +00:00
|
|
|
namespace Abilities {
|
2021-03-13 20:22:29 +00:00
|
|
|
extern std::map<int32_t, SkillData> SkillTable;
|
2022-05-16 20:47:30 +00:00
|
|
|
|
2022-05-17 00:28:27 +00:00
|
|
|
std::vector<EntityRef> matchTargets(SkillData*, int, int32_t*);
|
2022-05-18 14:04:28 +00:00
|
|
|
void applyAbility(SkillData*, EntityRef, std::vector<EntityRef>);
|
|
|
|
|
2022-05-16 20:47:30 +00:00
|
|
|
void init();
|
2021-03-13 20:22:29 +00:00
|
|
|
}
|