feat: add enchant value to pdef/mdef, patk/matk

This commit is contained in:
k0t9i
2023-01-24 23:50:59 +04:00
parent ca0183603f
commit 4cfb986ce0
8 changed files with 38 additions and 23 deletions

View File

@@ -1,5 +1,7 @@
#include "pch.h"
#include "Common.h"
#include <cmath>
#include <Rpc.h>
#pragma comment(lib, "Rpcrt4.lib")
@@ -31,4 +33,14 @@ std::string GenerateUUID()
wszUuid = NULL;
return std::string(ws.begin(), ws.end());
}
std::uint32_t GetEnchantValue(const std::uint16_t baseValue, const std::uint16_t enchantLevel, const uint8_t lowEnchantDelta, const uint8_t highEnchantDelta)
{
if (baseValue == 0)
{
return 0;
}
return baseValue + enchantLevel * lowEnchantDelta + max(enchantLevel - 3, 0) * (highEnchantDelta - lowEnchantDelta);
}

View File

@@ -1,6 +1,8 @@
#pragma once
#include <string>
#include <cstdint>
std::string ConvertFromWideChar(const wchar_t* str);
std::string GenerateUUID();
std::string GenerateUUID();
std::uint32_t GetEnchantValue(const std::uint16_t baseValue, const std::uint16_t enchantLevel, const uint8_t lowEnchantDelta, const uint8_t highEnchantDelta);

View File

@@ -134,8 +134,8 @@ namespace Interlude
itemInfo.enchantLevel,
casted ? static_cast<Enums::ArmorType>(casted->armorType) : Enums::ArmorType::none,
casted ? static_cast<Enums::CrystalType>(casted->crystalType) : Enums::CrystalType::none,
casted ? casted->pDef : 0,
casted ? casted->mDef : 0,
GetEnchantValue(casted ? casted->pDef : 0, itemInfo.enchantLevel, 1, 3),
GetEnchantValue(casted ? casted->mDef : 0, itemInfo.enchantLevel, 1, 3),
setEffect,
addSetEffect,
enchantEffect
@@ -167,8 +167,8 @@ namespace Interlude
casted ? static_cast<Enums::WeaponType>(casted->weaponType) : Enums::WeaponType::none,
casted ? static_cast<Enums::CrystalType>(casted->crystalType) : Enums::CrystalType::none,
casted ? casted->rndDamage : 0,
casted ? casted->pAtk : 0,
casted ? casted->mAtk : 0,
GetEnchantValue(casted ? casted->pAtk : 0, itemInfo.enchantLevel, 3, 6),
GetEnchantValue(casted ? casted->mAtk : 0, itemInfo.enchantLevel, 3, 6),
casted ? casted->critical : 0,
casted ? casted->hitModify : 0,
casted ? casted->atkSpd : 0,
@@ -190,7 +190,7 @@ namespace Interlude
itemInfo.enchantLevel,
casted ? static_cast<Enums::CrystalType>(casted->crystalType) : Enums::CrystalType::none,
casted ? casted->shieldEvasion : 0,
casted ? casted->shieldPdef : 0,
GetEnchantValue(casted ? casted->shieldPdef : 0, itemInfo.enchantLevel, 1, 3),
casted ? casted->shieldDefRate : 0
);
}

View File

@@ -72,6 +72,7 @@ namespace Interlude
}
}
//todo need to delete items if they are not exists in create "queue"
void OnItemCreated(const Event& evt)
{
std::shared_lock<std::shared_timed_mutex>(m_Mutex);
@@ -112,7 +113,6 @@ namespace Interlude
}
}
//todo deleted ehchant scroll
void OnItemDeleted(const Event& evt)
{
//fixme may be a race condition

View File

@@ -66,7 +66,6 @@ namespace Interlude
EventDispatcher::GetInstance().Subscribe(HeroDeletedEvent::name, [this](const Event& evt) {
OnHeroDeleted(evt);
});
// TODO delete outdated skills: on hero change subclass?
}
SkillRepository() = delete;
@@ -91,6 +90,8 @@ namespace Interlude
m_ReloadingTimers.StopAll();
}
}
//todo need to delete skills if they are not exists in create "queue"
void OnSkillCreated(const Event& evt)
{
std::shared_lock<std::shared_timed_mutex>(m_Mutex);