Fixed mob counts and quest states are not saved properly sometimes
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13964 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
4a6f0d122c
commit
816e93ef9b
@ -135,7 +135,7 @@ struct quest {
|
|||||||
int mob[MAX_QUEST_OBJECTIVES];
|
int mob[MAX_QUEST_OBJECTIVES];
|
||||||
int count[MAX_QUEST_OBJECTIVES];
|
int count[MAX_QUEST_OBJECTIVES];
|
||||||
quest_state state;
|
quest_state state;
|
||||||
|
bool save_quest;
|
||||||
int num_objectives;
|
int num_objectives;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -380,7 +380,6 @@ struct map_session_data {
|
|||||||
//Quest log system [Kevin] [Inkfish]
|
//Quest log system [Kevin] [Inkfish]
|
||||||
int num_quests;
|
int num_quests;
|
||||||
int avail_quests;
|
int avail_quests;
|
||||||
bool save_quest[MAX_QUEST_DB];
|
|
||||||
struct quest quest_log[MAX_QUEST_DB];
|
struct quest quest_log[MAX_QUEST_DB];
|
||||||
|
|
||||||
// temporary debug [flaviojs]
|
// temporary debug [flaviojs]
|
||||||
|
@ -184,7 +184,7 @@ void quest_update_objective(TBL_PC * sd, int mob)
|
|||||||
if( sd->quest_log[i].mob[j] == mob )
|
if( sd->quest_log[i].mob[j] == mob )
|
||||||
{
|
{
|
||||||
sd->quest_log[i].count[j]++;
|
sd->quest_log[i].count[j]++;
|
||||||
sd->save_quest[i] = true;
|
sd->quest_log[i].save_quest = true;
|
||||||
//clif_send_quest_info(sd, &sd->quest_log[i]); //TODO: Figure out the real packet [Inkfish]
|
//clif_send_quest_info(sd, &sd->quest_log[i]); //TODO: Figure out the real packet [Inkfish]
|
||||||
//break;
|
//break;
|
||||||
}
|
}
|
||||||
@ -207,7 +207,7 @@ int quest_update_status(TBL_PC * sd, int quest_id, int status)
|
|||||||
if( status != Q_COMPLETE )
|
if( status != Q_COMPLETE )
|
||||||
{
|
{
|
||||||
clif_send_quest_status(sd, quest_id, (bool)status);
|
clif_send_quest_status(sd, quest_id, (bool)status);
|
||||||
sd->save_quest[i] = true;
|
sd->quest_log[i].save_quest = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -220,7 +220,7 @@ int quest_update_status(TBL_PC * sd, int quest_id, int status)
|
|||||||
memcpy(&sd->quest_log[i], &sd->quest_log[sd->avail_quests],sizeof(struct quest));
|
memcpy(&sd->quest_log[i], &sd->quest_log[sd->avail_quests],sizeof(struct quest));
|
||||||
memcpy(&sd->quest_log[sd->avail_quests], &tmp_quest,sizeof(struct quest));
|
memcpy(&sd->quest_log[sd->avail_quests], &tmp_quest,sizeof(struct quest));
|
||||||
|
|
||||||
sd->save_quest[sd->avail_quests] = true;
|
sd->quest_log[sd->avail_quests].save_quest = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -231,7 +231,7 @@ int quest_save(TBL_PC * sd)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for( i = 0; i < sd->num_quests; i++ )
|
for( i = 0; i < sd->num_quests; i++ )
|
||||||
if( sd->save_quest[i] )
|
if( sd->quest_log[i].save_quest )
|
||||||
intif_quest_save(sd->status.char_id, &sd->quest_log[i]);
|
intif_quest_save(sd->status.char_id, &sd->quest_log[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -253,7 +253,7 @@ int quest_save_ack(int char_id, int quest_id, int success)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if(success)
|
if(success)
|
||||||
sd->save_quest[i] = false;
|
sd->quest_log[i].save_quest = false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ShowError("Quest %d for character %d could not be saved!\n", quest_id, char_id);
|
ShowError("Quest %d for character %d could not be saved!\n", quest_id, char_id);
|
||||||
|
@ -13447,6 +13447,7 @@ BUILDIN_FUNC(completequest)
|
|||||||
TBL_PC * sd = script_rid2sd(st);
|
TBL_PC * sd = script_rid2sd(st);
|
||||||
|
|
||||||
quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE);
|
quest_update_status(sd, script_getnum(st, 2), Q_COMPLETE);
|
||||||
|
intif_quest_save(sd->status.char_id, &sd->quest_log[sd->avail_quests]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user