// Basic magic functionality
// Magic system uses:
// - MAGIC_EXP (magic experience points, gained for spellcasting)
// - MAGIC_FLAGS
// Magic quests use:
// - QUEST_MAGIC
// - QUEST_MAGIC2
// ------------------------------------------------------------
// Gain initial magic skill
// ------------------------------------------------------------
function script MagicGainBasic {
set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_DRANK_POTION;
close;
}
// ------------------------------------------------------------
// Initialise Menu for selecting a choice of things to ask about
// ------------------------------------------------------------
function script MagicTalkOptionsSetup {
set @QQ_ELANORE, 1;
set @QQ_MANASEED, 2;
set @QQ_MANAPOTION, 3;
set @QQ_WYARA, 4;
set @QQ_SAGATHA, 5;
set @QQ_AULDSBEL, 6;
set @QQ_IMP, 7;
set @QQ_OLDWIZ, 8;
return;
}
// ------------------------------------------------------------
// Print and run menu for choice of things to ask about
// Ignores the entry in @ignore
// Returns the result in @c, or returns 0 if there is no result
// ------------------------------------------------------------
function script MagicTalkMenu {
setarray @choice$, "", "", "", "", "", "", "", "", "";
set @choices_nr, 0;
setarray @choice_idx, 0, 0, 0, 0, 0, 0, 0, 0, 0;
if (@ignore == @QQ_ELANORE)
goto L_Q_post_elanore;
set @choice$[@choices_nr], "...Elanore the Healer?";
set @choice_idx[@choices_nr], @QQ_ELANORE;
set @choices_nr, @choices_nr + 1;
L_Q_post_elanore:
if (@ignore == @QQ_MANASEED)
goto L_Q_post_manaseed;
if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
goto L_Q_post_manaseed;
set @choice$[@choices_nr], "...the Mana Seed?";
set @choice_idx[@choices_nr], @QQ_MANASEED;
set @choices_nr, @choices_nr + 1;
L_Q_post_manaseed:
if (@ignore == @QQ_MANAPOTION)
goto L_Q_post_manapotion;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
goto L_Q_post_manapotion;
set @choice$[@choices_nr], "...Mana Potions?";
set @choice_idx[@choices_nr], @QQ_MANAPOTION;
set @choices_nr, @choices_nr + 1;
L_Q_post_manapotion:
if (@ignore == @QQ_WYARA)
goto L_Q_post_wyara;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
goto L_Q_post_wyara;
set @choice$[@choices_nr], "...Wyara the Witch?";
set @choice_idx[@choices_nr], @QQ_WYARA;
set @choices_nr, @choices_nr + 1;
L_Q_post_wyara:
if (@ignore == @QQ_SAGATHA)
goto L_Q_post_sagatha;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
goto L_Q_post_sagatha;
set @choice$[@choices_nr], "...Sagatha the Witch?";
set @choice_idx[@choices_nr], @QQ_SAGATHA;
set @choices_nr, @choices_nr + 1;
L_Q_post_sagatha:
if (@ignore == @QQ_AULDSBEL)
goto L_Q_post_auldsbel;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
goto L_Q_post_auldsbel;
set @choice$[@choices_nr], "...Auldsbel the Wizard?";
set @choice_idx[@choices_nr], @QQ_AULDSBEL;
set @choices_nr, @choices_nr + 1;
L_Q_post_auldsbel:
if (@ignore == @QQ_OLDWIZ)
goto L_Q_post_oldwiz;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_OLD_WIZARD))
goto L_Q_post_oldwiz;
set @choice$[@choices_nr], "...the Old Wizard?";
set @choice_idx[@choices_nr], @QQ_OLDWIZ;
set @choices_nr, @choices_nr + 1;
L_Q_post_oldwiz:
if (@ignore == @QQ_IMP)
goto L_Q_post_imp;
if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
goto L_Q_post_imp;
set @choice$[@choices_nr], "...the Earth Spirit in the desert well?";
set @choice_idx[@choices_nr], @QQ_IMP;
set @choices_nr, @choices_nr + 1;
L_Q_post_imp:
set @choice$[@choices_nr], "...never mind.";
set @choice_idx[@choices_nr], 0;
set @choices_nr, @choices_nr + 1;
menu @choice$[0], -,
@choice$[1], -,
@choice$[2], -,
@choice$[3], -,
@choice$[4], -,
@choice$[5], -,
@choice$[6], -,
@choice$[7], -,
@choice$[8], -;
set @menu, @menu - 1;
if (@menu >= @choices_nr)
set @menu, 0;
set @c, @choice_idx[@menu];
return @c;
}