DragonNest/Server/DNGameServer/DNAggroRange.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

109 lines
2.7 KiB
C++

#include "Stdafx.h"
#include "DNAggroRange.h"
#include "DnMonsterActor.h"
#include "MAAiScript.h"
CDNAggroRange::CDNAggroRange()
{
m_pAI = NULL;
m_fThreatRange = 0.f;
m_fCognizanceThreatRange = 0.f;
m_fCognizanceGentleRange = 0.f;
}
void CDNAggroRange::Initialize( CDnMonsterActor* pMonsterActor, DNTableFileFormat* pSox )
{
m_pAI = static_cast<MAAiScript*>(pMonsterActor->GetAIBase());
int iItemID = pMonsterActor->GetMonsterClassID();
m_fThreatRange = static_cast<float>( pSox->GetFieldFromLablePtr( iItemID, "_ThreatRange" )->GetInteger() );
m_fCognizanceThreatRange = static_cast<float>( pSox->GetFieldFromLablePtr( iItemID, "_CognizanceThreatRange" )->GetInteger() ) ;
m_fCognizanceGentleRange = static_cast<float>( pSox->GetFieldFromLablePtr( iItemID, "_CognizanceGentleRange" )->GetInteger() );
}
float CDNAggroRange::GetThreatRange()
{
float fThreatRange = m_fThreatRange;
do
{
if( m_pAI == NULL )
break;
DnActorHandle hActor = m_pAI->GetActor();
if( !hActor )
break;
int iPercent = hActor->GetHPPercent();
for( UINT i=0 ; i<m_pAI->GetScriptData().m_AIAggroRange.size() ; ++i )
{
if( iPercent > m_pAI->GetScriptData().m_AIAggroRange[i].iSelfHPPercent )
break;
else
fThreatRange = static_cast<float>(m_pAI->GetScriptData().m_AIAggroRange[i].iThreatRange);
}
}while(false);
return fThreatRange;
}
float CDNAggroRange::GetCognizanceThreatRange()
{
float fCognizanceThreatRange = m_fCognizanceThreatRange;
do
{
if( m_pAI == NULL )
break;
DnActorHandle hActor = m_pAI->GetActor();
if( !hActor )
break;
int iPercent = hActor->GetHPPercent();
for( UINT i=0 ; i<m_pAI->GetScriptData().m_AIAggroRange.size() ; ++i )
{
if( iPercent > m_pAI->GetScriptData().m_AIAggroRange[i].iSelfHPPercent )
break;
else
fCognizanceThreatRange = static_cast<float>(m_pAI->GetScriptData().m_AIAggroRange[i].iCognizanceThreatRange);
}
}while(false);
return fCognizanceThreatRange;
}
float CDNAggroRange::GetCognizanceThreatRangeSq()
{
float fValue = GetCognizanceThreatRange();
return fValue*fValue;
}
float CDNAggroRange::GetCognizanceGentleRangeSq()
{
float fCognizanceGentleRange = m_fCognizanceGentleRange;
do
{
if( m_pAI == NULL )
break;
DnActorHandle hActor = m_pAI->GetActor();
if( !hActor )
break;
int iPercent = hActor->GetHPPercent();
for( UINT i=0 ; i<m_pAI->GetScriptData().m_AIAggroRange.size() ; ++i )
{
if( iPercent > m_pAI->GetScriptData().m_AIAggroRange[i].iSelfHPPercent )
break;
else
fCognizanceGentleRange = static_cast<float>(m_pAI->GetScriptData().m_AIAggroRange[i].iCognizanceGentleRange);
}
}while(false);
return fCognizanceGentleRange*fCognizanceGentleRange;
}