summaryrefslogblamecommitdiff
path: root/world/map/npc/042-2/morgan.txt
blob: 3ea1a2e8e0c291d48fdbf6c728da3271c818de13 (plain) (tree)













































































































































                                                                                                                   
// Tut mage
// Author: Wushin
// Gains Access to Magic School
// See 024-2 clean that shit up
// Morgan, liana
function|script|MorganState|,
{
    callfunc "ClearVariables";
    set @morgan, ((TUTORIAL & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
    return;
}
function|script|SetMorganMask|,
{
    set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (@morgan_tmp << NIBBLE_6_SHIFT));
    set @morgan_tmp, 0;
    return;
}
042-2,105,57,0|script|MorganDebug|355,
{
    mes "[Morgan Debug]";
    mes "Reset?";
    menu
        "Yes.", L_Reset,
        "No.", L_End;
L_Reset:
    set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (0 << NIBBLE_6_SHIFT));
    mes "Reset!";
    goto L_End;

L_End:
    end;

OnInit:
    if (!debug)
        disablenpc "MorganDebug";
    end;
}
042-2,101,57,0|script|Morgan|355,
{
    callfunc "MorganState";
    if (readparam(bInt) >= 5)
        goto L_Learn;
    goto L_NotMagic;

L_Learn:
    if (@morgan == 0)
        goto L_NotSeen;
    if (@morgan == 1)
        goto L_Seen;
    if (@morgan == 2)
        goto L_Started;
    if (@morgan == 3)
        goto L_CastOnce;
    if (@morgan == 4)
        goto L_LearningDone;
    goto L_Close;

L_NotSeen:
    set @morgan_tmp, 1;
    callfunc "SetMorganMask";
    mes "[Morgan]";
    mes "\"Welcome to the Magic Insitute of Tulimshar!\"";
    next;
    mes "\"My name is Morgan, I'm the Dean of Wizardry.\"";
    next;
    mes "\"You appear to have the markings to use magic.\"";
    next;
    mes "\"Granted you are still to young to cast spells.\"";
    next;
    mes "\"But we can teach you to use simple magic devices.\"";
    next;
    mes "\"Would you like to learn some apprentice skills?\"";
    menu
        "Yes.", L_Start,
        "Maybe later", L_Close;

L_Seen:
    mes "[Morgan]";
    mes "\"Have you returned to learn some magic?\"";
    menu
        "Yes.", L_Start,
        "Maybe later", L_Close;

L_NotMagic:
    mes "[Morgan]";
    mes "\"Hrmm you don't appear to posses enough magical talent to teach.\"";
    goto L_Close;

L_Start:
    set @morgan_tmp, 2;
    callfunc "SetMorganMask";
    mes "\"Great, lets begin your first lesson.\"";
    next;
    getitem 1171, 1;
    mes "\"This is a wand, there are many like it but this one is now yours.\"";
    next;
    mes "\"Various wands and staffs are found throughout the land with many different strengths and weaknesses.\"";
    next;
    mes "\"To use the wand you need to have it equipped and speak the incantation to let it tap into your mana.\"";
    next;
    mes "\"As the power of your magic grows so will the spells you can cast.\"";
    next;
    mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
    next;
    mes "\"Equip the wand and lets try out that spell.\"";
    next;
    mes "\"Speak to me again once you've cast the spell.\"";
    goto L_Close;

L_Started:
    mes "[Morgan]";
    mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
    next;
    mes "\"Equip the wand and lets try out that spell.\"";
    next;
    mes "\"Speak to me again once you've cast the spell.\"";
    goto L_Close;

L_CastOnce:
    mes "[Morgan]";
    mes "\"Ok, good job! Looks like you have good mana flow.\"";
    next;
    mes "\"Onto the next lesson. Now that you have " + getspellinvocation("wand") + " cast,\"";
    next;
    mes "\"Each time you attack the wand will convert a bit of you mana into a magic bolt.\"";
    next;
    mes "\"After so many attacks, you will need to recast the invocation to stay attuned to the wand.\"";
    next;
    mes "\"(Logging out will also cancel any spell effects currently active in-game.).\"";
    next;
    set @morgan_tmp, 4;
    callfunc "SetMorganMask";
    goto L_Close;

L_LearningDone:
    mes "[Morgan]";
    mes "\"I've taught you all I can for now. Come back later.\"";
    goto L_Close;

L_Close:
    close;
}