|
@@ -9223,6 +9223,19 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // Statuses from Merchant family skills that can be blocked while using Madogear; see pc.cpp::pc_setoption for cancellation
|
|
|
|
+ if (sc->option & OPTION_MADOGEAR) {
|
|
|
|
+ for (const auto &madosc : mado_statuses) {
|
|
|
|
+ if (type != madosc)
|
|
|
|
+ continue;
|
|
|
|
+
|
|
|
|
+ uint16 skill_id = status_sc2skill(type);
|
|
|
|
+
|
|
|
|
+ if (skill_id > 0 && !skill_get_inf2(skill_id, INF2_ALLOWONMADO))
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// Adjust tick according to status resistances
|
|
// Adjust tick according to status resistances
|
|
if( !(flag&(SCSTART_NOAVOID|SCSTART_LOADED)) ) {
|
|
if( !(flag&(SCSTART_NOAVOID|SCSTART_LOADED)) ) {
|
|
duration = status_get_sc_def(src, bl, type, rate, duration, flag);
|
|
duration = status_get_sc_def(src, bl, type, rate, duration, flag);
|
|
@@ -9341,21 +9354,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|
case SC_OVERTHRUST:
|
|
case SC_OVERTHRUST:
|
|
if (sc->data[SC_MAXOVERTHRUST])
|
|
if (sc->data[SC_MAXOVERTHRUST])
|
|
return 0; // Overthrust can't take effect if under Max Overthrust. [Skotlex]
|
|
return 0; // Overthrust can't take effect if under Max Overthrust. [Skotlex]
|
|
- case SC_MAXOVERTHRUST:
|
|
|
|
- if( sc->option&OPTION_MADOGEAR )
|
|
|
|
- return 0; // Overthrust and Overthrust Max cannot be used on Mado Gear [Ind]
|
|
|
|
break;
|
|
break;
|
|
case SC_ADRENALINE:
|
|
case SC_ADRENALINE:
|
|
- if (sc->data[SC_QUAGMIRE] ||
|
|
|
|
- sc->data[SC_DECREASEAGI] ||
|
|
|
|
- sc->option&OPTION_MADOGEAR // Adrenaline doesn't affect Mado Gear [Ind]
|
|
|
|
- )
|
|
|
|
- return 0;
|
|
|
|
- break;
|
|
|
|
case SC_ADRENALINE2:
|
|
case SC_ADRENALINE2:
|
|
- if (sc->data[SC_QUAGMIRE] ||
|
|
|
|
- sc->data[SC_DECREASEAGI]
|
|
|
|
- )
|
|
|
|
|
|
+ if (sc->data[SC_QUAGMIRE] || sc->data[SC_DECREASEAGI])
|
|
return 0;
|
|
return 0;
|
|
break;
|
|
break;
|
|
case SC_MAGNIFICAT:
|
|
case SC_MAGNIFICAT:
|
|
@@ -9372,10 +9374,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|
case SC_SPEARQUICKEN:
|
|
case SC_SPEARQUICKEN:
|
|
case SC_TRUESIGHT:
|
|
case SC_TRUESIGHT:
|
|
case SC_WINDWALK:
|
|
case SC_WINDWALK:
|
|
- case SC_CARTBOOST:
|
|
|
|
case SC_ASSNCROS:
|
|
case SC_ASSNCROS:
|
|
if (sc->option&OPTION_MADOGEAR)
|
|
if (sc->option&OPTION_MADOGEAR)
|
|
- return 0; // Mado is immune to Wind Walk, Cart Boost, etc (others above) [Ind]
|
|
|
|
|
|
+ return 0; // Mado is immune to the above [Ind]
|
|
|
|
+ case SC_CARTBOOST:
|
|
if (sc->data[SC_QUAGMIRE])
|
|
if (sc->data[SC_QUAGMIRE])
|
|
return 0;
|
|
return 0;
|
|
break;
|
|
break;
|