[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.
|
||||||
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.;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user