示例#1
0
void CCrywolfAltar::ResetAltarUserIndex(int iAltarObjIndex, int iClass)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

	if ( gObjIsConnected(AltarInfo->m_iUserIndex) != FALSE )
	{
		MsgOutput(AltarInfo->m_iUserIndex, lMsg.Get(MSGGET(13, 4)), iAltarNumber);
		CLog.LogAdd("[ Crywolf ][Altar Op.] [%s][%s] Remove contract Altar[%d]",
		gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name,
		iAltarNumber);
	}

	if ( AltarInfo->m_iContractCount >= MAX_ALTAR_CONTRACTS )
	{
		AltarInfo->SetAltarState(3);

		memset(gObj[iAltarObjIndex].m_ViewSkillState, 0, sizeof(gObj[iAltarObjIndex].m_ViewSkillState));
		gObj[iAltarObjIndex].m_ViewSkillState[eVS_ALTAR_MAX_CONTRACT] = 1;
		GCStateInfoSend(&gObj[iAltarObjIndex], 1, eVS_ALTAR_MAX_CONTRACT);
	}
	else
	{
		memset(gObj[iAltarObjIndex].m_ViewSkillState, 0, sizeof(gObj[iAltarObjIndex].m_ViewSkillState));
		gObj[iAltarObjIndex].m_ViewSkillState[eVS_POTION_SOUL] = 1;
		GCStateInfoSend(&gObj[iAltarObjIndex], 1, eVS_POTION_SOUL);
		AltarInfo->SetAltarState(0);
	}

	AltarInfo->m_iUserIndex = -1;
	AltarInfo->m_dwAppliedContractTime = 0;
	AltarInfo->m_dwValidContractTime = 0;
	AltarInfo->m_dwLastValidContractTime = GetTickCount();
}
示例#2
0
void CCrywolfAltar::SetAltarObjIndex(int iClass, int iObjIndex)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	this->ResetAltar(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];
	AltarInfo->SetAltarIndex(iObjIndex);
}
int CCrywolfAltar::GetPriestMaxHPSum()
{
    int iPriestHPSum = 0;

    for ( int i=0; i<MAX_CRYWOLF_ALTAR; i++)
    {
        CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[i];

        if ( AltarInfo->GetAltarState() != 1 )
        {
            continue;
        }

        if ( !gObjIsConnected(AltarInfo->m_iUserIndex))
        {
            continue;
        }

        LPOBJ lpUserObj = &gObj[AltarInfo->m_iUserIndex];

        int AddLife = 0;

        gObjCheckUsedBuffEffect(lpUserObj, AT_SWELL_LIFE, &AddLife, 0); //season 3.0 add-on

        iPriestHPSum += lpUserObj->AddLife + lpUserObj->MaxLife + AddLife;
    }

    return iPriestHPSum;
}
int CCrywolfAltar::GetPriestHPSum()
{
    int iPriestHPSum = 0;

    for ( int i=0; i<MAX_CRYWOLF_ALTAR; i++)
    {
        CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[i];

        if ( AltarInfo->GetAltarState() != 1 )
        {
            continue;
        }

        if ( !gObjIsConnected(AltarInfo->m_iUserIndex))
        {
            continue;
        }

        LPOBJ lpUserObj = &gObj[AltarInfo->m_iUserIndex];

        iPriestHPSum += lpUserObj->Life;
    }

    return iPriestHPSum;
}
void CCrywolfAltar::ResetAltarUserIndex(int iAltarObjIndex, int iClass)
{
    int iAltarNumber = this->GetAlatarNumber(iClass);
    CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

    if ( gObjIsConnected(AltarInfo->m_iUserIndex) != FALSE )
    {
        MsgOutput(AltarInfo->m_iUserIndex, lMsg.Get(MSGGET(13, 4)), iAltarNumber);
        LogAddTD("[ Crywolf ][Altar Op.] [%s][%s] Remove contract Altar[%d]", gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);
    }

    if ( AltarInfo->m_iContractCount >= MAX_ALTAR_CONTRACTS )
    {
        AltarInfo->SetAltarState(3);
        gObjAddBuffEffect(&gObj[iAltarObjIndex], AT_CW_ALTAR_INACTIVE, 0, 0, 0, 0, -10);
    }
    else
    {
        gObjAddBuffEffect(&gObj[iAltarObjIndex], AT_CW_ALTAR_ACTIVE, 0, 0, 0, 0, -10);
        AltarInfo->SetAltarState(0);
    }

    AltarInfo->m_iUserIndex = -1;
    AltarInfo->m_dwAppliedContractTime = 0;
    AltarInfo->m_dwValidContractTime = 0;
    AltarInfo->m_dwLastValidContractTime = GetTickCount();
}
示例#6
0
BOOL CCrywolfAltar::CheckAltarValidContract(int iClass)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

	if ( AltarInfo->GetAltarState() == 1 )
		return TRUE;

	return FALSE;
}
示例#7
0
BOOL CCrywolfAltar::SetAltarUserIndex(int iAltarObjIndex, int iClass, int iUserIndex)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];
	DWORD dwCurrentTime = GetTickCount();

	if ( gObjIsConnected(AltarInfo->m_iUserIndex) != FALSE )
	{
		MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 253)), iAltarNumber);
		return FALSE;
	}

	if ( (dwCurrentTime-AltarInfo->m_dwLastValidContractTime) < 10000 )
	{
		MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 254)), iAltarNumber);
		return FALSE;
	}

	if ( AltarInfo->m_iContractCount > MAX_ALTAR_CONTRACTS ) 
	{
		MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 255)), iAltarNumber);
		return FALSE;
	}

	if ( abs(gObj[iAltarObjIndex].Y - gObj[iUserIndex].Y) > 0 || abs(gObj[iAltarObjIndex].X - gObj[iUserIndex].X) > 0 )
	{
		MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 0)), iAltarNumber);
		return FALSE;
	}

	AltarInfo->SetAltarState(2);
	AltarInfo->m_iUserIndex = iUserIndex;
	AltarInfo->m_dwAppliedContractTime = dwCurrentTime;
	AltarInfo->m_dwValidContractTime = dwCurrentTime + 5000;	// It Get Active after 5 Seconds
	AltarInfo->m_dwLastValidContractTime = dwCurrentTime;
	AltarInfo->m_iContractCount++;

	memset(gObj[iAltarObjIndex].m_ViewSkillState, 0, sizeof(gObj[iAltarObjIndex].m_ViewSkillState));
	gObj[iAltarObjIndex].m_ViewSkillState[eVS_ALTAR_ATTEMP_CONTRACT] = 1;
	GCStateInfoSend(&gObj[iAltarObjIndex], 1, eVS_ALTAR_VALID_CONTRACT);

	UTIL.SendCrywolfUserAnyMsg(2, lMsg.Get(MSGGET(13, 1)), gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

	CLog.LogAdd("[ Crywolf ][Altar Op.] [%s][%s] Attempt to contract Altar[%d]",
		gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name,
		iAltarNumber);

	MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 2)));
	MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 3)));

	return TRUE;
}
示例#8
0
void CCrywolfAltar::ResetAltar(int iClass)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

	if ( AltarInfo->m_iAltarIndex == -1 )
		return;

	memset(gObj[AltarInfo->m_iAltarIndex].m_ViewSkillState, 0, sizeof(gObj[AltarInfo->m_iAltarIndex].m_ViewSkillState));
	GCStateInfoSend(&gObj[AltarInfo->m_iAltarIndex], 0, 0); // CHECAR

	AltarInfo->Reset();
}
void CCrywolfAltar::ResetAltar(int iClass)
{
    int iAltarNumber = this->GetAlatarNumber(iClass);

    CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

    if ( AltarInfo->m_iAltarIndex == -1 )
    {
        return;
    }

    gObjClearBuffEffect(&gObj[AltarInfo->m_iAltarIndex], CLEAR_TYPE_LOGOUT);

    AltarInfo->Reset();
}
示例#10
0
BOOL CCrywolfAltar::SetAltarUserIndex(int iAltarObjIndex, int iClass, int iUserIndex)
{
    int iAltarNumber = this->GetAlatarNumber(iClass);
    CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];
    DWORD dwCurrentTime = GetTickCount();

    if ( gObjIsConnected(AltarInfo->m_iUserIndex) != FALSE )
    {
        MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 253)), iAltarNumber);
        return FALSE;
    }

    if ( (dwCurrentTime-AltarInfo->m_dwLastValidContractTime) < 10000 )
    {
        MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 254)), iAltarNumber);
        return FALSE;
    }

    if ( AltarInfo->m_iContractCount > MAX_ALTAR_CONTRACTS )
    {
        MsgOutput(iUserIndex, lMsg.Get(MSGGET(12, 255)), iAltarNumber);
        return FALSE;
    }

    if ( abs(gObj[iAltarObjIndex].Y - gObj[iUserIndex].Y) > 0 || abs(gObj[iAltarObjIndex].X - gObj[iUserIndex].X) > 0 )
    {
        MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 0)), iAltarNumber);
        return FALSE;
    }

    AltarInfo->SetAltarState(2);
    AltarInfo->m_iUserIndex = iUserIndex;
    AltarInfo->m_dwAppliedContractTime = dwCurrentTime;
    AltarInfo->m_dwValidContractTime = dwCurrentTime + 5000;
    AltarInfo->m_dwLastValidContractTime = dwCurrentTime;
    AltarInfo->m_iContractCount++;

    gObjAddBuffEffect(&gObj[iAltarObjIndex], AT_CW_ALTAR_ATTEMPT, 0, 0, 0, 0, -10);

    UTIL.SendCrywolfUserAnyMsg(2, lMsg.Get(MSGGET(13, 1)), gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

    LogAddTD("[ Crywolf ][Altar Op.] [%s][%s] Attempt to contract Altar[%d]", gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

    MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 2)));
    MsgOutput(iUserIndex, lMsg.Get(MSGGET(13, 3)));

    return TRUE;
}
示例#11
0
int CCrywolfAltar::GetContractedAltarCount()
{
	int iContractedAltarCount = 0;

	for ( int i=0;i<MAX_CRYWOLF_ALTAR;i++)
	{
		CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[i];

		if ( AltarInfo->GetAltarState() != 1 )
			continue;

		iContractedAltarCount++;
	}

	return iContractedAltarCount;
}
示例#12
0
int CCrywolfAltar::GetPriestMaxHPSum()
{
	int iPriestHPSum = 0;

	for ( int i=0;i<MAX_CRYWOLF_ALTAR;i++)
	{
		CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[i];

		if ( AltarInfo->GetAltarState() != 1 )
			continue;

		if ( !gObjIsConnected(AltarInfo->m_iUserIndex))
			continue;

		LPOBJ lpUserObj = &gObj[AltarInfo->m_iUserIndex];
		iPriestHPSum += (int)(lpUserObj->AddLife + lpUserObj->MaxLife + lpUserObj->m_SkillAddLife);
	}

	return iPriestHPSum;
}
示例#13
0
void CCrywolfAltar::SetAltarValidContract(int iAltarObjIndex, int iClass)
{
	int iAltarNumber = this->GetAlatarNumber(iClass);
	CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

	if ( AltarInfo->GetAltarState() != 2 )
		return;

	if ( AltarInfo->m_dwValidContractTime < (int)GetTickCount() )
	{
		MsgOutput(AltarInfo->m_iUserIndex, lMsg.Get(MSGGET(12, 251)), iAltarNumber);
		UTIL.SendCrywolfUserAnyMsg(2, lMsg.Get(MSGGET(12, 252)), gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

		CLog.LogAdd("[ Crywolf ][Altar Op.]  [%s][%s] Set Valid Contract Altar[%d]",
			gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

		AltarInfo->SetAltarState(1);

		memset(gObj[iAltarObjIndex].m_ViewSkillState,0, sizeof(gObj[iAltarObjIndex].m_ViewSkillState));
		gObj[iAltarObjIndex].m_ViewSkillState[eVS_ALTAR_VALID_CONTRACT] = 1;
		GCStateInfoSend(&gObj[iAltarObjIndex], 1, eVS_ALTAR_VALID_CONTRACT);
	}
}
示例#14
0
void CCrywolfAltar::SetAltarValidContract(int iAltarObjIndex, int iClass)
{
    int iAltarNumber = this->GetAlatarNumber(iClass);
    CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber];

    if ( AltarInfo->GetAltarState() != 2 )
    {
        return;
    }

    if ( AltarInfo->m_dwValidContractTime < GetTickCount() )
    {
        MsgOutput(AltarInfo->m_iUserIndex, lMsg.Get(MSGGET(12, 251)), iAltarNumber);

        UTIL.SendCrywolfUserAnyMsg(2, lMsg.Get(MSGGET(12, 252)), gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

        LogAddTD("[ Crywolf ][Altar Op.]  [%s][%s] Set Valid Contract Altar[%d]", gObj[AltarInfo->m_iUserIndex].AccountID, gObj[AltarInfo->m_iUserIndex].Name, iAltarNumber);

        AltarInfo->SetAltarState(1);

        gObjAddBuffEffect(&gObj[iAltarObjIndex], AT_CW_ALTAR_STATUS, 0, 0, 0, 0, -10);
    }
}