summaryrefslogtreecommitdiff
path: root/world/map/npc/042-2/morgan.txt
blob: ed6367ff5ebf1ce506b84d2d202245882d101a52 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// 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, ((STARTAREA & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
    return;
}
function|script|SetMorganMask
{
    set STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (@morgan_tmp << NIBBLE_3_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 STARTAREA, (STARTAREA & ~(NIBBLE_3_MASK) | (0 << NIBBLE_3_SHIFT));
    mes "Reset!";
    goto L_End;

L_End:
    end;

OnInit:
    if (!debug)
        disablenpc "MorganDebug";
    end;
}
042-2,101,57,0|script|Morgan|355
{
    setarray @npc_loc, 101, 57, 4;
    callfunc "PCtoNPCRange";
    if (@npc_check)
        goto L_Close;
    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;
}