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(); }
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(); }
BOOL CCrywolfAltar::CheckAltarValidContract(int iClass) { int iAltarNumber = this->GetAlatarNumber(iClass); CCrywolfAltarInfo * AltarInfo = &this->m_AltarInfo[iAltarNumber]; if ( AltarInfo->GetAltarState() == 1 ) return TRUE; return FALSE; }
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; }
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(); }
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; }
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; }
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; }
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); } }
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); } }