diff --git a/src/ai.c b/src/ai.c index 7dafe70..e142b12 100644 --- a/src/ai.c +++ b/src/ai.c @@ -653,7 +653,7 @@ static int ai_pushtask(lua_State* L) { /* Parse basic parameters. */ if(lua_isnumber(L, 1)) pos = (int) lua_tonumber(L, 1); else LLUA_INVALID_PARAMETER(); - if(lua_isstring(L, 2)) func = (char*)lua_tostring(L, 1); + if(lua_isstring(L, 2)) func = (char*)lua_tostring(L, 2); else LLUA_INVALID_PARAMETER(); t = MALLOC_L(Task); diff --git a/src/map.c b/src/map.c index be5bc0f..7371372 100644 --- a/src/map.c +++ b/src/map.c @@ -155,6 +155,10 @@ static void map_update(void) { unsigned int services; char buf[128]; + /* Needs map to update. */ + if(map_wid <= 0) + return; + sys = &systems_stack[map_selected]; /* Right text. */ @@ -510,19 +514,17 @@ void map_clear(void) { map_selectCur(); } +/** + * @fn static void map_selectCur(void) + * + * @brief Try to select the current system. + */ static void map_selectCur(void) { - int i; - if(cur_system != NULL) { - for(i = 0; i < systems_nstack; i++) { - if(&systems_stack[i] == cur_system) { - map_selected = i; - break; - } - } - } else { + if(cur_system != NULL) + map_selected = cur_system - systems_stack; + else /* Probably going to seg fault now.. */ map_selected = -1; - } } /* Update the map after a jump. */ @@ -566,7 +568,11 @@ void map_jump(void) { * @param sys System to select. */ void map_select(StarSystem* sys) { - map_selected = sys - systems_stack; + if(sys == NULL) + map_selectCur(); + else + map_selected = sys - systems_stack; + map_update(); } /* A* Algorithm fo shortest path finding. */ diff --git a/src/player.c b/src/player.c index cd310df..8b5627e 100644 --- a/src/player.c +++ b/src/player.c @@ -1776,8 +1776,13 @@ void player_targetHyperspace(void) { else player_playSound(snd_nav, 1); - if((hyperspace_target != -1) && map_isOpen()) - map_select(&systems_stack[cur_system->jumps[hyperspace_target]]); + /* Map gets special treatment if open. */ + if(map_isOpen()) { + if(hyperspace_target == -1) + map_select(NULL); + else + map_select(&systems_stack[cur_system->jumps[hyperspace_target]]); + } } /**