diff --git a/db/pre-re/status.yml b/db/pre-re/status.yml index d71cb767c5..e28df0be96 100644 --- a/db/pre-re/status.yml +++ b/db/pre-re/status.yml @@ -1702,6 +1702,8 @@ Body: CalcFlags: Speed: true Aspd: true + States: + NoMove: true - Status: Hermode Icon: EFST_HERMODE DurationLookup: CG_HERMODE diff --git a/src/map/status.cpp b/src/map/status.cpp index d469e30759..a52f3d861d 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -5403,12 +5403,20 @@ void status_calc_state( struct block_list *bl, status_change *sc, std::bitsetgetSCE(SC_SPIDERWEB) && sc->getSCE(SC_SPIDERWEB)->val1) || (sc->getSCE(SC_HIDING) && (bl->type != BL_PC || (pc_checkskill(BL_CAST(BL_PC,bl),RG_TUNNELDRIVE) <= 0))) || (sc->getSCE(SC_DANCING) && sc->getSCE(SC_DANCING)->val4 && ( +#ifndef RENEWAL + !sc->getSCE(SC_LONGING) || +#endif (sc->getSCE(SC_DANCING)->val1&0xFFFF) == CG_MOONLIT || (sc->getSCE(SC_DANCING)->val1&0xFFFF) == CG_HERMODE )) || (sc->getSCE(SC_CRYSTALIZE) && bl->type != BL_MOB) ) sc->cant.move += (start ? 1 : ((sc->cant.move) ? -1 : 0)); +#ifndef RENEWAL + // Remove movement restriction when Longing for Freedom becomes active with an Ensemble skill. + if (start && sc->getSCE(SC_DANCING) && sc->getSCE(SC_DANCING)->val4 && sc->getSCE(SC_LONGING)) + sc->cant.move = 0; +#endif } // Can't use skills