diff --git a/src/comm.c b/src/comm.c index 41c5194..fa1d321 100644 --- a/src/comm.c +++ b/src/comm.c @@ -11,6 +11,7 @@ #include "pilot.h" #include "rng.h" #include "llua.h" +#include "player.h" #include "comm.h" #define BUTTON_WIDTH 80 /**< Button width. */ @@ -34,17 +35,30 @@ int comm_open(unsigned int pilot) { glTexture* logo, *gfx_comm; char* name, *stand; unsigned int wid; + glColour* c; /* Get the pilot. */ comm_pilot = pilot_get(pilot); if(comm_pilot == NULL) return -1; + /* Must not be disabled. */ + if(pilot_isFlag(comm_pilot, PILOT_DISABLED)) { + player_message("%s does not respond.", comm_pilot->name); + } + /* Get graphics and text. */ gfx_comm = comm_pilot->ship->gfx_comm; logo = faction_logoSmall(comm_pilot->faction); name = comm_pilot->name; - stand = faction_getStandingBroad(faction_getPlayer(comm_pilot->faction)); + /* Get standing colour / text. */ + if(pilot_isFlag(comm_pilot, PILOT_HOSTILE)) { + stand = "Hostile"; + c = &cHostile; + } else { + stand = faction_getStandingBroad(faction_getPlayer(comm_pilot->faction)); + c = faction_getColour(comm_pilot->faction); + } w = MAX(gl_printWidth(NULL, name), gl_printWidth(NULL, stand)); y = gl_defFont.h*2 + 15; if(logo != NULL) { @@ -76,8 +90,7 @@ int comm_open(unsigned int pilot) { /* Standing. */ window_addText(wid, x, -30 - gfx_comm->h - y + gl_defFont.h + 5, - gfx_comm->w - x, 20, 0, "txtStanding", NULL, - faction_getColour(comm_pilot->faction), stand); + gfx_comm->w - x, 20, 0, "txtStanding", NULL, c, stand); /* Buttons. */ window_addButton(wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, @@ -85,8 +98,9 @@ int comm_open(unsigned int pilot) { window_addButton(wid, -20, 20 + BUTTON_HEIGHT + 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnGreet", "Greet", NULL); - if((faction_getPlayer(comm_pilot->faction) < 0) || - pilot_isFlag(comm_pilot, PILOT_HOSTILE)) + if(!pilot_isFlag(comm_pilot, PILOT_BRIBED) && /* Not already bribed. */ + ((faction_getPlayer(comm_pilot->faction) < 0) || /* Hostile. */ + pilot_isFlag(comm_pilot, PILOT_HOSTILE))) window_addButton(wid, -20, 20 + 2*BUTTON_HEIGHT + 40, BUTTON_WIDTH, BUTTON_HEIGHT, "btnBribe", "Bribe", comm_bribe); else @@ -117,6 +131,13 @@ static void comm_bribe(unsigned int wid, char* str) { answer = dialogue_YesNo("Bribe Pilot", "\"I'm gonna need at least %d credits \ to not leave you as a hunk of floating debris.\"\n\npay %d Credits?", price, price); + /* Said no. */ + if(answer == 0) { + dialogue_msg("Bribe Pilot", "You decide not to pay."); + return; + } + + /* Check if has the money. */ if(player->credits < price) { dialogue_msg("Bribe Pilot", "You don't have enough credits for the bribary."); } else {