Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef __SOUL_SYSTEM__
- case ITEM_SOUL:
- {
- BYTE bSoulGrade = item->GetValue(1);
- DWORD dwPlayTimeBonus = 0;
- int iSoulAttacks = item->GetValue(2);
- DWORD dwBonusDuration = item->GetSocket(0);
- DWORD dwPlayTime = item->GetSocket(3);
- if (bSoulGrade == BASIC_SOUL)
- {
- if (dwPlayTime >= 60)
- dwPlayTimeBonus = item->GetValue(3);
- }
- else if (bSoulGrade == GLEAMING_SOUL)
- {
- if (dwPlayTime >= 60)
- dwPlayTimeBonus = item->GetValue(3);
- }
- else if (bSoulGrade == LUSTROUS_SOUL)
- {
- if (dwPlayTime >= 60 && dwPlayTime < 120)
- dwPlayTimeBonus = item->GetValue(3);
- else if (dwPlayTime >= 120)
- dwPlayTimeBonus = item->GetValue(4);
- }
- else if (bSoulGrade == PRISMATIC_SOUL)
- {
- if (dwPlayTime >= 60 && dwPlayTime < 120)
- dwPlayTimeBonus = item->GetValue(3);
- else if (dwPlayTime >= 120 && dwPlayTime < 180)
- dwPlayTimeBonus = item->GetValue(4);
- else if (dwPlayTime >= 180)
- dwPlayTimeBonus = item->GetValue(5);
- }
- else if (bSoulGrade == ILUMINED_SOUL)
- {
- if (dwPlayTime >= 60 && dwPlayTime < 120)
- dwPlayTimeBonus = item->GetValue(3);
- else if (dwPlayTime >= 120 && dwPlayTime < 180)
- dwPlayTimeBonus = item->GetValue(4);
- else if (dwPlayTime >= 180)
- dwPlayTimeBonus = item->GetValue(5);
- }
- else
- {
- break;
- }
- EAffectTypes type = AFFECT_NONE;
- EAffectBits flag = AFF_NONE;
- switch (item->GetSubType())
- {
- case RED_SOUL:
- type = AFFECT_SOUL_RED;
- flag = AFF_SOUL_RED;
- break;
- case BLUE_SOUL:
- type = AFFECT_SOUL_BLUE;
- flag = AFF_SOUL_BLUE;
- break;
- }
- if (AFFECT_NONE == type)
- break;
- CAffect* pAffect = FindAffect(type);
- CAffect* pAffectMixed = FindAffect(AFFECT_SOUL_MIX);
- if (pAffect == NULL || pAffectMixed == NULL)
- {
- EPointTypes bonus = POINT_NONE;
- if (type == AFFECT_SOUL_RED)
- {
- bonus = POINT_NORMAL_HIT_DAMAGE_BONUS;
- }
- else if (type == AFFECT_SOUL_BLUE)
- {
- bonus = POINT_SKILL_DAMAGE_BONUS;
- }
- AddAffect(type, bonus, dwPlayTimeBonus, item->GetID(), dwBonusDuration, 0, true, false);
- if (FindAffect(AFFECT_SOUL_RED) && FindAffect(AFFECT_SOUL_BLUE))
- AddAffect(AFFECT_SOUL_MIX, POINT_NONE, 0, AFF_SOUL_MIX, INFINITE_AFFECT_DURATION, 0, true, false);
- else
- AddAffect(AFFECT_SOUL_MIX, POINT_NONE, 0, flag, INFINITE_AFFECT_DURATION, 0, true, false);
- item->Lock(true);
- item->SetSocket(1, true);
- }
- else
- {
- if (item->GetID() == pAffect->dwFlag && flag == pAffectMixed->dwFlag)
- {
- RemoveAffect(pAffect);
- RemoveAffect(pAffectMixed);
- item->Lock(false);
- item->SetSocket(1, false);
- }
- else
- {
- LPITEM old = FindItemByID(pAffect->dwFlag);
- if (NULL != old)
- {
- old->Lock(false);
- old->SetSocket(1, false);
- }
- RemoveAffect(pAffect);
- if (FindAffect(AFFECT_SOUL_RED))
- AddAffect(AFFECT_SOUL_MIX, POINT_NONE, 0, AFF_SOUL_RED, INFINITE_AFFECT_DURATION, 0, true, false);
- else if (FindAffect(AFFECT_SOUL_BLUE))
- AddAffect(AFFECT_SOUL_MIX, POINT_NONE, 0, AFF_SOUL_BLUE, INFINITE_AFFECT_DURATION, 0, true, false);
- else
- RemoveAffect(pAffectMixed);
- item->Lock(false);
- item->SetSocket(1, false);
- }
- }
- }
- break;
- #endif
- case ITEM_NONE:
- sys_err("Item type NONE %s", item->GetName());
- break;
- default:
- sys_log(0, "UseItemEx: Unknown type %s %d", item->GetName(), item->GetType());
- return false;
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement