DragonNest/GameCommon/DnChangeActionSetBlow.cpp

189 lines
5.4 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DnChangeActionSetBlow.h"
#include "IDnSkillProcessor.h"
#include "DnChangeActionStrProcessor.h"
#include "DnApplySEWhenActionSetBlowEnabledProcessor.h"
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
CDnChangeActionSetBlow::CDnChangeActionSetBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ),
m_pChangeActionStrProcessor( NULL ),
m_bEnable( false ),
m_bChangedActionBegun( false )
{
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_129;
_ASSERT( strlen(szValue) < STATE_BLOW_ARGUMENT_MAX_SIZE );
SetValue( szValue );
// <20><><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD> Ư<><C6AF> <20>׼<EFBFBD><D7BC><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׼<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>ٲٵ<D9B2><D9B5><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>..
// <20>ش<EFBFBD> <20>׼<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>޾Ƶд<C6B5>.
// <20><> <20>׼<EFBFBD><D7BC><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׼<EFBFBD> <20><>ü<EFBFBD><C3BC> CDnActor::SetActionQueue() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ<CFBE><EEB3AD>.
if( 0 < strlen(szValue) && (strcmp(szValue, "0") != 0) )
m_strTriggerAction.assign( szValue );
}
CDnChangeActionSetBlow::~CDnChangeActionSetBlow(void)
{
}
void CDnChangeActionSetBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
{
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
m_bEnable = false;
m_strCancleAction.clear();
_ASSERT( hParentSkill );
if( hParentSkill )
{
m_pChangeActionStrProcessor = static_cast<CDnChangeActionStrProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) );
OutputDebug( "CDnChangeActionSetBlow::OnBegin\n" );
}
else
{
SetState( STATE_BLOW::STATE_END );
OutputDebug( "CDnChangeActionSetBlow::OnBegin Fail!! Can't find Parent Skill Object!!\n" );
}
}
void CDnChangeActionSetBlow::Process( LOCAL_TIME LocalTime, float fDelta )
{
CDnBlow::Process( LocalTime, fDelta );
}
void CDnChangeActionSetBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
{
#ifdef _GAMESERVER
// #35037 <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ٷ<EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
OnNotChangeAction();
#endif // _GAMESERVER
OutputDebug( "CDnChangeActionSetBlow::OnEnd\n" );
}
CDnChangeActionStrProcessor* CDnChangeActionSetBlow::GetChangeActionStrProcessor( void )
{
if( m_bEnable )
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD><DFBB>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>.
CDnChangeActionStrProcessor* pProcessor = NULL;
if( m_ParentSkillInfo.hSkillUser )
{
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
if( hParentSkill )
pProcessor = static_cast<CDnChangeActionStrProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) );
}
// <20><><EFBFBD><EFBFBD> Processor <20><> <20><><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Valid <20>ϴٸ<CFB4> <20>̰<EFBFBD> <20>´°<C2B4><C2B0><EFBFBD>. <20>α<EFBFBD> <20>ھƺ<DABE>
if( pProcessor == NULL && m_pChangeActionStrProcessor )
{
g_Log.Log(LogType::_ERROR, L"CDnChangeActionSetBlow::GetChangeActionStrProcessor Invalid Call!!" );
}
return pProcessor;
//return m_pChangeActionStrProcessor;
}
else
return NULL;
}
void CDnChangeActionSetBlow::UpdateEnable( const char* pPrevAction, const char* pCurrentAction )
{
if( strcmp(pPrevAction, pCurrentAction) == 0 )
return;
// #40128 <20>θ<EFBFBD><CEB8><EFBFBD>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> üũ.
if( m_ParentSkillInfo.hSkillUser )
{
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
if( hParentSkill && !hParentSkill->IsSatisfyWeapon() )
{
m_bEnable = false;
return;
}
}
if( m_strTriggerAction.empty() )
{
m_bEnable = true;
}
else
if( pCurrentAction && 0 < strlen(pCurrentAction) &&
pPrevAction && 0 < strlen(pPrevAction) )
{
// <20><><EFBFBD><EFBFBD> <20>ٲ<EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20>׼ǰ<D7BC> <20><><EFBFBD>ٸ<EFBFBD> Ȱ<><C8B0>ȭ <20><><EFBFBD><EFBFBD>.
if( false == m_bEnable && m_strTriggerAction == pCurrentAction )
{
m_bEnable = true;
m_strCancleAction = pPrevAction;
}
else
if( m_strCancleAction == pCurrentAction )
{
m_bEnable = false;
}
}
}
#ifdef _GAMESERVER
void CDnChangeActionSetBlow::OnChangeAction( void )
{
if( false == m_bChangedActionBegun )
{
// <20>׼<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20>ִٸ<D6B4> <20>Լ<EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL;
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
if( hParentSkill )
{
pProcessor = static_cast<CDnApplySEWhenActionSetBlowEnabledProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) );
if( pProcessor )
pProcessor->OnChangeActionBegin();
}
m_bChangedActionBegun = true;
}
}
void CDnChangeActionSetBlow::OnNotChangeAction( void )
{
if( m_bChangedActionBegun )
{
// <20>׼<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20>ִٸ<D6B4> <20>Լ<EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL;
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
if( hParentSkill )
{
pProcessor = static_cast<CDnApplySEWhenActionSetBlowEnabledProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) );
if( pProcessor )
pProcessor->OnChangeActionSetBlowEnd();
}
m_bChangedActionBegun = false;
}
}
#endif
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
void CDnChangeActionSetBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
{
char szBuff[128] = {0, };
szNewValue = szOrigValue;
}
void CDnChangeActionSetBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
{
char szBuff[128] = {0, };
szNewValue = szOrigValue;
}
#endif // PRE_ADD_PREFIX_SYSTE_RENEW