|
@@ -6177,7 +6177,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|
case AM_CP_HELM:
|
|
case AM_CP_HELM:
|
|
{
|
|
{
|
|
unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP};
|
|
unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP};
|
|
- enum sc_type scid = (sc_type)(SC_STRIPWEAPON + (skillid - AM_CP_WEAPON));
|
|
|
|
|
|
|
|
if( sd && ( bl->type != BL_PC || ( dstsd && pc_checkequip(dstsd,equip[skillid - AM_CP_WEAPON]) < 0 ) ) ){
|
|
if( sd && ( bl->type != BL_PC || ( dstsd && pc_checkequip(dstsd,equip[skillid - AM_CP_WEAPON]) < 0 ) ) ){
|
|
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
|
|
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
|
|
@@ -6185,7 +6184,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- status_change_end(bl, scid, INVALID_TIMER);
|
|
|
|
clif_skill_nodamage(src,bl,skillid,skilllv,
|
|
clif_skill_nodamage(src,bl,skillid,skilllv,
|
|
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
|
|
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
|
|
}
|
|
}
|
|
@@ -6883,15 +6881,19 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|
// Full Chemical Protection
|
|
// Full Chemical Protection
|
|
case CR_FULLPROTECTION:
|
|
case CR_FULLPROTECTION:
|
|
{
|
|
{
|
|
- int i, skilltime;
|
|
|
|
- skilltime = skill_get_time(skillid,skilllv);
|
|
|
|
- if (!tsc) {
|
|
|
|
- clif_skill_nodamage(src,bl,skillid,skilllv,0);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- for (i=0; i<4; i++) {
|
|
|
|
- status_change_end(bl, (sc_type)(SC_STRIPWEAPON + i), INVALID_TIMER);
|
|
|
|
|
|
+ unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP};
|
|
|
|
+ int i, s = 0, skilltime = skill_get_time(skillid,skilllv);
|
|
|
|
+
|
|
|
|
+ for (i=0 ; i<4; i++) {
|
|
|
|
+ if( bl->type != BL_PC || ( dstsd && pc_checkequip(dstsd,equip[i]) < 0 ) )
|
|
|
|
+ continue;
|
|
sc_start(bl,(sc_type)(SC_CP_WEAPON + i),100,skilllv,skilltime);
|
|
sc_start(bl,(sc_type)(SC_CP_WEAPON + i),100,skilllv,skilltime);
|
|
|
|
+ s++;
|
|
|
|
+ }
|
|
|
|
+ if( sd && !s ){
|
|
|
|
+ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
|
|
|
|
+ map_freeblock_unlock(); // Don't consume item requirements
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
|
}
|
|
}
|
|
@@ -8794,7 +8796,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|
status_change_end(bl, SC_MARIONETTE, INVALID_TIMER);
|
|
status_change_end(bl, SC_MARIONETTE, INVALID_TIMER);
|
|
status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
|
|
status_change_end(bl, SC_HARMONIZE, INVALID_TIMER);
|
|
}
|
|
}
|
|
- if( skill_area_temp[2] > 0){
|
|
|
|
|
|
+ if( skill_area_temp[2] == 1 ){
|
|
clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
|
|
clif_skill_damage(src,src,tick, status_get_amotion(src), 0, -30000, 1, skillid, skilllv, 6);
|
|
sc_start(src, SC_STOP, 100, skilllv, skill_get_time(skillid, skilllv));
|
|
sc_start(src, SC_STOP, 100, skilllv, skill_get_time(skillid, skilllv));
|
|
}
|
|
}
|