Skip to content

Commit ee795d1

Browse files
committed
Add packet CZ_REQ_MOUNTOFF
1 parent 7fc91ac commit ee795d1

File tree

4 files changed

+68
-4
lines changed

4 files changed

+68
-4
lines changed

src/map/clif.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1238012416
static 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
}

src/map/clif.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,16 @@ enum lapineddukddak_result {
733733
LAPINEDDKUKDDAK_INVALID_ITEM = 7,
734734
};
735735

736+
enum removeGear_flag {
737+
REMOVE_MOUNT_0 = 0, // unused
738+
REMOVE_MOUNT_DRAGON = 1,
739+
REMOVE_MOUNT_2 = 2, // unused
740+
REMOVE_MOUNT_MADO = 3,
741+
REMOVE_MOUNT_PECO = 4,
742+
REMOVE_MOUNT_FALCON = 5,
743+
REMOVE_MOUNT_CART = 6,
744+
};
745+
736746
/**
737747
* Clif.c Interface
738748
**/
@@ -1670,6 +1680,7 @@ struct clif_interface {
16701680
bool (*lapineDdukDdak_result) (struct map_session_data *sd, enum lapineddukddak_result result);
16711681
void (*plapineDdukDdak_ack) (int fd, struct map_session_data *sd);
16721682
void (*plapineDdukDdak_close) (int fd, struct map_session_data *sd);
1683+
void (*pReqGearOff) (int fd, struct map_session_data *sd);
16731684
};
16741685

16751686
#ifdef HERCULES_CORE

src/map/packets.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1796,6 +1796,14 @@ packet(0x96e,clif->ackmergeitems);
17961796
// changed packet sizes
17971797
#endif
17981798

1799+
#if PACKETVER >= 20160302
1800+
packet(0x0a4f,clif->plapineDdukDdak_ack);
1801+
#endif
1802+
1803+
#if PACKETVER >= 20160504
1804+
packet(0x0a70,clif->plapineDdukDdak_close);
1805+
#endif
1806+
17991807
// all 2016-05-25
18001808
#if PACKETVER >= 20160525
18011809
packet(0x0a77,clif->pCameraInfo); // CZ_CAMERA_INFO
@@ -1959,12 +1967,12 @@ packet(0x96e,clif->ackmergeitems);
19591967
packet(0x0b2c,clif->pGuildCastleInfoRequest);
19601968
#endif
19611969

1962-
#if PACKETVER >= 20160302
1963-
packet(0x0a4f,clif->plapineDdukDdak_ack);
1970+
#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703
1971+
packet(0x0b35,clif->pReqGearOff);
19641972
#endif
19651973

1966-
#if PACKETVER >= 20160504
1967-
packet(0x0a70,clif->plapineDdukDdak_close);
1974+
#if PACKETVER_ZERO_NUM >= 20190709
1975+
packet(0x0b35,clif->pReqGearOff);
19681976
#endif
19691977

19701978
#endif /* MAP_PACKETS_H */

src/map/packets_struct.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3714,6 +3714,14 @@ struct PACKET_ZC_LAPINEDDUKDDAK_RESULT {
37143714
DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_RESULT, 0x0a50);
37153715
#endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO)
37163716

3717+
#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709
3718+
struct PACKET_CZ_REQ_MOUNTOFF {
3719+
int16 packetType;
3720+
uint8 action;
3721+
} __attribute__((packed));
3722+
DEFINE_PACKET_HEADER(CZ_REQ_MOUNTOFF, 0x0b35);
3723+
#endif
3724+
37173725
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
37183726
#pragma pack(pop)
37193727
#endif // not NetBSD < 6 / Solaris

0 commit comments

Comments
 (0)