BOOL TMonsterSkillElement::ApplyElementDoubleHP(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( lpTargetObj->Connected < PLAYER_PLAYING ) return FALSE; gObjAddMsgSendDelay(lpObj, 55, iTargetIndex, 400, 0); gObjAddMsgSendDelay(lpObj, 55, iTargetIndex, 1000, 0); return FALSE; }
BOOL TMonsterSkillElement::ApplyElementNormalAttack(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( lpTargetObj->Connected < PLAYER_PLAYING ) return FALSE; if ( this->m_iNullifiedSkill == -1 ) this->m_iNullifiedSkill = 0; if ( this->m_iIncAndDecType != -1 && this->m_iIncAndDecValue != -1 ) { if ( lpTargetObj->pInventory[9].m_Type != ITEMGET(this->m_iIncAndDecType, this->m_iIncAndDecValue) && lpTargetObj->pInventory[10].m_Type != ITEMGET(this->m_iIncAndDecType, this->m_iIncAndDecValue) && lpTargetObj->pInventory[11].m_Type != ITEMGET(this->m_iIncAndDecType, this->m_iIncAndDecValue) ) { lpTargetObj->Life = 0; gObjLifeCheck(lpTargetObj, lpObj, 100, 0, 0, 0, 0 ,0); return FALSE; } } if ( this->m_iNullifiedSkill == 0 ) { gObjAttack(lpObj, lpTargetObj, 0, 0, 0, 0 ,0); } else { gObjAddMsgSendDelay(lpObj, 55, iTargetIndex, this->m_iNullifiedSkill, 0); } return FALSE; }
BOOL TMonsterSkillElement::ApplyElementPoison(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( lpTargetObj->Connected < PLAYER_PLAYING ) return FALSE; if ( lpTargetObj->m_PoisonType == 0 ) { if ( this->m_iNullifiedSkill < 1 ) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->m_PoisonType = 1; lpTargetObj->m_PoisonBeattackCount = this->m_iIncAndDecValue; lpTargetObj->lpAttackObj = lpObj; lpTargetObj->m_ViewSkillState[eVS_POISON] = 1; GCStateInfoSend(lpTargetObj, 1, eVS_POISON); } } else { gObjAddMsgSendDelay(lpObj, 56, iTargetIndex, this->m_iNullifiedSkill, this->m_iIncAndDecValue); } } return FALSE; }
BOOL TMonsterSkillElement::ApplyElementPoison(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( lpTargetObj->Connected < PLAYER_PLAYING ) return FALSE; if ( gObjCheckUsedBuffEffect(lpTargetObj,BUFF_POISON) == FALSE ) { if ( this->m_iNullifiedSkill < 1 ) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->lpAttackObj = lpObj; gObjAddBuffEffect(lpTargetObj,BUFF_POISON,ADD_OPTION_REDUCE_HPPERC,3,0,0,m_iIncAndDecValue); } } else { gObjAddMsgSendDelay(lpObj, 56, iTargetIndex, this->m_iNullifiedSkill, this->m_iIncAndDecValue); } } return FALSE; }
BOOL TMonsterSkillElement::ApplyElementPush(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( lpObj->Class == 459 && lpObj->Connected == PLAYER_PLAYING && lpObj->MapNumber == MAP_INDEX_RAKLIONBOSS && iIndex == iTargetIndex ) { return false; } if ( this->m_iNullifiedSkill == -1 ) this->m_iNullifiedSkill = 0; if ( this->m_iIncAndDecValue < 1 ) this->m_iIncAndDecValue = 3; if ( this->m_iNullifiedSkill == 0 ) { gObjBackSpring2(lpTargetObj, lpObj,this->m_iIncAndDecValue); } else { gObjAddMsgSendDelay(lpObj, 57, iTargetIndex, this->m_iNullifiedSkill, this->m_iIncAndDecValue); } return FALSE; }
void GJPBillCeckRecv(SDHP_BILLSEARCH_RESULT * lpMsg) { int aIndex = lpMsg->Number ; char szId[11]; szId[10] = 0; memcpy(szId, lpMsg->Id, sizeof(lpMsg->Id)); if (gObjIsAccontConnect(aIndex, szId) == 0 ) { return ; } if ( m_ObjBill[aIndex].SetBill( lpMsg->PayCode, lpMsg->EndTime, &lpMsg->EndDays[0] ) == TRUE ) { gObjAddMsgSendDelay(&gObj[aIndex], 1000, aIndex, 100, 0); } }
BOOL TMonsterSkillElement::ApplyElementPush(int iIndex, int iTargetIndex) { LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpTargetObj = &gObj[iTargetIndex]; if ( this->m_iNullifiedSkill == -1 ) this->m_iNullifiedSkill = 0; if ( this->m_iIncAndDecValue < 1 ) this->m_iIncAndDecValue = 3; if ( this->m_iNullifiedSkill == 0 ) { gObjBackSpring2(lpTargetObj, lpObj,this->m_iIncAndDecValue); } else { gObjAddMsgSendDelay(lpObj, 57, iTargetIndex, this->m_iNullifiedSkill, this->m_iIncAndDecValue); } return FALSE; }
BOOL CObjBaseAttack::ResistanceCheck(LPOBJ lpObj, LPOBJ lpTargetObj, int skill) { //missing objects? maybe from _CS side or deleted in 1.01.00 if( lpTargetObj->Type != OBJ_USER) { if(lpTargetObj->Class == 277 || lpTargetObj->Class == 283 || lpTargetObj->Class == 288 || lpTargetObj->Class == 278 || lpTargetObj->Class == 215 || lpTargetObj->Class == 216 || lpTargetObj->Class == 217 || lpTargetObj->Class == 218 || lpTargetObj->Class == 219) { return FALSE; } } if( lpTargetObj->Type != OBJ_USER) { if( CRYWOLF_ALTAR_CLASS_RANGE(lpTargetObj->Class) != FALSE || CRYWOLF_STATUE_CHECK(lpTargetObj->Class) != FALSE ) //HermeX Fix @28/01/2010 { return FALSE; } } if ( skill == 62 ) { gObjBackSpring2(lpTargetObj, lpObj, 3); } if(g_MasterSkillSystem.GetBaseMasterLevelSkill(skill) == 512) //Earth Quake Master { gObjBackSpring2(lpTargetObj, lpObj, 3); } if( skill == 516) { gObjBackSpring2(lpTargetObj, lpObj, 3); } if ( skill == 19 || skill == 20 || skill == 21 || skill == 22 || skill == 23 || skill == 260 || skill == 261 || skill == 262 || skill == 270 || skill == 326 || skill == 327 || skill == 328 || skill == 329 || skill == 479 ) { gObjAddMsgSendDelay(lpTargetObj, 2, lpObj->m_Index, 150, 0); } else if ( skill == 3 || skill == 379 || skill == 480 ) // Poison { if ( retResistance(lpTargetObj, 2) == 0 ) { gObjAddMsgSendDelay(lpTargetObj, 2, lpObj->m_Index, 150, 0); return TRUE; } return FALSE; } else if ( skill == 1 || skill == 384 ) { if(gObjCheckUsedBuffEffect(lpObj, AT_POISON) == 0) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->lpAttackObj = lpObj; gObjAddBuffEffect(lpTargetObj, AT_POISON, 19, 3, 0, 0, 20); return TRUE; } else { return FALSE; } } else { return FALSE; } } else if ( skill == 38 || skill == 387 ) // Death Poison { if(gObjCheckUsedBuffEffect(lpTargetObj, AT_POISON) == 0) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->lpAttackObj = lpObj; gObjAddBuffEffect(lpTargetObj, AT_POISON, 19, 3, 0, 0, 10); return TRUE; } else { return FALSE; } } else { return FALSE; } return TRUE; } else if ( skill == 7 || skill == 39 || g_MasterSkillSystem.GetBaseMasterLevelSkill(skill) == 450 || skill == 389 || skill == 489 ) //Season4 add-on { if(gObjCheckUsedBuffEffect(lpTargetObj, AT_ICE) == 0) { if ( retResistance(lpTargetObj, 0) == 0 ) { lpTargetObj->lpAttackObj = lpObj; lpTargetObj->DelayActionTime = 800; lpTargetObj->DelayLevel = 1; gObjAddBuffEffect(lpTargetObj, AT_ICE, 20, 0, 0, 0, 10); } else { return FALSE; } } else { return FALSE; } } else if ( skill == 51 || skill == 424 ) // Ice Arrow { if(gObjCheckUsedBuffEffect(lpTargetObj, AT_ICE_ARROW) == 0) { if ( retResistance(lpTargetObj, 0) == 0 ) { gObjAddBuffEffect(lpTargetObj, AT_ICE_ARROW, 0, 0, 0, 0, 7); lpTargetObj->PathCount = 0; lpTargetObj->PathStartEnd = 0; //Season3 add-on gObjSetPosition(lpTargetObj->m_Index, lpTargetObj->X, lpTargetObj->Y); } else { return FALSE; } } else { return FALSE; } } return TRUE; }
bool CObjBaseAttack::ResistanceCheck(LPOBJ lpObj, LPOBJ lpTargetObj, int skill) { bool bResult = true; // ---- switch ( skill ) { // ---- Poison case 1: if ( lpTargetObj->m_PoisonType == 0 ) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->m_PoisonType = 1; lpTargetObj->m_PoisonBeattackCount = 20; lpTargetObj->lpAttackObj = lpObj; lpTargetObj->m_ViewSkillState[eVS_POISON] = 1; } else { bResult = false; } } else { bResult = false; } break; // ---- Lightning case 3: if ( retResistance(lpTargetObj, 2) == 0 ) { gObjAddMsgSendDelay(lpTargetObj, 2, lpObj->m_Index, 150, 0); } else { bResult = false; } break; // ---- Decay case 38: if ( lpTargetObj->m_PoisonType == 0 || lpTargetObj->m_PoisonType == 1 ) { if ( retResistance(lpTargetObj, 1) == 0 ) { lpTargetObj->m_PoisonType = 38; lpTargetObj->m_PoisonBeattackCount = 10; lpTargetObj->lpAttackObj = lpObj; lpTargetObj->m_ViewSkillState[eVS_POISON] = 1; GCStateInfoSend(lpTargetObj, 1, eVS_POISON); } else { bResult = false; } } else { bResult = false; } break; // ---- Earthquake case 62: gObjBackSpring2(lpTargetObj, lpObj, 3); break; // ---- Ice, Ice Storm, Chain Drive case 7: case 39: case 262: if (lpTargetObj->m_ColdBeattackCount == 0 ) { if ( retResistance(lpTargetObj, 0) == 0 ) { lpTargetObj->m_ColdBeattackCount = 10; lpTargetObj->lpAttackObj = lpObj; lpTargetObj->DelayActionTime = 800; lpTargetObj->DelayLevel = 1; lpTargetObj->m_IceType = skill; GCStateInfoSend(lpTargetObj, 1, eVS_ICE); } else { bResult = false; } } else { bResult = false; } break; // ---- Weapon Skills case 19: case 20: case 21: case 22: case 23: case 260: case 261: gObjAddMsgSendDelay(lpTargetObj, 2, lpObj->m_Index, 150, 0); break; // ---- Ice Arrow case 51: bResult = false; break; } // ---- return bResult; }