diff options
-rw-r--r-- | src/map/map.c | 5 | ||||
-rw-r--r-- | src/map/map.h | 2 | ||||
-rw-r--r-- | src/map/script.c | 10 |
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; } |