diff options
author | Andrei Karas <akaras@inbox.ru> | 2019-11-09 07:17:32 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2019-11-14 02:11:20 +0300 |
commit | 1a64b14af7beb4cda50663c149a8d948677d913c (patch) | |
tree | 03067e3734fbc9334d5def58f983f51a1535a4ec /src/map/clif.c | |
parent | 780ac037168025ec18a7c7d7db8b0815d25c8760 (diff) | |
download | hercules-1a64b14af7beb4cda50663c149a8d948677d913c.tar.gz hercules-1a64b14af7beb4cda50663c149a8d948677d913c.tar.bz2 hercules-1a64b14af7beb4cda50663c149a8d948677d913c.tar.xz hercules-1a64b14af7beb4cda50663c149a8d948677d913c.zip |
Add packet CZ_REQ_MOUNTOFF
Diffstat (limited to 'src/map/clif.c')
-rw-r--r-- | src/map/clif.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 3abbc2c36..42f4f49d9 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -12377,6 +12377,42 @@ static void clif_parse_RemoveOption(int fd, struct map_session_data *sd) } } +static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709 + const struct PACKET_CZ_REQ_MOUNTOFF *p = RFIFOP(fd, 0); + switch (p->action) { + case REMOVE_MOUNT_DRAGON: + if (pc_isridingdragon(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_DRAGON); + break; + case REMOVE_MOUNT_MADO: + if (pc_ismadogear(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_MADOGEAR); + break; + case REMOVE_MOUNT_PECO: + if (pc_isridingpeco(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_RIDING); + break; + case REMOVE_MOUNT_FALCON: + if (pc_isfalcon(sd)) + pc->setoption(sd, sd->sc.option &~ OPTION_FALCON); + break; + case REMOVE_MOUNT_CART: + // this packet exists in clients with only new carts [4144] + if (sd->sc.data[SC_PUSH_CART]) + pc->setcart(sd, 0); + break; + case REMOVE_MOUNT_0: + case REMOVE_MOUNT_2: + default: + ShowError("Unknown action in remove mount packet: %d\n", p->action); + break; + } +#endif +} + static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Request to change cart's visual look (CZ_REQ_CHANGECART). /// 01af <num>.W @@ -24680,4 +24716,5 @@ void clif_defaults(void) clif->lapineDdukDdak_result = clif_lapineDdukDdak_result; clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack; clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close; + clif->pReqGearOff = clif_parse_reqGearOff; } |