diff --git a/src/cmd2F.c b/src/cmd2F.c index 0e7d0a2..7188d4e 100644 --- a/src/cmd2F.c +++ b/src/cmd2F.c @@ -1326,8 +1326,19 @@ void commands2F7B() { } void commands2F7C() { + if (!nact->files.ain) { + if (nact->files.gr_fname) { + SYSERROR("System39.ain is needed to run this game. Make sure you have an \"Ain\" line in %s.\n", nact->files.gr_fname); + } else { + SYSERROR("Ain file is needed to run this game. Make sure you have System39.ain file in the game directory.\n"); + } + } + int index = sys_getdw(); - + if (index >= nact->ain.msgnum) { + WARNING("message id out of bounds (%d)\n", index); + return; + } sys_addMsg(nact->ain.msg[index]); msgskip_onAinMessage(index); @@ -1359,7 +1370,7 @@ void commands2F7F() { sys_addMsg(svar_get(p1)); msgskip_onAinMessage(index); - DEBUG_COMMAND("2F7F %d, %d(%s,%s):\n", index, p1, nact->ain.msg[index], svar_get(p1)); + DEBUG_COMMAND("2F7F %d, %d(%s):\n", index, p1, svar_get(p1)); } void commands2F80() { diff --git a/src/gameresource.c b/src/gameresource.c index fbeffd7..da9e92f 100644 --- a/src/gameresource.c +++ b/src/gameresource.c @@ -193,6 +193,7 @@ static boolean initGameResourceFromFile(GameResource *gr, FILE *fp, const char * goto errexit; } } + gr->gr_fname = strdup(gr_fname); return TRUE; errexit: diff --git a/src/gameresource.h b/src/gameresource.h index 63d5d31..399f4f6 100644 --- a/src/gameresource.h +++ b/src/gameresource.h @@ -29,6 +29,7 @@ #include "savedata.h" typedef struct { + const char *gr_fname; const char *game_fname[DRIFILETYPEMAX][DRIFILEMAX]; int cnt[DRIFILETYPEMAX]; const char *save_path;