summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2013-11-03 20:19:26 +0100
committerHaru <haru@dotalux.com>2013-11-03 20:27:13 +0100
commit6728c0fa88b84fccb6f179ae13cf8a15c1ea23a4 (patch)
tree91816da66c35d44a01778ea92ea2cc522f1212e1
parent649e7b98a7ec4fbf3363597daad3d1c57383051f (diff)
downloadhercules-6728c0fa88b84fccb6f179ae13cf8a15c1ea23a4.tar.gz
hercules-6728c0fa88b84fccb6f179ae13cf8a15c1ea23a4.tar.bz2
hercules-6728c0fa88b84fccb6f179ae13cf8a15c1ea23a4.tar.xz
hercules-6728c0fa88b84fccb6f179ae13cf8a15c1ea23a4.zip
Allow warp duplicates without a 'facing' value
- Warps don't require a facing, so their duplicates shouldn't either. - Credits to jaBote. Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r--doc/script_commands.txt4
-rw-r--r--src/map/npc.c6
2 files changed, 6 insertions, 4 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index f2ba9f6ba..f0016b104 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -207,7 +207,7 @@ Ex: if your NPC is named 'Hunter#hunter1', it will be displayed as 'Hunter'
** Define a warp point
-<from map name>,<fromX>,<fromY>,<facing>%TAB%warp%TAB%<warp name>%TAB%<spanx>,<spany>,<to map name>,<toX>,<toY>
+<from map name>,<fromX>,<fromY>{,<facing>}%TAB%warp%TAB%<warp name>%TAB%<spanx>,<spany>,<to map name>,<toX>,<toY>
This will define a warp NPC that will warp a player between maps, and
while most arguments of that are obvious, some deserve special mention.
@@ -299,7 +299,7 @@ items here. The layout used to define sale items still count, and
** Define an warp/shop/cashshop/NPC duplicate.
-warp: <map name>,<x>,<y>,<facing>%TAB%duplicate(<label>)%TAB%<NPC Name>%TAB%<spanx>,<spany>
+warp: <map name>,<x>,<y>{,<facing>}%TAB%duplicate(<label>)%TAB%<NPC Name>%TAB%<spanx>,<spany>
shop/cashshop/npc: -%TAB%duplicate(<label>)%TAB%<NPC Name>%TAB%<sprite id>
shop/cashshop/npc: <map name>,<x>,<y>,<facing>%TAB%duplicate(<label>)%TAB%<NPC Name>%TAB%<sprite id>
npc: -%TAB%duplicate(<label>)%TAB%<NPC Name>%TAB%<sprite id>,<triggerX>,<triggerY>
diff --git a/src/map/npc.c b/src/map/npc.c
index f0bdd7bd0..90f588a26 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -2547,8 +2547,10 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch
x = y = dir = 0;
m = -1;
} else {
- if( sscanf(w1, "%31[^,],%d,%d,%d", mapname, &x, &y, &dir) != 4 )// <map name>,<x>,<y>,<facing>
- {
+ int fields = sscanf(w1, "%31[^,],%d,%d,%d", mapname, &x, &y, &dir);
+ if( type == WARP && fields == 3 ) { // <map name>,<x>,<y>
+ dir = 0;
+ } else if( fields != 4 ) {// <map name>,<x>,<y>,<facing>
ShowError("npc_parse_duplicate: Invalid placement format for duplicate in file '%s', line '%d'. Skipping line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
return end;// next line, try to continue
}