- Mesaj
- 1.316
- Çözümler
- 74
- Beğeni
- 4.942
- Puan
- 1.859
- Ticaret Puanı
- 0
Ortalama zarar ve beceri hasarı oranları bu fonksiyonda hesaplanır. Daha güncel hale getirmek için kodu güncelledim. Bu güncellemeyi uygulamak zorunda değilsiniz; bu sadece can sıkıntısından yaptığım ve paylaşmak istediğim bir şey. Ekleyip eklememek size kalmış.
item_addon.cpp:
#include "stdafx.h"
#include "constants.h"
#include "utils.h"
#include "item.h"
#include "item_addon.h"
#include <random>
#include <cmath>
CItemAddonManager::CItemAddonManager()
{
}
CItemAddonManager::~CItemAddonManager()
{
}
void CItemAddonManager::ApplyAddonTo(int iAddonType, LPITEM pItem)
{
if (!pItem)
{
sys_err("ApplyAddonTo: item pointer null");
return;
}
std::random_device rd;
std::mt19937 gen(rd());
std::normal_distribution<> gauss_dist(0.0, 5.0);
int iSkillBonus = MINMAX(-30, static_cast<int>(std::round(gauss_dist(gen))), 30);
int iNormalHitBonus = 0;
if (std::abs(iSkillBonus) <= 20)
{
std::uniform_int_distribution<> dist_8_8(-8, 8);
std::uniform_int_distribution<> dist_1_4(1, 4);
iNormalHitBonus = -2 * iSkillBonus + std::abs(dist_8_8(gen) + dist_8_8(gen)) + dist_1_4(gen);
}
else
{
std::uniform_int_distribution<> dist_1_5(1, 5);
iNormalHitBonus = -2 * iSkillBonus + dist_1_5(gen);
}
pItem->RemoveAttributeType(APPLY_SKILL_DAMAGE_BONUS);
pItem->RemoveAttributeType(APPLY_NORMAL_HIT_DAMAGE_BONUS);
pItem->AddAttribute(APPLY_NORMAL_HIT_DAMAGE_BONUS, iNormalHitBonus);
pItem->AddAttribute(APPLY_SKILL_DAMAGE_BONUS, iSkillBonus);
}
Son düzenleme: