From 605fe9775beff1fb0e3df68b2df886d4e5b54a2d Mon Sep 17 00:00:00 2001 From: Haru Date: Thu, 26 Sep 2013 19:03:56 +0200 Subject: Corrected maptypeproperty2 implementation with all the available info - Fixes an issue with the 2013 clients showing an attack cursor over other players even outside PvP. Special thanks to ossi0110 for reporting the issue and running tests for me; Ind and Yommy for their assistance. - Related: issue #70 Signed-off-by: Haru --- src/map/clif.c | 17 +++++++++-------- src/map/packets_struct.h | 24 ++++++++++++------------ 2 files changed, 21 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index 1d18559df..50b3d1339 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -17358,17 +17358,18 @@ void clif_maptypeproperty2(struct block_list *bl,enum send_target t) { p.PacketType = maptypeproperty2Type; p.type = 0x28; - p.flag.usecart = 1; - p.flag.party = 1; - p.flag.guild = 1; + p.flag.party = maplist[bl->m].flag.pvp ? 1 : 0; + p.flag.guild = map_flag_gvg(bl->m) ? 1 : 0; p.flag.siege = map_flag_gvg2(bl->m) ? 1: 0; - p.flag.mineffect = 1; - p.flag.nolockon = 1; + p.flag.mineffect = map_flag_gvg(bl->m); // FIXME/CHECKME Forcing /mineffect in castles during WoE (probably redundant? I'm not sure) + p.flag.nolockon = 0; // TODO p.flag.countpk = maplist[bl->m].flag.pvp ? 1 : 0; - p.flag.nopartyformation = 0; - p.flag.noitemconsumption = 1; - p.flag.summonstarmiracle = 1; + p.flag.nopartyformation = maplist[bl->m].flag.partylock ? 1 : 0; p.flag.bg = maplist[bl->m].flag.battleground ? 1 : 0; + p.flag.noitemconsumption = 0; // TODO + p.flag.summonstarmiracle = 0; // TODO + p.flag.usecart = 1; // TODO + p.flag.SpareBits = 0; clif->send(&p,sizeof(p),bl,t); #endif diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 2bfb10ca3..f39b4a55b 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -453,18 +453,18 @@ struct packet_maptypeproperty2 { short PacketType; short type; struct { - unsigned int party : 1; - unsigned int guild : 1; - unsigned int siege : 1; - unsigned int mineffect : 1; - unsigned int nolockon : 1; - unsigned int countpk : 1; - unsigned int nopartyformation : 1; - unsigned int bg : 1; - unsigned int noitemconsumption : 1; - unsigned int usecart : 1; - unsigned int summonstarmiracle : 1; - unsigned int SpareBits : 15; + unsigned int party : 1; // Show attack cursor on non-party members (PvP) + unsigned int guild : 1; // Show attack cursor on non-guild members (GvG) + unsigned int siege : 1; // Show emblem over characters' heads when in GvG (WoE castle) + unsigned int mineffect : 1; // Automatically enable /mineffect + unsigned int nolockon : 1; // TODO: What does this do? (shows attack cursor on non-party members) + unsigned int countpk : 1; /// Show the PvP counter + unsigned int nopartyformation : 1; /// Prevent party creation/modification + unsigned int bg : 1; // TODO: What does this do? Probably related to Battlegrounds, but I'm not sure on the effect + unsigned int noitemconsumption : 1; // TODO: What does this do? (shows a "Nothing found in the selected map" message when set) + unsigned int usecart : 1; /// Allow opening cart inventory + unsigned int summonstarmiracle : 1; // TODO: What does this do? Related to Taekwon Masters, but I have no idea. + unsigned int SpareBits : 15; /// Currently ignored, reserved for future updates } flag; } __attribute__((packed)); -- cgit v1.2.3-60-g2f50