void CLatentEffectContainer::CheckLatentsWeaponBreak(uint8 slot) { for (uint16 i = 0; i < m_LatentEffectList.size(); ++i) { if( m_LatentEffectList.at(i)->GetConditionsID() == LATENT_WEAPON_BROKEN && m_LatentEffectList.at(i)->GetConditionsValue() == slot) { CItemWeapon* PWeaponMain = (m_POwner->equip[slot] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[slot])) : NULL; if( PWeaponMain && m_POwner->unlockedWeapons[PWeaponMain->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == slot ) { m_LatentEffectList.at(i)->Activate(); } } } }
void CLatentEffectContainer::CheckLatentsWeaponBreak(uint8 slot) { for (uint16 i = 0; i < m_LatentEffectList.size(); ++i) { if( m_LatentEffectList.at(i)->GetConditionsID() == LATENT_WEAPON_BROKEN && m_LatentEffectList.at(i)->GetConditionsValue() == slot) { CItemWeapon* PWeaponMain = (CItemWeapon*)m_POwner->getEquip((SLOTTYPE)slot); if( PWeaponMain && m_POwner->unlockedWeapons[PWeaponMain->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == slot ) { m_LatentEffectList.at(i)->Activate(); } } } }
void CLatentEffectContainer::CheckLatentsEquip(uint8 slot) { for (uint16 i = 0; i < m_LatentEffectList.size(); ++i) { if (m_LatentEffectList.at(i)->GetSlot() == slot) { switch(m_LatentEffectList.at(i)->GetConditionsID()) { case LATENT_HP_UNDER_PERCENT: if ((m_POwner->health.hp != NULL && m_POwner->health.maxhp != NULL) && ((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 <= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_OVER_PERCENT: if ((m_POwner->health.hp != NULL && m_POwner->health.maxhp != NULL) && ((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 >= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_UNDER_TP_UNDER_100: if ((m_POwner->health.hp != NULL && m_POwner->health.maxhp != NULL) && ((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 <= m_LatentEffectList.at(i)->GetConditionsValue() && m_POwner->health.tp < 100) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_OVER_TP_UNDER_100: if ((m_POwner->health.hp != NULL && m_POwner->health.maxhp != NULL) && ((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 >= m_LatentEffectList.at(i)->GetConditionsValue() && m_POwner->health.tp < 100) { m_POwner->addHP(4); m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_MP_UNDER_PERCENT: if ((m_POwner->health.mp != NULL && m_POwner->health.maxmp != NULL) && (float)(m_POwner->health.mp / m_POwner->health.maxmp)*100 <= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_MP_UNDER: if (m_POwner->health.mp <= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_TP_UNDER: if (m_POwner->health.tp < m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_TP_OVER: if (m_POwner->health.tp > m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_PET_ID: CheckLatentsPetType((PETTYPE)m_LatentEffectList.at(i)->GetConditionsValue()); break; case LATENT_SUBJOB: if( m_POwner->GetSJob() == m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } break; case LATENT_WEAPON_BROKEN: { CItemWeapon* PWeaponMain = (m_POwner->equip[SLOT_MAIN] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_MAIN])) : NULL; CItemWeapon* PWeaponSub = (m_POwner->equip[SLOT_SUB] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_SUB])) : NULL; CItemWeapon* PWeaponRanged = (m_POwner->equip[SLOT_RANGED] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_RANGED])) : NULL; if( PWeaponMain && m_POwner->unlockedWeapons[PWeaponMain->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_MAIN ) { m_LatentEffectList.at(i)->Activate(); } if( PWeaponSub && m_POwner->unlockedWeapons[PWeaponSub->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_SUB) { m_LatentEffectList.at(i)->Activate(); } if( PWeaponRanged && m_POwner->unlockedWeapons[PWeaponRanged->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_RANGED) { m_LatentEffectList.at(i)->Activate(); } break; } case LATENT_ZONE: if( m_LatentEffectList.at(i)->GetConditionsValue() == m_POwner->getZone()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_IN_DYNAMIS: if (m_POwner->isInDynamis()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_FOOD_ACTIVE: case LATENT_NO_FOOD_ACTIVE: CheckLatentsFoodEffect(); break; case LATENT_STATUS_EFFECT_ACTIVE: CheckLatentsStatusEffect(); break; case LATENT_JOB_IN_PARTY: CheckLatentsPartyJobs(); break; case LATENT_PARTY_MEMBERS: case LATENT_PARTY_MEMBERS_IN_ZONE: { if(m_POwner->PParty != NULL) CheckLatentsPartyMembers(m_POwner->PParty->members.size()); } break; case LATENT_AVATAR_IN_PARTY: CheckLatentsPartyAvatar(); break; case LATENT_MOON_FIRST_QUARTER: CheckLatentsMoonPhase(); break; case LATENT_TIME_OF_DAY: CheckLatentsDay(); break; case LATENT_HOUR_OF_DAY: CheckLatentsHours(); break; case LATENT_FIRESDAY: case LATENT_EARTHSDAY: case LATENT_WATERSDAY: case LATENT_WINDSDAY: case LATENT_DARKSDAY: case LATENT_ICEDAY: case LATENT_LIGHTNINGSDAY: case LATENT_LIGHTSDAY: CheckLatentsWeekDay(); break; case LATENT_JOB_LEVEL_EVEN: if (m_POwner->GetMLevel() % 2 == 0) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_JOB_LEVEL_ODD: if (m_POwner->GetMLevel() % 2 == 1) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_JOB_MULTIPLE_5: if (m_POwner->GetMLevel() % 5 == 0) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_JOB_MULTIPLE_10: if (m_POwner->GetMLevel() % 10 == 0) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_JOB_MULTIPLE_13_NIGHT: { TIMETYPE VanadielTOTD = CVanaTime::getInstance()->SyncTime(); if (m_POwner->GetMLevel() % 13 == 0 && (VanadielTOTD == TIME_NIGHT)) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } } break; case LATENT_JOB_LEVEL_BELOW: if (m_POwner->GetMLevel() < m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_JOB_LEVEL_ABOVE: if (m_POwner->GetMLevel() >= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_WEATHER_ELEMENT: if (zoneutils::GetZone(m_POwner->getZone())->GetWeatherElement() == m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_NATION_CONTROL: CheckLatentsZone(); break; default: ShowWarning("Latent ID %d unhandled in CheckLatentsEquip\n", m_LatentEffectList.at(i)->GetConditionsID()); break; } } } m_POwner->UpdateHealth(); }
void CLatentEffectContainer::CheckLatentsEquip(uint8 slot) { for (uint16 i = 0; i < m_LatentEffectList.size(); ++i) { if (m_LatentEffectList.at(i)->GetSlot() == slot) { switch(m_LatentEffectList.at(i)->GetConditionsID()) { case LATENT_HP_UNDER_PERCENT: if (((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 <= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_OVER_PERCENT: if (((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 >= m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_UNDER_TP_UNDER_100: if (((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 <= m_LatentEffectList.at(i)->GetConditionsValue() && m_POwner->health.tp < 100) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_HP_OVER_TP_UNDER_100: if (((float)m_POwner->health.hp / m_POwner->health.maxhp )*100 >= m_LatentEffectList.at(i)->GetConditionsValue() && m_POwner->health.tp < 100) { m_POwner->addHP(4); m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_TP_UNDER_100: if (m_POwner->health.tp < 100) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_TP_OVER_100: if (m_POwner->health.tp >= 100) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_SUBJOB: if( m_POwner->GetSJob() == m_LatentEffectList.at(i)->GetConditionsValue()) { m_LatentEffectList.at(i)->Activate(); } break; case LATENT_WEAPON_BROKEN: { CItemWeapon* PWeaponMain = (m_POwner->equip[SLOT_MAIN] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_MAIN])) : NULL; CItemWeapon* PWeaponSub = (m_POwner->equip[SLOT_SUB] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_SUB])) : NULL; CItemWeapon* PWeaponRanged = (m_POwner->equip[SLOT_RANGED] != 0) ? (CItemWeapon*)(m_POwner->getStorage(LOC_INVENTORY)->GetItem(m_POwner->equip[SLOT_RANGED])) : NULL; if( PWeaponMain && m_POwner->unlockedWeapons[PWeaponMain->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_MAIN ) { m_LatentEffectList.at(i)->Activate(); } if( PWeaponSub && m_POwner->unlockedWeapons[PWeaponSub->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_SUB) { m_LatentEffectList.at(i)->Activate(); } if( PWeaponRanged && m_POwner->unlockedWeapons[PWeaponRanged->getUnlockId()-1].unlocked && m_LatentEffectList.at(i)->GetSlot() == SLOT_RANGED) { m_LatentEffectList.at(i)->Activate(); } break; } case LATENT_ZONE: if( m_LatentEffectList.at(i)->GetConditionsValue() == m_POwner->getZone()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; case LATENT_IN_DYNAMIS: if (m_POwner->isInDynamis()) { m_LatentEffectList.at(i)->Activate(); } else { m_LatentEffectList.at(i)->Deactivate(); } break; } } } }