summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2018-04-25 17:22:28 +0200
committerGitHub <noreply@github.com>2018-04-25 17:22:28 +0200
commitd8c6912572f60284d61d819b20031a75f3d9b25f (patch)
tree7c89401bd80b69f8a4221c343fd73234e02d50b7
parentefeb386abc51baffa561f32d7d3b30868af767cd (diff)
parentc45d7f983bfe8034e11f1d3e5b9b4404afec6b31 (diff)
downloadhercules-d8c6912572f60284d61d819b20031a75f3d9b25f.tar.gz
hercules-d8c6912572f60284d61d819b20031a75f3d9b25f.tar.bz2
hercules-d8c6912572f60284d61d819b20031a75f3d9b25f.tar.xz
hercules-d8c6912572f60284d61d819b20031a75f3d9b25f.zip
Merge pull request #2017 from AnnieRuru/32_delwall
*delwall now give a friendly warning to remind non-existent wall
-rw-r--r--src/map/map.c5
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/script.c10
3 files changed, 12 insertions, 5 deletions
diff --git a/src/map/map.c b/src/map/map.c
index 780e6f535..90b304865 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -3166,13 +3166,13 @@ void map_iwall_get(struct map_session_data *sd)
dbi_destroy(iter);
}
-void map_iwall_remove(const char *wall_name)
+bool map_iwall_remove(const char *wall_name)
{
struct iwall_data *iwall;
int16 i, x1, y1;
if( (iwall = (struct iwall_data *)strdb_get(map->iwall_db, wall_name)) == NULL )
- return; // Nothing to do
+ return false;
for( i = 0; i < iwall->size; i++ ) {
map->iwall_nextxy(iwall->x, iwall->y, iwall->dir, i, &x1, &y1);
@@ -3185,6 +3185,7 @@ void map_iwall_remove(const char *wall_name)
map->list[iwall->m].iwall_num--;
strdb_remove(map->iwall_db, iwall->wall_name);
+ return true;
}
/**
diff --git a/src/map/map.h b/src/map/map.h
index 5c4c6d59d..d6afdc160 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -1293,7 +1293,7 @@ END_ZEROED_BLOCK;
bool (*iwall_set) (int16 m, int16 x, int16 y, int size, int8 dir, bool shootable, const char* wall_name);
void (*iwall_get) (struct map_session_data *sd);
- void (*iwall_remove) (const char *wall_name);
+ bool (*iwall_remove) (const char *wall_name);
int (*addmobtolist) (unsigned short m, struct spawn_data *spawn); // [Wizputer]
void (*spawnmobs) (int16 m); // [Wizputer]
diff --git a/src/map/script.c b/src/map/script.c
index d11b6741a..3c5f4a232 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -13998,9 +13998,15 @@ BUILDIN(setwall) {
map->iwall_set(m, x, y, size, dir, shootable, name);
return true;
}
-BUILDIN(delwall) {
+
+BUILDIN(delwall)
+{
const char *name = script_getstr(st,2);
- map->iwall_remove(name);
+
+ if (!map->iwall_remove(name)) {
+ ShowWarning("buildin_delwall: Non-existent '%s' provided.\n", name);
+ return false;
+ }
return true;
}