mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-24 05:37:45 +00:00
Map out modifiers for lut and handle deserializing
This commit is contained in:
parent
637c786ebc
commit
5b225de6f7
6 changed files with 137 additions and 5 deletions
|
@ -891,8 +891,7 @@ namespace Sapphire::Common
|
|||
CriticalHitPowerPercent = 1012,
|
||||
CriticalHitResiliencePercent = 1013,
|
||||
CriticalHitPercent = 1014,
|
||||
EnmityPercent = 1015,
|
||||
EnmityReductionPercent = 1016,
|
||||
EnmityPercent = 1015
|
||||
};
|
||||
|
||||
enum struct ActionAspect : uint8_t
|
||||
|
|
|
@ -31,10 +31,16 @@ Sapphire::Data::ExdData g_exdDataGen;
|
|||
std::string datLocation( "C:\\Data\\Dev\\ffxiv3.01\\game\\sqpack" );
|
||||
//const std::string datLocation( "/mnt/c/Program Files (x86)/Steam/steamapps/common/FINAL FANTASY XIV Online/game/sqpack" );
|
||||
|
||||
struct StatusModifier
|
||||
{
|
||||
Common::ParamModifier modifier;
|
||||
int32_t value;
|
||||
};
|
||||
|
||||
struct StatusEntry
|
||||
{
|
||||
uint16_t id;
|
||||
std::unordered_map< std::string, uint16_t > modifiers;
|
||||
std::vector< StatusModifier > modifiers;
|
||||
};
|
||||
|
||||
struct StatusEffect
|
||||
|
@ -58,6 +64,14 @@ struct ActionEntry
|
|||
StatusEffect statuses;
|
||||
};
|
||||
|
||||
void to_json( nlohmann::ordered_json& j, const StatusModifier& statusModifier)
|
||||
{
|
||||
j = nlohmann::ordered_json{
|
||||
{ "modifier", statusModifier.modifier },
|
||||
{ "value", statusModifier.value }
|
||||
};
|
||||
}
|
||||
|
||||
void to_json( nlohmann::ordered_json& j, const StatusEntry& statusEntry )
|
||||
{
|
||||
j = nlohmann::ordered_json{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <cassert>
|
||||
#include "ActionLut.h"
|
||||
|
||||
using namespace Sapphire;
|
||||
using namespace Sapphire::World::Action;
|
||||
|
||||
bool ActionLut::validEntryExists( uint16_t actionId )
|
||||
|
|
|
@ -4,15 +4,20 @@
|
|||
#include <unordered_map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "Common.h"
|
||||
|
||||
namespace Sapphire::World::Action
|
||||
{
|
||||
using StatusModifier = std::unordered_map< std::string, uint16_t >;
|
||||
struct StatusModifier
|
||||
{
|
||||
Common::ParamModifier modifier;
|
||||
int32_t value;
|
||||
};
|
||||
|
||||
struct StatusEntry
|
||||
{
|
||||
uint16_t id;
|
||||
StatusModifier modifiers;
|
||||
std::vector< StatusModifier > modifiers;
|
||||
};
|
||||
|
||||
struct StatusEffect
|
||||
|
|
|
@ -4,11 +4,105 @@
|
|||
#include <filesystem>
|
||||
#include <iostream>
|
||||
|
||||
using namespace Sapphire;
|
||||
using namespace Sapphire::World::Action;
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
ActionLut::Lut ActionLut::m_actionLut;
|
||||
|
||||
std::unordered_map< std::string, Common::ParamModifier > ActionLutData::m_modifierStringMap =
|
||||
{
|
||||
{ "Strength", Common::ParamModifier::Strength },
|
||||
{ "Dexterity", Common::ParamModifier::Dexterity },
|
||||
{ "Vitality", Common::ParamModifier::Vitality },
|
||||
{ "Intelligence", Common::ParamModifier::Intelligence },
|
||||
{ "Mind", Common::ParamModifier::Mind },
|
||||
{ "Piety", Common::ParamModifier::Piety },
|
||||
{ "HP", Common::ParamModifier::HP },
|
||||
{ "MP", Common::ParamModifier::MP },
|
||||
{ "TP", Common::ParamModifier::TP },
|
||||
{ "GP", Common::ParamModifier::GP },
|
||||
{ "CP", Common::ParamModifier::CP },
|
||||
{ "PhysicalDamage", Common::ParamModifier::PhysicalDamage },
|
||||
{ "MagicDamage", Common::ParamModifier::MagicDamage },
|
||||
{ "Delay", Common::ParamModifier::Delay },
|
||||
{ "AdditionalEffect", Common::ParamModifier::AdditionalEffect },
|
||||
{ "AttackSpeed", Common::ParamModifier::AttackSpeed },
|
||||
{ "BlockRate", Common::ParamModifier::BlockRate },
|
||||
{ "BlockStrength", Common::ParamModifier::BlockStrength },
|
||||
{ "Parry", Common::ParamModifier::Parry },
|
||||
{ "AttackPower", Common::ParamModifier::AttackPower },
|
||||
{ "Defense", Common::ParamModifier::Defense },
|
||||
{ "Accuracy", Common::ParamModifier::Accuracy },
|
||||
{ "Evasion", Common::ParamModifier::Evasion },
|
||||
{ "MagicDefense", Common::ParamModifier::MagicDefense },
|
||||
{ "CriticalHitPower", Common::ParamModifier::CriticalHitPower },
|
||||
{ "CriticalHitResilience", Common::ParamModifier::CriticalHitResilience },
|
||||
{ "CriticalHit", Common::ParamModifier::CriticalHit },
|
||||
{ "CriticalHitEvasion", Common::ParamModifier::CriticalHitEvasion },
|
||||
{ "SlashingResistance", Common::ParamModifier::SlashingResistance },
|
||||
{ "PiercingResistance", Common::ParamModifier::PiercingResistance },
|
||||
{ "BluntResistance", Common::ParamModifier::BluntResistance },
|
||||
{ "ProjectileResistance", Common::ParamModifier::ProjectileResistance },
|
||||
{ "AttackMagicPotency", Common::ParamModifier::AttackMagicPotency },
|
||||
{ "HealingMagicPotency", Common::ParamModifier::HealingMagicPotency },
|
||||
{ "EnhancementMagicPotency", Common::ParamModifier::EnhancementMagicPotency },
|
||||
{ "ElementalBonus", Common::ParamModifier::ElementalBonus },
|
||||
{ "FireResistance", Common::ParamModifier::FireResistance },
|
||||
{ "IceResistance", Common::ParamModifier::IceResistance },
|
||||
{ "WindResistance", Common::ParamModifier::WindResistance },
|
||||
{ "EarthResistance", Common::ParamModifier::EarthResistance },
|
||||
{ "LightningResistance", Common::ParamModifier::LightningResistance },
|
||||
{ "WaterResistance", Common::ParamModifier::WaterResistance },
|
||||
{ "MagicResistance", Common::ParamModifier::MagicResistance },
|
||||
{ "Determination", Common::ParamModifier::Determination },
|
||||
{ "SkillSpeed", Common::ParamModifier::SkillSpeed },
|
||||
{ "SpellSpeed", Common::ParamModifier::SpellSpeed },
|
||||
{ "Haste", Common::ParamModifier::Haste },
|
||||
{ "Morale", Common::ParamModifier::Morale },
|
||||
{ "Enmity", Common::ParamModifier::Enmity },
|
||||
{ "EnmityReduction", Common::ParamModifier::EnmityReduction },
|
||||
{ "CarefulDesynthesis", Common::ParamModifier::CarefulDesynthesis },
|
||||
{ "EXPBonus", Common::ParamModifier::EXPBonus },
|
||||
{ "Regen", Common::ParamModifier::Regen },
|
||||
{ "Refresh", Common::ParamModifier::Refresh },
|
||||
{ "MainAttribute", Common::ParamModifier::MainAttribute },
|
||||
{ "SecondaryAttribute", Common::ParamModifier::SecondaryAttribute },
|
||||
{ "SlowResistance", Common::ParamModifier::SlowResistance },
|
||||
{ "PetrificationResistance", Common::ParamModifier::PetrificationResistance },
|
||||
{ "ParalysisResistance", Common::ParamModifier::ParalysisResistance },
|
||||
{ "SilenceResistance", Common::ParamModifier::SilenceResistance },
|
||||
{ "BlindResistance", Common::ParamModifier::BlindResistance },
|
||||
{ "PoisonResistance", Common::ParamModifier::PoisonResistance },
|
||||
{ "StunResistance", Common::ParamModifier::StunResistance },
|
||||
{ "SleepResistance", Common::ParamModifier::SleepResistance },
|
||||
{ "BindResistance", Common::ParamModifier::BindResistance },
|
||||
{ "HeavyResistance", Common::ParamModifier::HeavyResistance },
|
||||
{ "DoomResistance", Common::ParamModifier::DoomResistance },
|
||||
{ "ReducedDurabilityLoss", Common::ParamModifier::ReducedDurabilityLoss },
|
||||
{ "IncreasedSpiritbondGain", Common::ParamModifier::IncreasedSpiritbondGain },
|
||||
{ "Craftsmanship", Common::ParamModifier::Craftsmanship },
|
||||
{ "Control", Common::ParamModifier::Control },
|
||||
{ "Gathering", Common::ParamModifier::Gathering },
|
||||
{ "Perception", Common::ParamModifier::Perception },
|
||||
{ "HPPercent", Common::ParamModifier::HPPercent },
|
||||
{ "MPPercent", Common::ParamModifier::MPPercent },
|
||||
{ "TPPercent", Common::ParamModifier::TPPercent },
|
||||
{ "GPPercent", Common::ParamModifier::GPPercent },
|
||||
{ "CPPercent", Common::ParamModifier::CPPercent },
|
||||
{ "PhysicalDamagePercent", Common::ParamModifier::PhysicalDamagePercent },
|
||||
{ "MagicDamagePercent", Common::ParamModifier::MagicDamagePercent },
|
||||
{ "AttackPowerPercent", Common::ParamModifier::AttackPowerPercent },
|
||||
{ "DefensePercent", Common::ParamModifier::DefensePercent },
|
||||
{ "AccuracyPercent", Common::ParamModifier::AccuracyPercent },
|
||||
{ "EvasionPercent", Common::ParamModifier::EvasionPercent },
|
||||
{ "MagicDefensePercent", Common::ParamModifier::MagicDefensePercent },
|
||||
{ "CriticalHitPowerPercent", Common::ParamModifier::CriticalHitPowerPercent },
|
||||
{ "CriticalHitResiliencePercent", Common::ParamModifier::CriticalHitResiliencePercent },
|
||||
{ "CriticalHitPercent", Common::ParamModifier::CriticalHitPercent },
|
||||
{ "EnmityPercent", Common::ParamModifier::EnmityPercent }
|
||||
};
|
||||
|
||||
bool ActionLutData::cacheActions()
|
||||
{
|
||||
std::fstream f;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "ActionLut.h"
|
||||
#include "Common.h"
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
namespace Sapphire::World::Action
|
||||
|
@ -8,8 +9,26 @@ namespace Sapphire::World::Action
|
|||
public:
|
||||
static bool cacheActions();
|
||||
static bool reloadActions();
|
||||
|
||||
static std::unordered_map< std::string, Common::ParamModifier > m_modifierStringMap;
|
||||
};
|
||||
|
||||
inline void from_json( const nlohmann::json& j, StatusModifier& statusModifier )
|
||||
{
|
||||
auto stringKey = j.at( "modifier" ).get< std::string >();
|
||||
j.at( "value" ).get_to( statusModifier.value );
|
||||
|
||||
auto enumKey = ActionLutData::m_modifierStringMap.find( stringKey );
|
||||
if( enumKey != ActionLutData::m_modifierStringMap.end() )
|
||||
{
|
||||
statusModifier.modifier = enumKey->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
statusModifier.modifier = Common::ParamModifier::None;
|
||||
}
|
||||
}
|
||||
|
||||
inline void from_json( const nlohmann::json& j, StatusEntry& statusEntry )
|
||||
{
|
||||
j.at( "id" ).get_to( statusEntry.id );
|
||||
|
|
Loading…
Add table
Reference in a new issue