summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-04-09 22:13:25 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-04-09 22:13:25 +0000
commit5972e1349abc1d4343b970c28faf263218635eb5 (patch)
tree499313244cf63e5d8b18755f53ac462636d0d4de /src/map
parent0638d728c718e648e622a524e5c3010d23b049d0 (diff)
downloadhercules-5972e1349abc1d4343b970c28faf263218635eb5.tar.gz
hercules-5972e1349abc1d4343b970c28faf263218635eb5.tar.bz2
hercules-5972e1349abc1d4343b970c28faf263218635eb5.tar.xz
hercules-5972e1349abc1d4343b970c28faf263218635eb5.zip
- Modified @warp/@rura to prevent causing pc_setpos position error messages.
- Fixed the mob's last_thinktime not being updated on mob_spawn, causing them to not "think". git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5971 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c39
-rw-r--r--src/map/mob.c1
2 files changed, 17 insertions, 23 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 189843fd6..a6751cb85 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1236,11 +1236,6 @@ int atcommand_rura(
return -1;
}
- if (x <= 0)
- x = rand() % 399 + 1;
- if (y <= 0)
- y = rand() % 399 + 1;
-
if (strstr(map_name, ".gat") == NULL && strstr(map_name, ".afm") == NULL && strlen(map_name) < MAP_NAME_LENGTH-4) // 16 - 4 (.gat)
strcat(map_name, ".gat");
@@ -1252,24 +1247,22 @@ int atcommand_rura(
clif_displaymessage(fd, msg_table[1]); // Map not found.
return -1;
}
-
- if (x > 0 && x < 400 && y > 0 && y < 400) {
- if (map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
- clif_displaymessage(fd, msg_table[247]);
- return -1;
- }
- if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
- clif_displaymessage(fd, msg_table[248]);
- return -1;
- }
- if (pc_setpos(sd, mapindex, x, y, 3) == 0)
- clif_displaymessage(fd, msg_table[0]); // Warped.
- else {
- clif_displaymessage(fd, msg_table[1]); // Map not found.
- return -1;
- }
- } else {
- clif_displaymessage(fd, msg_table[2]); // Coordinates out of range.
+
+ if (map_getcell(m, x, y, CELL_CHKNOPASS))
+ x = y = 0; //Invalid cell, use random spot.
+
+ if (map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
+ clif_displaymessage(fd, msg_table[247]);
+ return -1;
+ }
+ if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
+ clif_displaymessage(fd, msg_table[248]);
+ return -1;
+ }
+ if (pc_setpos(sd, mapindex, x, y, 3) == 0)
+ clif_displaymessage(fd, msg_table[0]); // Warped.
+ else {
+ clif_displaymessage(fd, msg_table[1]); // Map not found.
return -1;
}
diff --git a/src/map/mob.c b/src/map/mob.c
index 2fed0ca55..509f1c359 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -650,6 +650,7 @@ int mob_spawn (struct mob_data *md)
unsigned int c =0, tick = gettick();
md->last_spawntime = tick;
+ md->last_thinktime = tick -MIN_MOBTHINKTIME;
if (md->bl.prev != NULL)
unit_remove_map(&md->bl,2);
else if (md->vd->class_ != md->class_) {