Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 07/21/22 in all areas

  1. 1 point
    bWolfie

    FCP debuff Strip

    Yup it seems this may be official behavior...it is silly though isn't it. A former dev on my server fixed this for me. If I recall, another issue is if you don't have an item equipped in that area, the skill Chemical Protection cannot be cast. I'm sure he wouldn't mind me sharing this here. Hopefully... Can't guarantee it will work or if all the code is the same as this was from an old revision. 1. Open skill.c - Find: case AM_CP_ARMOR: case AM_CP_HELM: { unsigned int equip[] = { EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP }; int index; if ( sd && (bl->type != BL_PC || (dstsd && pc->checkequip(dstsd, equip[skill_id - AM_CP_WEAPON]) < 0) || (dstsd && equip[skill_id - AM_CP_WEAPON] == EQP_SHIELD && pc->checkequip(dstsd, EQP_SHIELD) > 0 && (index = dstsd->equip_index[EQI_HAND_L]) >= 0 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type != IT_ARMOR)) ) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); map->freeblock_unlock(); // Don't consume item requirements return 0; } clif->skill_nodamage(src, bl, skill_id, skill_lv, break; } case AM_TWILIGHT1: Replace with: case AM_CP_ARMOR: case AM_CP_HELM: { if ( sd && (bl->type != BL_PC ) ) { clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); map->freeblock_unlock(); // Don't consume item requirements return 0; } clif->skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv))); if (tsc->data[SC_PROTECTWEAPON]) status_change_end(bl, SC_NOEQUIPWEAPON, INVALID_TIMER); if (tsc->data[SC_PROTECTSHIELD]) status_change_end(bl, SC_NOEQUIPSHIELD, INVALID_TIMER); if (tsc->data[SC_PROTECTARMOR]) status_change_end(bl, SC_NOEQUIPARMOR, INVALID_TIMER); if (tsc->data[SC_PROTECTHELM]) status_change_end(bl, SC_NOEQUIPHELM, INVALID_TIMER); break; } case AM_TWILIGHT1: 2. Then find: // Full Chemical Protection case CR_FULLPROTECTION: { unsigned int equip[] = { EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP }; int i, s = 0, skilltime = skill->get_time(skill_id, skill_lv); for ( i = 0; i < 4; i++ ) { if ( bl->type != BL_PC || (dstsd && pc->checkequip(dstsd, equip[i]) < 0) ) continue; if ( dstsd && equip[i] == EQP_SHIELD ) { short index = dstsd->equip_index[EQI_HAND_L]; if ( index >= 0 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type != IT_ARMOR ) continue; } sc_start(src, bl, (sc_type)(SC_PROTECTWEAPON + i), 100, skill_lv, skilltime); s++; } if ( sd && !s ) { And replace with: // Full Chemical Protection case CR_FULLPROTECTION: { int i, s = 0, skilltime = skill->get_time(skill_id, skill_lv); for ( i = 0; i < 4; i++ ) { if ( bl->type != BL_PC ) continue; sc_start(src, bl, (sc_type)(SC_PROTECTWEAPON + i), 100, skill_lv, skilltime); status_change_end(bl, (sc_type)(SC_NOEQUIPWEAPON + i), INVALID_TIMER); s++; } if ( sd && !s ) {
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.