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
147
|
// TMW2 Scripts
// Author:
// Jesusalva
// Description:
// Celestia Yeti King's quest. Designed so if you're with 4 players, all 4 can
// summon the Yeti King, helping you while doing the quest by themselves.
// Notes:
// $@GM_OVERRIDE
// Only possible with @set command, overrides the co-op requeriment.
003-1-1,94,21,0 script #DahYetiKing NPC_SUMMONING_CIRC,{
.@q=getq(HurnscaldQuest_Celestia);
if (.@q > 1 && .@q < 99)
setq HurnscaldQuest_Celestia, 1;
if (.@q == 1 && !.inUse) goto L_Summon;
end;
L_Summon:
dispbottom l("Emoc otem itey gnik!"); // come to me yeti king, spelled backwards. Sorry.
initnpctimer;
end;
L_Die:
npctalk3 l("You're playing with fire. Or ice. Or whatever.");
percentheal(-100, -100);
closedialog;
close;
OnTimer1000:
setnpcdisplay .name$, NPC_YETI_KING;
.inUse=1;
end;
OnTimer2000:
npctalk("Whom dares to disturb my slumber?!");
end;
OnTimer5000:
if (getareausers("003-1-1", 5) < 2 && !$@GM_OVERRIDE) {
npctalk("A lone adventurer? Pft. I'm back to my slumber!");
.inUse=2;
} else {
npctalk("You're courageous to summon me, I'll give you that.");
areatimer "003-1-1", 93, 20, 97, 25,3000, "#DahYetiKing::OnSummonTalk";
}
end;
// Now we check if time ran out (standard inUse) because cowardice, or if you tried
// to do the quest alone. And this is a Co-Op quest with free player numbers.
// Therefore, we must return the Yeti King to his summon circle.
OnTimer8000:
if (.inUse == 2) {
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
stopnpctimer;
}
end;
OnTimer60000:
if (.inUse == 1) {
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
stopnpctimer;
}
end;
// You can only talk to him with SummonTalk. Only one player will summon.
OnSummonTalk:
.@q=getq(HurnscaldQuest_Celestia);
// If you had to return, erase quest progress
if (.@q > 1 && .@q < 99)
setq HurnscaldQuest_Celestia, 1;
if (.@q != 1)
end;
mesn "Dah Yeti King!!";
mesq l("Why do you summon me? Speak.");
mes "";
select
l("I'm sorry, these words just came to my mind."),
l("I did not summon you, I'm just a passer-by. Sorry."),
rif(.@q == 1, l("Celestia asks for your help."));
mes "";
if (@menu == 1)
goto L_Die;
if (@menu == 2)
close;
mesn "Dah Yeti King!!";
mesq l("Yeah yeah yeah, you're not the first one to come talking about that to me.");
next;
mesn "Dah Yeti King!!";
mesq l("My answer is still a no, and it won't change. Don't test my patience any further.");
next;
select
l("You'll come with me!"),
l("I can prove you my worth!"),
l("Sorry! Sorry!");
mes "";
if (@menu == 1)
goto L_Die;
if (@menu == 3)
close;
if (BaseLevel < 35) {
mesn "Dah Yeti King!!";
mesq l("You? Have you ever looked in the mirror? You're not even level 35. Begone.");
close;
}
mesn "Dah Yeti King!!";
mesq l("Well, then I'll give you a task. We may meet again in Soren Village.");
next;
mesn "Dah Yeti King!!";
mesq l("I'll warp you to the Cave Of Trials. Pass all trials, and meet me on Soren's House. Hahah!");
setq HurnscaldQuest_Celestia, 2;
areatimer "003-1-1", 93, 20, 97, 25, 15000, "#DahYetiKing::OnWarper";
npctalk l("Listen to me! Whoever wants to follow foolish @@ on their suicide quest, stay here for 15 seconds!", strcharinfo(0));
close;
OnWarper:
// If you had to return, erase quest progress
if (.@q > 2 && .@q < 99)
setq HurnscaldQuest_Celestia, 2;
mes col("Warp to the Cave Of Trials?", 9);
mes col("There is no EXP penalty, but you cannot go back without either completing the cave, or dying.", 9);
mes col("If you die, you'll need to start over everything again!",9);
if (askyesno() == ASK_YES) {
setq HurnscaldQuest_Celestia, 2; // This is a fix
warp "001-6", 27, 180;
}
setnpcdisplay .name$, NPC_SUMMONING_CIRC;
.inUse=0;
closedialog;
close;
OnInit:
.sex = G_OTHER;
.distance = 1;
.inUse=0; // Prevent multiple summons and etc.
end;
}
|