1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 19:17:45 +00:00

create actual functions for buff stacks

This commit is contained in:
collett 2020-04-11 04:55:02 +09:00
parent b55e44c0db
commit 8262ebd4e9
2 changed files with 29 additions and 6 deletions

View file

@ -261,6 +261,21 @@ void Sapphire::StatusEffect::StatusEffect::setParam( uint16_t param )
m_param = param;
}
void Sapphire::StatusEffect::StatusEffect::setStacks( uint8_t stacks )
{
if( ( m_param & 0x00FF ) != 0x00FF )
{
m_param = stacks;
}
}
uint8_t Sapphire::StatusEffect::StatusEffect::getStacks()
{
if( ( m_param & 0x00FF ) == 0x00FF )
return 0;
return static_cast< uint8_t >( m_param & 0x00FF );
}
const std::string& Sapphire::StatusEffect::StatusEffect::getName() const
{
return m_name;
@ -300,12 +315,14 @@ void Sapphire::StatusEffect::StatusEffect::onBeforeActionStart( Sapphire::World:
if( m_effectEntry.effectValue1 > 0 )
{
// if stacks equal to remaining uses, assume it is synced
if( m_effectEntry.effectValue1 == m_param )
if( m_effectEntry.effectValue1 == getStacks() )
{
m_param--;
m_effectEntry.effectValue1--;
setStacks( m_effectEntry.effectValue1 );
m_targetActor->sendStatusEffectUpdate();
}
m_effectEntry.effectValue1--;
else
m_effectEntry.effectValue1--;
if( m_effectEntry.effectValue1 == 0 )
{
markToRemove();
@ -330,12 +347,14 @@ void Sapphire::StatusEffect::StatusEffect::onBeforeActionStart( Sapphire::World:
if( m_effectEntry.effectValue1 > 0 )
{
// if stacks equal to remaining uses, assume it is synced
if( m_effectEntry.effectValue1 == m_param )
if( m_effectEntry.effectValue1 == getStacks() )
{
m_param--;
m_effectEntry.effectValue1--;
setStacks( m_effectEntry.effectValue1 );
m_targetActor->sendStatusEffectUpdate();
}
m_effectEntry.effectValue1--;
else
m_effectEntry.effectValue1--;
if( m_effectEntry.effectValue1 == 0 )
{
markToRemove();

View file

@ -47,6 +47,10 @@ public:
void setParam( uint16_t param );
void setStacks( uint8_t stacks );
uint8_t getStacks();
void registerTickEffect( uint8_t type, uint32_t param );
std::pair< uint8_t, uint32_t > getTickEffect();