summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2013-09-26 19:03:56 +0200
committerHaru <haru@dotalux.com>2013-09-27 12:12:23 +0200
commit605fe9775beff1fb0e3df68b2df886d4e5b54a2d (patch)
tree4e0abef6fdd004b613f092fd74b454813c885a31
parentb89f58edd8b368e2548ace86f06354bd6ea1c8d2 (diff)
downloadhercules-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.c17
-rw-r--r--src/map/packets_struct.h24
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));