1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 19:17:45 +00:00
This commit is contained in:
collett 2020-04-11 19:27:29 +09:00
parent 2e37354656
commit 3c3238ae46
5 changed files with 37 additions and 7 deletions

View file

@ -1051,6 +1051,7 @@ namespace Sapphire::Common
BlockParryRateBonus = 14,
MPRestorePerGCD = 15,
AlwaysCombo = 16,
PotencyMultiplier = 17,
};
enum class ActionTypeFilter : int32_t

View file

@ -668,6 +668,11 @@ void Action::Action::buildEffects()
player->gaugeGnbSetAmmo( std::min( 2, player->gaugeGnbGetAmmo() + m_lutEntry.bonusDataByte4 ) );
break;
}
case Common::ClassJob::Samurai:
{
player->gaugeSamSetKenki( std::min( 100, player->gaugeSamGetKenki() + m_lutEntry.bonusDataByte4 ) );
break;
}
}
}
}
@ -1160,12 +1165,12 @@ Action::EffectBuilderPtr Action::Action::getEffectbuilder()
return m_effectBuilder;
}
Data::ActionPtr Action::Action::getActionData() const
Data::ActionPtr Action::Action::getActionData()
{
return m_actionData;
}
Action::ActionEntry Action::Action::getActionEntry() const
Action::ActionEntry& Action::Action::getActionEntry()
{
return m_lutEntry;
}

View file

@ -126,8 +126,8 @@ namespace Sapphire::World::Action
*/
Entity::CharaPtr getHitChara();
Data::ActionPtr getActionData() const;
ActionEntry getActionEntry() const;
Data::ActionPtr getActionData();
ActionEntry& getActionEntry();
float getAnimationLock();
void setPrimaryCost( Common::ActionPrimaryCostType type, uint16_t cost );

View file

@ -3023,8 +3023,8 @@ ActionLut::StatusEffectTable ActionLut::m_statusEffectTable =
//Jinpu, 陣風: DamageMultiplier, All, 13%
//{ 1298, { 1, 255, 13, 0, 0 } },
//Kaiten, 必殺剣・回天: DamageMultiplier, All, 50%
{ 1229, { 1, 255, 50, 0, 0 } },
//Kaiten, 必殺剣・回天: PotencyMultiplier, 1 uses, 50%
{ 1229, { 17, 1, 0, 3, 50 } },
//Higanbana, 彼岸花: Dot, Physical, potency 60
{ 1228, { 4, 1, 60, 0, 0 } },

View file

@ -380,8 +380,32 @@ void Sapphire::StatusEffect::StatusEffect::onBeforeActionStart( Sapphire::World:
}
action->setAlwaysCombo();
}
break;
}
break;
}
case Common::StatusEffectType::PotencyMultiplier:
{
if( checkAction1( action, m_effectEntry ) )
{
if( m_effectEntry.effectValue1 > 0 )
{
if( m_effectEntry.effectValue1 == getStacks() )
{
// if stacks equal to remaining uses, assume it is synced
setStacks( getStacks() - 1 );
m_targetActor->sendStatusEffectUpdate();
}
m_effectEntry.effectValue1--;
if( m_effectEntry.effectValue1 == 0 )
{
markToRemove();
}
action->getActionEntry().damagePotency *= 1.0 + ( m_effectEntry.effectValue4 / 100.0 );
action->getActionEntry().damageComboPotency *= 1.0 + ( m_effectEntry.effectValue4 / 100.0 );
action->getActionEntry().damageDirectionalPotency *= 1.0 + ( m_effectEntry.effectValue4 / 100.0 );
}
}
break;
}
}
}