@@ -12377,6 +12377,42 @@ static void clif_parse_RemoveOption(int fd, struct map_session_data *sd)
1237712377 }
1237812378}
1237912379
12380+ static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
12381+ static void clif_parse_reqGearOff(int fd, struct map_session_data *sd)
12382+ {
12383+ #if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709
12384+ const struct PACKET_CZ_REQ_MOUNTOFF *p = RFIFOP(fd, 0);
12385+ switch (p->action) {
12386+ case REMOVE_MOUNT_DRAGON:
12387+ if (pc_isridingdragon(sd))
12388+ pc->setoption(sd, sd->sc.option &~ OPTION_DRAGON);
12389+ break;
12390+ case REMOVE_MOUNT_MADO:
12391+ if (pc_ismadogear(sd))
12392+ pc->setoption(sd, sd->sc.option &~ OPTION_MADOGEAR);
12393+ break;
12394+ case REMOVE_MOUNT_PECO:
12395+ if (pc_isridingpeco(sd))
12396+ pc->setoption(sd, sd->sc.option &~ OPTION_RIDING);
12397+ break;
12398+ case REMOVE_MOUNT_FALCON:
12399+ if (pc_isfalcon(sd))
12400+ pc->setoption(sd, sd->sc.option &~ OPTION_FALCON);
12401+ break;
12402+ case REMOVE_MOUNT_CART:
12403+ // this packet exists in clients with only new carts [4144]
12404+ if (sd->sc.data[SC_PUSH_CART])
12405+ pc->setcart(sd, 0);
12406+ break;
12407+ case REMOVE_MOUNT_0:
12408+ case REMOVE_MOUNT_2:
12409+ default:
12410+ ShowError("Unknown action in remove mount packet: %d\n", p->action);
12411+ break;
12412+ }
12413+ #endif
12414+ }
12415+
1238012416static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
1238112417/// Request to change cart's visual look (CZ_REQ_CHANGECART).
1238212418/// 01af <num>.W
@@ -24680,4 +24716,5 @@ void clif_defaults(void)
2468024716 clif->lapineDdukDdak_result = clif_lapineDdukDdak_result;
2468124717 clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack;
2468224718 clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close;
24719+ clif->pReqGearOff = clif_parse_reqGearOff;
2468324720}
0 commit comments