diff options
author | Haru <haru@dotalux.com> | 2013-09-26 19:03:56 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2013-09-27 12:12:23 +0200 |
commit | 605fe9775beff1fb0e3df68b2df886d4e5b54a2d (patch) | |
tree | 4e0abef6fdd004b613f092fd74b454813c885a31 | |
parent | b89f58edd8b368e2548ace86f06354bd6ea1c8d2 (diff) | |
download | hercules-605fe9775beff1fb0e3df68b2df886d4e5b54a2d.tar.gz hercules-605fe9775beff1fb0e3df68b2df886d4e5b54a2d.tar.bz2 hercules-605fe9775beff1fb0e3df68b2df886d4e5b54a2d.tar.xz hercules-605fe9775beff1fb0e3df68b2df886d4e5b54a2d.zip |
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 <haru@dotalux.com>
-rw-r--r-- | src/map/clif.c | 17 | ||||
-rw-r--r-- | src/map/packets_struct.h | 24 |
2 files changed, 21 insertions, 20 deletions
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)); |