mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-04 09:47:46 +00:00
myerge;
This commit is contained in:
commit
75edbdbcd4
1 changed files with 26 additions and 30 deletions
|
@ -38,7 +38,7 @@ namespace Sapphire
|
||||||
|
|
||||||
m_status = EncounterFightStatus::ACTIVE;
|
m_status = EncounterFightStatus::ACTIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset() override
|
void reset() override
|
||||||
{
|
{
|
||||||
if( auto boss = m_pInstance->getActiveBNpcByLayoutId( NPC_IFRIT ); boss )
|
if( auto boss = m_pInstance->getActiveBNpcByLayoutId( NPC_IFRIT ); boss )
|
||||||
|
@ -54,38 +54,34 @@ namespace Sapphire
|
||||||
EncounterStatePtr makeIfritPhaseOneState()
|
EncounterStatePtr makeIfritPhaseOneState()
|
||||||
{
|
{
|
||||||
auto ifritInitState = std::make_shared< EncounterState >( shared_from_this() );
|
auto ifritInitState = std::make_shared< EncounterState >( shared_from_this() );
|
||||||
ifritInitState->setOnUpdateCallback( [ & ]( EncounterFightPtr pEncounter, EncounterState state )
|
ifritInitState->setOnUpdateCallback( [ & ]( EncounterFightPtr pEncounter, EncounterState state ) {
|
||||||
|
auto timeElapsedMs = state.getElapsedTime();
|
||||||
|
|
||||||
|
auto pIfrit = pEncounter->getBNpc( NPC_IFRIT );
|
||||||
|
|
||||||
|
pIfrit->setRot( pIfrit->getRot() + .2f );
|
||||||
|
|
||||||
|
// todo: use gambits+timelines for this
|
||||||
|
if( timeElapsedMs > 10000 )
|
||||||
{
|
{
|
||||||
auto timeElapsedMs = state.getElapsedTime();
|
state.setFinishFlag();
|
||||||
|
return;
|
||||||
auto pIfrit = pEncounter->getBNpc( NPC_IFRIT );
|
|
||||||
|
|
||||||
pIfrit->setRot( pIfrit->getRot() + .2f );
|
|
||||||
|
|
||||||
// todo: use gambits+timelines for this
|
|
||||||
if( timeElapsedMs > 10000 )
|
|
||||||
{
|
|
||||||
state.setFinishFlag();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo: use gambits+timelines for this
|
|
||||||
if( timeElapsedMs > 5000 )
|
|
||||||
{
|
|
||||||
auto ifritTwoState = makeIfritPhaseTwoState();
|
|
||||||
pEncounter->addState( ifritTwoState );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
|
||||||
ifritInitState->setOnFinishCallback( [ & ]( EncounterFightPtr pEncounter, EncounterState state )
|
// todo: use gambits+timelines for this
|
||||||
|
if( timeElapsedMs > 5000 )
|
||||||
{
|
{
|
||||||
Logger::info( "stage 1 finish - enrage" );
|
auto ifritTwoState = makeIfritPhaseTwoState();
|
||||||
|
pEncounter->addState( ifritTwoState );
|
||||||
auto pIfrit = pEncounter->getBNpc( NPC_IFRIT );
|
|
||||||
pIfrit->hateListGetHighest()->die();
|
|
||||||
}
|
}
|
||||||
);
|
} );
|
||||||
|
|
||||||
|
ifritInitState->setOnFinishCallback( [ & ]( EncounterFightPtr pEncounter, EncounterState state ) {
|
||||||
|
Logger::info( "stage 1 finish - enrage" );
|
||||||
|
|
||||||
|
auto pIfrit = pEncounter->getBNpc( NPC_IFRIT );
|
||||||
|
pIfrit->hateListGetHighest()->die();
|
||||||
|
} );
|
||||||
|
|
||||||
return ifritInitState;
|
return ifritInitState;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +119,7 @@ namespace Sapphire
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_status == EncounterFightStatus::ACTIVE && ifrit && (!ifrit->hateListGetHighest() || !ifrit->hateListGetHighest()->isAlive() ) )
|
if( m_status == EncounterFightStatus::ACTIVE && ifrit && ( !ifrit->hateListGetHighest() || !ifrit->hateListGetHighest()->isAlive() ) )
|
||||||
{
|
{
|
||||||
m_status = EncounterFightStatus::FAIL;
|
m_status = EncounterFightStatus::FAIL;
|
||||||
}
|
}
|
||||||
|
@ -145,4 +141,4 @@ namespace Sapphire
|
||||||
//*/
|
//*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}// namespace Sapphire
|
Loading…
Add table
Reference in a new issue