diff --git a/changelog b/changelog index ef36be7..f9dc8cf 100644 --- a/changelog +++ b/changelog @@ -34,6 +34,8 @@ OLC copy and delete options. export (QQ's a zone into a tarball)t Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist) (lots of major bugfixes too) +[May 13 2009] - Jamdog + Bug-Fix: quest join check for previous quest completion, and validation checks for prev and next quests in qedit. (thanks drefs) [Apr 13 2009] - Jamdog Bug-Fix: Shopping for multiple items caused an occasional crash due to NULL variable - now fixed (I hope) [Apr 12 2009] - Jamdog diff --git a/src/qedit.c b/src/qedit.c index 0f0e145..4b53626 100644 --- a/src/qedit.c +++ b/src/qedit.c @@ -20,7 +20,7 @@ #include "improved-edit.h" #include "screen.h" #include "genolc.h" -#include "genzon.h" +#include "genzon.h" #include "interpreter.h" #include "modify.h" #include "quest.h" @@ -693,9 +693,21 @@ void qedit_parse(struct descriptor_data *d, char *arg) OLC_QUEST(d)->target = number; break; case QEDIT_NEXTQUEST: + if ((number = atoi(arg)) != -1) { + if (real_quest(number) == NOTHING) { + write_to_output(d, "That is not a valid quest, try again (-1 for none) : "); + return; + } + } OLC_QUEST(d)->next_quest = (number == -1 ? NOTHING : atoi(arg)); break; case QEDIT_PREVQUEST: + if ((number = atoi(arg)) != -1) { + if (real_quest(number) == NOTHING) { + write_to_output(d, "That is not a valid quest, try again (-1 for none) : "); + return; + } + } OLC_QUEST(d)->prev_quest = (number == -1 ? NOTHING : atoi(arg)); break; case QEDIT_GOLD: diff --git a/src/quest.c b/src/quest.c index 81d6ae8..200d970 100644 --- a/src/quest.c +++ b/src/quest.c @@ -499,7 +499,7 @@ void quest_join(struct char_data *ch, struct char_data *qm, char argument[MAX_IN else if (is_complete(ch, vnum)) snprintf(buf, sizeof(buf), "%s You have already completed that quest!", GET_NAME(ch)); - else if ((QST_PREV(rnum) != NOTHING) && !is_complete(ch, vnum)) + else if ((QST_PREV(rnum) != NOTHING) && !is_complete(ch, QST_PREV(rnum))) snprintf(buf, sizeof(buf), "%s That quest is not available to you yet!", GET_NAME(ch)); else if ((QST_PREREQ(rnum) != NOTHING) &&