__int64 __fastcall CNPC::AddUseSkillDesireEx2(CNPC *this, int nTargetID, __int64 nSkillNameID, int skill_type, int action_move_type, int bForce, float value, int desireFlag, int OriginId, int Idtype)
{
wchar_t *v10; // rax
wchar_t *v12; // rax
float v13; // xmm0_4
ReverseHateManager *v14; // rax
float boost; // [rsp+30h] [rbp-148h]
int v16; // [rsp+50h] [rbp-128h]
int v17; // [rsp+5Ch] [rbp-11Ch]
User *v18; // [rsp+60h] [rbp-118h]
float v19; // [rsp+78h] [rbp-100h]
CCreature *v20; // [rsp+80h] [rbp-F8h]
CDesire result; // [rsp+A0h] [rbp-D8h]
CNPC *v22; // [rsp+180h] [rbp+8h]
int sid; // [rsp+188h] [rbp+10h]
__int64 nSkillNameIDa; // [rsp+190h] [rbp+18h]
nSkillNameIDa = nSkillNameID;
sid = nTargetID;
v22 = this;
v16 = *(_DWORD *)(*((_QWORD *)NtCurrentTeb()->Reserved1[11] + tls_index) + 824736i64);
v17 = GuardHelper::_callStackDepth[v16]++;
GuardHelper::_pszCallStack[1000 * v16 + v17] = _FUNC_NAME___1121;
GuardHelper::_dwCallStackStartTick[v16][v17] = GetTickCount();
if ( nSkillNameIDa < 0 )
{
v10 = v22->CCreature::GetName(v22);
CLog::Add(&Log, LOG_ERROR, L"[%s]SkillNameID[%I64d] is not Valid", v10, nSkillNameIDa);
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
if ( OriginId < 0 )
{
v12 = v22->CCreature::GetName(v22);
CLog::Add(&Log, LOG_ERROR, L"[%s]OriginID[%d] is not Valid", v12, OriginId);
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
if ( !sid )
{
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
if ( !CNPC::CanAct(v22) )
{
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
if ( !(unsigned int)CNPC::Skill_GetTargetType(v22, nSkillNameIDa) )
sid = v22->m_nId;
if ( (sid & 0xF8000000) >> 27 == 9 )
{
v20 = CSmartIdManager<CCreature,120000,8>::GetObjectW(&g_CreatureSmartIdManager, sid);
if ( !v20 )
{
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
if ( v22->m_nId != sid && !v20->CCreature::IsTargetable(v20) )
{
--GuardHelper::_callStackDepth[v16];
return 0i64;
}
}
v13 = COERCE_DOUBLE(*(unsigned __int64 *)&value & _xmm);
v19 = v13;
boost = CAIParameter::GetDesireBoostValue(&v22->m_AIParam, PS_USE_SKILL);
CDesireFactory::MakeUseSkill(
&result,
sid,
nSkillNameIDa,
(NpcAttackMoveType)action_move_type,
bForce,
value,
boost,
desireFlag,
OriginId,
Idtype);
v18 = User::GetObjectW(sid);
if ( v18 && (int)CNPC::Skill_GetEffectPoint(v22, nSkillNameIDa) < 0 )
{
if ( g_nMaxChaseCount <= 0 )
{
v18->CCreature::AddReverseHate(v18, v22->m_nId, (int)v19);
}
else
{
v14 = ReverseHateManager::inst();
ReverseHateManager::AddHate(v14, v18->m_nId, v22->m_nId);
}
}
CDesirePQ::AddValue(&v22->m_DesirePQ, &result);
--GuardHelper::_callStackDepth[v16];
return 1i64;
}