[Fix] Can't grab a unique mission if it is already running.

This commit is contained in:
Allanis 2013-04-09 01:20:22 +01:00
parent 3177921160
commit 0fbd239680

View File

@ -39,6 +39,7 @@ extern int misn_run(Mission* misn, char* func);
// Static. // Static.
static int mission_init(Mission* mission, MissionData* misn); static int mission_init(Mission* mission, MissionData* misn);
static void mission_freeData(MissionData* mission); static void mission_freeData(MissionData* mission);
static int mission_alreadyRunning(MissionData* misn);
static int mission_matchFaction(MissionData* misn, int faction); static int mission_matchFaction(MissionData* misn, int faction);
static int mission_location(char* loc); static int mission_location(char* loc);
static MissionData* mission_parse(const xmlNodePtr parent); static MissionData* mission_parse(const xmlNodePtr parent);
@ -101,6 +102,16 @@ void mission_accept(Mission* mission) {
misn_run(mission, "accept"); misn_run(mission, "accept");
} }
// Check to see if mission is already running.
static int mission_alreadyRunning(MissionData* misn) {
int i;
for (i = 0; i < MISSION_MAX; i++)
if(player_missions[i].data == misn)
return 1;
return 0;
}
// Runs bar missions, all lua side and one-shot. // Runs bar missions, all lua side and one-shot.
void missions_bar(int faction, char* planet, char* system) { void missions_bar(int faction, char* planet, char* system) {
MissionData* misn; MissionData* misn;
@ -115,7 +126,9 @@ void missions_bar(int faction, char* planet, char* system) {
(misn->avail.system && (strcmp(misn->avail.system, system)==0)) || (misn->avail.system && (strcmp(misn->avail.system, system)==0)) ||
mission_matchFaction(misn, faction))) { mission_matchFaction(misn, faction))) {
if(player_missionAlreadyDone(i)) continue; // Already done the mission. if(mis_isFlag(misn, MISSION_UNIQUE) && // Mission done or running.
(player_missionAlreadyDone(i) ||
mission_alreadyRunning(misn))) continue;
chance = (double)(misn->avail.chance % 100)/100.; chance = (double)(misn->avail.chance % 100)/100.;