1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-04 09:47:46 +00:00
sapphire/src/world/Action/ActionLut.h
2023-03-12 16:46:14 +01:00

54 lines
1,016 B
C++

#pragma once
#include <cstdint>
#include <unordered_map>
#include <string>
#include <vector>
#include "Common.h"
namespace Sapphire::World::Action
{
struct StatusModifier
{
Common::ParamModifier modifier;
int32_t value;
};
struct StatusEntry
{
uint16_t id;
int32_t duration;
uint32_t flag;
std::vector< StatusModifier > modifiers;
};
struct StatusEffect
{
std::vector< StatusEntry > caster;
std::vector< StatusEntry > target;
};
struct ActionEntry
{
uint16_t potency;
uint16_t comboPotency;
uint16_t flankPotency;
uint16_t frontPotency;
uint16_t rearPotency;
uint16_t curePotency;
uint16_t restoreMPPercentage;
std::vector< uint32_t > nextCombo;
StatusEffect statuses;
};
class ActionLut
{
public:
using Lut = std::unordered_map< uint16_t, ActionEntry >;
static bool validEntryExists( uint16_t actionId );
static const ActionEntry& getEntry( uint16_t actionId );
static Lut m_actionLut;
};
}