try this
skill.cpp
if( sc && sc->data[SC_CURSEDCIRCLE_ATKER] ) //Should only remove after the skill has been casted.
status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER);
return 0; // not to consume item.
+ case MO_BODYRELOCATION:
+ if (battle_config.lock && sd && (sd->sc.data[SC_ANKLE] || sd->sc.data[SC_SPIDERWEB])) {
+ clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ break;
+ }
Find
skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),(enum e_skill_blown)(BLOWN_IGNORE_NO_KNOCKBACK
#ifdef RENEWAL
ADD THIS ABOVE
+ case TF_BACKSLIDING: //This is the correct implementation as per packet logging information. [Skotlex]
+ if (battle_config.lock && sd && (sd->sc.data[SC_ANKLE] || sd->sc.data[SC_SPIDERWEB])) {
+ clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ break;
+
+ }
battle.hpp
+ int lock;
#include "../custom/battle_config_struct.inc"
};
battle.cpp
+ { "lock", &battle_config.lock, 0, 0, 1, },
#include "../custom/battle_config_init.inc"
trunk\conf\import\battle_conf.txt
+// If set to false, will not be enabled.)
+lock: true
i try this code i dont have any error
+ if (skill_id == MO_EXTREMITYFIST && ((sd->spiritball == 0 && battle_config.asura_absorb_cast_cancel) || (!sd->sc.data[SC_EXPLOSIONSPIRITS] && battle_config.asura_dispell_cast_cancel))) {
+ clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ return 0;
+ }
switch( sd->menuskill_id ) {
case AM_PHARMACY: