1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-05 02:07:46 +00:00
sapphire/src/scripts/action/drg/ActionWheelingThrust3556.cpp
2023-03-07 05:15:48 +09:00

57 lines
No EOL
2 KiB
C++

#include <Script/NativeScriptApi.h>
#include <ScriptObject.h>
#include <Actor/Player.h>
#include <Action/Action.h>
#include <Math/CalcStats.h>
#include "StatusEffect/StatusEffect.h"
using namespace Sapphire;
using namespace Sapphire::StatusEffect;
const uint16_t STATUS_ID_SHARPER_FANG_AND_CLAW = 802;
const uint16_t STATUS_ID_ENHANCED_WHEELING_THRUST = 803;
const uint16_t STATUS_ID_RAIDEN_THRUST_READY = 1863;
class ActionWheelingThrust3556 :
public ScriptAPI::ActionScript
{
public:
ActionWheelingThrust3556() :
ScriptAPI::ActionScript( 3556 )
{
}
void onExecute( Sapphire::World::Action::Action& action ) override
{
auto effectEntry = action.getSourceChara()->getStatusEffectById( STATUS_ID_ENHANCED_WHEELING_THRUST );
if( effectEntry.second )
{
auto pPlayer = action.getSourceChara()->getAsPlayer();
action.getSourceChara()->removeStatusEffect( effectEntry.first );
if( pPlayer->gaugeDrgGetDragonState( Common::DrgState::BloodOfTheDragon ) )
{
uint16_t dragonTimer = pPlayer->gaugeDrgGetDragonTimer();
dragonTimer = std::min( 30000, dragonTimer + 10000 );
pPlayer->gaugeDrgSetDragonTimer( dragonTimer, true );
}
if( pPlayer->getLastComboActionId() == 88 )
{
auto pEffect = Sapphire::StatusEffect::make_StatusEffect( STATUS_ID_SHARPER_FANG_AND_CLAW, action.getSourceChara(), action.getSourceChara(), 10000, 3000 );
action.getEffectbuilder()->applyStatusEffect( action.getSourceChara(), action.getSourceChara(), pEffect );
}
if( pPlayer->getLastComboActionId() == 3554 )
{
auto pEffect = Sapphire::StatusEffect::make_StatusEffect( STATUS_ID_RAIDEN_THRUST_READY, action.getSourceChara(), action.getSourceChara(), 10000, 3000 );
action.getEffectbuilder()->applyStatusEffect( action.getSourceChara(), action.getSourceChara(), pEffect );
}
}
else
{
action.disableGenericHandler();
action.interrupt();
}
}
};
EXPOSE_SCRIPT( ActionWheelingThrust3556 );