summaryrefslogblamecommitdiff
path: root/npc/functions/magic.txt
blob: 470323c2bf5708ce48e8479b9d3b90d2043350bf (plain) (tree)
1
2
3
4
5
6
7
8




                                                                 


                    









                                                               




















































































































                                                                             
// 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;
}

// ------------------------------------------------------------
// Print and run menu for choice of things to ask about
// Ignores the entry in @ignore
// Returns the result in `@c, or `0'
// ------------------------------------------------------------

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];
}