- // stop if we reached a level, a WORLDMAP_STOP tile or a special tile without a passive_message
- if ((worldmap->at_level()) || (worldmap->at(tile_pos)->getData() & Tile::WORLDMAP_STOP) || (special_tile && !special_tile->passive_message))
- {
- if(special_tile && !special_tile->map_message.empty() && !special_tile->passive_message) worldmap->passive_message_timer.start(0);
+ // check if we are at a Teleporter
+ Teleporter* teleporter = worldmap->at_teleporter(tile_pos);
+
+ // stop if we reached a level, a WORLDMAP_STOP tile, a teleporter or a special tile without a passive_message
+ if ((worldmap->at_level())
+ || (worldmap->tile_data_at(tile_pos) & Tile::WORLDMAP_STOP)
+ || (special_tile && !special_tile->passive_message
+ && special_tile->script == "")
+ || (teleporter)) {
+ if(special_tile && !special_tile->map_message.empty()
+ && !special_tile->passive_message)
+ worldmap->passive_message_timer.start(0);