1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-03 17:27:47 +00:00
sapphire/src/world/Action/ActionLut.h
2023-03-06 23:40:21 +01:00

53 lines
997 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;
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;
};
}