[Fix] Can't grab a unique mission if it is already running.
This commit is contained in:
parent
3177921160
commit
0fbd239680
@ -39,6 +39,7 @@ extern int misn_run(Mission* misn, char* func);
|
||||
// Static.
|
||||
static int mission_init(Mission* mission, MissionData* misn);
|
||||
static void mission_freeData(MissionData* mission);
|
||||
static int mission_alreadyRunning(MissionData* misn);
|
||||
static int mission_matchFaction(MissionData* misn, int faction);
|
||||
static int mission_location(char* loc);
|
||||
static MissionData* mission_parse(const xmlNodePtr parent);
|
||||
@ -101,6 +102,16 @@ void mission_accept(Mission* mission) {
|
||||
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.
|
||||
void missions_bar(int faction, char* planet, char* system) {
|
||||
MissionData* misn;
|
||||
@ -115,8 +126,10 @@ void missions_bar(int faction, char* planet, char* system) {
|
||||
(misn->avail.system && (strcmp(misn->avail.system, system)==0)) ||
|
||||
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.;
|
||||
|
||||
if(RNGF() < chance) {
|
||||
|
Loading…
Reference in New Issue
Block a user